Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jgraph/drawio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benson [draw.io] <david@jgraph.com>2021-02-24 19:39:06 +0300
committerDavid Benson [draw.io] <david@jgraph.com>2021-02-24 19:39:06 +0300
commitff20bcd476b55b37a9f705e83e0db39aa6847e8e (patch)
tree9095434a97439fa6a07393b7f00e5db6af9424b7
parent1c05fc3bc5c7e2e3b592c4d71ac38cf3167b9f88 (diff)
14.4.3 releasev14.4.3
-rw-r--r--ChangeLog4
-rw-r--r--VERSION2
-rw-r--r--src/main/webapp/js/app.min.js1682
-rw-r--r--src/main/webapp/js/diagramly/App.js100
-rw-r--r--src/main/webapp/js/diagramly/Dialogs.js21
-rw-r--r--src/main/webapp/js/viewer-static.min.js4
-rw-r--r--src/main/webapp/js/viewer.min.js4
-rw-r--r--src/main/webapp/mxgraph/mxClient.js2
-rw-r--r--src/main/webapp/resources/dia.txt2
-rw-r--r--src/main/webapp/resources/dia_am.txt2
-rw-r--r--src/main/webapp/resources/dia_ar.txt2
-rw-r--r--src/main/webapp/resources/dia_bg.txt2
-rw-r--r--src/main/webapp/resources/dia_bn.txt2
-rw-r--r--src/main/webapp/resources/dia_bs.txt2
-rw-r--r--src/main/webapp/resources/dia_ca.txt2
-rw-r--r--src/main/webapp/resources/dia_cs.txt2
-rw-r--r--src/main/webapp/resources/dia_da.txt2
-rw-r--r--src/main/webapp/resources/dia_de.txt2
-rw-r--r--src/main/webapp/resources/dia_el.txt2
-rw-r--r--src/main/webapp/resources/dia_eo.txt2
-rw-r--r--src/main/webapp/resources/dia_es.txt2
-rw-r--r--src/main/webapp/resources/dia_et.txt2
-rw-r--r--src/main/webapp/resources/dia_eu.txt2
-rw-r--r--src/main/webapp/resources/dia_fa.txt2
-rw-r--r--src/main/webapp/resources/dia_fi.txt2
-rw-r--r--src/main/webapp/resources/dia_fil.txt2
-rw-r--r--src/main/webapp/resources/dia_fr.txt2
-rw-r--r--src/main/webapp/resources/dia_gl.txt2
-rw-r--r--src/main/webapp/resources/dia_gu.txt2
-rw-r--r--src/main/webapp/resources/dia_he.txt12
-rw-r--r--src/main/webapp/resources/dia_hi.txt2
-rw-r--r--src/main/webapp/resources/dia_hr.txt2
-rw-r--r--src/main/webapp/resources/dia_hu.txt2
-rw-r--r--src/main/webapp/resources/dia_i18n.txt2
-rw-r--r--src/main/webapp/resources/dia_id.txt2
-rw-r--r--src/main/webapp/resources/dia_it.txt2
-rw-r--r--src/main/webapp/resources/dia_ja.txt2
-rw-r--r--src/main/webapp/resources/dia_kn.txt2
-rw-r--r--src/main/webapp/resources/dia_ko.txt2
-rw-r--r--src/main/webapp/resources/dia_lt.txt2
-rw-r--r--src/main/webapp/resources/dia_lv.txt2
-rw-r--r--src/main/webapp/resources/dia_ml.txt2
-rw-r--r--src/main/webapp/resources/dia_mr.txt2
-rw-r--r--src/main/webapp/resources/dia_ms.txt2
-rw-r--r--src/main/webapp/resources/dia_my.txt2
-rw-r--r--src/main/webapp/resources/dia_nl.txt2
-rw-r--r--src/main/webapp/resources/dia_no.txt2
-rw-r--r--src/main/webapp/resources/dia_pl.txt2
-rw-r--r--src/main/webapp/resources/dia_pt-br.txt2
-rw-r--r--src/main/webapp/resources/dia_pt.txt2
-rw-r--r--src/main/webapp/resources/dia_ro.txt2
-rw-r--r--src/main/webapp/resources/dia_ru.txt2
-rw-r--r--src/main/webapp/resources/dia_si.txt2
-rw-r--r--src/main/webapp/resources/dia_sk.txt2
-rw-r--r--src/main/webapp/resources/dia_sl.txt2
-rw-r--r--src/main/webapp/resources/dia_sr.txt2
-rw-r--r--src/main/webapp/resources/dia_sv.txt2
-rw-r--r--src/main/webapp/resources/dia_sw.txt2
-rw-r--r--src/main/webapp/resources/dia_ta.txt2
-rw-r--r--src/main/webapp/resources/dia_te.txt2
-rw-r--r--src/main/webapp/resources/dia_th.txt2
-rw-r--r--src/main/webapp/resources/dia_tr.txt2
-rw-r--r--src/main/webapp/resources/dia_uk.txt2
-rw-r--r--src/main/webapp/resources/dia_vi.txt2
-rw-r--r--src/main/webapp/resources/dia_zh-tw.txt2
-rw-r--r--src/main/webapp/resources/dia_zh.txt2
-rw-r--r--src/main/webapp/service-worker.js126
-rw-r--r--src/main/webapp/styles/atlas.css45
-rw-r--r--src/main/webapp/styles/dark.css38
-rw-r--r--src/main/webapp/styles/grapheditor.css17
70 files changed, 1196 insertions, 975 deletions
diff --git a/ChangeLog b/ChangeLog
index 6265a2c3..3e699d57 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+24-FEB-2021: 14.4.3
+
+- Adds notifications
+
18-FEB-2021: 14.4.2
- More fixes for aj.draw.io and ac.draw.io lightbox
diff --git a/VERSION b/VERSION
index afc1b70f..27e07651 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-14.4.2 \ No newline at end of file
+14.4.3 \ No newline at end of file
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 1907335f..2e0992fe 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -9443,25 +9443,25 @@ DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.s
DrawioFile.prototype.data=null;DrawioFile.prototype.shadowData=null;DrawioFile.prototype.shadowPages=null;DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=3E5;DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.ageStart=null;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0};
DrawioFile.prototype.synchronizeFile=function(a,d){this.savingFile?null!=d&&d({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,d):this.updateFile(a,d)};
DrawioFile.prototype.updateFile=function(a,d,b,c){null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=d&&d():this.getLatestVersion(mxUtils.bind(this,function(g){try{null!=b&&b()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=d&&d():null!=g?this.mergeFile(g,a,d,c):this.reloadFile(a,d))}catch(f){null!=d&&d(f)}}),d))};
-DrawioFile.prototype.mergeFile=function(a,d,b,c){var g=!0;try{this.stats.fileMerged++;var f=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),m=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=m&&0<m.length){this.shadowPages=m;this.backupPatch=this.isModified()?this.ui.diffPages(f,this.ui.pages):null;var n=[this.ui.diffPages(null!=c?c:f,this.shadowPages)];if(!this.ignorePatches(n)){var e=this.ui.patchPages(f,
-n[0]);c={};var k=this.ui.getHashValueForPages(e,c),f={},l=this.ui.getHashValueForPages(this.shadowPages,f);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",n,"checksum",l==k,k);if(null!=k&&k!=l){var p=this.compressReportData(this.getAnonymizedXmlForPages(m)),u=this.compressReportData(this.getAnonymizedXmlForPages(e)),t=this.ui.hashValue(a.getCurrentEtag()),q=this.ui.hashValue(this.getCurrentEtag());this.checksumError(b,n,"Shadow Details: "+JSON.stringify(c)+
-"\nChecksum: "+k+"\nCurrent: "+l+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+t+"\nTo: "+q+"\n\nFile Data:\n"+p+"\nPatched Shadow:\n"+u,null,"mergeFile");return}this.patch(n,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=d&&d()}catch(x){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+DrawioFile.prototype.mergeFile=function(a,d,b,c){var g=!0;try{this.stats.fileMerged++;var f=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),l=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=l&&0<l.length){this.shadowPages=l;this.backupPatch=this.isModified()?this.ui.diffPages(f,this.ui.pages):null;var m=[this.ui.diffPages(null!=c?c:f,this.shadowPages)];if(!this.ignorePatches(m)){var e=this.ui.patchPages(f,
+m[0]);c={};var k=this.ui.getHashValueForPages(e,c),f={},n=this.ui.getHashValueForPages(this.shadowPages,f);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",m,"checksum",n==k,k);if(null!=k&&k!=n){var p=this.compressReportData(this.getAnonymizedXmlForPages(l)),u=this.compressReportData(this.getAnonymizedXmlForPages(e)),t=this.ui.hashValue(a.getCurrentEtag()),q=this.ui.hashValue(this.getCurrentEtag());this.checksumError(b,m,"Shadow Details: "+JSON.stringify(c)+
+"\nChecksum: "+k+"\nCurrent: "+n+"\nCurrent Details: "+JSON.stringify(f)+"\nFrom: "+t+"\nTo: "+q+"\n\nFile Data:\n"+p+"\nPatched Shadow:\n"+u,null,"mergeFile");return}this.patch(m,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=d&&d()}catch(x){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
null!=b&&b(x);try{if(g)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,x);else{var v=this.getCurrentUser(),y=null!=v?v.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),y,x)}}catch(B){}}};
DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var d=new mxCodec(mxUtils.createXmlDocument()),b=d.document.createElement("mxfile");if(null!=a)for(var c=0;c<a.length;c++){var g=d.encode(new mxGraphModel(a[c].root));"1"!=urlParams.dev&&(g=this.ui.anonymizeNode(g,!0));g.setAttribute("id",a[c].getId());a[c].viewState&&this.ui.editor.graph.saveViewState(a[c].viewState,g,!0);b.appendChild(g)}return mxUtils.getPrettyXml(b)};
DrawioFile.prototype.compressReportData=function(a,d,b){d=null!=d?d:1E4;null!=b&&null!=a&&a.length>b?a=a.substring(0,b)+"[...]":null!=a&&a.length>d&&(a=Graph.compress(a)+"\n");return a};
DrawioFile.prototype.checksumError=function(a,d,b,c,g){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=d)for(a=0;a<d.length;a++)this.ui.anonymizePatch(d[a]);var f=mxUtils.bind(this,function(a){var e=this.compressReportData(JSON.stringify(d,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)),
-25E3):"n/a";this.sendErrorReport("Checksum Error in "+g+" "+this.getHash(),(null!=b?b:"")+"\n\nPatches:\n"+e+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?f(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?f(a):f(null)}),function(){})}else{var m=this.getCurrentUser(),n=null!=m?m.id:"unknown";EditorUi.logError("Checksum Error in "+g+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+n+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
-try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:g,label:"user_"+n+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(e){}}}catch(e){}};
-DrawioFile.prototype.sendErrorReport=function(a,d,b,c){try{var g=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),f=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),m=this.getCurrentUser(),n=null!=m?this.ui.hashValue(m.id):"unknown",e=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",k=this.getTitle(),l=k.lastIndexOf("."),m="xml";0<l&&(m=k.substring(l));var p=null!=b?b.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+
-":\n\nAppVersion="+navigator.appVersion+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+m+")\nUser="+n+e+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=d?"\n\n"+d:
+25E3):"n/a";this.sendErrorReport("Checksum Error in "+g+" "+this.getHash(),(null!=b?b:"")+"\n\nPatches:\n"+e+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==c?f(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==c?f(a):f(null)}),function(){})}else{var l=this.getCurrentUser(),m=null!=l?l.id:"unknown";EditorUi.logError("Checksum Error in "+g+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+m+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync"));
+try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:g,label:"user_"+m+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(e){}}}catch(e){}};
+DrawioFile.prototype.sendErrorReport=function(a,d,b,c){try{var g=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),f=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),l=this.getCurrentUser(),m=null!=l?this.ui.hashValue(l.id):"unknown",e=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",k=this.getTitle(),n=k.lastIndexOf("."),l="xml";0<n&&(l=k.substring(n));var p=null!=b?b.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+
+":\n\nAppVersion="+navigator.appVersion+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+l+")\nUser="+m+e+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=d?"\n\n"+d:
"")+(null!=b?"\n\nError: "+b.message:"")+"\n\nStack:\n"+p+"\n\nShadow:\n"+g+"\n\nData:\n"+f,c)}catch(u){}};
DrawioFile.prototype.reloadFile=function(a,d){try{this.ui.spinner.stop();var b=mxUtils.bind(this,function(){this.stats.fileReloaded++;var b=this.ui.editor.graph.getViewState(),d=this.ui.editor.graph.getSelectionCells(),f=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(f,b,d);null!=this.backupPatch&&this.patch([this.backupPatch]);var c=this.ui.getCurrentFile();null!=c&&(c.stats=this.stats);null!=a&&
a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}catch(c){null!=d&&d(c)}};DrawioFile.prototype.copyFile=function(a,d){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))};
DrawioFile.prototype.ignorePatches=function(a){for(var d=!0,b=0;b<a.length&&d;b++)d=d&&0==Object.keys(a[b]).length;return d};
-DrawioFile.prototype.patch=function(a,d,b){var c=this.ui.editor.undoManager,g=c.history.slice(),f=c.indexOfNextAdd,m=this.ui.editor.graph;m.container.style.visibility="hidden";var n=this.changeListenerEnabled;this.changeListenerEnabled=b;var e=m.foldingEnabled,k=m.mathEnabled,l=m.cellRenderer.redraw;m.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());l.apply(this,arguments)};m.model.beginUpdate();try{for(var p=
-0;p<a.length;p++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[p],!0,d,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{m.container.style.visibility="";m.model.endUpdate();m.cellRenderer.redraw=l;this.changeListenerEnabled=n;b||(c.history=g,c.indexOfNextAdd=f,c.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)k!=
-m.mathEnabled?(this.ui.editor.updateGraphComponents(),m.refresh()):(e!=m.foldingEnabled?m.view.revalidate():m.view.validate(),m.sizeDidChange());this.ui.updateTabContainer()}};
-DrawioFile.prototype.save=function(a,d,b,c,g,f){try{if(this.isEditable())if(!g&&this.invalidChecksum)if(null!=b)b({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=d&&d();else if(null!=b)b({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(m){if(null!=b)b(m);else throw m;}};
+DrawioFile.prototype.patch=function(a,d,b){var c=this.ui.editor.undoManager,g=c.history.slice(),f=c.indexOfNextAdd,l=this.ui.editor.graph;l.container.style.visibility="hidden";var m=this.changeListenerEnabled;this.changeListenerEnabled=b;var e=l.foldingEnabled,k=l.mathEnabled,n=l.cellRenderer.redraw;l.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());n.apply(this,arguments)};l.model.beginUpdate();try{for(var p=
+0;p<a.length;p++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[p],!0,d,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{l.container.style.visibility="";l.model.endUpdate();l.cellRenderer.redraw=n;this.changeListenerEnabled=m;b||(c.history=g,c.indexOfNextAdd=f,c.fireEvent(new mxEventObject(mxEvent.CLEAR)));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)k!=
+l.mathEnabled?(this.ui.editor.updateGraphComponents(),l.refresh()):(e!=l.foldingEnabled?l.view.revalidate():l.view.validate(),l.sizeDidChange());this.ui.updateTabContainer()}};
+DrawioFile.prototype.save=function(a,d,b,c,g,f){try{if(this.isEditable())if(!g&&this.invalidChecksum)if(null!=b)b({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=d&&d();else if(null!=b)b({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(l){if(null!=b)b(l);else throw l;}};
DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var a=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=a?"false"!=a:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(a,d,b){};DrawioFile.prototype.saveFile=function(a,d,b,c){};
DrawioFile.prototype.getPublicUrl=function(a){a(null)};DrawioFile.prototype.isRestricted=function(){return!1};DrawioFile.prototype.isModified=function(){return this.modified};DrawioFile.prototype.getShadowModified=function(){return this.shadowModified};DrawioFile.prototype.setShadowModified=function(a){this.shadowModified=a};DrawioFile.prototype.setModified=function(a){this.shadowModified=this.modified=a};DrawioFile.prototype.isAutosaveOptional=function(){return!1};
DrawioFile.prototype.isAutosave=function(){return!this.inConflictState&&this.ui.editor.autosave};DrawioFile.prototype.isRenamable=function(){return!1};DrawioFile.prototype.rename=function(a,d,b){};DrawioFile.prototype.isMovable=function(){return!1};DrawioFile.prototype.isTrashed=function(){return!1};DrawioFile.prototype.move=function(a,d,b){};DrawioFile.prototype.share=function(){this.ui.alert(mxResources.get("sharingAvailable"),null,380)};DrawioFile.prototype.getHash=function(){return""};
@@ -9497,8 +9497,8 @@ mxResources.get("updatingDocument"))&&this.synchronizeFile(mxUtils.bind(this,fun
function(){this.ui.editor.setStatus(mxUtils.htmlEntities(mxResources.get("updatingDocument")));this.synchronizeFile(b,c)}),this.getErrorMessage(a))};DrawioFile.prototype.getErrorMessage=function(a){var d=null!=a?null!=a.error?a.error.message:a.message:null;null==d&&null!=a&&a.code==App.ERROR_TIMEOUT&&(d=mxResources.get("timeout"));return d};DrawioFile.prototype.isOverdue=function(){return null!=this.ageStart&&Date.now()-this.ageStart.getTime()>=this.ui.warnInterval};
DrawioFile.prototype.fileChanged=function(){this.lastChanged=new Date;this.setModified(!0);this.isAutosave()?(null!=this.savingStatusKey&&this.addAllSavedStatus(mxUtils.htmlEntities(mxResources.get(this.savingStatusKey))+"..."),this.ui.scheduleSanityCheck(),null==this.ageStart&&(this.ageStart=new Date),this.autosave(this.autosaveDelay,this.maxAutosaveDelay,mxUtils.bind(this,function(a){this.ui.stopSanityCheck();null==this.autosaveThread?(this.handleFileSuccess(!0),this.ageStart=null):this.isModified()&&
(this.ui.scheduleSanityCheck(),this.ageStart=this.lastChanged)}),mxUtils.bind(this,function(a){this.handleFileError(a)}))):(this.ageStart=null,this.isAutosaveOptional()&&this.ui.editor.autosave||this.inConflictState||this.addUnsavedStatus())};DrawioFile.prototype.createSecret=function(a){var d=Editor.guid(32);null!=this.sync?this.sync.createToken(d,mxUtils.bind(this,function(b){a(d,b)}),mxUtils.bind(this,function(){a(d)})):a(d)};
-DrawioFile.prototype.fileSaved=function(a,d,b,c,g){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=b&&b()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),d,b,c,g)}catch(n){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(n);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,n);else{var f=
-this.getCurrentUser(),m=null!=f?f.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),m,n)}}catch(e){}}};
+DrawioFile.prototype.fileSaved=function(a,d,b,c,g){this.lastSaved=new Date;this.ageStart=null;try{this.stats.saved++,this.invalidChecksum=this.inConflictState=!1,null==this.sync?(this.shadowData=a,this.shadowPages=null,null!=b&&b()):this.sync.fileSaved(this.ui.getPagesForNode(mxUtils.parseXml(a).documentElement),d,b,c,g)}catch(m){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=c&&c(m);try{if(this.errorReportsEnabled)this.sendErrorReport("Error in fileSaved",null,m);else{var f=
+this.getCurrentUser(),l=null!=f?f.id:"unknown";EditorUi.logError("Error in fileSaved",null,this.getMode()+"."+this.getId(),l,m)}}catch(e){}}};
DrawioFile.prototype.autosave=function(a,d,b,c){null==this.lastAutosave&&(this.lastAutosave=Date.now());a=Date.now()-this.lastAutosave<d?a:0;this.clearAutosave();var g=window.setTimeout(mxUtils.bind(this,function(){this.lastAutosave=null;this.autosaveThread==g&&(this.autosaveThread=null);if(this.isModified()&&this.isAutosaveNow()){var a=this.isAutosaveRevision();a&&(this.lastAutosaveRevision=(new Date).getTime());this.save(a,mxUtils.bind(this,function(a){this.autosaveCompleted();null!=b&&b(a)}),mxUtils.bind(this,
function(a){null!=c&&c(a)}))}else this.isModified()||this.ui.editor.setStatus(""),null!=b&&b(null)}),a);this.autosaveThread=g};DrawioFile.prototype.isAutosaveNow=function(){return!0};DrawioFile.prototype.autosaveCompleted=function(){};DrawioFile.prototype.clearAutosave=function(){null!=this.autosaveThread&&(window.clearTimeout(this.autosaveThread),this.autosaveThread=null)};
DrawioFile.prototype.isAutosaveRevision=function(){var a=(new Date).getTime();return null==this.lastAutosaveRevision||a-this.lastAutosaveRevision>this.maxAutosaveRevisionDelay};DrawioFile.prototype.descriptorChanged=function(){this.fireEvent(new mxEventObject("descriptorChanged"))};DrawioFile.prototype.contentChanged=function(){this.fireEvent(new mxEventObject("contentChanged"))};
@@ -9507,112 +9507,112 @@ DrawioFile.prototype.removeListeners=function(){null!=this.changeListener&&(this
DrawioFile.prototype.commentsRefreshNeeded=function(){return!0};DrawioFile.prototype.commentsSaveNeeded=function(){return!1};DrawioFile.prototype.getComments=function(a,d){a([])};DrawioFile.prototype.addComment=function(a,d,b){d(Date.now())};DrawioFile.prototype.canReplyToReplies=function(){return!0};DrawioFile.prototype.canComment=function(){return!0};DrawioFile.prototype.newComment=function(a,d){return new DrawioComment(this,null,a,Date.now(),Date.now(),!1,d)};LocalFile=function(a,d,b,c,g,f){DrawioFile.call(this,a,d);this.title=b;this.mode=c?null:App.MODE_DEVICE;this.fileHandle=g;this.desc=f};mxUtils.extend(LocalFile,DrawioFile);LocalFile.prototype.isAutosave=function(){return null!=this.fileHandle&&!this.invalidFileHandle&&DrawioFile.prototype.isAutosave.apply(this,arguments)};LocalFile.prototype.isAutosaveOptional=function(){return null!=this.fileHandle};LocalFile.prototype.getMode=function(){return this.mode};LocalFile.prototype.getTitle=function(){return this.title};
LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=function(a,d,b){this.saveAs(this.title,d,b)};LocalFile.prototype.saveAs=function(a,d,b){this.saveFile(a,!1,d,b)};LocalFile.prototype.saveAs=function(a,d,b){this.saveFile(a,!1,d,b)};LocalFile.prototype.getDescriptor=function(){return this.desc};LocalFile.prototype.setDescriptor=function(a){this.desc=a};
LocalFile.prototype.getLatestVersion=function(a,d){null==this.fileHandle?a(null):this.ui.loadFileSystemEntry(this.fileHandle,a,d)};
-LocalFile.prototype.saveFile=function(a,d,b,c,g){a!=this.title&&(this.desc=this.fileHandle=null);this.title=a;g||this.updateFileData();var f=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var m=this.getData(),n=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=b&&b()}),e=mxUtils.bind(this,function(e){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var b=mxUtils.bind(this,
-function(a){this.savingFile=!1;null!=c&&c({error:a})});this.fileHandle.createWritable().then(mxUtils.bind(this,function(a){this.fileHandle.getFile().then(mxUtils.bind(this,function(c){this.invalidFileHandle=null;this.desc.lastModified==c.lastModified?a.write(f?this.ui.base64ToBlob(e,"image/png"):e).then(mxUtils.bind(this,function(){a.close().then(mxUtils.bind(this,function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(a){var e=this.desc;this.savingFile=!1;this.desc=a;this.fileSaved(m,
-e,n,b)}),b)}),b)}),b):(this.inConflictState=!0,b())}),mxUtils.bind(this,function(a){this.invalidFileHandle=!0;b(a)}))}),b)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(e,a,f?"image/png":"text/xml",f);else if(e.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(e)+"&filename="+encodeURIComponent(a)+(f?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},
-mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(e)}));n()}});f?(d=this.ui.getPngFileProperties(this.ui.fileNode),this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){e(a)}),c,this.ui.getCurrentFile()!=this?m:null,d.scale,d.border)):e(m)};LocalFile.prototype.rename=function(a,d,b){this.title=a;this.descriptorChanged();null!=d&&d()};LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};LocalLibrary=function(a,d,b){LocalFile.call(this,a,d,b)};mxUtils.extend(LocalLibrary,LocalFile);LocalLibrary.prototype.getHash=function(){return"F"+this.getTitle()};LocalLibrary.prototype.isAutosave=function(){return!1};LocalLibrary.prototype.saveAs=function(a,d,b){this.saveFile(a,!1,d,b)};LocalLibrary.prototype.updateFileData=function(){};LocalLibrary.prototype.open=function(){};StorageFile=function(a,d,b){DrawioFile.call(this,a,d);this.title=b};mxUtils.extend(StorageFile,DrawioFile);StorageFile.prototype.autosaveDelay=2E3;StorageFile.prototype.maxAutosaveDelay=2E4;StorageFile.prototype.type="F";StorageFile.prototype.getMode=function(){return App.MODE_BROWSER};StorageFile.prototype.isAutosaveOptional=function(){return!0};StorageFile.prototype.getHash=function(){return"L"+encodeURIComponent(this.getTitle())};StorageFile.prototype.getTitle=function(){return this.title};
+LocalFile.prototype.saveFile=function(a,d,b,c,g){a!=this.title&&(this.desc=this.fileHandle=null);this.title=a;g||this.updateFileData();var f=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var l=this.getData(),m=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=b&&b()}),e=mxUtils.bind(this,function(e){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var b=mxUtils.bind(this,
+function(a){this.savingFile=!1;null!=c&&c({error:a})});this.fileHandle.createWritable().then(mxUtils.bind(this,function(a){this.fileHandle.getFile().then(mxUtils.bind(this,function(c){this.invalidFileHandle=null;this.desc.lastModified==c.lastModified?a.write(f?this.ui.base64ToBlob(e,"image/png"):e).then(mxUtils.bind(this,function(){a.close().then(mxUtils.bind(this,function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(a){var e=this.desc;this.savingFile=!1;this.desc=a;this.fileSaved(l,
+e,m,b)}),b)}),b)}),b):(this.inConflictState=!0,b())}),mxUtils.bind(this,function(a){this.invalidFileHandle=!0;b(a)}))}),b)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(e,a,f?"image/png":"text/xml",f);else if(e.length<MAX_REQUEST_SIZE){var d=a.lastIndexOf("."),d=0<d?a.substring(d+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+d+"&xml="+encodeURIComponent(e)+"&filename="+encodeURIComponent(a)+(f?"&binary=1":""))).simulate(document,"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},
+mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(e)}));m()}});f?(d=this.ui.getPngFileProperties(this.ui.fileNode),this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){e(a)}),c,this.ui.getCurrentFile()!=this?l:null,d.scale,d.border)):e(l)};LocalFile.prototype.rename=function(a,d,b){this.title=a;this.descriptorChanged();null!=d&&d()};LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};LocalLibrary=function(a,d,b){LocalFile.call(this,a,d,b)};mxUtils.extend(LocalLibrary,LocalFile);LocalLibrary.prototype.getHash=function(){return"F"+this.getTitle()};LocalLibrary.prototype.isAutosave=function(){return!1};LocalLibrary.prototype.saveAs=function(a,d,b){this.saveFile(a,!1,d,b)};LocalLibrary.prototype.updateFileData=function(){};LocalLibrary.prototype.open=function(){};StorageFile=function(a,d,b){DrawioFile.call(this,a,d);this.title=b};mxUtils.extend(StorageFile,DrawioFile);StorageFile.prototype.autosaveDelay=2E3;StorageFile.prototype.maxAutosaveDelay=2E4;StorageFile.prototype.type="F";StorageFile.prototype.getMode=function(){return App.MODE_BROWSER};StorageFile.prototype.isAutosaveOptional=function(){return!0};StorageFile.prototype.getHash=function(){return"L"+encodeURIComponent(this.getTitle())};StorageFile.prototype.getTitle=function(){return this.title};
StorageFile.prototype.isRenamable=function(){return!0};StorageFile.prototype.save=function(a,d,b){this.saveAs(this.getTitle(),d,b)};StorageFile.prototype.saveAs=function(a,d,b){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(a,!1,d,b)};
-StorageFile.insertFile=function(a,d,b,c,g){var f=mxUtils.bind(this,function(f){var m=function(){var e=new StorageFile(a,b,d);e.saveFile(d,!1,function(){c(e)},g)};f?a.confirm(mxResources.get("replaceIt",[d]),m,g):m()});StorageFile.getFileContent(a,d,function(a){f(null!=a)},function(){f(!1)})};StorageFile.getFileContent=function(a,d,b,c){a.getDatabaseItem(d,function(a){b(null!=a?a.data:null)},mxUtils.bind(this,function(){null==a.database?a.getLocalData(d,b):null!=c&&c()}),"files")};
+StorageFile.insertFile=function(a,d,b,c,g){var f=mxUtils.bind(this,function(f){var l=function(){var e=new StorageFile(a,b,d);e.saveFile(d,!1,function(){c(e)},g)};f?a.confirm(mxResources.get("replaceIt",[d]),l,g):l()});StorageFile.getFileContent(a,d,function(a){f(null!=a)},function(){f(!1)})};StorageFile.getFileContent=function(a,d,b,c){a.getDatabaseItem(d,function(a){b(null!=a?a.data:null)},mxUtils.bind(this,function(){null==a.database?a.getLocalData(d,b):null!=c&&c()}),"files")};
StorageFile.getFileInfo=function(a,d,b,c){a.getDatabaseItem(d,function(a){b(a)},mxUtils.bind(this,function(){null==a.database?a.getLocalData(d,function(a){b(null!=a?{title:d}:null)}):null!=c&&c()}),"filesInfo")};
StorageFile.prototype.saveFile=function(a,d,b,c){if(this.isEditable()){var g=mxUtils.bind(this,function(){this.isRenamable()&&(this.title=a);try{var d=mxUtils.bind(this,function(){this.setModified(!1);this.contentChanged();null!=b&&b()}),g=this.getData();this.ui.setDatabaseItem(null,[{title:this.title,size:g.length,lastModified:Date.now(),type:this.type},{title:this.title,data:g}],d,mxUtils.bind(this,function(){null==this.ui.database?this.ui.setLocalData(this.title,g,d):null!=c&&c()}),["filesInfo",
-"files"])}catch(n){null!=c&&c(n)}});this.isRenamable()&&"."==a.charAt(0)&&null!=c?c({message:mxResources.get("invalidName")}):StorageFile.getFileInfo(this.ui,a,mxUtils.bind(this,function(b){this.isRenamable()&&this.getTitle()!=a&&null!=b?this.ui.confirm(mxResources.get("replaceIt",[a]),g,c):g()}),c)}else null!=b&&b()};
+"files"])}catch(m){null!=c&&c(m)}});this.isRenamable()&&"."==a.charAt(0)&&null!=c?c({message:mxResources.get("invalidName")}):StorageFile.getFileInfo(this.ui,a,mxUtils.bind(this,function(b){this.isRenamable()&&this.getTitle()!=a&&null!=b?this.ui.confirm(mxResources.get("replaceIt",[a]),g,c):g()}),c)}else null!=b&&b()};
StorageFile.prototype.rename=function(a,d,b){var c=this.getTitle();c!=a?StorageFile.getFileInfo(this.ui,a,mxUtils.bind(this,function(g){var f=mxUtils.bind(this,function(){this.title=a;this.hasSameExtension(c,a)||this.setData(this.ui.getFileData());this.saveFile(a,!1,mxUtils.bind(this,function(){this.ui.removeLocalData(c,d)}),b)});null!=g?this.ui.confirm(mxResources.get("replaceIt",[a]),f,b):f()}),b):d()};StorageFile.prototype.open=function(){DrawioFile.prototype.open.apply(this,arguments);this.saveFile(this.getTitle())};
StorageFile.prototype.getLatestVersion=function(a,d){StorageFile.getFileContent(this.ui,this.title,mxUtils.bind(this,function(b){a(new StorageFile(this.ui,b,this.title))}),d)};StorageFile.prototype.destroy=function(){DrawioFile.prototype.destroy.apply(this,arguments);null!=this.storageListener&&(mxEvent.removeListener(window,"storage",this.storageListener),this.storageListener=null)};
-StorageFile.listLocalStorageFiles=function(a){for(var d=[],b=0;b<localStorage.length;b++){var c=localStorage.key(b),g=localStorage.getItem(c);if(0<c.length&&"."!=c.charAt(0)&&0<g.length){var f=(null==a||"F"==a)&&("<mxfile "===g.substring(0,8)||"<?xml"===g.substring(0,5)||"\x3c!--[if IE]>"===g.substring(0,12)),m=(null==a||"L"==a)&&"<mxlibrary>"===g.substring(0,11);(f||m)&&d.push({title:c,type:f?"F":"L",size:g.length,lastModified:Date.now()})}}return d};
+StorageFile.listLocalStorageFiles=function(a){for(var d=[],b=0;b<localStorage.length;b++){var c=localStorage.key(b),g=localStorage.getItem(c);if(0<c.length&&"."!=c.charAt(0)&&0<g.length){var f=(null==a||"F"==a)&&("<mxfile "===g.substring(0,8)||"<?xml"===g.substring(0,5)||"\x3c!--[if IE]>"===g.substring(0,12)),l=(null==a||"L"==a)&&"<mxlibrary>"===g.substring(0,11);(f||l)&&d.push({title:c,type:f?"F":"L",size:g.length,lastModified:Date.now()})}}return d};
StorageFile.migrate=function(a){var d=StorageFile.listLocalStorageFiles();d.push({title:".scratchpad",type:"L"});var b=a.transaction(["files","filesInfo"],"readwrite");a=b.objectStore("files");for(var b=b.objectStore("filesInfo"),c=0;c<d.length;c++){var g=d[c],f=localStorage.getItem(g.title);a.add({title:g.title,data:f});b.add(g)}};
StorageFile.listFiles=function(a,d,b,c){a.getDatabaseItems(function(a){var c=[];if(null!=a)for(var g=0;g<a.length;g++)"."==a[g].title.charAt(0)||null!=d&&a[g].type!=d||c.push(a[g]);b(c)},function(){null==a.database?b(StorageFile.listLocalStorageFiles(d)):null!=c&&c()},"filesInfo")};StorageFile.deleteFile=function(a,d,b,c){a.removeDatabaseItem([d,d],b,function(){null==a.database?(localStorage.removeItem(d),b()):null!=c&&c()},["files","filesInfo"])};StorageLibrary=function(a,d,b){StorageFile.call(this,a,d,b)};mxUtils.extend(StorageLibrary,StorageFile);StorageLibrary.prototype.type="L";StorageLibrary.prototype.isAutosave=function(){return!0};StorageLibrary.prototype.saveAs=function(a,d,b){this.saveFile(a,!1,d,b)};StorageLibrary.prototype.getHash=function(){return"L"+encodeURIComponent(this.title)};StorageLibrary.prototype.getTitle=function(){return".scratchpad"==this.title?mxResources.get("scratchpad"):this.title};
StorageLibrary.prototype.isRenamable=function(a,d,b){return".scratchpad"!=this.title};StorageLibrary.prototype.open=function(){};RemoteFile=function(a,d,b){DrawioFile.call(this,a,d);this.title=b;this.mode=null};mxUtils.extend(RemoteFile,DrawioFile);RemoteFile.prototype.isAutosave=function(){return!1};RemoteFile.prototype.getMode=function(){return this.mode};RemoteFile.prototype.getTitle=function(){return this.title};RemoteFile.prototype.isRenamable=function(){return!1};RemoteFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};RemoteLibrary=function(a,d,b){RemoteFile.call(this,a,d,b.title);this.libObj=b};mxUtils.extend(RemoteLibrary,LocalFile);RemoteLibrary.prototype.getHash=function(){return"R"+encodeURIComponent(JSON.stringify([this.libObj.id,this.libObj.title,this.libObj.downloadUrl]))};RemoteLibrary.prototype.isEditable=function(){return!1};RemoteLibrary.prototype.isRenamable=function(){return!1};RemoteLibrary.prototype.isAutosave=function(){return!1};RemoteLibrary.prototype.save=function(a,d,b){};
RemoteLibrary.prototype.saveAs=function(a,d,b){};RemoteLibrary.prototype.updateFileData=function(){};RemoteLibrary.prototype.open=function(){};UrlLibrary=function(a,d,b){StorageFile.call(this,a,d,b);a=b;d=a.lastIndexOf("/");0<=d&&(a=a.substring(d+1));this.fname=a};mxUtils.extend(UrlLibrary,StorageFile);UrlLibrary.prototype.getHash=function(){return"U"+encodeURIComponent(this.title)};UrlLibrary.prototype.getTitle=function(){return this.fname};UrlLibrary.prototype.isAutosave=function(){return!1};UrlLibrary.prototype.isEditable=function(a,d,b){return!1};UrlLibrary.prototype.saveAs=function(a,d,b){};UrlLibrary.prototype.open=function(){};EmbedFile=function(a,d,b){DrawioFile.call(this,a,d);this.desc=b||{};this.mode=App.MODE_EMBED};mxUtils.extend(EmbedFile,DrawioFile);EmbedFile.prototype.getMode=function(){return this.mode};EmbedFile.prototype.getTitle=function(){return this.desc.title||""};/*
mxClient.IS_IOS || */
-var StorageDialog=function(a,d,b){function c(c,k,f,g,q,v){function l(){mxEvent.addListener(p,"click",null!=v?v:function(){f!=App.MODE_GOOGLE||a.isDriveDomain()?f==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(f,!0);d()})):f==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(f,!0);d()})):
-(a.setMode(f,!0),d()):window.location.hostname=DriveClient.prototype.newAppHostname})}++m>b&&(mxUtils.br(n),m=0);var p=document.createElement("a");p.style.overflow="hidden";p.style.display="inline-block";p.className="geBaseButton";p.style.boxSizing="border-box";p.style.fontSize="11px";p.style.position="relative";p.style.margin="4px";p.style.marginTop="8px";p.style.marginBottom="0px";p.style.padding="8px 10px 8px 10px";p.style.width="88px";p.style.height="100px";p.style.whiteSpace="nowrap";p.setAttribute("title",
+var StorageDialog=function(a,d,b){function c(c,k,f,g,q,v){function n(){mxEvent.addListener(p,"click",null!=v?v:function(){f!=App.MODE_GOOGLE||a.isDriveDomain()?f==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(f,!0);d()})):f==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(f,!0);d()})):
+(a.setMode(f,!0),d()):window.location.hostname=DriveClient.prototype.newAppHostname})}++l>b&&(mxUtils.br(m),l=0);var p=document.createElement("a");p.style.overflow="hidden";p.style.display="inline-block";p.className="geBaseButton";p.style.boxSizing="border-box";p.style.fontSize="11px";p.style.position="relative";p.style.margin="4px";p.style.marginTop="8px";p.style.marginBottom="0px";p.style.padding="8px 10px 8px 10px";p.style.width="88px";p.style.height="100px";p.style.whiteSpace="nowrap";p.setAttribute("title",
k);var t=document.createElement("div");t.style.textOverflow="ellipsis";t.style.overflow="hidden";t.style.position="absolute";t.style.bottom="8px";t.style.left="0px";t.style.right="0px";mxUtils.write(t,k);p.appendChild(t);if(null!=c){var u=document.createElement("img");u.setAttribute("src",c);u.setAttribute("border","0");u.setAttribute("align","absmiddle");u.style.width="60px";u.style.height="60px";u.style.paddingBottom="6px";p.appendChild(u)}else t.style.paddingTop="5px",t.style.whiteSpace="normal",
mxClient.IS_IOS?(p.style.padding="0px 10px 20px 10px",p.style.top="6px"):mxClient.IS_FF&&(t.style.paddingTop="0px",t.style.marginTop="-2px");if(null!=q)for(c=0;c<q.length;c++)mxUtils.br(t),mxUtils.write(t,q[c]);if(null!=g&&null==a[g]){u.style.visibility="hidden";mxUtils.setOpacity(t,10);var A=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});A.spin(p);var C=window.setTimeout(function(){null==
-a[g]&&(A.stop(),p.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(b,c){null!=a[g]&&c.getProperty("client")==a[g]&&(window.clearTimeout(C),mxUtils.setOpacity(t,100),u.style.visibility="",A.stop(),l(),"drive"==g&&null!=e.parentNode&&e.parentNode.removeChild(e))}))}else l();n.appendChild(p)}b=null!=b?b:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var f=document.createElement("div");
-f.style.border="1px solid #d3d3d3";f.style.borderWidth="1px 0px 1px 0px";f.style.padding="10px 0px 20px 0px";var m=0,n=document.createElement("div");n.style.paddingTop="2px";f.appendChild(n);var e=document.createElement("p"),k=document.createElement("p");k.style.cssText="font-size:22px;padding:4px 0 16px 0;margin:0;color:gray;";mxUtils.write(k,mxResources.get("saveDiagramsTo")+":");g.appendChild(k);g.appendChild(f);m=0;"function"===typeof window.DriveClient&&c(IMAGE_PATH+"/google-drive-logo.svg",
+a[g]&&(A.stop(),p.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(b,c){null!=a[g]&&c.getProperty("client")==a[g]&&(window.clearTimeout(C),mxUtils.setOpacity(t,100),u.style.visibility="",A.stop(),n(),"drive"==g&&null!=e.parentNode&&e.parentNode.removeChild(e))}))}else n();m.appendChild(p)}b=null!=b?b:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var f=document.createElement("div");
+f.style.border="1px solid #d3d3d3";f.style.borderWidth="1px 0px 1px 0px";f.style.padding="10px 0px 20px 0px";var l=0,m=document.createElement("div");m.style.paddingTop="2px";f.appendChild(m);var e=document.createElement("p"),k=document.createElement("p");k.style.cssText="font-size:22px;padding:4px 0 16px 0;margin:0;color:gray;";mxUtils.write(k,mxResources.get("saveDiagramsTo")+":");g.appendChild(k);g.appendChild(f);l=0;"function"===typeof window.DriveClient&&c(IMAGE_PATH+"/google-drive-logo.svg",
mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&c(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");c(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||c(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);"function"===typeof window.DropboxClient&&c(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),
App.MODE_DROPBOX,"dropbox");null!=a.gitHub&&c(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub");null!=a.gitLab&&c(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab");f=document.createElement("span");f.style.cssText="position:absolute;cursor:pointer;bottom:27px;color:gray;userSelect:none;text-align:center;left:50%;";mxUtils.setPrefixedStyle(f.style,"transform","translate(-50%,0)");mxUtils.write(f,mxResources.get("decideLater"));mxEvent.addListener(f,
"click",function(){a.hideDialog();var e=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=e});g.appendChild(f);mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<=document.documentMode)&&window.setTimeout(function(){null==a.drive&&(e.style.padding="7px",e.style.fontSize="9pt",e.style.marginTop="-14px",e.innerHTML='<a style="background-color:#dcdcdc;padding:6px;color:black;text-decoration:none;" href="https://desk.draw.io/a/solutions/articles/16000074659" target="_blank"><img border="0" src="'+
mxGraph.prototype.warningImage.src+'" align="absmiddle" style="margin-top:-4px"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",g.appendChild(e))},5E3);this.container=g},SplashDialog=function(a){var d=document.createElement("div");d.style.textAlign="center";if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp){var b=a.addLanguageMenu(d,!0);null!=b&&(b.style.bottom="19px")}a.getServiceCount();var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("align","absmiddle");
c.style.width="32px";c.style.height="32px";c.style.marginRight="8px";c.style.marginTop="-4px";var g=document.createElement("div");g.style.margin="8px 0px 0px 0px";g.style.padding="18px 0px 24px 0px";b="";a.mode==App.MODE_GOOGLE?(c.src=IMAGE_PATH+"/google-drive-logo.svg",b=mxResources.get("googleDrive")):a.mode==App.MODE_DROPBOX?(c.src=IMAGE_PATH+"/dropbox-logo.svg",b=mxResources.get("dropbox")):a.mode==App.MODE_ONEDRIVE?(c.src=IMAGE_PATH+"/onedrive-logo.svg",b=mxResources.get("oneDrive")):a.mode==
App.MODE_GITHUB?(c.src=IMAGE_PATH+"/github-logo.svg",b=mxResources.get("github")):a.mode==App.MODE_GITLAB?(c.src=IMAGE_PATH+"/gitlab-logo.svg",b=mxResources.get("gitlab")):a.mode==App.MODE_BROWSER?(c.src=IMAGE_PATH+"/osa_database.png",b=mxResources.get("browser")):a.mode==App.MODE_TRELLO?(c.src=IMAGE_PATH+"/trello-logo.svg",b=mxResources.get("trello")):(c.src=IMAGE_PATH+"/osa_drive-harddisk.png",g.style.paddingBottom="10px",g.style.paddingTop="30px",b=mxResources.get("device"));var f=document.createElement("button");
-f.className="geBigButton";f.style.marginBottom="8px";f.style.fontSize="18px";f.style.padding="10px";f.style.width="340px";if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)g.style.padding="42px 0px 56px 0px",f.style.marginBottom="12px";else{g.style.border="1px solid #d3d3d3";g.style.borderWidth="1px 0px 1px 0px";var m=document.createElement("table"),n=document.createElement("tbody"),e=document.createElement("tr"),k=document.createElement("td"),l=document.createElement("td");m.setAttribute("align",
-"center");k.appendChild(c);c=document.createElement("div");c.style.fontSize="22px";c.style.paddingBottom="6px";c.style.color="gray";mxUtils.write(c,b);l.style.textAlign="left";l.appendChild(c);e.appendChild(k);e.appendChild(l);n.appendChild(e);m.appendChild(n);d.appendChild(m);b=document.createElement("span");b.style.cssText="position:absolute;cursor:pointer;bottom:27px;color:gray;userSelect:none;text-align:center;left:50%;";mxUtils.setPrefixedStyle(b.style,"transform","translate(-50%,0)");mxUtils.write(b,
+f.className="geBigButton";f.style.marginBottom="8px";f.style.fontSize="18px";f.style.padding="10px";f.style.width="340px";if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)g.style.padding="42px 0px 56px 0px",f.style.marginBottom="12px";else{g.style.border="1px solid #d3d3d3";g.style.borderWidth="1px 0px 1px 0px";var l=document.createElement("table"),m=document.createElement("tbody"),e=document.createElement("tr"),k=document.createElement("td"),n=document.createElement("td");l.setAttribute("align",
+"center");k.appendChild(c);c=document.createElement("div");c.style.fontSize="22px";c.style.paddingBottom="6px";c.style.color="gray";mxUtils.write(c,b);n.style.textAlign="left";n.appendChild(c);e.appendChild(k);e.appendChild(n);m.appendChild(e);l.appendChild(m);d.appendChild(l);b=document.createElement("span");b.style.cssText="position:absolute;cursor:pointer;bottom:27px;color:gray;userSelect:none;text-align:center;left:50%;";mxUtils.setPrefixedStyle(b.style,"transform","translate(-50%,0)");mxUtils.write(b,
mxResources.get("changeStorage"));mxEvent.addListener(b,"click",function(){a.hideDialog(!1);a.setMode(null);a.clearMode();a.showSplash(!0)});d.appendChild(b)}mxUtils.write(f,mxResources.get("createNewDiagram"));mxEvent.addListener(f,"click",function(){a.hideDialog();a.actions.get("new").funct()});g.appendChild(f);mxUtils.br(g);f=document.createElement("button");f.className="geBigButton";f.style.marginBottom="22px";f.style.fontSize="18px";f.style.padding="10px";f.style.width="340px";mxUtils.write(f,
mxResources.get("openExistingDiagram"));mxEvent.addListener(f,"click",function(){a.actions.get("open").funct()});g.appendChild(f);a.mode==App.MODE_GOOGLE?mxResources.get("googleDrive"):a.mode==App.MODE_DROPBOX?mxResources.get("dropbox"):a.mode==App.MODE_ONEDRIVE?mxResources.get("oneDrive"):a.mode==App.MODE_GITHUB?mxResources.get("github"):a.mode==App.MODE_GITLAB?mxResources.get("gitlab"):a.mode==App.MODE_TRELLO?mxResources.get("trello"):a.mode==App.MODE_DEVICE?mxResources.get("device"):a.mode==App.MODE_BROWSER&&
mxResources.get("browser");if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp)if(b=function(e){f.style.marginBottom="24px";var b=document.createElement("a");b.style.display="inline-block";b.style.color="gray";b.style.cursor="pointer";b.style.marginTop="6px";mxUtils.write(b,mxResources.get("signOut"));f.style.marginBottom="16px";g.style.paddingBottom="18px";mxEvent.addListener(b,"click",function(){a.confirm(mxResources.get("areYouSure"),function(){e()})});g.appendChild(b)},a.mode==App.MODE_GOOGLE&&
-null!=a.drive){var p=a.drive.getUsersList();if(0<p.length){c=document.createElement("span");c.style.marginTop="6px";mxUtils.write(c,mxResources.get("changeUser")+":");f.style.marginBottom="16px";g.style.paddingBottom="18px";g.appendChild(c);var u=document.createElement("select");u.style.marginLeft="4px";u.style.width="140px";for(b=0;b<p.length;b++)m=document.createElement("option"),mxUtils.write(m,p[b].displayName),m.value=b,u.appendChild(m),m=document.createElement("option"),m.innerHTML="&nbsp;&nbsp;&nbsp;",
-mxUtils.write(m,"<"+p[b].email+">"),m.setAttribute("disabled","disabled"),u.appendChild(m);m=document.createElement("option");mxUtils.write(m,mxResources.get("addAccount"));m.value=p.length;u.appendChild(m);mxEvent.addListener(u,"change",function(){var e=u.value,b=p.length!=e;b&&a.drive.setUser(p[e]);a.drive.authorize(b,function(){a.setMode(App.MODE_GOOGLE);a.hideDialog();a.showSplash()},function(e){a.handleError(e,null,function(){a.hideDialog();a.showSplash()})},!0)});g.appendChild(u)}else b(function(){a.drive.logout()})}else a.mode!=
+null!=a.drive){var p=a.drive.getUsersList();if(0<p.length){c=document.createElement("span");c.style.marginTop="6px";mxUtils.write(c,mxResources.get("changeUser")+":");f.style.marginBottom="16px";g.style.paddingBottom="18px";g.appendChild(c);var u=document.createElement("select");u.style.marginLeft="4px";u.style.width="140px";for(b=0;b<p.length;b++)l=document.createElement("option"),mxUtils.write(l,p[b].displayName),l.value=b,u.appendChild(l),l=document.createElement("option"),l.innerHTML="&nbsp;&nbsp;&nbsp;",
+mxUtils.write(l,"<"+p[b].email+">"),l.setAttribute("disabled","disabled"),u.appendChild(l);l=document.createElement("option");mxUtils.write(l,mxResources.get("addAccount"));l.value=p.length;u.appendChild(l);mxEvent.addListener(u,"change",function(){var e=u.value,b=p.length!=e;b&&a.drive.setUser(p[e]);a.drive.authorize(b,function(){a.setMode(App.MODE_GOOGLE);a.hideDialog();a.showSplash()},function(e){a.handleError(e,null,function(){a.hideDialog();a.showSplash()})},!0)});g.appendChild(u)}else b(function(){a.drive.logout()})}else a.mode!=
App.MODE_ONEDRIVE||null==a.oneDrive||a.oneDrive.noLogout?a.mode==App.MODE_GITHUB&&null!=a.gitHub?b(function(){a.gitHub.logout();a.openLink("https://www.github.com/logout")}):a.mode==App.MODE_GITLAB&&null!=a.gitLab?b(function(){a.gitLab.logout();a.openLink(DRAWIO_GITLAB_URL+"/users/sign_out")}):a.mode==App.MODE_TRELLO&&null!=a.trello?a.trello.isAuthorized()&&b(function(){a.trello.logout()}):a.mode==App.MODE_DROPBOX&&null!=a.dropbox&&b(function(){a.dropbox.logout();a.openLink("https://www.dropbox.com/logout")}):
-b(function(){a.oneDrive.logout()});d.appendChild(g);this.container=d},EmbedDialog=function(a,d,b,c,g,f,m){m=null!=m?m:"Check out the diagram I made using @drawio";c=document.createElement("div");var n=/^https?:\/\//.test(d)||/^mailto:\/\//.test(d);null!=f?mxUtils.write(c,f):mxUtils.write(c,mxResources.get(5E5>d.length?n?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(c);f=document.createElement("div");f.style.position="absolute";f.style.top="30px";f.style.right="30px";f.style.color="gray";mxUtils.write(f,
+b(function(){a.oneDrive.logout()});d.appendChild(g);this.container=d},EmbedDialog=function(a,d,b,c,g,f,l){l=null!=l?l:"Check out the diagram I made using @drawio";c=document.createElement("div");var m=/^https?:\/\//.test(d)||/^mailto:\/\//.test(d);null!=f?mxUtils.write(c,f):mxUtils.write(c,mxResources.get(5E5>d.length?m?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(c);f=document.createElement("div");f.style.position="absolute";f.style.top="30px";f.style.right="30px";f.style.color="gray";mxUtils.write(f,
a.formatFileSize(d.length));c.appendChild(f);var e=document.createElement("textarea");e.setAttribute("autocomplete","off");e.setAttribute("autocorrect","off");e.setAttribute("autocapitalize","off");e.setAttribute("spellcheck","false");e.style.fontFamily="monospace";e.style.wordBreak="break-all";e.style.marginTop="10px";e.style.resize="none";e.style.height="150px";e.style.width="440px";e.style.border="1px solid gray";e.value=mxResources.get("updatingDocument");c.appendChild(e);mxUtils.br(c);this.init=
-function(){window.setTimeout(function(){5E5>d.length?(e.value=d,e.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null)):(e.setAttribute("readonly","true"),e.value=mxResources.get("tooLargeUseDownload"))},0)};f=document.createElement("div");f.style.position="absolute";f.style.bottom="36px";f.style.right="32px";var k=null;!EmbedDialog.showPreviewOption||mxClient.IS_CHROMEAPP&&!n||navigator.standalone||!(n||mxClient.IS_SVG&&(null==document.documentMode||
-9<document.documentMode))||(k=mxUtils.button(mxResources.get(5E5>d.length?"preview":"openInNewWindow"),function(){var c=5E5>d.length?e.value:d;if(null!=g)g(c);else if(n)try{var k=a.openLink(c);null!=k&&(null==b||0<b)&&window.setTimeout(mxUtils.bind(this,function(){try{null!=k&&null!=k.location.href&&k.location.href.substring(0,8)!=c.substring(0,8)&&(k.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}catch(v){}}),b||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var l=
-window.open(),l=null!=l?l.document:null;null!=l?(l.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+d+"</body></html>"),l.close()):a.handleError({message:mxResources.get("errorUpdatingPreview")})}}),k.className="geBtn",f.appendChild(k));if(!n||7500<d.length){var l=mxUtils.button(mxResources.get("download"),function(){a.hideDialog();a.saveData("embed.txt","txt",d,"text/plain")});l.className="geBtn";f.appendChild(l)}if(n&&(!a.isOffline()||
-mxClient.IS_CHROMEAPP)){if(51200>d.length){var p=mxUtils.button("",function(){try{var b="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(e.value);a.openLink(b)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),l=document.createElement("img");l.setAttribute("src",Editor.facebookImage);l.setAttribute("width","18");l.setAttribute("height","18");l.setAttribute("border","0");p.appendChild(l);p.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+
-" max)");p.style.verticalAlign="bottom";p.style.paddingTop="4px";p.style.minWidth="46px";p.className="geBtn";f.appendChild(p)}7168>d.length&&(p=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent(m)+"&url="+encodeURIComponent(e.value);a.openLink(b)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),l=document.createElement("img"),l.setAttribute("src",Editor.tweetImage),l.setAttribute("width","18"),l.setAttribute("height",
-"18"),l.setAttribute("border","0"),l.style.marginBottom="5px",p.appendChild(l),p.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),p.style.verticalAlign="bottom",p.style.paddingTop="4px",p.style.minWidth="46px",p.className="geBtn",f.appendChild(p))}l=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.appendChild(l);p=mxUtils.button(mxResources.get("copy"),function(){e.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():
-document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>d.length?mxClient.IS_SF||null!=document.documentMode?l.className="geBtn gePrimaryBtn":(f.appendChild(p),p.className="geBtn gePrimaryBtn",l.className="geBtn"):(f.appendChild(k),l.className="geBtn",k.className="geBtn gePrimaryBtn");c.appendChild(f);this.container=c};EmbedDialog.showPreviewOption=!0;
+function(){window.setTimeout(function(){5E5>d.length?(e.value=d,e.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null)):(e.setAttribute("readonly","true"),e.value=mxResources.get("tooLargeUseDownload"))},0)};f=document.createElement("div");f.style.position="absolute";f.style.bottom="36px";f.style.right="32px";var k=null;!EmbedDialog.showPreviewOption||mxClient.IS_CHROMEAPP&&!m||navigator.standalone||!(m||mxClient.IS_SVG&&(null==document.documentMode||
+9<document.documentMode))||(k=mxUtils.button(mxResources.get(5E5>d.length?"preview":"openInNewWindow"),function(){var c=5E5>d.length?e.value:d;if(null!=g)g(c);else if(m)try{var k=a.openLink(c);null!=k&&(null==b||0<b)&&window.setTimeout(mxUtils.bind(this,function(){try{null!=k&&null!=k.location.href&&k.location.href.substring(0,8)!=c.substring(0,8)&&(k.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}catch(v){}}),b||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var n=
+window.open(),n=null!=n?n.document:null;null!=n?(n.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+d+"</body></html>"),n.close()):a.handleError({message:mxResources.get("errorUpdatingPreview")})}}),k.className="geBtn",f.appendChild(k));if(!m||7500<d.length){var n=mxUtils.button(mxResources.get("download"),function(){a.hideDialog();a.saveData("embed.txt","txt",d,"text/plain")});n.className="geBtn";f.appendChild(n)}if(m&&(!a.isOffline()||
+mxClient.IS_CHROMEAPP)){if(51200>d.length){var p=mxUtils.button("",function(){try{var b="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(e.value);a.openLink(b)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),n=document.createElement("img");n.setAttribute("src",Editor.facebookImage);n.setAttribute("width","18");n.setAttribute("height","18");n.setAttribute("border","0");p.appendChild(n);p.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+
+" max)");p.style.verticalAlign="bottom";p.style.paddingTop="4px";p.style.minWidth="46px";p.className="geBtn";f.appendChild(p)}7168>d.length&&(p=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent(l)+"&url="+encodeURIComponent(e.value);a.openLink(b)}catch(t){a.handleError({message:t.message||mxResources.get("drawingTooLarge")})}}),n=document.createElement("img"),n.setAttribute("src",Editor.tweetImage),n.setAttribute("width","18"),n.setAttribute("height",
+"18"),n.setAttribute("border","0"),n.style.marginBottom="5px",p.appendChild(n),p.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),p.style.verticalAlign="bottom",p.style.paddingTop="4px",p.style.minWidth="46px",p.className="geBtn",f.appendChild(p))}n=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});f.appendChild(n);p=mxUtils.button(mxResources.get("copy"),function(){e.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():
+document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>d.length?mxClient.IS_SF||null!=document.documentMode?n.className="geBtn gePrimaryBtn":(f.appendChild(p),p.className="geBtn gePrimaryBtn",n.className="geBtn"):(f.appendChild(k),n.className="geBtn",k.className="geBtn gePrimaryBtn");c.appendChild(f);this.container=c};EmbedDialog.showPreviewOption=!0;
var GoogleSitesDialog=function(a,d){function b(){var a=null!=E&&null!=E.getTitle()?E.getTitle():this.defaultFilename;if(A.checked&&""!=u.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(u.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<C.length&&(b+="&s="+C);""!=t.value&&"0"!=t.value&&(b+="&border="+t.value);""!=p.value&&(b+="&height="+p.value);b+="&pan="+(q.checked?"1":"0");b+="&zoom="+(v.checked?"1":"0");b+="&fit="+(z.checked?"1":"0");
-b+="&resize="+(B.checked?"1":"0");b+="&x0="+Number(l.value);b+="&y0="+e;g.mathEnabled&&(b+="&math=1");x.checked?b+="&edit=_blank":y.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));k.value=b}else E.constructor==DriveFile||E.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=u.value?b+=encodeURIComponent(mxUtils.htmlEntities(u.value))+"&type=3":(b+=E.getHash().substring(1),b=E.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!=
-a&&(b+="&title="+encodeURIComponent(a)),""!=p.value&&(a=parseInt(p.value)+parseInt(l.value),b+="&height="+a),k.value=b):k.value=""}var c=document.createElement("div"),g=a.editor.graph,f=g.getGraphBounds(),m=g.view.scale,n=Math.floor(f.x/m-g.view.translate.x),e=Math.floor(f.y/m-g.view.translate.y);mxUtils.write(c,mxResources.get("googleGadget")+":");mxUtils.br(c);var k=document.createElement("input");k.setAttribute("type","text");k.style.marginBottom="8px";k.style.marginTop="2px";k.style.width="410px";
-c.appendChild(k);mxUtils.br(c);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};mxUtils.write(c,mxResources.get("top")+":");var l=document.createElement("input");l.setAttribute("type","text");l.setAttribute("size","4");l.style.marginRight="16px";l.style.marginLeft="4px";l.value=n;c.appendChild(l);mxUtils.write(c,mxResources.get("height")+":");var p=document.createElement("input");p.setAttribute("type","text");
-p.setAttribute("size","4");p.style.marginLeft="4px";p.value=Math.ceil(f.height/m);c.appendChild(p);mxUtils.br(c);f=document.createElement("hr");f.setAttribute("size","1");f.style.marginBottom="16px";f.style.marginTop="16px";c.appendChild(f);mxUtils.write(c,mxResources.get("publicDiagramUrl")+":");mxUtils.br(c);var u=document.createElement("input");u.setAttribute("type","text");u.setAttribute("size","28");u.style.marginBottom="8px";u.style.marginTop="2px";u.style.width="410px";u.value=d||"";c.appendChild(u);
+b+="&resize="+(B.checked?"1":"0");b+="&x0="+Number(n.value);b+="&y0="+e;g.mathEnabled&&(b+="&math=1");x.checked?b+="&edit=_blank":y.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));k.value=b}else E.constructor==DriveFile||E.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=u.value?b+=encodeURIComponent(mxUtils.htmlEntities(u.value))+"&type=3":(b+=E.getHash().substring(1),b=E.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!=
+a&&(b+="&title="+encodeURIComponent(a)),""!=p.value&&(a=parseInt(p.value)+parseInt(n.value),b+="&height="+a),k.value=b):k.value=""}var c=document.createElement("div"),g=a.editor.graph,f=g.getGraphBounds(),l=g.view.scale,m=Math.floor(f.x/l-g.view.translate.x),e=Math.floor(f.y/l-g.view.translate.y);mxUtils.write(c,mxResources.get("googleGadget")+":");mxUtils.br(c);var k=document.createElement("input");k.setAttribute("type","text");k.style.marginBottom="8px";k.style.marginTop="2px";k.style.width="410px";
+c.appendChild(k);mxUtils.br(c);this.init=function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)};mxUtils.write(c,mxResources.get("top")+":");var n=document.createElement("input");n.setAttribute("type","text");n.setAttribute("size","4");n.style.marginRight="16px";n.style.marginLeft="4px";n.value=m;c.appendChild(n);mxUtils.write(c,mxResources.get("height")+":");var p=document.createElement("input");p.setAttribute("type","text");
+p.setAttribute("size","4");p.style.marginLeft="4px";p.value=Math.ceil(f.height/l);c.appendChild(p);mxUtils.br(c);f=document.createElement("hr");f.setAttribute("size","1");f.style.marginBottom="16px";f.style.marginTop="16px";c.appendChild(f);mxUtils.write(c,mxResources.get("publicDiagramUrl")+":");mxUtils.br(c);var u=document.createElement("input");u.setAttribute("type","text");u.setAttribute("size","28");u.style.marginBottom="8px";u.style.marginTop="2px";u.style.width="410px";u.value=d||"";c.appendChild(u);
mxUtils.br(c);mxUtils.write(c,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.setAttribute("size","3");t.style.marginBottom="8px";t.style.marginLeft="4px";t.value="0";c.appendChild(t);mxUtils.br(c);var q=document.createElement("input");q.setAttribute("type","checkbox");q.setAttribute("checked","checked");q.defaultChecked=!0;q.style.marginLeft="16px";c.appendChild(q);mxUtils.write(c,mxResources.get("pan")+" ");var v=document.createElement("input");
v.setAttribute("type","checkbox");v.setAttribute("checked","checked");v.defaultChecked=!0;v.style.marginLeft="8px";c.appendChild(v);mxUtils.write(c,mxResources.get("zoom")+" ");var y=document.createElement("input");y.setAttribute("type","checkbox");y.style.marginLeft="8px";y.setAttribute("title",window.location.href);c.appendChild(y);mxUtils.write(c,mxResources.get("edit")+" ");var x=document.createElement("input");x.setAttribute("type","checkbox");x.style.marginLeft="8px";c.appendChild(x);mxUtils.write(c,
mxResources.get("asNew")+" ");mxUtils.br(c);var B=document.createElement("input");B.setAttribute("type","checkbox");B.setAttribute("checked","checked");B.defaultChecked=!0;B.style.marginLeft="16px";c.appendChild(B);mxUtils.write(c,mxResources.get("resize")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";c.appendChild(z);mxUtils.write(c,mxResources.get("fit")+" ");var A=document.createElement("input");A.setAttribute("type","checkbox");A.style.marginLeft=
-"8px";c.appendChild(A);mxUtils.write(c,mxResources.get("embed")+" ");var C=a.getBasenames().join(";"),E=a.getCurrentFile();mxEvent.addListener(q,"change",b);mxEvent.addListener(v,"change",b);mxEvent.addListener(B,"change",b);mxEvent.addListener(z,"change",b);mxEvent.addListener(y,"change",b);mxEvent.addListener(x,"change",b);mxEvent.addListener(A,"change",b);mxEvent.addListener(p,"change",b);mxEvent.addListener(l,"change",b);mxEvent.addListener(t,"change",b);mxEvent.addListener(u,"change",b);b();
-mxEvent.addListener(k,"click",function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)});f=document.createElement("div");f.style.paddingTop="12px";f.style.textAlign="right";m=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});m.className="geBtn gePrimaryBtn";f.appendChild(m);c.appendChild(f);this.container=c},CreateGraphDialog=function(a,d,b){var c=document.createElement("div");c.style.textAlign="right";this.init=
-function(){var d=document.createElement("div");d.style.position="relative";d.style.border="1px solid gray";d.style.width="100%";d.style.height="360px";d.style.overflow="hidden";d.style.marginBottom="16px";mxEvent.disableContextMenu(d);c.appendChild(d);var f=new Graph(d);f.setCellsCloneable(!0);f.setPanning(!0);f.setAllowDanglingEdges(!1);f.connectionHandler.select=!1;f.view.setTranslate(20,20);f.border=20;f.panningHandler.useLeftButtonForPanning=!0;var m="curved=1;";f.cellRenderer.installCellOverlayListeners=
+"8px";c.appendChild(A);mxUtils.write(c,mxResources.get("embed")+" ");var C=a.getBasenames().join(";"),E=a.getCurrentFile();mxEvent.addListener(q,"change",b);mxEvent.addListener(v,"change",b);mxEvent.addListener(B,"change",b);mxEvent.addListener(z,"change",b);mxEvent.addListener(y,"change",b);mxEvent.addListener(x,"change",b);mxEvent.addListener(A,"change",b);mxEvent.addListener(p,"change",b);mxEvent.addListener(n,"change",b);mxEvent.addListener(t,"change",b);mxEvent.addListener(u,"change",b);b();
+mxEvent.addListener(k,"click",function(){k.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?k.select():document.execCommand("selectAll",!1,null)});f=document.createElement("div");f.style.paddingTop="12px";f.style.textAlign="right";l=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});l.className="geBtn gePrimaryBtn";f.appendChild(l);c.appendChild(f);this.container=c},CreateGraphDialog=function(a,d,b){var c=document.createElement("div");c.style.textAlign="right";this.init=
+function(){var d=document.createElement("div");d.style.position="relative";d.style.border="1px solid gray";d.style.width="100%";d.style.height="360px";d.style.overflow="hidden";d.style.marginBottom="16px";mxEvent.disableContextMenu(d);c.appendChild(d);var f=new Graph(d);f.setCellsCloneable(!0);f.setPanning(!0);f.setAllowDanglingEdges(!1);f.connectionHandler.select=!1;f.view.setTranslate(20,20);f.border=20;f.panningHandler.useLeftButtonForPanning=!0;var l="curved=1;";f.cellRenderer.installCellOverlayListeners=
function(a,e,b){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(b.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(b){e.fireEvent(new mxEventObject("pointerdown","event",b,"state",a))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(b.node,"touchstart",function(b){e.fireEvent(new mxEventObject("pointerdown","event",b,"state",a))})};f.getAllConnectionConstraints=function(){return null};f.connectionHandler.marker.highlight.keepOnTop=
-!1;f.connectionHandler.createEdgeState=function(a){a=f.createEdge(null,null,null,null,null,m);return new mxCellState(this.graph.view,a,this.graph.getCellStyle(a))};var n=f.getDefaultParent(),e=mxUtils.bind(this,function(a){var b=new mxCellOverlay(this.connectImage,"Add outgoing");b.cursor="hand";b.addListener(mxEvent.CLICK,function(b,c){f.connectionHandler.reset();f.clearSelection();var d=f.getCellGeometry(a),k;p(function(){k=f.insertVertex(n,null,"Entry",d.x,d.y,80,30,"rounded=1;");e(k);f.view.refresh(k);
-f.insertEdge(n,null,"",a,k,m)},function(){f.scrollCellToVisible(k)})});b.addListener("pointerdown",function(a,e){var b=e.getProperty("event"),c=e.getProperty("state");f.popupMenuHandler.hideMenu();f.stopEditing(!1);var d=mxUtils.convertPoint(f.container,mxEvent.getClientX(b),mxEvent.getClientY(b));f.connectionHandler.start(c,d.x,d.y);f.isMouseDown=!0;f.isMouseTrigger=mxEvent.isMouseEvent(b);mxEvent.consume(b)});f.addCellOverlay(a,b)});f.getModel().beginUpdate();var k;try{k=f.insertVertex(n,null,"Start",
-0,0,80,30,"ellipse"),e(k)}finally{f.getModel().endUpdate()}var l;"horizontalTree"==b?(l=new mxCompactTreeLayout(f),l.edgeRouting=!1,l.levelDistance=30,m="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==b?(l=new mxCompactTreeLayout(f,!1),l.edgeRouting=!1,l.levelDistance=30,m="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==b?(l=new mxRadialTreeLayout(f,!1),l.edgeRouting=!1,l.levelDistance=80):"verticalFlow"==b?l=new mxHierarchicalLayout(f,mxConstants.DIRECTION_NORTH):"horizontalFlow"==
-b?l=new mxHierarchicalLayout(f,mxConstants.DIRECTION_WEST):"organic"==b?(l=new mxFastOrganicLayout(f,!1),l.forceConstant=80):"circle"==b&&(l=new mxCircleLayout(f));if(null!=l){var p=function(a,e){f.getModel().beginUpdate();try{null!=a&&a(),l.execute(f.getDefaultParent(),k)}catch(B){throw B;}finally{var b=new mxMorphing(f);b.addListener(mxEvent.DONE,mxUtils.bind(this,function(){f.getModel().endUpdate();null!=e&&e()}));b.startAnimation()}},u=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect=
+!1;f.connectionHandler.createEdgeState=function(a){a=f.createEdge(null,null,null,null,null,l);return new mxCellState(this.graph.view,a,this.graph.getCellStyle(a))};var m=f.getDefaultParent(),e=mxUtils.bind(this,function(a){var b=new mxCellOverlay(this.connectImage,"Add outgoing");b.cursor="hand";b.addListener(mxEvent.CLICK,function(b,c){f.connectionHandler.reset();f.clearSelection();var d=f.getCellGeometry(a),k;p(function(){k=f.insertVertex(m,null,"Entry",d.x,d.y,80,30,"rounded=1;");e(k);f.view.refresh(k);
+f.insertEdge(m,null,"",a,k,l)},function(){f.scrollCellToVisible(k)})});b.addListener("pointerdown",function(a,e){var b=e.getProperty("event"),c=e.getProperty("state");f.popupMenuHandler.hideMenu();f.stopEditing(!1);var d=mxUtils.convertPoint(f.container,mxEvent.getClientX(b),mxEvent.getClientY(b));f.connectionHandler.start(c,d.x,d.y);f.isMouseDown=!0;f.isMouseTrigger=mxEvent.isMouseEvent(b);mxEvent.consume(b)});f.addCellOverlay(a,b)});f.getModel().beginUpdate();var k;try{k=f.insertVertex(m,null,"Start",
+0,0,80,30,"ellipse"),e(k)}finally{f.getModel().endUpdate()}var n;"horizontalTree"==b?(n=new mxCompactTreeLayout(f),n.edgeRouting=!1,n.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==b?(n=new mxCompactTreeLayout(f,!1),n.edgeRouting=!1,n.levelDistance=30,l="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==b?(n=new mxRadialTreeLayout(f,!1),n.edgeRouting=!1,n.levelDistance=80):"verticalFlow"==b?n=new mxHierarchicalLayout(f,mxConstants.DIRECTION_NORTH):"horizontalFlow"==
+b?n=new mxHierarchicalLayout(f,mxConstants.DIRECTION_WEST):"organic"==b?(n=new mxFastOrganicLayout(f,!1),n.forceConstant=80):"circle"==b&&(n=new mxCircleLayout(f));if(null!=n){var p=function(a,e){f.getModel().beginUpdate();try{null!=a&&a(),n.execute(f.getDefaultParent(),k)}catch(B){throw B;}finally{var b=new mxMorphing(f);b.addListener(mxEvent.DONE,mxUtils.bind(this,function(){f.getModel().endUpdate();null!=e&&e()}));b.startAnimation()}},u=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect=
function(a,e,b,c,d){u.apply(this,arguments);p()};f.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);p()};f.connectionHandler.addListener(mxEvent.CONNECT,function(){p()})}var t=mxUtils.button(mxResources.get("close"),function(){a.confirm(mxResources.get("areYouSure"),function(){null!=d.parentNode&&(f.destroy(),d.parentNode.removeChild(d));a.hideDialog()})});t.className="geBtn";a.editor.cancelFirst&&c.appendChild(t);var q=mxUtils.button(mxResources.get("insert"),function(e){f.clearCellOverlays();
var b=f.getModel().getChildren(f.getDefaultParent());e=mxEvent.isAltDown(e)?a.editor.graph.getFreeInsertPoint():a.editor.graph.getCenterInsertPoint(f.getBoundingBoxFromGeometry(b,!0));b=a.editor.graph.importCells(b,e.x,e.y);e=a.editor.graph.view;var c=e.getBounds(b);c.x-=e.translate.x;c.y-=e.translate.y;a.editor.graph.scrollRectToVisible(c);a.editor.graph.setSelectionCells(b);null!=d.parentNode&&(f.destroy(),d.parentNode.removeChild(d));a.hideDialog()});c.appendChild(q);q.className="geBtn gePrimaryBtn";
a.editor.cancelFirst||c.appendChild(t)};this.container=c};
CreateGraphDialog.prototype.connectImage=new mxImage(mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQ3OTk0QjMyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQ3OTk0QjQyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjA0N0I2MjJENzExMUU1OEZBOEY0NUEyM0EyMUMzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNDc5OTRCMjJENzIxMUU1OEZBOEY0NUEyM0EyMUMzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjIf+MgAAATlSURBVHjanFZraFxFFD735u4ru3ls0yZG26ShgmJoKK1J2vhIYzBgRdtIURHyw1hQUH9IxIgI2h8iCEUF/1RRlNQYCsYfCTHVhiTtNolpZCEStqSC22xIsrs1bDfu7t37Gs/cO3Ozxs1DBw73zpk555vzmHNGgJ0NYatFgmNLYUHYUoHASMz5ijmgVLmxgfKCUiBxC4ACJAeSG8nb1dVVOTc3dyoSibwWDofPBIPBJzo7O8vpGtvjpDICGztxkciECpF2LS0tvZtOpwNkk5FKpcYXFxffwL1+JuPgllPj8nk1F6RoaGjoKCqZ5ApljZDZO4SMRA0SuG2QUJIQRV8HxMOM9vf3H0ZZH9Nhg20MMl2QkFwjIyNHWlpahtADnuUMwLcRHX5aNSBjCJYEsSSLUeLEbhGe3ytCmQtA1/XY+Pj46dbW1iDuyCJp9BC5ycBj4hoeHq5ra2sbw0Xn1ZgBZ+dVkA1Lc+6p0Ck2p0QS4Ox9EhwpEylYcmBg4LH29vYQLilIOt0u5FhDfevNZDI/u93uw6PLOrwTUtjxrbPYbhD42WgMrF8JmR894ICmCgnQjVe8Xu8pXEkzMJKbuo5oNPomBbm1ZsD7s2kwFA1JZ6QBUXWT1nmGNc/qoMgavDcrQzxjQGFh4aOYIJ0sFAXcEtui4uLiVjr5KpSBVFYDDZVrWUaKRRWSAYeK0fmKykgDXbVoNaPChRuyqdDv97czL5nXxQbq6empQmsaklkDBiNpSwFVrmr2P6UyicD5piI4f8wHh0oEm8/p4h8pyGiEWvVQd3e3nxtjAzU1NR2jP7NRBWQ8GbdEzzJAmc0V3RR4cI8Dvmwuhc8fKUFA0d6/ltHg5p+Kuaejo6OeY0jcNJ/PV00ZS0nFUoZRvvFS1bZFsKHCCQ2Pl8H0chY+C96B6ZUsrCQ1qKtwQVFRURW/QhIXMAzDPAZ6BgOr8tTa8dDxCmiYGApaJbJMxSzV+brE8pdgWkcpY5dbMF1AR9XH8/xu2ilef48bvn92n82ZwHh+8ssqTEXS9p7dHisiiURikd8PbpExNTU1UVNTA3V3Y7lC16n0gpB/NwpNcZjfa7dScC4Qh0kOQCwnlEgi3F/hMVl9fX0zvKrzSk2lfXjRhj0eT/2rvWG4+Pta3oJY7XfC3hInXAv/ldeFLx8shQ+eqQL0UAAz7ylkpej5eNZRVBWL6BU6ef14OYiY1oqyTtmsavr/5koaRucT1pzx+ZpL1+GV5nLutksUgIcmtwTRiuuVZXnU5XId7A2swJkfFsymRWC91hHg1Viw6x23+7vn9sPJ+j20BE1hCXqSWaNSQ8ScbknRZWxub1PGCw/fBV+c3AeijlUbY5bBjEqr9GuYZP4jP41WudGSC6erTRCqdGZm5i1WvXWeDHnbBCZGc2Nj4wBl/hZOwrmBBfgmlID1HmGJutHaF+tKoevp/XCgstDkjo2NtWKLuc6AVN4mNjY+s1XQxoenOoFuDPHGtnRbJj9ej5GvL0dI7+giuRyMk1giazc+DP6vgUDgOJVlOv7R+PJ12QIeL6SyeDz+Kfp8ZrNWjgDTsVjsQ7qXyTjztXJhm9ePxFLfMTg4eG9tbe1RTP9KFFYQfHliYmIS69kCC7jKYmKwxxD5P88tkVkqbPPcIps9t4T/+HjcuJ/s5BFJgf4WYABCtxGuxIZ90gAAAABJRU5ErkJggg==":IMAGE_PATH+
"/handle-connect.png",26,26);
-var BackgroundImageDialog=function(a,d,b){var c=document.createElement("div");c.style.whiteSpace="nowrap";var g=document.createElement("h2");mxUtils.write(g,mxResources.get("backgroundImage"));g.style.marginTop="0px";c.appendChild(g);mxUtils.write(c,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(c);var f=document.createElement("input");f.setAttribute("type","text");f.style.marginTop="4px";f.style.marginBottom="4px";f.style.width="350px";f.value=null!=b?b.src:"";var m=!1,n=!1,
-e=function(e,b){null!=e&&n||(f.value=mxUtils.trim(f.value),m||""==f.value||a.isOffline()?(k.value="",l.value="",null!=b&&b("")):a.loadImage(f.value,function(a){k.value=a.width;l.value=a.height;null!=b&&b(f.value)},function(){a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));k.value="";l.value="";null!=b&&b(null)}))};this.init=function(){f.focus();if(Graph.fileSupport){f.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=c.parentNode,d=null;
+var BackgroundImageDialog=function(a,d,b){var c=document.createElement("div");c.style.whiteSpace="nowrap";var g=document.createElement("h2");mxUtils.write(g,mxResources.get("backgroundImage"));g.style.marginTop="0px";c.appendChild(g);mxUtils.write(c,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(c);var f=document.createElement("input");f.setAttribute("type","text");f.style.marginTop="4px";f.style.marginBottom="4px";f.style.width="350px";f.value=null!=b?b.src:"";var l=!1,m=!1,
+e=function(e,b){null!=e&&m||(f.value=mxUtils.trim(f.value),l||""==f.value||a.isOffline()?(k.value="",n.value="",null!=b&&b("")):a.loadImage(f.value,function(a){k.value=a.width;n.value=a.height;null!=b&&b(f.value)},function(){a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));k.value="";n.value="";null!=b&&b(null)}))};this.init=function(){f.focus();if(Graph.fileSupport){f.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=c.parentNode,d=null;
mxEvent.addListener(b,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(e){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=a.highlightElement(b));e.stopPropagation();e.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxBackgroundSize,
-function(a,b,c,d,k,l){f.value=a;e()},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var e=0;e<a.length;e++)a[e]()},!0,a.maxBackgroundBytes,a.maxBackgroundBytes,!0);else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)&&(f.value=decodeURIComponent(c),e())}b.stopPropagation();b.preventDefault()}),!1)}};c.appendChild(f);mxUtils.br(c);mxUtils.br(c);mxUtils.write(c,mxResources.get("width")+
-":");var k=document.createElement("input");k.setAttribute("type","text");k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="16px";k.value=null!=b?b.width:"";c.appendChild(k);mxUtils.write(c,mxResources.get("height")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.width="60px";l.style.marginLeft="4px";l.style.marginRight="16px";l.value=null!=b?b.height:"";c.appendChild(l);b=mxUtils.button(mxResources.get("reset"),function(){f.value="";k.value="";l.value=
-"";m=!1});mxEvent.addGestureListeners(b,function(){m=!0});b.className="geBtn";b.width="100";c.appendChild(b);mxUtils.br(c);mxEvent.addListener(f,"change",e);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(f.value=a.url,e()));f.focus()};b=document.createElement("div");b.style.marginTop="40px";b.style.textAlign="right";g=mxUtils.button(mxResources.get("cancel"),function(){m=!0;a.hideDialog()});
-g.className="geBtn";a.editor.cancelFirst&&b.appendChild(g);applyBtn=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();e(null,function(a){d(""!=a&&null!=a?new mxImage(f.value,k.value,l.value):null,null==a)})});mxEvent.addGestureListeners(applyBtn,function(){n=!0});applyBtn.className="geBtn gePrimaryBtn";b.appendChild(applyBtn);a.editor.cancelFirst||b.appendChild(g);c.appendChild(b);this.container=c},ParseDialog=function(a,d,b){function c(e,b,c){var d=e.split("\n");if("plantUmlPng"==
-b||"plantUmlSvg"==b||"plantUmlTxt"==b){if(a.spinner.spin(document.body,mxResources.get("inserting"))){var k=function(e,b,d,k,g){f=mxEvent.isAltDown(c)?f:l.getCenterInsertPoint(new mxRectangle(0,0,k,g));var p=null;l.getModel().beginUpdate();try{p="txt"==b?a.insertAsPreText(d,f.x,f.y):l.insertVertex(null,null,null,f.x,f.y,k,g,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(d)+";"),l.setAttributeForCell(p,"plantUmlData",JSON.stringify({data:e,format:b},null,
-2))}finally{l.getModel().endUpdate()}null!=p&&(l.setSelectionCell(p),l.scrollCellToVisible(p))},l=a.editor.graph,g="plantUmlTxt"==b?"txt":"plantUmlPng"==b?"png":"svg";"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml"==e&&"svg"==g?window.setTimeout(function(){a.spinner.stop();k(e,g,"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U2NyaXB0VHlwZT0iYXBwbGljYXRpb24vZWNtYXNjcmlwdCIgY29udGVudFN0eWxlVHlwZT0idGV4dC9jc3MiIGhlaWdodD0iMjEycHgiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHN0eWxlPSJ3aWR0aDoyOTVweDtoZWlnaHQ6MjEycHg7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyOTUgMjEyIiB3aWR0aD0iMjk1cHgiIHpvb21BbmRQYW49Im1hZ25pZnkiPjxkZWZzLz48Zz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogNS4wLDUuMDsiIHgxPSIzMSIgeDI9IjMxIiB5MT0iMzQuNDg4MyIgeTI9IjE3MS43MzA1Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDUuMCw1LjA7IiB4MT0iMjY0LjUiIHgyPSIyNjQuNSIgeTE9IjM0LjQ4ODMiIHkyPSIxNzEuNzMwNSIvPjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIzMyIgeD0iMTUiIHk9IjIzLjUzNTIiPkFsaWNlPC90ZXh0PjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjE3MC43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMzMiIHg9IjE1IiB5PSIxOTEuMjY1NiI+QWxpY2U8L3RleHQ+PHJlY3QgZmlsbD0iI0ZFRkVDRSIgaGVpZ2h0PSIzMC40ODgzIiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuNTsiIHdpZHRoPSI0MCIgeD0iMjQ0LjUiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjIzLjUzNTIiPkJvYjwvdGV4dD48cmVjdCBmaWxsPSIjRkVGRUNFIiBoZWlnaHQ9IjMwLjQ4ODMiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS41OyIgd2lkdGg9IjQwIiB4PSIyNDQuNSIgeT0iMTcwLjczMDUiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjE5MS4yNjU2Ij5Cb2I8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSIyNTIuNSw2MS43OTg4LDI2Mi41LDY1Ljc5ODgsMjUyLjUsNjkuNzk4OCwyNTYuNSw2NS43OTg4IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiIHgxPSIzMS41IiB4Mj0iMjU4LjUiIHkxPSI2NS43OTg4IiB5Mj0iNjUuNzk4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiIHRleHRMZW5ndGg9IjE0NyIgeD0iMzguNSIgeT0iNjEuMDU2NiI+QXV0aGVudGljYXRpb24gUmVxdWVzdDwvdGV4dD48cG9seWdvbiBmaWxsPSIjQTgwMDM2IiBwb2ludHM9IjQyLjUsOTEuMTA5NCwzMi41LDk1LjEwOTQsNDIuNSw5OS4xMDk0LDM4LjUsOTUuMTA5NCIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDIuMCwyLjA7IiB4MT0iMzYuNSIgeDI9IjI2My41IiB5MT0iOTUuMTA5NCIgeTI9Ijk1LjEwOTQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxNTciIHg9IjQ4LjUiIHk9IjkwLjM2NzIiPkF1dGhlbnRpY2F0aW9uIFJlc3BvbnNlPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiNBODAwMzYiIHBvaW50cz0iMjUyLjUsMTIwLjQxOTksMjYyLjUsMTI0LjQxOTksMjUyLjUsMTI4LjQxOTksMjU2LjUsMTI0LjQxOTkiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIgeDE9IjMxLjUiIHgyPSIyNTguNSIgeTE9IjEyNC40MTk5IiB5Mj0iMTI0LjQxOTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxOTkiIHg9IjM4LjUiIHk9IjExOS42Nzc3Ij5Bbm90aGVyIGF1dGhlbnRpY2F0aW9uIFJlcXVlc3Q8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSI0Mi41LDE0OS43MzA1LDMyLjUsMTUzLjczMDUsNDIuNSwxNTcuNzMwNSwzOC41LDE1My43MzA1IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogMi4wLDIuMDsiIHgxPSIzNi41IiB4Mj0iMjYzLjUiIHkxPSIxNTMuNzMwNSIgeTI9IjE1My43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMjA5IiB4PSI0OC41IiB5PSIxNDguOTg4MyI+QW5vdGhlciBhdXRoZW50aWNhdGlvbiBSZXNwb25zZTwvdGV4dD48IS0tTUQ1PVs3ZjNlNGQwYzkwMWVmZGJjNTdlYjQ0MjQ5YTNiODE5N10KQHN0YXJ0dW1sDQpza2lucGFyYW0gc2hhZG93aW5nIGZhbHNlDQpBbGljZSAtPiBCb2I6IEF1dGhlbnRpY2F0aW9uIFJlcXVlc3QNCkJvYiAtIC0+IEFsaWNlOiBBdXRoZW50aWNhdGlvbiBSZXNwb25zZQ0KDQpBbGljZSAtPiBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVxdWVzdA0KQWxpY2UgPC0gLSBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVzcG9uc2UNCkBlbmR1bWwNCgpQbGFudFVNTCB2ZXJzaW9uIDEuMjAyMC4wMihTdW4gTWFyIDAxIDA0OjIyOjA3IENTVCAyMDIwKQooTUlUIHNvdXJjZSBkaXN0cmlidXRpb24pCkphdmEgUnVudGltZTogT3BlbkpESyBSdW50aW1lIEVudmlyb25tZW50CkpWTTogT3BlbkpESyA2NC1CaXQgU2VydmVyIFZNCkphdmEgVmVyc2lvbjogMTIrMzMKT3BlcmF0aW5nIFN5c3RlbTogTWFjIE9TIFgKRGVmYXVsdCBFbmNvZGluZzogVVRGLTgKTGFuZ3VhZ2U6IGVuCkNvdW50cnk6IFVTCi0tPjwvZz48L3N2Zz4=",
-295,212)},200):a.generatePlantUmlImage(e,g,function(b,c,d){a.spinner.stop();k(e,g,b,c,d)},function(e){a.handleError(e)})}}else if("mermaid"==b)a.spinner.spin(document.body,mxResources.get("inserting"))&&(l=a.editor.graph,a.generateMermaidImage(e,g,function(b,d,k){f=mxEvent.isAltDown(c)?f:l.getCenterInsertPoint(new mxRectangle(0,0,d,k));a.spinner.stop();var g=null;l.getModel().beginUpdate();try{g=l.insertVertex(null,null,null,f.x,f.y,d,k,"shape=image;noLabel=1;verticalAlign=top;imageAspect=1;image="+
-b+";"),l.setAttributeForCell(g,"mermaidData",JSON.stringify({data:e,config:EditorUi.defaultMermaidConfig},null,2))}finally{l.getModel().endUpdate()}null!=g&&(l.setSelectionCell(g),l.scrollCellToVisible(g))},function(e){a.handleError(e)}));else if("table"==b){var p=null,t=[],u=0;for(b=0;b<d.length;b++){var q=mxUtils.trim(d[b]);if("create table"==q.substring(0,12).toLowerCase())q=mxUtils.trim(q.substring(12)),"("==q.charAt(q.length-1)&&(q=mxUtils.trim(q.substring(0,q.length-1))),p=new mxCell(q,new mxGeometry(u,
-0,160,40),"shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;"),p.vertex=!0,t.push(p),q=a.editor.graph.getPreferredSizeForCell(n),null!=q&&(p.geometry.width=q.width+10);else if(null!=p&&")"==q.charAt(0))u+=p.geometry.width+40,p=null;else if("("!=q&&null!=p&&(q=q.substring(0,","==q.charAt(q.length-1)?q.length-1:q.length),"primary key"!=q.substring(0,11).toLowerCase())){var m=q.toLowerCase().indexOf("primary key"),
-q=q.replace(/primary key/i,""),n=new mxCell("",new mxGeometry(0,0,160,30),"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom="+(0<m?"1":"0")+";");n.vertex=!0;var H=new mxCell(0<m?"PK":"",new mxGeometry(0,0,30,30),"shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;"+(0<m?"fontStyle=1;":""));H.vertex=!0;n.insert(H);q=new mxCell(q,new mxGeometry(30,
-0,130,30),"shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;"+(0<m?"fontStyle=5;":""));q.vertex=!0;n.insert(q);q=a.editor.graph.getPreferredSizeForCell(q);null!=q&&p.geometry.width<q.width+30&&(p.geometry.width=Math.min(320,Math.max(p.geometry.width,q.width+30)));p.insert(n);p.geometry.height+=30}}0<t.length&&(l=a.editor.graph,f=mxEvent.isAltDown(c)?f:l.getCenterInsertPoint(l.getBoundingBoxFromGeometry(t,!0)),l.setSelectionCells(l.importCells(t,
-f.x,f.y)),l.scrollCellToVisible(l.getSelectionCell()))}else if("list"==b){if(0<d.length){l=a.editor.graph;n=null;t=[];for(b=p=0;b<d.length;b++)";"!=d[b].charAt(0)&&(0==d[b].length?n=null:null==n?(n=new mxCell(d[b],new mxGeometry(p,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"),n.vertex=!0,t.push(n),q=l.getPreferredSizeForCell(n),null!=q&&n.geometry.width<q.width+10&&(n.geometry.width=
-q.width+10),p+=n.geometry.width+40):"--"==d[b]?(q=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;"),q.vertex=!0,n.geometry.height+=q.geometry.height,n.insert(q)):0<d[b].length&&(u=new mxCell(d[b],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;"),
-u.vertex=!0,q=l.getPreferredSizeForCell(u),null!=q&&u.geometry.width<q.width&&(u.geometry.width=q.width),n.geometry.width=Math.max(n.geometry.width,u.geometry.width),n.geometry.height+=u.geometry.height,n.insert(u)));if(0<t.length){f=mxEvent.isAltDown(c)?f:l.getCenterInsertPoint(l.getBoundingBoxFromGeometry(t,!0));l.getModel().beginUpdate();try{t=l.importCells(t,f.x,f.y);q=[];for(b=0;b<t.length;b++)q.push(t[b]),q=q.concat(t[b].children);l.fireEvent(new mxEventObject("cellsInserted","cells",q))}finally{l.getModel().endUpdate()}l.setSelectionCells(t);
-l.scrollCellToVisible(l.getSelectionCell())}}}else{var n=function(a){var e=I[a];null==e&&(e=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),e.vertex=!0,I[a]=e,t.push(e));return e},I={},t=[];for(b=0;b<d.length;b++)if(";"!=d[b].charAt(0)){var J=d[b].split("->");2<=J.length&&(m=n(J[0]),H=n(J[J.length-1]),J=new mxCell(2<J.length?J[1]:"",new mxGeometry),J.edge=!0,m.insertEdge(J,!0),H.insertEdge(J,!1),t.push(J))}if(0<t.length){d=document.createElement("div");d.style.visibility="hidden";
-document.body.appendChild(d);l=new Graph(d);l.getModel().beginUpdate();try{t=l.importCells(t);for(b=0;b<t.length;b++)l.getModel().isVertex(t[b])&&(q=l.getPreferredSizeForCell(t[b]),t[b].geometry.width=Math.max(t[b].geometry.width,q.width),t[b].geometry.height=Math.max(t[b].geometry.height,q.height));p=new mxFastOrganicLayout(l);p.disableEdgeStyle=!1;p.forceConstant=120;p.execute(l.getDefaultParent());u=new mxParallelEdgeLayout(l);u.spacing=20;u.execute(l.getDefaultParent())}finally{l.getModel().endUpdate()}l.clearCellOverlays();
-q=[];a.editor.graph.getModel().beginUpdate();try{t=l.getModel().getChildren(l.getDefaultParent()),f=mxEvent.isAltDown(c)?f:a.editor.graph.getCenterInsertPoint(l.getBoundingBoxFromGeometry(t,!0)),q=a.editor.graph.importCells(t,f.x,f.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",q))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(q);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());l.destroy();d.parentNode.removeChild(d)}}}function g(){return"list"==
-n.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean\n\nAddress\n-street: String\n-city: String\n-state: String":"mermaid"==n.value?"graph TD;\n A--\x3eB;\n A--\x3eC;\n B--\x3eD;\n C--\x3eD;":"table"==n.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":
-"plantUmlPng"==n.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml":"plantUmlSvg"==n.value||"plantUmlTxt"==n.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml":
-";Example:\na->b\nb->edge label->c\nc->a\n"}var f=a.editor.graph.getFreeInsertPoint();d=document.createElement("div");d.style.textAlign="right";var m=document.createElement("textarea");m.style.resize="none";m.style.width="100%";m.style.height="354px";m.style.marginBottom="16px";var n=document.createElement("select");if("formatSql"==b||"mermaid"==b)n.style.display="none";var e=document.createElement("option");e.setAttribute("value","list");mxUtils.write(e,mxResources.get("list"));"plantUml"!=b&&n.appendChild(e);
-null!=b&&"fromText"!=b||e.setAttribute("selected","selected");e=document.createElement("option");e.setAttribute("value","table");mxUtils.write(e,mxResources.get("formatSql"));"formatSql"==b&&(n.appendChild(e),e.setAttribute("selected","selected"));e=document.createElement("option");e.setAttribute("value","mermaid");mxUtils.write(e,mxResources.get("formatSql"));"mermaid"==b&&(n.appendChild(e),e.setAttribute("selected","selected"));e=document.createElement("option");e.setAttribute("value","diagram");
-mxUtils.write(e,mxResources.get("diagram"));"plantUml"!=b&&n.appendChild(e);e=document.createElement("option");e.setAttribute("value","plantUmlSvg");mxUtils.write(e,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==b&&e.setAttribute("selected","selected");var k=document.createElement("option");k.setAttribute("value","plantUmlPng");mxUtils.write(k,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+")");var l=document.createElement("option");l.setAttribute("value",
-"plantUmlTxt");mxUtils.write(l,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==b&&(n.appendChild(e),n.appendChild(k),n.appendChild(l));var p=g();m.value=p;d.appendChild(m);this.init=function(){m.focus()};Graph.fileSupport&&(m.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),m.addEventListener("drop",function(a){a.stopPropagation();a.preventDefault();if(0<a.dataTransfer.files.length){a=
-a.dataTransfer.files[0];var e=new FileReader;e.onload=function(a){m.value=a.target.result};e.readAsText(a)}},!1));d.appendChild(n);mxEvent.addListener(n,"change",function(){var a=g();if(0==m.value.length||m.value==p)p=a,m.value=p});a.isOffline()||"mermaid"!=b&&"plantUml"!=b||(e=mxUtils.button(mxResources.get("help"),function(){a.openLink("mermaid"==b?"https://mermaid-js.github.io/mermaid/#/":"https://plantuml.com/")}),e.className="geBtn",d.appendChild(e));e=mxUtils.button(mxResources.get("close"),
-function(){m.value==p?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});e.className="geBtn";a.editor.cancelFirst&&d.appendChild(e);k=mxUtils.button(mxResources.get("insert"),function(e){a.hideDialog();c(m.value,n.value,e)});d.appendChild(k);k.className="geBtn gePrimaryBtn";a.editor.cancelFirst||d.appendChild(e);this.container=d},NewDialog=function(a,d,b,c,g,f,m,n,e,k,l,p,u,t,q,v,y){function x(){var a=!0;if(null!=ia)for(;I<ia.length&&(a||0!=mxUtils.mod(I,30));){var e=
+function(a,b,c,d,k,n){f.value=a;e()},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var e=0;e<a.length;e++)a[e]()},!0,a.maxBackgroundBytes,a.maxBackgroundBytes,!0);else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)&&(f.value=decodeURIComponent(c),e())}b.stopPropagation();b.preventDefault()}),!1)}};c.appendChild(f);mxUtils.br(c);mxUtils.br(c);mxUtils.write(c,mxResources.get("width")+
+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="16px";k.value=null!=b?b.width:"";c.appendChild(k);mxUtils.write(c,mxResources.get("height")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="16px";n.value=null!=b?b.height:"";c.appendChild(n);b=mxUtils.button(mxResources.get("reset"),function(){f.value="";k.value="";n.value=
+"";l=!1});mxEvent.addGestureListeners(b,function(){l=!0});b.className="geBtn";b.width="100";c.appendChild(b);mxUtils.br(c);mxEvent.addListener(f,"change",e);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(f.value=a.url,e()));f.focus()};b=document.createElement("div");b.style.marginTop="40px";b.style.textAlign="right";g=mxUtils.button(mxResources.get("cancel"),function(){l=!0;a.hideDialog()});
+g.className="geBtn";a.editor.cancelFirst&&b.appendChild(g);applyBtn=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();e(null,function(a){d(""!=a&&null!=a?new mxImage(f.value,k.value,n.value):null,null==a)})});mxEvent.addGestureListeners(applyBtn,function(){m=!0});applyBtn.className="geBtn gePrimaryBtn";b.appendChild(applyBtn);a.editor.cancelFirst||b.appendChild(g);c.appendChild(b);this.container=c},ParseDialog=function(a,d,b){function c(e,b,c){var d=e.split("\n");if("plantUmlPng"==
+b||"plantUmlSvg"==b||"plantUmlTxt"==b){if(a.spinner.spin(document.body,mxResources.get("inserting"))){var k=function(e,b,d,k,g){f=mxEvent.isAltDown(c)?f:n.getCenterInsertPoint(new mxRectangle(0,0,k,g));var p=null;n.getModel().beginUpdate();try{p="txt"==b?a.insertAsPreText(d,f.x,f.y):n.insertVertex(null,null,null,f.x,f.y,k,g,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(d)+";"),n.setAttributeForCell(p,"plantUmlData",JSON.stringify({data:e,format:b},null,
+2))}finally{n.getModel().endUpdate()}null!=p&&(n.setSelectionCell(p),n.scrollCellToVisible(p))},n=a.editor.graph,g="plantUmlTxt"==b?"txt":"plantUmlPng"==b?"png":"svg";"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml"==e&&"svg"==g?window.setTimeout(function(){a.spinner.stop();k(e,g,"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U2NyaXB0VHlwZT0iYXBwbGljYXRpb24vZWNtYXNjcmlwdCIgY29udGVudFN0eWxlVHlwZT0idGV4dC9jc3MiIGhlaWdodD0iMjEycHgiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHN0eWxlPSJ3aWR0aDoyOTVweDtoZWlnaHQ6MjEycHg7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyOTUgMjEyIiB3aWR0aD0iMjk1cHgiIHpvb21BbmRQYW49Im1hZ25pZnkiPjxkZWZzLz48Zz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogNS4wLDUuMDsiIHgxPSIzMSIgeDI9IjMxIiB5MT0iMzQuNDg4MyIgeTI9IjE3MS43MzA1Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDUuMCw1LjA7IiB4MT0iMjY0LjUiIHgyPSIyNjQuNSIgeTE9IjM0LjQ4ODMiIHkyPSIxNzEuNzMwNSIvPjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIzMyIgeD0iMTUiIHk9IjIzLjUzNTIiPkFsaWNlPC90ZXh0PjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjE3MC43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMzMiIHg9IjE1IiB5PSIxOTEuMjY1NiI+QWxpY2U8L3RleHQ+PHJlY3QgZmlsbD0iI0ZFRkVDRSIgaGVpZ2h0PSIzMC40ODgzIiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuNTsiIHdpZHRoPSI0MCIgeD0iMjQ0LjUiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjIzLjUzNTIiPkJvYjwvdGV4dD48cmVjdCBmaWxsPSIjRkVGRUNFIiBoZWlnaHQ9IjMwLjQ4ODMiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS41OyIgd2lkdGg9IjQwIiB4PSIyNDQuNSIgeT0iMTcwLjczMDUiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjE5MS4yNjU2Ij5Cb2I8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSIyNTIuNSw2MS43OTg4LDI2Mi41LDY1Ljc5ODgsMjUyLjUsNjkuNzk4OCwyNTYuNSw2NS43OTg4IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiIHgxPSIzMS41IiB4Mj0iMjU4LjUiIHkxPSI2NS43OTg4IiB5Mj0iNjUuNzk4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiIHRleHRMZW5ndGg9IjE0NyIgeD0iMzguNSIgeT0iNjEuMDU2NiI+QXV0aGVudGljYXRpb24gUmVxdWVzdDwvdGV4dD48cG9seWdvbiBmaWxsPSIjQTgwMDM2IiBwb2ludHM9IjQyLjUsOTEuMTA5NCwzMi41LDk1LjEwOTQsNDIuNSw5OS4xMDk0LDM4LjUsOTUuMTA5NCIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDIuMCwyLjA7IiB4MT0iMzYuNSIgeDI9IjI2My41IiB5MT0iOTUuMTA5NCIgeTI9Ijk1LjEwOTQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxNTciIHg9IjQ4LjUiIHk9IjkwLjM2NzIiPkF1dGhlbnRpY2F0aW9uIFJlc3BvbnNlPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiNBODAwMzYiIHBvaW50cz0iMjUyLjUsMTIwLjQxOTksMjYyLjUsMTI0LjQxOTksMjUyLjUsMTI4LjQxOTksMjU2LjUsMTI0LjQxOTkiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIgeDE9IjMxLjUiIHgyPSIyNTguNSIgeTE9IjEyNC40MTk5IiB5Mj0iMTI0LjQxOTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxOTkiIHg9IjM4LjUiIHk9IjExOS42Nzc3Ij5Bbm90aGVyIGF1dGhlbnRpY2F0aW9uIFJlcXVlc3Q8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSI0Mi41LDE0OS43MzA1LDMyLjUsMTUzLjczMDUsNDIuNSwxNTcuNzMwNSwzOC41LDE1My43MzA1IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogMi4wLDIuMDsiIHgxPSIzNi41IiB4Mj0iMjYzLjUiIHkxPSIxNTMuNzMwNSIgeTI9IjE1My43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMjA5IiB4PSI0OC41IiB5PSIxNDguOTg4MyI+QW5vdGhlciBhdXRoZW50aWNhdGlvbiBSZXNwb25zZTwvdGV4dD48IS0tTUQ1PVs3ZjNlNGQwYzkwMWVmZGJjNTdlYjQ0MjQ5YTNiODE5N10KQHN0YXJ0dW1sDQpza2lucGFyYW0gc2hhZG93aW5nIGZhbHNlDQpBbGljZSAtPiBCb2I6IEF1dGhlbnRpY2F0aW9uIFJlcXVlc3QNCkJvYiAtIC0+IEFsaWNlOiBBdXRoZW50aWNhdGlvbiBSZXNwb25zZQ0KDQpBbGljZSAtPiBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVxdWVzdA0KQWxpY2UgPC0gLSBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVzcG9uc2UNCkBlbmR1bWwNCgpQbGFudFVNTCB2ZXJzaW9uIDEuMjAyMC4wMihTdW4gTWFyIDAxIDA0OjIyOjA3IENTVCAyMDIwKQooTUlUIHNvdXJjZSBkaXN0cmlidXRpb24pCkphdmEgUnVudGltZTogT3BlbkpESyBSdW50aW1lIEVudmlyb25tZW50CkpWTTogT3BlbkpESyA2NC1CaXQgU2VydmVyIFZNCkphdmEgVmVyc2lvbjogMTIrMzMKT3BlcmF0aW5nIFN5c3RlbTogTWFjIE9TIFgKRGVmYXVsdCBFbmNvZGluZzogVVRGLTgKTGFuZ3VhZ2U6IGVuCkNvdW50cnk6IFVTCi0tPjwvZz48L3N2Zz4=",
+295,212)},200):a.generatePlantUmlImage(e,g,function(b,c,d){a.spinner.stop();k(e,g,b,c,d)},function(e){a.handleError(e)})}}else if("mermaid"==b)a.spinner.spin(document.body,mxResources.get("inserting"))&&(n=a.editor.graph,a.generateMermaidImage(e,g,function(b,d,k){f=mxEvent.isAltDown(c)?f:n.getCenterInsertPoint(new mxRectangle(0,0,d,k));a.spinner.stop();var g=null;n.getModel().beginUpdate();try{g=n.insertVertex(null,null,null,f.x,f.y,d,k,"shape=image;noLabel=1;verticalAlign=top;imageAspect=1;image="+
+b+";"),n.setAttributeForCell(g,"mermaidData",JSON.stringify({data:e,config:EditorUi.defaultMermaidConfig},null,2))}finally{n.getModel().endUpdate()}null!=g&&(n.setSelectionCell(g),n.scrollCellToVisible(g))},function(e){a.handleError(e)}));else if("table"==b){var p=null,t=[],u=0;for(b=0;b<d.length;b++){var q=mxUtils.trim(d[b]);if("create table"==q.substring(0,12).toLowerCase())q=mxUtils.trim(q.substring(12)),"("==q.charAt(q.length-1)&&(q=mxUtils.trim(q.substring(0,q.length-1))),p=new mxCell(q,new mxGeometry(u,
+0,160,40),"shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;"),p.vertex=!0,t.push(p),q=a.editor.graph.getPreferredSizeForCell(m),null!=q&&(p.geometry.width=q.width+10);else if(null!=p&&")"==q.charAt(0))u+=p.geometry.width+40,p=null;else if("("!=q&&null!=p&&(q=q.substring(0,","==q.charAt(q.length-1)?q.length-1:q.length),"primary key"!=q.substring(0,11).toLowerCase())){var l=q.toLowerCase().indexOf("primary key"),
+q=q.replace(/primary key/i,""),m=new mxCell("",new mxGeometry(0,0,160,30),"shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom="+(0<l?"1":"0")+";");m.vertex=!0;var H=new mxCell(0<l?"PK":"",new mxGeometry(0,0,30,30),"shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;"+(0<l?"fontStyle=1;":""));H.vertex=!0;m.insert(H);q=new mxCell(q,new mxGeometry(30,
+0,130,30),"shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;"+(0<l?"fontStyle=5;":""));q.vertex=!0;m.insert(q);q=a.editor.graph.getPreferredSizeForCell(q);null!=q&&p.geometry.width<q.width+30&&(p.geometry.width=Math.min(320,Math.max(p.geometry.width,q.width+30)));p.insert(m);p.geometry.height+=30}}0<t.length&&(n=a.editor.graph,f=mxEvent.isAltDown(c)?f:n.getCenterInsertPoint(n.getBoundingBoxFromGeometry(t,!0)),n.setSelectionCells(n.importCells(t,
+f.x,f.y)),n.scrollCellToVisible(n.getSelectionCell()))}else if("list"==b){if(0<d.length){n=a.editor.graph;m=null;t=[];for(b=p=0;b<d.length;b++)";"!=d[b].charAt(0)&&(0==d[b].length?m=null:null==m?(m=new mxCell(d[b],new mxGeometry(p,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"),m.vertex=!0,t.push(m),q=n.getPreferredSizeForCell(m),null!=q&&m.geometry.width<q.width+10&&(m.geometry.width=
+q.width+10),p+=m.geometry.width+40):"--"==d[b]?(q=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;"),q.vertex=!0,m.geometry.height+=q.geometry.height,m.insert(q)):0<d[b].length&&(u=new mxCell(d[b],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;"),
+u.vertex=!0,q=n.getPreferredSizeForCell(u),null!=q&&u.geometry.width<q.width&&(u.geometry.width=q.width),m.geometry.width=Math.max(m.geometry.width,u.geometry.width),m.geometry.height+=u.geometry.height,m.insert(u)));if(0<t.length){f=mxEvent.isAltDown(c)?f:n.getCenterInsertPoint(n.getBoundingBoxFromGeometry(t,!0));n.getModel().beginUpdate();try{t=n.importCells(t,f.x,f.y);q=[];for(b=0;b<t.length;b++)q.push(t[b]),q=q.concat(t[b].children);n.fireEvent(new mxEventObject("cellsInserted","cells",q))}finally{n.getModel().endUpdate()}n.setSelectionCells(t);
+n.scrollCellToVisible(n.getSelectionCell())}}}else{var m=function(a){var e=I[a];null==e&&(e=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),e.vertex=!0,I[a]=e,t.push(e));return e},I={},t=[];for(b=0;b<d.length;b++)if(";"!=d[b].charAt(0)){var J=d[b].split("->");2<=J.length&&(l=m(J[0]),H=m(J[J.length-1]),J=new mxCell(2<J.length?J[1]:"",new mxGeometry),J.edge=!0,l.insertEdge(J,!0),H.insertEdge(J,!1),t.push(J))}if(0<t.length){d=document.createElement("div");d.style.visibility="hidden";
+document.body.appendChild(d);n=new Graph(d);n.getModel().beginUpdate();try{t=n.importCells(t);for(b=0;b<t.length;b++)n.getModel().isVertex(t[b])&&(q=n.getPreferredSizeForCell(t[b]),t[b].geometry.width=Math.max(t[b].geometry.width,q.width),t[b].geometry.height=Math.max(t[b].geometry.height,q.height));p=new mxFastOrganicLayout(n);p.disableEdgeStyle=!1;p.forceConstant=120;p.execute(n.getDefaultParent());u=new mxParallelEdgeLayout(n);u.spacing=20;u.execute(n.getDefaultParent())}finally{n.getModel().endUpdate()}n.clearCellOverlays();
+q=[];a.editor.graph.getModel().beginUpdate();try{t=n.getModel().getChildren(n.getDefaultParent()),f=mxEvent.isAltDown(c)?f:a.editor.graph.getCenterInsertPoint(n.getBoundingBoxFromGeometry(t,!0)),q=a.editor.graph.importCells(t,f.x,f.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",q))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(q);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());n.destroy();d.parentNode.removeChild(d)}}}function g(){return"list"==
+m.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean\n\nAddress\n-street: String\n-city: String\n-state: String":"mermaid"==m.value?"graph TD;\n A--\x3eB;\n A--\x3eC;\n B--\x3eD;\n C--\x3eD;":"table"==m.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":
+"plantUmlPng"==m.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml":"plantUmlSvg"==m.value||"plantUmlTxt"==m.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml":
+";Example:\na->b\nb->edge label->c\nc->a\n"}var f=a.editor.graph.getFreeInsertPoint();d=document.createElement("div");d.style.textAlign="right";var l=document.createElement("textarea");l.style.resize="none";l.style.width="100%";l.style.height="354px";l.style.marginBottom="16px";var m=document.createElement("select");if("formatSql"==b||"mermaid"==b)m.style.display="none";var e=document.createElement("option");e.setAttribute("value","list");mxUtils.write(e,mxResources.get("list"));"plantUml"!=b&&m.appendChild(e);
+null!=b&&"fromText"!=b||e.setAttribute("selected","selected");e=document.createElement("option");e.setAttribute("value","table");mxUtils.write(e,mxResources.get("formatSql"));"formatSql"==b&&(m.appendChild(e),e.setAttribute("selected","selected"));e=document.createElement("option");e.setAttribute("value","mermaid");mxUtils.write(e,mxResources.get("formatSql"));"mermaid"==b&&(m.appendChild(e),e.setAttribute("selected","selected"));e=document.createElement("option");e.setAttribute("value","diagram");
+mxUtils.write(e,mxResources.get("diagram"));"plantUml"!=b&&m.appendChild(e);e=document.createElement("option");e.setAttribute("value","plantUmlSvg");mxUtils.write(e,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==b&&e.setAttribute("selected","selected");var k=document.createElement("option");k.setAttribute("value","plantUmlPng");mxUtils.write(k,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+")");var n=document.createElement("option");n.setAttribute("value",
+"plantUmlTxt");mxUtils.write(n,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==b&&(m.appendChild(e),m.appendChild(k),m.appendChild(n));var p=g();l.value=p;d.appendChild(l);this.init=function(){l.focus()};Graph.fileSupport&&(l.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),l.addEventListener("drop",function(a){a.stopPropagation();a.preventDefault();if(0<a.dataTransfer.files.length){a=
+a.dataTransfer.files[0];var e=new FileReader;e.onload=function(a){l.value=a.target.result};e.readAsText(a)}},!1));d.appendChild(m);mxEvent.addListener(m,"change",function(){var a=g();if(0==l.value.length||l.value==p)p=a,l.value=p});a.isOffline()||"mermaid"!=b&&"plantUml"!=b||(e=mxUtils.button(mxResources.get("help"),function(){a.openLink("mermaid"==b?"https://mermaid-js.github.io/mermaid/#/":"https://plantuml.com/")}),e.className="geBtn",d.appendChild(e));e=mxUtils.button(mxResources.get("close"),
+function(){l.value==p?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});e.className="geBtn";a.editor.cancelFirst&&d.appendChild(e);k=mxUtils.button(mxResources.get("insert"),function(e){a.hideDialog();c(l.value,m.value,e)});d.appendChild(k);k.className="geBtn gePrimaryBtn";a.editor.cancelFirst||d.appendChild(e);this.container=d},NewDialog=function(a,d,b,c,g,f,l,m,e,k,n,p,u,t,q,v,y){function x(){var a=!0;if(null!=ia)for(;I<ia.length&&(a||0!=mxUtils.mod(I,30));){var e=
ia[I++],e=A(e.url,e.libs,e.title,e.tooltip?e.tooltip:e.title,e.select,e.imgUrl,e.info,e.onClick,e.preview,e.noImg,e.clibs);a&&e.click();a=!1}}function B(){if(V)b||a.hideDialog(),t(V,ea,H.value);else if(c)b||a.hideDialog(),c(da,H.value,fa,X);else{var e=H.value;null!=e&&0<e.length&&a.pickFolder(a.mode,function(b){a.createFile(e,da,null!=X&&0<X.length?X:null,null,function(){a.hideDialog()},null,b,null,null!=aa&&0<aa.length?aa:null)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}
-function z(a,b,c,d,k,l,f){null!=W&&(W.style.backgroundColor="transparent",W.style.border="1px solid transparent");F.removeAttribute("disabled");da=b;X=c;aa=l;W=a;V=d;fa=f;ea=k;W.style.backgroundColor=n;W.style.border=e}function A(e,b,c,d,k,l,f,g,p,t,q){var u=document.createElement("div");u.className="geTemplate";u.style.height=R+"px";u.style.width=P+"px";"dark"==uiTheme&&(u.style.filter="invert(100%)");null!=c?u.setAttribute("title",mxResources.get(c,null,c)):null!=d&&0<d.length&&u.setAttribute("title",
-d);if(null!=l){u.style.display="inline-flex";u.style.justifyContent="center";u.style.alignItems="center";c=document.createElement("img");c.setAttribute("src",l);c.setAttribute("alt",d);c.style.maxWidth=R+"px";c.style.maxHeight=P+"px";var m=l.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");u.appendChild(c);c.onerror=function(){this.src!=m?this.src=m:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addListener(u,"click",function(a){z(u,null,null,e,f,q)});mxEvent.addListener(u,
+function z(a,b,c,d,k,n,f){null!=W&&(W.style.backgroundColor="transparent",W.style.border="1px solid transparent");F.removeAttribute("disabled");da=b;X=c;aa=n;W=a;V=d;fa=f;ea=k;W.style.backgroundColor=m;W.style.border=e}function A(e,b,c,d,k,n,f,g,p,t,q){var u=document.createElement("div");u.className="geTemplate";u.style.height=R+"px";u.style.width=P+"px";"dark"==uiTheme&&(u.style.filter="invert(100%)");null!=c?u.setAttribute("title",mxResources.get(c,null,c)):null!=d&&0<d.length&&u.setAttribute("title",
+d);if(null!=n){u.style.display="inline-flex";u.style.justifyContent="center";u.style.alignItems="center";c=document.createElement("img");c.setAttribute("src",n);c.setAttribute("alt",d);c.style.maxWidth=R+"px";c.style.maxHeight=P+"px";var l=n.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");u.appendChild(c);c.onerror=function(){this.src!=l?this.src=l:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addListener(u,"click",function(a){z(u,null,null,e,f,q)});mxEvent.addListener(u,
"dblclick",function(a){B()})}else if(!t&&null!=e&&0<e.length){d=p||TEMPLATE_PATH+"/"+e.substring(0,e.length-4)+".png";u.style.backgroundImage="url("+d+")";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";null!=c&&(u.innerHTML='<table width="100%" height="100%" style="line-height:1.3em;'+("dark"==uiTheme?"":"background:rgba(255,255,255,0.85);")+'border:inherit;"><tr><td align="center" valign="middle"><span style="display:inline-block;padding:4px 8px 4px 8px;user-select:none;border-radius:3px;background:rgba(255,255,255,0.85);overflow:hidden;text-overflow:ellipsis;max-width:'+
-(R-34)+'px;">'+mxUtils.htmlEntities(mxResources.get(c,null,c))+"</span></td></tr></table>");var n=!1;mxEvent.addListener(u,"click",function(c){F.setAttribute("disabled","disabled");u.style.backgroundColor="transparent";u.style.border="1px solid transparent";var d=e,d=/^https?:\/\//.test(d)&&!a.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;J.spin(O);mxUtils.get(d,mxUtils.bind(this,function(a){J.stop();200<=a.getStatus()&&299>=a.getStatus()&&(z(u,a.getText(),
-b,null,null,q,d),n&&B())}))});mxEvent.addListener(u,"dblclick",function(a){n=!0})}else u.innerHTML='<table width="100%" height="100%" style="line-height:1.3em;"><tr><td align="center" valign="middle"><span style="display:inline-block;padding:4px 8px 4px 8px;user-select:none;border-radius:3px;background:#ffffff;overflow:hidden;text-overflow:ellipsis;max-width:'+(R-34)+'px;">'+mxUtils.htmlEntities(mxResources.get(c,null,c))+"</span></td></tr></table>",k&&z(u),null!=g?mxEvent.addListener(u,"click",g):
+(R-34)+'px;">'+mxUtils.htmlEntities(mxResources.get(c,null,c))+"</span></td></tr></table>");var M=!1;mxEvent.addListener(u,"click",function(c){F.setAttribute("disabled","disabled");u.style.backgroundColor="transparent";u.style.border="1px solid transparent";var d=e,d=/^https?:\/\//.test(d)&&!a.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;J.spin(O);mxUtils.get(d,mxUtils.bind(this,function(a){J.stop();200<=a.getStatus()&&299>=a.getStatus()&&(z(u,a.getText(),
+b,null,null,q,d),M&&B())}))});mxEvent.addListener(u,"dblclick",function(a){M=!0})}else u.innerHTML='<table width="100%" height="100%" style="line-height:1.3em;"><tr><td align="center" valign="middle"><span style="display:inline-block;padding:4px 8px 4px 8px;user-select:none;border-radius:3px;background:#ffffff;overflow:hidden;text-overflow:ellipsis;max-width:'+(R-34)+'px;">'+mxUtils.htmlEntities(mxResources.get(c,null,c))+"</span></td></tr></table>",k&&z(u),null!=g?mxEvent.addListener(u,"click",g):
(mxEvent.addListener(u,"click",function(a){z(u,null,null,e,f)}),mxEvent.addListener(u,"dblclick",function(a){B()}));O.appendChild(u);return u}function C(){ha&&(ha=!1,mxEvent.addListener(O,"scroll",function(a){O.scrollTop+O.clientHeight>=O.scrollHeight&&(x(),mxEvent.consume(a))}));var a=null;if(0<ga){var e=document.createElement("div");e.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(e,mxResources.get("custom"));Y.appendChild(e);for(var b in T){var c=
-document.createElement("div"),e=b,d=T[b];18<e.length&&(e=e.substring(0,18)+"&hellip;");c.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";c.setAttribute("title",e+" ("+d.length+")");mxUtils.write(c,c.getAttribute("title"));null!=k&&(c.style.padding=k);Y.appendChild(c);(function(e,b){mxEvent.addListener(c,"click",function(){a!=b&&(a.style.backgroundColor="",a=b,a.style.backgroundColor=m,O.scrollTop=
+document.createElement("div"),e=b,d=T[b];18<e.length&&(e=e.substring(0,18)+"&hellip;");c.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";c.setAttribute("title",e+" ("+d.length+")");mxUtils.write(c,c.getAttribute("title"));null!=k&&(c.style.padding=k);Y.appendChild(c);(function(e,b){mxEvent.addListener(c,"click",function(){a!=b&&(a.style.backgroundColor="",a=b,a.style.backgroundColor=l,O.scrollTop=
0,O.innerHTML="",I=0,ia=T[e],L=null,x())})})(b,c)}e=document.createElement("div");e.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(e,"draw.io");Y.appendChild(e)}for(b in ba)c=document.createElement("div"),e=mxResources.get(b),d=ba[b],null==e&&(e=b.substring(0,1).toUpperCase()+b.substring(1)),18<e.length&&(e=e.substring(0,18)+"&hellip;"),c.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;",
-c.setAttribute("title",e+" ("+d.length+")"),mxUtils.write(c,c.getAttribute("title")),null!=k&&(c.style.padding=k),Y.appendChild(c),null==a&&0<d.length&&(a=c,a.style.backgroundColor=m,ia=d),function(e,b){mxEvent.addListener(c,"click",function(){a!=b&&(a.style.backgroundColor="",a=b,a.style.backgroundColor=m,O.scrollTop=0,O.innerHTML="",I=0,ia=ba[e],L=null,x())})}(b,c);x()}b=null!=b?b:!0;g=null!=g?g:!1;m=null!=m?m:"#ebf2f9";n=null!=n?n:"dark"==uiTheme?"#a2a2a2":"#e6eff8";e=null!=e?e:"dark"==uiTheme?
-"1px dashed #00a8ff":"1px solid #ccd9ea";l=null!=l?l:EditorUi.templateFile;var E=document.createElement("div");E.style.height="100%";var D=document.createElement("div");D.style.whiteSpace="nowrap";D.style.height="46px";b&&E.appendChild(D);var G=document.createElement("img");G.setAttribute("border","0");G.setAttribute("align","absmiddle");G.style.width="40px";G.style.height="40px";G.style.marginRight="10px";G.style.paddingBottom="4px";G.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":
+c.setAttribute("title",e+" ("+d.length+")"),mxUtils.write(c,c.getAttribute("title")),null!=k&&(c.style.padding=k),Y.appendChild(c),null==a&&0<d.length&&(a=c,a.style.backgroundColor=l,ia=d),function(e,b){mxEvent.addListener(c,"click",function(){a!=b&&(a.style.backgroundColor="",a=b,a.style.backgroundColor=l,O.scrollTop=0,O.innerHTML="",I=0,ia=ba[e],L=null,x())})}(b,c);x()}b=null!=b?b:!0;g=null!=g?g:!1;l=null!=l?l:"#ebf2f9";m=null!=m?m:"dark"==uiTheme?"#a2a2a2":"#e6eff8";e=null!=e?e:"dark"==uiTheme?
+"1px dashed #00a8ff":"1px solid #ccd9ea";n=null!=n?n:EditorUi.templateFile;var E=document.createElement("div");E.style.height="100%";var D=document.createElement("div");D.style.whiteSpace="nowrap";D.style.height="46px";b&&E.appendChild(D);var G=document.createElement("img");G.setAttribute("border","0");G.setAttribute("align","absmiddle");G.style.width="40px";G.style.height="40px";G.style.marginRight="10px";G.style.paddingBottom="4px";G.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":
a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_GITLAB?IMAGE_PATH+"/gitlab-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";!d&&b&&D.appendChild(G);b&&mxUtils.write(D,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"):
mxResources.get("filename"))+":");G=".drawio";a.mode==App.MODE_GOOGLE&&null!=a.drive?G=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?G=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?G=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?G=a.gitHub.extension:a.mode==App.MODE_GITLAB&&null!=a.gitLab?G=a.gitLab.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(G=a.trello.extension);var H=document.createElement("input");H.setAttribute("value",a.defaultFilename+
G);H.style.marginLeft="10px";H.style.width=d?"144px":"244px";this.init=function(){b&&(H.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?H.select():document.execCommand("selectAll",!1,null))};b&&(D.appendChild(H),null!=a.editor.diagramFileTypes&&(G=FilenameDialog.createFileTypes(a,H,a.editor.diagramFileTypes),G.style.marginLeft="6px",G.style.width=d?"80px":"180px",D.appendChild(G)),null!=a.editor.fileExtensions&&(G=FilenameDialog.createTypeHint(a,H,a.editor.fileExtensions),G.style.marginTop=
@@ -9622,228 +9622,228 @@ b=b||{};var c=0,d;for(d in b)c+=b[d].length;if(e)O.innerHTML=e;else if(0==a.leng
"10px";G.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");v.appendChild(G);var U=document.createElement("input");U.style.marginRight="10px";U.style.marginLeft="10px";U.style.width="220px";mxEvent.addListener(U,"keypress",function(a){13==a.keyCode&&S(!0)});v.appendChild(U);G=mxUtils.button(mxResources.get("search"),function(){S(!0)});G.className="geBtn";v.appendChild(G)}K(0)}var X=null,aa=null,da=null,W=null,V=null,fa=null,ea=null,O=document.createElement("div");O.style.border="1px solid #d3d3d3";
O.style.position="absolute";O.style.left="160px";O.style.right="34px";v=(b?72:40)+(D?30:0);O.style.top=v+"px";O.style.bottom="68px";O.style.margin="6px 0 0 -1px";O.style.padding="6px";O.style.overflow="auto";var Y=document.createElement("div");Y.style.cssText="position:absolute;left:30px;width:128px;top:"+v+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var R=140,P=140,ba={},T={},ga=0,ha=!0;ba.basic=[{title:"blankDiagram",select:!0}];var ia=ba.basic;if(!d){var Q=function(){mxUtils.get(ca,
function(a){if(!ka){ka=!0;a=a.getXml().documentElement.firstChild;for(var e={};null!=a;){if("undefined"!==typeof a.getAttribute)if("clibs"==a.nodeName){for(var b=a.getAttribute("name"),c=a.getElementsByTagName("add"),d=[],k=0;k<c.length;k++)d.push(encodeURIComponent(mxUtils.getTextContent(c[k])));null!=b&&0<d.length&&(e[b]=d.join(";"))}else b=a.getAttribute("url"),null!=b&&(c=a.getAttribute("section"),null==c&&(c=b.indexOf("/"),c=b.substring(0,c)),b=ba[c],null==b&&(b=[],ba[c]=b),c=a.getAttribute("clibs"),
-null!=e[c]&&(c=e[c]),b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview"),clibs:c}));a=a.nextSibling}J.stop();C()}})};E.appendChild(Y);E.appendChild(O);var ka=!1,ca=l;/^https?:\/\//.test(ca)&&!a.editor.isCorsEnabledForUrl(ca)&&(ca=PROXY_URL+"?url="+encodeURIComponent(ca));J.spin(O);null!=y?y(function(a,e){T=a;Z=ga=e;Q()},Q):Q();N=ba}mxEvent.addListener(H,"keypress",function(e){a.dialog.container.firstChild==
-E&&13==e.keyCode&&B()});l=document.createElement("div");l.style.marginTop=d?"4px":"16px";l.style.textAlign="right";l.style.position="absolute";l.style.left="40px";l.style.bottom="24px";l.style.right="40px";d||a.isOffline()||!b||null!=c||g||(y=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),y.className="geBtn",l.appendChild(y));y=mxUtils.button(mxResources.get("cancel"),function(){null!=f&&f();a.hideDialog(!0)});y.className=
-"geBtn";!a.editor.cancelFirst||g&&null==f||l.appendChild(y);d||"1"==urlParams.embed||g||(d=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var e=new FilenameDialog(a,"",mxResources.get("create"),function(e){null!=e&&0<e.length&&(e=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(H.value)+"&create="+encodeURIComponent(e)),null==a.getCurrentFile()?window.location.href=e:window.openWindow(e))},mxResources.get("url"));a.showDialog(e.container,300,80,!0,!0);e.init()}),
-d.className="geBtn",l.appendChild(d));Graph.fileSupport&&q&&(q=mxUtils.button(mxResources.get("import"),function(){if(null==a.newDlgFileInputElt){var e=document.createElement("input");e.setAttribute("multiple","multiple");e.setAttribute("type","file");mxEvent.addListener(e,"change",function(b){a.openFiles(e.files,!0);e.value=""});e.style.display="none";document.body.appendChild(e);a.newDlgFileInputElt=e}a.newDlgFileInputElt.click()}),q.className="geBtn",l.appendChild(q));l.appendChild(F);a.editor.cancelFirst||
-null!=c||g&&null==f||l.appendChild(y);E.appendChild(l);this.container=E},CreateDialog=function(a,d,b,c,g,f,m,n,e,k,l,p,u,t,q,v,y){function x(e,b,c,k){function l(){mxEvent.addListener(f,"click",function(){var e=c;if(m){var b=A.value,k=b.lastIndexOf(".");if(0>d.lastIndexOf(".")&&0>k){var e=null!=e?e:D.value,l="";e==App.MODE_GOOGLE?l=a.drive.extension:e==App.MODE_GITHUB?l=a.gitHub.extension:e==App.MODE_GITLAB?l=a.gitLab.extension:e==App.MODE_TRELLO?l=a.trello.extension:e==App.MODE_DROPBOX?l=a.dropbox.extension:
-e==App.MODE_ONEDRIVE?l=a.oneDrive.extension:e==App.MODE_DEVICE&&(l=".drawio");0<=k&&(b=b.substring(0,k));A.value=b+l}}B(c)})}var f=document.createElement("a");f.style.overflow="hidden";var g=document.createElement("img");g.src=e;g.setAttribute("border","0");g.setAttribute("align","absmiddle");g.style.width="60px";g.style.height="60px";g.style.paddingBottom="6px";f.style.display="inline-block";f.className="geBaseButton";f.style.position="relative";f.style.margin="4px";f.style.padding="8px 8px 10px 8px";
+null!=e[c]&&(c=e[c]),b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),preview:a.getAttribute("preview"),clibs:c}));a=a.nextSibling}J.stop();C()}})};E.appendChild(Y);E.appendChild(O);var ka=!1,ca=n;/^https?:\/\//.test(ca)&&!a.editor.isCorsEnabledForUrl(ca)&&(ca=PROXY_URL+"?url="+encodeURIComponent(ca));J.spin(O);null!=y?y(function(a,e){T=a;Z=ga=e;Q()},Q):Q();N=ba}mxEvent.addListener(H,"keypress",function(e){a.dialog.container.firstChild==
+E&&13==e.keyCode&&B()});n=document.createElement("div");n.style.marginTop=d?"4px":"16px";n.style.textAlign="right";n.style.position="absolute";n.style.left="40px";n.style.bottom="24px";n.style.right="40px";d||a.isOffline()||!b||null!=c||g||(y=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),y.className="geBtn",n.appendChild(y));y=mxUtils.button(mxResources.get("cancel"),function(){null!=f&&f();a.hideDialog(!0)});y.className=
+"geBtn";!a.editor.cancelFirst||g&&null==f||n.appendChild(y);d||"1"==urlParams.embed||g||(d=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var e=new FilenameDialog(a,"",mxResources.get("create"),function(e){null!=e&&0<e.length&&(e=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(H.value)+"&create="+encodeURIComponent(e)),null==a.getCurrentFile()?window.location.href=e:window.openWindow(e))},mxResources.get("url"));a.showDialog(e.container,300,80,!0,!0);e.init()}),
+d.className="geBtn",n.appendChild(d));Graph.fileSupport&&q&&(q=mxUtils.button(mxResources.get("import"),function(){if(null==a.newDlgFileInputElt){var e=document.createElement("input");e.setAttribute("multiple","multiple");e.setAttribute("type","file");mxEvent.addListener(e,"change",function(b){a.openFiles(e.files,!0);e.value=""});e.style.display="none";document.body.appendChild(e);a.newDlgFileInputElt=e}a.newDlgFileInputElt.click()}),q.className="geBtn",n.appendChild(q));n.appendChild(F);a.editor.cancelFirst||
+null!=c||g&&null==f||n.appendChild(y);E.appendChild(n);this.container=E},CreateDialog=function(a,d,b,c,g,f,l,m,e,k,n,p,u,t,q,v,y){function x(e,b,c,k){function n(){mxEvent.addListener(f,"click",function(){var e=c;if(l){var b=A.value,k=b.lastIndexOf(".");if(0>d.lastIndexOf(".")&&0>k){var e=null!=e?e:D.value,n="";e==App.MODE_GOOGLE?n=a.drive.extension:e==App.MODE_GITHUB?n=a.gitHub.extension:e==App.MODE_GITLAB?n=a.gitLab.extension:e==App.MODE_TRELLO?n=a.trello.extension:e==App.MODE_DROPBOX?n=a.dropbox.extension:
+e==App.MODE_ONEDRIVE?n=a.oneDrive.extension:e==App.MODE_DEVICE&&(n=".drawio");0<=k&&(b=b.substring(0,k));A.value=b+n}}B(c)})}var f=document.createElement("a");f.style.overflow="hidden";var g=document.createElement("img");g.src=e;g.setAttribute("border","0");g.setAttribute("align","absmiddle");g.style.width="60px";g.style.height="60px";g.style.paddingBottom="6px";f.style.display="inline-block";f.className="geBaseButton";f.style.position="relative";f.style.margin="4px";f.style.padding="8px 8px 10px 8px";
f.style.whiteSpace="nowrap";f.appendChild(g);f.style.color="gray";f.style.fontSize="11px";var t=document.createElement("div");f.appendChild(t);mxUtils.write(t,b);if(null!=k&&null==a[k]){g.style.visibility="hidden";mxUtils.setOpacity(t,10);var u=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});u.spin(f);var q=window.setTimeout(function(){null==a[k]&&(u.stop(),f.style.display="none")},3E4);a.addListener("clientLoaded",
-mxUtils.bind(this,function(){null!=a[k]&&(window.clearTimeout(q),mxUtils.setOpacity(t,100),g.style.visibility="",u.stop(),l())}))}else l();C.appendChild(f);++E==p&&(mxUtils.br(C),E=0)}function B(e){var c=A.value;if(null==e||null!=c&&0<c.length)y&&a.hideDialog(),b(c,e,A)}m=null!=m?m:!0;n=null!=n?n:!0;p=null!=p?p:4;y=null!=y?y:!0;f=document.createElement("div");f.style.whiteSpace="nowrap";null==c&&a.addLanguageMenu(f);var z=document.createElement("h2");mxUtils.write(z,g||mxResources.get("create"));
+mxUtils.bind(this,function(){null!=a[k]&&(window.clearTimeout(q),mxUtils.setOpacity(t,100),g.style.visibility="",u.stop(),n())}))}else n();C.appendChild(f);++E==p&&(mxUtils.br(C),E=0)}function B(e){var c=A.value;if(null==e||null!=c&&0<c.length)y&&a.hideDialog(),b(c,e,A)}l=null!=l?l:!0;m=null!=m?m:!0;p=null!=p?p:4;y=null!=y?y:!0;f=document.createElement("div");f.style.whiteSpace="nowrap";null==c&&a.addLanguageMenu(f);var z=document.createElement("h2");mxUtils.write(z,g||mxResources.get("create"));
z.style.marginTop="0px";z.style.marginBottom="24px";f.appendChild(z);mxUtils.write(f,mxResources.get("filename")+":");var A=document.createElement("input");A.setAttribute("value",d);A.style.width="200px";A.style.marginLeft="10px";A.style.marginBottom="20px";A.style.maxWidth="70%";this.init=function(){A.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?A.select():document.execCommand("selectAll",!1,null)};f.appendChild(A);null!=v&&(null!=a.editor.diagramFileTypes&&(g=FilenameDialog.createFileTypes(a,
A,a.editor.diagramFileTypes),g.style.marginLeft="6px",g.style.width="80px",f.appendChild(g)),f.appendChild(FilenameDialog.createTypeHint(a,A,v)));null==u||null==t||"image/"!=t.substring(0,6)||"image/svg"==t.substring(0,9)&&!mxClient.IS_SVG||(A.style.width="160px",v=document.createElement("img"),u=q?u:btoa(unescape(encodeURIComponent(u))),v.setAttribute("src","data:"+t+";base64,"+u),v.style.position="absolute",v.style.top="70px",v.style.right="100px",v.style.maxWidth="120px",v.style.maxHeight="80px",
mxUtils.setPrefixedStyle(v.style,"transform","translate(50%,-50%)"),f.appendChild(v),e&&Editor.popupsAllowed&&(v.style.cursor="pointer",mxEvent.addGestureListeners(v,null,null,function(){B("_blank")})));mxUtils.br(f);var C=document.createElement("div");C.style.textAlign="center";var E=0;C.style.marginTop="6px";f.appendChild(C);var D=document.createElement("select");D.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&&(t=document.createElement("option"),
t.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(t,mxResources.get("googleDrive")),D.appendChild(t),x(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(t,mxResources.get("oneDrive")),D.appendChild(t),a.mode==App.MODE_ONEDRIVE&&t.setAttribute("selected","selected"),x(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),
App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(t,mxResources.get("dropbox")),D.appendChild(t),a.mode==App.MODE_DROPBOX&&t.setAttribute("selected","selected"),x(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=a.gitHub&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GITHUB),mxUtils.write(t,mxResources.get("github")),D.appendChild(t),
x(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=a.gitLab&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GITLAB),mxUtils.write(t,mxResources.get("gitlab")),D.appendChild(t),x(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab")),"function"===typeof window.TrelloClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_TRELLO),mxUtils.write(t,mxResources.get("trello")),D.appendChild(t),x(IMAGE_PATH+
-"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()||(t=document.createElement("option"),t.setAttribute("value",App.MODE_DEVICE),mxUtils.write(t,mxResources.get("device")),D.appendChild(t),a.mode!=App.MODE_DEVICE&&n||t.setAttribute("selected","selected"),l&&x(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));n&&isLocalStorage&&"0"!=urlParams.browser&&(n=document.createElement("option"),
-n.setAttribute("value",App.MODE_BROWSER),mxUtils.write(n,mxResources.get("browser")),D.appendChild(n),a.mode==App.MODE_BROWSER&&n.setAttribute("selected","selected"),x(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER));n=document.createElement("div");n.style.marginTop="26px";n.style.textAlign="center";null!=k&&(l=mxUtils.button(mxResources.get("help"),function(){a.openLink(k)}),l.className="geBtn",n.appendChild(l));l=mxUtils.button(mxResources.get("cancel"),function(){null!=
-c?c():(a.fileLoaded(null),a.hideDialog(),window.close(),window.location.href=a.getUrl())});l.className="geBtn";a.editor.cancelFirst&&n.appendChild(l);null==c&&(t=mxUtils.button(mxResources.get("decideLater"),function(){B(null)}),t.className="geBtn",n.appendChild(t));e&&Editor.popupsAllowed&&(e=mxUtils.button(mxResources.get("openInNewWindow"),function(){B("_blank")}),e.className="geBtn",n.appendChild(e));CreateDialog.showDownloadButton&&(e=mxUtils.button(mxResources.get("download"),function(){B("download")}),
-e.className="geBtn",n.appendChild(e));a.editor.cancelFirst||n.appendChild(l);mxEvent.addListener(A,"keypress",function(e){13==e.keyCode?B(App.MODE_DEVICE):27==e.keyCode&&(a.fileLoaded(null),a.hideDialog(),window.close())});f.appendChild(n);this.container=f};CreateDialog.showDownloadButton=!0;
-var PopupDialog=function(a,d,b,c,g){g=null!=g?g:!0;var f=document.createElement("div");f.style.textAlign="left";mxUtils.write(f,mxResources.get("fileOpenLocation"));mxUtils.br(f);mxUtils.br(f);var m=mxUtils.button(mxResources.get("openInThisWindow"),function(){g&&a.hideDialog();null!=c&&c()});m.className="geBtn";m.style.marginBottom="8px";m.style.width="280px";f.appendChild(m);mxUtils.br(f);var n=mxUtils.button(mxResources.get("openInNewWindow"),function(){g&&a.hideDialog();null!=b&&b();a.openLink(d,
-null,!0)});n.className="geBtn gePrimaryBtn";n.style.width=m.style.width;f.appendChild(n);mxUtils.br(f);mxUtils.br(f);mxUtils.write(f,mxResources.get("allowPopups"));this.container=f},ImageDialog=function(a,d,b,c,g,f){f=null!=f?f:!0;var m=a.editor.graph,n=document.createElement("div");mxUtils.write(n,d);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=
+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()||(t=document.createElement("option"),t.setAttribute("value",App.MODE_DEVICE),mxUtils.write(t,mxResources.get("device")),D.appendChild(t),a.mode!=App.MODE_DEVICE&&m||t.setAttribute("selected","selected"),n&&x(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));m&&isLocalStorage&&"0"!=urlParams.browser&&(m=document.createElement("option"),
+m.setAttribute("value",App.MODE_BROWSER),mxUtils.write(m,mxResources.get("browser")),D.appendChild(m),a.mode==App.MODE_BROWSER&&m.setAttribute("selected","selected"),x(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER));m=document.createElement("div");m.style.marginTop="26px";m.style.textAlign="center";null!=k&&(n=mxUtils.button(mxResources.get("help"),function(){a.openLink(k)}),n.className="geBtn",m.appendChild(n));n=mxUtils.button(mxResources.get("cancel"),function(){null!=
+c?c():(a.fileLoaded(null),a.hideDialog(),window.close(),window.location.href=a.getUrl())});n.className="geBtn";a.editor.cancelFirst&&m.appendChild(n);null==c&&(t=mxUtils.button(mxResources.get("decideLater"),function(){B(null)}),t.className="geBtn",m.appendChild(t));e&&Editor.popupsAllowed&&(e=mxUtils.button(mxResources.get("openInNewWindow"),function(){B("_blank")}),e.className="geBtn",m.appendChild(e));CreateDialog.showDownloadButton&&(e=mxUtils.button(mxResources.get("download"),function(){B("download")}),
+e.className="geBtn",m.appendChild(e));a.editor.cancelFirst||m.appendChild(n);mxEvent.addListener(A,"keypress",function(e){13==e.keyCode?B(App.MODE_DEVICE):27==e.keyCode&&(a.fileLoaded(null),a.hideDialog(),window.close())});f.appendChild(m);this.container=f};CreateDialog.showDownloadButton=!0;
+var PopupDialog=function(a,d,b,c,g){g=null!=g?g:!0;var f=document.createElement("div");f.style.textAlign="left";mxUtils.write(f,mxResources.get("fileOpenLocation"));mxUtils.br(f);mxUtils.br(f);var l=mxUtils.button(mxResources.get("openInThisWindow"),function(){g&&a.hideDialog();null!=c&&c()});l.className="geBtn";l.style.marginBottom="8px";l.style.width="280px";f.appendChild(l);mxUtils.br(f);var m=mxUtils.button(mxResources.get("openInNewWindow"),function(){g&&a.hideDialog();null!=b&&b();a.openLink(d,
+null,!0)});m.className="geBtn gePrimaryBtn";m.style.width=l.style.width;f.appendChild(m);mxUtils.br(f);mxUtils.br(f);mxUtils.write(f,mxResources.get("allowPopups"));this.container=f},ImageDialog=function(a,d,b,c,g,f){f=null!=f?f:!0;var l=a.editor.graph,m=document.createElement("div");mxUtils.write(m,d);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 e=document.createElement("input");e.setAttribute("value",b);e.setAttribute("type","text");e.setAttribute("spellcheck","false");e.setAttribute("autocorrect","off");e.setAttribute("autocomplete","off");e.setAttribute("autocapitalize","off");e.style.marginTop="6px";e.style.width=(Graph.fileSupport?460:340)-20+"px";e.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";e.style.backgroundRepeat="no-repeat";e.style.backgroundPosition="100% 50%";e.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('"+a.editor.transparentImage+"')";mxEvent.addListener(b,"click",function(){e.value="";e.focus()});d.appendChild(e);d.appendChild(b);n.appendChild(d);var k=function(e,b,d,k){var l="data:"==e.substring(0,5);!a.isOffline()||l&&
-"undefined"===typeof chrome?0<e.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(e,function(l){a.spinner.stop();a.hideDialog();var g=!1===k?1:null!=b&&null!=d?Math.max(b/l.width,d/l.height):Math.min(1,Math.min(520/l.width,520/l.height));f&&(e=a.convertDataUri(e));c(e,Math.round(Number(l.width)*g),Math.round(Number(l.height)*g))},function(){a.spinner.stop();c(null);a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),
-c(e)):(e=a.convertDataUri(e),b=null==b?120:b,d=null==d?100:d,a.hideDialog(),c(e,b,d))},l=function(e,b){if(null!=e){var d=g?null:m.getModel().getGeometry(m.getSelectionCell());null!=d?k(e,d.width,d.height,b):k(e,null,null,b)}else a.hideDialog(),c(null)};this.init=function(){e.focus();if(Graph.fileSupport){e.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=n.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();
-a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(e){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));e.stopPropagation();e.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(e){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<e.dataTransfer.files.length)a.importFiles(e.dataTransfer.files,0,0,a.maxImageSize,function(a,e,b,c,d,k,f,g){l(a,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var e=
-0;e<a.length;e++)a[e]()},!mxEvent.isControlDown(e),null,null,!0);else if(0<=mxUtils.indexOf(e.dataTransfer.types,"text/uri-list")){var b=e.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(b)&&l(decodeURIComponent(b))}e.stopPropagation();e.preventDefault()}),!1)}};b=document.createElement("div");b.style.marginTop="14px";b.style.textAlign="center";d=mxUtils.button(mxResources.get("cancel"),function(){a.spinner.stop();a.hideDialog()});d.className="geBtn";a.editor.cancelFirst&&
-b.appendChild(d);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(e.value=a.url));e.focus()};if(Graph.fileSupport){if(null==a.imgDlgFileInputElt){var p=document.createElement("input");p.setAttribute("multiple","multiple");p.setAttribute("type","file");mxEvent.addListener(p,"change",function(e){null!=p.files&&(a.importFiles(p.files,0,0,a.maxImageSize,function(a,e,b,c,d,k){l(a)},function(){},
+"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('"+a.editor.transparentImage+"')";mxEvent.addListener(b,"click",function(){e.value="";e.focus()});d.appendChild(e);d.appendChild(b);m.appendChild(d);var k=function(e,b,d,k){var n="data:"==e.substring(0,5);!a.isOffline()||n&&
+"undefined"===typeof chrome?0<e.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(e,function(n){a.spinner.stop();a.hideDialog();var g=!1===k?1:null!=b&&null!=d?Math.max(b/n.width,d/n.height):Math.min(1,Math.min(520/n.width,520/n.height));f&&(e=a.convertDataUri(e));c(e,Math.round(Number(n.width)*g),Math.round(Number(n.height)*g))},function(){a.spinner.stop();c(null);a.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),
+c(e)):(e=a.convertDataUri(e),b=null==b?120:b,d=null==d?100:d,a.hideDialog(),c(e,b,d))},n=function(e,b){if(null!=e){var d=g?null:l.getModel().getGeometry(l.getSelectionCell());null!=d?k(e,d.width,d.height,b):k(e,null,null,b)}else a.hideDialog(),c(null)};this.init=function(){e.focus();if(Graph.fileSupport){e.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=m.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();
+a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(e){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));e.stopPropagation();e.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(e){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<e.dataTransfer.files.length)a.importFiles(e.dataTransfer.files,0,0,a.maxImageSize,function(a,e,b,c,d,k,f,g){n(a,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var e=
+0;e<a.length;e++)a[e]()},!mxEvent.isControlDown(e),null,null,!0);else if(0<=mxUtils.indexOf(e.dataTransfer.types,"text/uri-list")){var b=e.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(b)&&n(decodeURIComponent(b))}e.stopPropagation();e.preventDefault()}),!1)}};b=document.createElement("div");b.style.marginTop="14px";b.style.textAlign="center";d=mxUtils.button(mxResources.get("cancel"),function(){a.spinner.stop();a.hideDialog()});d.className="geBtn";a.editor.cancelFirst&&
+b.appendChild(d);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(e.value=a.url));e.focus()};if(Graph.fileSupport){if(null==a.imgDlgFileInputElt){var p=document.createElement("input");p.setAttribute("multiple","multiple");p.setAttribute("type","file");mxEvent.addListener(p,"change",function(e){null!=p.files&&(a.importFiles(p.files,0,0,a.maxImageSize,function(a,e,b,c,d,k){n(a)},function(){},
function(a){return"image/"==a.type.substring(0,6)},function(a){for(var e=0;e<a.length;e++)a[e]()},!0),p.type="",p.type="file",p.value="")});p.style.display="none";document.body.appendChild(p);a.imgDlgFileInputElt=p}var u=mxUtils.button(mxResources.get("open"),function(){a.imgDlgFileInputElt.click()});u.className="geBtn";b.appendChild(u)}document.createElement("canvas").getContext&&"data:image/"==e.value.substring(0,11)&&"data:image/svg"!=e.value.substring(0,14)&&(u=mxUtils.button(mxResources.get("crop"),
-function(){var b=new CropImageDialog(a,e.value,function(a){e.value=a});a.showDialog(b.container,300,380,!0,!0);b.init()}),u.className="geBtn",b.appendChild(u));mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&l(e.value)});u=mxUtils.button(mxResources.get("apply"),function(){l(e.value)});u.className="geBtn gePrimaryBtn";b.appendChild(u);a.editor.cancelFirst||b.appendChild(d);Graph.fileSupport&&(b.style.marginTop="120px",n.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",n.style.backgroundPosition=
-"center 65%",n.style.backgroundRepeat="no-repeat",d=document.createElement("div"),d.style.position="absolute",d.style.width="420px",d.style.top="58%",d.style.textAlign="center",d.style.fontSize="18px",d.style.color="#a0c3ff",mxUtils.write(d,mxResources.get("dragImagesHere")),n.appendChild(d));n.appendChild(b);this.container=n},LinkDialog=function(a,d,b,c,g){function f(a,e,b){b=mxUtils.button("",b);b.className="geBtn";b.setAttribute("title",e);e=document.createElement("img");e.style.height="26px";
-e.style.width="26px";e.setAttribute("src",a);b.style.minWidth="42px";b.style.verticalAlign="middle";b.appendChild(e);y.appendChild(b)}var m=document.createElement("div");mxUtils.write(m,mxResources.get("editLink")+":");var n=document.createElement("div");n.className="geTitle";n.style.backgroundColor="transparent";n.style.borderColor="transparent";n.style.whiteSpace="nowrap";n.style.textOverflow="clip";n.style.cursor="default";n.style.paddingRight="20px";var e=document.createElement("input");e.setAttribute("placeholder",
+function(){var b=new CropImageDialog(a,e.value,function(a){e.value=a});a.showDialog(b.container,300,380,!0,!0);b.init()}),u.className="geBtn",b.appendChild(u));mxEvent.addListener(e,"keypress",function(a){13==a.keyCode&&n(e.value)});u=mxUtils.button(mxResources.get("apply"),function(){n(e.value)});u.className="geBtn gePrimaryBtn";b.appendChild(u);a.editor.cancelFirst||b.appendChild(d);Graph.fileSupport&&(b.style.marginTop="120px",m.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",m.style.backgroundPosition=
+"center 65%",m.style.backgroundRepeat="no-repeat",d=document.createElement("div"),d.style.position="absolute",d.style.width="420px",d.style.top="58%",d.style.textAlign="center",d.style.fontSize="18px",d.style.color="#a0c3ff",mxUtils.write(d,mxResources.get("dragImagesHere")),m.appendChild(d));m.appendChild(b);this.container=m},LinkDialog=function(a,d,b,c,g){function f(a,e,b){b=mxUtils.button("",b);b.className="geBtn";b.setAttribute("title",e);e=document.createElement("img");e.style.height="26px";
+e.style.width="26px";e.setAttribute("src",a);b.style.minWidth="42px";b.style.verticalAlign="middle";b.appendChild(e);y.appendChild(b)}var l=document.createElement("div");mxUtils.write(l,mxResources.get("editLink")+":");var m=document.createElement("div");m.className="geTitle";m.style.backgroundColor="transparent";m.style.borderColor="transparent";m.style.whiteSpace="nowrap";m.style.textOverflow="clip";m.style.cursor="default";m.style.paddingRight="20px";var e=document.createElement("input");e.setAttribute("placeholder",
mxResources.get("dragUrlsHere"));e.setAttribute("type","text");e.style.marginTop="6px";e.style.width="100%";e.style.boxSizing="border-box";e.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";e.style.backgroundRepeat="no-repeat";e.style.backgroundPosition="100% 50%";e.style.paddingRight="14px";var k=document.createElement("div");k.setAttribute("title",mxResources.get("reset"));k.style.position="relative";k.style.left="-16px";k.style.width="12px";k.style.height="14px";k.style.cursor="pointer";
-k.style.display="inline-block";k.style.top="3px";k.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(k,"click",function(){e.value="";e.focus()});var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name","current-linkdialog");var p=document.createElement("input");p.style.cssText="margin-right:8px;margin-bottom:8px;";p.setAttribute("value","url");p.setAttribute("type",
-"radio");p.setAttribute("name","current-linkdialog");var u=document.createElement("select");u.style.width="100%";if(g&&null!=a.pages){null!=d&&"data:page/id,"==d.substring(0,13)?(p.setAttribute("checked","checked"),p.defaultChecked=!0):(e.setAttribute("value",d),l.setAttribute("checked","checked"),l.defaultChecked=!0);n.appendChild(l);n.appendChild(e);n.appendChild(k);mxUtils.br(n);n.appendChild(p);g=!1;for(k=0;k<a.pages.length;k++){var t=document.createElement("option");mxUtils.write(t,a.pages[k].getName()||
+k.style.display="inline-block";k.style.top="3px";k.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(k,"click",function(){e.value="";e.focus()});var n=document.createElement("input");n.style.cssText="margin-right:8px;margin-bottom:8px;";n.setAttribute("value","url");n.setAttribute("type","radio");n.setAttribute("name","current-linkdialog");var p=document.createElement("input");p.style.cssText="margin-right:8px;margin-bottom:8px;";p.setAttribute("value","url");p.setAttribute("type",
+"radio");p.setAttribute("name","current-linkdialog");var u=document.createElement("select");u.style.width="100%";if(g&&null!=a.pages){null!=d&&"data:page/id,"==d.substring(0,13)?(p.setAttribute("checked","checked"),p.defaultChecked=!0):(e.setAttribute("value",d),n.setAttribute("checked","checked"),n.defaultChecked=!0);m.appendChild(n);m.appendChild(e);m.appendChild(k);mxUtils.br(m);m.appendChild(p);g=!1;for(k=0;k<a.pages.length;k++){var t=document.createElement("option");mxUtils.write(t,a.pages[k].getName()||
mxResources.get("pageWithNumber",[k+1]));t.setAttribute("value","data:page/id,"+a.pages[k].getId());d==t.getAttribute("value")&&(t.setAttribute("selected","selected"),g=!0);u.appendChild(t)}if(!g&&p.checked){var q=document.createElement("option");mxUtils.write(q,mxResources.get("pageNotFound"));q.setAttribute("disabled","disabled");q.setAttribute("selected","selected");q.setAttribute("value","pageNotFound");u.appendChild(q);mxEvent.addListener(u,"change",function(){null==q.parentNode||q.selected||
-q.parentNode.removeChild(q)})}n.appendChild(u)}else e.setAttribute("value",d),n.appendChild(e),n.appendChild(k);m.appendChild(n);var v=mxUtils.button(b,function(){a.hideDialog();c(p.checked?"pageNotFound"!==u.value?u.value:d:e.value,LinkDialog.selectedDocs)});v.style.verticalAlign="middle";v.className="geBtn gePrimaryBtn";this.init=function(){p.checked?u.focus():(e.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(u,
-"focus",function(){l.removeAttribute("checked");p.setAttribute("checked","checked");p.checked=!0});mxEvent.addListener(e,"focus",function(){p.removeAttribute("checked");l.setAttribute("checked","checked");l.checked=!0});if(Graph.fileSupport){var b=m.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(e){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&
-(c=a.highlightElement(b));e.stopPropagation();e.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(e.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),l.setAttribute("checked","checked"),l.checked=!0,v.click());a.stopPropagation();a.preventDefault()}),!1)}};var y=document.createElement("div");y.style.marginTop="20px";y.style.textAlign="center";b=mxUtils.button(mxResources.get("help"),
+q.parentNode.removeChild(q)})}m.appendChild(u)}else e.setAttribute("value",d),m.appendChild(e),m.appendChild(k);l.appendChild(m);var v=mxUtils.button(b,function(){a.hideDialog();c(p.checked?"pageNotFound"!==u.value?u.value:d:e.value,LinkDialog.selectedDocs)});v.style.verticalAlign="middle";v.className="geBtn gePrimaryBtn";this.init=function(){p.checked?u.focus():(e.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(u,
+"focus",function(){n.removeAttribute("checked");p.setAttribute("checked","checked");p.checked=!0});mxEvent.addListener(e,"focus",function(){p.removeAttribute("checked");n.setAttribute("checked","checked");n.checked=!0});if(Graph.fileSupport){var b=l.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(e){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&
+(c=a.highlightElement(b));e.stopPropagation();e.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(e.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),n.setAttribute("checked","checked"),n.checked=!0,v.click());a.stopPropagation();a.preventDefault()}),!1)}};var y=document.createElement("div");y.style.marginTop="20px";y.style.textAlign="center";b=mxUtils.button(mxResources.get("help"),
function(){a.openLink("https://www.diagrams.net/doc/faq/custom-links")});b.style.verticalAlign="middle";b.className="geBtn";y.appendChild(b);a.isOffline()&&!mxClient.IS_CHROMEAPP&&(b.style.display="none");b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.style.verticalAlign="middle";b.className="geBtn";a.editor.cancelFirst&&y.appendChild(b);LinkDialog.selectedDocs=null;LinkDialog.filePicked=function(a){if(a.action==google.picker.Action.PICKED){LinkDialog.selectedDocs=a.docs;
var b=a.docs[0].url;"application/mxe"==a.docs[0].mimeType||null!=a.docs[0].mimeType&&"application/vnd.jgraph."==a.docs[0].mimeType.substring(0,23)?b="https://www.draw.io/#G"+a.docs[0].id:"application/vnd.google-apps.folder"==a.docs[0].mimeType&&(b="https://drive.google.com/#folders/"+a.docs[0].id);e.value=b;e.focus()}else LinkDialog.selectedDocs=null;e.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&&null!=a.drive&&f(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googlePlus"),
function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.linkPicker){var e=a.drive.createLinkPicker();a.linkPicker=e.setCallback(function(a){LinkDialog.filePicked(a)}).build()}a.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&f(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(a){e.value=
a[0].link;e.focus()}})});null!=a.oneDrive&&f(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),function(){a.oneDrive.pickFile(function(a,b){e.value=b.value[0].webUrl;e.focus()})});null!=a.gitHub&&f(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){a.gitHub.pickFile(function(a){if(null!=a){a=a.split("/");var b=a[0],c=a[1],d=a[2];a=a.slice(3,a.length).join("/");e.value="https://github.com/"+b+"/"+c+"/blob/"+d+"/"+a;e.focus()}})});null!=a.gitLab&&f(IMAGE_PATH+"/gitlab-logo.svg",
-mxResources.get("gitlab"),function(){a.gitLab.pickFile(function(a){if(null!=a){a=a.split("/");var b=a[0],c=a[1],d=a[2];a=a.slice(3,a.length).join("/");e.value=DRAWIO_GITLAB_URL+"/"+b+"/"+c+"/blob/"+d+"/"+a;e.focus()}})});mxEvent.addListener(e,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),c(p.checked?u.value:e.value,LinkDialog.selectedDocs))});y.appendChild(v);a.editor.cancelFirst||y.appendChild(b);m.appendChild(y);this.container=m},FeedbackDialog=function(a,d,b,c){var g=document.createElement("div"),
-f=document.createElement("div");mxUtils.write(f,mxResources.get("sendYourFeedback"));f.style.fontSize="18px";f.style.marginBottom="18px";g.appendChild(f);f=document.createElement("div");mxUtils.write(f,mxResources.get("yourEmailAddress")+(b?"":" ("+mxResources.get("required")+")"));g.appendChild(f);var m=document.createElement("input");m.setAttribute("type","text");m.style.marginTop="6px";m.style.width="600px";var n=mxUtils.button(mxResources.get("sendMessage"),function(){var e=l.value+(k.checked?
-"\nDiagram:\n"+(null!=c?c:mxUtils.getXml(a.getXmlFileData())):"")+"\nuserAgent:\n"+navigator.userAgent+"\nappVersion:\n"+navigator.appVersion+"\nappName:\n"+navigator.appName+"\nplatform:\n"+navigator.platform;e.length>FeedbackDialog.maxAttachmentSize?a.alert(mxResources.get("drawingTooLarge")):(a.hideDialog(),a.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(m.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+
-"&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent((null!=d?d:"Feedback")+":\n"+e),function(e){a.spinner.stop();200<=e.getStatus()&&299>=e.getStatus()?a.alert(mxResources.get("feedbackSent")):a.alert(mxResources.get("errorSendingFeedback"))},function(){a.spinner.stop();a.alert(mxResources.get("errorSendingFeedback"))}))});n.className="geBtn gePrimaryBtn";if(!b){n.setAttribute("disabled","disabled");var e=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
-mxEvent.addListener(m,"change",function(){0<m.value.length&&0<e.test(m.value)?n.removeAttribute("disabled"):n.setAttribute("disabled","disabled")});mxEvent.addListener(m,"keyup",function(){0<m.value.length&&e.test(m.value)?n.removeAttribute("disabled"):n.setAttribute("disabled","disabled")})}g.appendChild(m);this.init=function(){m.focus()};var k=document.createElement("input");k.setAttribute("type","checkbox");k.setAttribute("checked","checked");k.defaultChecked=!0;b=document.createElement("p");b.style.marginTop=
-"14px";b.appendChild(k);f=document.createElement("span");mxUtils.write(f," "+mxResources.get("includeCopyOfMyDiagram"));b.appendChild(f);mxEvent.addListener(f,"click",function(a){k.checked=!k.checked;mxEvent.consume(a)});g.appendChild(b);f=document.createElement("div");mxUtils.write(f,mxResources.get("feedback"));g.appendChild(f);var l=document.createElement("textarea");l.style.resize="none";l.style.width="600px";l.style.height="140px";l.style.marginTop="6px";l.setAttribute("placeholder",mxResources.get("comments"));
-g.appendChild(l);b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign="right";f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});f.className="geBtn";a.editor.cancelFirst?(b.appendChild(f),b.appendChild(n)):(b.appendChild(n),b.appendChild(f));g.appendChild(b);this.container=g};FeedbackDialog.maxAttachmentSize=1E6;
+mxResources.get("gitlab"),function(){a.gitLab.pickFile(function(a){if(null!=a){a=a.split("/");var b=a[0],c=a[1],d=a[2];a=a.slice(3,a.length).join("/");e.value=DRAWIO_GITLAB_URL+"/"+b+"/"+c+"/blob/"+d+"/"+a;e.focus()}})});mxEvent.addListener(e,"keypress",function(b){13==b.keyCode&&(a.hideDialog(),c(p.checked?u.value:e.value,LinkDialog.selectedDocs))});y.appendChild(v);a.editor.cancelFirst||y.appendChild(b);l.appendChild(y);this.container=l},FeedbackDialog=function(a,d,b,c){var g=document.createElement("div"),
+f=document.createElement("div");mxUtils.write(f,mxResources.get("sendYourFeedback"));f.style.fontSize="18px";f.style.marginBottom="18px";g.appendChild(f);f=document.createElement("div");mxUtils.write(f,mxResources.get("yourEmailAddress")+(b?"":" ("+mxResources.get("required")+")"));g.appendChild(f);var l=document.createElement("input");l.setAttribute("type","text");l.style.marginTop="6px";l.style.width="600px";var m=mxUtils.button(mxResources.get("sendMessage"),function(){var e=n.value+(k.checked?
+"\nDiagram:\n"+(null!=c?c:mxUtils.getXml(a.getXmlFileData())):"")+"\nuserAgent:\n"+navigator.userAgent+"\nappVersion:\n"+navigator.appVersion+"\nappName:\n"+navigator.appName+"\nplatform:\n"+navigator.platform;e.length>FeedbackDialog.maxAttachmentSize?a.alert(mxResources.get("drawingTooLarge")):(a.hideDialog(),a.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(l.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+
+"&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent((null!=d?d:"Feedback")+":\n"+e),function(e){a.spinner.stop();200<=e.getStatus()&&299>=e.getStatus()?a.alert(mxResources.get("feedbackSent")):a.alert(mxResources.get("errorSendingFeedback"))},function(){a.spinner.stop();a.alert(mxResources.get("errorSendingFeedback"))}))});m.className="geBtn gePrimaryBtn";if(!b){m.setAttribute("disabled","disabled");var e=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
+mxEvent.addListener(l,"change",function(){0<l.value.length&&0<e.test(l.value)?m.removeAttribute("disabled"):m.setAttribute("disabled","disabled")});mxEvent.addListener(l,"keyup",function(){0<l.value.length&&e.test(l.value)?m.removeAttribute("disabled"):m.setAttribute("disabled","disabled")})}g.appendChild(l);this.init=function(){l.focus()};var k=document.createElement("input");k.setAttribute("type","checkbox");k.setAttribute("checked","checked");k.defaultChecked=!0;b=document.createElement("p");b.style.marginTop=
+"14px";b.appendChild(k);f=document.createElement("span");mxUtils.write(f," "+mxResources.get("includeCopyOfMyDiagram"));b.appendChild(f);mxEvent.addListener(f,"click",function(a){k.checked=!k.checked;mxEvent.consume(a)});g.appendChild(b);f=document.createElement("div");mxUtils.write(f,mxResources.get("feedback"));g.appendChild(f);var n=document.createElement("textarea");n.style.resize="none";n.style.width="600px";n.style.height="140px";n.style.marginTop="6px";n.setAttribute("placeholder",mxResources.get("comments"));
+g.appendChild(n);b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign="right";f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});f.className="geBtn";a.editor.cancelFirst?(b.appendChild(f),b.appendChild(m)):(b.appendChild(m),b.appendChild(f));g.appendChild(b);this.container=g};FeedbackDialog.maxAttachmentSize=1E6;
var RevisionDialog=function(a,d,b){var c=document.createElement("div"),g=document.createElement("h3");g.style.marginTop="0px";mxUtils.write(g,mxResources.get("revisionHistory"));c.appendChild(g);g=document.createElement("div");g.style.position="absolute";g.style.overflow="auto";g.style.width="170px";g.style.height="378px";c.appendChild(g);var f=document.createElement("div");f.style.position="absolute";f.style.border="1px solid lightGray";f.style.left="199px";f.style.width="470px";f.style.height="376px";
-f.style.overflow="hidden";var m=document.createElement("div");m.style.cssText="position:absolute;left:0;right:0;top:0;bottom:20px;text-align:center;transform:translate(0,50%);pointer-events:none;";f.appendChild(m);mxEvent.disableContextMenu(f);c.appendChild(f);var n=new Graph(f);n.setTooltips(!1);n.setEnabled(!1);n.setPanning(!0);n.panningHandler.ignoreCell=!0;n.panningHandler.useLeftButtonForPanning=!0;n.minFitScale=null;n.maxFitScale=null;n.centerZoom=!0;var e=0,k=null,l=0,p=n.getGlobalVariable;
-n.getGlobalVariable=function(a){return"page"==a&&null!=k&&null!=k[l]?k[l].getAttribute("name"):"pagenumber"==a?l+1:"pagecount"==a?null!=k?k.length:1:p.apply(this,arguments)};n.getLinkForCell=function(){return null};Editor.MathJaxRender&&n.addListener(mxEvent.SIZE,mxUtils.bind(this,function(e,b){a.editor.graph.mathEnabled&&Editor.MathJaxRender(n.container)}));for(var u=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.4,
-trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),t=a.getCurrentFile(),q=a.getXmlFileData(!0,!1,!0).getElementsByTagName("diagram"),v={},y=0;y<q.length;y++)v[q[y].getAttribute("id")]=q[y];var x=null,B=null,z=null,A=null,C=mxUtils.button("",function(){null!=z&&n.zoomIn()});C.className="geSprite geSprite-zoomin";C.setAttribute("title",mxResources.get("zoomIn"));C.style.outline="none";C.style.border="none";C.style.margin="2px";C.setAttribute("disabled","disabled");mxUtils.setOpacity(C,
-20);var E=mxUtils.button("",function(){null!=z&&n.zoomOut()});E.className="geSprite geSprite-zoomout";E.setAttribute("title",mxResources.get("zoomOut"));E.style.outline="none";E.style.border="none";E.style.margin="2px";E.setAttribute("disabled","disabled");mxUtils.setOpacity(E,20);var D=mxUtils.button("",function(){null!=z&&(n.maxFitScale=8,n.fit(8),n.center())});D.className="geSprite geSprite-fit";D.setAttribute("title",mxResources.get("fit"));D.style.outline="none";D.style.border="none";D.style.margin=
-"2px";D.setAttribute("disabled","disabled");mxUtils.setOpacity(D,20);var G=mxUtils.button("",function(){null!=z&&(n.zoomActual(),n.center())});G.className="geSprite geSprite-actualsize";G.setAttribute("title",mxResources.get("actualSize"));G.style.outline="none";G.style.border="none";G.style.margin="2px";G.setAttribute("disabled","disabled");mxUtils.setOpacity(G,20);var H=mxUtils.button("",function(){});H.className="geSprite geSprite-middle";H.setAttribute("title",mxResources.get("compare"));H.style.outline=
-"none";H.style.border="none";H.style.margin="2px";mxUtils.setOpacity(H,60);var I=f.cloneNode(!1);I.style.pointerEvent="none";f.parentNode.appendChild(I);var J=new Graph(I);J.setTooltips(!1);J.setEnabled(!1);J.setPanning(!0);J.panningHandler.ignoreCell=!0;J.panningHandler.useLeftButtonForPanning=!0;J.minFitScale=null;J.maxFitScale=null;J.centerZoom=!0;mxEvent.addGestureListeners(H,function(a){a=v[k[e].getAttribute("id")];mxUtils.setOpacity(H,20);m.innerHTML="";null==a?mxUtils.write(m,mxResources.get("pageNotFound")):
-(F.style.display="none",f.style.display="none",I.style.display="",I.style.backgroundColor=f.style.backgroundColor,a=Editor.parseDiagramNode(a),(new mxCodec(a.ownerDocument)).decode(a,J.getModel()),J.view.scaleAndTranslate(n.view.scale,n.view.translate.x,n.view.translate.y))},null,function(){mxUtils.setOpacity(H,60);m.innerHTML="";"none"==f.style.display&&(F.style.display="",f.style.display="",I.style.display="none")});var F=document.createElement("div");F.style.position="absolute";F.style.textAlign=
+f.style.overflow="hidden";var l=document.createElement("div");l.style.cssText="position:absolute;left:0;right:0;top:0;bottom:20px;text-align:center;transform:translate(0,50%);pointer-events:none;";f.appendChild(l);mxEvent.disableContextMenu(f);c.appendChild(f);var m=new Graph(f);m.setTooltips(!1);m.setEnabled(!1);m.setPanning(!0);m.panningHandler.ignoreCell=!0;m.panningHandler.useLeftButtonForPanning=!0;m.minFitScale=null;m.maxFitScale=null;m.centerZoom=!0;var e=0,k=null,n=0,p=m.getGlobalVariable;
+m.getGlobalVariable=function(a){return"page"==a&&null!=k&&null!=k[n]?k[n].getAttribute("name"):"pagenumber"==a?n+1:"pagecount"==a?null!=k?k.length:1:p.apply(this,arguments)};m.getLinkForCell=function(){return null};Editor.MathJaxRender&&m.addListener(mxEvent.SIZE,mxUtils.bind(this,function(e,b){a.editor.graph.mathEnabled&&Editor.MathJaxRender(m.container)}));for(var u=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.4,
+trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),t=a.getCurrentFile(),q=a.getXmlFileData(!0,!1,!0).getElementsByTagName("diagram"),v={},y=0;y<q.length;y++)v[q[y].getAttribute("id")]=q[y];var x=null,B=null,z=null,A=null,C=mxUtils.button("",function(){null!=z&&m.zoomIn()});C.className="geSprite geSprite-zoomin";C.setAttribute("title",mxResources.get("zoomIn"));C.style.outline="none";C.style.border="none";C.style.margin="2px";C.setAttribute("disabled","disabled");mxUtils.setOpacity(C,
+20);var E=mxUtils.button("",function(){null!=z&&m.zoomOut()});E.className="geSprite geSprite-zoomout";E.setAttribute("title",mxResources.get("zoomOut"));E.style.outline="none";E.style.border="none";E.style.margin="2px";E.setAttribute("disabled","disabled");mxUtils.setOpacity(E,20);var D=mxUtils.button("",function(){null!=z&&(m.maxFitScale=8,m.fit(8),m.center())});D.className="geSprite geSprite-fit";D.setAttribute("title",mxResources.get("fit"));D.style.outline="none";D.style.border="none";D.style.margin=
+"2px";D.setAttribute("disabled","disabled");mxUtils.setOpacity(D,20);var G=mxUtils.button("",function(){null!=z&&(m.zoomActual(),m.center())});G.className="geSprite geSprite-actualsize";G.setAttribute("title",mxResources.get("actualSize"));G.style.outline="none";G.style.border="none";G.style.margin="2px";G.setAttribute("disabled","disabled");mxUtils.setOpacity(G,20);var H=mxUtils.button("",function(){});H.className="geSprite geSprite-middle";H.setAttribute("title",mxResources.get("compare"));H.style.outline=
+"none";H.style.border="none";H.style.margin="2px";mxUtils.setOpacity(H,60);var I=f.cloneNode(!1);I.style.pointerEvent="none";f.parentNode.appendChild(I);var J=new Graph(I);J.setTooltips(!1);J.setEnabled(!1);J.setPanning(!0);J.panningHandler.ignoreCell=!0;J.panningHandler.useLeftButtonForPanning=!0;J.minFitScale=null;J.maxFitScale=null;J.centerZoom=!0;mxEvent.addGestureListeners(H,function(a){a=v[k[e].getAttribute("id")];mxUtils.setOpacity(H,20);l.innerHTML="";null==a?mxUtils.write(l,mxResources.get("pageNotFound")):
+(F.style.display="none",f.style.display="none",I.style.display="",I.style.backgroundColor=f.style.backgroundColor,a=Editor.parseDiagramNode(a),(new mxCodec(a.ownerDocument)).decode(a,J.getModel()),J.view.scaleAndTranslate(m.view.scale,m.view.translate.x,m.view.translate.y))},null,function(){mxUtils.setOpacity(H,60);l.innerHTML="";"none"==f.style.display&&(F.style.display="",f.style.display="",I.style.display="none")});var F=document.createElement("div");F.style.position="absolute";F.style.textAlign=
"right";F.style.color="gray";F.style.marginTop="10px";F.style.backgroundColor="transparent";F.style.top="440px";F.style.right="32px";F.style.maxWidth="380px";F.style.cursor="default";var M=mxUtils.button(mxResources.get("download"),function(){if(null!=z){var e=mxUtils.getXml(z.documentElement),b=a.getBaseFilename()+".drawio";a.isLocalFileSave()?a.saveLocalFile(e,b,"text/xml"):(e="undefined"===typeof pako?"&xml="+encodeURIComponent(e):"&data="+encodeURIComponent(Graph.compress(e)),(new mxXmlRequest(SAVE_URL,
"filename="+encodeURIComponent(b)+"&format=xml"+e)).simulate(document,"_blank"))}});M.className="geBtn";M.setAttribute("disabled","disabled");var L=mxUtils.button(mxResources.get("restore"),function(e){null!=z&&null!=A&&(mxEvent.isShiftDown(e)?null!=z&&(e=a.getPagesForNode(z.documentElement),e=a.diffPages(a.pages,e),e=new TextareaDialog(a,mxResources.get("compare"),JSON.stringify(e,null,2),function(e){if(0<e.length)try{a.confirm(mxResources.get("areYouSure"),function(){t.patch([JSON.parse(e)],null,
!0);a.hideDialog();a.hideDialog()})}catch(O){a.handleError(O)}},null,null,null,null,null,!0,null,mxResources.get("merge")),e.textarea.style.width="600px",e.textarea.style.height="380px",a.showDialog(e.container,620,460,!0,!0),e.init()):a.confirm(mxResources.get("areYouSure"),function(){null!=b?b(A):a.spinner.spin(document.body,mxResources.get("restoring"))&&t.save(!0,function(e){a.spinner.stop();a.replaceFileData(A);a.hideDialog()},function(e){a.spinner.stop();a.editor.setStatus("");a.handleError(e,
null!=e?mxResources.get("errorSavingFile"):null)})}))});L.className="geBtn";L.setAttribute("disabled","disabled");var N=document.createElement("select");N.setAttribute("disabled","disabled");N.style.maxWidth="80px";N.style.position="relative";N.style.top="-2px";N.style.verticalAlign="bottom";N.style.marginRight="6px";N.style.display="none";var Z=null;mxEvent.addListener(N,"change",function(a){null!=Z&&(Z(a),mxEvent.consume(a))});var K=mxUtils.button(mxResources.get("edit"),function(){null!=z&&(window.openFile=
new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(z.documentElement)),a.openLink(a.getUrl(),null,!0))});K.className="geBtn";K.setAttribute("disabled","disabled");null!=b&&(K.style.display="none");var S=mxUtils.button(mxResources.get("show"),function(){null!=B&&a.openLink(B.getUrl(N.selectedIndex))});S.className="geBtn gePrimaryBtn";S.setAttribute("disabled","disabled");null!=b&&(S.style.display="none",L.className="geBtn gePrimaryBtn");q=document.createElement("div");
q.style.position="absolute";q.style.top="482px";q.style.width="640px";q.style.textAlign="right";var U=document.createElement("div");U.className="geToolbarContainer";U.style.backgroundColor="transparent";U.style.padding="2px";U.style.border="none";U.style.left="199px";U.style.top="442px";var X=null;if(null!=d&&0<d.length){f.style.cursor="move";var aa=document.createElement("table");aa.style.border="1px solid lightGray";aa.style.borderCollapse="collapse";aa.style.borderSpacing="0px";aa.style.width=
-"100%";var da=document.createElement("tbody"),W=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(e=mxUtils.indexOf(a.pages,a.currentPage));for(y=d.length-1;0<=y;y--){var V=function(b){var c=new Date(b.modifiedDate),g=null;if(0<=c.getTime()){var p=function(d){u.stop();m.innerHTML="";var p=mxUtils.parseXml(d),q=a.editor.extractGraphModel(p.documentElement,!0);if(null!=q){var v=function(a){null!=a&&(a=x(Editor.parseDiagramNode(a)));return a},x=function(a){var e=a.getAttribute("background");
-if(null==e||""==e||e==mxConstants.NONE)e=n.defaultPageBackgroundColor;f.style.backgroundColor=e;(new mxCodec(a.ownerDocument)).decode(a,n.getModel());n.maxFitScale=1;n.fit(8);n.center();return a};N.style.display="none";N.innerHTML="";z=p;A=d;k=parseSelectFunction=null;l=0;if("mxfile"==q.nodeName){p=q.getElementsByTagName("diagram");k=[];for(d=0;d<p.length;d++)k.push(p[d]);l=Math.min(e,k.length-1);0<k.length&&v(k[l]);if(1<k.length)for(N.removeAttribute("disabled"),N.style.display="",d=0;d<k.length;d++)p=
-document.createElement("option"),mxUtils.write(p,k[d].getAttribute("name")||mxResources.get("pageWithNumber",[d+1])),p.setAttribute("value",d),d==l&&p.setAttribute("selected","selected"),N.appendChild(p);Z=function(){try{var b=parseInt(N.value);l=e=b;v(k[b])}catch(Q){N.value=e,a.handleError(Q)}}}else x(q);d=b.lastModifyingUserName;null!=d&&20<d.length&&(d=d.substring(0,20)+"...");F.innerHTML="";mxUtils.write(F,(null!=d?d+" ":"")+c.toLocaleDateString()+" "+c.toLocaleTimeString());F.setAttribute("title",
+"100%";var da=document.createElement("tbody"),W=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(e=mxUtils.indexOf(a.pages,a.currentPage));for(y=d.length-1;0<=y;y--){var V=function(b){var c=new Date(b.modifiedDate),g=null;if(0<=c.getTime()){var p=function(d){u.stop();l.innerHTML="";var p=mxUtils.parseXml(d),q=a.editor.extractGraphModel(p.documentElement,!0);if(null!=q){var v=function(a){null!=a&&(a=x(Editor.parseDiagramNode(a)));return a},x=function(a){var e=a.getAttribute("background");
+if(null==e||""==e||e==mxConstants.NONE)e=m.defaultPageBackgroundColor;f.style.backgroundColor=e;(new mxCodec(a.ownerDocument)).decode(a,m.getModel());m.maxFitScale=1;m.fit(8);m.center();return a};N.style.display="none";N.innerHTML="";z=p;A=d;k=parseSelectFunction=null;n=0;if("mxfile"==q.nodeName){p=q.getElementsByTagName("diagram");k=[];for(d=0;d<p.length;d++)k.push(p[d]);n=Math.min(e,k.length-1);0<k.length&&v(k[n]);if(1<k.length)for(N.removeAttribute("disabled"),N.style.display="",d=0;d<k.length;d++)p=
+document.createElement("option"),mxUtils.write(p,k[d].getAttribute("name")||mxResources.get("pageWithNumber",[d+1])),p.setAttribute("value",d),d==n&&p.setAttribute("selected","selected"),N.appendChild(p);Z=function(){try{var b=parseInt(N.value);n=e=b;v(k[b])}catch(Q){N.value=e,a.handleError(Q)}}}else x(q);d=b.lastModifyingUserName;null!=d&&20<d.length&&(d=d.substring(0,20)+"...");F.innerHTML="";mxUtils.write(F,(null!=d?d+" ":"")+c.toLocaleDateString()+" "+c.toLocaleTimeString());F.setAttribute("title",
g.getAttribute("title"));C.removeAttribute("disabled");E.removeAttribute("disabled");D.removeAttribute("disabled");G.removeAttribute("disabled");H.removeAttribute("disabled");null!=t&&t.isRestricted()||(a.editor.graph.isEnabled()&&L.removeAttribute("disabled"),M.removeAttribute("disabled"),S.removeAttribute("disabled"),K.removeAttribute("disabled"));mxUtils.setOpacity(C,60);mxUtils.setOpacity(E,60);mxUtils.setOpacity(D,60);mxUtils.setOpacity(G,60);mxUtils.setOpacity(H,60)}else N.style.display="none",
-N.innerHTML="",F.innerHTML="",mxUtils.write(F,mxResources.get("errorLoadingFile")),mxUtils.write(m,mxResources.get("errorLoadingFile"))},g=document.createElement("tr");g.style.borderBottom="1px solid lightGray";g.style.fontSize="12px";g.style.cursor="pointer";var q=document.createElement("td");q.style.padding="6px";q.style.whiteSpace="nowrap";b==d[d.length-1]?mxUtils.write(q,mxResources.get("current")):c.toDateString()===W?mxUtils.write(q,c.toLocaleTimeString()):mxUtils.write(q,c.toLocaleDateString()+
+N.innerHTML="",F.innerHTML="",mxUtils.write(F,mxResources.get("errorLoadingFile")),mxUtils.write(l,mxResources.get("errorLoadingFile"))},g=document.createElement("tr");g.style.borderBottom="1px solid lightGray";g.style.fontSize="12px";g.style.cursor="pointer";var q=document.createElement("td");q.style.padding="6px";q.style.whiteSpace="nowrap";b==d[d.length-1]?mxUtils.write(q,mxResources.get("current")):c.toDateString()===W?mxUtils.write(q,c.toLocaleTimeString()):mxUtils.write(q,c.toLocaleDateString()+
" "+c.toLocaleTimeString());g.appendChild(q);g.setAttribute("title",c.toLocaleDateString()+" "+c.toLocaleTimeString()+(null!=b.fileSize?" "+a.formatFileSize(parseInt(b.fileSize)):"")+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(g,"click",function(a){B!=b&&(u.stop(),null!=x&&(x.style.backgroundColor=""),B=b,x=g,x.style.backgroundColor="dark"==uiTheme?"#000000":"#ebf2f9",A=z=null,F.removeAttribute("title"),F.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+
-"..."),f.style.backgroundColor=n.defaultPageBackgroundColor,m.innerHTML="",n.getModel().clear(),L.setAttribute("disabled","disabled"),M.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"),S.setAttribute("disabled","disabled"),N.setAttribute("disabled","disabled"),mxUtils.setOpacity(C,20),
-mxUtils.setOpacity(E,20),mxUtils.setOpacity(D,20),mxUtils.setOpacity(G,20),mxUtils.setOpacity(H,20),u.spin(f),b.getXml(function(a){if(B==b)try{p(a)}catch(T){F.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+T.message)}},function(a){u.stop();N.style.display="none";N.innerHTML="";F.innerHTML="";mxUtils.write(F,mxResources.get("errorLoadingFile"));mxUtils.write(m,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(g,"dblclick",function(a){S.click();window.getSelection?
+"..."),f.style.backgroundColor=m.defaultPageBackgroundColor,l.innerHTML="",m.getModel().clear(),L.setAttribute("disabled","disabled"),M.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),K.setAttribute("disabled","disabled"),S.setAttribute("disabled","disabled"),N.setAttribute("disabled","disabled"),mxUtils.setOpacity(C,20),
+mxUtils.setOpacity(E,20),mxUtils.setOpacity(D,20),mxUtils.setOpacity(G,20),mxUtils.setOpacity(H,20),u.spin(f),b.getXml(function(a){if(B==b)try{p(a)}catch(T){F.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+T.message)}},function(a){u.stop();N.style.display="none";N.innerHTML="";F.innerHTML="";mxUtils.write(F,mxResources.get("errorLoadingFile"));mxUtils.write(l,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(g,"dblclick",function(a){S.click();window.getSelection?
window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);da.appendChild(g)}return g}(d[y]);null!=V&&y==d.length-1&&(X=V)}aa.appendChild(da);g.appendChild(aa)}else null==t||null==a.drive&&t.constructor==window.DriveFile||null==a.dropbox&&t.constructor==window.DropboxFile?(f.style.display="none",U.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(f.style.display="none",U.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));
this.init=function(){null!=X&&X.click()};g=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.className="geBtn";U.appendChild(N);U.appendChild(C);U.appendChild(E);U.appendChild(G);U.appendChild(D);U.appendChild(H);a.editor.cancelFirst?(q.appendChild(g),q.appendChild(M),q.appendChild(K),q.appendChild(L),q.appendChild(S)):(q.appendChild(M),q.appendChild(K),q.appendChild(L),q.appendChild(S),q.appendChild(g));c.appendChild(q);c.appendChild(U);c.appendChild(F);this.container=c},DraftDialog=
-function(a,d,b,c,g,f,m,n,e){var k=document.createElement("div"),l=document.createElement("div");l.style.marginTop="0px";l.style.whiteSpace="nowrap";l.style.overflow="auto";l.style.lineHeight="normal";mxUtils.write(l,d);k.appendChild(l);var p=document.createElement("select"),u=mxUtils.bind(this,function(){B=mxUtils.parseXml(e[p.value].data);z=a.editor.extractGraphModel(B.documentElement,!0);A=0;this.init()});if(null!=e){p.style.marginLeft="4px";for(d=0;d<e.length;d++){var t=document.createElement("option");
-t.setAttribute("value",d);var q=new Date(e[d].created),v=new Date(e[d].modified);mxUtils.write(t,q.toLocaleDateString()+" "+q.toLocaleTimeString()+" - "+(q.toDateString(),v.toDateString(),v.toLocaleDateString())+" "+v.toLocaleTimeString());p.appendChild(t)}l.appendChild(p);mxEvent.addListener(p,"change",u)}null==b&&(b=e[0].data);var y=document.createElement("div");y.style.position="absolute";y.style.border="1px solid lightGray";y.style.marginTop="10px";y.style.left="40px";y.style.right="40px";y.style.top=
+function(a,d,b,c,g,f,l,m,e){var k=document.createElement("div"),n=document.createElement("div");n.style.marginTop="0px";n.style.whiteSpace="nowrap";n.style.overflow="auto";n.style.lineHeight="normal";mxUtils.write(n,d);k.appendChild(n);var p=document.createElement("select"),u=mxUtils.bind(this,function(){B=mxUtils.parseXml(e[p.value].data);z=a.editor.extractGraphModel(B.documentElement,!0);A=0;this.init()});if(null!=e){p.style.marginLeft="4px";for(d=0;d<e.length;d++){var t=document.createElement("option");
+t.setAttribute("value",d);var q=new Date(e[d].created),v=new Date(e[d].modified);mxUtils.write(t,q.toLocaleDateString()+" "+q.toLocaleTimeString()+" - "+(q.toDateString(),v.toDateString(),v.toLocaleDateString())+" "+v.toLocaleTimeString());p.appendChild(t)}n.appendChild(p);mxEvent.addListener(p,"change",u)}null==b&&(b=e[0].data);var y=document.createElement("div");y.style.position="absolute";y.style.border="1px solid lightGray";y.style.marginTop="10px";y.style.left="40px";y.style.right="40px";y.style.top=
"46px";y.style.bottom="74px";y.style.overflow="hidden";mxEvent.disableContextMenu(y);k.appendChild(y);var x=new Graph(y);x.setEnabled(!1);x.setPanning(!0);x.panningHandler.ignoreCell=!0;x.panningHandler.useLeftButtonForPanning=!0;x.minFitScale=null;x.maxFitScale=null;x.centerZoom=!0;var B=mxUtils.parseXml(b),z=a.editor.extractGraphModel(B.documentElement,!0),A=0,C=null,E=x.getGlobalVariable;x.getGlobalVariable=function(a){return"page"==a&&null!=C&&null!=C[A]?C[A].getAttribute("name"):"pagenumber"==
-a?A+1:"pagecount"==a?null!=C?C.length:1:E.apply(this,arguments)};x.getLinkForCell=function(){return null};b=mxUtils.button("",function(){x.zoomIn()});b.className="geSprite geSprite-zoomin";b.setAttribute("title",mxResources.get("zoomIn"));b.style.outline="none";b.style.border="none";b.style.margin="2px";mxUtils.setOpacity(b,60);l=mxUtils.button("",function(){x.zoomOut()});l.className="geSprite geSprite-zoomout";l.setAttribute("title",mxResources.get("zoomOut"));l.style.outline="none";l.style.border=
-"none";l.style.margin="2px";mxUtils.setOpacity(l,60);d=mxUtils.button("",function(){x.maxFitScale=8;x.fit(8);x.center()});d.className="geSprite geSprite-fit";d.setAttribute("title",mxResources.get("fit"));d.style.outline="none";d.style.border="none";d.style.margin="2px";mxUtils.setOpacity(d,60);t=mxUtils.button("",function(){x.zoomActual();x.center()});t.className="geSprite geSprite-actualsize";t.setAttribute("title",mxResources.get("actualSize"));t.style.outline="none";t.style.border="none";t.style.margin=
-"2px";mxUtils.setOpacity(t,60);m=mxUtils.button(m||mxResources.get("discard"),function(){g.apply(this,[p.value,mxUtils.bind(this,function(){null!=p.parentNode&&(p.options[p.selectedIndex].parentNode.removeChild(p.options[p.selectedIndex]),0<p.options.length?(p.value=p.options[0].value,u()):a.hideDialog(!0))})])});m.className="geBtn";var D=document.createElement("select");D.style.maxWidth="80px";D.style.position="relative";D.style.top="-2px";D.style.verticalAlign="bottom";D.style.marginRight="6px";
+a?A+1:"pagecount"==a?null!=C?C.length:1:E.apply(this,arguments)};x.getLinkForCell=function(){return null};b=mxUtils.button("",function(){x.zoomIn()});b.className="geSprite geSprite-zoomin";b.setAttribute("title",mxResources.get("zoomIn"));b.style.outline="none";b.style.border="none";b.style.margin="2px";mxUtils.setOpacity(b,60);n=mxUtils.button("",function(){x.zoomOut()});n.className="geSprite geSprite-zoomout";n.setAttribute("title",mxResources.get("zoomOut"));n.style.outline="none";n.style.border=
+"none";n.style.margin="2px";mxUtils.setOpacity(n,60);d=mxUtils.button("",function(){x.maxFitScale=8;x.fit(8);x.center()});d.className="geSprite geSprite-fit";d.setAttribute("title",mxResources.get("fit"));d.style.outline="none";d.style.border="none";d.style.margin="2px";mxUtils.setOpacity(d,60);t=mxUtils.button("",function(){x.zoomActual();x.center()});t.className="geSprite geSprite-actualsize";t.setAttribute("title",mxResources.get("actualSize"));t.style.outline="none";t.style.border="none";t.style.margin=
+"2px";mxUtils.setOpacity(t,60);l=mxUtils.button(l||mxResources.get("discard"),function(){g.apply(this,[p.value,mxUtils.bind(this,function(){null!=p.parentNode&&(p.options[p.selectedIndex].parentNode.removeChild(p.options[p.selectedIndex]),0<p.options.length?(p.value=p.options[0].value,u()):a.hideDialog(!0))})])});l.className="geBtn";var D=document.createElement("select");D.style.maxWidth="80px";D.style.position="relative";D.style.top="-2px";D.style.verticalAlign="bottom";D.style.marginRight="6px";
D.style.display="none";f=mxUtils.button(f||mxResources.get("edit"),function(){c.apply(this,[p.value])});f.className="geBtn gePrimaryBtn";q=document.createElement("div");q.style.position="absolute";q.style.bottom="30px";q.style.right="40px";q.style.textAlign="right";v=document.createElement("div");v.className="geToolbarContainer";v.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function a(a){if(null!=
a){var e=a.getAttribute("background");if(null==e||""==e||e==mxConstants.NONE)e="dark"==uiTheme?"transparent":"#ffffff";y.style.backgroundColor=e;(new mxCodec(a.ownerDocument)).decode(a,x.getModel());x.maxFitScale=1;x.fit(8);x.center()}return a}function e(e){null!=e&&(e=a(Editor.parseDiagramNode(e)));return e}mxEvent.addListener(D,"change",function(a){A=parseInt(D.value);e(C[A]);mxEvent.consume(a)});if("mxfile"==z.nodeName){var b=z.getElementsByTagName("diagram");C=[];for(var c=0;c<b.length;c++)C.push(b[c]);
-0<C.length&&e(C[A]);D.innerHTML="";if(1<C.length)for(D.style.display="",c=0;c<C.length;c++)b=document.createElement("option"),mxUtils.write(b,C[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),b.setAttribute("value",c),c==A&&b.setAttribute("selected","selected"),D.appendChild(b);else D.style.display="none"}else a(z)};v.appendChild(D);v.appendChild(b);v.appendChild(l);v.appendChild(t);v.appendChild(d);b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});b.className=
-"geBtn";n=null!=n?mxUtils.button(mxResources.get("ignore"),n):null;null!=n&&(n.className="geBtn");a.editor.cancelFirst?(q.appendChild(b),null!=n&&q.appendChild(n),q.appendChild(m),q.appendChild(f)):(q.appendChild(f),q.appendChild(m),null!=n&&q.appendChild(n),q.appendChild(b));k.appendChild(q);k.appendChild(v);this.container=k},FindWindow=function(a,d,b,c,g){function f(a,e,b){if("object"===typeof e.value&&null!=e.value.attributes){e=e.value.attributes;for(var c=0;c<e.length;c++)if("label"!=e[c].nodeName){var d=
-mxUtils.trim(e[c].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==a&&d.substring(0,b.length)===b||null!=a&&a.test(d))return!0}}return!1}function m(b){var c=e.model.getDescendants(e.model.getRoot()),d=t.value.toLowerCase(),g=q.checked?new RegExp(d):null,u=null;k!=d&&(k=d,l=null,p=!1);var n=null==l;if(0<d.length){if(p){p=!1;for(var z,v=0;v<a.pages.length;v++)if(a.currentPage==a.pages[v]){z=v;break}b=(z+1)%a.pages.length;l=null;do p=!1,c=a.pages[b],e=a.createTemporaryGraph(e.getStylesheet()),
-a.updatePageRoot(c),e.model.setRoot(c.root),b=(b+1)%a.pages.length;while(!m(!0)&&b!=z);l&&(l=null,a.selectPage(c));p=!1;e=a.editor.graph;return m(!0)}for(v=0;v<c.length;v++){z=e.view.getState(c[v]);if(null!=z&&null!=z.cell.value&&(n||null==u)&&(e.model.isVertex(z.cell)||e.model.isEdge(z.cell))&&(e.isHtmlLabel(z.cell)?(x.innerHTML=e.sanitizeHtml(e.getLabel(z.cell)),label=mxUtils.extractTextWithWhitespace([x])):label=e.getLabel(z.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),
-null==g&&(label.substring(0,d.length)===d||f(g,z.cell,d))||null!=g&&(g.test(label)||f(g,z.cell,d))))if(n){u=z;break}else null==u&&(u=z);n=n||z==l}}if(null!=u){if(v==c.length&&y.checked)return l=null,p=!0,m(!0);l=u;e.scrollCellToVisible(l.cell);e.isEnabled()?e.setSelectionCell(l.cell):e.highlightCell(l.cell)}else{if(!b&&y.checked)return p=!0,m(!0);e.isEnabled()&&e.clearSelection()}return 0==d.length||null!=u}var n=a.actions.get("find"),e=a.editor.graph,k=null,l=null,p=!1,u=document.createElement("div");
+0<C.length&&e(C[A]);D.innerHTML="";if(1<C.length)for(D.style.display="",c=0;c<C.length;c++)b=document.createElement("option"),mxUtils.write(b,C[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),b.setAttribute("value",c),c==A&&b.setAttribute("selected","selected"),D.appendChild(b);else D.style.display="none"}else a(z)};v.appendChild(D);v.appendChild(b);v.appendChild(n);v.appendChild(t);v.appendChild(d);b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});b.className=
+"geBtn";m=null!=m?mxUtils.button(mxResources.get("ignore"),m):null;null!=m&&(m.className="geBtn");a.editor.cancelFirst?(q.appendChild(b),null!=m&&q.appendChild(m),q.appendChild(l),q.appendChild(f)):(q.appendChild(f),q.appendChild(l),null!=m&&q.appendChild(m),q.appendChild(b));k.appendChild(q);k.appendChild(v);this.container=k},FindWindow=function(a,d,b,c,g){function f(a,e,b){if("object"===typeof e.value&&null!=e.value.attributes){e=e.value.attributes;for(var c=0;c<e.length;c++)if("label"!=e[c].nodeName){var d=
+mxUtils.trim(e[c].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==a&&d.substring(0,b.length)===b||null!=a&&a.test(d))return!0}}return!1}function l(b){var c=e.model.getDescendants(e.model.getRoot()),d=t.value.toLowerCase(),g=q.checked?new RegExp(d):null,u=null;k!=d&&(k=d,n=null,p=!1);var z=null==n;if(0<d.length){if(p){p=!1;for(var m,v=0;v<a.pages.length;v++)if(a.currentPage==a.pages[v]){m=v;break}b=(m+1)%a.pages.length;n=null;do p=!1,c=a.pages[b],e=a.createTemporaryGraph(e.getStylesheet()),
+a.updatePageRoot(c),e.model.setRoot(c.root),b=(b+1)%a.pages.length;while(!l(!0)&&b!=m);n&&(n=null,a.selectPage(c));p=!1;e=a.editor.graph;return l(!0)}for(v=0;v<c.length;v++){m=e.view.getState(c[v]);if(null!=m&&null!=m.cell.value&&(z||null==u)&&(e.model.isVertex(m.cell)||e.model.isEdge(m.cell))&&(e.isHtmlLabel(m.cell)?(x.innerHTML=e.sanitizeHtml(e.getLabel(m.cell)),label=mxUtils.extractTextWithWhitespace([x])):label=e.getLabel(m.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),
+null==g&&(label.substring(0,d.length)===d||f(g,m.cell,d))||null!=g&&(g.test(label)||f(g,m.cell,d))))if(z){u=m;break}else null==u&&(u=m);z=z||m==n}}if(null!=u){if(v==c.length&&y.checked)return n=null,p=!0,l(!0);n=u;e.scrollCellToVisible(n.cell);e.isEnabled()?e.setSelectionCell(n.cell):e.highlightCell(n.cell)}else{if(!b&&y.checked)return p=!0,l(!0);e.isEnabled()&&e.clearSelection()}return 0==d.length||null!=u}var m=a.actions.get("find"),e=a.editor.graph,k=null,n=null,p=!1,u=document.createElement("div");
u.style.userSelect="none";u.style.overflow="hidden";u.style.padding="10px";u.style.height="100%";var t=document.createElement("input");t.setAttribute("placeholder",mxResources.get("find"));t.setAttribute("type","text");t.style.marginTop="4px";t.style.marginBottom="6px";t.style.width="200px";t.style.fontSize="12px";t.style.borderRadius="4px";t.style.padding="6px";u.appendChild(t);mxUtils.br(u);var q=document.createElement("input");q.setAttribute("id","geFindWinRegExChck");q.setAttribute("type","checkbox");
q.style.marginRight="4px";u.appendChild(q);var v=document.createElement("label");v.setAttribute("for","geFindWinRegExChck");u.appendChild(v);mxUtils.write(v,mxResources.get("regularExpression"));u.appendChild(v);v=a.menus.createHelpLink("https://www.diagrams.net/doc/faq/find-shapes");v.style.position="relative";v.style.marginLeft="6px";v.style.top="-1px";u.appendChild(v);mxUtils.br(u);var y=document.createElement("input");y.setAttribute("id","geFindWinAllPagesChck");y.setAttribute("type","checkbox");
-y.style.marginRight="4px";u.appendChild(y);v=document.createElement("label");v.setAttribute("for","geFindWinAllPagesChck");u.appendChild(v);mxUtils.write(v,mxResources.get("allPages"));u.appendChild(v);var x=document.createElement("div");mxUtils.br(u);v=mxUtils.button(mxResources.get("reset"),function(){t.value="";t.style.backgroundColor="";k=l=null;p=!1;t.focus()});v.setAttribute("title",mxResources.get("reset"));v.style.marginTop="6px";v.style.marginRight="4px";v.style.marginLeft=(c-20-156)/2+"px";
-v.className="geBtn";u.appendChild(v);v=mxUtils.button(mxResources.get("find"),function(){try{t.style.backgroundColor=m()?"":"#ffcfcf"}catch(z){a.handleError(z)}});v.setAttribute("title",mxResources.get("find")+" (Enter)");v.style.marginTop="6px";v.className="geBtn gePrimaryBtn";u.appendChild(v);mxEvent.addListener(t,"keyup",function(a){if(91==a.keyCode||93==a.keyCode||17==a.keyCode)mxEvent.consume(a);else if(27==a.keyCode)n.funct();else if(k!=t.value.toLowerCase()||13==a.keyCode)try{t.style.backgroundColor=
-m()?"":"#ffcfcf"}catch(A){t.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(u,"keydown",function(e){70==e.keyCode&&a.keyHandler.isControlDown(e)&&!mxEvent.isShiftDown(e)&&(n.funct(),mxEvent.consume(e))});this.window=new mxWindow(mxResources.get("find"),u,d,b,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();this.window.isVisible()?(t.focus(),
+y.style.marginRight="4px";u.appendChild(y);v=document.createElement("label");v.setAttribute("for","geFindWinAllPagesChck");u.appendChild(v);mxUtils.write(v,mxResources.get("allPages"));u.appendChild(v);var x=document.createElement("div");mxUtils.br(u);v=mxUtils.button(mxResources.get("reset"),function(){t.value="";t.style.backgroundColor="";k=n=null;p=!1;t.focus()});v.setAttribute("title",mxResources.get("reset"));v.style.marginTop="6px";v.style.marginRight="4px";v.style.marginLeft=(c-20-156)/2+"px";
+v.className="geBtn";u.appendChild(v);v=mxUtils.button(mxResources.get("find"),function(){try{t.style.backgroundColor=l()?"":"#ffcfcf"}catch(z){a.handleError(z)}});v.setAttribute("title",mxResources.get("find")+" (Enter)");v.style.marginTop="6px";v.className="geBtn gePrimaryBtn";u.appendChild(v);mxEvent.addListener(t,"keyup",function(a){if(91==a.keyCode||93==a.keyCode||17==a.keyCode)mxEvent.consume(a);else if(27==a.keyCode)m.funct();else if(k!=t.value.toLowerCase()||13==a.keyCode)try{t.style.backgroundColor=
+l()?"":"#ffcfcf"}catch(A){t.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(u,"keydown",function(e){70==e.keyCode&&a.keyHandler.isControlDown(e)&&!mxEvent.isShiftDown(e)&&(m.funct(),mxEvent.consume(e))});this.window=new mxWindow(mxResources.get("find"),u,d,b,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();this.window.isVisible()?(t.focus(),
mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null),null!=a.pages&&1<a.pages.length?y.removeAttribute("disabled"):(y.checked=!1,y.setAttribute("disabled","disabled"))):e.container.focus()}));this.window.setLocation=function(a,e){var b=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));
e=Math.max(0,Math.min(e,b-this.table.clientHeight-48));this.getX()==a&&this.getY()==e||mxWindow.prototype.setLocation.apply(this,arguments)};var B=mxUtils.bind(this,function(){var a=this.window.getX(),e=this.window.getY();this.window.setLocation(a,e)});mxEvent.addListener(window,"resize",B);this.destroy=function(){mxEvent.removeListener(window,"resize",B);this.window.destroy()}},FreehandWindow=function(a,d,b,c,g){var f=a.editor.graph;a=document.createElement("div");a.style.userSelect="none";a.style.overflow=
-"hidden";a.style.height="100%";var m=mxUtils.button(mxResources.get("startDrawing"),function(){f.freehand.isDrawing()&&f.freehand.stopDrawing();f.freehand.startDrawing()});m.setAttribute("title",mxResources.get("startDrawing"));m.style.marginTop="8px";m.style.marginRight="4px";m.style.width="160px";m.style.overflow="hidden";m.style.textOverflow="ellipsis";m.style.textAlign="center";m.className="geBtn gePrimaryBtn";a.appendChild(m);var n=m.cloneNode(!1);mxUtils.write(n,mxResources.get("stopDrawing"));
-n.setAttribute("title",mxResources.get("stopDrawing"));n.style.marginTop="4px";mxEvent.addListener(n,"click",function(){f.freehand.stopDrawing()});a.appendChild(n);this.window=new mxWindow(mxResources.get("freehand"),a,d,b,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);f.addListener("freehandStateChanged",mxUtils.bind(this,function(){n.className="geBtn"+(f.freehand.isDrawing()?" gePrimaryBtn":"")}));this.window.addListener("show",
+"hidden";a.style.height="100%";var l=mxUtils.button(mxResources.get("startDrawing"),function(){f.freehand.isDrawing()&&f.freehand.stopDrawing();f.freehand.startDrawing()});l.setAttribute("title",mxResources.get("startDrawing"));l.style.marginTop="8px";l.style.marginRight="4px";l.style.width="160px";l.style.overflow="hidden";l.style.textOverflow="ellipsis";l.style.textAlign="center";l.className="geBtn gePrimaryBtn";a.appendChild(l);var m=l.cloneNode(!1);mxUtils.write(m,mxResources.get("stopDrawing"));
+m.setAttribute("title",mxResources.get("stopDrawing"));m.style.marginTop="4px";mxEvent.addListener(m,"click",function(){f.freehand.stopDrawing()});a.appendChild(m);this.window=new mxWindow(mxResources.get("freehand"),a,d,b,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);f.addListener("freehandStateChanged",mxUtils.bind(this,function(){m.className="geBtn"+(f.freehand.isDrawing()?" gePrimaryBtn":"")}));this.window.addListener("show",
mxUtils.bind(this,function(){this.window.fit()}));this.window.addListener("hide",mxUtils.bind(this,function(){f.freehand.isDrawing()&&f.freehand.stopDrawing()}));this.window.setLocation=function(a,e){var b=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));e=Math.max(0,Math.min(e,b-this.table.clientHeight-48));this.getX()==a&&this.getY()==
-e||mxWindow.prototype.setLocation.apply(this,arguments)};var e=mxUtils.bind(this,function(){var a=this.window.getX(),e=this.window.getY();this.window.setLocation(a,e)});mxEvent.addListener(window,"resize",e);this.destroy=function(){mxEvent.removeListener(window,"resize",e);this.window.destroy()}},TagsWindow=function(a,d,b,c,g){var f=a.editor.graph,m="tags",n=document.createElement("div");n.style.userSelect="none";n.style.overflow="hidden";n.style.padding="10px";n.style.height="100%";var e=document.createElement("input");
-e.setAttribute("placeholder",mxResources.get("allTags"));e.setAttribute("type","text");e.style.marginTop="4px";e.style.width="260px";e.style.fontSize="12px";e.style.borderRadius="4px";e.style.padding="6px";n.appendChild(e);if(!a.isOffline()||mxClient.IS_CHROMEAPP){e.style.width="240px";var k=a.menus.createHelpLink("https://www.diagrams.net/doc/faq/tags-plugin");k.firstChild.style.marginBottom="6px";k.style.marginLeft="6px";n.appendChild(k)}mxEvent.addListener(e,"dblclick",function(){var e=new FilenameDialog(a,
-m,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&(m=a)}),mxResources.get("enterPropertyName"));a.showDialog(e.container,300,80,!0,!0);e.init()});e.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(n);k=mxUtils.button(mxResources.get("hide"),function(){var a=f.getCellsForTags(e.value.split(" "),void 0,m,!0);f.setCellsVisible(a,!1)});k.setAttribute("title",mxResources.get("hide"));k.style.marginTop="8px";k.style.marginRight="4px";k.className="geBtn";
-n.appendChild(k);k=mxUtils.button(mxResources.get("show"),function(){var a=f.getCellsForTags(e.value.split(" "),void 0,m,!0);f.setCellsVisible(a,!0);if(f.isEnabled()){for(var b=[],c=0;c<a.length;c++)(f.model.isVertex(a[c])||f.model.isEdge(a[c]))&&b.push(a[c]);f.setSelectionCells(b)}else for(c=0;c<a.length;c++)f.highlightCell(a[c])});k.setAttribute("title",mxResources.get("show"));k.style.marginTop="8px";k.style.marginRight="4px";k.className="geBtn";n.appendChild(k);var l=a.actions.get("tags"),k=mxUtils.button(mxResources.get("close"),
-function(){l.funct()});k.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");k.style.marginTop="8px";k.className="geBtn gePrimaryBtn";n.appendChild(k);mxEvent.addListener(e,"keyup",function(a){13!=a.keyCode&&27!=a.keyCode||l.funct()});this.window=new mxWindow(mxResources.get("tags"),n,d,b,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();
+e||mxWindow.prototype.setLocation.apply(this,arguments)};var e=mxUtils.bind(this,function(){var a=this.window.getX(),e=this.window.getY();this.window.setLocation(a,e)});mxEvent.addListener(window,"resize",e);this.destroy=function(){mxEvent.removeListener(window,"resize",e);this.window.destroy()}},TagsWindow=function(a,d,b,c,g){var f=a.editor.graph,l="tags",m=document.createElement("div");m.style.userSelect="none";m.style.overflow="hidden";m.style.padding="10px";m.style.height="100%";var e=document.createElement("input");
+e.setAttribute("placeholder",mxResources.get("allTags"));e.setAttribute("type","text");e.style.marginTop="4px";e.style.width="260px";e.style.fontSize="12px";e.style.borderRadius="4px";e.style.padding="6px";m.appendChild(e);if(!a.isOffline()||mxClient.IS_CHROMEAPP){e.style.width="240px";var k=a.menus.createHelpLink("https://www.diagrams.net/doc/faq/tags-plugin");k.firstChild.style.marginBottom="6px";k.style.marginLeft="6px";m.appendChild(k)}mxEvent.addListener(e,"dblclick",function(){var e=new FilenameDialog(a,
+l,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&(l=a)}),mxResources.get("enterPropertyName"));a.showDialog(e.container,300,80,!0,!0);e.init()});e.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(m);k=mxUtils.button(mxResources.get("hide"),function(){var a=f.getCellsForTags(e.value.split(" "),void 0,l,!0);f.setCellsVisible(a,!1)});k.setAttribute("title",mxResources.get("hide"));k.style.marginTop="8px";k.style.marginRight="4px";k.className="geBtn";
+m.appendChild(k);k=mxUtils.button(mxResources.get("show"),function(){var a=f.getCellsForTags(e.value.split(" "),void 0,l,!0);f.setCellsVisible(a,!0);if(f.isEnabled()){for(var b=[],c=0;c<a.length;c++)(f.model.isVertex(a[c])||f.model.isEdge(a[c]))&&b.push(a[c]);f.setSelectionCells(b)}else for(c=0;c<a.length;c++)f.highlightCell(a[c])});k.setAttribute("title",mxResources.get("show"));k.style.marginTop="8px";k.style.marginRight="4px";k.className="geBtn";m.appendChild(k);var n=a.actions.get("tags"),k=mxUtils.button(mxResources.get("close"),
+function(){n.funct()});k.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");k.style.marginTop="8px";k.className="geBtn gePrimaryBtn";m.appendChild(k);mxEvent.addListener(e,"keyup",function(a){13!=a.keyCode&&27!=a.keyCode||n.funct()});this.window=new mxWindow(mxResources.get("tags"),m,d,b,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();
this.window.isVisible()?(e.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null)):f.container.focus()}));this.window.setLocation=function(a,e){var b=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));e=Math.max(0,Math.min(e,b-this.table.clientHeight-48));this.getX()==
a&&this.getY()==e||mxWindow.prototype.setLocation.apply(this,arguments)};var p=mxUtils.bind(this,function(){var a=this.window.getX(),e=this.window.getY();this.window.setLocation(a,e)});mxEvent.addListener(window,"resize",p);this.destroy=function(){mxEvent.removeListener(window,"resize",p);this.window.destroy()}},AuthDialog=function(a,d,b,c){var g=document.createElement("div");g.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin=
-"0px";f.style.color="gray";mxUtils.write(f,mxResources.get("authorizationRequired"));var m="Unknown",n=document.createElement("img");n.setAttribute("border","0");n.setAttribute("align","absmiddle");n.style.marginRight="10px";d==a.drive?(m=mxResources.get("googleDrive"),n.src=IMAGE_PATH+"/google-drive-logo-white.svg"):d==a.dropbox?(m=mxResources.get("dropbox"),n.src=IMAGE_PATH+"/dropbox-logo-white.svg"):d==a.oneDrive?(m=mxResources.get("oneDrive"),n.src=IMAGE_PATH+"/onedrive-logo-white.svg"):d==a.gitHub?
-(m=mxResources.get("github"),n.src=IMAGE_PATH+"/github-logo-white.svg"):d==a.gitLab?(m=mxResources.get("gitlab"),n.src=IMAGE_PATH+"/gitlab-logo.svg",n.style.width="32px"):d==a.trello&&(m=mxResources.get("trello"),n.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizeThisAppIn",[m]));var e=document.createElement("input");e.setAttribute("type","checkbox");m=mxUtils.button(mxResources.get("authorize"),function(){c(e.checked)});m.insertBefore(n,
-m.firstChild);m.style.marginTop="6px";m.className="geBigButton";m.style.fontSize="18px";m.style.padding="14px";g.appendChild(f);g.appendChild(a);g.appendChild(m);b&&(b=document.createElement("p"),b.style.marginTop="20px",b.appendChild(e),f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberMe")),b.appendChild(f),g.appendChild(b),e.checked=!0,e.defaultChecked=!0,mxEvent.addListener(f,"click",function(a){e.checked=!e.checked;mxEvent.consume(a)}));this.container=g},MoreShapesDialog=
-function(a,d,b){b=null!=b?b:a.sidebar.entries;var c=document.createElement("div"),g=[];if(null!=a.sidebar.customEntries)for(var f=0;f<a.sidebar.customEntries.length;f++){for(var m=a.sidebar.customEntries[f],n={title:a.getResource(m.title),entries:[]},e=0;e<m.entries.length;e++){var k=m.entries[e];n.entries.push({id:k.id,title:a.getResource(k.title),desc:a.getResource(k.desc),image:k.preview})}g.push(n)}for(f=0;f<b.length;f++)if(null==a.sidebar.enabledLibraries)g.push(b[f]);else{n={title:b[f].title,
-entries:[]};for(e=0;e<b[f].entries.length;e++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,b[f].entries[e].id)&&n.entries.push(b[f].entries[e]);0<n.entries.length&&g.push(n)}b=g;if(d){f=mxUtils.bind(this,function(e){for(var b=0;b<e.length;b++)(function(e){var c=q.cloneNode(!1);c.style.fontWeight="bold";c.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";c.style.padding="6px 0px 6px 20px";mxUtils.write(c,e.title);l.appendChild(c);for(var d=0;d<e.entries.length;d++)(function(e){var c=q.cloneNode(!1);
-c.style.cursor="pointer";c.style.padding="4px 0px 4px 20px";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.textOverflow="ellipsis";c.setAttribute("title",e.title+" ("+e.id+")");var k=document.createElement("input");k.setAttribute("type","checkbox");k.checked=a.sidebar.isEntryVisible(e.id);k.defaultChecked=k.checked;c.appendChild(k);mxUtils.write(c," "+e.title);l.appendChild(c);var f=function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){p.style.textAlign="center";p.style.padding=
+"0px";f.style.color="gray";mxUtils.write(f,mxResources.get("authorizationRequired"));var l="Unknown",m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("align","absmiddle");m.style.marginRight="10px";d==a.drive?(l=mxResources.get("googleDrive"),m.src=IMAGE_PATH+"/google-drive-logo-white.svg"):d==a.dropbox?(l=mxResources.get("dropbox"),m.src=IMAGE_PATH+"/dropbox-logo-white.svg"):d==a.oneDrive?(l=mxResources.get("oneDrive"),m.src=IMAGE_PATH+"/onedrive-logo-white.svg"):d==a.gitHub?
+(l=mxResources.get("github"),m.src=IMAGE_PATH+"/github-logo-white.svg"):d==a.gitLab?(l=mxResources.get("gitlab"),m.src=IMAGE_PATH+"/gitlab-logo.svg",m.style.width="32px"):d==a.trello&&(l=mxResources.get("trello"),m.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizeThisAppIn",[l]));var e=document.createElement("input");e.setAttribute("type","checkbox");l=mxUtils.button(mxResources.get("authorize"),function(){c(e.checked)});l.insertBefore(m,
+l.firstChild);l.style.marginTop="6px";l.className="geBigButton";l.style.fontSize="18px";l.style.padding="14px";g.appendChild(f);g.appendChild(a);g.appendChild(l);b&&(b=document.createElement("p"),b.style.marginTop="20px",b.appendChild(e),f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberMe")),b.appendChild(f),g.appendChild(b),e.checked=!0,e.defaultChecked=!0,mxEvent.addListener(f,"click",function(a){e.checked=!e.checked;mxEvent.consume(a)}));this.container=g},MoreShapesDialog=
+function(a,d,b){b=null!=b?b:a.sidebar.entries;var c=document.createElement("div"),g=[];if(null!=a.sidebar.customEntries)for(var f=0;f<a.sidebar.customEntries.length;f++){for(var l=a.sidebar.customEntries[f],m={title:a.getResource(l.title),entries:[]},e=0;e<l.entries.length;e++){var k=l.entries[e];m.entries.push({id:k.id,title:a.getResource(k.title),desc:a.getResource(k.desc),image:k.preview})}g.push(m)}for(f=0;f<b.length;f++)if(null==a.sidebar.enabledLibraries)g.push(b[f]);else{m={title:b[f].title,
+entries:[]};for(e=0;e<b[f].entries.length;e++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,b[f].entries[e].id)&&m.entries.push(b[f].entries[e]);0<m.entries.length&&g.push(m)}b=g;if(d){f=mxUtils.bind(this,function(e){for(var b=0;b<e.length;b++)(function(e){var c=q.cloneNode(!1);c.style.fontWeight="bold";c.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";c.style.padding="6px 0px 6px 20px";mxUtils.write(c,e.title);n.appendChild(c);for(var d=0;d<e.entries.length;d++)(function(e){var c=q.cloneNode(!1);
+c.style.cursor="pointer";c.style.padding="4px 0px 4px 20px";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.textOverflow="ellipsis";c.setAttribute("title",e.title+" ("+e.id+")");var k=document.createElement("input");k.setAttribute("type","checkbox");k.checked=a.sidebar.isEntryVisible(e.id);k.defaultChecked=k.checked;c.appendChild(k);mxUtils.write(c," "+e.title);n.appendChild(c);var f=function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){p.style.textAlign="center";p.style.padding=
"0px";p.style.color="";p.innerHTML="";if(null!=e.desc){var b=document.createElement("pre");b.style.boxSizing="border-box";b.style.fontFamily="inherit";b.style.margin="20px";b.style.right="0px";b.style.textAlign="left";mxUtils.write(b,e.desc);p.appendChild(b)}null!=e.imageCallback?e.imageCallback(p):null!=e.image?p.innerHTML+='<img border="0" src="'+e.image+'"/>':null==e.desc&&(p.style.padding="20px",p.style.color="rgb(179, 179, 179)",mxUtils.write(p,mxResources.get("noPreview")));null!=u&&(u.style.backgroundColor=
"");u=c;u.style.backgroundColor="dark"==uiTheme?"#000000":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(c,"click",f);mxEvent.addListener(c,"dblclick",function(a){k.checked=!k.checked;mxEvent.consume(a)});t.push(function(){return k.checked?e.id:null});0==b&&0==d&&f()})(e.entries[d])})(e[b])});e=document.createElement("div");e.className="geDialogTitle";mxUtils.write(e,mxResources.get("shapes"));e.style.position="absolute";e.style.top="0px";e.style.left="0px";e.style.lineHeight="40px";
-e.style.height="40px";e.style.right="0px";var l=document.createElement("div"),p=document.createElement("div");l.style.position="absolute";l.style.top="40px";l.style.left="0px";l.style.width="202px";l.style.bottom="60px";l.style.overflow="auto";p.style.position="absolute";p.style.left="202px";p.style.right="0px";p.style.top="40px";p.style.bottom="60px";p.style.overflow="auto";p.style.borderLeft="1px solid rgb(211, 211, 211)";p.style.textAlign="center";var u=null,t=[],q=document.createElement("div");
-q.style.position="relative";q.style.left="0px";q.style.right="0px";f(b);c.style.padding="30px";c.appendChild(e);c.appendChild(l);c.appendChild(p);b=document.createElement("div");b.className="geDialogFooter";b.style.position="absolute";b.style.paddingRight="16px";b.style.color="gray";b.style.left="0px";b.style.right="0px";b.style.bottom="0px";b.style.height="60px";b.style.lineHeight="52px";var v=document.createElement("input");v.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)f=
+e.style.height="40px";e.style.right="0px";var n=document.createElement("div"),p=document.createElement("div");n.style.position="absolute";n.style.top="40px";n.style.left="0px";n.style.width="202px";n.style.bottom="60px";n.style.overflow="auto";p.style.position="absolute";p.style.left="202px";p.style.right="0px";p.style.top="40px";p.style.bottom="60px";p.style.overflow="auto";p.style.borderLeft="1px solid rgb(211, 211, 211)";p.style.textAlign="center";var u=null,t=[],q=document.createElement("div");
+q.style.position="relative";q.style.left="0px";q.style.right="0px";f(b);c.style.padding="30px";c.appendChild(e);c.appendChild(n);c.appendChild(p);b=document.createElement("div");b.className="geDialogFooter";b.style.position="absolute";b.style.paddingRight="16px";b.style.color="gray";b.style.left="0px";b.style.right="0px";b.style.bottom="0px";b.style.height="60px";b.style.lineHeight="52px";var v=document.createElement("input");v.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)f=
document.createElement("span"),f.style.paddingRight="20px",f.appendChild(v),mxUtils.write(f," "+mxResources.get("rememberThisSetting")),v.checked=!0,v.defaultChecked=!0,mxEvent.addListener(f,"click",function(a){mxEvent.getSource(a)!=v&&(v.checked=!v.checked,mxEvent.consume(a))}),b.appendChild(f);f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});f.className="geBtn";e=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();for(var e=[],b=0;b<t.length;b++){var c=t[b].apply(this,
-arguments);null!=c&&e.push(c)}a.sidebar.showEntries(e.join(";"),v.checked,!0)});e.className="geBtn gePrimaryBtn"}else{var y=document.createElement("table"),f=document.createElement("tbody");c.style.height="100%";c.style.overflow="auto";e=document.createElement("tr");y.style.width="100%";d=document.createElement("td");var g=document.createElement("td"),m=document.createElement("td"),x=mxUtils.bind(this,function(e,b,c){var d=document.createElement("input");d.type="checkbox";y.appendChild(d);d.checked=
-a.sidebar.isEntryVisible(c);var k=document.createElement("span");mxUtils.write(k,b);b=document.createElement("div");b.style.display="block";b.appendChild(d);b.appendChild(k);mxEvent.addListener(k,"click",function(a){d.checked=!d.checked;mxEvent.consume(a)});e.appendChild(b);return function(){return d.checked?c:null}});e.appendChild(d);e.appendChild(g);e.appendChild(m);f.appendChild(e);y.appendChild(f);for(var t=[],B=0,f=0;f<b.length;f++)for(e=0;e<b[f].entries.length;e++)B++;for(var z=[d,g,m],A=0,
+arguments);null!=c&&e.push(c)}a.sidebar.showEntries(e.join(";"),v.checked,!0)});e.className="geBtn gePrimaryBtn"}else{var y=document.createElement("table"),f=document.createElement("tbody");c.style.height="100%";c.style.overflow="auto";e=document.createElement("tr");y.style.width="100%";d=document.createElement("td");var g=document.createElement("td"),l=document.createElement("td"),x=mxUtils.bind(this,function(e,b,c){var d=document.createElement("input");d.type="checkbox";y.appendChild(d);d.checked=
+a.sidebar.isEntryVisible(c);var k=document.createElement("span");mxUtils.write(k,b);b=document.createElement("div");b.style.display="block";b.appendChild(d);b.appendChild(k);mxEvent.addListener(k,"click",function(a){d.checked=!d.checked;mxEvent.consume(a)});e.appendChild(b);return function(){return d.checked?c:null}});e.appendChild(d);e.appendChild(g);e.appendChild(l);f.appendChild(e);y.appendChild(f);for(var t=[],B=0,f=0;f<b.length;f++)for(e=0;e<b[f].entries.length;e++)B++;for(var z=[d,g,l],A=0,
f=0;f<b.length;f++)(function(a){for(var e=0;e<a.entries.length;e++){var b=a.entries[e];t.push(x(z[Math.floor(A/(B/3))],b.title,b.id));A++}})(b[f]);c.appendChild(y);b=document.createElement("div");b.style.marginTop="18px";b.style.textAlign="center";v=document.createElement("input");isLocalStorage&&(v.setAttribute("type","checkbox"),v.checked=!0,v.defaultChecked=!0,b.appendChild(v),f=document.createElement("span"),mxUtils.write(f," "+mxResources.get("rememberThisSetting")),b.appendChild(f),mxEvent.addListener(f,
"click",function(a){v.checked=!v.checked;mxEvent.consume(a)}));c.appendChild(b);f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});f.className="geBtn";e=mxUtils.button(mxResources.get("apply"),function(){for(var e=["search"],b=0;b<t.length;b++){var c=t[b].apply(this,arguments);null!=c&&e.push(c)}a.sidebar.showEntries(0<e.length?e.join(";"):"",v.checked);a.hideDialog()});e.className="geBtn gePrimaryBtn";b=document.createElement("div");b.style.marginTop="26px";b.style.textAlign=
-"right"}a.editor.cancelFirst?(b.appendChild(f),b.appendChild(e)):(b.appendChild(e),b.appendChild(f));c.appendChild(b);this.container=c},PluginsDialog=function(a,d,b){function c(){if(0==m.length)f.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{f.innerHTML="";for(var e=0;e<m.length;e++){var d=document.createElement("span");d.style.whiteSpace="nowrap";var k=document.createElement("span");k.className="geSprite geSprite-delete";k.style.position="relative";k.style.cursor="pointer";k.style.top=
-"5px";k.style.marginRight="4px";k.style.display="inline-block";d.appendChild(k);mxUtils.write(d,m[e]);f.appendChild(d);mxUtils.br(f);mxEvent.addListener(k,"click",function(e){return function(){a.confirm(mxResources.get("delete")+' "'+m[e]+'"?',function(){null!=b&&b(m[e]);m.splice(e,1);c()})}}(e))}}}var g=document.createElement("div"),f=document.createElement("div");f.style.height="120px";f.style.overflow="auto";var m=mxSettings.getPlugins().slice();g.appendChild(f);c();var n=mxUtils.button(mxResources.get("add")+
-"...",null!=d?function(){d(function(a){a&&0>mxUtils.indexOf(m,a)&&m.push(a);c()})}:function(){var e=document.createElement("div"),b=document.createElement("span");b.style.marginTop="6px";mxUtils.write(b,mxResources.get("builtinPlugins")+": ");e.appendChild(b);var d=document.createElement("select");d.style.width="150px";for(b=0;b<App.publicPlugin.length;b++){var k=document.createElement("option");mxUtils.write(k,App.publicPlugin[b]);k.value=App.publicPlugin[b];d.appendChild(k)}e.appendChild(d);mxUtils.br(e);
-mxUtils.br(e);b=mxUtils.button(mxResources.get("custom")+"...",function(){var e=new FilenameDialog(a,"",mxResources.get("add"),function(e){a.hideDialog();if(null!=e&&0<e.length){e=e.split(";");for(var b=0;b<e.length;b++){var d=e[b],k=App.pluginRegistry[d];null!=k&&(d=k);0<d.length&&0>mxUtils.indexOf(m,d)&&m.push(d)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");a.showDialog(e.container,300,80,!0,!0);e.init()});b.className="geBtn";e=new CustomDialog(a,e,mxUtils.bind(this,function(){var a=
-App.pluginRegistry[d.value];0>mxUtils.indexOf(m,a)&&(m.push(a),c())}),null,null,null,b);a.showDialog(e.container,300,80,!0,!0)});n.className="geBtn";var e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";var k=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(m);mxSettings.save();a.hideDialog();a.alert(mxResources.get("restartForChangeRequired"))});k.className="geBtn gePrimaryBtn";var l=document.createElement("div");l.style.marginTop=
-"14px";l.style.textAlign="right";var p=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://www.diagrams.net/doc/faq/plugins")});p.className="geBtn";a.isOffline()&&!mxClient.IS_CHROMEAPP&&(p.style.display="none");l.appendChild(p);a.editor.cancelFirst?(l.appendChild(e),l.appendChild(n),l.appendChild(k)):(l.appendChild(n),l.appendChild(k),l.appendChild(e));g.appendChild(l);this.container=g},CropImageDialog=function(a,d,b){function c(a){null!=m&&m.destroy();m=a?new Croppie(f,{viewport:{width:150,
-height:150,type:"circle"},enableExif:!0,showZoomer:!1,enableResize:!1,enableOrientation:!0}):new Croppie(f,{viewport:{width:150,height:150,type:"square"},enableExif:!0,showZoomer:!1,enableResize:!0,enableOrientation:!0});m.bind({url:d})}var g=document.createElement("div"),f=document.createElement("div");f.style.width="300px";f.style.height="300px";g.appendChild(f);var m=null;this.init=function(){c()};var n=document.createElement("input");n.setAttribute("type","checkbox");n.setAttribute("id","croppieCircle");
-n.style.margin="5px";g.appendChild(n);var e=document.createElement("label");e.setAttribute("for","croppieCircle");mxUtils.write(e,mxResources.get("circle"));g.appendChild(e);var k,l,p,u,e=document.createElement("div");k=document.createElement("button");l=document.createElement("button");e.appendChild(k);e.appendChild(l);p=document.createElement("i");u=document.createElement("i");k.appendChild(p);l.appendChild(u);e.className="cr-rotate-controls";e.style["float"]="right";e.style.position="inherit";
-k.className="cr-rotate-l";l.className="cr-rotate-r";g.appendChild(e);k.addEventListener("click",function(){m.rotate(-90)});l.addEventListener("click",function(){m.rotate(90)});mxEvent.addListener(n,"change",function(){c(this.checked)});n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";e=mxUtils.button(mxResources.get("apply"),function(){m.result({type:"base64",size:"original"}).then(function(e){b(e);a.hideDialog()})});e.className="geBtn gePrimaryBtn";k=document.createElement("div");
-k.style.marginTop="20px";k.style.textAlign="right";a.editor.cancelFirst?(k.appendChild(n),k.appendChild(e)):(k.appendChild(e),k.appendChild(n));g.appendChild(k);this.container=g},EditGeometryDialog=function(a,d){var b=a.editor.graph,c=1==d.length?b.getCellGeometry(d[0]):null,g=document.createElement("div"),f=document.createElement("table"),m=document.createElement("tbody"),n=document.createElement("tr"),e=document.createElement("td"),k=document.createElement("td");f.style.paddingLeft="6px";mxUtils.write(e,
-mxResources.get("relative")+":");var l=document.createElement("input");l.setAttribute("type","checkbox");null!=c&&c.relative&&(l.setAttribute("checked","checked"),l.defaultChecked=!0);this.init=function(){l.focus()};k.appendChild(l);n.appendChild(e);n.appendChild(k);m.appendChild(n);n=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("left")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width=
-"100px";p.value=null!=c?c.x:"";k.appendChild(p);n.appendChild(e);n.appendChild(k);m.appendChild(n);n=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("top")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.width="100px";u.value=null!=c?c.y:"";k.appendChild(u);n.appendChild(e);n.appendChild(k);m.appendChild(n);n=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");
-mxUtils.write(e,mxResources.get("dx")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=c&&null!=c.offset?c.offset.x:"";k.appendChild(t);n.appendChild(e);n.appendChild(k);m.appendChild(n);n=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("dy")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value=null!=c&&null!=c.offset?
-c.offset.y:"";k.appendChild(q);n.appendChild(e);n.appendChild(k);m.appendChild(n);n=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("width")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=c?c.width:"";k.appendChild(v);n.appendChild(e);n.appendChild(k);m.appendChild(n);n=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,
-mxResources.get("height")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=null!=c?c.height:"";k.appendChild(y);n.appendChild(e);n.appendChild(k);m.appendChild(n);n=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("rotation")+":");var x=document.createElement("input");x.setAttribute("type","text");x.style.width="100px";x.value=1==d.length?mxUtils.getValue(b.getCellStyle(d[0]),
-mxConstants.STYLE_ROTATION,0):"";k.appendChild(x);n.appendChild(e);n.appendChild(k);m.appendChild(n);f.appendChild(m);g.appendChild(f);c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});c.className="geBtn";var B=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.getModel().beginUpdate();try{for(var e=0;e<d.length;e++){var c=b.getCellGeometry(d[e]);null!=c&&(c=c.clone(),b.isCellMovable(d[e])&&(c.relative=l.checked,0<mxUtils.trim(p.value).length&&(c.x=Number(p.value)),
+"right"}a.editor.cancelFirst?(b.appendChild(f),b.appendChild(e)):(b.appendChild(e),b.appendChild(f));c.appendChild(b);this.container=c},PluginsDialog=function(a,d,b){function c(){if(0==l.length)f.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{f.innerHTML="";for(var e=0;e<l.length;e++){var d=document.createElement("span");d.style.whiteSpace="nowrap";var k=document.createElement("span");k.className="geSprite geSprite-delete";k.style.position="relative";k.style.cursor="pointer";k.style.top=
+"5px";k.style.marginRight="4px";k.style.display="inline-block";d.appendChild(k);mxUtils.write(d,l[e]);f.appendChild(d);mxUtils.br(f);mxEvent.addListener(k,"click",function(e){return function(){a.confirm(mxResources.get("delete")+' "'+l[e]+'"?',function(){null!=b&&b(l[e]);l.splice(e,1);c()})}}(e))}}}var g=document.createElement("div"),f=document.createElement("div");f.style.height="120px";f.style.overflow="auto";var l=mxSettings.getPlugins().slice();g.appendChild(f);c();var m=mxUtils.button(mxResources.get("add")+
+"...",null!=d?function(){d(function(a){a&&0>mxUtils.indexOf(l,a)&&l.push(a);c()})}:function(){var e=document.createElement("div"),b=document.createElement("span");b.style.marginTop="6px";mxUtils.write(b,mxResources.get("builtinPlugins")+": ");e.appendChild(b);var d=document.createElement("select");d.style.width="150px";for(b=0;b<App.publicPlugin.length;b++){var k=document.createElement("option");mxUtils.write(k,App.publicPlugin[b]);k.value=App.publicPlugin[b];d.appendChild(k)}e.appendChild(d);mxUtils.br(e);
+mxUtils.br(e);b=mxUtils.button(mxResources.get("custom")+"...",function(){var e=new FilenameDialog(a,"",mxResources.get("add"),function(e){a.hideDialog();if(null!=e&&0<e.length){e=e.split(";");for(var b=0;b<e.length;b++){var d=e[b],k=App.pluginRegistry[d];null!=k&&(d=k);0<d.length&&0>mxUtils.indexOf(l,d)&&l.push(d)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");a.showDialog(e.container,300,80,!0,!0);e.init()});b.className="geBtn";e=new CustomDialog(a,e,mxUtils.bind(this,function(){var a=
+App.pluginRegistry[d.value];0>mxUtils.indexOf(l,a)&&(l.push(a),c())}),null,null,null,b);a.showDialog(e.container,300,80,!0,!0)});m.className="geBtn";var e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";var k=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(l);mxSettings.save();a.hideDialog();a.alert(mxResources.get("restartForChangeRequired"))});k.className="geBtn gePrimaryBtn";var n=document.createElement("div");n.style.marginTop=
+"14px";n.style.textAlign="right";var p=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://www.diagrams.net/doc/faq/plugins")});p.className="geBtn";a.isOffline()&&!mxClient.IS_CHROMEAPP&&(p.style.display="none");n.appendChild(p);a.editor.cancelFirst?(n.appendChild(e),n.appendChild(m),n.appendChild(k)):(n.appendChild(m),n.appendChild(k),n.appendChild(e));g.appendChild(n);this.container=g},CropImageDialog=function(a,d,b){function c(a){null!=l&&l.destroy();l=a?new Croppie(f,{viewport:{width:150,
+height:150,type:"circle"},enableExif:!0,showZoomer:!1,enableResize:!1,enableOrientation:!0}):new Croppie(f,{viewport:{width:150,height:150,type:"square"},enableExif:!0,showZoomer:!1,enableResize:!0,enableOrientation:!0});l.bind({url:d})}var g=document.createElement("div"),f=document.createElement("div");f.style.width="300px";f.style.height="300px";g.appendChild(f);var l=null;this.init=function(){c()};var m=document.createElement("input");m.setAttribute("type","checkbox");m.setAttribute("id","croppieCircle");
+m.style.margin="5px";g.appendChild(m);var e=document.createElement("label");e.setAttribute("for","croppieCircle");mxUtils.write(e,mxResources.get("circle"));g.appendChild(e);var k,n,p,u,e=document.createElement("div");k=document.createElement("button");n=document.createElement("button");e.appendChild(k);e.appendChild(n);p=document.createElement("i");u=document.createElement("i");k.appendChild(p);n.appendChild(u);e.className="cr-rotate-controls";e.style["float"]="right";e.style.position="inherit";
+k.className="cr-rotate-l";n.className="cr-rotate-r";g.appendChild(e);k.addEventListener("click",function(){l.rotate(-90)});n.addEventListener("click",function(){l.rotate(90)});mxEvent.addListener(m,"change",function(){c(this.checked)});m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";e=mxUtils.button(mxResources.get("apply"),function(){l.result({type:"base64",size:"original"}).then(function(e){b(e);a.hideDialog()})});e.className="geBtn gePrimaryBtn";k=document.createElement("div");
+k.style.marginTop="20px";k.style.textAlign="right";a.editor.cancelFirst?(k.appendChild(m),k.appendChild(e)):(k.appendChild(e),k.appendChild(m));g.appendChild(k);this.container=g},EditGeometryDialog=function(a,d){var b=a.editor.graph,c=1==d.length?b.getCellGeometry(d[0]):null,g=document.createElement("div"),f=document.createElement("table"),l=document.createElement("tbody"),m=document.createElement("tr"),e=document.createElement("td"),k=document.createElement("td");f.style.paddingLeft="6px";mxUtils.write(e,
+mxResources.get("relative")+":");var n=document.createElement("input");n.setAttribute("type","checkbox");null!=c&&c.relative&&(n.setAttribute("checked","checked"),n.defaultChecked=!0);this.init=function(){n.focus()};k.appendChild(n);m.appendChild(e);m.appendChild(k);l.appendChild(m);m=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("left")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width=
+"100px";p.value=null!=c?c.x:"";k.appendChild(p);m.appendChild(e);m.appendChild(k);l.appendChild(m);m=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("top")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.width="100px";u.value=null!=c?c.y:"";k.appendChild(u);m.appendChild(e);m.appendChild(k);l.appendChild(m);m=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");
+mxUtils.write(e,mxResources.get("dx")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=c&&null!=c.offset?c.offset.x:"";k.appendChild(t);m.appendChild(e);m.appendChild(k);l.appendChild(m);m=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("dy")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value=null!=c&&null!=c.offset?
+c.offset.y:"";k.appendChild(q);m.appendChild(e);m.appendChild(k);l.appendChild(m);m=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("width")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=c?c.width:"";k.appendChild(v);m.appendChild(e);m.appendChild(k);l.appendChild(m);m=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,
+mxResources.get("height")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=null!=c?c.height:"";k.appendChild(y);m.appendChild(e);m.appendChild(k);l.appendChild(m);m=document.createElement("tr");e=document.createElement("td");k=document.createElement("td");mxUtils.write(e,mxResources.get("rotation")+":");var x=document.createElement("input");x.setAttribute("type","text");x.style.width="100px";x.value=1==d.length?mxUtils.getValue(b.getCellStyle(d[0]),
+mxConstants.STYLE_ROTATION,0):"";k.appendChild(x);m.appendChild(e);m.appendChild(k);l.appendChild(m);f.appendChild(l);g.appendChild(f);c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});c.className="geBtn";var B=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();b.getModel().beginUpdate();try{for(var e=0;e<d.length;e++){var c=b.getCellGeometry(d[e]);null!=c&&(c=c.clone(),b.isCellMovable(d[e])&&(c.relative=n.checked,0<mxUtils.trim(p.value).length&&(c.x=Number(p.value)),
0<mxUtils.trim(u.value).length&&(c.y=Number(u.value)),0<mxUtils.trim(t.value).length&&(null==c.offset&&(c.offset=new mxPoint),c.offset.x=Number(t.value)),0<mxUtils.trim(q.value).length&&(null==c.offset&&(c.offset=new mxPoint),c.offset.y=Number(q.value))),b.isCellResizable(d[e])&&(0<mxUtils.trim(v.value).length&&(c.width=Number(v.value)),0<mxUtils.trim(y.value).length&&(c.height=Number(y.value))),b.getModel().setGeometry(d[e],c));0<mxUtils.trim(x.value).length&&b.setCellStyles(mxConstants.STYLE_ROTATION,
-Number(x.value),[d[e]])}}finally{b.getModel().endUpdate()}});B.className="geBtn gePrimaryBtn";mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&B.click()});f=document.createElement("div");f.style.marginTop="20px";f.style.textAlign="right";a.editor.cancelFirst?(f.appendChild(c),f.appendChild(B)):(f.appendChild(B),f.appendChild(c));g.appendChild(f);this.container=g},LibraryDialog=function(a,d,b,c,g,f){function m(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=
-t;)a=a.parentNode;var e=null;if(null!=a)for(var b=t.firstChild,e=0;null!=b&&b!=a;)b=b.nextSibling,e++;return e}function n(e,b,c,d,k,f,g,p,u){try{if(a.spinner.stop(),null==b||"image/"==b.substring(0,6))if(null==e&&null!=g||null==v[e]){var M=function(){I.innerHTML="";I.style.cursor="pointer";I.style.whiteSpace="nowrap";I.style.textOverflow="ellipsis";mxUtils.write(I,null!=G.title&&0<G.title.length?G.title:mxResources.get("untitled"));I.style.color=null==G.title||0==G.title.length?"#d0d0d0":""};t.style.backgroundImage=
+Number(x.value),[d[e]])}}finally{b.getModel().endUpdate()}});B.className="geBtn gePrimaryBtn";mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&B.click()});f=document.createElement("div");f.style.marginTop="20px";f.style.textAlign="right";a.editor.cancelFirst?(f.appendChild(c),f.appendChild(B)):(f.appendChild(B),f.appendChild(c));g.appendChild(f);this.container=g},LibraryDialog=function(a,d,b,c,g,f){function l(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=
+t;)a=a.parentNode;var e=null;if(null!=a)for(var b=t.firstChild,e=0;null!=b&&b!=a;)b=b.nextSibling,e++;return e}function m(e,b,c,d,k,f,g,p,u){try{if(a.spinner.stop(),null==b||"image/"==b.substring(0,6))if(null==e&&null!=g||null==v[e]){var M=function(){I.innerHTML="";I.style.cursor="pointer";I.style.whiteSpace="nowrap";I.style.textOverflow="ellipsis";mxUtils.write(I,null!=G.title&&0<G.title.length?G.title:mxResources.get("untitled"));I.style.color=null==G.title||0==G.title.length?"#d0d0d0":""};t.style.backgroundImage=
"";q.style.display="none";var x=k,L=f;if(k>a.maxImageSize||f>a.maxImageSize){var C=Math.min(1,Math.min(a.maxImageSize/Math.max(1,k)),a.maxImageSize/Math.max(1,f));k*=C;f*=C}x>L?(L=Math.round(100*L/x),x=100):(x=Math.round(100*x/L),L=100);var N=document.createElement("div");N.setAttribute("draggable","true");N.style.display="inline-block";N.style.position="relative";N.style.cursor="move";mxUtils.setPrefixedStyle(N.style,"transition","transform .1s ease-in-out");if(null!=e){var E=document.createElement("img");
E.setAttribute("src",z.convert(e));E.style.width=x+"px";E.style.height=L+"px";E.style.margin="10px";E.style.paddingBottom=Math.floor((100-L)/2)+"px";E.style.paddingLeft=Math.floor((100-x)/2)+"px";N.appendChild(E)}else if(null!=g){var D=a.stringToCells(Graph.decompress(g.xml));0<D.length&&(a.sidebar.createThumb(D,100,100,N,null,!0,!1),N.firstChild.style.display="inline-block",N.firstChild.style.cursor="")}var F=document.createElement("img");F.setAttribute("src",Editor.closeImage);F.setAttribute("border",
-"0");F.setAttribute("title",mxResources.get("delete"));F.setAttribute("align","top");F.style.paddingTop="4px";F.style.position="absolute";F.style.marginLeft="-12px";F.style.zIndex="1";F.style.cursor="pointer";mxEvent.addListener(F,"dragstart",function(a){mxEvent.consume(a)});(function(a,e,b){mxEvent.addListener(F,"click",function(c){v[e]=null;for(var d=0;d<l.length;d++)if(null!=l[d].data&&l[d].data==e||null!=l[d].xml&&null!=b&&l[d].xml==b.xml){l.splice(d,1);break}N.parentNode.removeChild(a);0==l.length&&
+"0");F.setAttribute("title",mxResources.get("delete"));F.setAttribute("align","top");F.style.paddingTop="4px";F.style.position="absolute";F.style.marginLeft="-12px";F.style.zIndex="1";F.style.cursor="pointer";mxEvent.addListener(F,"dragstart",function(a){mxEvent.consume(a)});(function(a,e,b){mxEvent.addListener(F,"click",function(c){v[e]=null;for(var d=0;d<n.length;d++)if(null!=n[d].data&&n[d].data==e||null!=n[d].xml&&null!=b&&n[d].xml==b.xml){n.splice(d,1);break}N.parentNode.removeChild(a);0==n.length&&
(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",q.style.display="");mxEvent.consume(c)});mxEvent.addListener(F,"dblclick",function(a){mxEvent.consume(a)})})(N,e,g);N.appendChild(F);N.style.marginBottom="30px";var I=document.createElement("div");I.style.position="absolute";I.style.boxSizing="border-box";I.style.bottom="-18px";I.style.left="10px";I.style.right="10px";I.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#ffffff";I.style.overflow="hidden";I.style.textAlign="center";var G=
-null;null!=e?(G={data:e,w:k,h:f,title:u},null!=p&&(G.aspect=p),v[e]=E,l.push(G)):null!=g&&(g.aspect="fixed",l.push(g),G=g);mxEvent.addListener(I,"keydown",function(a){13==a.keyCode&&null!=B&&(B(),B=null,mxEvent.consume(a))});M();N.appendChild(I);mxEvent.addListener(I,"mousedown",function(a){"true"!=I.getAttribute("contentEditable")&&mxEvent.consume(a)});D=function(e){if(mxClient.IS_IOS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var b=new FilenameDialog(a,G.title||"",
+null;null!=e?(G={data:e,w:k,h:f,title:u},null!=p&&(G.aspect=p),v[e]=E,n.push(G)):null!=g&&(g.aspect="fixed",n.push(g),G=g);mxEvent.addListener(I,"keydown",function(a){13==a.keyCode&&null!=B&&(B(),B=null,mxEvent.consume(a))});M();N.appendChild(I);mxEvent.addListener(I,"mousedown",function(a){"true"!=I.getAttribute("contentEditable")&&mxEvent.consume(a)});D=function(e){if(mxClient.IS_IOS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var b=new FilenameDialog(a,G.title||"",
mxResources.get("ok"),function(a){null!=a&&(G.title=a,M())},mxResources.get("enterValue"));a.showDialog(b.container,300,80,!0,!0);b.init();mxEvent.consume(e)}else if("true"!=I.getAttribute("contentEditable")){null!=B&&(B(),B=null);if(null==G.title||0==G.title.length)I.innerHTML="";I.style.textOverflow="";I.style.whiteSpace="";I.style.cursor="text";I.style.color="";I.setAttribute("contentEditable","true");mxUtils.setPrefixedStyle(I.style,"user-select","text");I.focus();document.execCommand("selectAll",
-!1,null);B=function(){I.removeAttribute("contentEditable");I.style.cursor="pointer";G.title=I.innerHTML;M()};mxEvent.consume(e)}};mxEvent.addListener(I,"click",D);mxEvent.addListener(N,"dblclick",D);t.appendChild(N);mxEvent.addListener(N,"dragstart",function(a){null==e&&null!=g&&(F.style.visibility="hidden",I.style.visibility="hidden");mxClient.IS_FF&&null!=g.xml&&a.dataTransfer.setData("Text",g.xml);y=m(a);mxClient.IS_GC&&(N.style.opacity="0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(N.style,
+!1,null);B=function(){I.removeAttribute("contentEditable");I.style.cursor="pointer";G.title=I.innerHTML;M()};mxEvent.consume(e)}};mxEvent.addListener(I,"click",D);mxEvent.addListener(N,"dblclick",D);t.appendChild(N);mxEvent.addListener(N,"dragstart",function(a){null==e&&null!=g&&(F.style.visibility="hidden",I.style.visibility="hidden");mxClient.IS_FF&&null!=g.xml&&a.dataTransfer.setData("Text",g.xml);y=l(a);mxClient.IS_GC&&(N.style.opacity="0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(N.style,
"transform","scale(0.5,0.5)");mxUtils.setOpacity(N,30);F.style.visibility="";I.style.visibility=""},0)});mxEvent.addListener(N,"dragend",function(a){"hidden"==F.style.visibility&&(F.style.visibility="",I.style.visibility="");y=null;mxUtils.setOpacity(N,100);mxUtils.setPrefixedStyle(N.style,"transform",null)})}else A||(A=!0,a.handleError({message:mxResources.get("fileExists")}));else{k=!1;try{if(x=mxUtils.parseXml(e),"mxlibrary"==x.documentElement.nodeName){L=JSON.parse(mxUtils.getTextContent(x.documentElement));
-if(null!=L&&0<L.length)for(var H=0;H<L.length;H++)null!=L[H].xml?n(null,null,0,0,0,0,L[H]):n(L[H].data,null,0,0,L[H].w,L[H].h,null,"fixed",L[H].title);k=!0}else if("mxfile"==x.documentElement.nodeName){for(var J=x.documentElement.getElementsByTagName("diagram"),H=0;H<J.length;H++){var L=mxUtils.getTextContent(J[H]),D=a.stringToCells(Graph.decompress(L)),Y=a.editor.graph.getBoundingBoxFromGeometry(D);n(null,null,0,0,0,0,{xml:L,w:Y.width,h:Y.height})}k=!0}}catch(R){}k||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(R){}return null}
-function e(a){a.dataTransfer.dropEffect=null!=y?"move":"copy";a.stopPropagation();a.preventDefault()}function k(e){e.stopPropagation();e.preventDefault();A=!1;x=m(e);if(null!=y)null!=x&&x<t.children.length?(l.splice(x>y?x-1:x,0,l.splice(y,1)[0]),t.insertBefore(t.children[y],t.children[x])):(l.push(l.splice(y,1)[0]),t.appendChild(t.children[y]));else if(0<e.dataTransfer.files.length)a.importFiles(e.dataTransfer.files,0,0,a.maxImageSize,C(e));else if(0<=mxUtils.indexOf(e.dataTransfer.types,"text/uri-list")){var b=
-decodeURIComponent(e.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(b)||/(\.png)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.svg)($|\?)/i.test(b))&&a.loadImage(b,function(a){n(b,null,0,0,a.width,a.height);t.scrollTop=t.scrollHeight})}e.stopPropagation();e.preventDefault()}var l=[];b=document.createElement("div");b.style.height="100%";var p=document.createElement("div");p.style.whiteSpace="nowrap";p.style.height="40px";b.appendChild(p);mxUtils.write(p,mxResources.get("filename")+
+if(null!=L&&0<L.length)for(var H=0;H<L.length;H++)null!=L[H].xml?m(null,null,0,0,0,0,L[H]):m(L[H].data,null,0,0,L[H].w,L[H].h,null,"fixed",L[H].title);k=!0}else if("mxfile"==x.documentElement.nodeName){for(var J=x.documentElement.getElementsByTagName("diagram"),H=0;H<J.length;H++){var L=mxUtils.getTextContent(J[H]),D=a.stringToCells(Graph.decompress(L)),Y=a.editor.graph.getBoundingBoxFromGeometry(D);m(null,null,0,0,0,0,{xml:L,w:Y.width,h:Y.height})}k=!0}}catch(R){}k||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(R){}return null}
+function e(a){a.dataTransfer.dropEffect=null!=y?"move":"copy";a.stopPropagation();a.preventDefault()}function k(e){e.stopPropagation();e.preventDefault();A=!1;x=l(e);if(null!=y)null!=x&&x<t.children.length?(n.splice(x>y?x-1:x,0,n.splice(y,1)[0]),t.insertBefore(t.children[y],t.children[x])):(n.push(n.splice(y,1)[0]),t.appendChild(t.children[y]));else if(0<e.dataTransfer.files.length)a.importFiles(e.dataTransfer.files,0,0,a.maxImageSize,C(e));else if(0<=mxUtils.indexOf(e.dataTransfer.types,"text/uri-list")){var b=
+decodeURIComponent(e.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(b)||/(\.png)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.svg)($|\?)/i.test(b))&&a.loadImage(b,function(a){m(b,null,0,0,a.width,a.height);t.scrollTop=t.scrollHeight})}e.stopPropagation();e.preventDefault()}var n=[];b=document.createElement("div");b.style.height="100%";var p=document.createElement("div");p.style.whiteSpace="nowrap";p.style.height="40px";b.appendChild(p);mxUtils.write(p,mxResources.get("filename")+
":");null==d&&(d=a.defaultLibraryName+".xml");var u=document.createElement("input");u.setAttribute("value",d);u.style.marginRight="20px";u.style.marginLeft="10px";u.style.width="500px";null==g||g.isRenamable()||u.setAttribute("disabled","true");this.init=function(){if(null==g||g.isRenamable())u.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?u.select():document.execCommand("selectAll",!1,null)};p.appendChild(u);var t=document.createElement("div");t.style.borderWidth="1px 0px 1px 0px";
-t.style.borderColor="#d3d3d3";t.style.borderStyle="solid";t.style.marginTop="6px";t.style.overflow="auto";t.style.height="340px";t.style.backgroundPosition="center center";t.style.backgroundRepeat="no-repeat";0==l.length&&Graph.fileSupport&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var q=document.createElement("div");q.style.position="absolute";q.style.width="640px";q.style.top="260px";q.style.textAlign="center";q.style.fontSize="22px";q.style.color="#a0c3ff";mxUtils.write(q,
-mxResources.get("dragImagesHere"));b.appendChild(q);var v={},y=null,x=null,B=null;d=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=B&&(B(),B=null,mxEvent.consume(a))};mxEvent.addListener(t,"mousedown",d);mxEvent.addListener(t,"pointerdown",d);mxEvent.addListener(t,"touchstart",d);var z=new mxUrlConverter,A=!1;if(null!=c)for(d=0;d<c.length;d++)p=c[d],n(p.data,null,0,0,p.w,p.h,p,p.aspect,p.title);mxEvent.addListener(t,"dragleave",function(a){q.style.cursor="";for(var e=
-mxEvent.getSource(a);null!=e;){if(e==t||e==q){a.stopPropagation();a.preventDefault();break}e=e.parentNode}});var C=function(e){return function(b,c,d,k,l,f,g,p,u){null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u.name)||/(\.vs(x|sx?))($|\?)/i.test(u.name))?a.importVisio(u,mxUtils.bind(this,function(a){n(a,c,d,k,l,f,g,"fixed",mxEvent.isAltDown(e)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," "))})):null!=u&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(b,u.name)?a.parseFile(u,mxUtils.bind(this,
-function(b){4==b.readyState&&(a.spinner.stop(),200<=b.status&&299>=b.status&&(n(b.responseText,c,d,k,l,f,g,"fixed",mxEvent.isAltDown(e)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight))})):(n(b,c,d,k,l,f,g,"fixed",mxEvent.isAltDown(e)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight)}};mxEvent.addListener(t,"dragover",e);mxEvent.addListener(t,"drop",k);mxEvent.addListener(q,"dragover",e);mxEvent.addListener(q,"drop",k);b.appendChild(t);
+t.style.borderColor="#d3d3d3";t.style.borderStyle="solid";t.style.marginTop="6px";t.style.overflow="auto";t.style.height="340px";t.style.backgroundPosition="center center";t.style.backgroundRepeat="no-repeat";0==n.length&&Graph.fileSupport&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var q=document.createElement("div");q.style.position="absolute";q.style.width="640px";q.style.top="260px";q.style.textAlign="center";q.style.fontSize="22px";q.style.color="#a0c3ff";mxUtils.write(q,
+mxResources.get("dragImagesHere"));b.appendChild(q);var v={},y=null,x=null,B=null;d=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=B&&(B(),B=null,mxEvent.consume(a))};mxEvent.addListener(t,"mousedown",d);mxEvent.addListener(t,"pointerdown",d);mxEvent.addListener(t,"touchstart",d);var z=new mxUrlConverter,A=!1;if(null!=c)for(d=0;d<c.length;d++)p=c[d],m(p.data,null,0,0,p.w,p.h,p,p.aspect,p.title);mxEvent.addListener(t,"dragleave",function(a){q.style.cursor="";for(var e=
+mxEvent.getSource(a);null!=e;){if(e==t||e==q){a.stopPropagation();a.preventDefault();break}e=e.parentNode}});var C=function(e){return function(b,c,d,k,n,f,g,p,u){null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u.name)||/(\.vs(x|sx?))($|\?)/i.test(u.name))?a.importVisio(u,mxUtils.bind(this,function(a){m(a,c,d,k,n,f,g,"fixed",mxEvent.isAltDown(e)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," "))})):null!=u&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(b,u.name)?a.parseFile(u,mxUtils.bind(this,
+function(b){4==b.readyState&&(a.spinner.stop(),200<=b.status&&299>=b.status&&(m(b.responseText,c,d,k,n,f,g,"fixed",mxEvent.isAltDown(e)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight))})):(m(b,c,d,k,n,f,g,"fixed",mxEvent.isAltDown(e)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight)}};mxEvent.addListener(t,"dragover",e);mxEvent.addListener(t,"drop",k);mxEvent.addListener(q,"dragover",e);mxEvent.addListener(q,"drop",k);b.appendChild(t);
c=document.createElement("div");c.style.textAlign="right";c.style.marginTop="20px";d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});d.setAttribute("id","btnCancel");d.className="geBtn";a.editor.cancelFirst&&c.appendChild(d);"draw.io"!=a.getServiceName()||null==g||g.constructor!=DriveLibrary&&g.constructor!=GitHubLibrary||(p=mxUtils.button(mxResources.get("link"),function(){a.spinner.spin(document.body,mxResources.get("loading"))&&g.getPublicUrl(function(e){a.spinner.stop();
if(null!=e){var b=a.getSearch("create title mode url drive splash state clibs ui".split(" ")),b=b+((0==b.length?"?":"&")+"splash=0&clibs=U"+encodeURIComponent(e));e=new EmbedDialog(a,window.location.protocol+"//"+window.location.host+"/"+b,null,null,null,null,"Check out the library I made using @drawio");a.showDialog(e.container,440,240,!0);e.init()}else g.constructor==DriveLibrary?a.showError(mxResources.get("error"),mxResources.get("diagramIsNotPublic"),mxResources.get("share"),mxUtils.bind(this,
-function(){a.drive.showPermissions(g.getId())}),null,mxResources.get("ok"),mxUtils.bind(this,function(){})):a.handleError({message:mxResources.get("diagramIsNotPublic")})})}),p.className="geBtn",c.appendChild(p));p=mxUtils.button(mxResources.get("export"),function(){var e=a.createLibraryDataFromImages(l),b=u.value;/(\.xml)$/i.test(b)||(b+=".xml");a.isLocalFileSave()?a.saveLocalFile(e,b,"text/xml",null,null,!0,null,"xml"):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&format=xml&xml="+
-encodeURIComponent(e))).simulate(document,"_blank")});p.setAttribute("id","btnDownload");p.className="geBtn";c.appendChild(p);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var E=document.createElement("input");E.setAttribute("multiple","multiple");E.setAttribute("type","file");mxEvent.addListener(E,"change",function(e){A=!1;a.importFiles(E.files,0,0,a.maxImageSize,function(a,b,c,d,k,l,f,g,p){null!=E.files&&(C(e)(a,b,c,d,k,l,f,g,p),E.type="",E.type="file",E.value="")});t.scrollTop=t.scrollHeight});
+function(){a.drive.showPermissions(g.getId())}),null,mxResources.get("ok"),mxUtils.bind(this,function(){})):a.handleError({message:mxResources.get("diagramIsNotPublic")})})}),p.className="geBtn",c.appendChild(p));p=mxUtils.button(mxResources.get("export"),function(){var e=a.createLibraryDataFromImages(n),b=u.value;/(\.xml)$/i.test(b)||(b+=".xml");a.isLocalFileSave()?a.saveLocalFile(e,b,"text/xml",null,null,!0,null,"xml"):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(b)+"&format=xml&xml="+
+encodeURIComponent(e))).simulate(document,"_blank")});p.setAttribute("id","btnDownload");p.className="geBtn";c.appendChild(p);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var E=document.createElement("input");E.setAttribute("multiple","multiple");E.setAttribute("type","file");mxEvent.addListener(E,"change",function(e){A=!1;a.importFiles(E.files,0,0,a.maxImageSize,function(a,b,c,d,k,n,f,g,p){null!=E.files&&(C(e)(a,b,c,d,k,n,f,g,p),E.type="",E.type="file",E.value="")});t.scrollTop=t.scrollHeight});
E.style.display="none";document.body.appendChild(E);a.libDlgFileInputElt=E}p=mxUtils.button(mxResources.get("import"),function(){null!=B&&(B(),B=null);a.libDlgFileInputElt.click()});p.setAttribute("id","btnAddImage");p.className="geBtn";c.appendChild(p)}p=mxUtils.button(mxResources.get("addImages"),function(){null!=B&&(B(),B=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,e,b){A=!1;if(null!=a){if("data:image/"==a.substring(0,11)){var c=a.indexOf(",");0<c&&(a=a.substring(0,c)+
-";base64,"+a.substring(c+1))}n(a,null,0,0,e,b);t.scrollTop=t.scrollHeight}})});p.setAttribute("id","btnAddImageUrl");p.className="geBtn";c.appendChild(p);this.saveBtnClickHandler=function(e,b,c,d){a.saveLibrary(e,b,c,d)};p=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=B&&(B(),B=null);this.saveBtnClickHandler(u.value,l,g,f)}));p.setAttribute("id","btnSave");p.className="geBtn gePrimaryBtn";c.appendChild(p);a.editor.cancelFirst||c.appendChild(d);b.appendChild(c);this.container=
-b},EditShapeDialog=function(a,d,b,c,g){c=null!=c?c:300;g=null!=g?g:120;var f,m,n=document.createElement("table"),e=document.createElement("tbody");n.style.cellPadding="4px";f=document.createElement("tr");m=document.createElement("td");m.setAttribute("colspan","2");m.style.fontSize="10pt";mxUtils.write(m,b);f.appendChild(m);e.appendChild(f);f=document.createElement("tr");m=document.createElement("td");var k=document.createElement("textarea");k.style.outline="none";k.style.resize="none";k.style.width=
-c-200+"px";k.style.height=g+"px";this.textarea=k;this.init=function(){k.focus();k.scrollTop=0};m.appendChild(k);f.appendChild(m);m=document.createElement("td");b=document.createElement("div");b.style.position="relative";b.style.border="1px solid gray";b.style.top="6px";b.style.width="200px";b.style.height=g+4+"px";b.style.overflow="hidden";b.style.marginBottom="16px";mxEvent.disableContextMenu(b);m.appendChild(b);var l=new Graph(b);l.setEnabled(!1);var p=a.editor.graph.cloneCell(d);l.addCells([p]);
-b=l.view.getState(p);var u="";null!=b.shape&&null!=b.shape.stencil&&(u=mxUtils.getPrettyXml(b.shape.stencil.desc));mxUtils.write(k,u||"");b=l.getGraphBounds();g=Math.min(160/b.width,(g-40)/b.height);l.view.scaleAndTranslate(g,20/g-b.x,20/g-b.y);f.appendChild(m);e.appendChild(f);f=document.createElement("tr");m=document.createElement("td");m.setAttribute("colspan","2");m.style.paddingTop="2px";m.style.whiteSpace="nowrap";m.setAttribute("align","right");a.isOffline()||(g=mxUtils.button(mxResources.get("help"),
-function(){a.openLink("https://www.diagrams.net/doc/faq/shape-complex-create-edit")}),g.className="geBtn",m.appendChild(g));g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&m.appendChild(g);var t=function(e,b,c){var d=k.value,l=mxUtils.parseXml(d),d=mxUtils.getPrettyXml(l.documentElement),l=l.documentElement.getElementsByTagName("parsererror");if(null!=l&&0<l.length)a.showError(mxResources.get("error"),mxResources.get("containsValidationErrors"),
-mxResources.get("ok"));else if(c&&a.hideDialog(),l=!e.model.contains(b),!c||l||d!=u){d=Graph.compress(d);e.getModel().beginUpdate();try{if(l){var f=a.editor.graph.getFreeInsertPoint();b.geometry.x=f.x;b.geometry.y=f.y;e.addCell(b)}e.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+d+")",[b])}catch(A){throw A;}finally{e.getModel().endUpdate()}l&&(e.setSelectionCell(b),e.scrollCellToVisible(b))}};b=mxUtils.button(mxResources.get("preview"),function(){t(l,p,!1)});b.className="geBtn";m.appendChild(b);
-b=mxUtils.button(mxResources.get("apply"),function(){t(a.editor.graph,d,!0)});b.className="geBtn gePrimaryBtn";m.appendChild(b);a.editor.cancelFirst||m.appendChild(g);f.appendChild(m);e.appendChild(f);n.appendChild(e);this.container=n},CustomDialog=function(a,d,b,c,g,f,m,n,e,k){var l=document.createElement("div");l.appendChild(d);d=document.createElement("div");d.style.marginTop="16px";d.style.textAlign="center";null!=m&&d.appendChild(m);a.isOffline()||null==f||(m=mxUtils.button(mxResources.get("help"),
-function(){a.openLink(f)}),m.className="geBtn",d.appendChild(m));e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=c&&c()});e.className="geBtn";n&&(e.style.display="none");a.editor.cancelFirst&&d.appendChild(e);g=mxUtils.button(g||mxResources.get("ok"),mxUtils.bind(this,function(){k||a.hideDialog(null,null,this.container);if(null!=b){var e=b();if("string"===typeof e){a.showError(mxResources.get("error"),e);return}}k&&a.hideDialog(null,null,this.container)}));d.appendChild(g);
-g.className="geBtn gePrimaryBtn";a.editor.cancelFirst||d.appendChild(e);l.appendChild(d);this.cancelBtn=e;this.okButton=g;this.container=l},TemplatesDialog=function(){var a='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+
+";base64,"+a.substring(c+1))}m(a,null,0,0,e,b);t.scrollTop=t.scrollHeight}})});p.setAttribute("id","btnAddImageUrl");p.className="geBtn";c.appendChild(p);this.saveBtnClickHandler=function(e,b,c,d){a.saveLibrary(e,b,c,d)};p=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=B&&(B(),B=null);this.saveBtnClickHandler(u.value,n,g,f)}));p.setAttribute("id","btnSave");p.className="geBtn gePrimaryBtn";c.appendChild(p);a.editor.cancelFirst||c.appendChild(d);b.appendChild(c);this.container=
+b},EditShapeDialog=function(a,d,b,c,g){c=null!=c?c:300;g=null!=g?g:120;var f,l,m=document.createElement("table"),e=document.createElement("tbody");m.style.cellPadding="4px";f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";mxUtils.write(l,b);f.appendChild(l);e.appendChild(f);f=document.createElement("tr");l=document.createElement("td");var k=document.createElement("textarea");k.style.outline="none";k.style.resize="none";k.style.width=
+c-200+"px";k.style.height=g+"px";this.textarea=k;this.init=function(){k.focus();k.scrollTop=0};l.appendChild(k);f.appendChild(l);l=document.createElement("td");b=document.createElement("div");b.style.position="relative";b.style.border="1px solid gray";b.style.top="6px";b.style.width="200px";b.style.height=g+4+"px";b.style.overflow="hidden";b.style.marginBottom="16px";mxEvent.disableContextMenu(b);l.appendChild(b);var n=new Graph(b);n.setEnabled(!1);var p=a.editor.graph.cloneCell(d);n.addCells([p]);
+b=n.view.getState(p);var u="";null!=b.shape&&null!=b.shape.stencil&&(u=mxUtils.getPrettyXml(b.shape.stencil.desc));mxUtils.write(k,u||"");b=n.getGraphBounds();g=Math.min(160/b.width,(g-40)/b.height);n.view.scaleAndTranslate(g,20/g-b.x,20/g-b.y);f.appendChild(l);e.appendChild(f);f=document.createElement("tr");l=document.createElement("td");l.setAttribute("colspan","2");l.style.paddingTop="2px";l.style.whiteSpace="nowrap";l.setAttribute("align","right");a.isOffline()||(g=mxUtils.button(mxResources.get("help"),
+function(){a.openLink("https://www.diagrams.net/doc/faq/shape-complex-create-edit")}),g.className="geBtn",l.appendChild(g));g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";a.editor.cancelFirst&&l.appendChild(g);var t=function(e,b,c){var d=k.value,n=mxUtils.parseXml(d),d=mxUtils.getPrettyXml(n.documentElement),n=n.documentElement.getElementsByTagName("parsererror");if(null!=n&&0<n.length)a.showError(mxResources.get("error"),mxResources.get("containsValidationErrors"),
+mxResources.get("ok"));else if(c&&a.hideDialog(),n=!e.model.contains(b),!c||n||d!=u){d=Graph.compress(d);e.getModel().beginUpdate();try{if(n){var f=a.editor.graph.getFreeInsertPoint();b.geometry.x=f.x;b.geometry.y=f.y;e.addCell(b)}e.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+d+")",[b])}catch(A){throw A;}finally{e.getModel().endUpdate()}n&&(e.setSelectionCell(b),e.scrollCellToVisible(b))}};b=mxUtils.button(mxResources.get("preview"),function(){t(n,p,!1)});b.className="geBtn";l.appendChild(b);
+b=mxUtils.button(mxResources.get("apply"),function(){t(a.editor.graph,d,!0)});b.className="geBtn gePrimaryBtn";l.appendChild(b);a.editor.cancelFirst||l.appendChild(g);f.appendChild(l);e.appendChild(f);m.appendChild(e);this.container=m},CustomDialog=function(a,d,b,c,g,f,l,m,e,k){var n=document.createElement("div");n.appendChild(d);d=document.createElement("div");d.style.marginTop="16px";d.style.textAlign="center";null!=l&&d.appendChild(l);a.isOffline()||null==f||(l=mxUtils.button(mxResources.get("help"),
+function(){a.openLink(f)}),l.className="geBtn",d.appendChild(l));e=mxUtils.button(e||mxResources.get("cancel"),function(){a.hideDialog();null!=c&&c()});e.className="geBtn";m&&(e.style.display="none");a.editor.cancelFirst&&d.appendChild(e);g=mxUtils.button(g||mxResources.get("ok"),mxUtils.bind(this,function(){k||a.hideDialog(null,null,this.container);if(null!=b){var e=b();if("string"===typeof e){a.showError(mxResources.get("error"),e);return}}k&&a.hideDialog(null,null,this.container)}));d.appendChild(g);
+g.className="geBtn gePrimaryBtn";a.editor.cancelFirst||d.appendChild(e);n.appendChild(d);this.cancelBtn=e;this.okButton=g;this.container=n},TemplatesDialog=function(){var a='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+
mxResources.get("templates",null,"Templates")+'</div></div><div class="geTempDlgContent"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+mxResources.get("showAll",null,"+ Show all")+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+
mxResources.get("myDiagrams",null,"My diagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">&#x1F6C8; '+
mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",d=document.createElement("div");d.innerHTML=a;d.className="geTemplateDlg";
var a=window.innerWidth,b=window.innerHeight,c=987,g=712;.9*a<c&&(c=Math.max(.9*a,600),d.style.width=c+"px");.9*b<g&&(g=Math.max(.9*b,300),d.style.height=g+"px");this.width=c;this.height=g;this.container=d};
-TemplatesDialog.prototype.init=function(a,d,b,c,g,f,m,n,e,k){function l(){null!=G&&(G.style.fontWeight="normal",G.style.textDecoration="none",G=null)}function p(a,e,b,c,d,k,l){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";C.querySelector(".geTempDlgRadioBtn[data-id="+c+"]").className="geTempDlgRadioBtn "+(l?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");C.querySelector("."+e).src="/images/"+b+"-sel.svg";C.querySelector("."+d).src="/images/"+
+TemplatesDialog.prototype.init=function(a,d,b,c,g,f,l,m,e,k){function n(){null!=G&&(G.style.fontWeight="normal",G.style.textDecoration="none",G=null)}function p(a,e,b,c,d,k,n){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";C.querySelector(".geTempDlgRadioBtn[data-id="+c+"]").className="geTempDlgRadioBtn "+(n?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");C.querySelector("."+e).src="/images/"+b+"-sel.svg";C.querySelector("."+d).src="/images/"+
k+".svg";return!0}function u(a){function e(a){X.removeChild(c);C.removeChild(b);X.scrollTop=k}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var b=document.createElement("div");b.className="geTempDlgDialogMask";C.appendChild(b);var c=document.createElement("div");c.className="geTempDlgDiagramPreviewBox";var d=document.createElement("img");d.src=a;c.appendChild(d);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn";
a.setAttribute("title",mxResources.get("close"));c.appendChild(a);var k=X.scrollTop;mxEvent.addListener(a,"click",e);mxEvent.addListener(b,"click",e);X.appendChild(c);X.scrollTop=0;c.style.lineHeight=c.clientHeight+"px"}function t(a,e,b){if(null!=H){for(var c=H.className.split(" "),d=0;d<c.length;d++)if(-1<c[d].indexOf("Active")){c.splice(d,1);break}H.className=c.join(" ")}null!=a?(H=a,H.className+=" "+e,I=b,V.className="geTempDlgCreateBtn"):(I=H=null,V.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")}
function q(b){if(null!=I){var c=I;I=null;V.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";c.isExternal?(1==b?k(c.url,c,"nameInput.value"):e(c.url,c,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+c.url,mxUtils.bind(this,function(e){200<=e.getStatus()&&299>=e.getStatus()&&(d(e.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function v(a){a=a?"":"none";for(var e=C.querySelectorAll(".geTempDlgLinkToDiagram"),b=0;b<e.length;b++)e[b].style.display=
-a}function y(a,e,b){function c(){V.innerHTML=e?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));v(!e)}K.innerHTML="";t();L=a;var d=null;if(b){d=document.createElement("table");d.className="geTempDlgDiagramsListGrid";var k=document.createElement("tr"),l=document.createElement("th");l.style.width="50%";l.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));k.appendChild(l);l=document.createElement("th");l.style.width="25%";l.innerHTML=
-mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));k.appendChild(l);l=document.createElement("th");l.style.width="25%";l.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));k.appendChild(l);d.appendChild(k);K.appendChild(d)}for(k=0;k<a.length;k++){a[k].isExternal=!e;var f=a[k].url,l=mxUtils.htmlEntities(a[k].title),g=a[k].tooltip||a[k].title,p=a[k].imgUrl,m=mxUtils.htmlEntities(a[k].changedBy||""),n=mxUtils.htmlEntities(a[k].lastModifiedOn||
-"");p||(p=TEMPLATE_PATH+"/"+f.substring(0,f.length-4)+".png");f=b?50:15;null!=l&&l.length>f&&(l=l.substring(0,f)+"&hellip;");if(b){var z=document.createElement("tr"),p=document.createElement("td"),M=document.createElement("img");M.src="/images/icon-search.svg";M.className="geTempDlgDiagramListPreviewBtn";M.setAttribute("title",mxResources.get("preview"));p.appendChild(M);g=document.createElement("span");g.className="geTempDlgDiagramTitle";g.innerHTML=l;p.appendChild(g);z.appendChild(p);p=document.createElement("td");
-p.innerHTML=m;z.appendChild(p);p=document.createElement("td");p.innerHTML=n;z.appendChild(p);d.appendChild(z);null==H&&(c(),t(z,"geTempDlgDiagramsListGridActive",a[k]));(function(a,e){mxEvent.addListener(z,"click",function(){H!=e&&(c(),t(e,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(z,"dblclick",q);mxEvent.addListener(M,"click",function(){u(a)})})(a[k],z)}else{var A=document.createElement("div");A.className="geTempDlgDiagramTile";A.setAttribute("title",g);null==H&&(c(),t(A,"geTempDlgDiagramTileActive",
-a[k]));m=document.createElement("div");m.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var x=document.createElement("img");x.style.display="none";(function(a,e){x.onload=function(){e.className="geTempDlgDiagramTileImg";a.style.display=""};x.onerror=function(){e.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(x,m);x.src=p;m.appendChild(x);A.appendChild(m);m=document.createElement("div");m.className="geTempDlgDiagramTileLbl";m.innerHTML=null!=l?l:"";A.appendChild(m);
+a}function y(a,e,b){function c(){V.innerHTML=e?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));v(!e)}K.innerHTML="";t();L=a;var d=null;if(b){d=document.createElement("table");d.className="geTempDlgDiagramsListGrid";var k=document.createElement("tr"),n=document.createElement("th");n.style.width="50%";n.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));k.appendChild(n);n=document.createElement("th");n.style.width="25%";n.innerHTML=
+mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));k.appendChild(n);n=document.createElement("th");n.style.width="25%";n.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));k.appendChild(n);d.appendChild(k);K.appendChild(d)}for(k=0;k<a.length;k++){a[k].isExternal=!e;var f=a[k].url,n=mxUtils.htmlEntities(a[k].title),g=a[k].tooltip||a[k].title,p=a[k].imgUrl,l=mxUtils.htmlEntities(a[k].changedBy||""),m=mxUtils.htmlEntities(a[k].lastModifiedOn||
+"");p||(p=TEMPLATE_PATH+"/"+f.substring(0,f.length-4)+".png");f=b?50:15;null!=n&&n.length>f&&(n=n.substring(0,f)+"&hellip;");if(b){var z=document.createElement("tr"),p=document.createElement("td"),M=document.createElement("img");M.src="/images/icon-search.svg";M.className="geTempDlgDiagramListPreviewBtn";M.setAttribute("title",mxResources.get("preview"));p.appendChild(M);g=document.createElement("span");g.className="geTempDlgDiagramTitle";g.innerHTML=n;p.appendChild(g);z.appendChild(p);p=document.createElement("td");
+p.innerHTML=l;z.appendChild(p);p=document.createElement("td");p.innerHTML=m;z.appendChild(p);d.appendChild(z);null==H&&(c(),t(z,"geTempDlgDiagramsListGridActive",a[k]));(function(a,e){mxEvent.addListener(z,"click",function(){H!=e&&(c(),t(e,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(z,"dblclick",q);mxEvent.addListener(M,"click",function(){u(a)})})(a[k],z)}else{var A=document.createElement("div");A.className="geTempDlgDiagramTile";A.setAttribute("title",g);null==H&&(c(),t(A,"geTempDlgDiagramTileActive",
+a[k]));l=document.createElement("div");l.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var x=document.createElement("img");x.style.display="none";(function(a,e){x.onload=function(){e.className="geTempDlgDiagramTileImg";a.style.display=""};x.onerror=function(){e.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(x,l);x.src=p;l.appendChild(x);A.appendChild(l);l=document.createElement("div");l.className="geTempDlgDiagramTileLbl";l.innerHTML=null!=n?n:"";A.appendChild(l);
M=document.createElement("img");M.src="/images/icon-search.svg";M.className="geTempDlgDiagramPreviewBtn";M.setAttribute("title",mxResources.get("preview"));A.appendChild(M);(function(a,e){mxEvent.addListener(A,"click",function(){H!=e&&(c(),t(e,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(A,"dblclick",q);mxEvent.addListener(M,"click",function(){u(a)})})(a[k],A);K.appendChild(A)}}}function x(a,e){W.innerHTML="";t();for(var b=!e&&5<a.length?5:a.length,c=0;c<b;c++){var d=a[c];d.isCategory=!0;
-var k=document.createElement("div"),l=mxResources.get(d.title);null==l&&(l=d.title.substring(0,1).toUpperCase()+d.title.substring(1));k.className="geTempDlgNewDiagramCatItem";k.setAttribute("title",l);l=mxUtils.htmlEntities(l);15<l.length&&(l=l.substring(0,15)+"&hellip;");null==H&&(V.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),v(),t(k,"geTempDlgNewDiagramCatItemActive",d));var f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img");
-g.src=NEW_DIAGRAM_CATS_PATH+"/"+d.img;f.appendChild(g);k.appendChild(f);f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemLbl";f.innerHTML=l;k.appendChild(f);W.appendChild(k);(function(a,e){mxEvent.addListener(k,"click",function(){H!=e&&(V.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),v(),t(e,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(k,"dblclick",q)})(d,k)}Z.style.display=5>a.length?"none":""}function B(a){var e=C.querySelector(".geTemplatesList"),
+var k=document.createElement("div"),n=mxResources.get(d.title);null==n&&(n=d.title.substring(0,1).toUpperCase()+d.title.substring(1));k.className="geTempDlgNewDiagramCatItem";k.setAttribute("title",n);n=mxUtils.htmlEntities(n);15<n.length&&(n=n.substring(0,15)+"&hellip;");null==H&&(V.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),v(),t(k,"geTempDlgNewDiagramCatItemActive",d));var f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img");
+g.src=NEW_DIAGRAM_CATS_PATH+"/"+d.img;f.appendChild(g);k.appendChild(f);f=document.createElement("div");f.className="geTempDlgNewDiagramCatItemLbl";f.innerHTML=n;k.appendChild(f);W.appendChild(k);(function(a,e){mxEvent.addListener(k,"click",function(){H!=e&&(V.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),v(),t(e,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(k,"dblclick",q)})(d,k)}Z.style.display=5>a.length?"none":""}function B(a){var e=C.querySelector(".geTemplatesList"),
b;for(b in a){var c=document.createElement("div"),d=mxResources.get(b),k=a[b];null==d&&(d=b.substring(0,1).toUpperCase()+b.substring(1));c.className="geTemplateCatLink";c.setAttribute("title",d+" ("+k.length+")");d=mxUtils.htmlEntities(d);15<d.length&&(d=d.substring(0,15)+"&hellip;");c.innerHTML=d+" ("+k.length+")";e.appendChild(c);(function(e,b,d){mxEvent.addListener(c,"click",function(){G!=d&&(null!=G?(G.style.fontWeight="normal",G.style.textDecoration="none"):(da.style.display="none",aa.style.minHeight=
-"100%"),G=d,G.style.fontWeight="bold",G.style.textDecoration="underline",X.scrollTop=0,E&&(D=!0),S.innerHTML=b,U.style.display="none",y(a[e],!0))})})(b,d,c)}}function z(a){m&&(X.scrollTop=0,K.innerHTML="",fa.spin(K),D=!1,E=!0,S.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),N=null,m(ba,a?null:f))}function A(a){l();X.scrollTop=0;K.innerHTML="";fa.spin(K);D=!1;E=!0;T=null;S.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+' "'+
-mxUtils.htmlEntities(a)+'"';n(a,ba,F?null:f);N=a}c=null!=c?c:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var C=this.container,E=!1,D=!1,G=null,H=null,I=null,J=!1,F=!0,M=!1,L=[],N,Z=C.querySelector(".geTempDlgShowAllBtn"),K=C.querySelector(".geTempDlgDiagramsTiles"),S=C.querySelector(".geTempDlgDiagramsListTitle"),U=C.querySelector(".geTempDlgDiagramsListBtns"),X=C.querySelector(".geTempDlgContent"),aa=C.querySelector(".geTempDlgDiagramsList"),da=C.querySelector(".geTempDlgNewDiagramCat"),
-W=C.querySelector(".geTempDlgNewDiagramCatList"),V=C.querySelector(".geTempDlgCreateBtn"),fa=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(C.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){l();da.style.display="";aa.style.minHeight="calc(100% - 280px)";z(F)});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){p(this,"geTempDlgAllDiagramsBtnImg",
+"100%"),G=d,G.style.fontWeight="bold",G.style.textDecoration="underline",X.scrollTop=0,E&&(D=!0),S.innerHTML=b,U.style.display="none",y(a[e],!0))})})(b,d,c)}}function z(a){l&&(X.scrollTop=0,K.innerHTML="",fa.spin(K),D=!1,E=!0,S.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),N=null,l(ba,a?null:f))}function A(a){n();X.scrollTop=0;K.innerHTML="";fa.spin(K);D=!1;E=!0;T=null;S.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+' "'+
+mxUtils.htmlEntities(a)+'"';m(a,ba,F?null:f);N=a}c=null!=c?c:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var C=this.container,E=!1,D=!1,G=null,H=null,I=null,J=!1,F=!0,M=!1,L=[],N,Z=C.querySelector(".geTempDlgShowAllBtn"),K=C.querySelector(".geTempDlgDiagramsTiles"),S=C.querySelector(".geTempDlgDiagramsListTitle"),U=C.querySelector(".geTempDlgDiagramsListBtns"),X=C.querySelector(".geTempDlgContent"),aa=C.querySelector(".geTempDlgDiagramsList"),da=C.querySelector(".geTempDlgNewDiagramCat"),
+W=C.querySelector(".geTempDlgNewDiagramCatList"),V=C.querySelector(".geTempDlgCreateBtn"),fa=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(C.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){n();da.style.display="";aa.style.minHeight="calc(100% - 280px)";z(F)});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){p(this,"geTempDlgAllDiagramsBtnImg",
"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(F=!0,null==N?z(F):A(N))});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){p(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(F=!1,null==N?z(F):A(N))});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){p(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg",
"tiles",!1)&&(M=!0,y(L,!1,M))});mxEvent.addListener(C.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){p(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(M=!1,y(L,!1,M))});mxEvent.addListener(Z,"click",function(){J?(da.style.height="280px",W.style.height="190px",Z.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),x(R)):(da.style.height="440px",W.style.height="355px",Z.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess",
null,"- Show less")),x(R,!0));J=!J});var ea=!1,O=!1,Y={},R=[],P=1;mxUtils.get(c,function(a){if(!ea){ea=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var e=a.getAttribute("url");if(null!=e){var b=e.indexOf("/"),e=e.substring(0,b),b=Y[e];null==b&&(P++,b=[],Y[e]=b);b.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a=
a.nextSibling}B(Y)}});mxUtils.get(g,function(a){if(!O){O=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&R.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title")}),a=a.nextSibling;x(R)}});var ba=function(a,e){U.style.display="";fa.stop();E=!1;D?D=!1:e?K.innerHTML=e:0==a.length?K.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")):
-y(a,!1,M)};z(F);var T=null;n&&mxEvent.addListener(C.querySelector(".geTempDlgSearchBox"),"keyup",function(a){var e=this;null!=T&&clearTimeout(T);13==a.keyCode?A(e.value):T=setTimeout(function(){A(e.value)},500)});mxEvent.addListener(V,"click",q);mxEvent.addListener(C.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){q(!0)});mxEvent.addListener(C.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})};
-var BtnDialog=function(a,d,b,c){var g=document.createElement("div");g.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("done"));var m="Unknown",n=document.createElement("img");n.setAttribute("border","0");n.setAttribute("align","absmiddle");n.style.marginRight="10px";d==a.drive?(m=mxResources.get("googleDrive"),n.src=IMAGE_PATH+"/google-drive-logo-white.svg"):d==a.dropbox?
-(m=mxResources.get("dropbox"),n.src=IMAGE_PATH+"/dropbox-logo-white.svg"):d==a.oneDrive?(m=mxResources.get("oneDrive"),n.src=IMAGE_PATH+"/onedrive-logo-white.svg"):d==a.gitHub?(m=mxResources.get("github"),n.src=IMAGE_PATH+"/github-logo-white.svg"):d==a.gitLab?(m=mxResources.get("gitlab"),n.src=IMAGE_PATH+"/gitlab-logo.svg"):d==a.trello&&(m=mxResources.get("trello"),n.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizedIn",[m],"You are now authorized in {1}"));
-b=mxUtils.button(b,c);b.insertBefore(n,b.firstChild);b.style.marginTop="6px";b.className="geBigButton";b.style.fontSize="18px";b.style.padding="14px";g.appendChild(f);g.appendChild(a);g.appendChild(b);this.container=g},FontDialog=function(a,d,b,c,g){function f(a){this.style.border="";13==a.keyCode&&B.click()}var m,n,e,k=document.createElement("table"),l=document.createElement("tbody");k.style.marginTop="8px";m=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.whiteSpace=
-"nowrap";n.style.fontSize="10pt";n.style.fontWeight="bold";var p=document.createElement("input");p.style.cssText="margin-right:8px;margin-bottom:8px;";p.setAttribute("value","sysfonts");p.setAttribute("type","radio");p.setAttribute("name","current-fontdialog");p.setAttribute("id","fontdialog-sysfonts");n.appendChild(p);e=document.createElement("label");e.setAttribute("for","fontdialog-sysfonts");mxUtils.write(e,mxResources.get("sysFonts",null,"System Fonts"));n.appendChild(e);m.appendChild(n);l.appendChild(m);
-m=document.createElement("tr");n=document.createElement("td");n.style.whiteSpace="nowrap";n.style.fontSize="10pt";n.style.width="120px";n.style.paddingLeft="15px";mxUtils.write(n,mxResources.get("fontname",null,"Font Name")+":");m.appendChild(n);var u=document.createElement("input");"s"==c&&u.setAttribute("value",d);u.style.marginLeft="4px";u.style.width="250px";u.className="dlg_fontName_s";n=document.createElement("td");n.appendChild(u);m.appendChild(n);l.appendChild(m);m=document.createElement("tr");
-n=document.createElement("td");n.colSpan=2;n.style.whiteSpace="nowrap";n.style.fontSize="10pt";n.style.fontWeight="bold";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";t.setAttribute("value","googlefonts");t.setAttribute("type","radio");t.setAttribute("name","current-fontdialog");t.setAttribute("id","fontdialog-googlefonts");n.appendChild(t);e=document.createElement("label");e.setAttribute("for","fontdialog-googlefonts");mxUtils.write(e,mxResources.get("googleFonts",
-null,"Google Fonts"));n.appendChild(e);mxClient.IS_CHROMEAPP||a.isOffline()&&!EditorUi.isElectronApp||(e=a.menus.createHelpLink("https://fonts.google.com/"),e.getElementsByTagName("img")[0].setAttribute("valign","middle"),n.appendChild(e));m.appendChild(n);l.appendChild(m);m=document.createElement("tr");n=document.createElement("td");n.style.whiteSpace="nowrap";n.style.fontSize="10pt";n.style.width="120px";n.style.paddingLeft="15px";mxUtils.write(n,mxResources.get("fontname",null,"Font Name")+":");
-m.appendChild(n);var q=document.createElement("input");"g"==c&&q.setAttribute("value",d);q.style.marginLeft="4px";q.style.width="250px";q.className="dlg_fontName_g";n=document.createElement("td");n.appendChild(q);m.appendChild(n);l.appendChild(m);m=document.createElement("tr");n=document.createElement("td");n.colSpan=2;n.style.whiteSpace="nowrap";n.style.fontSize="10pt";n.style.fontWeight="bold";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value",
-"webfonts");v.setAttribute("type","radio");v.setAttribute("name","current-fontdialog");v.setAttribute("id","fontdialog-webfonts");n.appendChild(v);e=document.createElement("label");e.setAttribute("for","fontdialog-webfonts");mxUtils.write(e,mxResources.get("webfonts",null,"Web Fonts"));n.appendChild(e);m.appendChild(n);l.appendChild(m);m=document.createElement("tr");n=document.createElement("td");n.style.whiteSpace="nowrap";n.style.fontSize="10pt";n.style.width="120px";n.style.paddingLeft="15px";
-mxUtils.write(n,mxResources.get("fontname",null,"Font Name")+":");m.appendChild(n);var y=document.createElement("input");"w"==c&&y.setAttribute("value",d);y.style.marginLeft="4px";y.style.width="250px";y.className="dlg_fontName_w";n=document.createElement("td");n.appendChild(y);m.appendChild(n);l.appendChild(m);m=document.createElement("tr");n=document.createElement("td");n.style.whiteSpace="nowrap";n.style.fontSize="10pt";n.style.width="120px";n.style.paddingLeft="15px";mxUtils.write(n,mxResources.get("fontUrl",
-null,"Font URL")+":");m.appendChild(n);var x=document.createElement("input");x.setAttribute("value",b||"");x.style.marginLeft="4px";x.style.width="250px";x.className="dlg_fontUrl";n=document.createElement("td");n.appendChild(x);m.appendChild(n);l.appendChild(m);this.init=function(){var a=u;"g"==c?a=q:"w"==c&&(a=y);a.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?a.select():document.execCommand("selectAll",!1,null)};m=document.createElement("tr");n=document.createElement("td");n.colSpan=
-2;n.style.paddingTop="20px";n.style.whiteSpace="nowrap";n.setAttribute("align","right");a.isOffline()||(d=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://www.diagrams.net/blog/external-fonts")}),d.className="geBtn",n.appendChild(d));d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();g()});d.className="geBtn";a.editor.cancelFirst&&n.appendChild(d);var B=mxUtils.button(mxResources.get("apply"),function(){var e,b,c;p.checked?(e=u.value,c="s"):t.checked?(e=q.value,
-b=Editor.GOOGLE_FONTS+encodeURIComponent(e).replace(/%20/g,"+"),c="g"):v.checked&&(e=y.value,b=x.value,c="w");var d;d=b;var l=c,f=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;null==e||0==e.length?(k.querySelector(".dlg_fontName_"+l).style.border="1px solid red",d=!1):"w"!=l||f.test(d)?d=!0:(k.querySelector(".dlg_fontUrl").style.border="1px solid red",d=!1);d&&(g(e,b,c),a.hideDialog())});B.className="geBtn gePrimaryBtn";mxEvent.addListener(u,"keypress",f);mxEvent.addListener(q,
-"keypress",f);mxEvent.addListener(y,"keypress",f);mxEvent.addListener(x,"keypress",f);mxEvent.addListener(u,"focus",function(){p.setAttribute("checked","checked");p.checked=!0});mxEvent.addListener(q,"focus",function(){t.setAttribute("checked","checked");t.checked=!0});mxEvent.addListener(y,"focus",function(){v.setAttribute("checked","checked");v.checked=!0});mxEvent.addListener(x,"focus",function(){v.setAttribute("checked","checked");v.checked=!0});n.appendChild(B);a.editor.cancelFirst||n.appendChild(d);
-m.appendChild(n);l.appendChild(m);k.appendChild(l);this.container=k};
-function AspectDialog(a,d,b,c,g){this.aspect={pageId:d||a.pages[0].getId(),layerIds:b||[]};d=document.createElement("div");var f=document.createElement("h5");f.style.margin="0 0 10px";mxUtils.write(f,mxResources.get("pages"));d.appendChild(f);b=document.createElement("div");b.className="geAspectDlgList";d.appendChild(b);f=document.createElement("h5");f.style.margin="0 0 10px";mxUtils.write(f,mxResources.get("layers"));d.appendChild(f);f=document.createElement("div");f.className="geAspectDlgList";
-d.appendChild(f);this.pagesContainer=b;this.layersContainer=f;this.ui=a;b=document.createElement("div");b.style.marginTop="16px";b.style.textAlign="center";f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});f.className="geBtn";a.editor.cancelFirst&&b.appendChild(f);var m=mxUtils.button(mxResources.get("ok"),mxUtils.bind(this,function(){a.hideDialog();c({pageId:this.selectedPage,layerIds:Object.keys(this.selectedLayers)})}));b.appendChild(m);m.className="geBtn gePrimaryBtn";
-a.editor.cancelFirst||b.appendChild(f);m.setAttribute("disabled","disabled");this.okBtn=m;d.appendChild(b);this.container=d}AspectDialog.prototype.init=function(){this.ui.getFileData(!0);for(var a=0;a<this.ui.pages.length;a++){var d=this.ui.updatePageRoot(this.ui.pages[a]);this.createPageItem(d.getId(),d.getName(),d.node,d.root)}};
+y(a,!1,M)};z(F);var T=null;m&&mxEvent.addListener(C.querySelector(".geTempDlgSearchBox"),"keyup",function(a){var e=this;null!=T&&clearTimeout(T);13==a.keyCode?A(e.value):T=setTimeout(function(){A(e.value)},500)});mxEvent.addListener(V,"click",q);mxEvent.addListener(C.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){q(!0)});mxEvent.addListener(C.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=b&&b();a.hideDialog(!0)})};
+var BtnDialog=function(a,d,b,c){var g=document.createElement("div");g.style.textAlign="center";var f=document.createElement("p");f.style.fontSize="16pt";f.style.padding="0px";f.style.margin="0px";f.style.color="gray";mxUtils.write(f,mxResources.get("done"));var l="Unknown",m=document.createElement("img");m.setAttribute("border","0");m.setAttribute("align","absmiddle");m.style.marginRight="10px";d==a.drive?(l=mxResources.get("googleDrive"),m.src=IMAGE_PATH+"/google-drive-logo-white.svg"):d==a.dropbox?
+(l=mxResources.get("dropbox"),m.src=IMAGE_PATH+"/dropbox-logo-white.svg"):d==a.oneDrive?(l=mxResources.get("oneDrive"),m.src=IMAGE_PATH+"/onedrive-logo-white.svg"):d==a.gitHub?(l=mxResources.get("github"),m.src=IMAGE_PATH+"/github-logo-white.svg"):d==a.gitLab?(l=mxResources.get("gitlab"),m.src=IMAGE_PATH+"/gitlab-logo.svg"):d==a.trello&&(l=mxResources.get("trello"),m.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizedIn",[l],"You are now authorized in {1}"));
+b=mxUtils.button(b,c);b.insertBefore(m,b.firstChild);b.style.marginTop="6px";b.className="geBigButton";b.style.fontSize="18px";b.style.padding="14px";g.appendChild(f);g.appendChild(a);g.appendChild(b);this.container=g},FontDialog=function(a,d,b,c,g){function f(a){this.style.border="";13==a.keyCode&&B.click()}var l,m,e,k=document.createElement("table"),n=document.createElement("tbody");k.style.marginTop="8px";l=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.whiteSpace=
+"nowrap";m.style.fontSize="10pt";m.style.fontWeight="bold";var p=document.createElement("input");p.style.cssText="margin-right:8px;margin-bottom:8px;";p.setAttribute("value","sysfonts");p.setAttribute("type","radio");p.setAttribute("name","current-fontdialog");p.setAttribute("id","fontdialog-sysfonts");m.appendChild(p);e=document.createElement("label");e.setAttribute("for","fontdialog-sysfonts");mxUtils.write(e,mxResources.get("sysFonts",null,"System Fonts"));m.appendChild(e);l.appendChild(m);n.appendChild(l);
+l=document.createElement("tr");m=document.createElement("td");m.style.whiteSpace="nowrap";m.style.fontSize="10pt";m.style.width="120px";m.style.paddingLeft="15px";mxUtils.write(m,mxResources.get("fontname",null,"Font Name")+":");l.appendChild(m);var u=document.createElement("input");"s"==c&&u.setAttribute("value",d);u.style.marginLeft="4px";u.style.width="250px";u.className="dlg_fontName_s";m=document.createElement("td");m.appendChild(u);l.appendChild(m);n.appendChild(l);l=document.createElement("tr");
+m=document.createElement("td");m.colSpan=2;m.style.whiteSpace="nowrap";m.style.fontSize="10pt";m.style.fontWeight="bold";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";t.setAttribute("value","googlefonts");t.setAttribute("type","radio");t.setAttribute("name","current-fontdialog");t.setAttribute("id","fontdialog-googlefonts");m.appendChild(t);e=document.createElement("label");e.setAttribute("for","fontdialog-googlefonts");mxUtils.write(e,mxResources.get("googleFonts",
+null,"Google Fonts"));m.appendChild(e);mxClient.IS_CHROMEAPP||a.isOffline()&&!EditorUi.isElectronApp||(e=a.menus.createHelpLink("https://fonts.google.com/"),e.getElementsByTagName("img")[0].setAttribute("valign","middle"),m.appendChild(e));l.appendChild(m);n.appendChild(l);l=document.createElement("tr");m=document.createElement("td");m.style.whiteSpace="nowrap";m.style.fontSize="10pt";m.style.width="120px";m.style.paddingLeft="15px";mxUtils.write(m,mxResources.get("fontname",null,"Font Name")+":");
+l.appendChild(m);var q=document.createElement("input");"g"==c&&q.setAttribute("value",d);q.style.marginLeft="4px";q.style.width="250px";q.className="dlg_fontName_g";m=document.createElement("td");m.appendChild(q);l.appendChild(m);n.appendChild(l);l=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.whiteSpace="nowrap";m.style.fontSize="10pt";m.style.fontWeight="bold";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value",
+"webfonts");v.setAttribute("type","radio");v.setAttribute("name","current-fontdialog");v.setAttribute("id","fontdialog-webfonts");m.appendChild(v);e=document.createElement("label");e.setAttribute("for","fontdialog-webfonts");mxUtils.write(e,mxResources.get("webfonts",null,"Web Fonts"));m.appendChild(e);l.appendChild(m);n.appendChild(l);l=document.createElement("tr");m=document.createElement("td");m.style.whiteSpace="nowrap";m.style.fontSize="10pt";m.style.width="120px";m.style.paddingLeft="15px";
+mxUtils.write(m,mxResources.get("fontname",null,"Font Name")+":");l.appendChild(m);var y=document.createElement("input");"w"==c&&y.setAttribute("value",d);y.style.marginLeft="4px";y.style.width="250px";y.className="dlg_fontName_w";m=document.createElement("td");m.appendChild(y);l.appendChild(m);n.appendChild(l);l=document.createElement("tr");m=document.createElement("td");m.style.whiteSpace="nowrap";m.style.fontSize="10pt";m.style.width="120px";m.style.paddingLeft="15px";mxUtils.write(m,mxResources.get("fontUrl",
+null,"Font URL")+":");l.appendChild(m);var x=document.createElement("input");x.setAttribute("value",b||"");x.style.marginLeft="4px";x.style.width="250px";x.className="dlg_fontUrl";m=document.createElement("td");m.appendChild(x);l.appendChild(m);n.appendChild(l);this.init=function(){var a=u;"g"==c?a=q:"w"==c&&(a=y);a.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?a.select():document.execCommand("selectAll",!1,null)};l=document.createElement("tr");m=document.createElement("td");m.colSpan=
+2;m.style.paddingTop="20px";m.style.whiteSpace="nowrap";m.setAttribute("align","right");a.isOffline()||(d=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://www.diagrams.net/blog/external-fonts")}),d.className="geBtn",m.appendChild(d));d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();g()});d.className="geBtn";a.editor.cancelFirst&&m.appendChild(d);var B=mxUtils.button(mxResources.get("apply"),function(){var e,b,c;p.checked?(e=u.value,c="s"):t.checked?(e=q.value,
+b=Editor.GOOGLE_FONTS+encodeURIComponent(e).replace(/%20/g,"+"),c="g"):v.checked&&(e=y.value,b=x.value,c="w");var d;d=b;var n=c,f=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;null==e||0==e.length?(k.querySelector(".dlg_fontName_"+n).style.border="1px solid red",d=!1):"w"!=n||f.test(d)?d=!0:(k.querySelector(".dlg_fontUrl").style.border="1px solid red",d=!1);d&&(g(e,b,c),a.hideDialog())});B.className="geBtn gePrimaryBtn";mxEvent.addListener(u,"keypress",f);mxEvent.addListener(q,
+"keypress",f);mxEvent.addListener(y,"keypress",f);mxEvent.addListener(x,"keypress",f);mxEvent.addListener(u,"focus",function(){p.setAttribute("checked","checked");p.checked=!0});mxEvent.addListener(q,"focus",function(){t.setAttribute("checked","checked");t.checked=!0});mxEvent.addListener(y,"focus",function(){v.setAttribute("checked","checked");v.checked=!0});mxEvent.addListener(x,"focus",function(){v.setAttribute("checked","checked");v.checked=!0});m.appendChild(B);a.editor.cancelFirst||m.appendChild(d);
+l.appendChild(m);n.appendChild(l);k.appendChild(n);this.container=k};
+function AspectDialog(a,d,b,c,g){this.aspect={pageId:d||(a.pages?a.pages[0].getId():null),layerIds:b||[]};d=document.createElement("div");var f=document.createElement("h5");f.style.margin="0 0 10px";mxUtils.write(f,mxResources.get("pages"));d.appendChild(f);b=document.createElement("div");b.className="geAspectDlgList";d.appendChild(b);f=document.createElement("h5");f.style.margin="0 0 10px";mxUtils.write(f,mxResources.get("layers"));d.appendChild(f);f=document.createElement("div");f.className="geAspectDlgList";
+d.appendChild(f);this.pagesContainer=b;this.layersContainer=f;this.ui=a;b=document.createElement("div");b.style.marginTop="16px";b.style.textAlign="center";f=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=g&&g()});f.className="geBtn";a.editor.cancelFirst&&b.appendChild(f);var l=mxUtils.button(mxResources.get("ok"),mxUtils.bind(this,function(){a.hideDialog();c({pageId:this.selectedPage,layerIds:Object.keys(this.selectedLayers)})}));b.appendChild(l);l.className="geBtn gePrimaryBtn";
+a.editor.cancelFirst||b.appendChild(f);l.setAttribute("disabled","disabled");this.okBtn=l;d.appendChild(b);this.container=d}AspectDialog.prototype.init=function(){var a=this.ui.getFileData(!0);if(this.ui.pages)for(a=0;a<this.ui.pages.length;a++){var d=this.ui.updatePageRoot(this.ui.pages[a]);this.createPageItem(d.getId(),d.getName(),d.node)}else this.createPageItem("1","Page-1",mxUtils.parseXml(a).documentElement)};
AspectDialog.prototype.createViewer=function(a,d,b){mxEvent.disableContextMenu(a);a.style.userSelect="none";var c=new Graph(a);c.setTooltips(!1);c.setEnabled(!1);c.setPanning(!1);c.minFitScale=null;c.maxFitScale=null;c.centerZoom=!0;d="mxGraphModel"==d.nodeName?d:Editor.parseDiagramNode(d);if(null!=d){var g=d.getAttribute("background");if(null==g||""==g||g==mxConstants.NONE)g="#ffffff";a.style.backgroundColor=g;g=new mxCodec(d.ownerDocument);a=c.getModel();g.decode(d,a);d=a.getChildCount(a.root);
-for(var g=null==b,f=0;f<d;f++){var m=a.getChildAt(a.root,f);a.setVisible(m,g||b==m.id)}c.maxFitScale=1;c.fit(0);c.center()}return c};
-AspectDialog.prototype.createPageItem=function(a,d,b,c){var g=document.createElement("div");g.className="geAspectDlgListItem";g.setAttribute("data-page-id",a);g.innerHTML='<div style="max-width: 100%; max-height: 100%;"></div><div class="geAspectDlgListItemText">'+mxUtils.htmlEntities(d)+"</div>";this.pagesContainer.appendChild(g);var f=this.createViewer(g.childNodes[0],b);d=mxUtils.bind(this,function(){null!=this.selectedItem&&(this.selectedItem.className="geAspectDlgListItem");this.selectedItem=
-g;this.selectedPage=a;g.className+=" geAspectDlgListItemSelected";this.layersContainer.innerHTML="";this.selectedLayers={};this.okBtn.setAttribute("disabled","disabled");for(var c=f.model,c=c.getChildCells(c.getRoot()),d=0;d<c.length;d++)this.createLayerItem(c[d],a,f,b)});mxEvent.addListener(g,"click",d);this.aspect.pageId==a&&d()};
+for(var g=null==b,f=0;f<d;f++){var l=a.getChildAt(a.root,f);a.setVisible(l,g||b==l.id)}c.maxFitScale=1;c.fit(0);c.center()}return c};
+AspectDialog.prototype.createPageItem=function(a,d,b){var c=document.createElement("div");c.className="geAspectDlgListItem";c.setAttribute("data-page-id",a);c.innerHTML='<div style="max-width: 100%; max-height: 100%;"></div><div class="geAspectDlgListItemText">'+mxUtils.htmlEntities(d)+"</div>";this.pagesContainer.appendChild(c);var g=this.createViewer(c.childNodes[0],b);d=mxUtils.bind(this,function(){null!=this.selectedItem&&(this.selectedItem.className="geAspectDlgListItem");this.selectedItem=c;
+this.selectedPage=a;c.className+=" geAspectDlgListItemSelected";this.layersContainer.innerHTML="";this.selectedLayers={};this.okBtn.setAttribute("disabled","disabled");for(var d=g.model,d=d.getChildCells(d.getRoot()),l=0;l<d.length;l++)this.createLayerItem(d[l],a,g,b)});mxEvent.addListener(c,"click",d);this.aspect.pageId==a&&d()};
AspectDialog.prototype.createLayerItem=function(a,d,b,c){d=b.convertValueToString(a)||mxResources.get("background")||"Background";var g=document.createElement("div");g.setAttribute("data-layer-id",a.id);g.className="geAspectDlgListItem";g.innerHTML='<div style="max-width: 100%; max-height: 100%;"></div><div class="geAspectDlgListItemText">'+mxUtils.htmlEntities(d)+"</div>";this.layersContainer.appendChild(g);this.createViewer(g.childNodes[0],c,a.id);c=mxUtils.bind(this,function(){0<=g.className.indexOf("geAspectDlgListItemSelected")?
(g.className="geAspectDlgListItem",delete this.selectedLayers[a.id],0==Object.keys(this.selectedLayers).length&&this.okBtn.setAttribute("disabled","disabled")):(g.className+=" geAspectDlgListItemSelected",this.selectedLayers[a.id]=!0,this.okBtn.removeAttribute("disabled"))});mxEvent.addListener(g,"click",c);-1!=this.aspect.layerIds.indexOf(a.id)&&c()};
-var FilePropertiesDialog=function(a){var d,b,c=document.createElement("table"),g=document.createElement("tbody");c.style.width="100%";c.style.marginTop="8px";var f=a.getCurrentFile();d=null!=f&&null!=f.getTitle()?f.getTitle():this.editorUi.defaultFilename;b=null;if(/(\.png)$/i.test(d)){var m=1,n=0;d=a.fileNode;null!=d&&(d.hasAttribute("scale")&&(m=parseFloat(d.getAttribute("scale"))),d.hasAttribute("border")&&(n=parseInt(d.getAttribute("border"))));d=document.createElement("tr");b=document.createElement("td");
-b.style.whiteSpace="nowrap";b.style.fontSize="10pt";b.style.width="120px";mxUtils.write(b,mxResources.get("zoom")+":");d.appendChild(b);var e=document.createElement("input");e.setAttribute("value",100*m+"%");e.style.marginLeft="4px";e.style.width="180px";b=document.createElement("td");b.style.whiteSpace="nowrap";b.appendChild(e);d.appendChild(b);g.appendChild(d);d=document.createElement("tr");b=document.createElement("td");b.style.whiteSpace="nowrap";b.style.fontSize="10pt";b.style.width="120px";
-mxUtils.write(b,mxResources.get("borderWidth")+":");d.appendChild(b);var k=document.createElement("input");k.setAttribute("value",n);k.style.marginLeft="4px";k.style.width="180px";b=document.createElement("td");b.style.whiteSpace="nowrap";b.appendChild(k);d.appendChild(b);g.appendChild(d);this.init=function(){e.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null)};b=function(){null!=a.fileNode&&(a.fileNode.setAttribute("scale",Math.max(0,
-parseInt(e.value)/100)),a.fileNode.setAttribute("border",Math.max(0,parseInt(k.value))),null!=f&&f.fileChanged());a.hideDialog()}}else{m=null!=f?f.isCompressed():Editor.compressXml;d=document.createElement("tr");b=document.createElement("td");b.style.whiteSpace="nowrap";b.style.fontSize="10pt";b.style.width="120px";mxUtils.write(b,mxResources.get("compressed")+":");d.appendChild(b);var l=document.createElement("input");l.setAttribute("type","checkbox");m&&(l.setAttribute("checked","checked"),l.defaultChecked=
-!0);b=document.createElement("td");b.style.whiteSpace="nowrap";b.appendChild(l);d.appendChild(b);g.appendChild(d);this.init=function(){l.focus()};b=function(){null!=a.fileNode&&(a.fileNode.setAttribute("compressed",l.checked?"true":"false"),null!=f&&f.fileChanged());a.hideDialog()}}m=mxUtils.button(mxResources.get("apply"),b);m.className="geBtn gePrimaryBtn";d=document.createElement("tr");b=document.createElement("td");b.colSpan=2;b.style.paddingTop="20px";b.style.whiteSpace="nowrap";b.setAttribute("align",
-"right");n=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";a.editor.cancelFirst&&b.appendChild(n);b.appendChild(m);a.editor.cancelFirst||b.appendChild(n);d.appendChild(b);g.appendChild(d);c.appendChild(g);this.container=c};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0,html4.ATTRIBS["font::data-font-src"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio",mimeType:"text/xml"},{description:"diagramPngDesc",extension:"png",mimeType:"image/png"},{description:"diagramSvgDesc",extension:"svg",mimeType:"image/svg"},{description:"diagramHtmlDesc",extension:"html",mimeType:"text/html"},
+var FilePropertiesDialog=function(a){var d,b,c=document.createElement("table"),g=document.createElement("tbody");c.style.width="100%";c.style.marginTop="8px";var f=a.getCurrentFile();d=null!=f&&null!=f.getTitle()?f.getTitle():this.editorUi.defaultFilename;b=null;if(/(\.png)$/i.test(d)){var l=1,m=0;d=a.fileNode;null!=d&&(d.hasAttribute("scale")&&(l=parseFloat(d.getAttribute("scale"))),d.hasAttribute("border")&&(m=parseInt(d.getAttribute("border"))));d=document.createElement("tr");b=document.createElement("td");
+b.style.whiteSpace="nowrap";b.style.fontSize="10pt";b.style.width="120px";mxUtils.write(b,mxResources.get("zoom")+":");d.appendChild(b);var e=document.createElement("input");e.setAttribute("value",100*l+"%");e.style.marginLeft="4px";e.style.width="180px";b=document.createElement("td");b.style.whiteSpace="nowrap";b.appendChild(e);d.appendChild(b);g.appendChild(d);d=document.createElement("tr");b=document.createElement("td");b.style.whiteSpace="nowrap";b.style.fontSize="10pt";b.style.width="120px";
+mxUtils.write(b,mxResources.get("borderWidth")+":");d.appendChild(b);var k=document.createElement("input");k.setAttribute("value",m);k.style.marginLeft="4px";k.style.width="180px";b=document.createElement("td");b.style.whiteSpace="nowrap";b.appendChild(k);d.appendChild(b);g.appendChild(d);this.init=function(){e.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null)};b=function(){null!=a.fileNode&&(a.fileNode.setAttribute("scale",Math.max(0,
+parseInt(e.value)/100)),a.fileNode.setAttribute("border",Math.max(0,parseInt(k.value))),null!=f&&f.fileChanged());a.hideDialog()}}else{l=null!=f?f.isCompressed():Editor.compressXml;d=document.createElement("tr");b=document.createElement("td");b.style.whiteSpace="nowrap";b.style.fontSize="10pt";b.style.width="120px";mxUtils.write(b,mxResources.get("compressed")+":");d.appendChild(b);var n=document.createElement("input");n.setAttribute("type","checkbox");l&&(n.setAttribute("checked","checked"),n.defaultChecked=
+!0);b=document.createElement("td");b.style.whiteSpace="nowrap";b.appendChild(n);d.appendChild(b);g.appendChild(d);this.init=function(){n.focus()};b=function(){null!=a.fileNode&&(a.fileNode.setAttribute("compressed",n.checked?"true":"false"),null!=f&&f.fileChanged());a.hideDialog()}}l=mxUtils.button(mxResources.get("apply"),b);l.className="geBtn gePrimaryBtn";d=document.createElement("tr");b=document.createElement("td");b.colSpan=2;b.style.paddingTop="20px";b.style.whiteSpace="nowrap";b.setAttribute("align",
+"right");m=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});m.className="geBtn";a.editor.cancelFirst&&b.appendChild(m);b.appendChild(l);a.editor.cancelFirst||b.appendChild(m);d.appendChild(b);g.appendChild(d);c.appendChild(g);this.container=c};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0,html4.ATTRIBS["font::data-font-src"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio",mimeType:"text/xml"},{description:"diagramPngDesc",extension:"png",mimeType:"image/png"},{description:"diagramSvgDesc",extension:"svg",mimeType:"image/svg"},{description:"diagramHtmlDesc",extension:"html",mimeType:"text/html"},
{description:"diagramXmlDesc",extension:"xml",mimeType:"text/xml"}];Editor.prototype.libraryFileTypes=[{description:"Library (.drawiolib, .xml)",extensions:["drawiolib","xml"]}];Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.styles=[{},{commonStyle:{fontColor:"#5C5C5C",strokeColor:"#006658",fillColor:"#21C0A5"}},{commonStyle:{fontColor:"#095C86",strokeColor:"#AF45ED",fillColor:"#F694C1"},edgeStyle:{strokeColor:"#60E696"}},
{commonStyle:{fontColor:"#46495D",strokeColor:"#788AA3",fillColor:"#B2C9AB"}},{commonStyle:{fontColor:"#5AA9E6",strokeColor:"#FF6392",fillColor:"#FFE45E"}},{commonStyle:{fontColor:"#1D3557",strokeColor:"#457B9D",fillColor:"#A8DADC"},graph:{background:"#F1FAEE"}},{commonStyle:{fontColor:"#393C56",strokeColor:"#E07A5F",fillColor:"#F2CC8F"},graph:{background:"#F4F1DE",gridColor:"#D4D0C0"}},{commonStyle:{fontColor:"#143642",strokeColor:"#0F8B8D",fillColor:"#FAE5C7"},edgeStyle:{strokeColor:"#A8201A"},
graph:{background:"#DAD2D8",gridColor:"#ABA4A9"}},{commonStyle:{fontColor:"#FEFAE0",strokeColor:"#DDA15E",fillColor:"#BC6C25"},graph:{background:"#283618",gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}},{},{vertexStyle:{strokeColor:"#D0CEE2",fillColor:"#FAD9D5"},edgeStyle:{strokeColor:"#09555B"},commonStyle:{fontColor:"#1A1A1A"}},{vertexStyle:{strokeColor:"#BAC8D3",fillColor:"#09555B",fontColor:"#EEEEEE"},
@@ -9885,8 +9885,8 @@ defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1,isVisible:function
defVal:!1,isVisible:function(a,e){var b=0<a.vertices.length?e.editorUi.editor.graph.getCellGeometry(a.vertices[0]):null;return null!=b&&!b.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",
type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"pointerEvents",dispName:"Pointer Events",type:"bool",defVal:!0,isVisible:function(a,e){var b=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null);return e.editorUi.editor.graph.isSwimlane(a.vertices[0])||null==b||b==mxConstants.NONE}},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(a,e){return 0<
a.vertices.length&&e.editorUi.editor.graph.isContainer(a.vertices[0])}}].concat(Editor.commonProperties);Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## JSON for variables in styles of the form {"name": "value", "name": "value"} where name is a string\n## that will replace a placeholder in a style.\n#\n# vars: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## Additional labels can be added by using an optional labels array with entries of the\n## form {"label": string, "x": number, "y": number, "dx": number, "dy": number} where\n## x is from -1 to 1 along the edge, y is orthogonal, and dx/dy are offsets in pixels.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nTessa Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nAlison Donovan,System Admin,rdo,Office 3,Tessa Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nEvan Valet,HR Director,tva,Office 4,Tessa Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\n';
-Editor.createRoughCanvas=function(a){var e=rough.canvas({getContext:function(){return a}});e.draw=function(e){var b=e.sets||[];e=e.options||this.getDefaultOptions();for(var c=0;c<b.length;c++){var d=b[c];switch(d.type){case "path":null!=e.stroke&&this._drawToContext(a,d,e);break;case "fillPath":this._drawToContext(a,d,e);break;case "fillSketch":this.fillSketch(a,d,e)}}};e.fillSketch=function(e,b,c){var d=a.state.strokeColor,k=a.state.strokeWidth,l=a.state.strokeAlpha,f=a.state.dashed,g=c.fillWeight;
-0>g&&(g=c.strokeWidth/2);a.setStrokeAlpha(a.state.fillAlpha);a.setStrokeColor(c.fill||"");a.setStrokeWidth(g);a.setDashed(!1);this._drawToContext(e,b,c);a.setDashed(f);a.setStrokeWidth(k);a.setStrokeColor(d);a.setStrokeAlpha(l)};e._drawToContext=function(a,e,b){a.begin();for(var c=0;c<e.ops.length;c++){var d=e.ops[c],k=d.data;switch(d.op){case "move":a.moveTo(k[0],k[1]);break;case "bcurveTo":a.curveTo(k[0],k[1],k[2],k[3],k[4],k[5]);break;case "lineTo":a.lineTo(k[0],k[1])}}a.end();"fillPath"===e.type&&
+Editor.createRoughCanvas=function(a){var e=rough.canvas({getContext:function(){return a}});e.draw=function(e){var b=e.sets||[];e=e.options||this.getDefaultOptions();for(var c=0;c<b.length;c++){var d=b[c];switch(d.type){case "path":null!=e.stroke&&this._drawToContext(a,d,e);break;case "fillPath":this._drawToContext(a,d,e);break;case "fillSketch":this.fillSketch(a,d,e)}}};e.fillSketch=function(e,b,c){var d=a.state.strokeColor,k=a.state.strokeWidth,n=a.state.strokeAlpha,f=a.state.dashed,g=c.fillWeight;
+0>g&&(g=c.strokeWidth/2);a.setStrokeAlpha(a.state.fillAlpha);a.setStrokeColor(c.fill||"");a.setStrokeWidth(g);a.setDashed(!1);this._drawToContext(e,b,c);a.setDashed(f);a.setStrokeWidth(k);a.setStrokeColor(d);a.setStrokeAlpha(n)};e._drawToContext=function(a,e,b){a.begin();for(var c=0;c<e.ops.length;c++){var d=e.ops[c],k=d.data;switch(d.op){case "move":a.moveTo(k[0],k[1]);break;case "bcurveTo":a.curveTo(k[0],k[1],k[2],k[3],k[4],k[5]);break;case "lineTo":a.lineTo(k[0],k[1])}}a.end();"fillPath"===e.type&&
b.filled?a.fill():a.stroke()};return e};(function(){function a(e,b,c){this.canvas=e;this.rc=b;this.shape=c;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,a.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,a.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,a.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,a.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,a.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,a.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,a.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,a.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
a.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,a.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,a.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,a.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,a.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,a.prototype.fillAndStroke);
@@ -9896,7 +9896,7 @@ d=null;(b.filled=e)?(b.fill="none"===this.canvas.state.fillColor?"":this.canvas.
k);k=mxUtils.getValue(this.shape.style,"fillWeight",-1);b.fillWeight="auto"==k?-1:k;k=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==k&&(k=null!=this.shape.state?this.shape.state.view.graph.defaultPageBackgroundColor:"#ffffff",k=null!=b.fill&&(null!=d||null!=k&&b.fill.toLowerCase()==k.toLowerCase())?"solid":c.fillStyle);b.fillStyle=k;return b};a.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};a.prototype.end=function(){this.passThrough&&
this.originalEnd.apply(this.canvas,arguments)};a.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var a=2;a<arguments.length;a+=2)this.lastX=arguments[a-1],this.lastY=arguments[a],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};a.prototype.lineTo=function(a,e){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,a,e),this.lastX=a,this.lastY=e)};a.prototype.moveTo=
function(a,e){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,a,e),this.lastX=a,this.lastY=e,this.firstX=a,this.firstY=e)};a.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};a.prototype.quadTo=function(a,e,b,c){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,a,e,b,c),this.lastX=b,this.lastY=c)};a.prototype.curveTo=function(a,e,b,c,d,k){this.passThrough?
-this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,a,e,b,c,d,k),this.lastX=d,this.lastY=k)};a.prototype.arcTo=function(a,e,b,c,d,k,l){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var f=mxUtils.arcToCurves(this.lastX,this.lastY,a,e,b,c,d,k,l);if(null!=f)for(var g=0;g<f.length;g+=6)this.curveTo(f[g],f[g+1],f[g+2],f[g+3],f[g+4],f[g+5]);this.lastX=k;this.lastY=l}};a.prototype.rect=function(a,e,b,c){this.passThrough?this.originalRect.apply(this.canvas,
+this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,a,e,b,c,d,k),this.lastX=d,this.lastY=k)};a.prototype.arcTo=function(a,e,b,c,d,k,n){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var f=mxUtils.arcToCurves(this.lastX,this.lastY,a,e,b,c,d,k,n);if(null!=f)for(var g=0;g<f.length;g+=6)this.curveTo(f[g],f[g+1],f[g+2],f[g+3],f[g+4],f[g+5]);this.lastX=k;this.lastY=n}};a.prototype.rect=function(a,e,b,c){this.passThrough?this.originalRect.apply(this.canvas,
arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(a,e,b,c,this.getStyle(!0,!0)))};a.prototype.ellipse=function(a,e,b,c){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(a+b/2,e+c/2,b,c,this.getStyle(!0,!0)))};a.prototype.roundrect=function(a,e,b,c,d,k){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(a+d,e),this.lineTo(a+b-d,e),this.quadTo(a+b,e,a+b,e+k),this.lineTo(a+
b,e+c-k),this.quadTo(a+b,e+c,a+b-d,e+c),this.lineTo(a+d,e+c),this.quadTo(a,e+c,a,e+c-k),this.lineTo(a,e+k),this.quadTo(a,e,a+d,e))};a.prototype.drawPath=function(a){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),a)}catch(S){}this.passThrough=!1}else if(null!=this.nextShape){for(var e in a)this.nextShape.options[e]=a[e];null==a.stroke&&delete this.nextShape.options.stroke;a.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);
this.passThrough=!1}};a.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};a.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};a.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};a.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;
@@ -9907,8 +9907,8 @@ c||(e.save(),c=this.fill,d=this.stroke,this.stroke=this.fill=null,e.handJiggle.p
Editor.extractGraphModel=function(a,e,b){if(null!=a&&"undefined"!==typeof pako){var c=a.ownerDocument.getElementsByTagName("div"),d=[];if(null!=c&&0<c.length)for(var k=0;k<c.length;k++)if("mxgraph"==c[k].getAttribute("class")){d.push(c[k]);break}0<d.length&&(c=d[0].getAttribute("data-mxgraph"),null!=c?(d=JSON.parse(c),null!=d&&null!=d.xml&&(a=mxUtils.parseXml(d.xml),a=a.documentElement)):(d=d[0].getElementsByTagName("div"),0<d.length&&(c=mxUtils.getTextContent(d[0]),c=Graph.decompress(c,null,b),0<
c.length&&(a=mxUtils.parseXml(c),a=a.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(c=a.getAttribute("content"),null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)a=mxUtils.parseXml(c).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||e||(d=null,"diagram"==a.nodeName?d=a:"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),0<c.length&&
(d=c[Math.max(0,Math.min(c.length-1,urlParams.page||0))])),null!=d&&(a=Editor.parseDiagramNode(d,b)));null==a||"mxGraphModel"==a.nodeName||e&&"mxfile"==a.nodeName||(a=null);return a};Editor.parseDiagramNode=function(a,e){var b=mxUtils.trim(mxUtils.getTextContent(a)),c=null;0<b.length?(b=Graph.decompress(b,null,e),null!=b&&0<b.length&&(c=mxUtils.parseXml(b).documentElement)):(b=mxUtils.getChildNodes(a),0<b.length&&(c=mxUtils.createXmlDocument(),c.appendChild(c.importNode(b[0],!0)),c=c.documentElement));
-return c};Editor.getDiagramNodeXml=function(a){var e=mxUtils.getTextContent(a),b=null;0<e.length?b=Graph.decompress(e):null!=a.firstChild&&(b=mxUtils.getXml(a.firstChild));return b};Editor.extractGraphModelFromPdf=function(a){a=a.substring(a.indexOf(",")+1);a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a,!0);for(var e=null,b="",c=0,d=0,k=[],l=null;d<a.length;){var f=a.charCodeAt(d),d=d+1;10!=f&&(b+=String.fromCharCode(f));f=="/Subject (%3Cmxfile".charCodeAt(c)?c++:c=0;if(19==c){var g=a.indexOf("%3C%2Fmxfile%3E)",
-d)+15,d=d-9;if(g>d){e=a.substring(d,g);break}}10==f&&("endobj"==b?l=null:"obj"==b.substring(b.length-3,b.length)||"xref"==b||"trailer"==b?(l=[],k[b.split(" ")[0]]=l):null!=l&&l.push(b),b="")}null==e&&(e=Editor.extractGraphModelFromXref(k));null!=e&&(e=decodeURIComponent(e.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return e};Editor.extractGraphModelFromXref=function(a){var e=a.trailer,b=null;null!=e&&(e=/.* \/Info (\d+) (\d+) R/g.exec(e.join("\n")),null!=e&&0<e.length&&(e=a[e[1]],null!=e&&(e=/.* \/Subject (\d+) (\d+) R/g.exec(e.join("\n")),
+return c};Editor.getDiagramNodeXml=function(a){var e=mxUtils.getTextContent(a),b=null;0<e.length?b=Graph.decompress(e):null!=a.firstChild&&(b=mxUtils.getXml(a.firstChild));return b};Editor.extractGraphModelFromPdf=function(a){a=a.substring(a.indexOf(",")+1);a=window.atob&&!mxClient.IS_SF?atob(a):Base64.decode(a,!0);for(var e=null,b="",c=0,d=0,k=[],n=null;d<a.length;){var f=a.charCodeAt(d),d=d+1;10!=f&&(b+=String.fromCharCode(f));f=="/Subject (%3Cmxfile".charCodeAt(c)?c++:c=0;if(19==c){var g=a.indexOf("%3C%2Fmxfile%3E)",
+d)+15,d=d-9;if(g>d){e=a.substring(d,g);break}}10==f&&("endobj"==b?n=null:"obj"==b.substring(b.length-3,b.length)||"xref"==b||"trailer"==b?(n=[],k[b.split(" ")[0]]=n):null!=n&&n.push(b),b="")}null==e&&(e=Editor.extractGraphModelFromXref(k));null!=e&&(e=decodeURIComponent(e.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return e};Editor.extractGraphModelFromXref=function(a){var e=a.trailer,b=null;null!=e&&(e=/.* \/Info (\d+) (\d+) R/g.exec(e.join("\n")),null!=e&&0<e.length&&(e=a[e[1]],null!=e&&(e=/.* \/Subject (\d+) (\d+) R/g.exec(e.join("\n")),
null!=e&&0<e.length&&(a=a[e[1]],null!=a&&(a=a.join("\n"),b=a.substring(1,a.length-1))))));return b};Editor.extractGraphModelFromPng=function(a){var e=null;try{var b=a.substring(a.indexOf(",")+1),c=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);EditorUi.parsePng(c,mxUtils.bind(this,function(a,b,d){a=c.substring(a+8,a+8+d);"zTXt"==b?(d=a.indexOf(String.fromCharCode(0)),"mxGraphModel"==a.substring(0,d)&&(a=pako.inflateRaw(Graph.stringToArrayBuffer(a.substring(d+2)),{to:"string"}).replace(/\+/g,
" "),null!=a&&0<a.length&&(e=a))):"tEXt"==b&&(a=a.split(String.fromCharCode(0)),1<a.length&&("mxGraphModel"==a[0]||"mxfile"==a[0])&&(e=a[1]));if(null!=e||"IDAT"==b)return!0}))}catch(K){console.log("here",K)}null!=e&&"%"==e.charAt(0)&&(e=decodeURIComponent(e));null!=e&&"%"==e.charAt(0)&&(e=decodeURIComponent(e));return e};Editor.extractParserError=function(a,e){var b=null,c=null!=a?a.getElementsByTagName("parsererror"):null;null!=c&&0<c.length&&(b=e||mxResources.get("invalidChars"),c=c[0].getElementsByTagName("div"),
0<c.length&&(b=mxUtils.getTextContent(c[0])));return null!=b?mxUtils.trim(b):b};Editor.addRetryToError=function(a,e){if(null!=a){var b=null!=a.error?a.error:a;null==b.retry&&(b.retry=e)}};Editor.configure=function(a,e){if(null!=a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=a.defaultColors||ColorDialog.prototype.defaultColors;
@@ -9935,28 +9935,28 @@ var e=[];a.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\
return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)};Editor.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var e=a.convert,b=this;a.convert=function(c){if(null!=c){var d="http://"==c.substring(0,7)||"https://"==c.substring(0,8);d&&!navigator.onLine?c=Editor.svgBrokenImage.src:!d||c.substring(0,a.baseUrl.length)==a.baseUrl||b.crossOriginImages&&b.isCorsEnabledForUrl(c)?"chrome-extension://"==c.substring(0,
19)||mxClient.IS_CHROMEAPP||(c=e.apply(this,arguments)):c=PROXY_URL+"?url="+encodeURIComponent(c)}return c};return a};Editor.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};Editor.prototype.convertImageToDataUri=function(a,e){try{var b=!0,c=window.setTimeout(mxUtils.bind(this,function(){b=!1;e(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(c);b&&e(Editor.createSvgDataUri(a.getText()))}),
function(){window.clearTimeout(c);b&&e(Editor.svgBrokenImage.src)});else{var d=new Image;this.crossOriginImages&&(d.crossOrigin="anonymous");d.onload=function(){window.clearTimeout(c);if(b)try{var a=document.createElement("canvas"),k=a.getContext("2d");a.height=d.height;a.width=d.width;k.drawImage(d,0,0);e(a.toDataURL())}catch(X){e(Editor.svgBrokenImage.src)}};d.onerror=function(){window.clearTimeout(c);b&&e(Editor.svgBrokenImage.src)};d.src=a}}catch(S){e(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=
-function(a,e,b,c){null==c&&(c=this.createImageUrlConverter());var d=0,k=b||{};b=mxUtils.bind(this,function(b,l){for(var f=a.getElementsByTagName(b),g=0;g<f.length;g++)mxUtils.bind(this,function(b){try{if(null!=b){var f=c.convert(b.getAttribute(l));if(null!=f&&"data:"!=f.substring(0,5)){var g=k[f];null==g?(d++,this.convertImageToDataUri(f,function(c){null!=c&&(k[f]=c,b.setAttribute(l,c));d--;0==d&&e(a)})):b.setAttribute(l,g)}else null!=f&&b.setAttribute(l,f)}}catch(ea){}})(f[g])});b("image","xlink:href");
-b("img","src");0==d&&e(a)};Editor.base64Encode=function(a){for(var e="",b=0,c=a.length,d,k,l;b<c;){d=a.charCodeAt(b++)&255;if(b==c){e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4);e+="==";break}k=a.charCodeAt(b++);if(b==c){e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&
-3)<<4|(k&240)>>4);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);e+="=";break}l=a.charCodeAt(b++);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4|(k&240)>>4);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(l&192)>>6);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return e};
-Editor.prototype.loadUrl=function(a,e,b,c,d,k,l,f){try{var g=!l&&(c||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a)||/(\.pdf)($|\?)/i.test(a));d=null!=d?d:!0;var p=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=e){var c=a.getText();if(g){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();
+function(a,e,b,c){null==c&&(c=this.createImageUrlConverter());var d=0,k=b||{};b=mxUtils.bind(this,function(b,n){for(var f=a.getElementsByTagName(b),g=0;g<f.length;g++)mxUtils.bind(this,function(b){try{if(null!=b){var f=c.convert(b.getAttribute(n));if(null!=f&&"data:"!=f.substring(0,5)){var g=k[f];null==g?(d++,this.convertImageToDataUri(f,function(c){null!=c&&(k[f]=c,b.setAttribute(n,c));d--;0==d&&e(a)})):b.setAttribute(n,g)}else null!=f&&b.setAttribute(n,f)}}catch(ea){}})(f[g])});b("image","xlink:href");
+b("img","src");0==d&&e(a)};Editor.base64Encode=function(a){for(var e="",b=0,c=a.length,d,k,n;b<c;){d=a.charCodeAt(b++)&255;if(b==c){e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4);e+="==";break}k=a.charCodeAt(b++);if(b==c){e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&
+3)<<4|(k&240)>>4);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);e+="=";break}n=a.charCodeAt(b++);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4|(k&240)>>4);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(n&192)>>6);e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(n&63)}return e};
+Editor.prototype.loadUrl=function(a,e,b,c,d,k,n,f){try{var g=!n&&(c||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a)||/(\.pdf)($|\?)/i.test(a));d=null!=d?d:!0;var p=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=e){var c=a.getText();if(g){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();
for(var c=Array(a.length),d=0;d<a.length;d++)c[d]=String.fromCharCode(a[d]);c=c.join("")}k=null!=k?k:"data:image/png;base64,";c=k+Editor.base64Encode(c)}e(c)}}else null!=b&&(0==a.getStatus()?b({message:mxResources.get("accessDenied")},a):b({message:mxResources.get("error")+" "+a.getStatus()},a))}),function(a){null!=b&&b({message:mxResources.get("error")+" "+a.getStatus()})},g,this.timeout,function(){d&&null!=b&&b({code:App.ERROR_TIMEOUT,retry:p})},f)});p()}catch(W){null!=b&&b(W)}};Editor.prototype.absoluteCssFonts=
-function(a){var e=null;if(null!=a){var b=a.split("url(");if(0<b.length){e=[b[0]];a=window.location.pathname;var c=null!=a?a.lastIndexOf("/"):-1;0<=c&&(a=a.substring(0,c+1));var c=document.getElementsByTagName("base"),d=null;null!=c&&0<c.length&&(d=c[0].getAttribute("href"));for(var k=1;k<b.length;k++)if(c=b[k].indexOf(")"),0<c){var l=Editor.trimCssUrl(b[k].substring(0,c));this.graph.isRelativeUrl(l)&&(l=null!=d?d+l:window.location.protocol+"//"+window.location.hostname+("/"==l.charAt(0)?"":a)+l);
-e.push('url("'+l+'"'+b[k].substring(c))}else e.push(b[k])}else e=[a]}return null!=e?e.join(""):null};Editor.prototype.embedCssFonts=function(a,e){var b=a.split("url("),c=0;null==this.cachedFonts&&(this.cachedFonts={});var d=mxUtils.bind(this,function(){if(0==c){for(var a=[b[0]],d=1;d<b.length;d++){var k=b[d].indexOf(")");a.push('url("');a.push(this.cachedFonts[Editor.trimCssUrl(b[d].substring(0,k))]);a.push('"'+b[d].substring(k))}e(a.join(""))}});if(0<b.length){for(var k=1;k<b.length;k++){var l=b[k].indexOf(")"),
-f=null,g=b[k].indexOf("format(",l);0<g&&(f=Editor.trimCssUrl(b[k].substring(g+7,b[k].indexOf(")",g))));mxUtils.bind(this,function(a){if(null==this.cachedFonts[a]){this.cachedFonts[a]=a;c++;var e="application/x-font-ttf";if("svg"==f||/(\.svg)($|\?)/i.test(a))e="image/svg+xml";else if("otf"==f||"embedded-opentype"==f||/(\.otf)($|\?)/i.test(a))e="application/x-font-opentype";else if("woff"==f||/(\.woff)($|\?)/i.test(a))e="application/font-woff";else if("woff2"==f||/(\.woff2)($|\?)/i.test(a))e="application/font-woff2";
-else if("eot"==f||/(\.eot)($|\?)/i.test(a))e="application/vnd.ms-fontobject";else if("sfnt"==f||/(\.sfnt)($|\?)/i.test(a))e="application/font-sfnt";var b=a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(e){this.cachedFonts[a]=e;c--;d()}),mxUtils.bind(this,function(a){c--;d()}),!0,null,"data:"+e+";charset=utf-8;base64,")}})(Editor.trimCssUrl(b[k].substring(0,l)),f)}d()}else e(a)};Editor.prototype.loadFonts=
+function(a){var e=null;if(null!=a){var b=a.split("url(");if(0<b.length){e=[b[0]];a=window.location.pathname;var c=null!=a?a.lastIndexOf("/"):-1;0<=c&&(a=a.substring(0,c+1));var c=document.getElementsByTagName("base"),d=null;null!=c&&0<c.length&&(d=c[0].getAttribute("href"));for(var k=1;k<b.length;k++)if(c=b[k].indexOf(")"),0<c){var n=Editor.trimCssUrl(b[k].substring(0,c));this.graph.isRelativeUrl(n)&&(n=null!=d?d+n:window.location.protocol+"//"+window.location.hostname+("/"==n.charAt(0)?"":a)+n);
+e.push('url("'+n+'"'+b[k].substring(c))}else e.push(b[k])}else e=[a]}return null!=e?e.join(""):null};Editor.prototype.embedCssFonts=function(a,e){var b=a.split("url("),c=0;null==this.cachedFonts&&(this.cachedFonts={});var d=mxUtils.bind(this,function(){if(0==c){for(var a=[b[0]],d=1;d<b.length;d++){var k=b[d].indexOf(")");a.push('url("');a.push(this.cachedFonts[Editor.trimCssUrl(b[d].substring(0,k))]);a.push('"'+b[d].substring(k))}e(a.join(""))}});if(0<b.length){for(var k=1;k<b.length;k++){var n=b[k].indexOf(")"),
+f=null,g=b[k].indexOf("format(",n);0<g&&(f=Editor.trimCssUrl(b[k].substring(g+7,b[k].indexOf(")",g))));mxUtils.bind(this,function(a){if(null==this.cachedFonts[a]){this.cachedFonts[a]=a;c++;var e="application/x-font-ttf";if("svg"==f||/(\.svg)($|\?)/i.test(a))e="image/svg+xml";else if("otf"==f||"embedded-opentype"==f||/(\.otf)($|\?)/i.test(a))e="application/x-font-opentype";else if("woff"==f||/(\.woff)($|\?)/i.test(a))e="application/font-woff";else if("woff2"==f||/(\.woff2)($|\?)/i.test(a))e="application/font-woff2";
+else if("eot"==f||/(\.eot)($|\?)/i.test(a))e="application/vnd.ms-fontobject";else if("sfnt"==f||/(\.sfnt)($|\?)/i.test(a))e="application/font-sfnt";var b=a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(e){this.cachedFonts[a]=e;c--;d()}),mxUtils.bind(this,function(a){c--;d()}),!0,null,"data:"+e+";charset=utf-8;base64,")}})(Editor.trimCssUrl(b[k].substring(0,n)),f)}d()}else e(a)};Editor.prototype.loadFonts=
function(a){null!=this.fontCss&&null==this.resolvedFontCss?this.embedCssFonts(this.fontCss,mxUtils.bind(this,function(e){this.resolvedFontCss=e;a()})):a()};Editor.prototype.embedExtFonts=function(a){var e=this.graph.getCustomFonts();if(0<e.length){var b="",c=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var d=mxUtils.bind(this,function(){0==c&&this.embedCssFonts(b,a)}),k=0;k<e.length;k++)mxUtils.bind(this,function(a,e){Graph.isCssFontUrl(e)?null==this.cachedGoogleFonts[e]?(c++,this.loadUrl(e,
mxUtils.bind(this,function(a){this.cachedGoogleFonts[e]=a;b+=a;c--;d()}),mxUtils.bind(this,function(a){c--;b+="@import url("+e+");";d()}))):b+=this.cachedGoogleFonts[e]:b+='@font-face {font-family: "'+a+'";src: url("'+e+'")}'})(e[k].name,e[k].url);d()}else a()};Editor.prototype.addMathCss=function(a){a=a.getElementsByTagName("defs");if(null!=a&&0<a.length)for(var e=document.getElementsByTagName("style"),b=0;b<e.length;b++)0<mxUtils.getTextContent(e[b]).indexOf("MathJax")&&a[0].appendChild(e[b].cloneNode(!0))};
Editor.prototype.addFontCss=function(a,e){e=null!=e?e:this.absoluteCssFonts(this.fontCss);if(null!=e){var b=a.getElementsByTagName("defs"),c=a.ownerDocument;0==b.length?(b=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"defs"):c.createElement("defs"),null!=a.firstChild?a.insertBefore(b,a.firstChild):a.appendChild(b)):b=b[0];c=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"style"):c.createElement("style");c.setAttribute("type","text/css");mxUtils.setTextContent(c,e);b.appendChild(c)}};
-Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(a,e,b){var c=mxClient.IS_FF?8192:16384;return Math.min(b,Math.min(c/a,c/e))};Editor.prototype.exportToCanvas=function(a,e,b,c,d,k,l,f,g,p,u,t,q,m,n,z,v){try{k=null!=k?k:!0;l=null!=l?l:!0;t=null!=t?t:this.graph;q=null!=q?q:0;var A=g?null:t.background;A==mxConstants.NONE&&(A=null);null==A&&(A=c);null==A&&0==g&&(A=z?this.graph.defaultPageBackgroundColor:"#ffffff");
-this.convertImages(t.getSvg(null,null,q,m,null,l,null,null,null,p,null,z,v),mxUtils.bind(this,function(b){try{var c=new Image;c.onload=mxUtils.bind(this,function(){try{var l=function(){mxClient.IS_SF?window.setTimeout(function(){m.drawImage(c,0,0);a(g)},0):(m.drawImage(c,0,0),a(g))},g=document.createElement("canvas"),p=parseInt(b.getAttribute("width")),u=parseInt(b.getAttribute("height"));f=null!=f?f:1;null!=e&&(f=k?Math.min(1,Math.min(3*e/(4*u),e/p)):e/p);f=this.getMaxCanvasScale(p,u,f);p=Math.ceil(f*
-p);u=Math.ceil(f*u);g.setAttribute("width",p);g.setAttribute("height",u);var m=g.getContext("2d");null!=A&&(m.beginPath(),m.rect(0,0,p,u),m.fillStyle=A,m.fill());1!=f&&m.scale(f,f);if(n){var z=t.view,v=z.scale;z.scale=1;var x=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));z.scale=v;var x="data:image/svg+xml;base64,"+x,C=t.gridSize*z.gridSteps*f,y=t.getGraphBounds(),E=z.translate.x*v,M=z.translate.y*v,L=E+(y.x-E)/v-q,N=M+(y.y-M)/v-q,B=new Image;B.onload=function(){try{for(var a=-Math.round(C-
-mxUtils.mod((E-L)*f,C)),e=-Math.round(C-mxUtils.mod((M-N)*f,C));a<p;a+=C)for(var b=e;b<u;b+=C)m.drawImage(B,a/f,b/f);l()}catch(ma){null!=d&&d(ma)}};B.onerror=function(a){null!=d&&d(a)};B.src=x}else l()}catch(ta){null!=d&&d(ta)}});c.onerror=function(a){null!=d&&d(a)};p&&this.graph.addSvgShadow(b);this.graph.mathEnabled&&this.addMathCss(b);var l=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(b,this.resolvedFontCss),c.src=Editor.createSvgDataUri(mxUtils.getXml(b))}catch(ha){null!=
-d&&d(ha)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.addFontCss(b,a),this.loadFonts(l)}catch(ia){null!=d&&d(ia)}}))}catch(ha){null!=d&&d(ha)}}),b,u)}catch(ba){null!=d&&d(ba)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var f=g,m=0;8>m;m++)f=1==(f&1)?3988292384^f>>>1:f>>>1,Editor.crcTable[g]=f;Editor.updateCRC=function(a,e,b,c){for(var d=0;d<c;d++)a=Editor.crcTable[(a^e.charCodeAt(b+d))&255]^a>>>8;return a};Editor.crc32=function(a){for(var e=-1,b=0;b<a.length;b++)e=e>>>
-8^Editor.crcTable[(e^a.charCodeAt(b))&255];return(e^-1)>>>0};Editor.writeGraphModelToPng=function(a,e,b,c,d){function k(a,e){var b=g;g+=e;return a.substring(b,g)}function l(a){a=k(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function f(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var g=0;if(k(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,
-10))null!=d&&d();else if(k(a,4),"IHDR"!=k(a,4))null!=d&&d();else{k(a,17);d=a.substring(0,g);do{var p=l(a);if("IDAT"==k(a,4)){d=a.substring(0,g-8);"pHYs"==e&&"dpi"==b?(b=Math.round(c/.0254),b=f(b)+f(b)+String.fromCharCode(1)):b=b+String.fromCharCode(0)+("zTXt"==e?String.fromCharCode(0):"")+c;c=4294967295;c=Editor.updateCRC(c,e,0,4);c=Editor.updateCRC(c,b,0,b.length);d+=f(b.length)+e+b+f(c^4294967295);d+=a.substring(g-8,a.length);break}d+=a.substring(g-8,g-4+p);k(a,p);k(a,4)}while(p);return"data:image/png;base64,"+
-(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var n=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,e){n.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&
-(EditDataDialog.getDisplayIdForCell=function(a,e){var b=null;null!=a.editor.graph.getModel().getParent(e)?b=e.getId():null!=a.currentPage&&(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.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 a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(a){a=p.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var e=this.editorUi,b=e.editor.graph,c=this.createOption(mxResources.get("shadow"),
+Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(a,e,b){var c=mxClient.IS_FF?8192:16384;return Math.min(b,Math.min(c/a,c/e))};Editor.prototype.exportToCanvas=function(a,e,b,c,d,k,n,f,g,p,u,t,l,q,m,z,v){try{k=null!=k?k:!0;n=null!=n?n:!0;t=null!=t?t:this.graph;l=null!=l?l:0;var A=g?null:t.background;A==mxConstants.NONE&&(A=null);null==A&&(A=c);null==A&&0==g&&(A=z?this.graph.defaultPageBackgroundColor:"#ffffff");
+this.convertImages(t.getSvg(null,null,l,q,null,n,null,null,null,p,null,z,v),mxUtils.bind(this,function(b){try{var c=new Image;c.onload=mxUtils.bind(this,function(){try{var n=function(){mxClient.IS_SF?window.setTimeout(function(){q.drawImage(c,0,0);a(g)},0):(q.drawImage(c,0,0),a(g))},g=document.createElement("canvas"),p=parseInt(b.getAttribute("width")),u=parseInt(b.getAttribute("height"));f=null!=f?f:1;null!=e&&(f=k?Math.min(1,Math.min(3*e/(4*u),e/p)):e/p);f=this.getMaxCanvasScale(p,u,f);p=Math.ceil(f*
+p);u=Math.ceil(f*u);g.setAttribute("width",p);g.setAttribute("height",u);var q=g.getContext("2d");null!=A&&(q.beginPath(),q.rect(0,0,p,u),q.fillStyle=A,q.fill());1!=f&&q.scale(f,f);if(m){var z=t.view,v=z.scale;z.scale=1;var x=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));z.scale=v;var x="data:image/svg+xml;base64,"+x,C=t.gridSize*z.gridSteps*f,y=t.getGraphBounds(),E=z.translate.x*v,M=z.translate.y*v,L=E+(y.x-E)/v-l,N=M+(y.y-M)/v-l,B=new Image;B.onload=function(){try{for(var a=-Math.round(C-
+mxUtils.mod((E-L)*f,C)),e=-Math.round(C-mxUtils.mod((M-N)*f,C));a<p;a+=C)for(var b=e;b<u;b+=C)q.drawImage(B,a/f,b/f);n()}catch(ma){null!=d&&d(ma)}};B.onerror=function(a){null!=d&&d(a)};B.src=x}else n()}catch(ta){null!=d&&d(ta)}});c.onerror=function(a){null!=d&&d(a)};p&&this.graph.addSvgShadow(b);this.graph.mathEnabled&&this.addMathCss(b);var n=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(b,this.resolvedFontCss),c.src=Editor.createSvgDataUri(mxUtils.getXml(b))}catch(ha){null!=
+d&&d(ha)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.addFontCss(b,a),this.loadFonts(n)}catch(ia){null!=d&&d(ia)}}))}catch(ha){null!=d&&d(ha)}}),b,u)}catch(ba){null!=d&&d(ba)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var f=g,l=0;8>l;l++)f=1==(f&1)?3988292384^f>>>1:f>>>1,Editor.crcTable[g]=f;Editor.updateCRC=function(a,e,b,c){for(var d=0;d<c;d++)a=Editor.crcTable[(a^e.charCodeAt(b+d))&255]^a>>>8;return a};Editor.crc32=function(a){for(var e=-1,b=0;b<a.length;b++)e=e>>>
+8^Editor.crcTable[(e^a.charCodeAt(b))&255];return(e^-1)>>>0};Editor.writeGraphModelToPng=function(a,e,b,c,d){function k(a,e){var b=g;g+=e;return a.substring(b,g)}function n(a){a=k(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function f(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var g=0;if(k(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,
+10))null!=d&&d();else if(k(a,4),"IHDR"!=k(a,4))null!=d&&d();else{k(a,17);d=a.substring(0,g);do{var p=n(a);if("IDAT"==k(a,4)){d=a.substring(0,g-8);"pHYs"==e&&"dpi"==b?(b=Math.round(c/.0254),b=f(b)+f(b)+String.fromCharCode(1)):b=b+String.fromCharCode(0)+("zTXt"==e?String.fromCharCode(0):"")+c;c=4294967295;c=Editor.updateCRC(c,e,0,4);c=Editor.updateCRC(c,b,0,b.length);d+=f(b.length)+e+b+f(c^4294967295);d+=a.substring(g-8,a.length);break}d+=a.substring(g-8,g-4+p);k(a,p);k(a,4)}while(p);return"data:image/png;base64,"+
+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var m=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,e){m.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var e=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&
+(EditDataDialog.getDisplayIdForCell=function(a,e){var b=null;null!=a.editor.graph.getModel().getParent(e)?b=e.getId():null!=a.currentPage&&(b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var n=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?
+n.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var p=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(a){a=p.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var e=this.editorUi,b=e.editor.graph,c=this.createOption(mxResources.get("shadow"),
function(){return b.shadowVisible},function(a){var c=new ChangePageSetup(e);c.ignoreColor=!0;c.ignoreImage=!0;c.shadowVisible=a;b.model.execute(c)},{install:function(a){this.listener=function(){a(b.shadowVisible)};e.addListener("shadowVisibleChanged",this.listener)},destroy:function(){e.removeListener(this.listener)}});Editor.shadowOptionEnabled||(c.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(c,60));a.appendChild(c)}return a};var u=DiagramFormatPanel.prototype.addOptions;
DiagramFormatPanel.prototype.addOptions=function(a){a=u.apply(this,arguments);var e=this.editorUi,b=e.editor.graph;if(b.isEnabled()){var c=e.getCurrentFile();if(null!=c&&c.isAutosaveOptional()){var d=this.createOption(mxResources.get("autosave"),function(){return e.editor.autosave},function(a){e.editor.setAutosave(a);e.editor.autosave&&c.isModified()&&c.fileChanged()},{install:function(a){this.listener=function(){a(e.editor.autosave)};e.editor.addListener("autosaveChanged",this.listener)},destroy:function(){e.editor.removeListener(this.listener)}});
a.appendChild(d)}}if(this.isMathOptionVisible()&&b.isEnabled()&&"undefined"!==typeof MathJax){d=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return b.mathEnabled},function(a){e.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(b.mathEnabled)};e.addListener("mathEnabledChanged",this.listener)},destroy:function(){e.removeListener(this.listener)}});d.style.paddingTop="5px";a.appendChild(d);var k=e.menus.createHelpLink("https://www.diagrams.net/doc/faq/math-typesetting");
@@ -9986,33 +9986,33 @@ gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill
c(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{c(JSON.parse(a))}catch(S){}}};var t=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));t.apply(this,arguments);if(Editor.enableCustomProperties){for(var e={},b=a.vertices,c=a.edges,d=0;d<b.length;d++)this.findCommonProperties(b[d],e,0==d);for(d=0;d<c.length;d++)this.findCommonProperties(c[d],
e,0==b.length&&0==d);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(e).length&&this.container.appendChild(this.addProperties(this.createPanel(),e,a))}};var q=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var e=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()}));e.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");
e.style.marginBottom="2px";e.style.width="100px";e.style.marginRight="2px";a.appendChild(e);e=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));e.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");e.style.marginBottom="2px";e.style.width="100px";a.appendChild(e);mxUtils.br(a);return q.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=
-function(a,e,b){function c(a,e,b,c){t.getModel().beginUpdate();try{var d=[],k=[];if(null!=b.index){for(var l=[],f=b.parentRow.nextSibling;f&&f.getAttribute("data-pName")==a;)l.push(f.getAttribute("data-pValue")),f=f.nextSibling;b.index<l.length?null!=c?l.splice(c,1):l[b.index]=e:l.push(e);null!=b.size&&l.length>b.size&&(l=l.slice(0,b.size));e=l.join(",");null!=b.countProperty&&(t.setCellStyles(b.countProperty,l.length,t.getSelectionCells()),d.push(b.countProperty),k.push(l.length))}t.setCellStyles(a,
-e,t.getSelectionCells());d.push(a);k.push(e);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var g=b.dependentPropsDefVal[a],p=b.dependentPropsVals[a];if(p.length>e)p=p.slice(0,e);else for(var q=p.length;q<e;q++)p.push(g);p=p.join(",");t.setCellStyles(b.dependentProps[a],p,t.getSelectionCells());d.push(b.dependentProps[a]);k.push(p)}if("function"==typeof b.onChange)b.onChange(t,e);u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",k,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}
+function(a,e,b){function c(a,e,b,c){t.getModel().beginUpdate();try{var d=[],k=[];if(null!=b.index){for(var n=[],f=b.parentRow.nextSibling;f&&f.getAttribute("data-pName")==a;)n.push(f.getAttribute("data-pValue")),f=f.nextSibling;b.index<n.length?null!=c?n.splice(c,1):n[b.index]=e:n.push(e);null!=b.size&&n.length>b.size&&(n=n.slice(0,b.size));e=n.join(",");null!=b.countProperty&&(t.setCellStyles(b.countProperty,n.length,t.getSelectionCells()),d.push(b.countProperty),k.push(n.length))}t.setCellStyles(a,
+e,t.getSelectionCells());d.push(a);k.push(e);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var g=b.dependentPropsDefVal[a],p=b.dependentPropsVals[a];if(p.length>e)p=p.slice(0,e);else for(var l=p.length;l<e;l++)p.push(g);p=p.join(",");t.setCellStyles(b.dependentProps[a],p,t.getSelectionCells());d.push(b.dependentProps[a]);k.push(p)}if("function"==typeof b.onChange)b.onChange(t,e);u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",k,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}
function d(e,b,c){var d=mxUtils.getOffset(a,!0),k=mxUtils.getOffset(e,!0);b.style.position="absolute";b.style.left=k.x-d.x+"px";b.style.top=k.y-d.y+"px";b.style.width=e.offsetWidth+"px";b.style.height=e.offsetHeight-(c?4:0)+"px";b.style.zIndex=5}function k(a,e,b){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px";d.style.border="1px solid black";d.style.background=e&&"none"!=e?e:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(u,
-function(k){this.editorUi.pickColor(e,function(e){d.style.background="none"==e?"url('"+Dialog.prototype.noColorImage+"')":e;c(a,e,b)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function l(a,e,b,d,k,l,f){null!=e&&(e=e.split(","),m.push({name:a,values:e,type:b,defVal:d,countProperty:k,parentRow:l,isDeletable:!0,flipBkg:f}));btn=mxUtils.button("+",mxUtils.bind(u,function(e){for(var g=l,u=0;null!=g.nextSibling;)if(g.nextSibling.getAttribute("data-pName")==
-a)g=g.nextSibling,u++;else break;var t={type:b,parentRow:l,index:u,isDeletable:!0,defVal:d,countProperty:k},u=p(a,"",t,0==u%2,f);c(a,d,t);g.parentNode.insertBefore(u,g.nextSibling);mxEvent.consume(e)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function f(a,e,b,c,d,k,l){if(0<d){var f=Array(d);e=null!=e?e.split(","):[];for(var g=0;g<d;g++)f[g]=null!=e[g]?e[g]:null!=c?c:"";m.push({name:a,values:f,type:b,defVal:c,parentRow:k,flipBkg:l,size:d})}return document.createElement("div")}
-function g(a,e,b){var d=document.createElement("input");d.type="checkbox";d.checked="1"==e;mxEvent.addListener(d,"change",function(){c(a,d.checked?"1":"0",b)});return d}function p(e,b,p,t,q){var m=p.dispName,n=p.type,z=document.createElement("tr");z.className="gePropRow"+(q?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";z.setAttribute("data-pName",e);z.setAttribute("data-pValue",b);t=!1;null!=p.index&&(z.setAttribute("data-index",p.index),m=(null!=m?m:"")+"["+p.index+"]",t=!0);var v=document.createElement("td");
-v.className="gePropRowCell";v.innerHTML=mxUtils.htmlEntities(mxResources.get(m,null,m));t&&(v.style.textAlign="right");z.appendChild(v);v=document.createElement("td");v.className="gePropRowCell";if("color"==n)v.appendChild(k(e,b,p));else if("bool"==n||"boolean"==n)v.appendChild(g(e,b,p));else if("enum"==n){var A=p.enumList;for(q=0;q<A.length;q++)if(m=A[q],m.val==b){v.innerHTML=mxUtils.htmlEntities(mxResources.get(m.dispName,null,m.dispName));break}mxEvent.addListener(v,"click",mxUtils.bind(u,function(){var k=
-document.createElement("select");d(v,k);for(var l=0;l<A.length;l++){var f=A[l],g=document.createElement("option");g.value=mxUtils.htmlEntities(f.val);g.innerHTML=mxUtils.htmlEntities(mxResources.get(f.dispName,null,f.dispName));k.appendChild(g)}k.value=b;a.appendChild(k);mxEvent.addListener(k,"change",function(){var a=mxUtils.htmlEntities(k.value);c(e,a,p)});k.focus();mxEvent.addListener(k,"blur",function(){a.removeChild(k)})}))}else"dynamicArr"==n?v.appendChild(l(e,b,p.subType,p.subDefVal,p.countProperty,
-z,q)):"staticArr"==n?v.appendChild(f(e,b,p.subType,p.subDefVal,p.size,z,q)):"readOnly"==n?(q=document.createElement("input"),q.setAttribute("readonly",""),q.value=b,q.style.width="96px",q.style.borderWidth="0px",v.appendChild(q)):(v.innerHTML=b,mxEvent.addListener(v,"click",mxUtils.bind(u,function(){function k(){var a=l.value,a=0==a.length&&"string"!=n?0:a;p.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",n="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:
-null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==n?parseInt(a):a)+"");c(e,a,p)}var l=document.createElement("input");d(v,l,!0);l.value=b;l.className="gePropEditor";"int"!=n&&"float"!=n||p.allowAuto||(l.type="number",l.step="int"==n?"1":"any",null!=p.min&&(l.min=parseFloat(p.min)),null!=p.max&&(l.max=parseFloat(p.max)));a.appendChild(l);mxEvent.addListener(l,"keypress",function(a){13==a.keyCode&&k()});l.focus();mxEvent.addListener(l,"blur",function(){k()})})));p.isDeletable&&(q=mxUtils.button("-",
-mxUtils.bind(u,function(a){c(e,"",p,p.index);mxEvent.consume(a)})),q.style.height="16px",q.style.width="25px",q.style["float"]="right",q.className="geColorBtn",v.appendChild(q));z.appendChild(v);return z}var u=this,t=this.editorUi.editor.graph,m=[];a.style.position="relative";a.style.padding="0";var q=document.createElement("table");q.className="geProperties";q.style.whiteSpace="nowrap";q.style.width="100%";var n=document.createElement("tr");n.className="gePropHeader";var z=document.createElement("th");
-z.className="gePropHeaderCell";var v=document.createElement("img");v.src=Sidebar.prototype.expandedImage;z.appendChild(v);mxUtils.write(z,mxResources.get("property"));n.style.cursor="pointer";var A=function(){var e=q.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){v.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var d=a.childNodes[c],k=d.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||a.removeChild(d)}catch(la){}}else v.src=
-Sidebar.prototype.expandedImage,b="";for(c=0;c<e.length;c++)e[c].style.display=b};mxEvent.addListener(n,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;A()});n.appendChild(z);z=document.createElement("th");z.className="gePropHeaderCell";z.innerHTML=mxResources.get("value");n.appendChild(z);q.appendChild(n);var x=!1,C=!1,n=null;1==b.vertices.length&&0==b.edges.length?n=b.vertices[0].id:0==b.vertices.length&&1==b.edges.length&&(n=b.edges[0].id);null!=n&&q.appendChild(p("id",
-mxUtils.htmlEntities(n),{dispName:"ID",type:"readOnly"},!0,!1));for(var y in e)if(n=e[y],"function"!=typeof n.isVisible||n.isVisible(b,this)){var E=null!=b.style[y]?mxUtils.htmlEntities(b.style[y]+""):null!=n.getDefaultValue?n.getDefaultValue(b,this):n.defVal;if("separator"==n.type)C=!C;else{if("staticArr"==n.type)n.size=parseInt(b.style[n.sizeProperty]||e[n.sizeProperty].defVal)||0;else if(null!=n.dependentProps){for(var B=n.dependentProps,D=[],F=[],z=0;z<B.length;z++){var M=b.style[B[z]];F.push(e[B[z]].subDefVal);
-D.push(null!=M?M.split(","):[])}n.dependentPropsDefVal=F;n.dependentPropsVals=D}q.appendChild(p(y,E,n,x,C));x=!x}}for(z=0;z<m.length;z++)for(n=m[z],e=n.parentRow,b=0;b<n.values.length;b++)y=p(n.name,n.values[b],{type:n.type,parentRow:n.parentRow,isDeletable:n.isDeletable,index:b,defVal:n.defVal,countProperty:n.countProperty,size:n.size},0==b%2,n.flipBkg),e.parentNode.insertBefore(y,e.nextSibling),e=y;a.appendChild(q);A();return a};StyleFormatPanel.prototype.addStyles=function(a){function e(a){mxEvent.addListener(a,
+function(k){this.editorUi.pickColor(e,function(e){d.style.background="none"==e?"url('"+Dialog.prototype.noColorImage+"')":e;c(a,e,b)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function n(a,e,b,d,k,n,f){null!=e&&(e=e.split(","),q.push({name:a,values:e,type:b,defVal:d,countProperty:k,parentRow:n,isDeletable:!0,flipBkg:f}));btn=mxUtils.button("+",mxUtils.bind(u,function(e){for(var g=n,u=0;null!=g.nextSibling;)if(g.nextSibling.getAttribute("data-pName")==
+a)g=g.nextSibling,u++;else break;var t={type:b,parentRow:n,index:u,isDeletable:!0,defVal:d,countProperty:k},u=p(a,"",t,0==u%2,f);c(a,d,t);g.parentNode.insertBefore(u,g.nextSibling);mxEvent.consume(e)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function f(a,e,b,c,d,k,n){if(0<d){var f=Array(d);e=null!=e?e.split(","):[];for(var g=0;g<d;g++)f[g]=null!=e[g]?e[g]:null!=c?c:"";q.push({name:a,values:f,type:b,defVal:c,parentRow:k,flipBkg:n,size:d})}return document.createElement("div")}
+function g(a,e,b){var d=document.createElement("input");d.type="checkbox";d.checked="1"==e;mxEvent.addListener(d,"change",function(){c(a,d.checked?"1":"0",b)});return d}function p(e,b,p,t,l){var q=p.dispName,m=p.type,z=document.createElement("tr");z.className="gePropRow"+(l?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";z.setAttribute("data-pName",e);z.setAttribute("data-pValue",b);t=!1;null!=p.index&&(z.setAttribute("data-index",p.index),q=(null!=q?q:"")+"["+p.index+"]",t=!0);var v=document.createElement("td");
+v.className="gePropRowCell";v.innerHTML=mxUtils.htmlEntities(mxResources.get(q,null,q));t&&(v.style.textAlign="right");z.appendChild(v);v=document.createElement("td");v.className="gePropRowCell";if("color"==m)v.appendChild(k(e,b,p));else if("bool"==m||"boolean"==m)v.appendChild(g(e,b,p));else if("enum"==m){var A=p.enumList;for(l=0;l<A.length;l++)if(q=A[l],q.val==b){v.innerHTML=mxUtils.htmlEntities(mxResources.get(q.dispName,null,q.dispName));break}mxEvent.addListener(v,"click",mxUtils.bind(u,function(){var k=
+document.createElement("select");d(v,k);for(var n=0;n<A.length;n++){var f=A[n],g=document.createElement("option");g.value=mxUtils.htmlEntities(f.val);g.innerHTML=mxUtils.htmlEntities(mxResources.get(f.dispName,null,f.dispName));k.appendChild(g)}k.value=b;a.appendChild(k);mxEvent.addListener(k,"change",function(){var a=mxUtils.htmlEntities(k.value);c(e,a,p)});k.focus();mxEvent.addListener(k,"blur",function(){a.removeChild(k)})}))}else"dynamicArr"==m?v.appendChild(n(e,b,p.subType,p.subDefVal,p.countProperty,
+z,l)):"staticArr"==m?v.appendChild(f(e,b,p.subType,p.subDefVal,p.size,z,l)):"readOnly"==m?(l=document.createElement("input"),l.setAttribute("readonly",""),l.value=b,l.style.width="96px",l.style.borderWidth="0px",v.appendChild(l)):(v.innerHTML=b,mxEvent.addListener(v,"click",mxUtils.bind(u,function(){function k(){var a=n.value,a=0==a.length&&"string"!=m?0:a;p.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",m="string"):(a=parseFloat(a),a=isNaN(a)?0:a));null!=p.min&&a<p.min?a=p.min:
+null!=p.max&&a>p.max&&(a=p.max);a=mxUtils.htmlEntities(("int"==m?parseInt(a):a)+"");c(e,a,p)}var n=document.createElement("input");d(v,n,!0);n.value=b;n.className="gePropEditor";"int"!=m&&"float"!=m||p.allowAuto||(n.type="number",n.step="int"==m?"1":"any",null!=p.min&&(n.min=parseFloat(p.min)),null!=p.max&&(n.max=parseFloat(p.max)));a.appendChild(n);mxEvent.addListener(n,"keypress",function(a){13==a.keyCode&&k()});n.focus();mxEvent.addListener(n,"blur",function(){k()})})));p.isDeletable&&(l=mxUtils.button("-",
+mxUtils.bind(u,function(a){c(e,"",p,p.index);mxEvent.consume(a)})),l.style.height="16px",l.style.width="25px",l.style["float"]="right",l.className="geColorBtn",v.appendChild(l));z.appendChild(v);return z}var u=this,t=this.editorUi.editor.graph,q=[];a.style.position="relative";a.style.padding="0";var l=document.createElement("table");l.className="geProperties";l.style.whiteSpace="nowrap";l.style.width="100%";var m=document.createElement("tr");m.className="gePropHeader";var z=document.createElement("th");
+z.className="gePropHeaderCell";var v=document.createElement("img");v.src=Sidebar.prototype.expandedImage;z.appendChild(v);mxUtils.write(z,mxResources.get("property"));m.style.cursor="pointer";var A=function(){var e=l.querySelectorAll(".gePropNonHeaderRow"),b;if(u.editorUi.propertiesCollapsed){v.src=Sidebar.prototype.collapsedImage;b="none";for(var c=a.childNodes.length-1;0<=c;c--)try{var d=a.childNodes[c],k=d.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||a.removeChild(d)}catch(la){}}else v.src=
+Sidebar.prototype.expandedImage,b="";for(c=0;c<e.length;c++)e[c].style.display=b};mxEvent.addListener(m,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;A()});m.appendChild(z);z=document.createElement("th");z.className="gePropHeaderCell";z.innerHTML=mxResources.get("value");m.appendChild(z);l.appendChild(m);var x=!1,C=!1,m=null;1==b.vertices.length&&0==b.edges.length?m=b.vertices[0].id:0==b.vertices.length&&1==b.edges.length&&(m=b.edges[0].id);null!=m&&l.appendChild(p("id",
+mxUtils.htmlEntities(m),{dispName:"ID",type:"readOnly"},!0,!1));for(var y in e)if(m=e[y],"function"!=typeof m.isVisible||m.isVisible(b,this)){var E=null!=b.style[y]?mxUtils.htmlEntities(b.style[y]+""):null!=m.getDefaultValue?m.getDefaultValue(b,this):m.defVal;if("separator"==m.type)C=!C;else{if("staticArr"==m.type)m.size=parseInt(b.style[m.sizeProperty]||e[m.sizeProperty].defVal)||0;else if(null!=m.dependentProps){for(var B=m.dependentProps,M=[],D=[],z=0;z<B.length;z++){var F=b.style[B[z]];D.push(e[B[z]].subDefVal);
+M.push(null!=F?F.split(","):[])}m.dependentPropsDefVal=D;m.dependentPropsVals=M}l.appendChild(p(y,E,m,x,C));x=!x}}for(z=0;z<q.length;z++)for(m=q[z],e=m.parentRow,b=0;b<m.values.length;b++)y=p(m.name,m.values[b],{type:m.type,parentRow:m.parentRow,isDeletable:m.isDeletable,index:b,defVal:m.defVal,countProperty:m.countProperty,size:m.size},0==b%2,m.flipBkg),e.parentNode.insertBefore(y,e.nextSibling),e=y;a.appendChild(l);A();return a};StyleFormatPanel.prototype.addStyles=function(a){function e(a){mxEvent.addListener(a,
"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var b=this.editorUi,c=b.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d);var k="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),
-l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.position="relative";l.style.textAlign="center";for(var f=[],g=0;g<this.defaultColorSchemes.length;g++){var p=document.createElement("div");p.style.display="inline-block";p.style.width="6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a){mxEvent.addListener(p,
-"click",mxUtils.bind(this,function(){u(a)}))})(g);f.push(p);l.appendChild(p)}var u=mxUtils.bind(this,function(a){null!=this.format.currentScheme&&(f[this.format.currentScheme].style.background="transparent");this.format.currentScheme=a;t(this.defaultColorSchemes[this.format.currentScheme]);f[this.format.currentScheme].style.background="#84d7ff"}),t=mxUtils.bind(this,function(a){var e=mxUtils.bind(this,function(a){var e=mxUtils.button("",function(e){c.getModel().beginUpdate();try{for(var d=c.getSelectionCells(),
-l=0;l<d.length;l++){for(var f=c.getModel().getStyle(d[l]),g=0;g<k.length;g++)f=mxUtils.removeStylename(f,k[g]);var p=c.getModel().isVertex(d[l])?b.initialDefaultVertexStyle:b.initialdefaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isAltDown(e)||(f=""==a.fill?mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,
-null))),mxEvent.isShiftDown(e)||(f=""==a.stroke?mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null))),mxEvent.isControlDown(e)||mxClient.IS_MAC&&mxEvent.isMetaDown(e)||!c.getModel().isVertex(d[l])||(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,
-"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(d[l])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null))));c.getModel().setStyle(d[l],f)}}finally{c.getModel().endUpdate()}});e.className="geStyleButton";e.style.width="36px";e.style.height=
+n=document.createElement("div");n.style.whiteSpace="nowrap";n.style.position="relative";n.style.textAlign="center";for(var f=[],g=0;g<this.defaultColorSchemes.length;g++){var p=document.createElement("div");p.style.display="inline-block";p.style.width="6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(a){mxEvent.addListener(p,
+"click",mxUtils.bind(this,function(){u(a)}))})(g);f.push(p);n.appendChild(p)}var u=mxUtils.bind(this,function(a){null!=this.format.currentScheme&&(f[this.format.currentScheme].style.background="transparent");this.format.currentScheme=a;t(this.defaultColorSchemes[this.format.currentScheme]);f[this.format.currentScheme].style.background="#84d7ff"}),t=mxUtils.bind(this,function(a){var e=mxUtils.bind(this,function(a){var e=mxUtils.button("",function(e){c.getModel().beginUpdate();try{for(var d=c.getSelectionCells(),
+n=0;n<d.length;n++){for(var f=c.getModel().getStyle(d[n]),g=0;g<k.length;g++)f=mxUtils.removeStylename(f,k[g]);var p=c.getModel().isVertex(d[n])?b.initialDefaultVertexStyle:b.initialdefaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),mxEvent.isAltDown(e)||(f=""==a.fill?mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,
+null))),mxEvent.isShiftDown(e)||(f=""==a.stroke?mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,null))),mxEvent.isControlDown(e)||mxClient.IS_MAC&&mxEvent.isMetaDown(e)||!c.getModel().isVertex(d[n])||(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FILLCOLOR,
+"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(p,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_GRADIENTCOLOR,null)),c.getModel().isVertex(d[n])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(p,mxConstants.STYLE_FONTCOLOR,null))));c.getModel().setStyle(d[n],f)}}finally{c.getModel().endUpdate()}});e.className="geStyleButton";e.style.width="36px";e.style.height=
10>=this.defaultColorSchemes.length?"24px":"30px";e.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&10>document.documentMode?e.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":e.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?e.style.background="url('"+Dialog.prototype.noColorImage+"')":e.style.backgroundColor=""==a.fill?mxUtils.getValue(b.initialDefaultVertexStyle,
mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(b.initialDefaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),e.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(b.initialDefaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(b.initialDefaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?
-"#2a2a2a":"#ffffff"));else{var l=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),f=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");e.style.backgroundColor=l;e.style.border="1px solid "+f}d.appendChild(e)});d.innerHTML="";for(var l=0;l<a.length;l++)0<l&&0==mxUtils.mod(l,4)&&mxUtils.br(d),e(a[l])});null==this.format.currentScheme?u("dark"==uiTheme?1:0):u(this.format.currentScheme);var g=10>=this.defaultColorSchemes.length?28:8,q=document.createElement("div");
-q.style.cssText="position:absolute;left:10px;top:8px;bottom:"+g+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(q,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.format.currentScheme-
-1,this.defaultColorSchemes.length))}));var m=document.createElement("div");m.style.cssText="position:absolute;left:202px;top:8px;bottom:"+g+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
-1<this.defaultColorSchemes.length&&(a.appendChild(q),a.appendChild(m));mxEvent.addListener(m,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));e(q);e(m);t(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&a.appendChild(l);return a};StyleFormatPanel.prototype.addEditOps=function(a){var e=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&&(b=mxUtils.button(mxResources.get("editStyle"),
+"#2a2a2a":"#ffffff"));else{var n=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),f=mxUtils.getValue(c.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");e.style.backgroundColor=n;e.style.border="1px solid "+f}d.appendChild(e)});d.innerHTML="";for(var n=0;n<a.length;n++)0<n&&0==mxUtils.mod(n,4)&&mxUtils.br(d),e(a[n])});null==this.format.currentScheme?u("dark"==uiTheme?1:0):u(this.format.currentScheme);var g=10>=this.defaultColorSchemes.length?28:8,l=document.createElement("div");
+l.style.cssText="position:absolute;left:10px;top:8px;bottom:"+g+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);";mxEvent.addListener(l,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.format.currentScheme-
+1,this.defaultColorSchemes.length))}));var q=document.createElement("div");q.style.cssText="position:absolute;left:202px;top:8px;bottom:"+g+"px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);";
+1<this.defaultColorSchemes.length&&(a.appendChild(l),a.appendChild(q));mxEvent.addListener(q,"click",mxUtils.bind(this,function(){u(mxUtils.mod(this.format.currentScheme+1,this.defaultColorSchemes.length))}));e(l);e(q);t(this.defaultColorSchemes[this.format.currentScheme]);10>=this.defaultColorSchemes.length&&a.appendChild(n);return a};StyleFormatPanel.prototype.addEditOps=function(a){var e=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&&(b=mxUtils.button(mxResources.get("editStyle"),
mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),b.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),b.style.width="202px",b.style.marginBottom="2px",a.appendChild(b));var c=this.editorUi.editor.graph,d=c.view.getState(c.getSelectionCell());1==c.getSelectionCount()&&null!=d&&null!=d.shape&&null!=d.shape.stencil?(e=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editShape").funct()})),
e.setAttribute("title",mxResources.get("editShape")),e.style.marginBottom="2px",null==b?e.style.width="202px":(b.style.width="100px",e.style.width="100px",e.style.marginLeft="2px"),a.appendChild(e)):e.image&&(e=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),e.setAttribute("title",mxResources.get("editImage")),e.style.marginBottom="2px",null==b?e.style.width="202px":(b.style.width="100px",e.style.width="100px",e.style.marginLeft=
"2px"),a.appendChild(e));return a}}Graph.customFontElements={};Graph.recentCustomFonts={};Graph.isGoogleFontUrl=function(a){return a.substring(0,Editor.GOOGLE_FONTS.length)==Editor.GOOGLE_FONTS};Graph.isCssFontUrl=function(a){return Graph.isGoogleFontUrl(a)};Graph.createFontElement=function(a,e){var b;Graph.isCssFontUrl(e)?(b=document.createElement("link"),b.setAttribute("rel","stylesheet"),b.setAttribute("type","text/css"),b.setAttribute("charset","UTF-8"),b.setAttribute("href",e)):(b=document.createElement("style"),
@@ -10023,22 +10023,22 @@ Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";
"mouseleave",function(a){e=null});this.isMouseInsertPoint=function(){return null!=e};var b=this.getInsertPoint;this.getInsertPoint=function(){return null!=e?this.getPointForEvent(e):b.apply(this,arguments)};var c=this.layoutManager.getLayout;this.layoutManager.getLayout=function(a){var e=this.graph.getCellStyle(a);if(null!=e){if("rack"==e.childLayout){var b=new mxStackLayout(this.graph,!1);b.gridSize=null!=e.rackUnitSize?parseFloat(e.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:
20;b.marginLeft=e.marginLeft||0;b.marginRight=e.marginRight||0;b.marginTop=e.marginTop||0;b.marginBottom=e.marginBottom||0;b.allowGaps=e.allowGaps||0;b.horizontal="1"==mxUtils.getValue(e,"horizontalRack","0");b.resizeParent=!1;b.fill=!0;return b}if("undefined"!==typeof mxTableLayout&&"tableLayout"==e.childLayout)return b=new mxTableLayout(this.graph),b.rows=e.tableRows||2,b.columns=e.tableColumns||2,b.colPercentages=e.colPercentages,b.rowPercentages=e.rowPercentages,b.equalColumns="1"==mxUtils.getValue(e,
"equalColumns",b.colPercentages?"0":"1"),b.equalRows="1"==mxUtils.getValue(e,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(e,"resizeParent","1"),b.border=e.tableBorder||b.border,b.marginLeft=e.marginLeft||0,b.marginRight=e.marginRight||0,b.marginTop=e.marginTop||0,b.marginBottom=e.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(e,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(e,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=e.colWidths||"100",b.rowHeights=e.rowHeights||
-"50",b}return c.apply(this,arguments)};this.updateGlobalUrlVariables()};var y=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(a){return Graph.processFontStyle(y.apply(this,arguments))};var x=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(a,e,b,c,d,k,l,f,g,p,u){x.apply(this,arguments);Graph.processFontAttributes(u)};var B=mxText.prototype.redraw;mxText.prototype.redraw=function(){B.apply(this,arguments);null!=this.node&&"DIV"==
+"50",b}return c.apply(this,arguments)};this.updateGlobalUrlVariables()};var y=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(a){return Graph.processFontStyle(y.apply(this,arguments))};var x=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(a,e,b,c,d,k,n,f,g,p,u){x.apply(this,arguments);Graph.processFontAttributes(u)};var B=mxText.prototype.redraw;mxText.prototype.redraw=function(){B.apply(this,arguments);null!=this.node&&"DIV"==
this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.getCustomFonts=function(){var a=this.extFonts,a=null!=a?a.slice():[],e;for(e in Graph.customFontElements){var b=Graph.customFontElements[e];a.push({name:b.name,url:b.url})}return a};Graph.prototype.setFont=function(a,e){Graph.addFont(a,e);document.execCommand("fontname",!1,a);if(null!=e){var b=this.cellEditor.textarea.getElementsByTagName("font");e=Graph.getFontUrl(a,e);for(var c=0;c<b.length;c++)b[c].getAttribute("face")==
a&&b[c].getAttribute("data-font-src")!=e&&b[c].setAttribute("data-font-src",e)}};var z=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return z.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var a=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=a)for(var e in a)this.globalVars[e]=
a[e]}catch(N){null!=window.console&&console.log("Error in vars URL parameter: "+N)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var A=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var e=A.apply(this,arguments);null==e&&null!=this.globalVars&&(e=this.globalVars[a]);return e};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=
-(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var C=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,e,b,c,d,k,l,f,g,p,u,t,q){var m=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(m=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var n=C.apply(this,arguments),z=this.getCustomFonts();if(u&&0<z.length){var v=n.ownerDocument,A=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,
-"style"):v.createElement("style");null!=v.setAttributeNS?A.setAttributeNS("type","text/css"):A.setAttribute("type","text/css");for(var x="",y="",E=0;E<z.length;E++){var B=z[E].name,D=z[E].url;Graph.isCssFontUrl(D)?x+="@import url("+D+");\n":y+='@font-face {\nfont-family: "'+B+'";\nsrc: url("'+D+'");\n}\n'}A.appendChild(v.createTextNode(x+y));n.getElementsByTagName("defs")[0].appendChild(A)}null!=m&&(this.stylesheet=m,this.refresh());return n};var E=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=
+(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var C=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,e,b,c,d,k,n,f,g,p,u,t,l){var q=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(q=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var m=C.apply(this,arguments),z=this.getCustomFonts();if(u&&0<z.length){var v=m.ownerDocument,A=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,
+"style"):v.createElement("style");null!=v.setAttributeNS?A.setAttributeNS("type","text/css"):A.setAttribute("type","text/css");for(var x="",y="",E=0;E<z.length;E++){var B=z[E].name,D=z[E].url;Graph.isCssFontUrl(D)?x+="@import url("+D+");\n":y+='@font-face {\nfont-family: "'+B+'";\nsrc: url("'+D+'");\n}\n'}A.appendChild(v.createTextNode(x+y));m.getElementsByTagName("defs")[0].appendChild(A)}null!=q&&(this.stylesheet=q,this.refresh());return m};var E=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=
function(){var a=E.apply(this,arguments);if(this.mathEnabled){var e=a.drawText;a.drawText=function(a,b){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&&(mxUtils.isNode(a.text.value)||a.text.dialect==mxConstants.DIALECT_STRICTHTML)){var c=a.text.getContentNode();if(null!=c){c=c.cloneNode(!0);if(c.getElementsByTagNameNS)for(var d=c.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<d.length;)d[0].parentNode.removeChild(d[0]);null!=c.innerHTML&&(d=a.text.value,a.text.value=
c.innerHTML,e.apply(this,arguments),a.text.value=d)}}else e.apply(this,arguments)}}return a};var D=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){D.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||
this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};
var G=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){G.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"==a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var e=0;e<a.actions.length;e++){var b=a.actions[e];if(null!=b.open)if(this.isCustomLink(b.open)){if(!this.customLinkClicked(b.open))return}else this.openLink(b.open)}this.model.beginUpdate();try{for(e=0;e<a.actions.length;e++)b=
a.actions[e],null!=b.toggle&&this.toggleCells(this.getCellsForAction(b.toggle,!0)),null!=b.show&&this.setCellsVisible(this.getCellsForAction(b.show,!0),!0),null!=b.hide&&this.setCellsVisible(this.getCellsForAction(b.hide,!0),!1)}finally{this.model.endUpdate()}for(e=0;e<a.actions.length;e++){var b=a.actions[e],c=[];null!=b.select&&this.isEnabled()&&(c=this.getCellsForAction(b.select),this.setSelectionCells(c));null!=b.highlight&&(c=this.getCellsForAction(b.highlight),this.highlightCells(c,b.highlight.color,
b.highlight.duration,b.highlight.opacity));null!=b.scroll&&(c=this.getCellsForAction(b.scroll));null!=b.viewbox&&this.fitWindow(b.viewbox,b.viewbox.border);0<c.length&&this.scrollCellToVisible(c[0])}}};Graph.prototype.updateCustomLinksForCell=function(a,e){var b=this.getLinkForCell(e);null!=b&&"data:action/json,"==b.substring(0,17)&&this.setLinkForCell(e,this.updateCustomLink(a,b));if(this.isHtmlLabel(e)){var c=document.createElement("div");c.innerHTML=this.sanitizeHtml(this.getLabel(e));for(var d=
-c.getElementsByTagName("a"),k=!1,l=0;l<d.length;l++)b=d[l].getAttribute("href"),null!=b&&"data:action/json,"==b.substring(0,17)&&(d[l].setAttribute("href",this.updateCustomLink(a,b)),k=!0);k&&this.labelChanged(e,c.innerHTML)}};Graph.prototype.updateCustomLink=function(a,e){if("data:action/json,"==e.substring(0,17))try{var b=JSON.parse(e.substring(17));null!=b.actions&&(this.updateCustomLinkActions(a,b.actions),e="data:action/json,"+JSON.stringify(b))}catch(Z){}return e};Graph.prototype.updateCustomLinkActions=
+c.getElementsByTagName("a"),k=!1,n=0;n<d.length;n++)b=d[n].getAttribute("href"),null!=b&&"data:action/json,"==b.substring(0,17)&&(d[n].setAttribute("href",this.updateCustomLink(a,b)),k=!0);k&&this.labelChanged(e,c.innerHTML)}};Graph.prototype.updateCustomLink=function(a,e){if("data:action/json,"==e.substring(0,17))try{var b=JSON.parse(e.substring(17));null!=b.actions&&(this.updateCustomLinkActions(a,b.actions),e="data:action/json,"+JSON.stringify(b))}catch(Z){}return e};Graph.prototype.updateCustomLinkActions=
function(a,e){for(var b=0;b<e.length;b++){var c=e[b];this.updateCustomLinkAction(a,c.toggle);this.updateCustomLinkAction(a,c.show);this.updateCustomLinkAction(a,c.hide);this.updateCustomLinkAction(a,c.select);this.updateCustomLinkAction(a,c.highlight);this.updateCustomLinkAction(a,c.scroll)}};Graph.prototype.updateCustomLinkAction=function(a,e){if(null!=e&&null!=e.cells){for(var b=[],c=0;c<e.cells.length;c++)if("*"==e.cells[c])b.push(e.cells[c]);else{var d=a[e.cells[c]];null!=d?""!=d&&b.push(d):b.push(e.cells[c])}e.cells=
b}};Graph.prototype.getCellsForAction=function(a,e){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags,null,null,e))};Graph.prototype.getCellsById=function(a){var e=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var c=this.getDefaultParent(),e=e.concat(this.model.filterDescendants(function(a){return a!=c},c));else{var d=this.model.getCell(a[b]);null!=d&&e.push(d)}return e};Graph.prototype.getCellsForTags=function(a,e,b,c){var d=[];if(null!=a){e=null!=e?e:this.model.getDescendants(this.model.getRoot());
-b=null!=b?b:"tags";for(var k=0,l={},f=0;f<a.length;f++)0<a[f].length&&(l[a[f].toLowerCase()]=!0,k++);for(f=0;f<e.length;f++)if(c&&this.model.getParent(e[f])==this.model.root||this.model.isVertex(e[f])||this.model.isEdge(e[f])){var g=null!=e[f].value&&"object"==typeof e[f].value?mxUtils.trim(e[f].value.getAttribute(b)||""):"",p=!1;if(0<g.length){if(g=g.toLowerCase().split(" "),g.length>=a.length){for(var u=p=0;u<g.length&&p<k;u++)null!=l[g[u]]&&p++;p=p==k}}else p=0==a.length;p&&d.push(e[f])}}return d};
+b=null!=b?b:"tags";for(var k=0,n={},f=0;f<a.length;f++)0<a[f].length&&(n[a[f].toLowerCase()]=!0,k++);for(f=0;f<e.length;f++)if(c&&this.model.getParent(e[f])==this.model.root||this.model.isVertex(e[f])||this.model.isEdge(e[f])){var g=null!=e[f].value&&"object"==typeof e[f].value?mxUtils.trim(e[f].value.getAttribute(b)||""):"",p=!1;if(0<g.length){if(g=g.toLowerCase().split(" "),g.length>=a.length){for(var u=p=0;u<g.length&&p<k;u++)null!=n[g[u]]&&p++;p=p==k}}else p=0==a.length;p&&d.push(e[f])}}return d};
Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var e=0;e<a.length;e++)this.model.setVisible(a[e],!this.model.isVisible(a[e]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,e){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],e)}finally{this.model.endUpdate()}};Graph.prototype.highlightCells=function(a,e,b,c){for(var d=0;d<a.length;d++)this.highlightCell(a[d],e,b,c)};Graph.prototype.highlightCell=function(a,e,
b,c){e=null!=e?e:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),k=new mxCellHighlight(this,e,d,!1);null!=c&&(k.opacity=c);k.highlight(a);window.setTimeout(function(){null!=k.shape&&(mxUtils.setPrefixedStyle(k.shape.node.style,"transition","all 1200ms ease-in-out"),k.shape.node.style.opacity=0);window.setTimeout(function(){k.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a,
e,b){b=null!=b?b:!1;var c=a.ownerDocument,d=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"filter"):c.createElement("filter");d.setAttribute("id",this.shadowId);var k=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):c.createElement("feGaussianBlur");k.setAttribute("in","SourceAlpha");k.setAttribute("stdDeviation",this.svgShadowBlur);k.setAttribute("result","blur");d.appendChild(k);k=null!=c.createElementNS?c.createElementNS(mxConstants.NS_SVG,"feOffset"):
@@ -10057,46 +10057,46 @@ STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PAT
mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=
[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+
"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var e=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?e="mxgraph.er":"sysML"==a.substring(0,5)&&(e="mxgraph.sysml"));return e};var H=mxMarker.createMarker;mxMarker.createMarker=
-function(a,e,b,c,d,k,l,f,g,p){if(null!=b&&null==mxMarker.markers[b]){var u=this.getPackageForType(b);null!=u&&mxStencilRegistry.getStencil(u)}return H.apply(this,arguments)};PrintDialog.prototype.create=function(a,e){function b(){m.value=Math.max(1,Math.min(f,Math.max(parseInt(m.value),parseInt(q.value))));q.value=Math.max(1,Math.min(f,Math.min(parseInt(m.value),parseInt(q.value))))}function c(e){function b(e,b,k){var l=e.useCssTransforms,f=e.currentTranslate,g=e.currentScale,p=e.view.translate,u=
-e.view.scale;e.useCssTransforms&&(e.useCssTransforms=!1,e.currentTranslate=new mxPoint(0,0),e.currentScale=1,e.view.translate=new mxPoint(0,0),e.view.scale=1);var t=e.getGraphBounds(),q=0,m=0,n=M.get(),z=1/e.pageScale,x=A.checked;if(x)var z=parseInt(H.value),C=parseInt(J.value),z=Math.min(n.height*C/(t.height/e.view.scale),n.width*z/(t.width/e.view.scale));else z=parseInt(v.value)/(100*e.pageScale),isNaN(z)&&(c=1/e.pageScale,v.value="100 %");n=mxRectangle.fromRectangle(n);n.width=Math.ceil(n.width*
-c);n.height=Math.ceil(n.height*c);z*=c;!x&&e.pageVisible?(t=e.getPageLayout(),q-=t.x*n.width,m-=t.y*n.height):x=!0;if(null==b){b=PrintDialog.createPrintPreview(e,z,n,0,q,m,x);b.pageSelector=!1;b.mathEnabled=!1;q=a.getCurrentFile();null!=q&&(b.title=q.getTitle());var y=b.writeHead;b.writeHead=function(b){y.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)b.writeln('<style type="text/css">'),b.writeln(Editor.mathJaxWebkitCss),b.writeln("</style>");mxClient.IS_GC&&(b.writeln('<style type="text/css">'),
-b.writeln("@media print {"),b.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),b.writeln("}"),b.writeln("</style>"));null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"));for(var c=e.getCustomFonts(),d=0;d<c.length;d++){var k=c[d].name,l=c[d].url;Graph.isCssFontUrl(l)?b.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(l)+'" charset="UTF-8" type="text/css">'):(b.writeln('<style type="text/css">'),b.writeln('@font-face {\nfont-family: "'+
-mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(l)+'");\n}'),b.writeln("</style>"))}};if("undefined"!==typeof MathJax){var E=b.renderPage;b.renderPage=function(e,b,c,d,k,l){var f=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject;var g=E.apply(this,arguments);mxClient.NO_FO=f;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:g.className="geDisableMathJax";return g}}q=null;m=d.enableFlowAnimation;d.enableFlowAnimation=
-!1;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(q=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());b.open(null,null,k,!0);d.enableFlowAnimation=m;null!=q&&(d.stylesheet=q,d.refresh())}else{n=e.background;if(null==n||""==n||n==mxConstants.NONE)n="#ffffff";b.backgroundColor=n;b.autoOrigin=x;b.appendGraph(e,z,q,m,k,!0);k=e.getCustomFonts();if(null!=b.wnd)for(q=0;q<k.length;q++)m=k[q].name,x=k[q].url,Graph.isCssFontUrl(x)?b.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(x)+
-'" charset="UTF-8" type="text/css">'):(b.wnd.document.writeln('<style type="text/css">'),b.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(m)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),b.wnd.document.writeln("</style>"))}l&&(e.useCssTransforms=l,e.currentTranslate=f,e.currentScale=g,e.view.translate=p,e.view.scale=u);return b}var c=parseInt(L.value)/100;isNaN(c)&&(c=1,L.value="100 %");var c=.75*c,k=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(k=d.stylesheet,
-d.stylesheet=d.getDefaultStylesheet(),d.refresh());var l=q.value,f=m.value,p=!u.checked,t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(a,u.checked,l,f,A.checked,H.value,J.value,parseInt(v.value)/100,parseInt(L.value)/100,M.get());else{p&&(p=l==g&&f==g);if(!p&&null!=a.pages&&a.pages.length){var n=0,p=a.pages.length-1;u.checked||(n=parseInt(l)-1,p=parseInt(f)-1);for(var z=n;z<=p;z++){var x=a.pages[z],l=x==a.currentPage?d:null;if(null==l){var l=a.createTemporaryGraph(d.stylesheet),f=!0,n=
-!1,C=null,y=null;null==x.viewState&&null==x.root&&a.updatePageRoot(x);null!=x.viewState&&(f=x.viewState.pageVisible,n=x.viewState.mathEnabled,C=x.viewState.background,y=x.viewState.backgroundImage,l.extFonts=x.viewState.extFonts);l.background=C;l.backgroundImage=null!=y?new mxImage(y.src,y.width,y.height):null;l.pageVisible=f;l.mathEnabled=n;var E=l.getGlobalVariable;l.getGlobalVariable=function(e){return"page"==e?x.getName():"pagenumber"==e?z+1:"pagecount"==e?null!=a.pages?a.pages.length:1:E.apply(this,
-arguments)};document.body.appendChild(l.container);a.updatePageRoot(x);l.model.setRoot(x.root)}t=b(l,t,z!=p);l!=d&&l.container.parentNode.removeChild(l.container)}}else t=b(d);null==t?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(p=t.wnd.document,e&&(t.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&e&&PrintDialog.printPreview(t));null!=k&&(d.stylesheet=
-k,d.refresh())}}var d=a.editor.graph,k=document.createElement("div"),l=document.createElement("h3");l.style.width="100%";l.style.textAlign="center";l.style.marginTop="0px";mxUtils.write(l,e||mxResources.get("print"));k.appendChild(l);var f=1,g=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var u=document.createElement("input");u.style.cssText="margin-right:8px;margin-bottom:8px;";u.setAttribute("value","all");u.setAttribute("type",
-"radio");u.setAttribute("name","pages-printdialog");p.appendChild(u);l=document.createElement("span");mxUtils.write(l,mxResources.get("printAllPages"));p.appendChild(l);mxUtils.br(p);var t=u.cloneNode(!0);u.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);l=document.createElement("span");mxUtils.write(l,mxResources.get("pages")+":");p.appendChild(l);var q=document.createElement("input");q.style.cssText="margin:0 8px 0 8px;";q.setAttribute("value","1");q.setAttribute("type",
-"number");q.setAttribute("min","1");q.style.width="50px";p.appendChild(q);l=document.createElement("span");mxUtils.write(l,mxResources.get("to"));p.appendChild(l);var m=q.cloneNode(!0);p.appendChild(m);mxEvent.addListener(q,"focus",function(){t.checked=!0});mxEvent.addListener(m,"focus",function(){t.checked=!0});mxEvent.addListener(q,"change",b);mxEvent.addListener(m,"change",b);if(null!=a.pages&&(f=a.pages.length,null!=a.currentPage))for(l=0;l<a.pages.length;l++)if(a.currentPage==a.pages[l]){g=l+
-1;q.value=g;m.value=g;break}q.setAttribute("max",f);m.setAttribute("max",f);a.isPagesEnabled()?1<f&&(k.appendChild(p),t.checked=!0):t.checked=!0;var n=document.createElement("div");n.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");n.appendChild(z);l=document.createElement("span");mxUtils.write(l,mxResources.get("adjustTo"));n.appendChild(l);var v=document.createElement("input");
-v.style.cssText="margin:0 8px 0 8px;";v.setAttribute("value","100 %");v.style.width="50px";n.appendChild(v);mxEvent.addListener(v,"focus",function(){z.checked=!0});k.appendChild(n);var p=p.cloneNode(!1),A=z.cloneNode(!0);A.setAttribute("value","fit");z.setAttribute("checked","checked");l=document.createElement("div");l.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";l.appendChild(A);p.appendChild(l);n=document.createElement("table");n.style.display="inline-block";
+function(a,e,b,c,d,k,n,f,g,p){if(null!=b&&null==mxMarker.markers[b]){var u=this.getPackageForType(b);null!=u&&mxStencilRegistry.getStencil(u)}return H.apply(this,arguments)};PrintDialog.prototype.create=function(a,e){function b(){q.value=Math.max(1,Math.min(f,Math.max(parseInt(q.value),parseInt(l.value))));l.value=Math.max(1,Math.min(f,Math.min(parseInt(q.value),parseInt(l.value))))}function c(e){function b(e,b,k){var n=e.useCssTransforms,f=e.currentTranslate,g=e.currentScale,p=e.view.translate,u=
+e.view.scale;e.useCssTransforms&&(e.useCssTransforms=!1,e.currentTranslate=new mxPoint(0,0),e.currentScale=1,e.view.translate=new mxPoint(0,0),e.view.scale=1);var t=e.getGraphBounds(),l=0,q=0,m=M.get(),z=1/e.pageScale,x=A.checked;if(x)var z=parseInt(H.value),C=parseInt(J.value),z=Math.min(m.height*C/(t.height/e.view.scale),m.width*z/(t.width/e.view.scale));else z=parseInt(v.value)/(100*e.pageScale),isNaN(z)&&(c=1/e.pageScale,v.value="100 %");m=mxRectangle.fromRectangle(m);m.width=Math.ceil(m.width*
+c);m.height=Math.ceil(m.height*c);z*=c;!x&&e.pageVisible?(t=e.getPageLayout(),l-=t.x*m.width,q-=t.y*m.height):x=!0;if(null==b){b=PrintDialog.createPrintPreview(e,z,m,0,l,q,x);b.pageSelector=!1;b.mathEnabled=!1;l=a.getCurrentFile();null!=l&&(b.title=l.getTitle());var y=b.writeHead;b.writeHead=function(b){y.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)b.writeln('<style type="text/css">'),b.writeln(Editor.mathJaxWebkitCss),b.writeln("</style>");mxClient.IS_GC&&(b.writeln('<style type="text/css">'),
+b.writeln("@media print {"),b.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),b.writeln("}"),b.writeln("</style>"));null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"));for(var c=e.getCustomFonts(),d=0;d<c.length;d++){var k=c[d].name,n=c[d].url;Graph.isCssFontUrl(n)?b.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(n)+'" charset="UTF-8" type="text/css">'):(b.writeln('<style type="text/css">'),b.writeln('@font-face {\nfont-family: "'+
+mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(n)+'");\n}'),b.writeln("</style>"))}};if("undefined"!==typeof MathJax){var E=b.renderPage;b.renderPage=function(e,b,c,d,k,n){var f=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject;var g=E.apply(this,arguments);mxClient.NO_FO=f;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:g.className="geDisableMathJax";return g}}l=null;q=d.enableFlowAnimation;d.enableFlowAnimation=
+!1;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(l=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());b.open(null,null,k,!0);d.enableFlowAnimation=q;null!=l&&(d.stylesheet=l,d.refresh())}else{m=e.background;if(null==m||""==m||m==mxConstants.NONE)m="#ffffff";b.backgroundColor=m;b.autoOrigin=x;b.appendGraph(e,z,l,q,k,!0);k=e.getCustomFonts();if(null!=b.wnd)for(l=0;l<k.length;l++)q=k[l].name,x=k[l].url,Graph.isCssFontUrl(x)?b.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(x)+
+'" charset="UTF-8" type="text/css">'):(b.wnd.document.writeln('<style type="text/css">'),b.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(q)+'";\nsrc: url("'+mxUtils.htmlEntities(x)+'");\n}'),b.wnd.document.writeln("</style>"))}n&&(e.useCssTransforms=n,e.currentTranslate=f,e.currentScale=g,e.view.translate=p,e.view.scale=u);return b}var c=parseInt(L.value)/100;isNaN(c)&&(c=1,L.value="100 %");var c=.75*c,k=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(k=d.stylesheet,
+d.stylesheet=d.getDefaultStylesheet(),d.refresh());var n=l.value,f=q.value,p=!u.checked,t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(a,u.checked,n,f,A.checked,H.value,J.value,parseInt(v.value)/100,parseInt(L.value)/100,M.get());else{p&&(p=n==g&&f==g);if(!p&&null!=a.pages&&a.pages.length){var m=0,p=a.pages.length-1;u.checked||(m=parseInt(n)-1,p=parseInt(f)-1);for(var z=m;z<=p;z++){var x=a.pages[z],n=x==a.currentPage?d:null;if(null==n){var n=a.createTemporaryGraph(d.stylesheet),f=!0,m=
+!1,C=null,y=null;null==x.viewState&&null==x.root&&a.updatePageRoot(x);null!=x.viewState&&(f=x.viewState.pageVisible,m=x.viewState.mathEnabled,C=x.viewState.background,y=x.viewState.backgroundImage,n.extFonts=x.viewState.extFonts);n.background=C;n.backgroundImage=null!=y?new mxImage(y.src,y.width,y.height):null;n.pageVisible=f;n.mathEnabled=m;var E=n.getGlobalVariable;n.getGlobalVariable=function(e){return"page"==e?x.getName():"pagenumber"==e?z+1:"pagecount"==e?null!=a.pages?a.pages.length:1:E.apply(this,
+arguments)};document.body.appendChild(n.container);a.updatePageRoot(x);n.model.setRoot(x.root)}t=b(n,t,z!=p);n!=d&&n.container.parentNode.removeChild(n.container)}}else t=b(d);null==t?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(p=t.wnd.document,e&&(t.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&e&&PrintDialog.printPreview(t));null!=k&&(d.stylesheet=
+k,d.refresh())}}var d=a.editor.graph,k=document.createElement("div"),n=document.createElement("h3");n.style.width="100%";n.style.textAlign="center";n.style.marginTop="0px";mxUtils.write(n,e||mxResources.get("print"));k.appendChild(n);var f=1,g=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var u=document.createElement("input");u.style.cssText="margin-right:8px;margin-bottom:8px;";u.setAttribute("value","all");u.setAttribute("type",
+"radio");u.setAttribute("name","pages-printdialog");p.appendChild(u);n=document.createElement("span");mxUtils.write(n,mxResources.get("printAllPages"));p.appendChild(n);mxUtils.br(p);var t=u.cloneNode(!0);u.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);n=document.createElement("span");mxUtils.write(n,mxResources.get("pages")+":");p.appendChild(n);var l=document.createElement("input");l.style.cssText="margin:0 8px 0 8px;";l.setAttribute("value","1");l.setAttribute("type",
+"number");l.setAttribute("min","1");l.style.width="50px";p.appendChild(l);n=document.createElement("span");mxUtils.write(n,mxResources.get("to"));p.appendChild(n);var q=l.cloneNode(!0);p.appendChild(q);mxEvent.addListener(l,"focus",function(){t.checked=!0});mxEvent.addListener(q,"focus",function(){t.checked=!0});mxEvent.addListener(l,"change",b);mxEvent.addListener(q,"change",b);if(null!=a.pages&&(f=a.pages.length,null!=a.currentPage))for(n=0;n<a.pages.length;n++)if(a.currentPage==a.pages[n]){g=n+
+1;l.value=g;q.value=g;break}l.setAttribute("max",f);q.setAttribute("max",f);a.isPagesEnabled()?1<f&&(k.appendChild(p),t.checked=!0):t.checked=!0;var m=document.createElement("div");m.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");m.appendChild(z);n=document.createElement("span");mxUtils.write(n,mxResources.get("adjustTo"));m.appendChild(n);var v=document.createElement("input");
+v.style.cssText="margin:0 8px 0 8px;";v.setAttribute("value","100 %");v.style.width="50px";m.appendChild(v);mxEvent.addListener(v,"focus",function(){z.checked=!0});k.appendChild(m);var p=p.cloneNode(!1),A=z.cloneNode(!0);A.setAttribute("value","fit");z.setAttribute("checked","checked");n=document.createElement("div");n.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";n.appendChild(A);p.appendChild(n);m=document.createElement("table");m.style.display="inline-block";
var x=document.createElement("tbody"),C=document.createElement("tr"),y=C.cloneNode(!0),E=document.createElement("td"),B=E.cloneNode(!0),D=E.cloneNode(!0),F=E.cloneNode(!0),I=E.cloneNode(!0),G=E.cloneNode(!0);E.style.textAlign="right";F.style.textAlign="right";mxUtils.write(E,mxResources.get("fitTo"));var H=document.createElement("input");H.style.cssText="margin:0 8px 0 8px;";H.setAttribute("value","1");H.setAttribute("min","1");H.setAttribute("type","number");H.style.width="40px";B.appendChild(H);
-l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsAcross"));D.appendChild(l);mxUtils.write(F,mxResources.get("fitToBy"));var J=H.cloneNode(!0);I.appendChild(J);mxEvent.addListener(H,"focus",function(){A.checked=!0});mxEvent.addListener(J,"focus",function(){A.checked=!0});l=document.createElement("span");mxUtils.write(l,mxResources.get("fitToSheetsDown"));G.appendChild(l);C.appendChild(E);C.appendChild(B);C.appendChild(D);y.appendChild(F);y.appendChild(I);y.appendChild(G);
-x.appendChild(C);x.appendChild(y);n.appendChild(x);p.appendChild(n);k.appendChild(p);p=document.createElement("div");l=document.createElement("div");l.style.fontWeight="bold";l.style.marginBottom="12px";mxUtils.write(l,mxResources.get("paperSize"));p.appendChild(l);l=document.createElement("div");l.style.marginBottom="12px";var M=PageSetupDialog.addPageFormatPanel(l,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(l);l=document.createElement("span");mxUtils.write(l,
-mxResources.get("pageScale"));p.appendChild(l);var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";L.setAttribute("value","100 %");L.style.width="60px";p.appendChild(L);k.appendChild(p);l=document.createElement("div");l.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&l.appendChild(p);a.isOffline()||(n=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),
-n.className="geBtn",l.appendChild(n));PrintDialog.previewEnabled&&(n=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),n.className="geBtn",l.appendChild(n));n=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});n.className="geBtn gePrimaryBtn";l.appendChild(n);a.editor.cancelFirst||l.appendChild(p);k.appendChild(l);this.container=k};var I=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
+n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsAcross"));D.appendChild(n);mxUtils.write(F,mxResources.get("fitToBy"));var J=H.cloneNode(!0);I.appendChild(J);mxEvent.addListener(H,"focus",function(){A.checked=!0});mxEvent.addListener(J,"focus",function(){A.checked=!0});n=document.createElement("span");mxUtils.write(n,mxResources.get("fitToSheetsDown"));G.appendChild(n);C.appendChild(E);C.appendChild(B);C.appendChild(D);y.appendChild(F);y.appendChild(I);y.appendChild(G);
+x.appendChild(C);x.appendChild(y);m.appendChild(x);p.appendChild(m);k.appendChild(p);p=document.createElement("div");n=document.createElement("div");n.style.fontWeight="bold";n.style.marginBottom="12px";mxUtils.write(n,mxResources.get("paperSize"));p.appendChild(n);n=document.createElement("div");n.style.marginBottom="12px";var M=PageSetupDialog.addPageFormatPanel(n,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(n);n=document.createElement("span");mxUtils.write(n,
+mxResources.get("pageScale"));p.appendChild(n);var L=document.createElement("input");L.style.cssText="margin:0 8px 0 8px;";L.setAttribute("value","100 %");L.style.width="60px";p.appendChild(L);k.appendChild(p);n=document.createElement("div");n.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});p.className="geBtn";a.editor.cancelFirst&&n.appendChild(p);a.isOffline()||(m=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),
+m.className="geBtn",n.appendChild(m));PrintDialog.previewEnabled&&(m=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();c(!1)}),m.className="geBtn",n.appendChild(m));m=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();c(!0)});m.className="geBtn gePrimaryBtn";n.appendChild(m);a.editor.cancelFirst||n.appendChild(p);k.appendChild(n);this.container=k};var I=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(I.apply(this,arguments),null!=this.mathEnabled&&
this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};Editor.prototype.useCanvasForExport=!1;try{var J=document.createElement("canvas"),F=new Image;F.onload=function(){try{J.getContext("2d").drawImage(F,0,0);var a=J.toDataURL("image/png");Editor.prototype.useCanvasForExport=
null!=a&&6<a.length}catch(L){}};F.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(M){}})();
(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,c){c.ui=a.ui;return b};a.afterDecode=function(a,b,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(a)})();
-(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);a.beforeDecode=function(a,b,c){c.ui=a.ui;return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="14.4.2";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(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=
+(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);a.beforeDecode=function(a,b,c){c.ui=a.ui;return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="14.4.3";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(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;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;
EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,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(a,b,c,d,f,g,q){g=null!=g?g:0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&
--1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var e=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";f=null!=f?f:Error(a);(new Image).src=e+"/log?severity="+g+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=f&&null!=f.stack?"&stack="+encodeURIComponent(f.stack):"")}}catch(y){}try{q||
-null==window.console||console.error(g,a,b,c,d,f)}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var e=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=e+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(l){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=
-null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(l){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)null!=arguments[b]&&a.push(arguments[b]);console.log.apply(console,a)}}catch(l){}};EditorUi.parsePng=function(a,b,c){function e(a,e){var b=
-k;k+=e;return a.substring(b,k)}function d(a){a=e(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var k=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(e(a,4),"IHDR"!=e(a,4))null!=c&&c();else{e(a,17);do{c=d(a);var l=e(a,4);if(null!=b&&b(k-8,l,c))break;value=e(a,c);e(a,4);if("IEND"==l)break}while(c)}};EditorUi.removeChildNodes=function(a){for(;null!=a.firstChild;)a.removeChild(a.firstChild)};EditorUi.prototype.emptyDiagramXml=
+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(a,b,c,d,f,g,l){g=null!=g?g:0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&
+-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var e=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";f=null!=f?f:Error(a);(new Image).src=e+"/log?severity="+g+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=f&&null!=f.stack?"&stack="+encodeURIComponent(f.stack):"")}}catch(y){}try{l||
+null==window.console||console.error(g,a,b,c,d,f)}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent",a);else if(EditorUi.enableLogging)try{var e=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=e+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(n){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=
+null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(n){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)null!=arguments[b]&&a.push(arguments[b]);console.log.apply(console,a)}}catch(n){}};EditorUi.parsePng=function(a,b,c){function e(a,e){var b=
+k;k+=e;return a.substring(b,k)}function d(a){a=e(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var k=0;if(e(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(e(a,4),"IHDR"!=e(a,4))null!=c&&c();else{e(a,17);do{c=d(a);var n=e(a,4);if(null!=b&&b(k-8,n,c))break;value=e(a,c);e(a,4);if("IEND"==n)break}while(c)}};EditorUi.removeChildNodes=function(a){for(;null!=a.firstChild;)a.removeChild(a.firstChild)};EditorUi.prototype.emptyDiagramXml=
'<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>";EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;";
EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.maxTextWidth=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile=null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=
!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(u){}try{var b=document.createElement("canvas"),c=new Image;c.onload=function(){try{b.getContext("2d").drawImage(c,0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(t){}};c.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(u){}try{b=
document.createElement("canvas");b.width=b.height=1;var d=b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==d.match("image/jpeg")}catch(u){}})();EditorUi.prototype.openLink=function(a,b,c){return this.editor.graph.openLink(a,b,c)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,c){localStorage.setItem(a,b);null!=c&&c()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);
b()};EditorUi.prototype.setMathEnabled=function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(a){return this.isOfflineApp()||!navigator.onLine||!a&&("1"==urlParams.stealth||"1"==urlParams.lockdown)};
-EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var e=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),d=e.spin;e.spin=function(c,k){var l=!1;this.active||(d.call(this,c),this.active=!0,null!=k&&(l=document.createElement("div"),l.style.position="absolute",l.style.whiteSpace="nowrap",l.style.background="#4B4243",l.style.color="white",l.style.fontFamily="Helvetica, Arial",
-l.style.fontSize="9pt",l.style.padding="6px",l.style.paddingLeft="10px",l.style.paddingRight="10px",l.style.zIndex=2E9,l.style.left=Math.max(0,a)+"px",l.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(l.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(l.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(l.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=k.substring(k.length-3,k.length)&&"!"!=k.charAt(k.length-1)&&(k+="..."),l.innerHTML=k,c.appendChild(l),
-e.status=l),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,k)}));this.stop();return a}),l=!0);return l};var k=e.stop;e.stop=function(){k.call(this);this.active=!1;null!=e.status&&null!=e.status.parentNode&&e.status.parentNode.removeChild(e.status);e.status=null};e.pause=function(){return function(){}};return e};EditorUi.prototype.isCompatibleString=function(a){try{var e=mxUtils.parseXml(a),b=this.editor.extractGraphModel(e.documentElement,
+EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var e=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),d=e.spin;e.spin=function(c,k){var n=!1;this.active||(d.call(this,c),this.active=!0,null!=k&&(n=document.createElement("div"),n.style.position="absolute",n.style.whiteSpace="nowrap",n.style.background="#4B4243",n.style.color="white",n.style.fontFamily="Helvetica, Arial",
+n.style.fontSize="9pt",n.style.padding="6px",n.style.paddingLeft="10px",n.style.paddingRight="10px",n.style.zIndex=2E9,n.style.left=Math.max(0,a)+"px",n.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(n.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(n.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(n.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=k.substring(k.length-3,k.length)&&"!"!=k.charAt(k.length-1)&&(k+="..."),n.innerHTML=k,c.appendChild(n),
+e.status=n),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,k)}));this.stop();return a}),n=!0);return n};var k=e.stop;e.stop=function(){k.call(this);this.active=!1;null!=e.status&&null!=e.status.parentNode&&e.status.parentNode.removeChild(e.status);e.status=null};e.pause=function(){return function(){}};return e};EditorUi.prototype.isCompatibleString=function(a){try{var e=mxUtils.parseXml(a),b=this.editor.extractGraphModel(e.documentElement,
!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(p){}return!1};EditorUi.prototype.isVisioData=function(a){return 8<a.length&&(208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==a.charCodeAt(2)&&224==a.charCodeAt(3)&&161==a.charCodeAt(4)&&177==a.charCodeAt(5)&&26==a.charCodeAt(6)&&225==a.charCodeAt(7)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&4==a.charCodeAt(3)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&6==a.charCodeAt(3))};EditorUi.prototype.isRemoteVisioData=
function(a){return 8<a.length&&(208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==a.charCodeAt(2)&&224==a.charCodeAt(3)&&161==a.charCodeAt(4)&&177==a.charCodeAt(5)&&26==a.charCodeAt(6)&&225==a.charCodeAt(7)||60==a.charCodeAt(0)&&63==a.charCodeAt(1)&&120==a.charCodeAt(2)&&109==a.charCodeAt(3)&&108==a.charCodeAt(3))};EditorUi.prototype.isPngData=function(a){return 8<a.length&&137==a.charCodeAt(0)&&80==a.charCodeAt(1)&&78==a.charCodeAt(2)&&71==a.charCodeAt(3)&&13==a.charCodeAt(4)&&10==a.charCodeAt(5)&&
26==a.charCodeAt(6)&&10==a.charCodeAt(7)};var a=EditorUi.prototype.createKeyHandler;EditorUi.prototype.createKeyHandler=function(e){var b=a.apply(this,arguments);if(!this.editor.chromeless||this.editor.editable){var c=b.getFunction,d=this.editor.graph,f=this;b.getFunction=function(a){if(d.isSelectionEmpty()&&null!=f.pages&&0<f.pages.length){var e=f.getSelectedPageIndex();if(mxEvent.isShiftDown(a)){if(37==a.keyCode)return function(){0<e&&f.movePage(e,e-1)};if(38==a.keyCode)return function(){0<e&&f.movePage(e,
@@ -10105,10 +10105,10 @@ function(a){return 8<a.length&&(208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==
this.diagramContainer.style.visibility),e=null!=g?mxUtils.getXml(g):""}catch(q){}return e};EditorUi.prototype.validateFileData=function(a){if(null!=a&&0<a.length){var e=a.indexOf('<meta charset="utf-8">');0<=e&&(a=a.slice(0,e)+'<meta charset="utf-8"/>'+a.slice(e+23-1,a.length));a=Graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var e=null!=a?this.editor.extractGraphModel(a,!0):null;
null!=e&&(a=e);if(null!=a){e=this.editor.graph;e.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,c=a.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var d=c.length-1;0<=d;d--){var f=this.updatePageRoot(new DiagramPage(c[d]));null==f.getName()&&f.setName(mxResources.get("pageWithNumber",[d+1]));e.model.execute(new ChangePage(this,f,0==d?f:null,0))}}else"0"!=
urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),e.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=b)for(d=0;d<b.length;d++)e.model.execute(new ChangePage(this,b[d],null))}finally{e.model.endUpdate()}}};
-EditorUi.prototype.createFileData=function(a,b,c,d,f,g,q,m,n,x,B){b=null!=b?b:this.editor.graph;f=null!=f?f:!1;n=null!=n?n:!0;var e,k=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?e="_blank":k=e=d;if(null==a)return"";var l=a;if("mxfile"!=l.nodeName.toLowerCase()){if(B){var p=a.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());p.appendChild(a)}else{p=Graph.zapGremlins(mxUtils.getXml(a));l=Graph.compress(p);if(Graph.decompress(l)!=p)return p;p=a.ownerDocument.createElement("diagram");
-p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,l)}l=a.ownerDocument.createElement("mxfile");l.appendChild(p)}x?(l=l.cloneNode(!0),l.removeAttribute("modified"),l.removeAttribute("host"),l.removeAttribute("agent"),l.removeAttribute("etag"),l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("type")):(l.removeAttribute("userAgent"),l.removeAttribute("version"),l.removeAttribute("editor"),l.removeAttribute("pages"),l.removeAttribute("type"),
-mxClient.IS_CHROMEAPP?l.setAttribute("host","Chrome"):EditorUi.isElectronApp?l.setAttribute("host","Electron"):l.setAttribute("host",window.location.hostname),l.setAttribute("modified",(new Date).toISOString()),l.setAttribute("agent",navigator.appVersion),l.setAttribute("version",EditorUi.VERSION),l.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&l.setAttribute("type",a),1<l.getElementsByTagName("diagram").length&&null!=this.pages&&l.setAttribute("pages",this.pages.length));
-B=B?mxUtils.getPrettyXml(l):mxUtils.getXml(l);if(!g&&!f&&(q||null!=c&&/(\.html)$/i.test(c.getTitle())))B=this.getHtml2(mxUtils.getXml(l),b,null!=c?c.getTitle():null,e,k);else if(g||!f&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),B=this.getEmbeddedSvg(B,b,d,null,m,n,k);return B};EditorUi.prototype.getXmlFileData=function(a,b,c){a=null!=a?a:!0;b=null!=b?b:!1;c=null!=c?c:!Editor.compressXml;var e=this.editor.getGraphXml(a);if(a&&
+EditorUi.prototype.createFileData=function(a,b,c,d,f,g,l,m,y,x,B){b=null!=b?b:this.editor.graph;f=null!=f?f:!1;y=null!=y?y:!0;var e,k=null;null==c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?e="_blank":k=e=d;if(null==a)return"";var n=a;if("mxfile"!=n.nodeName.toLowerCase()){if(B){var p=a.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());p.appendChild(a)}else{p=Graph.zapGremlins(mxUtils.getXml(a));n=Graph.compress(p);if(Graph.decompress(n)!=p)return p;p=a.ownerDocument.createElement("diagram");
+p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,n)}n=a.ownerDocument.createElement("mxfile");n.appendChild(p)}x?(n=n.cloneNode(!0),n.removeAttribute("modified"),n.removeAttribute("host"),n.removeAttribute("agent"),n.removeAttribute("etag"),n.removeAttribute("userAgent"),n.removeAttribute("version"),n.removeAttribute("editor"),n.removeAttribute("type")):(n.removeAttribute("userAgent"),n.removeAttribute("version"),n.removeAttribute("editor"),n.removeAttribute("pages"),n.removeAttribute("type"),
+mxClient.IS_CHROMEAPP?n.setAttribute("host","Chrome"):EditorUi.isElectronApp?n.setAttribute("host","Electron"):n.setAttribute("host",window.location.hostname),n.setAttribute("modified",(new Date).toISOString()),n.setAttribute("agent",navigator.appVersion),n.setAttribute("version",EditorUi.VERSION),n.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&n.setAttribute("type",a),1<n.getElementsByTagName("diagram").length&&null!=this.pages&&n.setAttribute("pages",this.pages.length));
+B=B?mxUtils.getPrettyXml(n):mxUtils.getXml(n);if(!g&&!f&&(l||null!=c&&/(\.html)$/i.test(c.getTitle())))B=this.getHtml2(mxUtils.getXml(n),b,null!=c?c.getTitle():null,e,k);else if(g||!f&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),B=this.getEmbeddedSvg(B,b,d,null,m,y,k);return B};EditorUi.prototype.getXmlFileData=function(a,b,c){a=null!=a?a:!0;b=null!=b?b:!1;c=null!=c?c:!Editor.compressXml;var e=this.editor.getGraphXml(a);if(a&&
null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var b=a.getElementsByTagName("mxGraphModel"),b=0<b.length?b[0]:null;null==b&&c?(b=mxUtils.trim(mxUtils.getTextContent(a)),a=a.cloneNode(!1),0<b.length&&(b=Graph.decompress(b),null!=b&&0<b.length&&a.appendChild(mxUtils.parseXml(b).documentElement))):null==b||c?a=a.cloneNode(!0):(a=a.cloneNode(!1),mxUtils.setTextContent(a,Graph.compressNode(b)));e.appendChild(a)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,
Graph.compressNode(e)),e=this.fileNode.cloneNode(!1),b)a(this.currentPage.node);else for(b=0;b<this.pages.length;b++){if(this.currentPage!=this.pages[b]&&this.pages[b].needsUpdate){var d=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[b].root));this.editor.graph.saveViewState(this.pages[b].viewState,d);EditorUi.removeChildNodes(this.pages[b].node);mxUtils.setTextContent(this.pages[b].node,Graph.compressNode(d));delete this.pages[b].needsUpdate}a(this.pages[b].node)}return e};
EditorUi.prototype.anonymizeString=function(a,b){for(var e=[],c=0;c<a.length;c++){var d=a.charAt(c);0<=EditorUi.ignoredAnonymizedChars.indexOf(d)?e.push(d):isNaN(parseInt(d))?d.toLowerCase()!=d?e.push(String.fromCharCode(65+Math.round(25*Math.random()))):d.toUpperCase()!=d?e.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(d)?e.push(" "):e.push("?"):e.push(b?"0":Math.round(9*Math.random()))}return e.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var e=
@@ -10117,9 +10117,9 @@ mxUtils.bind(this,function(a){var e=d.cells[a];if(null!=e){for(var b in e)null!=
Object.keys(a[EditorUi.DIFF_UPDATE]).length&&delete a[EditorUi.DIFF_UPDATE]}return a};EditorUi.prototype.anonymizeAttributes=function(a,b){if(null!=a.attributes)for(var e=0;e<a.attributes.length;e++)"as"!=a.attributes[e].name&&a.setAttribute(a.attributes[e].name,this.anonymizeString(a.attributes[e].value,b));if(null!=a.childNodes)for(e=0;e<a.childNodes.length;e++)this.anonymizeAttributes(a.childNodes[e],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var e=a.getElementsByTagName("mxCell"),
c=0;c<e.length;c++)null!=e[c].getAttribute("value")&&e[c].setAttribute("value","["+e[c].getAttribute("value").length+"]"),null!=e[c].getAttribute("xmlValue")&&e[c].setAttribute("xmlValue","["+e[c].getAttribute("xmlValue").length+"]"),null!=e[c].getAttribute("style")&&e[c].setAttribute("style","["+e[c].getAttribute("style").length+"]"),null!=e[c].parentNode&&"root"!=e[c].parentNode.nodeName&&null!=e[c].parentNode.parentNode&&(e[c].setAttribute("id",e[c].parentNode.getAttribute("id")),e[c].parentNode.parentNode.replaceChild(e[c],
e[c].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var e=this.getCurrentFile();null!=e&&(e.savingFile?this.handleError({message:mxResources.get("busy")}):!a&&e.invalidChecksum?e.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(e.clearAutosave(),this.editor.setStatus(""),a?e.reloadFile(mxUtils.bind(this,function(){e.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){e.handleFileError(a,!0)})):e.synchronizeFile(mxUtils.bind(this,
-function(){e.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){e.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,d,f,g,m,n,y,x){f=null!=f?f:!0;g=null!=g?g:!1;var e=this.editor.graph;if(b||!a&&null!=y&&/(\.svg)$/i.test(y.getTitle()))if(x=!1,null!=e.themes&&"darkTheme"==e.defaultThemeName||null!=this.pages&&this.currentPage!=this.pages[0]){var k=e.getGlobalVariable,e=this.createTemporaryGraph(e.getStylesheet()),l=this.pages[0];e.getGlobalVariable=
-function(a){return"page"==a?l.getName():"pagenumber"==a?1:k.apply(this,arguments)};document.body.appendChild(e.container);e.model.setRoot(l.root)}m=null!=m?m:this.getXmlFileData(f,g,x);y=null!=y?y:this.getCurrentFile();a=this.createFileData(m,e,y,window.location.href,a,b,c,d,f,n,x);e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);return a};EditorUi.prototype.getHtml=function(a,b,c,d,f,g){g=null!=g?g:!0;var e=null,k=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var e=
-g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),l=b.view.scale;g=Math.floor(e.x/l-b.view.translate.x);l=Math.floor(e.y/l-b.view.translate.y);e=b.background;null==f&&(b=this.getBasenames().join(";"),0<b.length&&(k=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",g);a.setAttribute("y0",l)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=d&&a.setAttribute("edit",
+function(){e.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){e.handleFileError(a,!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,d,f,g,l,m,y,x){f=null!=f?f:!0;g=null!=g?g:!1;var e=this.editor.graph;if(b||!a&&null!=y&&/(\.svg)$/i.test(y.getTitle()))if(x=!1,null!=e.themes&&"darkTheme"==e.defaultThemeName||null!=this.pages&&this.currentPage!=this.pages[0]){var k=e.getGlobalVariable,e=this.createTemporaryGraph(e.getStylesheet()),n=this.pages[0];e.getGlobalVariable=
+function(a){return"page"==a?n.getName():"pagenumber"==a?1:k.apply(this,arguments)};document.body.appendChild(e.container);e.model.setRoot(n.root)}l=null!=l?l:this.getXmlFileData(f,g,x);y=null!=y?y:this.getCurrentFile();a=this.createFileData(l,e,y,window.location.href,a,b,c,d,f,m,x);e!=this.editor.graph&&e.container.parentNode.removeChild(e.container);return a};EditorUi.prototype.getHtml=function(a,b,c,d,f,g){g=null!=g?g:!0;var e=null,k=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var e=
+g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),n=b.view.scale;g=Math.floor(e.x/n-b.view.translate.x);n=Math.floor(e.y/n-b.view.translate.y);e=b.background;null==f&&(b=this.getBasenames().join(";"),0<b.length&&(k=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",g);a.setAttribute("y0",n)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=d&&a.setAttribute("edit",
d));null!=f&&(f=f.replace(/&/g,"&amp;"));a=null!=a?Graph.zapGremlins(mxUtils.getXml(a)):"";d=Graph.compress(a);Graph.decompress(d)!=a&&(d=encodeURIComponent(a));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=f?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==f?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=f?'<meta http-equiv="refresh" content="0;URL=\''+
f+"'\"/>\n":"")+"</head>\n<body"+(null==f&&null!=e&&e!=mxConstants.NONE?' style="background-color:'+e+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+d+"</div>\n</div>\n"+(null==f?'<script type="text/javascript" src="'+k+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+
"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,d,f){b=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer-static.min.js";null!=f&&(f=f.replace(/&/g,"&amp;"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==f?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':
@@ -10127,21 +10127,21 @@ f+"'\"/>\n":"")+"</head>\n<body"+(null==f&&null!=e&&e!=mxConstants.NONE?' style=
b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+f+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var e=Editor.extractParserError(a,mxResources.get("invalidOrMissingFile"));if(e)throw Error(mxResources.get("notADiagramFile")+
" ("+e+")");e=null!=a?this.editor.extractGraphModel(a,!0):null;null!=e&&(a=e);if(null!=a&&"mxfile"==a.nodeName&&(e=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<e.length||1==e.length&&e[0].hasAttribute("name"))){var b=null;this.fileNode=a;this.pages=[];for(var c=0;c<e.length;c++)null==e[c].getAttribute("id")&&e[c].setAttribute("id",c),a=new DiagramPage(e[c]),null==a.getName()&&a.setName(mxResources.get("pageWithNumber",[c+1])),this.pages.push(a),null!=urlParams["page-id"]&&a.getId()==
urlParams["page-id"]&&(b=a);this.currentPage=null!=b?b:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=
-this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var d=urlParams["layer-ids"].split(" ");a={};for(c=0;c<d.length;c++)a[d[c]]=!0;for(var f=this.editor.graph.getModel(),g=f.getChildren(f.root),c=0;c<g.length;c++){var m=g[c];f.setVisible(m,a[m.id]||!1)}}catch(y){}};EditorUi.prototype.getBaseFilename=function(a){var e=this.getCurrentFile(),e=null!=e&&null!=e.getTitle()?e.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(e)||/(\.html)$/i.test(e)||/(\.svg)$/i.test(e)||/(\.png)$/i.test(e)||
-/(\.drawio)$/i.test(e))e=e.substring(0,e.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(e=e+"-"+this.currentPage.getName());return e};EditorUi.prototype.downloadFile=function(a,b,c,d,f,g,m,n,y,x,B){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var e=this.getBaseFilename(!f),k=e+"."+a;if("xml"==a){var l='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,
-null,null,d,f,null,null,null,b);this.saveData(k,a,l,"text/xml")}else if("html"==a)l=this.getHtml2(this.getFileData(!0),this.editor.graph,e),this.saveData(k,a,l,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?k=e+".png":"jpeg"==a&&(k=e+".jpg"),this.saveRequest(k,a,mxUtils.bind(this,function(e,b){try{var c=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var k=this.createDownloadRequest(e,a,d,b,m,f,n,y,x,B);
-this.editor.graph.pageVisible=c;return k}catch(L){this.handleError(L)}}));else{var p=null,t=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(k,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var q=this.editor.graph.background;if(m||q==mxConstants.NONE)q=null;var u=this.editor.graph.getSvg(q,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(u);
-this.editor.convertImages(u,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();t('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else k=e+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();t(a)}),d)}}catch(I){this.handleError(I)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,f,g,m,n,y,x){var e=this.editor.graph,k=e.getGraphBounds();
-c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var l="",p="";if(k.width*k.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};x=x?"1":"0";"pdf"==b&&0==g&&(p="&allPages=1");if("xmlpng"==b&&(x="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){l="&from="+g;break}g=e.background;"png"!=b&&"pdf"!=b||!f?f||null!=g&&g!=mxConstants.NONE||(g="#ffffff"):g=mxConstants.NONE;f={globalVars:e.getExportVariables()};
-y&&(f.grid={size:e.gridSize,steps:e.view.gridSteps,color:e.view.gridColor});Graph.translateDiagram&&(f.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+b+l+p+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+d+"&embedXml="+x+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(f))+(null!=m?"&scale="+m:"")+(null!=n?"&border="+n:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=
+this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var d=urlParams["layer-ids"].split(" ");a={};for(c=0;c<d.length;c++)a[d[c]]=!0;for(var f=this.editor.graph.getModel(),g=f.getChildren(f.root),c=0;c<g.length;c++){var l=g[c];f.setVisible(l,a[l.id]||!1)}}catch(y){}};EditorUi.prototype.getBaseFilename=function(a){var e=this.getCurrentFile(),e=null!=e&&null!=e.getTitle()?e.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(e)||/(\.html)$/i.test(e)||/(\.svg)$/i.test(e)||/(\.png)$/i.test(e)||
+/(\.drawio)$/i.test(e))e=e.substring(0,e.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(e=e+"-"+this.currentPage.getName());return e};EditorUi.prototype.downloadFile=function(a,b,c,d,f,g,l,m,y,x,B){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var e=this.getBaseFilename(!f),k=e+"."+a;if("xml"==a){var n='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,
+null,null,d,f,null,null,null,b);this.saveData(k,a,n,"text/xml")}else if("html"==a)n=this.getHtml2(this.getFileData(!0),this.editor.graph,e),this.saveData(k,a,n,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?k=e+".png":"jpeg"==a&&(k=e+".jpg"),this.saveRequest(k,a,mxUtils.bind(this,function(e,b){try{var c=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var k=this.createDownloadRequest(e,a,d,b,l,f,m,y,x,B);
+this.editor.graph.pageVisible=c;return k}catch(L){this.handleError(L)}}));else{var p=null,t=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(k,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(p)}))});if("svg"==a){var u=this.editor.graph.background;if(l||u==mxConstants.NONE)u=null;var q=this.editor.graph.getSvg(u,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(q);
+this.editor.convertImages(q,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();t('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else k=e+".svg",p=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop();t(a)}),d)}}catch(I){this.handleError(I)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,f,g,l,m,y,x){var e=this.editor.graph,k=e.getGraphBounds();
+c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var n="",p="";if(k.width*k.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};x=x?"1":"0";"pdf"==b&&0==g&&(p="&allPages=1");if("xmlpng"==b&&(x="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){n="&from="+g;break}g=e.background;"png"!=b&&"pdf"!=b||!f?f||null!=g&&g!=mxConstants.NONE||(g="#ffffff"):g=mxConstants.NONE;f={globalVars:e.getExportVariables()};
+y&&(f.grid={size:e.gridSize,steps:e.view.gridSteps,color:e.view.gridColor});Graph.translateDiagram&&(f.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+b+n+p+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+d+"&embedXml="+x+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(f))+(null!=l?"&scale="+l:"")+(null!=m?"&border="+m:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=
function(a,b,c){var e=window.location.hash,d=mxUtils.bind(this,function(c){var d=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<d.length&&(d+="\n"),d+=c);c=new LocalFile(this,"csv"!=a.format&&0<d.length?d:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return e};this.fileLoaded(c);"csv"==a.format&&this.importCsv(d,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));
-if(null!=a.update){var k=null!=a.interval?parseInt(a.interval):6E4,l=null,f=mxUtils.bind(this,function(){var e=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){e===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),g()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),g=mxUtils.bind(this,function(){window.clearTimeout(l);
-l=window.setTimeout(f,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){g();f()}));g();f()}null!=b&&b()});null!=a.url&&0<a.url.length?this.editor.loadUrl(a.url,mxUtils.bind(this,function(a){d(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)})):d("")};EditorUi.prototype.updateDiagram=function(a){function e(a){var e=new mxCellOverlay(a.image||d.warningImage,a.tooltip,a.align,a.valign,a.offset);e.addListener(mxEvent.CLICK,function(e,b){c.alert(a.tooltip)});return e}var b=null,
-c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var d=this.editor.graph,f=d.getModel();f.beginUpdate();var g=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var m=f.getCell(a.getAttribute("id"));if(null!=m){try{var n=a.getAttribute("value");if(null!=n){var x=mxUtils.parseXml(n).documentElement;if(null!=x)if("1"==x.getAttribute("replace-value"))f.setValue(m,x);else for(var B=x.attributes,z=0;z<B.length;z++)d.setAttributeForCell(m,
-B[z].nodeName,0<B[z].nodeValue.length?B[z].nodeValue:null)}}catch(J){null!=window.console&&console.log("Error in value for "+m.id+": "+J)}try{var A=a.getAttribute("style");null!=A&&d.model.setStyle(m,A)}catch(J){null!=window.console&&console.log("Error in style for "+m.id+": "+J)}try{var C=a.getAttribute("icon");if(null!=C){var E=0<C.length?JSON.parse(C):null;null!=E&&E.append||d.removeCellOverlays(m);null!=E&&d.addCellOverlay(m,e(E))}}catch(J){null!=window.console&&console.log("Error in icon for "+
-m.id+": "+J)}try{var D=a.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),G=d.getCellGeometry(m);if(null!=G){G=G.clone();for(key in D){var H=parseFloat(D[key]);"dx"==key?G.x+=H:"dy"==key?G.y+=H:"dw"==key?G.width+=H:"dh"==key?G.height+=H:G[key]=parseFloat(D[key])}d.model.setGeometry(m,G)}}}catch(J){null!=window.console&&console.log("Error in icon for "+m.id+": "+J)}}}else if("model"==a.nodeName){for(var I=a.firstChild;null!=I&&I.nodeType!=mxConstants.NODETYPE_ELEMENT;)I=I.nextSibling;null!=
+if(null!=a.update){var k=null!=a.interval?parseInt(a.interval):6E4,n=null,f=mxUtils.bind(this,function(){var e=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){e===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),g()):this.handleError({message:mxResources.get("error")+" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),g=mxUtils.bind(this,function(){window.clearTimeout(n);
+n=window.setTimeout(f,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){g();f()}));g();f()}null!=b&&b()});null!=a.url&&0<a.url.length?this.editor.loadUrl(a.url,mxUtils.bind(this,function(a){d(a)}),mxUtils.bind(this,function(a){null!=c&&c(a)})):d("")};EditorUi.prototype.updateDiagram=function(a){function e(a){var e=new mxCellOverlay(a.image||d.warningImage,a.tooltip,a.align,a.valign,a.offset);e.addListener(mxEvent.CLICK,function(e,b){c.alert(a.tooltip)});return e}var b=null,
+c=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var d=this.editor.graph,f=d.getModel();f.beginUpdate();var g=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var l=f.getCell(a.getAttribute("id"));if(null!=l){try{var m=a.getAttribute("value");if(null!=m){var x=mxUtils.parseXml(m).documentElement;if(null!=x)if("1"==x.getAttribute("replace-value"))f.setValue(l,x);else for(var B=x.attributes,z=0;z<B.length;z++)d.setAttributeForCell(l,
+B[z].nodeName,0<B[z].nodeValue.length?B[z].nodeValue:null)}}catch(J){null!=window.console&&console.log("Error in value for "+l.id+": "+J)}try{var A=a.getAttribute("style");null!=A&&d.model.setStyle(l,A)}catch(J){null!=window.console&&console.log("Error in style for "+l.id+": "+J)}try{var C=a.getAttribute("icon");if(null!=C){var E=0<C.length?JSON.parse(C):null;null!=E&&E.append||d.removeCellOverlays(l);null!=E&&d.addCellOverlay(l,e(E))}}catch(J){null!=window.console&&console.log("Error in icon for "+
+l.id+": "+J)}try{var D=a.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),G=d.getCellGeometry(l);if(null!=G){G=G.clone();for(key in D){var H=parseFloat(D[key]);"dx"==key?G.x+=H:"dy"==key?G.y+=H:"dw"==key?G.width+=H:"dh"==key?G.height+=H:G[key]=parseFloat(D[key])}d.model.setGeometry(l,G)}}}catch(J){null!=window.console&&console.log("Error in icon for "+l.id+": "+J)}}}else if("model"==a.nodeName){for(var I=a.firstChild;null!=I&&I.nodeType!=mxConstants.NODETYPE_ELEMENT;)I=I.nextSibling;null!=
I&&(new mxCodec(a.firstChild)).decode(I,f)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(d.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))d.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"==a.nodeName&&(g=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{f.endUpdate()}null!=g&&this.chromelessResize&&this.chromelessResize(!0,g)}return b};
-EditorUi.prototype.getCopyFilename=function(a,b){var e=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",d=e.lastIndexOf(".");0<=d&&(c=e.substring(d),e=e.substring(0,d));if(b)var k=new Date,d=k.getFullYear(),f=k.getMonth()+1,g=k.getDate(),m=k.getHours(),n=k.getMinutes(),k=k.getSeconds(),e=e+(" "+(d+"-"+f+"-"+g+"-"+m+"-"+n+"-"+k));return e=mxResources.get("copyOf",[e])+c};EditorUi.prototype.fileLoaded=function(a,b){var e=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);
+EditorUi.prototype.getCopyFilename=function(a,b){var e=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,c="",d=e.lastIndexOf(".");0<=d&&(c=e.substring(d),e=e.substring(0,d));if(b)var k=new Date,d=k.getFullYear(),f=k.getMonth()+1,g=k.getDate(),l=k.getHours(),m=k.getMinutes(),k=k.getSeconds(),e=e+(" "+(d+"-"+f+"-"+g+"-"+l+"-"+m+"-"+k));return e=mxResources.get("copyOf",[e])+c};EditorUi.prototype.fileLoaded=function(a,b){var e=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);
var c=!1;this.hideDialog();null!=e&&(EditorUi.debug("File.closed",[e]),e.removeListener(this.descriptorChangedListener),e.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=e&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!b&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=
this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();b||this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();delete this.openingFile;this.setGraphEnabled(!0);
this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),
@@ -10149,26 +10149,26 @@ this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window
this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(q){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(q){}}catch(q){this.fileLoadedError=q;if(EditorUi.enableLogging&&!this.isOffline())try{EditorUi.logEvent({category:"ERROR-LOAD-FILE-"+(null!=a?a.getHash():"none"),action:"message_"+q.message,label:"stack_"+q.stack})}catch(v){}var k=mxUtils.bind(this,function(){null!=
urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))?window.location.search=this.getSearch(["url"]):null!=e?this.fileLoaded(e):d()});b?k():this.handleError(q,mxResources.get("errorLoadingFile"),k,!0,null,null,!0)}else d();return c};EditorUi.prototype.getHashValueForPages=function(a,b){var e=0,c=new mxGraphModel,d=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var k=0;k<a.length;k++){this.updatePageRoot(a[k]);var f=a[k].node.cloneNode(!1);
f.removeAttribute("name");c.root=a[k].root;var g=d.encode(c);this.editor.graph.saveViewState(a[k].viewState,g,!0);g.removeAttribute("pageWidth");g.removeAttribute("pageHeight");f.appendChild(g);null!=b&&(b.eltCount+=f.getElementsByTagName("*").length,b.nodeCount+=f.getElementsByTagName("mxCell").length);e=(e<<5)-e+this.hashValue(f,function(a,b,e,c){return!c||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?c&&"mxCell"==a.nodeName&&"previous"==b?null:e:Math.round(e)},
-b)<<0}return e};EditorUi.prototype.hashValue=function(a,b,c){var e=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(e^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var d=0;d<a.attributes.length;d++){var k=a.attributes[d].name,l=null!=b?b(a,k,a.attributes[d].value,!0):a.attributes[d].value;null!=l&&(e^=this.hashValue(k,b,c)+this.hashValue(l,
-b,c))}}if(null!=a.childNodes)for(d=0;d<a.childNodes.length;d++)e=(e<<5)-e+this.hashValue(a.childNodes[d],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(d=0;d<a.length;d++)b=(b<<5)-b+a.charCodeAt(d)<<0;e^=b}return e};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,c,d,f,g,m){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};
+b)<<0}return e};EditorUi.prototype.hashValue=function(a,b,c){var e=0;if(null!=a&&"object"===typeof a&&"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(e^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var d=0;d<a.attributes.length;d++){var k=a.attributes[d].name,n=null!=b?b(a,k,a.attributes[d].value,!0):a.attributes[d].value;null!=n&&(e^=this.hashValue(k,b,c)+this.hashValue(n,
+b,c))}}if(null!=a.childNodes)for(d=0;d<a.childNodes.length;d++)e=(e<<5)-e+this.hashValue(a.childNodes[d],b,c)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=c&&(c.byteCount+=a.length);for(d=0;d<a.length;d++)b=(b<<5)-b+a.charCodeAt(d)<<0;e^=b}return e};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,c,d,f,g,l){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};
EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad?StorageFile.getFileContent(this,".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var b=mxUtils.createXmlDocument(),e=b.createElement("mxlibrary");mxUtils.setTextContent(e,JSON.stringify(a));b.appendChild(e);return mxUtils.getXml(b)};
EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!=LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var b=this.sidebar.palettes[a];if(null!=b){for(var e=0;e<b.length;e++)b[e].parentNode.removeChild(b[e]);delete this.sidebar.palettes[a]}};EditorUi.prototype.repositionLibrary=function(a){var b=this.sidebar.container;if(null==a){var e=
this.sidebar.palettes["L.scratchpad"];null==e&&(e=this.sidebar.palettes.search);null!=e&&(a=e[e.length-1].nextSibling)}a=null!=a?a:b.firstChild.nextSibling.nextSibling;var e=b.lastChild,c=e.previousSibling;b.insertBefore(e,a);b.insertBefore(c,e)};EditorUi.prototype.loadLibrary=function(a,b){var e=mxUtils.parseXml(a.getData());if("mxlibrary"==e.documentElement.nodeName){var c=JSON.parse(mxUtils.getTextContent(e.documentElement));this.libraryLoaded(a,c,e.documentElement.getAttribute("title"),b)}else throw{message:mxResources.get("notALibraryFile")};
};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded=function(a,b,c,d){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var e=this.sidebar.palettes[a.getHash()],e=null!=e?e[e.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var k=null,f=mxUtils.bind(this,function(b,e){0==b.length&&a.isEditable()?(null==k&&(k=document.createElement("div"),k.className=
-"geDropTarget",mxUtils.write(k,mxResources.get("dragElementsHere"))),e.appendChild(k)):this.addLibraryEntries(b,e)});null!=this.sidebar&&null!=b&&this.sidebar.addEntries(b);c=null!=c&&0<c.length?c:a.getTitle();var l=this.sidebar.addPalette(a.getHash(),c,null!=d?d:!0,mxUtils.bind(this,function(a){f(b,a)}));this.repositionLibrary(e);var g=l.parentNode.previousSibling;d=g.getAttribute("title");null!=d&&0<d.length&&".scratchpad"!=a.title&&g.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+d);var p=
-document.createElement("div");p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";g.style.position="relative";var m=document.createElement("img");m.setAttribute("src",Dialog.prototype.closeImage);m.setAttribute("title",mxResources.get("close"));m.setAttribute("valign","absmiddle");m.setAttribute("border","0");m.style.cursor="pointer";m.style.margin="0 3px";var n=null;if(".scratchpad"!=a.title||this.closableScratchpad)p.appendChild(m),
-mxEvent.addListener(m,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var e=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=n?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e();mxEvent.consume(b)}}));if(a.isEditable()){var A=this.editor.graph,C=null,E=mxUtils.bind(this,function(e){this.showLibraryDialog(a.getTitle(),l,b,a,a.getMode());mxEvent.consume(e)}),D=mxUtils.bind(this,function(e){a.setModified(!0);
-a.isAutosave()?(null!=C&&null!=C.parentNode&&C.parentNode.removeChild(C),C=m.cloneNode(!1),C.setAttribute("src",Editor.spinImage),C.setAttribute("title",mxResources.get("saving")),C.style.cursor="default",C.style.marginRight="2px",C.style.marginTop="-2px",p.insertBefore(C,p.firstChild),g.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=C&&null!=C.parentNode&&(C.parentNode.removeChild(C),g.style.paddingRight=18*p.childNodes.length+
-"px")})):null==n&&(n=m.cloneNode(!1),n.setAttribute("src",IMAGE_PATH+"/download.png"),n.setAttribute("title",mxResources.get("save")),p.insertBefore(n,p.firstChild),mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==n||a.isModified()||(g.style.paddingRight=18*p.childNodes.length+"px",n.parentNode.removeChild(n),n=null)});mxEvent.consume(e)})),g.style.paddingRight=18*p.childNodes.length+"px")}),G=
-mxUtils.bind(this,function(a,e,c,d){a=A.cloneCells(mxUtils.sortCells(A.model.getTopmostCells(a)));for(var f=0;f<a.length;f++){var g=A.getCellGeometry(a[f]);null!=g&&g.translate(-e.x,-e.y)}l.appendChild(this.sidebar.createVertexTemplateFromCells(a,e.width,e.height,d||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:e.width,h:e.height};null!=d&&(a.title=d);b.push(a);D(c);null!=k&&null!=k.parentNode&&0<b.length&&(k.parentNode.removeChild(k),k=null)}),H=mxUtils.bind(this,
-function(a){if(A.isSelectionEmpty())A.getRubberband().isActive()?(A.getRubberband().execute(a),A.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=A.getSelectionCells(),e=A.view.getBounds(b),c=A.view.scale;e.x/=c;e.y/=c;e.width/=c;e.height/=c;e.x-=A.view.translate.x;e.y-=A.view.translate.y;G(b,e)}mxEvent.consume(a)});mxEvent.addGestureListeners(l,function(){},mxUtils.bind(this,function(a){A.isMouseDown&&null!=A.panningManager&&
-null!=A.graphHandler.first&&(A.graphHandler.suspend(),null!=A.graphHandler.hint&&(A.graphHandler.hint.style.visibility="hidden"),l.style.backgroundColor="#f1f3f4",l.style.cursor="copy",A.panningManager.stop(),A.autoScroll=!1,mxEvent.consume(a))}),mxUtils.bind(this,function(a){A.isMouseDown&&null!=A.panningManager&&null!=A.graphHandler&&(l.style.backgroundColor="",l.style.cursor="default",this.sidebar.showTooltips=!0,A.panningManager.stop(),A.graphHandler.reset(),A.isMouseDown=!1,A.autoScroll=!0,H(a),
-mxEvent.consume(a))}));mxEvent.addListener(l,"mouseleave",mxUtils.bind(this,function(a){A.isMouseDown&&null!=A.graphHandler.first&&(A.graphHandler.resume(),null!=A.graphHandler.hint&&(A.graphHandler.hint.style.visibility="visible"),l.style.backgroundColor="",l.style.cursor="",A.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(a){l.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";l.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();
-a.preventDefault()})),mxEvent.addListener(l,"drop",mxUtils.bind(this,function(a){l.style.cursor="";l.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(e,c,d,g,p,m,n,q,t){if(null!=e&&"image/"==c.substring(0,6))e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(e),e=[new mxCell("",new mxGeometry(0,0,p,m),e)],e[0].vertex=!0,G(e,new mxRectangle(0,
-0,p,m),a,mxEvent.isAltDown(a)?null:n.substring(0,n.lastIndexOf(".")).replace(/_/g," ")),null!=k&&null!=k.parentNode&&0<b.length&&(k.parentNode.removeChild(k),k=null);else{var u=!1,z=mxUtils.bind(this,function(e,c){if(null!=e&&"application/pdf"==c){var d=Editor.extractGraphModelFromPdf(e);null!=d&&0<d.length&&(e=d)}if(null!=e)if(d=mxUtils.parseXml(e),"mxlibrary"==d.documentElement.nodeName)try{var g=JSON.parse(mxUtils.getTextContent(d.documentElement));f(g,l);b=b.concat(g);D(a);this.spinner.stop();
-u=!0}catch(R){}else if("mxfile"==d.documentElement.nodeName)try{for(var p=d.documentElement.getElementsByTagName("diagram"),g=0;g<p.length;g++){var m=this.stringToCells(Editor.getDiagramNodeXml(p[g])),n=this.editor.graph.getBoundingBoxFromGeometry(m);G(m,new mxRectangle(0,0,n.width,n.height),a)}u=!0}catch(R){null!=window.console&&console.log("error in drop handler:",R)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=k&&null!=k.parentNode&&0<b.length&&
-(k.parentNode.removeChild(k),k=null)});null!=t&&null!=n&&(/(\.v(dx|sdx?))($|\?)/i.test(n)||/(\.vs(x|sx?))($|\?)/i.test(n))?this.importVisio(t,function(a){z(a,"text/xml")},null,n):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(e,n)&&null!=t?this.parseFile(t,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?z(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},
-mxResources.get("errorLoadingFile")))})):z(e,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(l,"dragleave",function(a){l.style.cursor="";l.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));m=m.cloneNode(!1);m.setAttribute("src",Editor.editImage);m.setAttribute("title",mxResources.get("edit"));p.insertBefore(m,p.firstChild);mxEvent.addListener(m,"click",E);mxEvent.addListener(l,"dblclick",function(a){mxEvent.getSource(a)==l&&E(a)});d=m.cloneNode(!1);d.setAttribute("src",
+"geDropTarget",mxUtils.write(k,mxResources.get("dragElementsHere"))),e.appendChild(k)):this.addLibraryEntries(b,e)});null!=this.sidebar&&null!=b&&this.sidebar.addEntries(b);c=null!=c&&0<c.length?c:a.getTitle();var n=this.sidebar.addPalette(a.getHash(),c,null!=d?d:!0,mxUtils.bind(this,function(a){f(b,a)}));this.repositionLibrary(e);var g=n.parentNode.previousSibling;d=g.getAttribute("title");null!=d&&0<d.length&&".scratchpad"!=a.title&&g.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+d);var p=
+document.createElement("div");p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";g.style.position="relative";var l=document.createElement("img");l.setAttribute("src",Dialog.prototype.closeImage);l.setAttribute("title",mxResources.get("close"));l.setAttribute("valign","absmiddle");l.setAttribute("border","0");l.style.cursor="pointer";l.style.margin="0 3px";var m=null;if(".scratchpad"!=a.title||this.closableScratchpad)p.appendChild(l),
+mxEvent.addListener(l,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var e=mxUtils.bind(this,function(){this.closeLibrary(a)});null!=m?this.confirm(mxResources.get("allChangesLost"),null,e,mxResources.get("cancel"),mxResources.get("discardChanges")):e();mxEvent.consume(b)}}));if(a.isEditable()){var A=this.editor.graph,C=null,E=mxUtils.bind(this,function(e){this.showLibraryDialog(a.getTitle(),n,b,a,a.getMode());mxEvent.consume(e)}),D=mxUtils.bind(this,function(e){a.setModified(!0);
+a.isAutosave()?(null!=C&&null!=C.parentNode&&C.parentNode.removeChild(C),C=l.cloneNode(!1),C.setAttribute("src",Editor.spinImage),C.setAttribute("title",mxResources.get("saving")),C.style.cursor="default",C.style.marginRight="2px",C.style.marginTop="-2px",p.insertBefore(C,p.firstChild),g.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=C&&null!=C.parentNode&&(C.parentNode.removeChild(C),g.style.paddingRight=18*p.childNodes.length+
+"px")})):null==m&&(m=l.cloneNode(!1),m.setAttribute("src",IMAGE_PATH+"/download.png"),m.setAttribute("title",mxResources.get("save")),p.insertBefore(m,p.firstChild),mxEvent.addListener(m,"click",mxUtils.bind(this,function(e){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==m||a.isModified()||(g.style.paddingRight=18*p.childNodes.length+"px",m.parentNode.removeChild(m),m=null)});mxEvent.consume(e)})),g.style.paddingRight=18*p.childNodes.length+"px")}),G=
+mxUtils.bind(this,function(a,e,c,d){a=A.cloneCells(mxUtils.sortCells(A.model.getTopmostCells(a)));for(var f=0;f<a.length;f++){var g=A.getCellGeometry(a[f]);null!=g&&g.translate(-e.x,-e.y)}n.appendChild(this.sidebar.createVertexTemplateFromCells(a,e.width,e.height,d||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:e.width,h:e.height};null!=d&&(a.title=d);b.push(a);D(c);null!=k&&null!=k.parentNode&&0<b.length&&(k.parentNode.removeChild(k),k=null)}),H=mxUtils.bind(this,
+function(a){if(A.isSelectionEmpty())A.getRubberband().isActive()?(A.getRubberband().execute(a),A.getRubberband().reset()):this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=A.getSelectionCells(),e=A.view.getBounds(b),c=A.view.scale;e.x/=c;e.y/=c;e.width/=c;e.height/=c;e.x-=A.view.translate.x;e.y-=A.view.translate.y;G(b,e)}mxEvent.consume(a)});mxEvent.addGestureListeners(n,function(){},mxUtils.bind(this,function(a){A.isMouseDown&&null!=A.panningManager&&
+null!=A.graphHandler.first&&(A.graphHandler.suspend(),null!=A.graphHandler.hint&&(A.graphHandler.hint.style.visibility="hidden"),n.style.backgroundColor="#f1f3f4",n.style.cursor="copy",A.panningManager.stop(),A.autoScroll=!1,mxEvent.consume(a))}),mxUtils.bind(this,function(a){A.isMouseDown&&null!=A.panningManager&&null!=A.graphHandler&&(n.style.backgroundColor="",n.style.cursor="default",this.sidebar.showTooltips=!0,A.panningManager.stop(),A.graphHandler.reset(),A.isMouseDown=!1,A.autoScroll=!0,H(a),
+mxEvent.consume(a))}));mxEvent.addListener(n,"mouseleave",mxUtils.bind(this,function(a){A.isMouseDown&&null!=A.graphHandler.first&&(A.graphHandler.resume(),null!=A.graphHandler.hint&&(A.graphHandler.hint.style.visibility="visible"),n.style.backgroundColor="",n.style.cursor="",A.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(n,"dragover",mxUtils.bind(this,function(a){n.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";n.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();
+a.preventDefault()})),mxEvent.addListener(n,"drop",mxUtils.bind(this,function(a){n.style.cursor="";n.style.backgroundColor="";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(e,c,d,g,p,l,m,t,q){if(null!=e&&"image/"==c.substring(0,6))e="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(e),e=[new mxCell("",new mxGeometry(0,0,p,l),e)],e[0].vertex=!0,G(e,new mxRectangle(0,
+0,p,l),a,mxEvent.isAltDown(a)?null:m.substring(0,m.lastIndexOf(".")).replace(/_/g," ")),null!=k&&null!=k.parentNode&&0<b.length&&(k.parentNode.removeChild(k),k=null);else{var u=!1,z=mxUtils.bind(this,function(e,c){if(null!=e&&"application/pdf"==c){var d=Editor.extractGraphModelFromPdf(e);null!=d&&0<d.length&&(e=d)}if(null!=e)if(d=mxUtils.parseXml(e),"mxlibrary"==d.documentElement.nodeName)try{var g=JSON.parse(mxUtils.getTextContent(d.documentElement));f(g,n);b=b.concat(g);D(a);this.spinner.stop();
+u=!0}catch(R){}else if("mxfile"==d.documentElement.nodeName)try{for(var p=d.documentElement.getElementsByTagName("diagram"),g=0;g<p.length;g++){var l=this.stringToCells(Editor.getDiagramNodeXml(p[g])),m=this.editor.graph.getBoundingBoxFromGeometry(l);G(l,new mxRectangle(0,0,m.width,m.height),a)}u=!0}catch(R){null!=window.console&&console.log("error in drop handler:",R)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=k&&null!=k.parentNode&&0<b.length&&
+(k.parentNode.removeChild(k),k=null)});null!=q&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?this.importVisio(q,function(a){z(a,"text/xml")},null,m):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(e,m)&&null!=q?this.parseFile(q,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?z(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},
+mxResources.get("errorLoadingFile")))})):z(e,c)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(n,"dragleave",function(a){n.style.cursor="";n.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));l=l.cloneNode(!1);l.setAttribute("src",Editor.editImage);l.setAttribute("title",mxResources.get("edit"));p.insertBefore(l,p.firstChild);mxEvent.addListener(l,"click",E);mxEvent.addListener(n,"dblclick",function(a){mxEvent.getSource(a)==n&&E(a)});d=l.cloneNode(!1);d.setAttribute("src",
Editor.plusImage);d.setAttribute("title",mxResources.get("add"));p.insertBefore(d,p.firstChild);mxEvent.addListener(d,"click",H);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(d=document.createElement("span"),d.setAttribute("title",mxResources.get("help")),d.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(d,"?"),mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),
p.insertBefore(d,p.firstChild))}g.appendChild(p);g.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(a,b){for(var e=0;e<a.length;e++){var c=a[e],d=c.data;if(null!=d){var d=this.convertDataUri(d),k="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==c.aspect&&(k+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(k+"image="+d,c.w,c.h,"",c.title||"",!1,!1,!0))}else null!=c.xml&&(d=this.stringToCells(Graph.decompress(c.xml)),
0<d.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(d,c.w,c.h,c.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource=function(a){return null!=a?a[mxLanguage]||a.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%)",
@@ -10178,99 +10178,99 @@ Editor.checkmarkImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAM
480:360,Graph.fileSupport?200:90,!0,!0);a.init()};EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.bind(this,function(a,b){if(!b){var e=new ChangePageSetup(this,null,a);e.ignoreColor=!0;this.editor.graph.model.execute(e)}});var e=new BackgroundImageDialog(this,a,b);this.showDialog(e.container,360,200,!0,!0);e.init()};EditorUi.prototype.showLibraryDialog=function(a,b,c,d,f){a=new LibraryDialog(this,a,b,c,d,f);this.showDialog(a.container,640,440,!0,!1,mxUtils.bind(this,
function(a){a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));a.init()};var b=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(a){var e=b.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(a){this.editor.graph.isSelectionEmpty()&&e.refresh()}));return e};EditorUi.prototype.createSidebarFooterContainer=function(){var a=this.createDiv("geSidebarContainer geSidebarFooter");a.style.position="absolute";a.style.overflow=
"hidden";var b=document.createElement("a");b.className="geTitle";b.style.color="#DF6C0C";b.style.fontWeight="bold";b.style.height="100%";b.style.paddingTop="9px";b.innerHTML='<span style="font-size:18px;margin-right:5px;">+</span>';mxUtils.write(b,mxResources.get("moreShapes")+"...");mxEvent.addListener(b,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.preventDefault()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.actions.get("shapes").funct();mxEvent.consume(a)}));
-a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,c,d,f,g,m){var e=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},k=null!=a&&null!=a.error?a.error:a;if(null!=a&&null!=a.stack&&null!=a.message)try{m?null!=window.console&&console.error("EditorUi.handleError:",a):EditorUi.logError("Caught: "+(""==a.message&&null!=a.name)?a.name:a.message,a.filename,a.lineNumber,a.columnNumber,a,"INFO")}catch(C){}if(null!=k||null!=b){m=mxUtils.htmlEntities(mxResources.get("unknownError"));
-var l=mxResources.get("ok"),p=null;b=null!=b?b:mxResources.get("error");if(null!=k){null!=k.retry&&(l=mxResources.get("cancel"),p=function(){e();k.retry()});if(404==k.code||404==k.status||403==k.code){m=403==k.code?null!=k.message?mxUtils.htmlEntities(k.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=f?f:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var n=
-null!=f?null:null!=g?g:window.location.hash;if(null!=n&&("#G"==n.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==n.substring(0,45))&&(null!=a&&null!=a.error&&(null!=a.error.errors&&0<a.error.errors.length&&"fileAccess"==a.error.errors[0].reason||null!=a.error.data&&0<a.error.data.length&&"fileAccess"==a.error.data[0].reason)||404==k.code||404==k.status)){n="#U"==n.substring(0,2)?n.substring(45,n.lastIndexOf("%26ex")):n.substring(2);this.showError(b,m,mxResources.get("openInNewWindow"),
-mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+n);this.handleError(a,b,c,d,f)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){d.innerHTML="";for(var a=0;a<b.length;a++){var e=document.createElement("option");mxUtils.write(e,b[a].displayName);e.value=a;d.appendChild(e);e=document.createElement("option");e.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(e,"<"+b[a].email+">");e.setAttribute("disabled","disabled");d.appendChild(e)}e=
+a.appendChild(b);return a};EditorUi.prototype.handleError=function(a,b,c,d,f,g,l){var e=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},k=null!=a&&null!=a.error?a.error:a;if(null!=a&&null!=a.stack&&null!=a.message)try{l?null!=window.console&&console.error("EditorUi.handleError:",a):EditorUi.logError("Caught: "+(""==a.message&&null!=a.name)?a.name:a.message,a.filename,a.lineNumber,a.columnNumber,a,"INFO")}catch(C){}if(null!=k||null!=b){l=mxUtils.htmlEntities(mxResources.get("unknownError"));
+var n=mxResources.get("ok"),p=null;b=null!=b?b:mxResources.get("error");if(null!=k){null!=k.retry&&(n=mxResources.get("cancel"),p=function(){e();k.retry()});if(404==k.code||404==k.status||403==k.code){l=403==k.code?null!=k.message?mxUtils.htmlEntities(k.message):mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=f?f:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var m=
+null!=f?null:null!=g?g:window.location.hash;if(null!=m&&("#G"==m.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==m.substring(0,45))&&(null!=a&&null!=a.error&&(null!=a.error.errors&&0<a.error.errors.length&&"fileAccess"==a.error.errors[0].reason||null!=a.error.data&&0<a.error.data.length&&"fileAccess"==a.error.data[0].reason)||404==k.code||404==k.status)){m="#U"==m.substring(0,2)?m.substring(45,m.lastIndexOf("%26ex")):m.substring(2);this.showError(b,l,mxResources.get("openInNewWindow"),
+mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+m);this.handleError(a,b,c,d,f)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){d.innerHTML="";for(var a=0;a<b.length;a++){var e=document.createElement("option");mxUtils.write(e,b[a].displayName);e.value=a;d.appendChild(e);e=document.createElement("option");e.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(e,"<"+b[a].email+">");e.setAttribute("disabled","disabled");d.appendChild(e)}e=
document.createElement("option");mxUtils.write(e,mxResources.get("addAccount"));e.value=b.length;d.appendChild(e)}var b=this.drive.getUsersList(),e=document.createElement("div"),c=document.createElement("span");c.style.marginTop="6px";mxUtils.write(c,mxResources.get("changeUser")+": ");e.appendChild(c);var d=document.createElement("select");d.style.width="200px";a();mxEvent.addListener(d,"change",mxUtils.bind(this,function(){var e=d.value,c=b.length!=e;c&&this.drive.setUser(b[e]);this.drive.authorize(c,
-mxUtils.bind(this,function(){c||(b=this.drive.getUsersList(),a())}),mxUtils.bind(this,function(a){this.handleError(a)}),!0)}));e.appendChild(d);e=new CustomDialog(this,e,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(e.container,300,75,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=c&&c()}),480,150);return}}null!=k.message?m=""==k.message&&null!=k.name?mxUtils.htmlEntities(k.name):mxUtils.htmlEntities(k.message):
-null!=k.response&&null!=k.response.error?m=mxUtils.htmlEntities(k.response.error):"undefined"!==typeof window.App&&(k.code==App.ERROR_TIMEOUT?m=mxUtils.htmlEntities(mxResources.get("timeout")):k.code==App.ERROR_BUSY?m=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof k&&0<k.length&&(m=mxUtils.htmlEntities(k)))}var q=g=null;null!=k&&null!=k.helpLink&&(g=mxResources.get("help"),q=mxUtils.bind(this,function(){return this.editor.graph.openLink(k.helpLink)}));this.showError(b,m,l,c,p,null,
-null,g,q,null,null,null,d?c:null)}else null!=c&&c()};EditorUi.prototype.alert=function(a,b,c){a=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(a.container,c||340,100,!0,!1);a.init()};EditorUi.prototype.confirm=function(a,b,c,d,f,g){var e=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},k=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){e();null!=b&&b()},function(){e();null!=c&&c()},d,f,null,null,null,null,k);this.showDialog(a.container,
+mxUtils.bind(this,function(){c||(b=this.drive.getUsersList(),a())}),mxUtils.bind(this,function(a){this.handleError(a)}),!0)}));e.appendChild(d);e=new CustomDialog(this,e,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(e.container,300,75,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=c&&c()}),480,150);return}}null!=k.message?l=""==k.message&&null!=k.name?mxUtils.htmlEntities(k.name):mxUtils.htmlEntities(k.message):
+null!=k.response&&null!=k.response.error?l=mxUtils.htmlEntities(k.response.error):"undefined"!==typeof window.App&&(k.code==App.ERROR_TIMEOUT?l=mxUtils.htmlEntities(mxResources.get("timeout")):k.code==App.ERROR_BUSY?l=mxUtils.htmlEntities(mxResources.get("busy")):"string"===typeof k&&0<k.length&&(l=mxUtils.htmlEntities(k)))}var t=g=null;null!=k&&null!=k.helpLink&&(g=mxResources.get("help"),t=mxUtils.bind(this,function(){return this.editor.graph.openLink(k.helpLink)}));this.showError(b,l,n,c,p,null,
+null,g,t,null,null,null,d?c:null)}else null!=c&&c()};EditorUi.prototype.alert=function(a,b,c){a=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(a.container,c||340,100,!0,!1);a.init()};EditorUi.prototype.confirm=function(a,b,c,d,f,g){var e=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},k=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){e();null!=b&&b()},function(){e();null!=c&&c()},d,f,null,null,null,null,k);this.showDialog(a.container,
340,46+k,!0,g);a.init()};EditorUi.prototype.showBanner=function(a,b,c,d){var e=!1;if(!(this.bannerShowing||this["hideBanner"+a]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+a])){var k=document.createElement("div");k.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:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(k.style,"box-shadow","1px 1px 2px 0px #ddd");
mxUtils.setPrefixedStyle(k.style,"transform","translate(-50%,120%)");mxUtils.setPrefixedStyle(k.style,"transition","all 1s ease");k.className="geBtn gePrimaryBtn";e=document.createElement("img");e.setAttribute("src",IMAGE_PATH+"/logo.png");e.setAttribute("border","0");e.setAttribute("align","absmiddle");e.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";k.appendChild(e);e=document.createElement("img");e.setAttribute("src",Dialog.prototype.closeImage);e.setAttribute("title",
mxResources.get(d?"doNotShowAgain":"close"));e.setAttribute("border","0");e.style.cssText="position:absolute;right:10px;top:12px;filter:invert(1);padding:6px;margin:-6px;cursor:default;";k.appendChild(e);mxUtils.write(k,b);document.body.appendChild(k);this.bannerShowing=!0;b=document.createElement("div");b.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(!d){b.appendChild(f);var l=document.createElement("label");l.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(l,mxResources.get("doNotShowAgain"));b.appendChild(l);k.style.paddingBottom="30px";k.appendChild(b)}var g=mxUtils.bind(this,function(){null!=k.parentNode&&(k.parentNode.removeChild(k),this.bannerShowing=!1,f.checked||d)&&(this["hideBanner"+a]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+a]=Date.now(),mxSettings.save()))});mxEvent.addListener(e,
-"click",mxUtils.bind(this,function(a){mxEvent.consume(a);g()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(k.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){g()}),1E3)});mxEvent.addListener(k,"click",mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);b!=f&&b!=l?(null!=c&&c(),g(),mxEvent.consume(a)):p()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(k.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,
+"6px";if(!d){b.appendChild(f);var n=document.createElement("label");n.setAttribute("for","geDoNotShowAgainCheckbox");mxUtils.write(n,mxResources.get("doNotShowAgain"));b.appendChild(n);k.style.paddingBottom="30px";k.appendChild(b)}var g=mxUtils.bind(this,function(){null!=k.parentNode&&(k.parentNode.removeChild(k),this.bannerShowing=!1,f.checked||d)&&(this["hideBanner"+a]=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings["close"+a]=Date.now(),mxSettings.save()))});mxEvent.addListener(e,
+"click",mxUtils.bind(this,function(a){mxEvent.consume(a);g()}));var p=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(k.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){g()}),1E3)});mxEvent.addListener(k,"click",mxUtils.bind(this,function(a){var b=mxEvent.getSource(a);b!=f&&b!=n?(null!=c&&c(),g(),mxEvent.consume(a)):p()}));window.setTimeout(mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(k.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(p,
3E4);e=!0}return e};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.opened=new Date);this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createImageDataUri=function(a,b,c,d){a=a.toDataURL("image/"+c);if(null!=a&&6<a.length)null!=b&&(a=Editor.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(b))),0<d&&(a=Editor.writeGraphModelToPng(a,"pHYs",
"dpi",d));else throw{message:mxResources.get("unknownError")};return a};EditorUi.prototype.saveCanvas=function(a,b,c,d,f){var e="jpeg"==c?"jpg":c;d=this.getBaseFilename(d)+"."+e;a=this.createImageDataUri(a,b,c,f);this.saveData(d,e,a.substring(a.lastIndexOf(",")+1),"image/"+c,!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(a,b){var e=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));e.textarea.style.width="600px";e.textarea.style.height="380px";this.showDialog(e.container,620,460,!0,!0,null,null,null,null,!0);e.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(a,b,c,d,f,g){"text/xml"!=c||/(\.drawio)$/i.test(b)||/(\.xml)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.html)$/i.test(b)||(b=b+
"."+(null!=g?g:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)a=d?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==c||"image/"!=c.substring(0,6)?this.showTextDialog(b+":",a):this.openInNewWindow(a,c,d);else{var e=document.createElement("a");
g=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof e.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var k=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);g=65==(k?parseInt(k[2],10):!1)?!1:g}if(g||this.isOffline()){e.href=URL.createObjectURL(d?this.base64ToBlob(a,c):new Blob([a],{type:c}));g?e.download=b:e.setAttribute("target","_blank");document.body.appendChild(e);try{window.setTimeout(function(){URL.revokeObjectURL(e.href)},2E4),e.click(),
e.parentNode.removeChild(e)}catch(y){}}else this.createEchoRequest(a,b,c,d,f).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,d,f,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=f?"&format="+f:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(d?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var e=atob(a),c=e.length,d=Math.ceil(c/1024),k=Array(d),f=0;f<d;++f){for(var g=
-1024*f,m=Math.min(g+1024,c),n=Array(m-g),B=0;g<m;++B,++g)n[B]=e[g].charCodeAt(0);k[f]=new Uint8Array(n)}return new Blob(k,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,f,g,m,n){g=null!=g?g:!1;m=null!=m?m:"vsdx"!=f&&(!mxClient.IS_IOS||!navigator.standalone);f=this.getServiceCount(g);isLocalStorage&&f++;var e=4>=f?2:6<f?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,e){try{if("_blank"==e)if(null!=c&&"image/"==c.substring(0,6))this.openInNewWindow(a,c,d);else if(null!=c&&"text/html"==
-c.substring(0,9)){var k=new EmbedDialog(this,a);this.showDialog(k.container,440,240,!0,!0);k.init()}else{var f=window.open("about:blank");null==f?mxUtils.popup(a,!0):(f.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),f.document.close())}else e==App.MODE_DEVICE||"download"==e?this.doSaveLocalFile(a,b,c,d,null,n):null!=b&&0<b.length&&this.pickFolder(e,mxUtils.bind(this,function(k){try{this.exportFile(a,b,c,d,e,k)}catch(E){this.handleError(E)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,
-function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,m,null,1<f,e,a,c,d);g=this.isServices(f)?f>e?390:270:160;this.showDialog(b.container,400,g,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){var e=window.open("about:blank");null==e||null==e.document?mxUtils.popup(a,!0):("image/svg+xml"!=b||mxClient.IS_SVG?"image/svg+xml"==b?e.document.write("<html>"+a+"</html>"):(a=c?a:btoa(unescape(encodeURIComponent(a))),e.document.write('<html><img style="max-width:100%;" src="data:'+
+1024*f,l=Math.min(g+1024,c),m=Array(l-g),B=0;g<l;++B,++g)m[B]=e[g].charCodeAt(0);k[f]=new Uint8Array(m)}return new Blob(k,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,f,g,l,m){g=null!=g?g:!1;l=null!=l?l:"vsdx"!=f&&(!mxClient.IS_IOS||!navigator.standalone);f=this.getServiceCount(g);isLocalStorage&&f++;var e=4>=f?2:6<f?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,e){try{if("_blank"==e)if(null!=c&&"image/"==c.substring(0,6))this.openInNewWindow(a,c,d);else if(null!=c&&"text/html"==
+c.substring(0,9)){var k=new EmbedDialog(this,a);this.showDialog(k.container,440,240,!0,!0);k.init()}else{var f=window.open("about:blank");null==f?mxUtils.popup(a,!0):(f.document.write("<pre>"+mxUtils.htmlEntities(a,!1)+"</pre>"),f.document.close())}else e==App.MODE_DEVICE||"download"==e?this.doSaveLocalFile(a,b,c,d,null,m):null!=b&&0<b.length&&this.pickFolder(e,mxUtils.bind(this,function(k){try{this.exportFile(a,b,c,d,e,k)}catch(E){this.handleError(E)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,
+function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,l,null,1<f,e,a,c,d);g=this.isServices(f)?f>e?390:270:160;this.showDialog(b.container,400,g,!0,!0);b.init()};EditorUi.prototype.openInNewWindow=function(a,b,c){var e=window.open("about:blank");null==e||null==e.document?mxUtils.popup(a,!0):("image/svg+xml"!=b||mxClient.IS_SVG?"image/svg+xml"==b?e.document.write("<html>"+a+"</html>"):(a=c?a:btoa(unescape(encodeURIComponent(a))),e.document.write('<html><img style="max-width:100%;" src="data:'+
b+";base64,"+a+'"/></html>')):e.document.write("<html><pre>"+mxUtils.htmlEntities(a,!1)+"</pre></html>"),e.document.close())};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var e=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",e);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),
this.exportDialog=null)});if(null!=this.exportDialog)e.apply(this);else{this.exportDialog=document.createElement("div");var c=b.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding=
"4px 2px 4px 2px";this.exportDialog.style.color="#ffffff";mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=c.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";c=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=c.zIndex;var d=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});d.spin(this.exportDialog);
this.editor.exportToCanvas(mxUtils.bind(this,function(a){d.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var b=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",b);this.exportDialog.appendChild(a);
mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(b.substring(b.indexOf(",")+1),"image/png",!0);e.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",e);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}c.apply(this,
-arguments)};EditorUi.prototype.saveData=function(a,b,c,d,f){this.isLocalFileSave()?this.saveLocalFile(c,a,d,f,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,e){return this.createEchoRequest(c,a,d,f,b,e)}),c,f,d)};EditorUi.prototype.saveRequest=function(a,b,c,d,f,g,m){m=null!=m?m:!mxClient.IS_IOS||!navigator.standalone;var e=this.getServiceCount(!1);isLocalStorage&&e++;var k=4>=e?2:6<e?4:3;a=new CreateDialog(this,a,mxUtils.bind(this,function(a,e){if("_blank"==e||null!=a&&0<a.length){var k=c("_blank"==
+arguments)};EditorUi.prototype.saveData=function(a,b,c,d,f){this.isLocalFileSave()?this.saveLocalFile(c,a,d,f,b):this.saveRequest(a,b,mxUtils.bind(this,function(a,e){return this.createEchoRequest(c,a,d,f,b,e)}),c,f,d)};EditorUi.prototype.saveRequest=function(a,b,c,d,f,g,l){l=null!=l?l:!mxClient.IS_IOS||!navigator.standalone;var e=this.getServiceCount(!1);isLocalStorage&&e++;var k=4>=e?2:6<e?4:3;a=new CreateDialog(this,a,mxUtils.bind(this,function(a,e){if("_blank"==e||null!=a&&0<a.length){var k=c("_blank"==
e?null:a,e==App.MODE_DEVICE||"download"==e||null==e||"_blank"==e?"0":"1");null!=k&&(e==App.MODE_DEVICE||"download"==e||"_blank"==e?k.simulate(document,"_blank"):this.pickFolder(e,mxUtils.bind(this,function(c){g=null!=g?g:"pdf"==b?"application/pdf":"image/"+b;if(null!=d)try{this.exportFile(d,a,g,!0,e,c)}catch(C){this.handleError(C)}else this.spinner.spin(document.body,mxResources.get("saving"))&&k.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=k.getStatus()&&299>=k.getStatus())try{this.exportFile(k.getText(),
-a,g,!0,e,c)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,m,null,1<e,k,d,g,f);e=this.isServices(e)?4<e?390:270:160;this.showDialog(a.container,380,e,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};
-EditorUi.prototype.exportFile=function(a,b,c,d,f,g){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,d,f,g,m,n,y,x,B,z){if(this.spinner.spin(document.body,mxResources.get("export")))try{var e=this.editor.graph.isSelectionEmpty();c=null!=c?c:e;var k=b?null:this.editor.graph.background;k==mxConstants.NONE&&(k=null);null==k&&0==b&&(k=B?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var l=this.editor.graph.getSvg(k,a,m,n,null,c,null,null,"blank"==
-x?"_blank":"self"==x?"_top":null,null,!0,B,z);d&&this.editor.graph.addSvgShadow(l);var p=this.getBaseFilename()+".svg",q=mxUtils.bind(this,function(a){this.spinner.stop();f&&a.setAttribute("content",this.getFileData(!0,null,null,null,c,y,null,null,null,!1));var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):
-this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.editor.addFontCss(l);this.editor.graph.mathEnabled&&this.editor.addMathCss(l);g?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(l,q,this.thumbImageCache)):q(l)}catch(H){this.handleError(H)}};EditorUi.prototype.addRadiobox=function(a,b,c,d,f,g,m){return this.addCheckbox(a,c,d,f,g,m,!0,b)};EditorUi.prototype.addCheckbox=function(a,
-b,c,d,f,g,m,n){g=null!=g?g:!0;var e=document.createElement("input");e.style.marginRight="8px";e.style.marginTop="16px";e.setAttribute("type",m?"radio":"checkbox");m="geCheckbox-"+Editor.guid();e.id=m;null!=n&&e.setAttribute("name",n);c&&(e.setAttribute("checked","checked"),e.defaultChecked=!0);d&&e.setAttribute("disabled","disabled");g&&(a.appendChild(e),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",m),a.appendChild(c),f||mxUtils.br(a));return e};EditorUi.prototype.addEditButton=
+a,g,!0,e,c)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop();this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<e,k,d,g,f);e=this.isServices(e)?4<e?390:270:160;this.showDialog(a.container,380,e,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};
+EditorUi.prototype.exportFile=function(a,b,c,d,f,g){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg=function(a,b,c,d,f,g,l,m,y,x,B,z){if(this.spinner.spin(document.body,mxResources.get("export")))try{var e=this.editor.graph.isSelectionEmpty();c=null!=c?c:e;var k=b?null:this.editor.graph.background;k==mxConstants.NONE&&(k=null);null==k&&0==b&&(k=B?this.editor.graph.defaultPageBackgroundColor:"#ffffff");var n=this.editor.graph.getSvg(k,a,l,m,null,c,null,null,"blank"==
+x?"_blank":"self"==x?"_top":null,null,!0,B,z);d&&this.editor.graph.addSvgShadow(n);var p=this.getBaseFilename()+".svg",q=mxUtils.bind(this,function(a){this.spinner.stop();f&&a.setAttribute("content",this.getFileData(!0,null,null,null,c,y,null,null,null,!1));var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):
+this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.editor.addFontCss(n);this.editor.graph.mathEnabled&&this.editor.addMathCss(n);g?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(n,q,this.thumbImageCache)):q(n)}catch(H){this.handleError(H)}};EditorUi.prototype.addRadiobox=function(a,b,c,d,f,g,l){return this.addCheckbox(a,c,d,f,g,l,!0,b)};EditorUi.prototype.addCheckbox=function(a,
+b,c,d,f,g,l,m){g=null!=g?g:!0;var e=document.createElement("input");e.style.marginRight="8px";e.style.marginTop="16px";e.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();e.id=l;null!=m&&e.setAttribute("name",m);c&&(e.setAttribute("checked","checked"),e.defaultChecked=!0);d&&e.setAttribute("disabled","disabled");g&&(a.appendChild(e),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",l),a.appendChild(c),f||mxUtils.br(a));return e};EditorUi.prototype.addEditButton=
function(a,b){var e=this.addCheckbox(a,mxResources.get("edit")+":",!0,null,!0);e.style.marginLeft="24px";var c=this.getCurrentFile(),d="";null!=c&&c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER&&(d=window.location.href);var k=document.createElement("select");k.style.width="120px";k.style.marginLeft="8px";k.style.marginRight="10px";k.className="geBtn";c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("makeCopy"));k.appendChild(c);c=document.createElement("option");
c.setAttribute("value","custom");mxUtils.write(c,mxResources.get("custom")+"...");k.appendChild(c);a.appendChild(k);mxEvent.addListener(k,"change",mxUtils.bind(this,function(){if("custom"==k.value){var a=new FilenameDialog(this,d,mxResources.get("ok"),function(a){null!=a?d=a:k.value="blank"},mxResources.get("url"),null,null,null,null,function(){k.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(e,"change",mxUtils.bind(this,function(){e.checked&&(null==b||
b.checked)?k.removeAttribute("disabled"):k.setAttribute("disabled","disabled")}));mxUtils.br(a);return{getLink:function(){return e.checked?"blank"===k.value?"_blank":d:null},getEditInput:function(){return e},getEditSelect:function(){return k}}};EditorUi.prototype.addLinkSection=function(a,b){function e(){f.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=k&&k!=mxConstants.NONE?"border:1px solid black;background-color:"+k:"background-position:center center;background-repeat:no-repeat;background-image:url('"+
Dialog.prototype.closeImage+"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var c=document.createElement("select");c.style.width="100px";c.style.marginLeft="8px";c.style.marginRight="10px";c.className="geBtn";var d=document.createElement("option");d.setAttribute("value","auto");mxUtils.write(d,mxResources.get("automatic"));c.appendChild(d);d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("openInNewWindow"));c.appendChild(d);d=document.createElement("option");
d.setAttribute("value","self");mxUtils.write(d,mxResources.get("openInThisWindow"));c.appendChild(d);b&&(d=document.createElement("option"),d.setAttribute("value","frame"),mxUtils.write(d,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),c.appendChild(d));a.appendChild(c);mxUtils.write(a,mxResources.get("borderColor")+":");var k="#0000ff",f=null,f=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(k||"none",function(a){k=a;e()});mxEvent.consume(a)}));e();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";a.appendChild(f);mxUtils.br(a);return{getColor:function(){return k},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createUrlParameters=function(a,b,c,d,f,g,m){m=null!=m?m:[];d&&("1"==urlParams.dev&&m.push("lightbox=1"),"auto"!=
-a&&m.push("target="+a),null!=b&&b!=mxConstants.NONE&&m.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=f&&0<f.length&&m.push("edit="+encodeURIComponent(f)),g&&m.push("layers=1"),this.editor.graph.foldingEnabled&&m.push("nav=1"));c&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&m.push("page-id="+this.currentPage.getId());return m};EditorUi.prototype.createLink=function(a,b,c,d,f,g,m,n,y,x){y=this.createUrlParameters(a,b,c,d,f,g,y);a=this.getCurrentFile();b=
-!0;null!=m?c="#U"+encodeURIComponent(m):(a=this.getCurrentFile(),n||null==a||a.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(c="#"+a.getHash(),b=!1));b&&null!=a&&null!=a.getTitle()&&a.getTitle()!=this.defaultFilename&&y.push("title="+encodeURIComponent(a.getTitle()));x&&1<c.length&&(y.push("open="+c.substring(1)),c="");return(d&&"1"!=urlParams.dev?EditorUi.lightboxHost:
-mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<y.length?"?"+y.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,d,f,g,m,n,y,x,B){this.getBasenames();var e={};""!=f&&f!=mxConstants.NONE&&(e.highlight=f);"auto"!==d&&(e.target=d);y||(e.lightbox=!1);e.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(e.zoom=c/100);c=[];m&&(c.push("pages"),e.resize=!0,null!=this.pages&&
-null!=this.currentPage&&(e.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),e.resize=!0);n&&c.push("layers");0<c.length&&(y&&c.push("lightbox"),e.toolbar=c.join(" "));null!=x&&0<x.length&&(e.edit=x);null!=a?e.url=a:e.xml=this.getFileData(!0,null,null,null,null,!m);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(e))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";
+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";a.appendChild(f);mxUtils.br(a);return{getColor:function(){return k},getTarget:function(){return c.value},focus:function(){c.focus()}}};EditorUi.prototype.createUrlParameters=function(a,b,c,d,f,g,l){l=null!=l?l:[];d&&("1"==urlParams.dev&&l.push("lightbox=1"),"auto"!=
+a&&l.push("target="+a),null!=b&&b!=mxConstants.NONE&&l.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)),null!=f&&0<f.length&&l.push("edit="+encodeURIComponent(f)),g&&l.push("layers=1"),this.editor.graph.foldingEnabled&&l.push("nav=1"));c&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&l.push("page-id="+this.currentPage.getId());return l};EditorUi.prototype.createLink=function(a,b,c,d,f,g,l,m,y,x){y=this.createUrlParameters(a,b,c,d,f,g,y);a=this.getCurrentFile();b=
+!0;null!=l?c="#U"+encodeURIComponent(l):(a=this.getCurrentFile(),m||null==a||a.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(c="#"+a.getHash(),b=!1));b&&null!=a&&null!=a.getTitle()&&a.getTitle()!=this.defaultFilename&&y.push("title="+encodeURIComponent(a.getTitle()));x&&1<c.length&&(y.push("open="+c.substring(1)),c="");return(d&&"1"!=urlParams.dev?EditorUi.lightboxHost:
+mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+"/"+(0<y.length?"?"+y.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,d,f,g,l,m,y,x,B){this.getBasenames();var e={};""!=f&&f!=mxConstants.NONE&&(e.highlight=f);"auto"!==d&&(e.target=d);y||(e.lightbox=!1);e.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(e.zoom=c/100);c=[];l&&(c.push("pages"),e.resize=!0,null!=this.pages&&
+null!=this.currentPage&&(e.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),e.resize=!0);m&&c.push("layers");0<c.length&&(y&&c.push("lightbox"),e.toolbar=c.join(" "));null!=x&&0<x.length&&(e.edit=x);null!=a?e.url=a:e.xml=this.getFileData(!0,null,null,null,null,!l);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(e))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";
B(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,d){var e=document.createElement("div");e.style.whiteSpace="nowrap";var k=document.createElement("h3");mxUtils.write(k,mxResources.get("html"));
k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";e.appendChild(k);var f=document.createElement("div");f.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var g=document.createElement("input");g.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";g.setAttribute("value","url");g.setAttribute("type","radio");g.setAttribute("name","type-embedhtmldialog");k=g.cloneNode(!0);k.setAttribute("value","copy");f.appendChild(k);
-var l=document.createElement("span");mxUtils.write(l,mxResources.get("includeCopyOfMyDiagram"));f.appendChild(l);mxUtils.br(f);f.appendChild(g);l=document.createElement("span");mxUtils.write(l,mxResources.get("publicDiagramUrl"));f.appendChild(l);var m=this.getCurrentFile();null==c&&null!=m&&m.constructor==window.DriveFile&&(l=document.createElement("a"),l.style.paddingLeft="12px",l.style.color="gray",l.style.cursor="pointer",mxUtils.write(l,mxResources.get("share")),f.appendChild(l),mxEvent.addListener(l,
-"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));k.setAttribute("checked","checked");null==c&&g.setAttribute("disabled","disabled");e.appendChild(f);var p=this.addLinkSection(e),n=this.addCheckbox(e,mxResources.get("zoom"),!0,null,!0);mxUtils.write(e,":");var A=document.createElement("input");A.setAttribute("type","text");A.style.marginRight="16px";A.style.width="60px";A.style.marginLeft="4px";A.style.marginRight="12px";A.value="100%";e.appendChild(A);
+var n=document.createElement("span");mxUtils.write(n,mxResources.get("includeCopyOfMyDiagram"));f.appendChild(n);mxUtils.br(f);f.appendChild(g);n=document.createElement("span");mxUtils.write(n,mxResources.get("publicDiagramUrl"));f.appendChild(n);var l=this.getCurrentFile();null==c&&null!=l&&l.constructor==window.DriveFile&&(n=document.createElement("a"),n.style.paddingLeft="12px",n.style.color="gray",n.style.cursor="pointer",mxUtils.write(n,mxResources.get("share")),f.appendChild(n),mxEvent.addListener(n,
+"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(l.getId())})));k.setAttribute("checked","checked");null==c&&g.setAttribute("disabled","disabled");e.appendChild(f);var p=this.addLinkSection(e),m=this.addCheckbox(e,mxResources.get("zoom"),!0,null,!0);mxUtils.write(e,":");var A=document.createElement("input");A.setAttribute("type","text");A.style.marginRight="16px";A.style.width="60px";A.style.marginLeft="4px";A.style.marginRight="12px";A.value="100%";e.appendChild(A);
var C=this.addCheckbox(e,mxResources.get("fit"),!0),f=null!=this.pages&&1<this.pages.length,E=E=this.addCheckbox(e,mxResources.get("allPages"),f,!f),D=this.addCheckbox(e,mxResources.get("layers"),!0),G=this.addCheckbox(e,mxResources.get("lightbox"),!0),H=this.addEditButton(e,G),I=H.getEditInput();I.style.marginBottom="16px";mxEvent.addListener(G,"change",function(){G.checked?I.removeAttribute("disabled"):I.setAttribute("disabled","disabled");I.checked&&G.checked?H.getEditSelect().removeAttribute("disabled"):
-H.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,e,mxUtils.bind(this,function(){d(g.checked?c:null,n.checked,A.value,p.getTarget(),p.getColor(),C.checked,E.checked,D.checked,G.checked,H.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);k.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,d,f,g){var e=document.createElement("div");e.style.whiteSpace="nowrap";var k=document.createElement("h3");mxUtils.write(k,a||mxResources.get("link"));k.style.cssText=
-"width:100%;text-align:center;margin-top:0px;margin-bottom:12px";e.appendChild(k);var l=this.getCurrentFile(),k="https://www.diagrams.net/doc/faq/publish-diagram-as-link";a=0;if(null!=l&&l.constructor==window.DriveFile&&!b){a=80;var k="https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram",m=document.createElement("div");m.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var p=document.createElement("div");
-p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));m.appendChild(p);p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(l.getId())}));p.style.marginTop="12px";p.className="geBtn";m.appendChild(p);e.appendChild(m);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("check"));m.appendChild(p);mxEvent.addListener(p,"click",
-mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var n=null,t=null;if(null!=c||null!=d)a+=30,mxUtils.write(e,mxResources.get("width")+":"),n=document.createElement("input"),n.setAttribute("type","text"),
-n.style.marginRight="16px",n.style.width="50px",n.style.marginLeft="6px",n.style.marginRight="16px",n.style.marginBottom="10px",n.value="100%",e.appendChild(n),mxUtils.write(e,mxResources.get("height")+":"),t=document.createElement("input"),t.setAttribute("type","text"),t.style.width="50px",t.style.marginLeft="6px",t.style.marginBottom="10px",t.value=d+"px",e.appendChild(t),mxUtils.br(e);var u=this.addLinkSection(e,g);c=null!=this.pages&&1<this.pages.length;var E=null;if(null==l||l.constructor!=window.DriveFile||
+H.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,e,mxUtils.bind(this,function(){d(g.checked?c:null,m.checked,A.value,p.getTarget(),p.getColor(),C.checked,E.checked,D.checked,G.checked,H.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);k.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,d,f,g){var e=document.createElement("div");e.style.whiteSpace="nowrap";var k=document.createElement("h3");mxUtils.write(k,a||mxResources.get("link"));k.style.cssText=
+"width:100%;text-align:center;margin-top:0px;margin-bottom:12px";e.appendChild(k);var n=this.getCurrentFile(),k="https://www.diagrams.net/doc/faq/publish-diagram-as-link";a=0;if(null!=n&&n.constructor==window.DriveFile&&!b){a=80;var k="https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram",l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var p=document.createElement("div");
+p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));l.appendChild(p);p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(n.getId())}));p.style.marginTop="12px";p.className="geBtn";l.appendChild(p);e.appendChild(l);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("check"));l.appendChild(p);mxEvent.addListener(p,"click",
+mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,t=null;if(null!=c||null!=d)a+=30,mxUtils.write(e,mxResources.get("width")+":"),m=document.createElement("input"),m.setAttribute("type","text"),
+m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",e.appendChild(m),mxUtils.write(e,mxResources.get("height")+":"),t=document.createElement("input"),t.setAttribute("type","text"),t.style.width="50px",t.style.marginLeft="6px",t.style.marginBottom="10px",t.value=d+"px",e.appendChild(t),mxUtils.br(e);var u=this.addLinkSection(e,g);c=null!=this.pages&&1<this.pages.length;var E=null;if(null==n||n.constructor!=window.DriveFile||
b)E=this.addCheckbox(e,mxResources.get("allPages"),c,!c);var D=this.addCheckbox(e,mxResources.get("lightbox"),!0,null,null,!g),G=this.addEditButton(e,D),H=G.getEditInput();g&&(H.style.marginLeft=D.style.marginLeft,D.style.display="none",a-=30);var I=this.addCheckbox(e,mxResources.get("layers"),!0);I.style.marginLeft=H.style.marginLeft;I.style.marginBottom="16px";I.style.marginTop="8px";mxEvent.addListener(D,"change",function(){D.checked?(I.removeAttribute("disabled"),H.removeAttribute("disabled")):
-(I.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"));H.checked&&D.checked?G.getEditSelect().removeAttribute("disabled"):G.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,e,mxUtils.bind(this,function(){f(u.getTarget(),u.getColor(),null==E?!0:E.checked,D.checked,G.getLink(),I.checked,null!=n?n.value:null,null!=t?t.value:null)}),null,mxResources.get("create"),k);this.showDialog(b.container,340,254+a,!0,!0);null!=n?(n.focus(),mxClient.IS_GC||mxClient.IS_FF||
-5<=document.documentMode?n.select():document.execCommand("selectAll",!1,null)):u.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,d,f){var e=document.createElement("div");e.style.whiteSpace="nowrap";var k=document.createElement("h3");mxUtils.write(k,mxResources.get("image"));k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(f?"10":"4")+"px";e.appendChild(k);if(f){mxUtils.write(e,mxResources.get("zoom")+":");var g=document.createElement("input");g.setAttribute("type",
-"text");g.style.marginRight="16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";e.appendChild(g);mxUtils.write(e,mxResources.get("borderWidth")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.value=this.lastExportBorder||"0";e.appendChild(l);mxUtils.br(e)}var m=this.addCheckbox(e,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),
-p=d?null:this.addCheckbox(e,mxResources.get("includeCopyOfMyDiagram"),!0),k=this.editor.graph,n=d?null:this.addCheckbox(e,mxResources.get("transparentBackground"),k.background==mxConstants.NONE||null==k.background);null!=n&&(n.style.marginBottom="16px");a=new CustomDialog(this,e,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,b=parseInt(l.value)||0;c(!m.checked,null!=p?p.checked:!1,null!=n?n.checked:!1,a,b)}),null,a,b);this.showDialog(a.container,300,(f?25:0)+(d?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
-function(a,b,c,d,f,g,m,n,y){m=null!=m?m:!0;var e=document.createElement("div");e.style.whiteSpace="nowrap";var k=this.editor.graph,l="jpeg"==n?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";e.appendChild(p);mxUtils.write(e,mxResources.get("zoom")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight=
-"12px";q.value=this.lastExportZoom||"100%";e.appendChild(q);mxUtils.write(e,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.value=this.lastExportBorder||"0";e.appendChild(t);mxUtils.br(e);var u=this.addCheckbox(e,mxResources.get("selectionOnly"),!1,k.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft=
-"24px";v.setAttribute("disabled","disabled");v.setAttribute("type","checkbox");var H=document.createElement("select");H.style.marginTop="16px";H.style.marginLeft="8px";a=["selectionOnly","diagram","page"];for(p=0;p<a.length;p++)if(!k.isSelectionEmpty()||"selectionOnly"!=a[p]){var I=document.createElement("option");mxUtils.write(I,mxResources.get(a[p]));I.setAttribute("value",a[p]);H.appendChild(I)}y?(mxUtils.write(e,mxResources.get("size")+":"),e.appendChild(H),mxUtils.br(e),l+=26,mxEvent.addListener(H,
-"change",function(){"selectionOnly"==H.value&&(u.checked=!0)})):g&&(e.appendChild(v),mxUtils.write(e,mxResources.get("crop")),mxUtils.br(e),l+=26,mxEvent.addListener(u,"change",function(){u.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));k.isSelectionEmpty()?y&&(u.style.display="none",u.nextSibling.style.display="none",u.nextSibling.nextSibling.style.display="none",l-=26):(H.value="diagram",v.setAttribute("checked","checked"),v.defaultChecked=!0,mxEvent.addListener(u,
-"change",function(){H.value=u.checked?"selectionOnly":"diagram"}));var J=this.addCheckbox(e,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=n),F=null;"dark"==uiTheme&&(F=this.addCheckbox(e,mxResources.get("dark"),!0),l+=26);var M=this.addCheckbox(e,mxResources.get("shadow"),k.shadowVisible),L=document.createElement("input");L.style.marginTop="16px";L.style.marginRight="8px";L.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||L.setAttribute("disabled","disabled");
-b&&(e.appendChild(L),mxUtils.write(e,mxResources.get("embedImages")),mxUtils.br(e),l+=26);var N=null;if("png"==n||"jpeg"==n)N=this.addCheckbox(e,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),l+=26;var Z=this.addCheckbox(e,mxResources.get("includeCopyOfMyDiagram"),m,null,null,"jpeg"!=n);Z.style.marginBottom="16px";var K=document.createElement("select");K.style.maxWidth="260px";K.style.marginLeft="8px";K.style.marginRight="10px";K.className="geBtn";b=document.createElement("option");
-b.setAttribute("value","auto");mxUtils.write(b,mxResources.get("automatic"));K.appendChild(b);b=document.createElement("option");b.setAttribute("value","blank");mxUtils.write(b,mxResources.get("openInNewWindow"));K.appendChild(b);b=document.createElement("option");b.setAttribute("value","self");mxUtils.write(b,mxResources.get("openInThisWindow"));K.appendChild(b);"svg"==n&&(mxUtils.write(e,mxResources.get("links")+":"),e.appendChild(K),mxUtils.br(e),mxUtils.br(e),l+=26);c=new CustomDialog(this,e,
-mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=q.value;f(q.value,J.checked,!u.checked,M.checked,Z.checked,L.checked,t.value,v.checked,!1,K.value,null!=N?N.checked:null,null!=F?F.checked:null,H.value)}),null,c,d);this.showDialog(c.container,340,l,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,d,f){var e=document.createElement("div");
-e.style.whiteSpace="nowrap";var k=this.editor.graph;if(null!=b){var g=document.createElement("h3");mxUtils.write(g,b);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";e.appendChild(g)}var l=this.addCheckbox(e,mxResources.get("fit"),!0),m=this.addCheckbox(e,mxResources.get("shadow"),k.shadowVisible&&d,!d),p=this.addCheckbox(e,c),n=this.addCheckbox(e,mxResources.get("lightbox"),!0),u=this.addEditButton(e,n),C=u.getEditInput(),E=1<k.model.getChildCount(k.model.getRoot()),
-D=this.addCheckbox(e,mxResources.get("layers"),E,!E);D.style.marginLeft=C.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(n,"change",function(){n.checked?(E&&D.removeAttribute("disabled"),C.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"));C.checked&&n.checked?u.getEditSelect().removeAttribute("disabled"):u.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,e,mxUtils.bind(this,
-function(){a(l.checked,m.checked,p.checked,n.checked,u.getLink(),D.checked)}),null,mxResources.get("embed"),f);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,f,g,m,n){function e(b){var e=" ",p="";d&&(e=" 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!=l?"&page="+l:"")+(f?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");var n="";c&&(n=' width="'+Math.round(k.width)+'" height="'+Math.round(k.height)+'"');m('<img src="'+b+'"'+n+(""!=p?' style="'+p+'"':"")+e+"/>")}var k=this.editor.graph.getGraphBounds(),l=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(a){var b=d?this.getFileData(!0):null;a=
-this.createImageDataUri(a,b,"png");e(a)}),null,null,null,mxUtils.bind(this,function(a){n({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b,null,null,Editor.defaultBorder);else if(b=this.getFileData(!0),k.width*k.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var p="";c&&(p="&w="+Math.round(2*k.width)+"&h="+Math.round(2*k.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(d?"1":"0")+p+"&xml="+encodeURIComponent(b));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&
-299>=q.getStatus()?e("data:image/png;base64,"+q.getText()):n({message:mxResources.get("unknownError")})}))}else n({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(a,b,c,d,f,g,m){var e=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!c),k=e.getElementsByTagName("a");if(null!=k)for(var l=0;l<k.length;l++){var p=k[l].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==k[l].getAttribute("target")&&k[l].removeAttribute("target")}d&&
-e.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(e);if(c){var n=" ",q="";d&&(n="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"+(f?"&edit=_blank":"")+(g?"&layers=1":
-"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.editor.convertImages(e,mxUtils.bind(this,function(a){m('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+n+"/>")}))}else q="",d&&(b=this.getSelectedPageIndex(),e.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('"+
-EditorUi.lightboxHost+"/?client=1"+(null!=b?"&page="+b:"")+(f?"&edit=_blank":"")+(g?"&layers=1":"")+"');}}})(this);"),q+="cursor:pointer;"),a&&(a=parseInt(e.getAttribute("width")),f=parseInt(e.getAttribute("height")),e.setAttribute("viewBox","-0.5 -0.5 "+a+" "+f),q+="max-width:100%;max-height:"+f+"px;",e.removeAttribute("height")),""!=q&&e.setAttribute("style",q),this.editor.addFontCss(e),this.editor.graph.mathEnabled&&this.editor.addMathCss(e),m(mxUtils.getXml(e))};EditorUi.prototype.timeSince=function(a){a=
+(I.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"));H.checked&&D.checked?G.getEditSelect().removeAttribute("disabled"):G.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,e,mxUtils.bind(this,function(){f(u.getTarget(),u.getColor(),null==E?!0:E.checked,D.checked,G.getLink(),I.checked,null!=m?m.value:null,null!=t?t.value:null)}),null,mxResources.get("create"),k);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||
+5<=document.documentMode?m.select():document.execCommand("selectAll",!1,null)):u.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,d,f){var e=document.createElement("div");e.style.whiteSpace="nowrap";var k=document.createElement("h3");mxUtils.write(k,mxResources.get("image"));k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(f?"10":"4")+"px";e.appendChild(k);if(f){mxUtils.write(e,mxResources.get("zoom")+":");var g=document.createElement("input");g.setAttribute("type",
+"text");g.style.marginRight="16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";e.appendChild(g);mxUtils.write(e,mxResources.get("borderWidth")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.value=this.lastExportBorder||"0";e.appendChild(n);mxUtils.br(e)}var l=this.addCheckbox(e,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),
+p=d?null:this.addCheckbox(e,mxResources.get("includeCopyOfMyDiagram"),!0),k=this.editor.graph,m=d?null:this.addCheckbox(e,mxResources.get("transparentBackground"),k.background==mxConstants.NONE||null==k.background);null!=m&&(m.style.marginBottom="16px");a=new CustomDialog(this,e,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,b=parseInt(n.value)||0;c(!l.checked,null!=p?p.checked:!1,null!=m?m.checked:!1,a,b)}),null,a,b);this.showDialog(a.container,300,(f?25:0)+(d?125:210),!0,!0)};EditorUi.prototype.showExportDialog=
+function(a,b,c,d,f,g,l,m,y){l=null!=l?l:!0;var e=document.createElement("div");e.style.whiteSpace="nowrap";var k=this.editor.graph,n="jpeg"==m?196:300,p=document.createElement("h3");mxUtils.write(p,a);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";e.appendChild(p);mxUtils.write(e,mxResources.get("zoom")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.style.marginRight=
+"12px";t.value=this.lastExportZoom||"100%";e.appendChild(t);mxUtils.write(e,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";e.appendChild(u);mxUtils.br(e);var q=this.addCheckbox(e,mxResources.get("selectionOnly"),!1,k.isSelectionEmpty()),v=document.createElement("input");v.style.marginTop="16px";v.style.marginRight="8px";v.style.marginLeft=
+"24px";v.setAttribute("disabled","disabled");v.setAttribute("type","checkbox");var H=document.createElement("select");H.style.marginTop="16px";H.style.marginLeft="8px";a=["selectionOnly","diagram","page"];for(p=0;p<a.length;p++)if(!k.isSelectionEmpty()||"selectionOnly"!=a[p]){var I=document.createElement("option");mxUtils.write(I,mxResources.get(a[p]));I.setAttribute("value",a[p]);H.appendChild(I)}y?(mxUtils.write(e,mxResources.get("size")+":"),e.appendChild(H),mxUtils.br(e),n+=26,mxEvent.addListener(H,
+"change",function(){"selectionOnly"==H.value&&(q.checked=!0)})):g&&(e.appendChild(v),mxUtils.write(e,mxResources.get("crop")),mxUtils.br(e),n+=26,mxEvent.addListener(q,"change",function(){q.checked?v.removeAttribute("disabled"):v.setAttribute("disabled","disabled")}));k.isSelectionEmpty()?y&&(q.style.display="none",q.nextSibling.style.display="none",q.nextSibling.nextSibling.style.display="none",n-=26):(H.value="diagram",v.setAttribute("checked","checked"),v.defaultChecked=!0,mxEvent.addListener(q,
+"change",function(){H.value=q.checked?"selectionOnly":"diagram"}));var J=this.addCheckbox(e,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=m),F=null;"dark"==uiTheme&&(F=this.addCheckbox(e,mxResources.get("dark"),!0),n+=26);var M=this.addCheckbox(e,mxResources.get("shadow"),k.shadowVisible),L=document.createElement("input");L.style.marginTop="16px";L.style.marginRight="8px";L.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||L.setAttribute("disabled","disabled");
+b&&(e.appendChild(L),mxUtils.write(e,mxResources.get("embedImages")),mxUtils.br(e),n+=26);var N=null;if("png"==m||"jpeg"==m)N=this.addCheckbox(e,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),n+=26;var Z=this.addCheckbox(e,mxResources.get("includeCopyOfMyDiagram"),l,null,null,"jpeg"!=m);Z.style.marginBottom="16px";var K=document.createElement("select");K.style.maxWidth="260px";K.style.marginLeft="8px";K.style.marginRight="10px";K.className="geBtn";b=document.createElement("option");
+b.setAttribute("value","auto");mxUtils.write(b,mxResources.get("automatic"));K.appendChild(b);b=document.createElement("option");b.setAttribute("value","blank");mxUtils.write(b,mxResources.get("openInNewWindow"));K.appendChild(b);b=document.createElement("option");b.setAttribute("value","self");mxUtils.write(b,mxResources.get("openInThisWindow"));K.appendChild(b);"svg"==m&&(mxUtils.write(e,mxResources.get("links")+":"),e.appendChild(K),mxUtils.br(e),mxUtils.br(e),n+=26);c=new CustomDialog(this,e,
+mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=t.value;f(t.value,J.checked,!q.checked,M.checked,Z.checked,L.checked,u.value,v.checked,!1,K.value,null!=N?N.checked:null,null!=F?F.checked:null,H.value)}),null,c,d);this.showDialog(c.container,340,n,!0,!0,null,null,null,null,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a,b,c,d,f){var e=document.createElement("div");
+e.style.whiteSpace="nowrap";var k=this.editor.graph;if(null!=b){var g=document.createElement("h3");mxUtils.write(g,b);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";e.appendChild(g)}var n=this.addCheckbox(e,mxResources.get("fit"),!0),l=this.addCheckbox(e,mxResources.get("shadow"),k.shadowVisible&&d,!d),p=this.addCheckbox(e,c),m=this.addCheckbox(e,mxResources.get("lightbox"),!0),u=this.addEditButton(e,m),C=u.getEditInput(),E=1<k.model.getChildCount(k.model.getRoot()),
+D=this.addCheckbox(e,mxResources.get("layers"),E,!E);D.style.marginLeft=C.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(m,"change",function(){m.checked?(E&&D.removeAttribute("disabled"),C.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"));C.checked&&m.checked?u.getEditSelect().removeAttribute("disabled"):u.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,e,mxUtils.bind(this,
+function(){a(n.checked,l.checked,p.checked,m.checked,u.getLink(),D.checked)}),null,mxResources.get("embed"),f);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,f,g,l,m){function e(b){var e=" ",p="";d&&(e=" 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!=n?"&page="+n:"")+(f?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");var m="";c&&(m=' width="'+Math.round(k.width)+'" height="'+Math.round(k.height)+'"');l('<img src="'+b+'"'+m+(""!=p?' style="'+p+'"':"")+e+"/>")}var k=this.editor.graph.getGraphBounds(),n=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(a){var b=d?this.getFileData(!0):null;a=
+this.createImageDataUri(a,b,"png");e(a)}),null,null,null,mxUtils.bind(this,function(a){m({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b,null,null,Editor.defaultBorder);else if(b=this.getFileData(!0),k.width*k.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var p="";c&&(p="&w="+Math.round(2*k.width)+"&h="+Math.round(2*k.height));var t=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(d?"1":"0")+p+"&xml="+encodeURIComponent(b));t.send(mxUtils.bind(this,function(){200<=t.getStatus()&&
+299>=t.getStatus()?e("data:image/png;base64,"+t.getText()):m({message:mxResources.get("unknownError")})}))}else m({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(a,b,c,d,f,g,l){var e=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!c),k=e.getElementsByTagName("a");if(null!=k)for(var n=0;n<k.length;n++){var p=k[n].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==k[n].getAttribute("target")&&k[n].removeAttribute("target")}d&&
+e.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(e);if(c){var m=" ",t="";d&&(m="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"+(f?"&edit=_blank":"")+(g?"&layers=1":
+"")+"');}})(this);\"",t+="cursor:pointer;");a&&(t+="max-width:100%;");this.editor.convertImages(e,mxUtils.bind(this,function(a){l('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=t?' style="'+t+'"':"")+m+"/>")}))}else t="",d&&(b=this.getSelectedPageIndex(),e.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('"+
+EditorUi.lightboxHost+"/?client=1"+(null!=b?"&page="+b:"")+(f?"&edit=_blank":"")+(g?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),a&&(a=parseInt(e.getAttribute("width")),f=parseInt(e.getAttribute("height")),e.setAttribute("viewBox","-0.5 -0.5 "+a+" "+f),t+="max-width:100%;max-height:"+f+"px;",e.removeAttribute("height")),""!=t&&e.setAttribute("style",t),this.editor.addFontCss(e),this.editor.graph.mathEnabled&&this.editor.addMathCss(e),l(mxUtils.getXml(e))};EditorUi.prototype.timeSince=function(a){a=
Math.floor((new Date-a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years");b=Math.floor(a/2592E3);if(1<b)return b+" "+mxResources.get("months");b=Math.floor(a/86400);if(1<b)return b+" "+mxResources.get("days");b=Math.floor(a/3600);if(1<b)return b+" "+mxResources.get("hours");b=Math.floor(a/60);return 1<b?b+" "+mxResources.get("minutes"):1==b?b+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var e=null;if("diagram"==a.nodeName)e=
a;else if("mxfile"==a.nodeName){var c=a.getElementsByTagName("diagram");if(0<c.length){var e=c[0],d=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?e.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:d.apply(this,arguments)}}}null!=e&&(a=Editor.parseDiagramNode(e))}c=this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(t){}finally{this.editor.graph=c}return a};EditorUi.prototype.getPngFileProperties=function(a){var b=1,e=0;if(null!=
a){if(a.hasAttribute("scale")){var c=parseFloat(a.getAttribute("scale"));!isNaN(c)&&0<c&&(b=c)}a.hasAttribute("border")&&(c=parseInt(a.getAttribute("border")),!isNaN(c)&&0<c&&(e=c))}return{scale:b,border:e}};EditorUi.prototype.getEmbeddedPng=function(a,b,c,d,f){try{var e=this.editor.graph,k=null!=e.themes&&"darkTheme"==e.defaultThemeName,g=null;if(null!=c&&0<c.length)e=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(e.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,
-!0),e),g=c;else if(k||null!=this.pages&&this.currentPage!=this.pages[0]){var e=this.createTemporaryGraph(e.getStylesheet()),l=e.getGlobalVariable,m=this.pages[0];e.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?1:l.apply(this,arguments)};document.body.appendChild(e.container);e.model.setRoot(m.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(c){try{null==g&&(g=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var d=c.toDataURL("image/png"),d=Editor.writeGraphModelToPng(d,
-"tEXt","mxfile",encodeURIComponent(g));a(d.substring(d.lastIndexOf(",")+1));e!=this.editor.graph&&e.container.parentNode.removeChild(e.container)}catch(A){null!=b&&b(A)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,d,null,e.shadowVisible,null,e,f)}catch(B){null!=b&&b(B)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,f,g,m,n,y,x,B,z,A){n=null!=n?n:!0;m=null!=y?y:b.background;m==mxConstants.NONE&&(m=null);g=b.getSvg(m,x,B,null,null,g,null,null,null,b.shadowVisible||
-z,null,A);(b.shadowVisible||z)&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=c&&g.setAttribute("resource",c);if(null!=f)this.embedFonts(g,mxUtils.bind(this,function(a){n?this.editor.convertImages(a,mxUtils.bind(this,function(a){f((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))})):f((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
-mxUtils.getXml(a))}));else return(d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.embedFonts=function(a,b){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(a,this.editor.resolvedFontCss),this.editor.embedExtFonts(mxUtils.bind(this,function(e){try{null!=e&&this.editor.addFontCss(a,e),b(a)}catch(p){b(a)}}))}catch(l){b(a)}}))};
-EditorUi.prototype.exportImage=function(a,b,c,d,f,g,m,n,y,x,B,z,A){y=null!=y?y:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var e=this.editor.graph.isSelectionEmpty();c=null!=c?c:e;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();try{this.saveCanvas(a,f?this.getFileData(!0,null,null,null,c,n):null,y,null==this.pages||0==this.pages.length,B)}catch(D){this.handleError(D)}}),null,this.thumbImageCache,
-null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,m,x,z,A)}catch(E){this.spinner.stop(),this.handleError(E)}}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.importXml=function(a,b,c,d,f,g){b=null!=b?b:0;c=null!=c?c:0;var e=[];try{var k=this.editor.graph;if(null!=a&&0<a.length){k.model.beginUpdate();try{var l=mxUtils.parseXml(a);a={};var m=this.editor.extractGraphModel(l.documentElement,
-null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var p=m.getElementsByTagName("diagram");if(1==p.length&&!g){if(m=Editor.parseDiagramNode(p[0]),null!=this.currentPage&&(a[p[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1]))){var n=p[0].getAttribute("name");null!=n&&""!=n&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,n))}}else if(0<
-p.length){g=[];var u=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(a[p[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(p[0]),d=!1,u=1);for(;u<p.length;u++){var t=p[u].getAttribute("id");p[u].removeAttribute("id");var E=this.updatePageRoot(new DiagramPage(p[u]));a[t]=p[u].getAttribute("id");var D=this.pages.length;null==E.getName()&&E.setName(mxResources.get("pageWithNumber",[D+1]));k.model.execute(new ChangePage(this,E,E,D,!0));g.push(E)}this.updatePageLinks(a,
-g)}}if(null!=m&&"mxGraphModel"===m.nodeName&&(e=k.importGraphModel(m,b,c,d),null!=e))for(u=0;u<e.length;u++)this.updatePageLinksForCell(a,e[u])}finally{k.model.endUpdate()}}}catch(G){if(f)throw G;this.handleError(G)}return e};EditorUi.prototype.updatePageLinks=function(a,b){for(var e=0;e<b.length;e++)this.updatePageLinksForCell(a,b[e].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var e=document.createElement("div"),c=this.editor.graph,d=c.getLinkForCell(b);null!=d&&c.setLinkForCell(b,
+!0),e),g=c;else if(k||null!=this.pages&&this.currentPage!=this.pages[0]){var e=this.createTemporaryGraph(e.getStylesheet()),n=e.getGlobalVariable,l=this.pages[0];e.getGlobalVariable=function(a){return"page"==a?l.getName():"pagenumber"==a?1:n.apply(this,arguments)};document.body.appendChild(e.container);e.model.setRoot(l.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(c){try{null==g&&(g=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var d=c.toDataURL("image/png"),d=Editor.writeGraphModelToPng(d,
+"tEXt","mxfile",encodeURIComponent(g));a(d.substring(d.lastIndexOf(",")+1));e!=this.editor.graph&&e.container.parentNode.removeChild(e.container)}catch(A){null!=b&&b(A)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,d,null,e.shadowVisible,null,e,f)}catch(B){null!=b&&b(B)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,f,g,l,m,y,x,B,z,A){m=null!=m?m:!0;l=null!=y?y:b.background;l==mxConstants.NONE&&(l=null);g=b.getSvg(l,x,B,null,null,g,null,null,null,b.shadowVisible||
+z,null,A);(b.shadowVisible||z)&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=c&&g.setAttribute("resource",c);if(null!=f)this.embedFonts(g,mxUtils.bind(this,function(a){m?this.editor.convertImages(a,mxUtils.bind(this,function(a){f((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))})):f((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+
+mxUtils.getXml(a))}));else return(d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.embedFonts=function(a,b){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(a,this.editor.resolvedFontCss),this.editor.embedExtFonts(mxUtils.bind(this,function(e){try{null!=e&&this.editor.addFontCss(a,e),b(a)}catch(p){b(a)}}))}catch(n){b(a)}}))};
+EditorUi.prototype.exportImage=function(a,b,c,d,f,g,l,m,y,x,B,z,A){y=null!=y?y:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var e=this.editor.graph.isSelectionEmpty();c=null!=c?c:e;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop();try{this.saveCanvas(a,f?this.getFileData(!0,null,null,null,c,m):null,y,null==this.pages||0==this.pages.length,B)}catch(D){this.handleError(D)}}),null,this.thumbImageCache,
+null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,l,x,z,A)}catch(E){this.spinner.stop(),this.handleError(E)}}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.importXml=function(a,b,c,d,f,g){b=null!=b?b:0;c=null!=c?c:0;var e=[];try{var k=this.editor.graph;if(null!=a&&0<a.length){k.model.beginUpdate();try{var n=mxUtils.parseXml(a);a={};var l=this.editor.extractGraphModel(n.documentElement,
+null!=this.pages);if(null!=l&&"mxfile"==l.nodeName&&null!=this.pages){var m=l.getElementsByTagName("diagram");if(1==m.length&&!g){if(l=Editor.parseDiagramNode(m[0]),null!=this.currentPage&&(a[m[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",[1]))){var p=m[0].getAttribute("name");null!=p&&""!=p&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,p))}}else if(0<
+m.length){g=[];var u=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(a[m[0].getAttribute("id")]=this.pages[0].getId(),l=Editor.parseDiagramNode(m[0]),d=!1,u=1);for(;u<m.length;u++){var t=m[u].getAttribute("id");m[u].removeAttribute("id");var E=this.updatePageRoot(new DiagramPage(m[u]));a[t]=m[u].getAttribute("id");var D=this.pages.length;null==E.getName()&&E.setName(mxResources.get("pageWithNumber",[D+1]));k.model.execute(new ChangePage(this,E,E,D,!0));g.push(E)}this.updatePageLinks(a,
+g)}}if(null!=l&&"mxGraphModel"===l.nodeName&&(e=k.importGraphModel(l,b,c,d),null!=e))for(u=0;u<e.length;u++)this.updatePageLinksForCell(a,e[u])}finally{k.model.endUpdate()}}}catch(G){if(f)throw G;this.handleError(G)}return e};EditorUi.prototype.updatePageLinks=function(a,b){for(var e=0;e<b.length;e++)this.updatePageLinksForCell(a,b[e].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var e=document.createElement("div"),c=this.editor.graph,d=c.getLinkForCell(b);null!=d&&c.setLinkForCell(b,
this.updatePageLink(a,d));if(c.isHtmlLabel(b)){e.innerHTML=c.sanitizeHtml(c.getLabel(b));for(var f=e.getElementsByTagName("a"),k=!1,g=0;g<f.length;g++)d=f[g].getAttribute("href"),null!=d&&(f[g].setAttribute("href",this.updatePageLink(a,d)),k=!0);k&&c.labelChanged(b,e.innerHTML)}for(g=0;g<c.model.getChildCount(b);g++)this.updatePageLinksForCell(a,c.model.getChildAt(b,g))};EditorUi.prototype.updatePageLink=function(a,b){if("data:page/id,"==b.substring(0,13)){var e=a[b.substring(b.indexOf(",")+1)];b=
null!=e?"data:page/id,"+e:null}else if("data:action/json,"==b.substring(0,17))try{var c=JSON.parse(b.substring(17));if(null!=c.actions){for(var d=0;d<c.actions.length;d++){var f=c.actions[d];null!=f.open&&"data:page/id,"==f.open.substring(0,13)&&(e=a[f.open.substring(f.open.indexOf(",")+1)],null!=e?f.open="data:page/id,"+e:delete f.open)}b="data:action/json,"+JSON.stringify(c)}}catch(q){}return b};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};
EditorUi.prototype.importVisio=function(a,b,c,d){d=null!=d?d:a.name;c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var e=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var e=this.isRemoteVisioFormat(d);try{var f="UNKNOWN-VISIO",k=d.lastIndexOf(".");if(0<=k&&k<d.length)f=d.substring(k+1).toUpperCase();else{var g=d.lastIndexOf("/");0<=g&&g<d.length&&(d=d.substring(g+1))}EditorUi.logEvent({category:f+"-MS-IMPORT-FILE",action:"filename_"+d,label:e?"remote":
-"local"})}catch(B){}if(e)if(null==VSD_CONVERT_URL||this.isOffline())c({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{e=new FormData;e.append("file1",a,d);var l=new XMLHttpRequest;l.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(d)?"?stencil=1":""));l.responseType="blob";this.addRemoteServiceSecurityCheck(l);l.onreadystatechange=mxUtils.bind(this,function(){if(4==l.readyState)if(200<=l.status&&299>=l.status)try{var a=
-l.response;if("text/xml"==a.type){var e=new FileReader;e.onload=mxUtils.bind(this,function(a){try{b(a.target.result)}catch(C){c({message:mxResources.get("errorLoadingFile")})}});e.readAsText(a)}else this.doImportVisio(a,b,c,d)}catch(A){c(A)}else try{""==l.responseType||"text"==l.responseType?c({message:l.responseText}):(e=new FileReader,e.onload=function(){c({message:JSON.parse(e.result).Message})},e.readAsText(l.response))}catch(A){c({})}});l.send(e)}else try{this.doImportVisio(a,b,c,d)}catch(B){c(B)}}else this.spinner.stop(),
+"local"})}catch(B){}if(e)if(null==VSD_CONVERT_URL||this.isOffline())c({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{e=new FormData;e.append("file1",a,d);var n=new XMLHttpRequest;n.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(d)?"?stencil=1":""));n.responseType="blob";this.addRemoteServiceSecurityCheck(n);n.onreadystatechange=mxUtils.bind(this,function(){if(4==n.readyState)if(200<=n.status&&299>=n.status)try{var a=
+n.response;if("text/xml"==a.type){var e=new FileReader;e.onload=mxUtils.bind(this,function(a){try{b(a.target.result)}catch(C){c({message:mxResources.get("errorLoadingFile")})}});e.readAsText(a)}else this.doImportVisio(a,b,c,d)}catch(A){c(A)}else try{""==n.responseType||"text"==n.responseType?c({message:n.responseText}):(e=new FileReader,e.onload=function(){c({message:JSON.parse(e.result).Message})},e.readAsText(n.response))}catch(A){c({})}});n.send(e)}else try{this.doImportVisio(a,b,c,d)}catch(B){c(B)}}else this.spinner.stop(),
this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var e=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a,b,c)}catch(u){c(u)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});
this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(k){this.handleError(k)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});
"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var e=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter){try{EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+a.length}),EditorUi.debug("convertLucidChart",a)}catch(u){}try{b(LucidImporter.importState(JSON.parse(a)))}catch(u){null!=window.console&&
@@ -10278,13 +10278,13 @@ console.error(u),c(u)}}else c({message:mxResources.get("serviceUnavailableOrBloc
!1,mermaid.mermaidAPI.initialize(b),mermaid.mermaidAPI.render("geMermaidOutput-"+(new Date).getTime(),a,function(a){try{if(mxClient.IS_IE||mxClient.IS_IE11)a=a.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var b=mxUtils.parseXml(a).getElementsByTagName("svg");if(0<b.length){var f=parseFloat(b[0].getAttribute("width")),k=parseFloat(b[0].getAttribute("height"));if(isNaN(f)||isNaN(k))try{var g=b[0].getAttribute("viewBox").split(/\s+/),
f=parseFloat(g[2]),k=parseFloat(g[3])}catch(z){f=f||100,k=k||100}c(e.convertDataUri(Editor.createSvgDataUri(a)),f,k)}else d({message:mxResources.get("invalidInput")})}catch(z){d(z)}})}catch(q){d(q)}};"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?f():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",f):mxscript("js/extensions.min.js",f))};EditorUi.prototype.generatePlantUmlImage=function(a,b,c,d){function e(a,b,e){c1=a>>2;c2=(a&3)<<4|b>>4;c3=(b&
15)<<2|e>>6;c4=e&63;r="";r+=f(c1&63);r+=f(c2&63);r+=f(c3&63);return r+=f(c4&63)}function f(a){if(10>a)return String.fromCharCode(48+a);a-=10;if(26>a)return String.fromCharCode(65+a);a-=26;if(26>a)return String.fromCharCode(97+a);a-=26;return 0==a?"-":1==a?"_":"?"}var k=new XMLHttpRequest;k.open("GET",("txt"==b?PLANT_URL+"/txt/":"png"==b?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(a){r="";for(i=0;i<a.length;i+=3)r=i+2==a.length?r+e(a.charCodeAt(i),a.charCodeAt(i+1),0):i+1==a.length?r+e(a.charCodeAt(i),
-0,0):r+e(a.charCodeAt(i),a.charCodeAt(i+1),a.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(a))),!0);"txt"!=b&&(k.responseType="blob");k.onload=function(a){if(200<=this.status&&300>this.status)if("txt"==b)c(this.response);else{var e=new FileReader;e.readAsDataURL(this.response);e.onloadend=function(a){var b=new Image;b.onload=function(){try{var a=b.width,f=b.height;if(0==a&&0==f){var k=e.result,g=k.indexOf(","),l=decodeURIComponent(escape(atob(k.substring(g+1)))),m=mxUtils.parseXml(l).getElementsByTagName("svg");
-0<m.length&&(a=parseFloat(m[0].getAttribute("width")),f=parseFloat(m[0].getAttribute("height")))}c(e.result,a,f)}catch(H){d(H)}};b.src=e.result};e.onerror=function(a){d(a)}}else d(a)};k.onerror=function(a){d(a)};k.send()};EditorUi.prototype.insertAsPreText=function(a,b,c){var e=this.editor.graph,d=null;e.getModel().beginUpdate();try{d=e.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=left;verticalAlign=top;"),e.updateCellSize(d,!0)}finally{e.getModel().endUpdate()}return d};EditorUi.prototype.insertTextAt=
-function(a,b,c,d,f,g,m,n){g=null!=g?g:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(f||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var e=
-this.editor.graph;if("data:application/pdf;base64,"==a.substring(0,28)){var k=Editor.extractGraphModelFromPdf(a);if(null!=k&&0<k.length)return this.importXml(k,b,c,g,!0,n)}if("data:image/png;base64,"==a.substring(0,22)&&(k=this.extractGraphModelFromPng(a),null!=k&&0<k.length))return this.importXml(k,b,c,g,!0,n);if("data:image/svg+xml;"==a.substring(0,19))try{k=null;"data:image/svg+xml;base64,"==a.substring(0,26)?(k=a.substring(a.indexOf(",")+1),k=window.atob&&!mxClient.IS_SF?atob(k):Base64.decode(k,
-!0)):k=decodeURIComponent(a.substring(a.indexOf(",")+1));var l=this.importXml(k,b,c,g,!0,n);if(0<l.length)return l}catch(A){}this.loadImage(a,mxUtils.bind(this,function(d){if("data:"==a.substring(0,5))this.resizeImage(d,a,mxUtils.bind(this,function(a,d,f){e.setSelectionCell(e.insertVertex(null,null,"",e.snap(b),e.snap(c),d,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(a)+";"))}),m,this.maxImageSize);
+0,0):r+e(a.charCodeAt(i),a.charCodeAt(i+1),a.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(a))),!0);"txt"!=b&&(k.responseType="blob");k.onload=function(a){if(200<=this.status&&300>this.status)if("txt"==b)c(this.response);else{var e=new FileReader;e.readAsDataURL(this.response);e.onloadend=function(a){var b=new Image;b.onload=function(){try{var a=b.width,f=b.height;if(0==a&&0==f){var k=e.result,g=k.indexOf(","),n=decodeURIComponent(escape(atob(k.substring(g+1)))),l=mxUtils.parseXml(n).getElementsByTagName("svg");
+0<l.length&&(a=parseFloat(l[0].getAttribute("width")),f=parseFloat(l[0].getAttribute("height")))}c(e.result,a,f)}catch(H){d(H)}};b.src=e.result};e.onerror=function(a){d(a)}}else d(a)};k.onerror=function(a){d(a)};k.send()};EditorUi.prototype.insertAsPreText=function(a,b,c){var e=this.editor.graph,d=null;e.getModel().beginUpdate();try{d=e.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=left;verticalAlign=top;"),e.updateCellSize(d,!0)}finally{e.getModel().endUpdate()}return d};EditorUi.prototype.insertTextAt=
+function(a,b,c,d,f,g,l,m){g=null!=g?g:!0;l=null!=l?l:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(f||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var e=
+this.editor.graph;if("data:application/pdf;base64,"==a.substring(0,28)){var k=Editor.extractGraphModelFromPdf(a);if(null!=k&&0<k.length)return this.importXml(k,b,c,g,!0,m)}if("data:image/png;base64,"==a.substring(0,22)&&(k=this.extractGraphModelFromPng(a),null!=k&&0<k.length))return this.importXml(k,b,c,g,!0,m);if("data:image/svg+xml;"==a.substring(0,19))try{k=null;"data:image/svg+xml;base64,"==a.substring(0,26)?(k=a.substring(a.indexOf(",")+1),k=window.atob&&!mxClient.IS_SF?atob(k):Base64.decode(k,
+!0)):k=decodeURIComponent(a.substring(a.indexOf(",")+1));var n=this.importXml(k,b,c,g,!0,m);if(0<n.length)return n}catch(A){}this.loadImage(a,mxUtils.bind(this,function(d){if("data:"==a.substring(0,5))this.resizeImage(d,a,mxUtils.bind(this,function(a,d,f){e.setSelectionCell(e.insertVertex(null,null,"",e.snap(b),e.snap(c),d,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(a)+";"))}),l,this.maxImageSize);
else{var f=Math.min(1,Math.min(this.maxImageSize/d.width,this.maxImageSize/d.height)),k=Math.round(d.width*f);d=Math.round(d.height*f);e.setSelectionCell(e.insertVertex(null,null,"",e.snap(b),e.snap(c),k,d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var f=null;e.getModel().beginUpdate();try{f=e.insertVertex(e.getDefaultParent(),null,a,e.snap(b),e.snap(c),1,1,"text;"+(d?"html=1;":
-"")),e.updateCellSize(f),e.fireEvent(new mxEventObject("textInserted","cells",[f]))}finally{e.getModel().endUpdate()}e.setSelectionCell(f)}))}else{a=Graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,g,null,n);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,g,null,n))}),mxUtils.bind(this,function(a){this.handleError(a)}));else{e=this.editor.graph;f=null;
+"")),e.updateCellSize(f),e.fireEvent(new mxEventObject("textInserted","cells",[f]))}finally{e.getModel().endUpdate()}e.setSelectionCell(f)}))}else{a=Graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,g,null,m);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,g,null,m))}),mxUtils.bind(this,function(a){this.handleError(a)}));else{e=this.editor.graph;f=null;
e.getModel().beginUpdate();try{f=e.insertVertex(e.getDefaultParent(),null,"",e.snap(b),e.snap(c),1,1,"text;whiteSpace=wrap;"+(d?"html=1;":""));e.fireEvent(new mxEventObject("textInserted","cells",[f]));"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a));a.length>this.maxTextBytes&&(a=a.substring(0,this.maxTextBytes)+"...");f.value=a;e.updateCellSize(f);if(0<this.maxTextWidth&&f.geometry.width>this.maxTextWidth){var p=e.getPreferredSizeForCell(f,this.maxTextWidth);f.geometry.width=
p.width;f.geometry.height=p.height}Graph.isLink(f.value)&&e.setLinkForCell(f,f.value);f.geometry.width+=e.gridSize;f.geometry.height+=e.gridSize}finally{e.getModel().endUpdate()}return[f]}}return[]};EditorUi.prototype.formatFileSize=function(a){var b=-1;do a/=1024,b++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[b]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",
b+1)))}return a};EditorUi.prototype.isRemoteFileFormat=function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)};EditorUi.prototype.isLucidChartData=function(a){return null!=a&&('{"state":"{\\"Properties\\":'==a.substring(0,26)||'{"Properties":'==a.substring(0,14))};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport){if(null==this.importFileInputElt){var e=document.createElement("input");e.setAttribute("type","file");mxEvent.addListener(e,"change",mxUtils.bind(this,
@@ -10292,30 +10292,30 @@ function(){null!=e.files&&(this.importFiles(e.files,null,null,this.maxImageSize)
function(a,b,e){StorageFile.deleteFile(this,a,b,e)});if(!b){var c=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var e=new Blob([a],{type:"application/octet-stream"});this.importVisio(e,mxUtils.bind(this,function(a){this.importXml(a,0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,
0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!b){var d=this.dialog,f=d.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=c;f.apply(d,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(a,b,c){var e=this,d=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?
JSZip.loadAsync(a).then(function(d){if(0==Object.keys(d.files).length)c();else{var f=0,k,g=!1;d.forEach(function(a,e){var d=e.name.toLowerCase();"diagram/diagram.xml"==d?(g=!0,e.async("string").then(function(a){0==a.indexOf("<mxfile ")?b(a):c()})):0==d.indexOf("versions/")&&(d=parseInt(d.substr(9)),d>f&&(f=d,k=e))});0<f?k.async("string").then(function(d){!e.isOffline()&&(new XMLHttpRequest).upload&&e.isRemoteFileFormat(d,a.name)?e.parseFile(new Blob([d],{type:"application/octet-stream"}),mxUtils.bind(this,
-function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):c())}),a.name):c()}):g||c()}},function(a){c(a)}):c()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importFile=function(a,b,c,d,f,g,m,n,y,x,B,z){x=null!=x?x:!0;var e=!1,k=null,l=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,m)):(console.log("here",
-z,mxEvent.isControlDown(z)),b=this.importXml(a,c,d,x,null,null!=z?mxEvent.isControlDown(z):null));null!=n&&n(b)});"image"==b.substring(0,5)?(y=!1,"image/png"==b.substring(0,9)&&(b=B?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(k=this.importXml(b,c,d,x,null,null!=z?mxEvent.isControlDown(z):null),y=!0)),y||(b=this.editor.graph,B=a.indexOf(";"),0<B&&(a=a.substring(0,B)+a.substring(a.indexOf(",",B+1))),x&&b.isGridEnabled()&&(c=b.snap(c),d=b.snap(d)),k=[b.insertVertex(null,null,"",c,d,f,
-g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";")])):/(\.*<graphml )/.test(a)?(e=!0,this.importGraphML(a,l)):null!=y&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(e=!0,this.importVisio(y,l)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(e=!0,this.parseFile(null!=y?y:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&
-(200<=a.status&&299>=a.status?l(a.responseText):null!=n&&n(null))}),m)):0==a.indexOf("PK")&&null!=y?(e=!0,this.importZipFile(y,l,mxUtils.bind(this,function(){k=this.insertTextAt(this.validateFileData(a),c,d,!0,null,x);n(k)}))):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)||(k=this.insertTextAt(this.validateFileData(a),c,d,!0,null,x,null,null!=z?mxEvent.isControlDown(z):null));e||null==n||n(k);return k};EditorUi.prototype.importFiles=function(a,b,c,d,f,g,m,n,y,x,B,z,A){d=null!=d?d:this.maxImageSize;
-x=null!=x?x:this.maxImageBytes;var e=null!=b&&null!=c,k=!0;b=null!=b?b:0;c=null!=c?c:0;var l=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=B||this.resampleThreshold,q=0;q<a.length;q++)if("image/"==a[q].type.substring(0,6)&&a[q].size>p){l=!0;break}var u=mxUtils.bind(this,function(){var l=this.editor.graph,p=l.gridSize;f=null!=f?f:mxUtils.bind(this,function(a,b,c,d,f,k,g,l,m){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,g)),null):
-this.importFile(a,b,c,d,f,k,g,l,m,e,z,A)}catch(O){return this.handleError(O),null}});g=null!=g?g:mxUtils.bind(this,function(a){l.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=a.length,u=q,t=[],v=mxUtils.bind(this,function(a,b){t[a]=b;if(0==--u){this.spinner.stop();if(null!=n)n(t);else{var e=[];l.getModel().beginUpdate();try{for(var c=0;c<t.length;c++){var d=t[c]();null!=d&&(e=e.concat(d))}}finally{l.getModel().endUpdate()}}g(e)}}),C=0;C<q;C++)mxUtils.bind(this,
-function(e){var g=a[e];if(null!=g){var n=new FileReader;n.onload=mxUtils.bind(this,function(a){if(null==m||m(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var n=Graph.clipSvgDataUri(a.target.result),q=n.indexOf(","),u=decodeURIComponent(escape(atob(n.substring(q+1)))),t=mxUtils.parseXml(u),u=t.getElementsByTagName("svg");if(0<u.length){var u=u[0],A=z?null:u.getAttribute("content");null!=A&&"<"!=A.charAt(0)&&"%"!=A.charAt(0)&&(A=unescape(window.atob?atob(A):Base64.decode(A,
-!0)));null!=A&&"%"==A.charAt(0)&&(A=decodeURIComponent(A));null==A||"<mxfile "!==A.substring(0,8)&&"<mxGraphModel "!==A.substring(0,14)?v(e,mxUtils.bind(this,function(){try{if(n.substring(0,q+1),null!=t){var a=t.getElementsByTagName("svg");if(0<a.length){var k=a[0],m=k.getAttribute("width"),z=k.getAttribute("height"),m=null!=m&&"%"!=m.charAt(m.length-1)?parseFloat(m):NaN,z=null!=z&&"%"!=z.charAt(z.length-1)?parseFloat(z):NaN,u=k.getAttribute("viewBox");if(null==u||0==u.length)k.setAttribute("viewBox",
-"0 0 "+m+" "+z);else if(isNaN(m)||isNaN(z)){var A=u.split(" ");3<A.length&&(m=parseFloat(A[2]),z=parseFloat(A[3]))}n=Editor.createSvgDataUri(mxUtils.getXml(k));var v=Math.min(1,Math.min(d/Math.max(1,m)),d/Math.max(1,z)),x=f(n,g.type,b+e*p,c+e*p,Math.max(1,Math.round(m*v)),Math.max(1,Math.round(z*v)),g.name);if(isNaN(m)||isNaN(z)){var C=new Image;C.onload=mxUtils.bind(this,function(){m=Math.max(1,C.width);z=Math.max(1,C.height);x[0].geometry.width=m;x[0].geometry.height=z;k.setAttribute("viewBox",
-"0 0 "+m+" "+z);n=Editor.createSvgDataUri(mxUtils.getXml(k));var a=n.indexOf(";");0<a&&(n=n.substring(0,a)+n.substring(n.indexOf(",",a+1)));l.setCellStyles("image",n,[x[0]])});C.src=Editor.createSvgDataUri(mxUtils.getXml(k))}return x}}}catch(ca){}return null})):v(e,mxUtils.bind(this,function(){return f(A,"text/xml",b+e*p,c+e*p,0,0,g.name)}))}else v(e,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==g.type){var C=z?null:this.extractGraphModelFromPng(a.target.result);if(null!=C&&
-0<C.length){var E=new Image;E.src=a.target.result;v(e,mxUtils.bind(this,function(){return f(C,"text/xml",b+e*p,c+e*p,E.width,E.height,g.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(l){this.resizeImage(l,
-a.target.result,mxUtils.bind(this,function(a,l,m){v(e,mxUtils.bind(this,function(){if(null!=a&&a.length<x){var n=k&&this.isResampleImageSize(g.size,B)?Math.min(1,Math.min(d/l,d/m)):1;return f(a,g.type,b+e*p,c+e*p,Math.round(l*n),Math.round(m*n),g.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),k,d,B,g.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else n=a.target.result,f(n,g.type,b+e*p,c+e*p,240,160,g.name,
-function(a){v(e,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?f(null,g.type,b+e*p,c+e*p,240,160,g.name,function(a){v(e,function(){return a})},g):"image"==g.type.substring(0,5)||"application/pdf"==g.type?n.readAsDataURL(g):n.readAsText(g)}})(C)});if(l){l=[];for(q=0;q<a.length;q++)l.push(a[q]);a=l;this.confirmImageResize(function(a){k=a;u()},y)}else u()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var e=null!=this.spinner&&
+function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):c())}),a.name):c()}):g||c()}},function(a){c(a)}):c()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.importFile=function(a,b,c,d,f,g,l,m,y,x,B,z){x=null!=x?x:!0;var e=!1,k=null,n=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this,a,l)):(console.log("here",
+z,mxEvent.isControlDown(z)),b=this.importXml(a,c,d,x,null,null!=z?mxEvent.isControlDown(z):null));null!=m&&m(b)});"image"==b.substring(0,5)?(y=!1,"image/png"==b.substring(0,9)&&(b=B?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(k=this.importXml(b,c,d,x,null,null!=z?mxEvent.isControlDown(z):null),y=!0)),y||(b=this.editor.graph,B=a.indexOf(";"),0<B&&(a=a.substring(0,B)+a.substring(a.indexOf(",",B+1))),x&&b.isGridEnabled()&&(c=b.snap(c),d=b.snap(d)),k=[b.insertVertex(null,null,"",c,d,f,
+g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";")])):/(\.*<graphml )/.test(a)?(e=!0,this.importGraphML(a,n)):null!=y&&null!=l&&(/(\.v(dx|sdx?))($|\?)/i.test(l)||/(\.vs(x|sx?))($|\?)/i.test(l))?(e=!0,this.importVisio(y,n)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,l)?(e=!0,this.parseFile(null!=y?y:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&
+(200<=a.status&&299>=a.status?n(a.responseText):null!=m&&m(null))}),l)):0==a.indexOf("PK")&&null!=y?(e=!0,this.importZipFile(y,n,mxUtils.bind(this,function(){k=this.insertTextAt(this.validateFileData(a),c,d,!0,null,x);m(k)}))):/(\.v(sd|dx))($|\?)/i.test(l)||/(\.vs(s|x))($|\?)/i.test(l)||(k=this.insertTextAt(this.validateFileData(a),c,d,!0,null,x,null,null!=z?mxEvent.isControlDown(z):null));e||null==m||m(k);return k};EditorUi.prototype.importFiles=function(a,b,c,d,f,g,l,m,y,x,B,z,A){d=null!=d?d:this.maxImageSize;
+x=null!=x?x:this.maxImageBytes;var e=null!=b&&null!=c,k=!0;b=null!=b?b:0;c=null!=c?c:0;var n=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var p=B||this.resampleThreshold,u=0;u<a.length;u++)if("image/"==a[u].type.substring(0,6)&&a[u].size>p){n=!0;break}var t=mxUtils.bind(this,function(){var n=this.editor.graph,p=n.gridSize;f=null!=f?f:mxUtils.bind(this,function(a,b,c,d,f,k,g,n,l){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,g)),null):
+this.importFile(a,b,c,d,f,k,g,n,l,e,z,A)}catch(O){return this.handleError(O),null}});g=null!=g?g:mxUtils.bind(this,function(a){n.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var u=a.length,t=u,q=[],v=mxUtils.bind(this,function(a,b){q[a]=b;if(0==--t){this.spinner.stop();if(null!=m)m(q);else{var e=[];n.getModel().beginUpdate();try{for(var c=0;c<q.length;c++){var d=q[c]();null!=d&&(e=e.concat(d))}}finally{n.getModel().endUpdate()}}g(e)}}),C=0;C<u;C++)mxUtils.bind(this,
+function(e){var g=a[e];if(null!=g){var m=new FileReader;m.onload=mxUtils.bind(this,function(a){if(null==l||l(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var m=Graph.clipSvgDataUri(a.target.result),u=m.indexOf(","),t=decodeURIComponent(escape(atob(m.substring(u+1)))),q=mxUtils.parseXml(t),t=q.getElementsByTagName("svg");if(0<t.length){var t=t[0],A=z?null:t.getAttribute("content");null!=A&&"<"!=A.charAt(0)&&"%"!=A.charAt(0)&&(A=unescape(window.atob?atob(A):Base64.decode(A,
+!0)));null!=A&&"%"==A.charAt(0)&&(A=decodeURIComponent(A));null==A||"<mxfile "!==A.substring(0,8)&&"<mxGraphModel "!==A.substring(0,14)?v(e,mxUtils.bind(this,function(){try{if(m.substring(0,u+1),null!=q){var a=q.getElementsByTagName("svg");if(0<a.length){var k=a[0],l=k.getAttribute("width"),z=k.getAttribute("height"),l=null!=l&&"%"!=l.charAt(l.length-1)?parseFloat(l):NaN,z=null!=z&&"%"!=z.charAt(z.length-1)?parseFloat(z):NaN,t=k.getAttribute("viewBox");if(null==t||0==t.length)k.setAttribute("viewBox",
+"0 0 "+l+" "+z);else if(isNaN(l)||isNaN(z)){var A=t.split(" ");3<A.length&&(l=parseFloat(A[2]),z=parseFloat(A[3]))}m=Editor.createSvgDataUri(mxUtils.getXml(k));var v=Math.min(1,Math.min(d/Math.max(1,l)),d/Math.max(1,z)),x=f(m,g.type,b+e*p,c+e*p,Math.max(1,Math.round(l*v)),Math.max(1,Math.round(z*v)),g.name);if(isNaN(l)||isNaN(z)){var C=new Image;C.onload=mxUtils.bind(this,function(){l=Math.max(1,C.width);z=Math.max(1,C.height);x[0].geometry.width=l;x[0].geometry.height=z;k.setAttribute("viewBox",
+"0 0 "+l+" "+z);m=Editor.createSvgDataUri(mxUtils.getXml(k));var a=m.indexOf(";");0<a&&(m=m.substring(0,a)+m.substring(m.indexOf(",",a+1)));n.setCellStyles("image",m,[x[0]])});C.src=Editor.createSvgDataUri(mxUtils.getXml(k))}return x}}}catch(ca){}return null})):v(e,mxUtils.bind(this,function(){return f(A,"text/xml",b+e*p,c+e*p,0,0,g.name)}))}else v(e,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==g.type){var C=z?null:this.extractGraphModelFromPng(a.target.result);if(null!=C&&
+0<C.length){var E=new Image;E.src=a.target.result;v(e,mxUtils.bind(this,function(){return f(C,"text/xml",b+e*p,c+e*p,E.width,E.height,g.name)}));t=!0}}t||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(n){this.resizeImage(n,
+a.target.result,mxUtils.bind(this,function(a,n,l){v(e,mxUtils.bind(this,function(){if(null!=a&&a.length<x){var m=k&&this.isResampleImageSize(g.size,B)?Math.min(1,Math.min(d/n,d/l)):1;return f(a,g.type,b+e*p,c+e*p,Math.round(n*m),Math.round(l*m),g.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),k,d,B,g.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else m=a.target.result,f(m,g.type,b+e*p,c+e*p,240,160,g.name,
+function(a){v(e,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?f(null,g.type,b+e*p,c+e*p,240,160,g.name,function(a){v(e,function(){return a})},g):"image"==g.type.substring(0,5)||"application/pdf"==g.type?m.readAsDataURL(g):m.readAsText(g)}})(C)});if(n){n=[];for(u=0;u<a.length;u++)n.push(a[u]);a=n;this.confirmImageResize(function(a){k=a;t()},y)}else t()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var e=null!=this.spinner&&
null!=this.spinner.pause?this.spinner.pause():function(){},c=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,d=function(c,d){if(c||b)mxSettings.setResizeImages(c?d:null),mxSettings.save();e();a(d)};null==c||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(a){d(a,!0)},function(a){d(a,!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):d(!1,c)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var e=new FormData;e.append("format","xml");e.append("upfile",a,c);var d=new XMLHttpRequest;d.open("POST",OPEN_URL);d.onreadystatechange=function(){b(d)};d.send(e);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+a.size})}catch(t){}};EditorUi.prototype.isResampleImageSize=function(a,
-b){b=null!=b?b:this.resampleThreshold;return a>b};EditorUi.prototype.resizeImage=function(a,b,c,d,f,g,m){f=null!=f?f:this.maxImageSize;var e=Math.max(1,a.width),k=Math.max(1,a.height);if(d&&this.isResampleImageSize(null!=m?m:b.length,g))try{var l=Math.max(e/f,k/f);if(1<l){var n=Math.round(e/l),p=Math.round(k/l),q=document.createElement("canvas");q.width=n;q.height=p;q.getContext("2d").drawImage(a,0,0,n,p);var u=q.toDataURL();if(u.length<b.length){var t=document.createElement("canvas");t.width=n;t.height=
-p;var D=t.toDataURL();u!==D&&(b=u,e=n,k=p)}}}catch(G){}c(b,e,k)};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,c){try{var e=new Image;e.onload=function(){e.width=0<e.width?e.width:120;e.height=0<e.height?e.height:120;b(e)};null!=c&&(e.onerror=c);e.src=a}catch(u){if(null!=c)c(u);else throw u;}};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&
+b){b=null!=b?b:this.resampleThreshold;return a>b};EditorUi.prototype.resizeImage=function(a,b,c,d,f,g,l){f=null!=f?f:this.maxImageSize;var e=Math.max(1,a.width),k=Math.max(1,a.height);if(d&&this.isResampleImageSize(null!=l?l:b.length,g))try{var n=Math.max(e/f,k/f);if(1<n){var m=Math.round(e/n),p=Math.round(k/n),t=document.createElement("canvas");t.width=m;t.height=p;t.getContext("2d").drawImage(a,0,0,m,p);var u=t.toDataURL();if(u.length<b.length){var q=document.createElement("canvas");q.width=m;q.height=
+p;var D=q.toDataURL();u!==D&&(b=u,e=m,k=p)}}}catch(G){}c(b,e,k)};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,c){try{var e=new Image;e.onload=function(){e.width=0<e.width?e.width:120;e.height=0<e.height?e.height:120;b(e)};null!=c&&(e.onerror=c);e.src=a}catch(u){if(null!=c)c(u);else throw u;}};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&
!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph;"dark"==uiTheme&&(b.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);b.cellEditor.editPlantUmlData=function(e,c,d){var f=JSON.parse(d);c=new TextareaDialog(a,mxResources.get("plantUml")+":",f.data,function(c){null!=c&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generatePlantUmlImage(c,f.format,function(d,g,k){a.spinner.stop();
-b.getModel().beginUpdate();try{if("txt"==f.format)b.labelChanged(e,"<pre>"+d+"</pre>"),b.updateCellSize(e,!0);else{b.setCellStyles("image",a.convertDataUri(d),[e]);var l=b.model.getGeometry(e);null!=l&&(l=l.clone(),l.width=g,l.height=k,b.cellsResized([e],[l],!1))}b.setAttributeForCell(e,"plantUmlData",JSON.stringify({data:c,format:f.format}))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(c.container,420,300,!0,!0);c.init()};b.cellEditor.editMermaidData=
-function(e,c,d){var f=JSON.parse(d);c=new TextareaDialog(a,mxResources.get("mermaid")+":",f.data,function(c){null!=c&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generateMermaidImage(c,f.config,function(d,g,k){a.spinner.stop();b.getModel().beginUpdate();try{b.setCellStyles("image",d,[e]);var l=b.model.getGeometry(e);null!=l&&(l=l.clone(),l.width=Math.max(l.width,g),l.height=Math.max(l.height,k),b.cellsResized([e],[l],!1));b.setAttributeForCell(e,"mermaidData",JSON.stringify({data:c,
+b.getModel().beginUpdate();try{if("txt"==f.format)b.labelChanged(e,"<pre>"+d+"</pre>"),b.updateCellSize(e,!0);else{b.setCellStyles("image",a.convertDataUri(d),[e]);var n=b.model.getGeometry(e);null!=n&&(n=n.clone(),n.width=g,n.height=k,b.cellsResized([e],[n],!1))}b.setAttributeForCell(e,"plantUmlData",JSON.stringify({data:c,format:f.format}))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(c.container,420,300,!0,!0);c.init()};b.cellEditor.editMermaidData=
+function(e,c,d){var f=JSON.parse(d);c=new TextareaDialog(a,mxResources.get("mermaid")+":",f.data,function(c){null!=c&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generateMermaidImage(c,f.config,function(d,g,k){a.spinner.stop();b.getModel().beginUpdate();try{b.setCellStyles("image",d,[e]);var n=b.model.getGeometry(e);null!=n&&(n=n.clone(),n.width=Math.max(n.width,g),n.height=Math.max(n.height,k),b.cellsResized([e],[n],!1));b.setAttributeForCell(e,"mermaidData",JSON.stringify({data:c,
config:f.config},null,2))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(c.container,420,300,!0,!0);c.init()};var c=b.cellEditor.startEditing;b.cellEditor.startEditing=function(e,d){try{var f=this.graph.getAttributeForCell(e,"plantUmlData");if(null!=f)this.editPlantUmlData(e,d,f);else if(f=this.graph.getAttributeForCell(e,"mermaidData"),null!=f)this.editMermaidData(e,d,f);else{var g=b.getCellStyle(e);"1"==mxUtils.getValue(g,"metaEdit","0")?a.showDataDialog(e):
c.apply(this,arguments)}}catch(G){a.handleError(G)}};b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var e=!1;try{a.handleCustomLink(b),e=!0}catch(E){a.handleError(E)}return e};var d=this.clearDefaultStyle;this.clearDefaultStyle=function(){d.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");if(/viewer\.diagrams\.net$/.test(window.location.hostname)||
-/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var f=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(a){a=null!=a?a:"";"1"==urlParams.dev&&(a+=(0<a.length?"&":"?")+"dev=1");return f.apply(this,arguments)};var m=b.addClickHandler;b.addClickHandler=function(a,e,c){var d=e;e=function(a,e){if(null==e){var c=mxEvent.getSource(a);"a"==c.nodeName.toLowerCase()&&(e=c.getAttribute("href"))}null!=e&&b.isCustomLink(e)&&(mxEvent.isTouchEvent(a)||
-!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(e)&&mxEvent.consume(a);null!=d&&d(a,e)};m.call(this,a,e,c)};g.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var n=b.getExportVariables;b.getExportVariables=function(){var b=n.apply(this,arguments),
+/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var f=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl=function(a){a=null!=a?a:"";"1"==urlParams.dev&&(a+=(0<a.length?"&":"?")+"dev=1");return f.apply(this,arguments)};var l=b.addClickHandler;b.addClickHandler=function(a,e,c){var d=e;e=function(a,e){if(null==e){var c=mxEvent.getSource(a);"a"==c.nodeName.toLowerCase()&&(e=c.getAttribute("href"))}null!=e&&b.isCustomLink(e)&&(mxEvent.isTouchEvent(a)||
+!mxEvent.isPopupTrigger(a))&&b.customLinkClicked(e)&&mxEvent.consume(a);null!=d&&d(a,e)};l.call(this,a,e,c)};g.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var m=b.getExportVariables;b.getExportVariables=function(){var b=m.apply(this,arguments),
e=a.getCurrentFile();null!=e&&(b.filename=e.getTitle());b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var v=b.getGlobalVariable;b.getGlobalVariable=function(b){var e=a.getCurrentFile();return"filename"==b&&null!=e?e.getTitle():"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,
a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:v.apply(this,arguments)};var y=b.labelLinkClicked;b.labelLinkClicked=function(a,e,c){var d=e.getAttribute("href");if(null==d||!b.isCustomLink(d)||!mxEvent.isTouchEvent(c)&&mxEvent.isPopupTrigger(c))y.apply(this,arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(d),b.getRubberband().reset();mxEvent.consume(c)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,e=a.getCurrentFile();
null!=e&&(b=null!=e.getTitle()?e.getTitle():b);return b};var x=this.actions.get("print");x.setEnabled(!mxClient.IS_IOS||!navigator.standalone);x.visible=x.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"find"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),
@@ -10328,8 +10328,8 @@ mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||
e=this.editor.graph.getModel().getStyle(e);this.styleInput.value=e||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var B=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:B.apply(this,arguments)}}x=document.getElementById("geInfo");null!=x&&x.parentNode.removeChild(x);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var z=null;mxEvent.addListener(b.container,"dragleave",
function(a){b.isEnabled()&&(null!=z&&(z.parentNode.removeChild(z),z=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==z&&(!mxClient.IS_IE||10<document.documentMode)&&(z=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=z&&(z.parentNode.removeChild(z),z=null);if(b.isEnabled()){var e=
mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),c=b.view.translate,d=b.view.scale,f=e.x/d-c.x,g=e.y/d-c.y;if(0<a.dataTransfer.files.length)mxEvent.isShiftDown(a)?this.openFiles(a.dataTransfer.files,!0):(mxEvent.isAltDown(a)&&(g=f=null),this.importFiles(a.dataTransfer.files,f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a),a));else{mxEvent.isAltDown(a)&&(g=f=0);var k=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?
-a.dataTransfer.getData("text/uri-list"):null,e=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=e)b.setSelectionCells(this.importXml(e,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var l=a.dataTransfer.getData("text/html"),e=document.createElement("div");e.innerHTML=b.sanitizeHtml(l);var m=null,c=e.getElementsByTagName("img");null!=c&&1==c.length?(l=c[0].getAttribute("src"),null==l&&(l=c[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(m=
-!0)):(c=e.getElementsByTagName("a"),null!=c&&1==c.length?l=c[0].getAttribute("href"):(e=e.getElementsByTagName("pre"),null!=e&&1==e.length&&(l=mxUtils.getTextContent(e[0]))));var n=!0,p=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(l,f,g,!0,m,null,n,mxEvent.isControlDown(a)))});m&&null!=l&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;p()},mxEvent.isControlDown(a)):p()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),
+a.dataTransfer.getData("text/uri-list"):null,e=this.extractGraphModelFromEvent(a,null!=this.pages);if(null!=e)b.setSelectionCells(this.importXml(e,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var n=a.dataTransfer.getData("text/html"),e=document.createElement("div");e.innerHTML=b.sanitizeHtml(n);var l=null,c=e.getElementsByTagName("img");null!=c&&1==c.length?(n=c[0].getAttribute("src"),null==n&&(n=c[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(n)||(l=
+!0)):(c=e.getElementsByTagName("a"),null!=c&&1==c.length?n=c[0].getAttribute("href"):(e=e.getElementsByTagName("pre"),null!=e&&1==e.length&&(n=mxUtils.getTextContent(e[0]))));var m=!0,p=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(n,f,g,!0,l,null,m,mxEvent.isControlDown(a)))});l&&null!=n&&n.length>this.resampleThreshold?this.confirmImageResize(function(a){m=a;p()},mxEvent.isControlDown(a)):p()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),
mxUtils.bind(this,function(a){var e=Math.max(1,a.width);a=Math.max(1,a.height);var c=this.maxImageSize,c=Math.min(1,Math.min(c/Math.max(1,e)),c/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,e*c,a*c,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(k,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),
f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}b.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var e=b.clipboardData||b.originalEvent.clipboardData,c=!1,d=0;d<e.types.length;d++)if("text/"===e.types[d].substring(0,5)){c=!0;break}if(!c){var f=
e.items;for(index in f){var g=f[index];if("file"===g.kind){if(a.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(b,e,c,d,f,g){a.insertImage(b,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(y){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){c.innerHTML=
@@ -10348,9 +10348,9 @@ mxUtils.setTextContent(a,encodeURIComponent(d));b?(e.removeCells(c,!1),e.lastPas
f=!0;g=e.getElementsByTagName("style");if(null!=g)for(;0<g.length;)g[0].parentNode.removeChild(g[0]);null!=e.firstChild&&e.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=e.firstChild.nextSibling&&e.firstChild.nextSibling.nodeType==mxConstants.NODETYPE_ELEMENT&&"META"==e.firstChild.nodeName&&"A"==e.firstChild.nextSibling.nodeName&&null==e.firstChild.nextSibling.nextSibling&&(g=null==e.firstChild.nextSibling.innerText?mxUtils.getTextContent(e.firstChild.nextSibling):e.firstChild.nextSibling.innerText,
g==e.firstChild.nextSibling.getAttribute("href")&&(mxUtils.setTextContent(e,g),f=!1));k=k&&null!=e.firstChild?e.firstChild.nextSibling:e.firstChild;null!=k&&null==k.nextSibling&&k.nodeType==mxConstants.NODETYPE_ELEMENT&&"IMG"==k.nodeName&&(g=k.getAttribute("src"),null!=g&&(mxUtils.setTextContent(e,g),f=!1));f&&Graph.removePasteFormatting(e)}else g=a.clipboardData.getData("text/plain"),null!=g&&0<g.length&&(e=document.createElement("div"),mxUtils.setTextContent(e,g))}k=e.getElementsByTagName("span");
if(null!=k&&0<k.length&&"application/vnd.lucid.chart.objects"===k[0].getAttribute("data-lucid-type"))c=k[0].getAttribute("data-lucid-content"),null!=c&&0<c.length&&(this.convertLucidChart(c,mxUtils.bind(this,function(a){var b=this.editor.graph;b.lastPasteXml==a?b.pasteCounter++:(b.lastPasteXml=a,b.pasteCounter=0);var e=b.pasteCounter*b.gridSize;b.setSelectionCells(this.importXml(a,e,e));b.scrollCellToVisible(b.getSelectionCell())}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a));
-else{f=f?e.innerHTML:mxUtils.trim(null==e.innerText?mxUtils.getTextContent(e):e.innerText);g=!1;try{var l=f.lastIndexOf("%3E");0<=l&&l<f.length-3&&(f=f.substring(0,l+3))}catch(E){}try{var k=e.getElementsByTagName("span"),m=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(f);this.isCompatibleString(m)&&(g=!0,f=m)}catch(E){}try{var n=this.editor.graph;if(null!=f&&0<f.length){n.lastPasteXml==f?n.pasteCounter++:(n.lastPasteXml=f,n.pasteCounter=0);var p=n.pasteCounter*
-n.gridSize;if(g||this.isCompatibleString(f))n.setSelectionCells(this.importXml(f,p,p));else if(d&&1==n.getSelectionCount()){var A=n.getStartEditingCell(n.getSelectionCell(),a);/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(f)&&"image"==n.getCurrentCellStyle(A)[mxConstants.STYLE_SHAPE]?n.setCellStyles(mxConstants.STYLE_IMAGE,f,[A]):(n.labelChanged(A,f),Graph.isLink(f)&&n.setLinkForCell(A,f));n.setSelectionCell(A)}else{var C=n.getInsertPoint();n.isMouseInsertPoint()&&(p=0,n.lastPasteXml==f&&0<n.pasteCounter&&
-n.pasteCounter--);n.setSelectionCells(this.insertTextAt(f,C.x+p,C.y+p,!0))}n.isSelectionEmpty()||(n.scrollCellToVisible(n.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(n.view.getState(n.getSelectionCell())));try{mxEvent.consume(a)}catch(E){}}else c||(n.lastPasteXml=null,n.pasteCounter=0)}catch(E){this.handleError(E)}}}b.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,e=0;e<a.length;e++)mxEvent.addListener(a[e],"dragleave",
+else{f=f?e.innerHTML:mxUtils.trim(null==e.innerText?mxUtils.getTextContent(e):e.innerText);g=!1;try{var n=f.lastIndexOf("%3E");0<=n&&n<f.length-3&&(f=f.substring(0,n+3))}catch(E){}try{var k=e.getElementsByTagName("span"),l=null!=k&&0<k.length?mxUtils.trim(decodeURIComponent(k[0].textContent)):decodeURIComponent(f);this.isCompatibleString(l)&&(g=!0,f=l)}catch(E){}try{var m=this.editor.graph;if(null!=f&&0<f.length){m.lastPasteXml==f?m.pasteCounter++:(m.lastPasteXml=f,m.pasteCounter=0);var p=m.pasteCounter*
+m.gridSize;if(g||this.isCompatibleString(f))m.setSelectionCells(this.importXml(f,p,p));else if(d&&1==m.getSelectionCount()){var A=m.getStartEditingCell(m.getSelectionCell(),a);/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(f)&&"image"==m.getCurrentCellStyle(A)[mxConstants.STYLE_SHAPE]?m.setCellStyles(mxConstants.STYLE_IMAGE,f,[A]):(m.labelChanged(A,f),Graph.isLink(f)&&m.setLinkForCell(A,f));m.setSelectionCell(A)}else{var C=m.getInsertPoint();m.isMouseInsertPoint()&&(p=0,m.lastPasteXml==f&&0<m.pasteCounter&&
+m.pasteCounter--);m.setSelectionCells(this.insertTextAt(f,C.x+p,C.y+p,!0))}m.isSelectionEmpty()||(m.scrollCellToVisible(m.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(m.view.getState(m.getSelectionCell())));try{mxEvent.consume(a)}catch(E){}}else c||(m.lastPasteXml=null,m.pasteCounter=0)}catch(E){this.handleError(E)}}}b.innerHTML="&nbsp;"};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,e=0;e<a.length;e++)mxEvent.addListener(a[e],"dragleave",
function(a){null!=b&&(b.parentNode.removeChild(b),b=null);a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[e],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[e],"drop",mxUtils.bind(this,function(a){null!=b&&(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||
"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(),"1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var e=this.extractGraphModelFromEvent(a);if(null==e){var c=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=c&&(10==document.documentMode||11==document.documentMode?e=c.getData("Text"):(e=null,e=0<=mxUtils.indexOf(c.types,
"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(c.types,"text/html")?c.getData("text/html"):null,null!=e&&0<e.length?(c=document.createElement("div"),c.innerHTML=this.editor.graph.sanitizeHtml(e),c=c.getElementsByTagName("img"),0<c.length&&(e=c[0].getAttribute("src"))):0<=mxUtils.indexOf(c.types,"text/plain")&&(e=c.getData("text/plain"))),null!=e&&("data:image/png;base64,"==e.substring(0,22)?(e=this.extractGraphModelFromPng(e),null!=e&&0<e.length&&this.openLocalFile(e,
@@ -10371,44 +10371,44 @@ a?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=a?""
window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))&&this.installMessageHandler(mxUtils.bind(this,function(a,b,c){this.spinner.stop();this.addEmbedButtons();this.setGraphEnabled(!0);if(null==a||0==a.length)a=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,a,{}));this.mode=App.MODE_EMBED;this.setFileData(a);this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();
this.editor.undoManager.clear();this.editor.modified=null!=c?c:!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?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(a,b){null!=a?a.getPublicUrl(b):b(null)};EditorUi.prototype.createLoadMessage=
function(a){var b=this.editor.graph;return{event:a,pageVisible:b.pageVisible,translate:b.view.translate,bounds:b.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:b.view.scale,page:b.view.getBackgroundPageBounds()}};EditorUi.prototype.installMessageHandler=function(a){var b=null,c=!1,e=!1,d=null,f=mxUtils.bind(this,function(a,b){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});
-this.editor.graph.model.addListener(mxEvent.CHANGE,f);mxEvent.addListener(window,"message",mxUtils.bind(this,function(f){if(f.source==(window.opener||window.parent)){var k=f.data,l=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&
+this.editor.graph.model.addListener(mxEvent.CHANGE,f);mxEvent.addListener(window,"message",mxUtils.bind(this,function(f){if(f.source==(window.opener||window.parent)){var k=f.data,n=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt&&"<"!=a.charAt(0))try{"data:image/png;base64,"==a.substring(0,22)?a=this.extractGraphModelFromPng(a):"data:image/svg+xml;base64,"==a.substring(0,26)?a=atob(a.substring(26)):"data:image/svg+xml;utf8,"==a.substring(0,24)&&(a=a.substring(24)),null!=a&&
("%"==a.charAt(0)?a=decodeURIComponent(a):"<"!=a.charAt(0)&&(a=Graph.decompress(a)))}catch(Y){}return a});if("json"==urlParams.proto){try{k=JSON.parse(k)}catch(O){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);
-return}if("prompt"==k.action){this.spinner.stop();var m=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):k.ok,function(a){null!=a?g.postMessage(JSON.stringify({event:"prompt",value:a,message:k}),"*"):g.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(m.container,300,80,!0,!1);m.init();return}if("draft"==k.action){var n=l(k.xml);this.spinner.stop();m=new DraftDialog(this,mxResources.get("draftFound",
-[k.name||this.defaultFilename]),n,mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),
-"*")}):null);this.showDialog(m.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{m.init()}catch(O){g.postMessage(JSON.stringify({event:"draft",error:O.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var p=1==k.enableRecent,q=1==k.enableSearch,u=1==k.enableCustomTemp,m=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(b,c,e,d){b=b||this.emptyDiagramXml;null!=k.callback?g.postMessage(JSON.stringify({event:"template",
+return}if("prompt"==k.action){this.spinner.stop();var l=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):k.ok,function(a){null!=a?g.postMessage(JSON.stringify({event:"prompt",value:a,message:k}),"*"):g.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(l.container,300,80,!0,!1);l.init();return}if("draft"==k.action){var m=n(k.xml);this.spinner.stop();l=new DraftDialog(this,mxResources.get("draftFound",
+[k.name||this.defaultFilename]),m,mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),
+"*")}):null);this.showDialog(l.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{l.init()}catch(O){g.postMessage(JSON.stringify({event:"draft",error:O.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var p=1==k.enableRecent,q=1==k.enableSearch,u=1==k.enableCustomTemp,l=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(b,c,e,d){b=b||this.emptyDiagramXml;null!=k.callback?g.postMessage(JSON.stringify({event:"template",
xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:e,libs:d,builtIn:!0,message:k}),"*"):(a(b,f,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,p?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}):null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){g.postMessage(JSON.stringify({event:"template",
-docUrl:a,info:b,name:c}),"*")}),null,null,u?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(m.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));m.init();return}if("textContent"==k.action){var t=this.getDiagramTextContent();g.postMessage(JSON.stringify({event:"textContent",data:t,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):
+docUrl:a,info:b,name:c}),"*")}),null,null,u?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("textContent"==k.action){var t=this.getDiagramTextContent();g.postMessage(JSON.stringify({event:"textContent",data:t,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):
null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var v=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,v):this.spinner.stop();return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var y=null!=k.xml?
k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var J=this.editor.graph,F=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=k.format;b.message=k;b.data=a;b.xml=y;g.postMessage(JSON.stringify(b),"*")}),M=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==k.format&&(a=Editor.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(y)));J!=this.editor.graph&&J.container.parentNode.removeChild(J.container);
F(a)}),L=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){null!=k.xml&&0<k.xml.length&&(c=!0,this.setFileData(y),c=!1);if(null!=this.pages&&this.currentPage.getId()!=L){for(var N=J.getGlobalVariable,J=this.createTemporaryGraph(J.getStylesheet()),Z,K=0;K<this.pages.length;K++)if(this.pages[K].getId()==L){Z=this.updatePageRoot(this.pages[K]);break}J.getGlobalVariable=function(a){return"page"==a?Z.getName():"pagenumber"==a?1:N.apply(this,
-arguments)};document.body.appendChild(J.container);J.model.setRoot(Z.root)}if(null!=k.layerIds){for(var S=J.model,U=S.getChildCells(S.getRoot()),m={},K=0;K<k.layerIds.length;K++)m[k.layerIds[K]]=!0;for(K=0;K<U.length;K++)S.setVisible(U[K],m[U[K].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(a){M(a.toDataURL("image/png"))}),k.width,null,k.background,mxUtils.bind(this,function(){M(null)}),null,null,k.scale,k.transparent,k.shadow,null,J,k.border,null,k.grid,k.keepTheme)}else(new mxXmlRequest(EXPORT_URL,
+arguments)};document.body.appendChild(J.container);J.model.setRoot(Z.root)}if(null!=k.layerIds){for(var S=J.model,U=S.getChildCells(S.getRoot()),l={},K=0;K<k.layerIds.length;K++)l[k.layerIds[K]]=!0;for(K=0;K<U.length;K++)S.setVisible(U[K],l[U[K].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(a){M(a.toDataURL("image/png"))}),k.width,null,k.background,mxUtils.bind(this,function(){M(null)}),null,null,k.scale,k.transparent,k.shadow,null,J,k.border,null,k.grid,k.keepTheme)}else(new mxXmlRequest(EXPORT_URL,
"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=L?"&pageId="+L:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(y))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?F("data:image/png;base64,"+a.getText()):M(null)}),mxUtils.bind(this,function(){M(null)}))}}else{null!=k.xml&&0<k.xml.length&&(c=!0,this.setFileData(k.xml),c=!1);
v=this.createLoadMessage("export");v.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var X=this.getXmlFileData();v.xml=mxUtils.getXml(X);v.data=this.getFileData(null,null,!0,null,null,null,X);v.format=k.format}else if("html"==k.format)y=this.editor.getGraphXml(),v.data=this.getHtml(y,this.editor.graph),v.xml=mxUtils.getXml(y),v.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;var aa=null!=k.background?k.background:this.editor.graph.background;
aa==mxConstants.NONE&&(aa=null);v.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);v.format="svg";var da=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();v.data=Editor.createSvgDataUri(a);g.postMessage(JSON.stringify(v),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(v.xml,this.editor.graph,null,!0,da,null,null,k.embedImages,aa,
k.scale,k.border,k.shadow,k.keepTheme);else if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){this.editor.graph.setEnabled(!1);var W=this.editor.graph.getSvg(aa,k.scale,k.border,null,null,null,null,null,null,this.editor.graph.shadowVisible||k.shadow,null,k.keepTheme);(this.editor.graph.shadowVisible||k.shadow)&&this.editor.graph.addSvgShadow(W);this.embedFonts(W,mxUtils.bind(this,function(a){k.embedImages||null==k.embedImages?this.editor.convertImages(a,
mxUtils.bind(this,function(a){da(mxUtils.getXml(a))})):da(mxUtils.getXml(a))}))}return}g.postMessage(JSON.stringify(v),"*")}return}if("load"==k.action){e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit);null!=k.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=k.noSaveBtn);null!=k.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=k.noExitBtn);
-null!=k.title&&null!=this.buttonContainer&&(n=document.createElement("span"),mxUtils.write(n,k.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="1"==urlParams.noLangIcon?"0":"25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(n),
-this.embedFilenameSpan=n);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(O){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var V=this.getCurrentFile();null!=V&&(n=l(k.xml),null!=n&&""!=n&&V.mergeFile(new LocalFile(this,n),function(){g.postMessage(JSON.stringify({event:"merge",message:k}),"*")},function(a){g.postMessage(JSON.stringify({event:"merge",message:k,error:a}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(g):
+null!=k.title&&null!=this.buttonContainer&&(m=document.createElement("span"),mxUtils.write(m,k.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="1"==urlParams.noLangIcon?"0":"25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(m),
+this.embedFilenameSpan=m);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(O){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var V=this.getCurrentFile();null!=V&&(m=n(k.xml),null!=m&&""!=m&&V.mergeFile(new LocalFile(this,m),function(){g.postMessage(JSON.stringify({event:"merge",message:k}),"*")},function(a){g.postMessage(JSON.stringify({event:"merge",message:k,error:a}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(g):
"remoteInvoke"==k.action?this.handleRemoteInvoke(k,f.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):g.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(O){this.handleError(O)}}var fa=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),ea=mxUtils.bind(this,function(f,k){c=!0;try{a(f,k)}catch(P){this.handleError(P)}c=!1;
null!=urlParams.modified&&this.editor.setStatus("");d=fa();e&&null==b&&(b=mxUtils.bind(this,function(a,b){var e=fa();if(e!=d&&!c){var f=this.createLoadMessage("autosave");f.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(f),"*")}d=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,b),this.editor.graph.addListener("gridSizeChanged",b),this.editor.graph.addListener("shadowVisibleChanged",b),this.addListener("pageFormatChanged",b),this.addListener("pageScaleChanged",b),this.addListener("backgroundColorChanged",
-b),this.addListener("backgroundImageChanged",b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var l=this.createLoadMessage("load");l.xml=f;g.postMessage(JSON.stringify(l),"*")}});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(l="0M8R4KGxGuE"==
-k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(a){ea(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),l)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&ea(a.responseText,
-f)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(a){ea(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=l(k),ea(k,f)):this.loadDescriptor(k,mxUtils.bind(this,function(a){ea(fa(),f)}),mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"))}))}}));var g=window.opener||window.parent,f="json"==urlParams.proto?JSON.stringify({event:"init"}):
-urlParams.ready||"ready";g.postMessage(f,"*");if("json"==urlParams.proto){var m=this.editor.graph.openLink;this.editor.graph.openLink=function(a,b,c){m.apply(this,arguments);g.postMessage(JSON.stringify({event:"openLink",href:a,target:b,allowOpener:c}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"0px";a.style.paddingLeft="8px";a.style.paddingBottom=
+b),this.addListener("backgroundImageChanged",b),this.addListener("foldingEnabledChanged",b),this.addListener("mathEnabledChanged",b),this.addListener("gridEnabledChanged",b),this.addListener("guidesEnabledChanged",b),this.addListener("pageViewChanged",b));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var n=this.createLoadMessage("load");n.xml=f;g.postMessage(JSON.stringify(n),"*")}});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(n="0M8R4KGxGuE"==
+k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(a){ea(a,f)},mxUtils.bind(this,function(a){this.handleError(a)}),n)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFile(new Blob([k],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&ea(a.responseText,
+f)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(a){ea(a)}),mxUtils.bind(this,function(a){this.handleError(a)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=n(k),ea(k,f)):this.loadDescriptor(k,mxUtils.bind(this,function(a){ea(fa(),f)}),mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"))}))}}));var g=window.opener||window.parent,f="json"==urlParams.proto?JSON.stringify({event:"init"}):
+urlParams.ready||"ready";g.postMessage(f,"*");if("json"==urlParams.proto){var l=this.editor.graph.openLink;this.editor.graph.openLink=function(a,b,c){l.apply(this,arguments);g.postMessage(JSON.stringify({event:"openLink",href:a,target:b,allowOpener:c}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar){var a=document.createElement("div");a.style.display="inline-block";a.style.position="absolute";a.style.paddingTop="atlas"==uiTheme?"2px":"0px";a.style.paddingLeft="8px";a.style.paddingBottom=
"2px";var b=document.createElement("button");b.className="geBigButton";var c=b;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var d="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(b,d);b.setAttribute("title",d);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()}));a.appendChild(b)}}else mxUtils.write(b,mxResources.get("save")),b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+
"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b),c=b);"1"!=urlParams.noExitBtn&&
(b=document.createElement("a"),c="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(b,c),b.setAttribute("title",c),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),a.appendChild(b),c=b);c.style.marginRight="20px";this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=
function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),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(a,b){for(var c=this.editor.graph,
-e=c.getSelectionCells(),d=0;d<a.length;d++){var f=new window[a[d].layout](c);if(null!=a[d].config)for(var g in a[d].config)f[g]=a[d].config[g];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==e.length?null:e)},d==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),e=[],d=[],f={};if(0<c.length){var g={},k=null,m=null,n=null,B=null,z=null,A=null,C=null,E=null,D=null,G="",H="auto",I="auto",J=null,F=null,M=40,L=40,N=100,Z=0,K=this.editor.graph;K.getGraphBounds();
+e=c.getSelectionCells(),d=0;d<a.length;d++){var f=new window[a[d].layout](c);if(null!=a[d].config)for(var g in a[d].config)f[g]=a[d].config[g];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==e.length?null:e)},d==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),e=[],d=[],f={};if(0<c.length){var g={},k=null,l=null,m=null,B=null,z=null,A=null,C=null,E=null,D=null,G="",H="auto",I="auto",J=null,F=null,M=40,L=40,N=100,Z=0,K=this.editor.graph;K.getGraphBounds();
for(var S=function(){null!=b?b(la):(K.setSelectionCells(la),K.scrollCellToVisible(K.getSelectionCell()))},U=K.getFreeInsertPoint(),X=U.x,aa=U.y,U=aa,da=null,W="auto",D=null,V=[],fa=null,ea=null,O=0;O<c.length&&"#"==c[O].charAt(0);){a=c[O];for(O++;O<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[O].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[O].substring(1)),O++;if("#"!=a.charAt(1)){var Y=a.indexOf(":");if(0<Y){var R=mxUtils.trim(a.substring(1,Y)),P=mxUtils.trim(a.substring(Y+1));"label"==
-R?da=K.sanitizeHtml(P):"labelname"==R&&0<P.length&&"-"!=P?z=P:"labels"==R&&0<P.length&&"-"!=P?A=JSON.parse(P):"style"==R?m=P:"parentstyle"==R?C=P:"stylename"==R&&0<P.length&&"-"!=P?B=P:"styles"==R&&0<P.length&&"-"!=P?n=JSON.parse(P):"vars"==R&&0<P.length&&"-"!=P?k=JSON.parse(P):"identity"==R&&0<P.length&&"-"!=P?E=P:"parent"==R&&0<P.length&&"-"!=P?D=P:"namespace"==R&&0<P.length&&"-"!=P?G=P:"width"==R?H=P:"height"==R?I=P:"left"==R&&0<P.length?J=P:"top"==R&&0<P.length?F=P:"ignore"==R?ea=P.split(","):
+R?da=K.sanitizeHtml(P):"labelname"==R&&0<P.length&&"-"!=P?z=P:"labels"==R&&0<P.length&&"-"!=P?A=JSON.parse(P):"style"==R?l=P:"parentstyle"==R?C=P:"stylename"==R&&0<P.length&&"-"!=P?B=P:"styles"==R&&0<P.length&&"-"!=P?m=JSON.parse(P):"vars"==R&&0<P.length&&"-"!=P?k=JSON.parse(P):"identity"==R&&0<P.length&&"-"!=P?E=P:"parent"==R&&0<P.length&&"-"!=P?D=P:"namespace"==R&&0<P.length&&"-"!=P?G=P:"width"==R?H=P:"height"==R?I=P:"left"==R&&0<P.length?J=P:"top"==R&&0<P.length?F=P:"ignore"==R?ea=P.split(","):
"connect"==R?V.push(JSON.parse(P)):"link"==R?fa=P:"padding"==R?Z=parseFloat(P):"edgespacing"==R?M=parseFloat(P):"nodespacing"==R?L=parseFloat(P):"levelspacing"==R?N=parseFloat(P):"layout"==R&&(W=P)}}}if(null==c[O])throw Error(mxResources.get("invalidOrMissingFile"));for(var ba=this.editor.csvToArray(c[O]),R=Y=null,P=[],T=0;T<ba.length;T++)E==ba[T]&&(Y=T),D==ba[T]&&(R=T),P.push(mxUtils.trim(ba[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==da&&(da="%"+P[0]+"%");if(null!=
-V)for(var ga=0;ga<V.length;ga++)null==g[V[ga].to]&&(g[V[ga].to]={});E=[];for(T=O+1;T<c.length;T++){var ha=this.editor.csvToArray(c[T]);if(null==ha){var ia=40<c[T].length?c[T].substring(0,40)+"...":c[T];throw Error(ia+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<ha.length&&E.push(ha)}K.model.beginUpdate();try{for(T=0;T<E.length;T++){var ha=E[T],Q=null,ka=null!=Y?G+ha[Y]:null;null!=ka&&(Q=K.model.getCell(ka));var c=null!=Q,ca=new mxCell(da,new mxGeometry(X,U,0,0),m||"whiteSpace=wrap;html=1;");
-ca.vertex=!0;ca.id=ka;for(var ja=0;ja<ha.length;ja++)K.setAttributeForCell(ca,P[ja],ha[ja]);if(null!=z&&null!=A){var ua=A[ca.getAttribute(z)];null!=ua&&K.labelChanged(ca,ua)}if(null!=B&&null!=n){var va=n[ca.getAttribute(B)];null!=va&&(ca.style=va)}K.setAttributeForCell(ca,"placeholders","1");ca.style=K.replacePlaceholders(ca,ca.style,k);c&&(K.model.setGeometry(Q,ca.geometry),K.model.setStyle(Q,ca.style),0>mxUtils.indexOf(d,Q)&&d.push(Q));Q=ca;if(!c)for(ga=0;ga<V.length;ga++)g[V[ga].to][Q.getAttribute(V[ga].to)]=
+V)for(var ga=0;ga<V.length;ga++)null==g[V[ga].to]&&(g[V[ga].to]={});E=[];for(T=O+1;T<c.length;T++){var ha=this.editor.csvToArray(c[T]);if(null==ha){var ia=40<c[T].length?c[T].substring(0,40)+"...":c[T];throw Error(ia+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<ha.length&&E.push(ha)}K.model.beginUpdate();try{for(T=0;T<E.length;T++){var ha=E[T],Q=null,ka=null!=Y?G+ha[Y]:null;null!=ka&&(Q=K.model.getCell(ka));var c=null!=Q,ca=new mxCell(da,new mxGeometry(X,U,0,0),l||"whiteSpace=wrap;html=1;");
+ca.vertex=!0;ca.id=ka;for(var ja=0;ja<ha.length;ja++)K.setAttributeForCell(ca,P[ja],ha[ja]);if(null!=z&&null!=A){var ua=A[ca.getAttribute(z)];null!=ua&&K.labelChanged(ca,ua)}if(null!=B&&null!=m){var va=m[ca.getAttribute(B)];null!=va&&(ca.style=va)}K.setAttributeForCell(ca,"placeholders","1");ca.style=K.replacePlaceholders(ca,ca.style,k);c&&(K.model.setGeometry(Q,ca.geometry),K.model.setStyle(Q,ca.style),0>mxUtils.indexOf(d,Q)&&d.push(Q));Q=ca;if(!c)for(ga=0;ga<V.length;ga++)g[V[ga].to][Q.getAttribute(V[ga].to)]=
Q;null!=fa&&"link"!=fa&&(K.setLinkForCell(Q,Q.getAttribute(fa)),K.setAttributeForCell(Q,fa,null));K.fireEvent(new mxEventObject("cellsInserted","cells",[Q]));var wa=this.editor.graph.getPreferredSizeForCell(Q);Q.vertex&&(null!=J&&null!=Q.getAttribute(J)&&(Q.geometry.x=X+parseFloat(Q.getAttribute(J))),null!=F&&null!=Q.getAttribute(F)&&(Q.geometry.y=aa+parseFloat(Q.getAttribute(F))),"@"==H.charAt(0)&&null!=Q.getAttribute(H.substring(1))?Q.geometry.width=parseFloat(Q.getAttribute(H.substring(1))):Q.geometry.width=
"auto"==H?wa.width+Z:parseFloat(H),"@"==I.charAt(0)&&null!=Q.getAttribute(I.substring(1))?Q.geometry.height=parseFloat(Q.getAttribute(I.substring(1))):Q.geometry.height="auto"==I?wa.height+Z:parseFloat(I),U+=Q.geometry.height+L);c?(null==f[ka]&&(f[ka]=[]),f[ka].push(Q)):(D=null!=R?K.model.getCell(G+ha[R]):null,e.push(Q),null!=D?(D.style=K.replacePlaceholders(D,C,k),K.addCell(Q,D)):d.push(K.addCell(Q)))}for(var oa=d.slice(),la=d.slice(),ga=0;ga<V.length;ga++)for(var xa=V[ga],T=0;T<e.length;T++){var Q=
-e[T],ya=mxUtils.bind(this,function(a,b,c){var e=b.getAttribute(c.from);if(null!=e&&(K.setAttributeForCell(b,c.from,null),""!=e))for(var e=e.split(","),d=0;d<e.length;d++){var f=g[c.to][e[d]];if(null!=f){var l=c.label;null!=c.fromlabel&&(l=(b.getAttribute(c.fromlabel)||"")+(l||""));null!=c.tolabel&&(l=(l||"")+(f.getAttribute(c.tolabel)||""));var m="target"==c.placeholders==!c.invert?f:a,m=null!=c.style?K.replacePlaceholders(m,c.style,k):K.createCurrentEdgeStyle(),l=K.insertEdge(null,null,l||"",c.invert?
-f:a,c.invert?a:f,m);if(null!=c.labels)for(m=0;m<c.labels.length;m++){var n=c.labels[m],p=new mxCell(n.label||m,new mxGeometry(null!=n.x?n.x:0,null!=n.y?n.y:0,0,0),"resizable=0;html=1;");p.vertex=!0;p.connectable=!1;p.geometry.relative=!0;if(null!=n.dx||null!=n.dy)p.geometry.offset=new mxPoint(null!=n.dx?n.dx:0,null!=n.dy?n.dy:0);l.insert(p)}la.push(l);mxUtils.remove(c.invert?a:f,oa)}}});ya(Q,Q,xa);if(null!=f[Q.id])for(ja=0;ja<f[Q.id].length;ja++)ya(Q,f[Q.id][ja],xa)}if(null!=ea)for(T=0;T<e.length;T++)for(Q=
+e[T],ya=mxUtils.bind(this,function(a,b,c){var e=b.getAttribute(c.from);if(null!=e&&(K.setAttributeForCell(b,c.from,null),""!=e))for(var e=e.split(","),d=0;d<e.length;d++){var f=g[c.to][e[d]];if(null!=f){var n=c.label;null!=c.fromlabel&&(n=(b.getAttribute(c.fromlabel)||"")+(n||""));null!=c.tolabel&&(n=(n||"")+(f.getAttribute(c.tolabel)||""));var l="target"==c.placeholders==!c.invert?f:a,l=null!=c.style?K.replacePlaceholders(l,c.style,k):K.createCurrentEdgeStyle(),n=K.insertEdge(null,null,n||"",c.invert?
+f:a,c.invert?a:f,l);if(null!=c.labels)for(l=0;l<c.labels.length;l++){var m=c.labels[l],p=new mxCell(m.label||l,new mxGeometry(null!=m.x?m.x:0,null!=m.y?m.y:0,0,0),"resizable=0;html=1;");p.vertex=!0;p.connectable=!1;p.geometry.relative=!0;if(null!=m.dx||null!=m.dy)p.geometry.offset=new mxPoint(null!=m.dx?m.dx:0,null!=m.dy?m.dy:0);n.insert(p)}la.push(n);mxUtils.remove(c.invert?a:f,oa)}}});ya(Q,Q,xa);if(null!=f[Q.id])for(ja=0;ja<f[Q.id].length;ja++)ya(Q,f[Q.id][ja],xa)}if(null!=ea)for(T=0;T<e.length;T++)for(Q=
e[T],ja=0;ja<ea.length;ja++)K.setAttributeForCell(Q,mxUtils.trim(ea[ja]),null);if(0<d.length){var ra=new mxParallelEdgeLayout(K);ra.spacing=M;ra.checkOverlap=!0;var sa=function(){0<ra.spacing&&ra.execute(K.getDefaultParent());for(var a=0;a<d.length;a++){var b=K.getCellGeometry(d[a]);b.x=Math.round(K.snap(b.x));b.y=Math.round(K.snap(b.y));"auto"==H&&(b.width=Math.round(K.snap(b.width)));"auto"==I&&(b.height=Math.round(K.snap(b.height)))}};if("["==W.charAt(0)){var ta=S;K.view.validate();this.executeLayoutList(JSON.parse(W),
function(){sa();ta()});S=null}else if("circle"==W){var pa=new mxCircleLayout(K);pa.disableEdgeStyle=!1;pa.resetEdges=!1;var za=pa.isVertexIgnored;pa.isVertexIgnored=function(a){return za.apply(this,arguments)||0>mxUtils.indexOf(d,a)};this.executeLayout(function(){pa.execute(K.getDefaultParent());sa()},!0,S);S=null}else if("horizontaltree"==W||"verticaltree"==W||"auto"==W&&la.length==2*d.length-1&&1==oa.length){K.view.validate();var ma=new mxCompactTreeLayout(K,"horizontaltree"==W);ma.levelDistance=
L;ma.edgeRouting=!1;ma.resetEdges=!1;this.executeLayout(function(){ma.execute(K.getDefaultParent(),0<oa.length?oa[0]:null)},!0,S);S=null}else if("horizontalflow"==W||"verticalflow"==W||"auto"==W&&1==oa.length){K.view.validate();var qa=new mxHierarchicalLayout(K,"horizontalflow"==W?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);qa.intraCellSpacing=L;qa.parallelEdgeSpacing=M;qa.interRankCellSpacing=N;qa.disableEdgeStyle=!1;this.executeLayout(function(){qa.execute(K.getDefaultParent(),la);K.moveCells(la,
@@ -10423,85 +10423,85 @@ b++;null==this.dropbox&&"function"!==typeof window.DropboxClient||b++;null==this
var c=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==a||a.isRestricted());this.actions.get("makeCopy").setEnabled(!c);this.actions.get("print").setEnabled(!c);this.menus.get("exportAs").setEnabled(!c);this.menus.get("embed").setEnabled(!c);c="1"!=urlParams.embed||this.editor.graph.isEnabled();this.menus.get("extras").setEnabled(c);Editor.enableCustomLibraries&&(this.menus.get("openLibraryFrom").setEnabled(c),this.menus.get("newLibrary").setEnabled(c));a="1"==urlParams.embed&&this.editor.graph.isEnabled()||
null!=a&&a.isEditable();this.actions.get("image").setEnabled(b);this.actions.get("zoomIn").setEnabled(b);this.actions.get("zoomOut").setEnabled(b);this.actions.get("resetView").setEnabled(b);this.actions.get("undo").setEnabled(this.canUndo()&&a);this.actions.get("redo").setEnabled(this.canRedo()&&a);this.menus.get("edit").setEnabled(b);this.menus.get("view").setEnabled(b);this.menus.get("importFrom").setEnabled(a);this.menus.get("arrange").setEnabled(a);null!=this.toolbar&&(null!=this.toolbar.edgeShapeMenu&&
this.toolbar.edgeShapeMenu.setEnabled(a),null!=this.toolbar.edgeStyleMenu&&this.toolbar.edgeStyleMenu.setEnabled(a));this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()};
-var m=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){m.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);
+var l=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){l.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b);
this.actions.get("connectionPoints").setEnabled(b);this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&&
(null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").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!=c&&c.isRenamable()||
-"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var n=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);n.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=
-!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,d,f,g,m,n){var e=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(e.getSvg(d,f,g)),"image/svg+xml");else{var k=a.getFileData(!0,null,null,null,null,!0),l=e.getGraphBounds(),p=Math.floor(l.width*f/e.view.scale),q=Math.floor(l.height*f/e.view.scale);if(k.length<=MAX_REQUEST_SIZE&&p*q<MAX_AREA)if(a.hideDialog(),
-"png"!=c&&"jpg"!=c&&"jpeg"!=c||!a.isExportToCanvas()){var u={globalVars:e.getExportVariables()};n&&(u.grid={size:e.gridSize,steps:e.view.gridSteps,color:e.view.gridColor});a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(u))+(0<m?"&dpi="+m:"")+"&bg="+(null!=d?d:"none")+"&w="+p+"&h="+q+"&border="+g+"&xml="+encodeURIComponent(k))})}else"png"==c?a.exportImage(f,
-null==d||"none"==d,!0,!1,!1,g,!0,!1,null,n,m):a.exportImage(f,!1,!0,!1,!1,g,!0,!1,"jpeg",n);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var a=this.editor.graph,b="";if(null!=this.pages)for(var c=0;c<this.pages.length;c++){var d=a;this.currentPage!=this.pages[c]&&(d=this.createTemporaryGraph(a.getStylesheet()),this.updatePageRoot(this.pages[c]),d.model.setRoot(this.pages[c].root));b+=this.pages[c].getName()+
+"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var m=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);m.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption=
+!1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,d,f,g,l,m){var e=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(e.getSvg(d,f,g)),"image/svg+xml");else{var k=a.getFileData(!0,null,null,null,null,!0),n=e.getGraphBounds(),p=Math.floor(n.width*f/e.view.scale),t=Math.floor(n.height*f/e.view.scale);if(k.length<=MAX_REQUEST_SIZE&&p*t<MAX_AREA)if(a.hideDialog(),
+"png"!=c&&"jpg"!=c&&"jpeg"!=c||!a.isExportToCanvas()){var q={globalVars:e.getExportVariables()};m&&(q.grid={size:e.gridSize,steps:e.view.gridSteps,color:e.view.gridColor});a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(0<l?"&dpi="+l:"")+"&bg="+(null!=d?d:"none")+"&w="+p+"&h="+t+"&border="+g+"&xml="+encodeURIComponent(k))})}else"png"==c?a.exportImage(f,
+null==d||"none"==d,!0,!1,!1,g,!0,!1,null,m,l):a.exportImage(f,!1,!0,!1,!1,g,!0,!1,"jpeg",m);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var a=this.editor.graph,b="";if(null!=this.pages)for(var c=0;c<this.pages.length;c++){var d=a;this.currentPage!=this.pages[c]&&(d=this.createTemporaryGraph(a.getStylesheet()),this.updatePageRoot(this.pages[c]),d.model.setRoot(this.pages[c].root));b+=this.pages[c].getName()+
" "+d.getIndexableText()+" "}else b=a.getIndexableText();this.editor.graph.setEnabled(!0);return b};EditorUi.prototype.showRemotelyStoredLibrary=function(a){var b={},c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxUtils.htmlEntities(a));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(e);var d=document.createElement("div");d.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";
-d.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var f={};try{var g=mxSettings.getCustomLibraries();for(a=0;a<g.length;a++){var m=g[a];if("R"==m.substring(0,1)){var n=JSON.parse(decodeURIComponent(m.substring(1)));f[n[0]]={id:n[0],title:n[1],downloadUrl:n[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",null,null,function(a){d.innerHTML="";if(0==a.length)d.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+
+d.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+IMAGE_PATH+'/spin.gif"></div>';var f={};try{var g=mxSettings.getCustomLibraries();for(a=0;a<g.length;a++){var l=g[a];if("R"==l.substring(0,1)){var m=JSON.parse(decodeURIComponent(l.substring(1)));f[m[0]]={id:m[0],title:m[1],downloadUrl:m[2]}}}}catch(x){}this.remoteInvoke("getCustomLibraries",null,null,function(a){d.innerHTML="";if(0==a.length)d.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+
"</div>";else for(var c=0;c<a.length;c++){var e=a[c];f[e.id]&&(b[e.id]=e);var g=this.addCheckbox(d,e.title,f[e.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(e,g)}},mxUtils.bind(this,function(a){d.innerHTML="";var b=document.createElement("div");b.style.padding="8px";b.style.textAlign="center";mxUtils.write(b,mxResources.get("error")+": ");mxUtils.write(b,null!=a&&null!=a.message?a.message:mxResources.get("unknownError"));d.appendChild(b)}));
c.appendChild(d);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==f[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,
mxResources.get("errorLoadingFile"))}))})(b[c]));for(c in f)b[c]||this.closeLibrary(new RemoteLibrary(this,null,f[c]));0==a&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(c.container,340,375,!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(a){this.remoteWin=a;for(var b=0;b<this.remoteInvokeQueue.length;b++)a.postMessage(this.remoteInvokeQueue[b],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(a){var b=a.msgMarkers,c=this.remoteInvokeCallbacks[b.callbackId];if(null==c)throw Error("No callback for "+
(null!=b?b.callbackId:"null"));a.error?c.error&&c.error(a.error.errResp):c.callback&&c.callback.apply(this,a.resp);this.remoteInvokeCallbacks[b.callbackId]=null};EditorUi.prototype.remoteInvoke=function(a,b,c,d,f){var e=!0,g=window.setTimeout(mxUtils.bind(this,function(){e=!1;f({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(g);e&&d.apply(this,arguments)}),l=mxUtils.bind(this,function(){window.clearTimeout(g);e&&f.apply(this,
arguments)});c=c||{};c.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:k,error:l});a=JSON.stringify({event:"remoteInvoke",funtionName:a,functionArgs:b,msgMarkers:c});null!=this.remoteWin?this.remoteWin.postMessage(a,"*"):this.remoteInvokeQueue.push(a)};EditorUi.prototype.handleRemoteInvoke=function(a,b){var c=mxUtils.bind(this,function(b,c){var e={event:"remoteInvokeResponse",msgMarkers:a.msgMarkers};null!=c?e.error={errResp:c}:null!=b&&(e.resp=b);this.remoteWin.postMessage(JSON.stringify(e),
-"*")});try{var e=a.funtionName,d=this.remoteInvokableFns[e];if(null!=d&&"function"===typeof this[e]){if(d.allowedDomains){for(var f=!1,g=0;g<d.allowedDomains.length;g++)if(b=="https://"+d.allowedDomains[g]){f=!0;break}if(!f){c(null,"Invalid Call: "+e+" is not allowed.");return}}var k=a.functionArgs;Array.isArray(k)||(k=[]);if(d.isAsync)k.push(function(){c(Array.prototype.slice.apply(arguments))}),k.push(function(a){c(null,a||"Unkown Error")}),this[e].apply(this,k);else{var m=this[e].apply(this,k);
-c([m])}}else c(null,"Invalid Call: "+e+" is not found.")}catch(x){c(null,"Invalid Call: An error occured, "+x.message)}};EditorUi.prototype.openDatabase=function(a,b){if(null==this.database){var c=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=c)try{var e=c.open("database",2);e.onupgradeneeded=function(a){try{var c=e.result;1>a.oldVersion&&c.createObjectStore("objects",{keyPath:"key"});2>a.oldVersion&&(c.createObjectStore("files",{keyPath:"title"}),c.createObjectStore("filesInfo",
+"*")});try{var e=a.funtionName,d=this.remoteInvokableFns[e];if(null!=d&&"function"===typeof this[e]){if(d.allowedDomains){for(var f=!1,g=0;g<d.allowedDomains.length;g++)if(b=="https://"+d.allowedDomains[g]){f=!0;break}if(!f){c(null,"Invalid Call: "+e+" is not allowed.");return}}var k=a.functionArgs;Array.isArray(k)||(k=[]);if(d.isAsync)k.push(function(){c(Array.prototype.slice.apply(arguments))}),k.push(function(a){c(null,a||"Unkown Error")}),this[e].apply(this,k);else{var l=this[e].apply(this,k);
+c([l])}}else c(null,"Invalid Call: "+e+" is not found.")}catch(x){c(null,"Invalid Call: An error occured, "+x.message)}};EditorUi.prototype.openDatabase=function(a,b){if(null==this.database){var c=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=c)try{var e=c.open("database",2);e.onupgradeneeded=function(a){try{var c=e.result;1>a.oldVersion&&c.createObjectStore("objects",{keyPath:"key"});2>a.oldVersion&&(c.createObjectStore("files",{keyPath:"title"}),c.createObjectStore("filesInfo",
{keyPath:"title"}),EditorUi.migrateStorageFiles=isLocalStorage)}catch(q){null!=b&&b(q)}};e.onsuccess=mxUtils.bind(this,function(b){var c=e.result;this.database=c;EditorUi.migrateStorageFiles&&(StorageFile.migrate(c),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(a){if(!a||"1"==urlParams.forceMigration){var b=document.createElement("iframe");b.style.display=
"none";b.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+urlParams.forceMigration);document.body.appendChild(b);var c=!0,e=!1,d,f=0,g=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),k=mxUtils.bind(this,function(){f++;l()}),l=mxUtils.bind(this,function(){try{if(f>=d.length)g();else{var a=d[f];StorageFile.getFileContent(this,a,mxUtils.bind(this,
-function(c){null==c||".scratchpad"==a&&c==this.emptyLibraryXml?b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[a]}),"*"):k()}),k)}}catch(H){console.log(H)}}),m=mxUtils.bind(this,function(a){try{this.setDatabaseItem(null,[{title:a.title,size:a.data.length,lastModified:Date.now(),type:a.isLib?"L":"F"},{title:a.title,data:a.data}],k,k,["filesInfo","files"])}catch(H){console.log(H)}});a=mxUtils.bind(this,function(a){try{if(a.source==b.contentWindow){var f=
-{};try{f=JSON.parse(a.data)}catch(I){}"init"==f.event?(b.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=f.event||e||(c?null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?(d=f.resp[0],c=!1,l()):g():null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?m(f.resp[0]):k())}}catch(I){console.log(I)}});window.addEventListener("message",a)}})));a(c);c.onversionchange=
+function(c){null==c||".scratchpad"==a&&c==this.emptyLibraryXml?b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFile",functionArgs:[a]}),"*"):k()}),k)}}catch(H){console.log(H)}}),n=mxUtils.bind(this,function(a){try{this.setDatabaseItem(null,[{title:a.title,size:a.data.length,lastModified:Date.now(),type:a.isLib?"L":"F"},{title:a.title,data:a.data}],k,k,["filesInfo","files"])}catch(H){console.log(H)}});a=mxUtils.bind(this,function(a){try{if(a.source==b.contentWindow){var f=
+{};try{f=JSON.parse(a.data)}catch(I){}"init"==f.event?(b.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),"*"),b.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=f.event||e||(c?null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?(d=f.resp[0],c=!1,l()):g():null!=f.resp&&0<f.resp.length&&null!=f.resp[0]?n(f.resp[0]):k())}}catch(I){console.log(I)}});window.addEventListener("message",a)}})));a(c);c.onversionchange=
function(){c.close()}});e.onerror=b;e.onblocked=function(){}}catch(u){null!=b&&b(u)}else null!=b&&b()}else a(this.database)};EditorUi.prototype.setDatabaseItem=function(a,b,c,d,f){this.openDatabase(mxUtils.bind(this,function(e){try{f=f||"objects";Array.isArray(f)||(f=[f],a=[a],b=[b]);var g=e.transaction(f,"readwrite");g.oncomplete=c;g.onerror=d;for(e=0;e<f.length;e++)g.objectStore(f[e]).put(null!=a&&null!=a[e]?{key:a[e],data:b[e]}:b[e])}catch(v){null!=d&&d(v)}}),d)};EditorUi.prototype.removeDatabaseItem=
function(a,b,c,d){this.openDatabase(mxUtils.bind(this,function(e){d=d||"objects";Array.isArray(d)||(d=[d],a=[a]);e=e.transaction(d,"readwrite");e.oncomplete=b;e.onerror=c;for(var f=0;f<d.length;f++)e.objectStore(d[f])["delete"](a[f])}),c)};EditorUi.prototype.getDatabaseItem=function(a,b,c,d){this.openDatabase(mxUtils.bind(this,function(e){try{d=d||"objects";var f=e.transaction([d],"readonly").objectStore(d).get(a);f.onsuccess=function(){b(f.result)};f.onerror=c}catch(q){null!=c&&c(q)}}),c)};EditorUi.prototype.getDatabaseItems=
function(a,b,c){this.openDatabase(mxUtils.bind(this,function(e){try{c=c||"objects";var d=e.transaction([c],"readonly").objectStore(c).openCursor(IDBKeyRange.lowerBound(0)),f=[];d.onsuccess=function(b){null==b.target.result?a(f):(f.push(b.target.result.value),b.target.result["continue"]())};d.onerror=b}catch(q){null!=b&&b(q)}}),b)};EditorUi.prototype.getDatabaseItemKeys=function(a,b,c){this.openDatabase(mxUtils.bind(this,function(e){try{c=c||"objects";var d=e.transaction([c],"readonly").objectStore(c).getAllKeys();
d.onsuccess=function(){a(d.result)};d.onerror=b}catch(t){null!=b&&b(t)}}),b)};EditorUi.prototype.commentsSupported=function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(a,b){var c=this.getCurrentFile();
null!=c?c.getComments(a,b):a([])};EditorUi.prototype.addComment=function(a,b,c){var e=this.getCurrentFile();null!=e?e.addComment(a,b,c):b(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a=this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,b){var c=this.getCurrentFile();return null!=c?c.newComment(a,b):new DrawioComment(this,null,
a,Date.now(),Date.now(),!1,b)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,b){var c=this.getCurrentFile();null!=c&&c.getRevisions?c.getRevisions(a,b):b({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=
-function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(a,b,c,d,f,g,m,n){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(a,b,c,d,f,g,m,n)};EditorUi.prototype.loadFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(a)};EditorUi.prototype.createSvgDataUri=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");
-return Editor.createSvgDataUri(a)};EditorUi.prototype.embedCssFonts=function(a,b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(a,b)};EditorUi.prototype.embedExtFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(a)};EditorUi.prototype.exportToCanvas=function(a,b,c,d,f,g,m,n,y,x,B,z,A,C,E,D){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(a,b,c,d,f,g,m,n,
+function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(a,b,c,d,f,g,l,m){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(a,b,c,d,f,g,l,m)};EditorUi.prototype.loadFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(a)};EditorUi.prototype.createSvgDataUri=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");
+return Editor.createSvgDataUri(a)};EditorUi.prototype.embedCssFonts=function(a,b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");return this.editor.embedCssFonts(a,b)};EditorUi.prototype.embedExtFonts=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(a)};EditorUi.prototype.exportToCanvas=function(a,b,c,d,f,g,l,m,y,x,B,z,A,C,E,D){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(a,b,c,d,f,g,l,m,
y,x,B,z,A,C,E,D)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(a,b,c,d){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(a,b,c,d)};EditorUi.prototype.convertImageToDataUri=function(a,b){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(a,b)};
EditorUi.prototype.base64Encode=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(a)};EditorUi.prototype.updateCRC=function(a,b,c,d){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(a,b,c,d)};EditorUi.prototype.crc32=function(a){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(a)};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,d,f){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(a,
b,c,d,f)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;for(var a=[],b=0;b<localStorage.length;b++){var c=localStorage.key(b),d=localStorage.getItem(c);if(0<c.length&&(".scratchpad"==c||"."!=c.charAt(0))&&0<d.length){var f="<mxfile "===d.substring(0,8)||"<?xml"===d.substring(0,5)||"\x3c!--[if IE]>"===d.substring(0,12),d="<mxlibrary>"===d.substring(0,11);(f||d)&&a.push(c)}}return a};EditorUi.prototype.getLocalStorageFile=
function(a){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;var b=localStorage.getItem(a);return{title:a,data:b,isLib:"<mxlibrary>"===b.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(a,d,b,c,g,f){function m(){for(var a=B.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==B&&b++;z.style.display=0==b?"block":"none"}function n(a,b,c,e){function d(){b.removeChild(k);b.removeChild(n);g.style.display="block";f.style.display="block"}v={div:b,comment:a,saveCallback:c,deleteOnCancel:e};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),k=document.createElement("textarea");k.className=
-"geCommentEditTxtArea";k.style.minHeight=f.offsetHeight+"px";k.value=a.content;b.insertBefore(k,f);var n=document.createElement("div");n.className="geCommentEditBtns";var l=mxUtils.button(mxResources.get("cancel"),function(){e?(b.parentNode.removeChild(b),m()):d();v=null});l.className="geCommentEditBtn";n.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=k.value;mxUtils.write(f,a.content);d();c(a);v=null});mxEvent.addListener(k,"keydown",mxUtils.bind(this,
-function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(p.click(),mxEvent.consume(a)):27==a.keyCode&&(l.click(),mxEvent.consume(a)))}));p.focus();p.className="geCommentEditBtn gePrimaryBtn";n.appendChild(p);b.insertBefore(n,f);g.style.display="none";f.style.display="none";k.focus()}function e(b,c){c.innerHTML="";var e=new Date(b.modifiedDate),d=a.timeSince(e);null==d&&(d=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
-[d],"{1} ago"));c.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function k(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function l(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function p(a){a.style.border="";a.removeChild(a.busyImg)}function u(b,c,d,f,g){function A(a,c,e){var d=document.createElement("li");d.className="geCommentAction";var f=document.createElement("a");f.className=
-"geCommentActionLnk";mxUtils.write(f,a);d.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});M.appendChild(d);e&&(d.style.display="none")}function C(){function a(b){c.push(e);if(null!=b.replies)for(var d=0;d<b.replies.length;d++)e=e.nextSibling,a(b.replies[d])}var c=[],e=F;a(b);return{pdiv:e,replies:c}}function x(c,e,d,g,m){function z(){k(v);b.addReply(t,function(a){t.id=a;b.replies.push(t);p(v);d&&d()},function(b){q();l(v);a.handleError(b,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},g,m)}function q(){n(t,v,function(a){z()},!0)}var A=C().pdiv,t=a.newComment(c,a.getCurrentUser());t.pCommentId=b.id;null==b.replies&&(b.replies=[]);var v=u(t,b.replies,A,f+1);e?q():z()}if(g||!b.isResolved){z.style.display="none";var F=document.createElement("div");F.className="geCommentContainer";F.setAttribute("data-commentId",b.id);F.style.marginLeft=20*f+5+"px";b.isResolved&&"dark"!=uiTheme&&(F.style.backgroundColor="ghostWhite");
+var CommentsWindow=function(a,d,b,c,g,f){function l(){for(var a=B.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==B&&b++;z.style.display=0==b?"block":"none"}function m(a,b,c,e){function d(){b.removeChild(k);b.removeChild(m);g.style.display="block";f.style.display="block"}v={div:b,comment:a,saveCallback:c,deleteOnCancel:e};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),k=document.createElement("textarea");k.className=
+"geCommentEditTxtArea";k.style.minHeight=f.offsetHeight+"px";k.value=a.content;b.insertBefore(k,f);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){e?(b.parentNode.removeChild(b),l()):d();v=null});n.className="geCommentEditBtn";m.appendChild(n);var p=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=k.value;mxUtils.write(f,a.content);d();c(a);v=null});mxEvent.addListener(k,"keydown",mxUtils.bind(this,
+function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(p.click(),mxEvent.consume(a)):27==a.keyCode&&(n.click(),mxEvent.consume(a)))}));p.focus();p.className="geCommentEditBtn gePrimaryBtn";m.appendChild(p);b.insertBefore(m,f);g.style.display="none";f.style.display="none";k.focus()}function e(b,c){c.innerHTML="";var e=new Date(b.modifiedDate),d=a.timeSince(e);null==d&&(d=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo",
+[d],"{1} ago"));c.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function k(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function n(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function p(a){a.style.border="";a.removeChild(a.busyImg)}function u(b,c,d,f,g){function A(a,c,e){var d=document.createElement("li");d.className="geCommentAction";var f=document.createElement("a");f.className=
+"geCommentActionLnk";mxUtils.write(f,a);d.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});M.appendChild(d);e&&(d.style.display="none")}function C(){function a(b){c.push(e);if(null!=b.replies)for(var d=0;d<b.replies.length;d++)e=e.nextSibling,a(b.replies[d])}var c=[],e=F;a(b);return{pdiv:e,replies:c}}function x(c,e,d,g,l){function z(){k(v);b.addReply(t,function(a){t.id=a;b.replies.push(t);p(v);d&&d()},function(b){A();n(v);a.handleError(b,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},g,l)}function A(){m(t,v,function(a){z()},!0)}var q=C().pdiv,t=a.newComment(c,a.getCurrentUser());t.pCommentId=b.id;null==b.replies&&(b.replies=[]);var v=u(t,b.replies,q,f+1);e?A():z()}if(g||!b.isResolved){z.style.display="none";var F=document.createElement("div");F.className="geCommentContainer";F.setAttribute("data-commentId",b.id);F.style.marginLeft=20*f+5+"px";b.isResolved&&"dark"!=uiTheme&&(F.style.backgroundColor="ghostWhite");
var D=document.createElement("div");D.className="geCommentHeader";var y=document.createElement("img");y.className="geCommentUserImg";y.src=b.user.pictureUrl||Editor.userImage;D.appendChild(y);y=document.createElement("div");y.className="geCommentHeaderTxt";D.appendChild(y);var G=document.createElement("div");G.className="geCommentUsername";mxUtils.write(G,b.user.displayName||"");y.appendChild(G);G=document.createElement("div");G.className="geCommentDate";G.setAttribute("data-commentId",b.id);e(b,
G);y.appendChild(G);F.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,b.content||"");F.appendChild(D);b.isLocked&&(F.style.opacity="0.5");D=document.createElement("div");D.className="geCommentActions";var M=document.createElement("ul");M.className="geCommentActionsList";D.appendChild(M);t||b.isLocked||0!=f&&!q||A(mxResources.get("reply"),function(){x("",!0)},b.isResolved);y=a.getCurrentUser();null==y||y.id!=b.user.id||t||b.isLocked||(A(mxResources.get("edit"),
-function(){function c(){n(b,F,function(){k(F);b.editComment(b.content,function(){p(F)},function(b){l(F);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}c()},b.isResolved),A(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){k(F);b.deleteComment(function(a){if(!0===a){a=F.querySelector(".geCommentTxt");a.innerHTML="";mxUtils.write(a,mxResources.get("msgDeleted"));var e=F.querySelectorAll(".geCommentAction");for(a=
-0;a<e.length;a++)e[a].parentNode.removeChild(e[a]);p(F);F.style.opacity="0.5"}else{e=C(b).replies;for(a=0;a<e.length;a++)B.removeChild(e[a]);for(a=0;a<c.length;a++)if(c[a]==b){c.splice(a,1);break}z.style.display=0==B.getElementsByTagName("div").length?"block":"none"}},function(b){l(F);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));t||b.isLocked||0!=f||A(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=
-a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=b.isResolved?"none":"",d=C(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<d.length;g++){d[g].style.backgroundColor=f;for(var k=d[g].querySelectorAll(".geCommentAction"),n=0;n<k.length;n++)k[n]!=c.parentNode&&(k[n].style.display=e);E||(d[g].style.display="none")}m()}b.isResolved?x(mxResources.get("reOpened")+": ",!0,c,!1,
-!0):x(mxResources.get("markedAsResolved"),!1,c,!0)});F.appendChild(D);null!=d?B.insertBefore(F,d.nextSibling):B.appendChild(F);for(d=0;null!=b.replies&&d<b.replies.length;d++)D=b.replies[d],D.isResolved=b.isResolved,u(D,b.replies,null,f+1,g);null!=v&&(v.comment.id==b.id?(g=b.content,b.content=v.comment.content,n(b,F,v.saveCallback,v.deleteOnCancel),b.content=g):null==v.comment.id&&v.comment.pCommentId==b.id&&(B.appendChild(v.div),n(v.comment,v.div,v.saveCallback,v.deleteOnCancel)));return F}}var t=
+function(){function c(){m(b,F,function(){k(F);b.editComment(b.content,function(){p(F)},function(b){n(F);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}c()},b.isResolved),A(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){k(F);b.deleteComment(function(a){if(!0===a){a=F.querySelector(".geCommentTxt");a.innerHTML="";mxUtils.write(a,mxResources.get("msgDeleted"));var e=F.querySelectorAll(".geCommentAction");for(a=
+0;a<e.length;a++)e[a].parentNode.removeChild(e[a]);p(F);F.style.opacity="0.5"}else{e=C(b).replies;for(a=0;a<e.length;a++)B.removeChild(e[a]);for(a=0;a<c.length;a++)if(c[a]==b){c.splice(a,1);break}z.style.display=0==B.getElementsByTagName("div").length?"block":"none"}},function(b){n(F);a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));t||b.isLocked||0!=f||A(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=
+a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=b.isResolved?"none":"",d=C(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<d.length;g++){d[g].style.backgroundColor=f;for(var k=d[g].querySelectorAll(".geCommentAction"),m=0;m<k.length;m++)k[m]!=c.parentNode&&(k[m].style.display=e);E||(d[g].style.display="none")}l()}b.isResolved?x(mxResources.get("reOpened")+": ",!0,c,!1,
+!0):x(mxResources.get("markedAsResolved"),!1,c,!0)});F.appendChild(D);null!=d?B.insertBefore(F,d.nextSibling):B.appendChild(F);for(d=0;null!=b.replies&&d<b.replies.length;d++)D=b.replies[d],D.isResolved=b.isResolved,u(D,b.replies,null,f+1,g);null!=v&&(v.comment.id==b.id?(g=b.content,b.content=v.comment.content,m(b,F,v.saveCallback,v.deleteOnCancel),b.content=g):null==v.comment.id&&v.comment.pCommentId==b.id&&(B.appendChild(v.div),m(v.comment,v.div,v.saveCallback,v.deleteOnCancel)));return F}}var t=
!a.canComment(),q=a.canReplyToReplies(),v=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var x=EditorUi.compactUi?"26px":"30px",B=document.createElement("div");B.className="geCommentsList";B.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;B.style.bottom=parseInt(x)+7+"px";y.appendChild(B);var z=document.createElement("span");z.style.cssText="display:none;padding-top:10px;text-align:center;";
mxUtils.write(z,mxResources.get("noCommentsFound"));var A=document.createElement("div");A.className="geToolbarContainer geCommentsToolbar";A.style.height=x;A.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";A.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;x=document.createElement("a");x.className="geButton";if(!t){var C=x.cloneNode();C.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';C.setAttribute("title",mxResources.get("create")+
-"...");mxEvent.addListener(C,"click",function(b){function c(){n(e,d,function(b){k(d);a.addComment(b,function(a){b.id=a;D.push(b);p(d)},function(b){l(d);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var e=a.newComment("",a.getCurrentUser()),d=u(e,D,null,0);c();b.preventDefault();mxEvent.consume(b)});A.appendChild(C)}C=x.cloneNode();C.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';C.setAttribute("title",mxResources.get("showResolved"));
+"...");mxEvent.addListener(C,"click",function(b){function c(){m(e,d,function(b){k(d);a.addComment(b,function(a){b.id=a;D.push(b);p(d)},function(b){n(d);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var e=a.newComment("",a.getCurrentUser()),d=u(e,D,null,0);c();b.preventDefault();mxEvent.consume(b)});A.appendChild(C)}C=x.cloneNode();C.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';C.setAttribute("title",mxResources.get("showResolved"));
var E=!1;"dark"==uiTheme&&(C.style.filter="invert(100%)");mxEvent.addListener(C,"click",function(a){this.className=(E=!E)?"geButton geCheckedBtn":"geButton";G();a.preventDefault();mxEvent.consume(a)});A.appendChild(C);a.commentsRefreshNeeded()&&(C=x.cloneNode(),C.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',C.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(C.style.filter="invert(100%)"),mxEvent.addListener(C,"click",function(a){G();a.preventDefault();
mxEvent.consume(a)}),A.appendChild(C));a.commentsSaveNeeded()&&(x=x.cloneNode(),x.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',x.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&&(x.style.filter="invert(100%)"),mxEvent.addListener(x,"click",function(a){f();a.preventDefault();mxEvent.consume(a)}),A.appendChild(x));y.appendChild(A);var D=[],G=mxUtils.bind(this,function(){this.hasError=!1;if(null!=v)try{v.div=v.div.cloneNode(!0);var b=v.div.querySelector(".geCommentEditTxtArea"),
c=v.div.querySelector(".geCommentEditBtns");v.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}catch(F){a.handleError(F)}B.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";q=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});
-for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});B.innerHTML="";B.appendChild(z);z.style.display="block";D=a;for(a=0;a<D.length;a++)b(D[a].replies),u(D[a],D,null,0,E);null!=v&&null==v.comment.id&&null==v.comment.pCommentId&&(B.appendChild(v.div),n(v.comment,v.div,v.saveCallback,v.deleteOnCancel))},mxUtils.bind(this,function(a){B.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=
+for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});B.innerHTML="";B.appendChild(z);z.style.display="block";D=a;for(a=0;a<D.length;a++)b(D[a].replies),u(D[a],D,null,0,E);null!=v&&null==v.comment.id&&null==v.comment.pCommentId&&(B.appendChild(v.div),m(v.comment,v.div,v.saveCallback,v.deleteOnCancel))},mxUtils.bind(this,function(a){B.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=
!0})):B.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});G();this.refreshComments=G;A=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(e(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])}if(this.window.isVisible()){for(var b=B.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var f=b[d];c[f.getAttribute("data-commentId")]=f}for(d=0;d<D.length;d++)a(D[d])}});setInterval(A,6E4);this.refreshCommentsTime=A;this.window=new mxWindow(mxResources.get("comments"),
y,d,b,c,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||
-document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var H=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",H);this.destroy=function(){mxEvent.removeListener(window,"resize",H);this.window.destroy()}},ConfirmDialog=function(a,d,b,c,g,f,m,n,e,k,l){var p=document.createElement("div");
-p.style.textAlign="center";l=null!=l?l:44;var u=document.createElement("div");u.style.padding="6px";u.style.overflow="auto";u.style.maxHeight=l+"px";u.style.lineHeight="1.2em";mxUtils.write(u,d);p.appendChild(u);null!=k&&(u=document.createElement("div"),u.style.padding="6px 0 6px 0",d=document.createElement("img"),d.setAttribute("src",k),u.appendChild(d),p.appendChild(u));k=document.createElement("div");k.style.textAlign="center";k.style.whiteSpace="nowrap";var t=document.createElement("input");t.setAttribute("type",
-"checkbox");f=mxUtils.button(f||mxResources.get("cancel"),function(){a.hideDialog();null!=c&&c(t.checked)});f.className="geBtn";null!=n&&(f.innerHTML=n+"<br>"+f.innerHTML,f.style.paddingBottom="8px",f.style.paddingTop="8px",f.style.height="auto",f.style.width="40%");a.editor.cancelFirst&&k.appendChild(f);var q=mxUtils.button(g||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b(t.checked)});k.appendChild(q);null!=m?(q.innerHTML=m+"<br>"+q.innerHTML+"<br>",q.style.paddingBottom="8px",q.style.paddingTop=
+document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var H=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",H);this.destroy=function(){mxEvent.removeListener(window,"resize",H);this.window.destroy()}},ConfirmDialog=function(a,d,b,c,g,f,l,m,e,k,n){var p=document.createElement("div");
+p.style.textAlign="center";n=null!=n?n:44;var u=document.createElement("div");u.style.padding="6px";u.style.overflow="auto";u.style.maxHeight=n+"px";u.style.lineHeight="1.2em";mxUtils.write(u,d);p.appendChild(u);null!=k&&(u=document.createElement("div"),u.style.padding="6px 0 6px 0",d=document.createElement("img"),d.setAttribute("src",k),u.appendChild(d),p.appendChild(u));k=document.createElement("div");k.style.textAlign="center";k.style.whiteSpace="nowrap";var t=document.createElement("input");t.setAttribute("type",
+"checkbox");f=mxUtils.button(f||mxResources.get("cancel"),function(){a.hideDialog();null!=c&&c(t.checked)});f.className="geBtn";null!=m&&(f.innerHTML=m+"<br>"+f.innerHTML,f.style.paddingBottom="8px",f.style.paddingTop="8px",f.style.height="auto",f.style.width="40%");a.editor.cancelFirst&&k.appendChild(f);var q=mxUtils.button(g||mxResources.get("ok"),function(){a.hideDialog();null!=b&&b(t.checked)});k.appendChild(q);null!=l?(q.innerHTML=l+"<br>"+q.innerHTML+"<br>",q.style.paddingBottom="8px",q.style.paddingTop=
"8px",q.style.height="auto",q.className="geBtn",q.style.width="40%"):q.className="geBtn gePrimaryBtn";a.editor.cancelFirst||k.appendChild(f);p.appendChild(k);e?(k.style.marginTop="10px",u=document.createElement("p"),u.style.marginTop="20px",u.style.marginBottom="0px",u.appendChild(t),g=document.createElement("span"),mxUtils.write(g," "+mxResources.get("rememberThisSetting")),u.appendChild(g),p.appendChild(u),mxEvent.addListener(g,"click",function(a){t.checked=!t.checked;mxEvent.consume(a)})):k.style.marginTop=
"12px";this.init=function(){q.focus()};this.container=p};EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0,extFonts:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0};
-EditorUi.prototype.patchPages=function(a,d,b,c,g){var f={},m=[],n={},e={},k={},l={};if(null!=c&&null!=c[EditorUi.DIFF_UPDATE])for(var p in c[EditorUi.DIFF_UPDATE])f[p]=c[EditorUi.DIFF_UPDATE][p];if(null!=d[EditorUi.DIFF_REMOVE])for(c=0;c<d[EditorUi.DIFF_REMOVE].length;c++)e[d[EditorUi.DIFF_REMOVE][c]]=!0;if(null!=d[EditorUi.DIFF_INSERT])for(c=0;c<d[EditorUi.DIFF_INSERT].length;c++)n[d[EditorUi.DIFF_INSERT][c].previous]=d[EditorUi.DIFF_INSERT][c];if(null!=d[EditorUi.DIFF_UPDATE])for(p in d[EditorUi.DIFF_UPDATE])c=
-d[EditorUi.DIFF_UPDATE][p],null!=c.previous&&(l[c.previous]=p);if(null!=a){var u="";for(c=0;c<a.length;c++){var t=a[c].getId();k[t]=a[c];null!=l[u]||e[t]||null!=d[EditorUi.DIFF_UPDATE]&&null!=d[EditorUi.DIFF_UPDATE][t]&&null!=d[EditorUi.DIFF_UPDATE][t].previous||(l[u]=t);u=t}}var q={},v=mxUtils.bind(this,function(a){var c=null!=a?a.getId():"";if(null!=a&&!q[c]){q[c]=!0;m.push(a);var e=null!=d[EditorUi.DIFF_UPDATE]?d[EditorUi.DIFF_UPDATE][c]:null;null!=e&&(this.updatePageRoot(a),null!=e.name&&a.setName(e.name),
-null!=e.view&&this.patchViewState(a,e.view),null!=e.cells&&this.patchPage(a,e.cells,f[a.getId()],g),!b||null==e.cells&&null==e.view||(a.needsUpdate=!0))}a=l[c];null!=a&&(delete l[c],v(k[a]));a=n[c];null!=a&&(delete n[c],y(a))}),y=mxUtils.bind(this,function(a){a=mxUtils.parseXml(a.data).documentElement;a=new DiagramPage(a);this.updatePageRoot(a);var c=k[a.getId()];null==c?v(a):(c.root=a.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):b&&(c.needsUpdate=!0))});v();for(p in l)v(k[l[p]]),
-delete l[p];for(p in n)y(n[p]),delete n[p];return m};EditorUi.prototype.patchViewState=function(a,d){if(null!=a.viewState&&null!=d){a==this.currentPage&&(a.viewState=this.editor.graph.getViewState());for(var b in d)try{a.viewState[b]=JSON.parse(d[b])}catch(c){}a==this.currentPage&&this.editor.graph.setViewState(a.viewState,!0)}};
-EditorUi.prototype.createParentLookup=function(a,d){function b(a){var b=c[a];null==b&&(b={inserted:[],moved:{}},c[a]=b);return b}var c={};if(null!=d[EditorUi.DIFF_INSERT])for(var g=0;g<d[EditorUi.DIFF_INSERT].length;g++){var f=d[EditorUi.DIFF_INSERT][g],m=null!=f.parent?f.parent:"",n=null!=f.previous?f.previous:"";b(m).inserted[n]=f}if(null!=d[EditorUi.DIFF_UPDATE])for(var e in d[EditorUi.DIFF_UPDATE])f=d[EditorUi.DIFF_UPDATE][e],null!=f.previous&&(m=f.parent,null==m&&(g=a.getCell(e),null!=g&&(g=
-a.getParent(g),null!=g&&(m=g.getId()))),null!=m&&(b(m).moved[f.previous]=e));return c};
-EditorUi.prototype.patchPage=function(a,d,b,c){var g=a==this.currentPage?this.editor.graph.model:new mxGraphModel(a.root),f=this.createParentLookup(g,d);g.beginUpdate();try{var m=g.updateEdgeParent,n=new mxDictionary,e=[];g.updateEdgeParent=function(a,b){!n.get(a)&&c&&(n.put(a,!0),e.push(a))};var k=f[""],l=null!=k&&null!=k.inserted?k.inserted[""]:null,p=null;null!=l&&(p=this.getCellForJson(l));if(null==p){var u=null!=k&&null!=k.moved?k.moved[""]:null;null!=u&&(p=g.getCell(u))}null!=p&&(g.setRoot(p),
-a.root=p);this.patchCellRecursive(a,g,g.root,f,d);if(null!=d[EditorUi.DIFF_REMOVE])for(var t=0;t<d[EditorUi.DIFF_REMOVE].length;t++){var q=g.getCell(d[EditorUi.DIFF_REMOVE][t]);null!=q&&g.remove(q)}if(null!=d[EditorUi.DIFF_UPDATE]){var v=null!=b&&null!=b.cells?b.cells[EditorUi.DIFF_UPDATE]:null;for(u in d[EditorUi.DIFF_UPDATE])this.patchCell(g,g.getCell(u),d[EditorUi.DIFF_UPDATE][u],null!=v?v[u]:null)}if(null!=d[EditorUi.DIFF_INSERT])for(t=0;t<d[EditorUi.DIFF_INSERT].length;t++)l=d[EditorUi.DIFF_INSERT][t],
-q=g.getCell(l.id),null!=q&&(g.setTerminal(q,g.getCell(l.source),!0),g.setTerminal(q,g.getCell(l.target),!1));g.updateEdgeParent=m;if(c&&0<e.length)for(t=0;t<e.length;t++)g.contains(e[t])&&g.updateEdgeParent(e[t])}finally{g.endUpdate()}};
-EditorUi.prototype.patchCellRecursive=function(a,d,b,c,g){if(null!=b){for(var f=c[b.getId()],m=null!=f&&null!=f.inserted?f.inserted:{},f=null!=f&&null!=f.moved?f.moved:{},n=0,e=d.getChildCount(b),k="",l=0;l<e;l++){var p=d.getChildAt(b,l).getId();null==f[k]&&(null==g[EditorUi.DIFF_UPDATE]||null==g[EditorUi.DIFF_UPDATE][p]||null==g[EditorUi.DIFF_UPDATE][p].previous&&null==g[EditorUi.DIFF_UPDATE][p].parent)&&(f[k]=p);k=p}e=mxUtils.bind(this,function(e,f){var k=null!=e?e.getId():"";if(null!=e&&f){var m=
-d.getCell(k);null!=m&&m!=e&&(e=null)}null!=e&&(d.getChildAt(b,n)!=e&&d.add(b,e,n),this.patchCellRecursive(a,d,e,c,g),n++);return k});for(k=[null];0<k.length;)if(l=k.shift(),l=e(null!=l?l.child:null,null!=l?l.insert:!1),p=f[l],null!=p&&(delete f[l],k.push({child:d.getCell(p)})),p=m[l],null!=p&&(delete m[l],k.push({child:this.getCellForJson(p),insert:!0})),0==k.length){for(l in f)k.push({child:d.getCell(f[l])}),delete f[l];for(l in m)k.push({child:this.getCellForJson(m[l]),insert:!0}),delete m[l]}}};
+EditorUi.prototype.patchPages=function(a,d,b,c,g){var f={},l=[],m={},e={},k={},n={};if(null!=c&&null!=c[EditorUi.DIFF_UPDATE])for(var p in c[EditorUi.DIFF_UPDATE])f[p]=c[EditorUi.DIFF_UPDATE][p];if(null!=d[EditorUi.DIFF_REMOVE])for(c=0;c<d[EditorUi.DIFF_REMOVE].length;c++)e[d[EditorUi.DIFF_REMOVE][c]]=!0;if(null!=d[EditorUi.DIFF_INSERT])for(c=0;c<d[EditorUi.DIFF_INSERT].length;c++)m[d[EditorUi.DIFF_INSERT][c].previous]=d[EditorUi.DIFF_INSERT][c];if(null!=d[EditorUi.DIFF_UPDATE])for(p in d[EditorUi.DIFF_UPDATE])c=
+d[EditorUi.DIFF_UPDATE][p],null!=c.previous&&(n[c.previous]=p);if(null!=a){var u="";for(c=0;c<a.length;c++){var t=a[c].getId();k[t]=a[c];null!=n[u]||e[t]||null!=d[EditorUi.DIFF_UPDATE]&&null!=d[EditorUi.DIFF_UPDATE][t]&&null!=d[EditorUi.DIFF_UPDATE][t].previous||(n[u]=t);u=t}}var q={},v=mxUtils.bind(this,function(a){var c=null!=a?a.getId():"";if(null!=a&&!q[c]){q[c]=!0;l.push(a);var e=null!=d[EditorUi.DIFF_UPDATE]?d[EditorUi.DIFF_UPDATE][c]:null;null!=e&&(this.updatePageRoot(a),null!=e.name&&a.setName(e.name),
+null!=e.view&&this.patchViewState(a,e.view),null!=e.cells&&this.patchPage(a,e.cells,f[a.getId()],g),!b||null==e.cells&&null==e.view||(a.needsUpdate=!0))}a=n[c];null!=a&&(delete n[c],v(k[a]));a=m[c];null!=a&&(delete m[c],y(a))}),y=mxUtils.bind(this,function(a){a=mxUtils.parseXml(a.data).documentElement;a=new DiagramPage(a);this.updatePageRoot(a);var c=k[a.getId()];null==c?v(a):(c.root=a.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):b&&(c.needsUpdate=!0))});v();for(p in n)v(k[n[p]]),
+delete n[p];for(p in m)y(m[p]),delete m[p];return l};EditorUi.prototype.patchViewState=function(a,d){if(null!=a.viewState&&null!=d){a==this.currentPage&&(a.viewState=this.editor.graph.getViewState());for(var b in d)try{a.viewState[b]=JSON.parse(d[b])}catch(c){}a==this.currentPage&&this.editor.graph.setViewState(a.viewState,!0)}};
+EditorUi.prototype.createParentLookup=function(a,d){function b(a){var b=c[a];null==b&&(b={inserted:[],moved:{}},c[a]=b);return b}var c={};if(null!=d[EditorUi.DIFF_INSERT])for(var g=0;g<d[EditorUi.DIFF_INSERT].length;g++){var f=d[EditorUi.DIFF_INSERT][g],l=null!=f.parent?f.parent:"",m=null!=f.previous?f.previous:"";b(l).inserted[m]=f}if(null!=d[EditorUi.DIFF_UPDATE])for(var e in d[EditorUi.DIFF_UPDATE])f=d[EditorUi.DIFF_UPDATE][e],null!=f.previous&&(l=f.parent,null==l&&(g=a.getCell(e),null!=g&&(g=
+a.getParent(g),null!=g&&(l=g.getId()))),null!=l&&(b(l).moved[f.previous]=e));return c};
+EditorUi.prototype.patchPage=function(a,d,b,c){var g=a==this.currentPage?this.editor.graph.model:new mxGraphModel(a.root),f=this.createParentLookup(g,d);g.beginUpdate();try{var l=g.updateEdgeParent,m=new mxDictionary,e=[];g.updateEdgeParent=function(a,b){!m.get(a)&&c&&(m.put(a,!0),e.push(a))};var k=f[""],n=null!=k&&null!=k.inserted?k.inserted[""]:null,p=null;null!=n&&(p=this.getCellForJson(n));if(null==p){var u=null!=k&&null!=k.moved?k.moved[""]:null;null!=u&&(p=g.getCell(u))}null!=p&&(g.setRoot(p),
+a.root=p);this.patchCellRecursive(a,g,g.root,f,d);if(null!=d[EditorUi.DIFF_REMOVE])for(var t=0;t<d[EditorUi.DIFF_REMOVE].length;t++){var q=g.getCell(d[EditorUi.DIFF_REMOVE][t]);null!=q&&g.remove(q)}if(null!=d[EditorUi.DIFF_UPDATE]){var v=null!=b&&null!=b.cells?b.cells[EditorUi.DIFF_UPDATE]:null;for(u in d[EditorUi.DIFF_UPDATE])this.patchCell(g,g.getCell(u),d[EditorUi.DIFF_UPDATE][u],null!=v?v[u]:null)}if(null!=d[EditorUi.DIFF_INSERT])for(t=0;t<d[EditorUi.DIFF_INSERT].length;t++)n=d[EditorUi.DIFF_INSERT][t],
+q=g.getCell(n.id),null!=q&&(g.setTerminal(q,g.getCell(n.source),!0),g.setTerminal(q,g.getCell(n.target),!1));g.updateEdgeParent=l;if(c&&0<e.length)for(t=0;t<e.length;t++)g.contains(e[t])&&g.updateEdgeParent(e[t])}finally{g.endUpdate()}};
+EditorUi.prototype.patchCellRecursive=function(a,d,b,c,g){if(null!=b){for(var f=c[b.getId()],l=null!=f&&null!=f.inserted?f.inserted:{},f=null!=f&&null!=f.moved?f.moved:{},m=0,e=d.getChildCount(b),k="",n=0;n<e;n++){var p=d.getChildAt(b,n).getId();null==f[k]&&(null==g[EditorUi.DIFF_UPDATE]||null==g[EditorUi.DIFF_UPDATE][p]||null==g[EditorUi.DIFF_UPDATE][p].previous&&null==g[EditorUi.DIFF_UPDATE][p].parent)&&(f[k]=p);k=p}e=mxUtils.bind(this,function(e,f){var k=null!=e?e.getId():"";if(null!=e&&f){var l=
+d.getCell(k);null!=l&&l!=e&&(e=null)}null!=e&&(d.getChildAt(b,m)!=e&&d.add(b,e,m),this.patchCellRecursive(a,d,e,c,g),m++);return k});for(k=[null];0<k.length;)if(n=k.shift(),n=e(null!=n?n.child:null,null!=n?n.insert:!1),p=f[n],null!=p&&(delete f[n],k.push({child:d.getCell(p)})),p=l[n],null!=p&&(delete l[n],k.push({child:this.getCellForJson(p),insert:!0})),0==k.length){for(n in f)k.push({child:d.getCell(f[n])}),delete f[n];for(n in l)k.push({child:this.getCellForJson(l[n]),insert:!0}),delete l[n]}}};
EditorUi.prototype.patchCell=function(a,d,b,c){if(null!=d&&null!=b){if(null==c||null==c.xmlValue&&(null==c.value||""==c.value))"value"in b?a.setValue(d,b.value):null!=b.xmlValue&&a.setValue(d,mxUtils.parseXml(b.xmlValue).documentElement);null!=c&&null!=c.style||null==b.style||a.setStyle(d,b.style);null!=b.visible&&a.setVisible(d,1==b.visible);null!=b.collapsed&&a.setCollapsed(d,1==b.collapsed);null!=b.vertex&&(d.vertex=1==b.vertex);null!=b.edge&&(d.edge=1==b.edge);null!=b.connectable&&(d.connectable=
1==b.connectable);null!=b.geometry&&a.setGeometry(d,this.codec.decode(mxUtils.parseXml(b.geometry).documentElement));null!=b.source&&a.setTerminal(d,a.getCell(b.source),!0);null!=b.target&&a.setTerminal(d,a.getCell(b.target),!1);for(var g in b)this.cellProperties[g]||(d[g]=b[g])}};
EditorUi.prototype.getPagesForNode=function(a,d){var b=this.editor.extractGraphModel(a,!0,!0);null!=b&&(a=b);var b=a.getElementsByTagName(d||"diagram"),c=[];if(0<b.length)for(var g=0;g<b.length;g++){var f=new DiagramPage(b[g]);this.updatePageRoot(f,!0);c.push(f)}else"mxGraphModel"==a.nodeName&&(f=new DiagramPage(a.ownerDocument.createElement("diagram")),f.setName(mxResources.get("pageWithNumber",[1])),mxUtils.setTextContent(f.node,Graph.compressNode(a,!0)),c.push(f));return c};
-EditorUi.prototype.diffPages=function(a,d){for(var b=[],c=[],g={},f={},m={},n=null,e=0;e<d.length;e++)f[d[e].getId()]={page:d[e],prev:n},n=d[e];n=null;for(e=0;e<a.length;e++){var k=a[e].getId(),l=f[k];if(null==l)c.push(k);else{var p=this.diffPage(a[e],l.page),u={};0<Object.keys(p).length&&(u.cells=p);p=this.diffViewState(a[e],l.page);0<Object.keys(p).length&&(u.view=p);if((null!=l.prev?null==n:null!=n)||null!=n&&null!=l.prev&&n.getId()!=l.prev.getId())u.previous=null!=l.prev?l.prev.getId():"";null!=
-l.page.getName()&&a[e].getName()!=l.page.getName()&&(u.name=l.page.getName());0<Object.keys(u).length&&(m[k]=u)}delete f[a[e].getId()];n=a[e]}for(k in f)l=f[k],b.push({data:mxUtils.getXml(l.page.node),previous:null!=l.prev?l.prev.getId():""});0<Object.keys(m).length&&(g[EditorUi.DIFF_UPDATE]=m);0<c.length&&(g[EditorUi.DIFF_REMOVE]=c);0<b.length&&(g[EditorUi.DIFF_INSERT]=b);return g};
+EditorUi.prototype.diffPages=function(a,d){for(var b=[],c=[],g={},f={},l={},m=null,e=0;e<d.length;e++)f[d[e].getId()]={page:d[e],prev:m},m=d[e];m=null;for(e=0;e<a.length;e++){var k=a[e].getId(),n=f[k];if(null==n)c.push(k);else{var p=this.diffPage(a[e],n.page),u={};0<Object.keys(p).length&&(u.cells=p);p=this.diffViewState(a[e],n.page);0<Object.keys(p).length&&(u.view=p);if((null!=n.prev?null==m:null!=m)||null!=m&&null!=n.prev&&m.getId()!=n.prev.getId())u.previous=null!=n.prev?n.prev.getId():"";null!=
+n.page.getName()&&a[e].getName()!=n.page.getName()&&(u.name=n.page.getName());0<Object.keys(u).length&&(l[k]=u)}delete f[a[e].getId()];m=a[e]}for(k in f)n=f[k],b.push({data:mxUtils.getXml(n.page.node),previous:null!=n.prev?n.prev.getId():""});0<Object.keys(l).length&&(g[EditorUi.DIFF_UPDATE]=l);0<c.length&&(g[EditorUi.DIFF_REMOVE]=c);0<b.length&&(g[EditorUi.DIFF_INSERT]=b);return g};
EditorUi.prototype.createCellLookup=function(a,d,b){b=null!=b?b:{};b[a.getId()]={cell:a,prev:d};var c=a.getChildCount();d=null;for(var g=0;g<c;g++){var f=a.getChildAt(g);this.createCellLookup(f,d,b);d=f}return b};
-EditorUi.prototype.diffCellRecursive=function(a,d,b,c,g){c=null!=c?c:{};var f=b[a.getId()];delete b[a.getId()];if(null==f)g.push(a.getId());else{var m=this.diffCell(a,f.cell);if(null!=m.parent||(null!=f.prev?null==d:null!=d)||null!=d&&null!=f.prev&&d.getId()!=f.prev.getId())m.previous=null!=f.prev?f.prev.getId():"";0<Object.keys(m).length&&(c[a.getId()]=m)}f=a.getChildCount();d=null;for(m=0;m<f;m++){var n=a.getChildAt(m);this.diffCellRecursive(n,d,b,c,g);d=n}return c};
-EditorUi.prototype.diffPage=function(a,d){var b=[],c=[],g={};this.updatePageRoot(a);this.updatePageRoot(d);var f=this.createCellLookup(d.root),m=this.diffCellRecursive(a.root,null,f,m,c),n;for(n in f){var e=f[n];b.push(this.getJsonForCell(e.cell,e.prev))}0<Object.keys(m).length&&(g[EditorUi.DIFF_UPDATE]=m);0<c.length&&(g[EditorUi.DIFF_REMOVE]=c);0<b.length&&(g[EditorUi.DIFF_INSERT]=b);return g};
-EditorUi.prototype.diffViewState=function(a,d){var b=a.viewState,c=d.viewState,g={};d==this.currentPage&&(c=this.editor.graph.getViewState());if(null!=b&&null!=c)for(var f in this.viewStateProperties){var m=JSON.stringify(b[f]),n=JSON.stringify(c[f]);m!=n&&(g[f]=n)}return g};
+EditorUi.prototype.diffCellRecursive=function(a,d,b,c,g){c=null!=c?c:{};var f=b[a.getId()];delete b[a.getId()];if(null==f)g.push(a.getId());else{var l=this.diffCell(a,f.cell);if(null!=l.parent||(null!=f.prev?null==d:null!=d)||null!=d&&null!=f.prev&&d.getId()!=f.prev.getId())l.previous=null!=f.prev?f.prev.getId():"";0<Object.keys(l).length&&(c[a.getId()]=l)}f=a.getChildCount();d=null;for(l=0;l<f;l++){var m=a.getChildAt(l);this.diffCellRecursive(m,d,b,c,g);d=m}return c};
+EditorUi.prototype.diffPage=function(a,d){var b=[],c=[],g={};this.updatePageRoot(a);this.updatePageRoot(d);var f=this.createCellLookup(d.root),l=this.diffCellRecursive(a.root,null,f,l,c),m;for(m in f){var e=f[m];b.push(this.getJsonForCell(e.cell,e.prev))}0<Object.keys(l).length&&(g[EditorUi.DIFF_UPDATE]=l);0<c.length&&(g[EditorUi.DIFF_REMOVE]=c);0<b.length&&(g[EditorUi.DIFF_INSERT]=b);return g};
+EditorUi.prototype.diffViewState=function(a,d){var b=a.viewState,c=d.viewState,g={};d==this.currentPage&&(c=this.editor.graph.getViewState());if(null!=b&&null!=c)for(var f in this.viewStateProperties){var l=JSON.stringify(b[f]),m=JSON.stringify(c[f]);l!=m&&(g[f]=m)}return g};
EditorUi.prototype.getCellForJson=function(a){var d=null!=a.geometry?this.codec.decode(mxUtils.parseXml(a.geometry).documentElement):null,b=a.value;null!=a.xmlValue&&(b=mxUtils.parseXml(a.xmlValue).documentElement);d=new mxCell(b,d,a.style);d.connectable=0!=a.connectable;d.collapsed=1==a.collapsed;d.visible=0!=a.visible;d.vertex=1==a.vertex;d.edge=1==a.edge;d.id=a.id;for(var c in a)this.cellProperties[c]||(d[c]=a[c]);return d};
EditorUi.prototype.getJsonForCell=function(a,d){var b={id:a.getId()};a.vertex&&(b.vertex=1);a.edge&&(b.edge=1);a.connectable||(b.connectable=0);null!=a.parent&&(b.parent=a.parent.getId());null!=d&&(b.previous=d.getId());null!=a.source&&(b.source=a.source.getId());null!=a.target&&(b.target=a.target.getId());null!=a.style&&(b.style=a.style);null!=a.geometry&&(b.geometry=mxUtils.getXml(this.codec.encode(a.geometry)));a.collapsed&&(b.collapsed=1);a.visible||(b.visible=0);null!=a.value&&("object"===typeof a.value&&
"number"===typeof a.value.nodeType&&"string"===typeof a.value.nodeName&&"function"===typeof a.value.getAttribute?b.xmlValue=mxUtils.getXml(a.value):b.value=a.value);for(var c in a)this.cellProperties[c]||"function"===typeof a[c]||(b[c]=a[c]);return b};
@@ -10542,22 +10542,22 @@ DrawioFileSync.prototype.fileChangedNotify=function(){if(this.isValidState())if(
DrawioFileSync.prototype.fileChanged=function(a,d,b,c){return this.notifyThread=c=window.setTimeout(mxUtils.bind(this,function(){null!=b&&b()||(this.isValidState()?this.file.loadPatchDescriptor(mxUtils.bind(this,function(c){null!=b&&b()||(this.isValidState()?this.catchup(c,a,d,b):null!=d&&d())}),d):null!=d&&d())}),c?this.cacheReadyDelay:0)};
DrawioFileSync.prototype.reloadDescriptor=function(){this.file.loadDescriptor(mxUtils.bind(this,function(a){null!=a?(this.file.setDescriptorRevisionId(a,this.file.getCurrentRevisionId()),this.updateDescriptor(a),this.fileChangedNotify()):(this.file.inConflictState=!0,this.file.handleFileError())}),mxUtils.bind(this,function(a){this.file.inConflictState=!0;this.file.handleFileError(a)}))};
DrawioFileSync.prototype.updateDescriptor=function(a){this.file.setDescriptor(a);this.file.descriptorChanged();this.start()};
-DrawioFileSync.prototype.catchup=function(a,d,b,c){if(null!=a&&(null==c||!c())){var g=this.file.getDescriptorRevisionId(a),f=this.file.getCurrentRevisionId();if(f==g)this.file.patchDescriptor(this.file.getDescriptor(),a),null!=d&&d();else if(this.isValidState()){var m=this.file.getDescriptorSecret(a);if(null==m||"1"==urlParams.lockdown)this.reload(d,b,c);else{var n=0,e=!1,k=mxUtils.bind(this,function(){if(null==c||!c())if(f!=this.file.getCurrentRevisionId())null!=d&&d();else if(this.isValidState()){var l=
-!0,p=window.setTimeout(mxUtils.bind(this,function(){l=!1;this.reload(d,b,c)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(f)+"&to="+encodeURIComponent(g)+(null!=m?"&secret="+encodeURIComponent(m):""),mxUtils.bind(this,function(g){this.file.stats.bytesReceived+=g.getText().length;window.clearTimeout(p);if(l&&(null==c||!c()))if(f!=this.file.getCurrentRevisionId())null!=d&&d();else if(this.isValidState()){var m=null,q=[];if(200<=
-g.getStatus()&&299>=g.getStatus()&&0<g.getText().length)try{var u=JSON.parse(g.getText());if(null!=u&&0<u.length)for(var y=0;y<u.length;y++){var x=this.stringToObject(u[y]);if(x.v>DrawioFileSync.PROTOCOL){e=!0;q=[];break}else if(x.v===DrawioFileSync.PROTOCOL&&null!=x.d)m=x.d.checksum,q.push(x.d.patch);else{e=!0;q=[];break}}}catch(B){q=[],null!=window.console&&"1"==urlParams.test&&console.log(B)}try{0<q.length?(this.file.stats.cacheHits++,this.merge(q,m,a,d,b,c)):n<=this.maxCacheReadyRetries-1&&!e&&
-401!=g.getStatus()&&503!=g.getStatus()?(n++,this.file.stats.cacheMiss++,window.setTimeout(k,(n+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(d,b,c))}catch(B){null!=b&&b(B)}}else null!=b&&b()}))}else null!=b&&b()});window.setTimeout(k,this.cacheReadyDelay)}}else null!=b&&b()}};
+DrawioFileSync.prototype.catchup=function(a,d,b,c){if(null!=a&&(null==c||!c())){var g=this.file.getDescriptorRevisionId(a),f=this.file.getCurrentRevisionId();if(f==g)this.file.patchDescriptor(this.file.getDescriptor(),a),null!=d&&d();else if(this.isValidState()){var l=this.file.getDescriptorSecret(a);if(null==l||"1"==urlParams.lockdown)this.reload(d,b,c);else{var m=0,e=!1,k=mxUtils.bind(this,function(){if(null==c||!c())if(f!=this.file.getCurrentRevisionId())null!=d&&d();else if(this.isValidState()){var n=
+!0,p=window.setTimeout(mxUtils.bind(this,function(){n=!1;this.reload(d,b,c)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(f)+"&to="+encodeURIComponent(g)+(null!=l?"&secret="+encodeURIComponent(l):""),mxUtils.bind(this,function(g){this.file.stats.bytesReceived+=g.getText().length;window.clearTimeout(p);if(n&&(null==c||!c()))if(f!=this.file.getCurrentRevisionId())null!=d&&d();else if(this.isValidState()){var l=null,q=[];if(200<=
+g.getStatus()&&299>=g.getStatus()&&0<g.getText().length)try{var u=JSON.parse(g.getText());if(null!=u&&0<u.length)for(var y=0;y<u.length;y++){var x=this.stringToObject(u[y]);if(x.v>DrawioFileSync.PROTOCOL){e=!0;q=[];break}else if(x.v===DrawioFileSync.PROTOCOL&&null!=x.d)l=x.d.checksum,q.push(x.d.patch);else{e=!0;q=[];break}}}catch(B){q=[],null!=window.console&&"1"==urlParams.test&&console.log(B)}try{0<q.length?(this.file.stats.cacheHits++,this.merge(q,l,a,d,b,c)):m<=this.maxCacheReadyRetries-1&&!e&&
+401!=g.getStatus()&&503!=g.getStatus()?(m++,this.file.stats.cacheMiss++,window.setTimeout(k,(m+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(d,b,c))}catch(B){null!=b&&b(B)}}else null!=b&&b()}))}else null!=b&&b()});window.setTimeout(k,this.cacheReadyDelay)}}else null!=b&&b()}};
DrawioFileSync.prototype.reload=function(a,d,b,c){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=d&&d(a)}),b,c)};
-DrawioFileSync.prototype.merge=function(a,d,b,c,g,f){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;var m=this.file.ignorePatches(a),n=this.file.getDescriptorRevisionId(b);if(!m){for(f=0;f<a.length;f++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,
-a[f]);var e=null!=d?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentRevisionId(),"to",n,"etag",this.file.getDescriptorEtag(b),"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",a,"checksum",d==e,d);if(null!=d&&d!=e){var k=this.ui.hashValue(this.file.getCurrentRevisionId()),l=this.ui.hashValue(n);this.file.checksumError(g,a,"From: "+k+"\nTo: "+l+"\nChecksum: "+d+"\nCurrent: "+e,n,"merge");
-return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.patchDescriptor(this.file.getDescriptor(),b);this.file.backupPatch=null;null!=c&&c()}catch(t){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=g&&g(t);try{if(this.file.errorReportsEnabled)k=this.ui.hashValue(this.file.getCurrentRevisionId()),l=this.ui.hashValue(n),this.file.sendErrorReport("Error in merge",
-"From: "+k+"\nTo: "+l+"\nChecksum: "+d+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),t);else{var p=this.file.getCurrentUser(),u=null!=p?p.id:"unknown";EditorUi.logError("Error in merge",null,this.file.getMode()+"."+this.file.getId(),u,t)}}catch(q){}}};
+DrawioFileSync.prototype.merge=function(a,d,b,c,g,f){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;var l=this.file.ignorePatches(a),m=this.file.getDescriptorRevisionId(b);if(!l){for(f=0;f<a.length;f++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,
+a[f]);var e=null!=d?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentRevisionId(),"to",m,"etag",this.file.getDescriptorEtag(b),"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",a,"checksum",d==e,d);if(null!=d&&d!=e){var k=this.ui.hashValue(this.file.getCurrentRevisionId()),n=this.ui.hashValue(m);this.file.checksumError(g,a,"From: "+k+"\nTo: "+n+"\nChecksum: "+d+"\nCurrent: "+e,m,"merge");
+return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.patchDescriptor(this.file.getDescriptor(),b);this.file.backupPatch=null;null!=c&&c()}catch(t){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=g&&g(t);try{if(this.file.errorReportsEnabled)k=this.ui.hashValue(this.file.getCurrentRevisionId()),n=this.ui.hashValue(m),this.file.sendErrorReport("Error in merge",
+"From: "+k+"\nTo: "+n+"\nChecksum: "+d+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),t);else{var p=this.file.getCurrentUser(),u=null!=p?p.id:"unknown";EditorUi.logError("Error in merge",null,this.file.getMode()+"."+this.file.getId(),u,t)}}catch(q){}}};
DrawioFileSync.prototype.descriptorChanged=function(a){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var d=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),b=this.file.getCurrentRevisionId(),c=this.objectToString({});mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(a)+"&to="+encodeURIComponent(b)+"&msg="+encodeURIComponent(d)+"&data="+encodeURIComponent(c));this.file.stats.bytesSent+=c.length;this.file.stats.msgSent++}this.updateStatus()};
DrawioFileSync.prototype.objectToString=function(a){a=Graph.compress(JSON.stringify(a));null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.encrypt(a,this.key).toString());return a};DrawioFileSync.prototype.stringToObject=function(a){null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.decrypt(a,this.key).toString(CryptoJS.enc.Utf8));return JSON.parse(Graph.decompress(a))};
DrawioFileSync.prototype.createToken=function(a,d,b){var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;b({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&secret="+encodeURIComponent(a),mxUtils.bind(this,function(a){window.clearTimeout(g);c&&(200<=a.getStatus()&&299>=a.getStatus()?d(a.getText()):b({code:a.getStatus(),message:"Token Error "+a.getStatus()}))}))};
-DrawioFileSync.prototype.fileSaved=function(a,d,b,c,g){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline(!0)&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId)){var f=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),m=this.file.getDescriptorSecret(this.file.getDescriptor()),n=this.file.getDescriptorRevisionId(d),e=this.file.getCurrentRevisionId();if(null==
-m||"1"==urlParams.lockdown)this.file.stats.msgSent++,mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(f),function(){}),null!=b&&b(),"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",n,"to",e,"etag",this.file.getCurrentEtag(),"notify");else{var k=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);d=this.file.getDescriptorSecret(d);var l=this.ui.getHashValueForPages(a),k=this.ui.diffPages(k,
-a),p=this.objectToString(this.createMessage({patch:k,checksum:l}));this.file.stats.bytesSent+=p.length;this.file.stats.msgSent++;var u=!0,t=window.setTimeout(mxUtils.bind(this,function(){u=!1;c({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(n)+"&to="+encodeURIComponent(e)+"&msg="+encodeURIComponent(f)+(null!=m?"&secret="+encodeURIComponent(m):"")+(null!=d?"&last-secret="+encodeURIComponent(d):
-"")+(p.length<this.maxCacheEntrySize?"&data="+encodeURIComponent(p):"")+(null!=g?"&token="+encodeURIComponent(g):""),mxUtils.bind(this,function(a){window.clearTimeout(t);u&&(200<=a.getStatus()&&299>=a.getStatus()?null!=b&&b():c({code:a.getStatus(),message:a.getStatus()}))}));"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",n,"to",e,"etag",this.file.getCurrentEtag(),p.length,"bytes","diff",k,"checksum",l)}}this.file.shadowPages=a};
+DrawioFileSync.prototype.fileSaved=function(a,d,b,c,g){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline(!0)&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId)){var f=this.objectToString(this.createMessage({m:this.lastModified.getTime()})),l=this.file.getDescriptorSecret(this.file.getDescriptor()),m=this.file.getDescriptorRevisionId(d),e=this.file.getCurrentRevisionId();if(null==
+l||"1"==urlParams.lockdown)this.file.stats.msgSent++,mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&msg="+encodeURIComponent(f),function(){}),null!=b&&b(),"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",m,"to",e,"etag",this.file.getCurrentEtag(),"notify");else{var k=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);d=this.file.getDescriptorSecret(d);var n=this.ui.getHashValueForPages(a),k=this.ui.diffPages(k,
+a),p=this.objectToString(this.createMessage({patch:k,checksum:n}));this.file.stats.bytesSent+=p.length;this.file.stats.msgSent++;var u=!0,t=window.setTimeout(mxUtils.bind(this,function(){u=!1;c({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout);mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(m)+"&to="+encodeURIComponent(e)+"&msg="+encodeURIComponent(f)+(null!=l?"&secret="+encodeURIComponent(l):"")+(null!=d?"&last-secret="+encodeURIComponent(d):
+"")+(p.length<this.maxCacheEntrySize?"&data="+encodeURIComponent(p):"")+(null!=g?"&token="+encodeURIComponent(g):""),mxUtils.bind(this,function(a){window.clearTimeout(t);u&&(200<=a.getStatus()&&299>=a.getStatus()?null!=b&&b():c({code:a.getStatus(),message:a.getStatus()}))}));"1"==urlParams.test&&EditorUi.debug("Sync.fileSaved",[this],"from",m,"to",e,"etag",this.file.getCurrentEtag(),p.length,"bytes","diff",k,"checksum",n)}}this.file.shadowPages=a};
DrawioFileSync.prototype.getIdParameters=function(){var a="id="+this.channelId;null!=this.pusher&&null!=this.pusher.connection&&null!=this.pusher.connection.socket_id&&(a+="&sid="+this.pusher.connection.socket_id);return a};DrawioFileSync.prototype.createMessage=function(a){return{v:DrawioFileSync.PROTOCOL,d:a,c:this.clientId}};
DrawioFileSync.prototype.fileConflict=function(a,d,b){this.catchupRetryCount++;this.catchupRetryCount<this.maxCatchupRetries?(this.file.stats.conflicts++,null!=a?this.catchup(a,d,b):this.fileChanged(d,b)):(this.file.stats.timeouts++,this.catchupRetryCount=0,null!=b&&b({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")}))};
DrawioFileSync.prototype.stop=function(){null!=this.pusher&&(EditorUi.debug("Sync.stop",[this]),null!=this.pusher.connection&&(this.pusher.connection.unbind("state_change",this.connectionListener),this.pusher.connection.unbind("error",this.pusherErrorListener)),null!=this.channel&&(this.channel.unbind("changed",this.changeListener),this.channel=null),this.pusher.disconnect(),this.pusher=null);this.updateOnlineState();this.updateStatus()};
@@ -10568,28 +10568,28 @@ Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as=
mxAsyncCanvas.prototype.decWaitCounter=function(){this.waitCounter--;0==this.waitCounter&&null!=this.onComplete&&(this.onComplete(),this.onComplete=null)};mxAsyncCanvas.prototype.updateFont=function(){var a="";(this.state.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="bold ");(this.state.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="italic ");this.ctx.font=a+this.state.fontSize+"px "+this.state.fontFamily};mxAsyncCanvas.prototype.rotate=function(a,d,b,c,g){};
mxAsyncCanvas.prototype.setAlpha=function(a){this.state.alpha=a};mxAsyncCanvas.prototype.setFontColor=function(a){this.state.fontColor=a};mxAsyncCanvas.prototype.setFontBackgroundColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBackgroundColor=a};mxAsyncCanvas.prototype.setFontBorderColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBorderColor=a};mxAsyncCanvas.prototype.setFontSize=function(a){this.state.fontSize=a};
mxAsyncCanvas.prototype.setFontFamily=function(a){this.state.fontFamily=a};mxAsyncCanvas.prototype.setFontStyle=function(a){this.state.fontStyle=a};mxAsyncCanvas.prototype.rect=function(a,d,b,c){};mxAsyncCanvas.prototype.roundrect=function(a,d,b,c,g,f){};mxAsyncCanvas.prototype.ellipse=function(a,d,b,c){};mxAsyncCanvas.prototype.rewriteImageSource=function(a){if("http://"==a.substring(0,7)||"https://"==a.substring(0,8))a="/proxy?url="+encodeURIComponent(a);return a};
-mxAsyncCanvas.prototype.image=function(a,d,b,c,g,f,m,n){g=this.rewriteImageSource(g);a=this.htmlCanvas.images[g];null==a&&(a=new Image,a.onload=mxUtils.bind(this,function(){this.decWaitCounter()}),a.onerror=mxUtils.bind(this,function(){this.decWaitCounter()}),this.incWaitCounter(),this.htmlCanvas.images[g]=a,a.src=g)};mxAsyncCanvas.prototype.fill=function(){};mxAsyncCanvas.prototype.stroke=function(){};mxAsyncCanvas.prototype.fillAndStroke=function(){};
-mxAsyncCanvas.prototype.text=function(a,d,b,c,g,f,m,n,e,k,l,p){if(null!=g&&0!=g.length&&(a=this.state.scale,"html"==e&&"function"===typeof html2canvas)){this.incWaitCounter();var u=this.canvasIndex++;html2canvas(g,{onrendered:mxUtils.bind(this,function(a){this.htmlCanvas.subCanvas[u]=a;this.decWaitCounter()}),scale:a,logging:!0})}};mxAsyncCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};function mxJsCanvas(a){mxAbstractCanvas2D.call(this);this.ctx=a.getContext("2d");this.ctx.textBaseline="top";this.ctx.fillStyle="rgba(255,255,255,0)";this.ctx.strokeStyle="rgba(0, 0, 0, 0)";this.M_RAD_PER_DEG=Math.PI/180;this.images=null==this.images?[]:this.images;this.subCanvas=null==this.subCanvas?[]:this.subCanvas}mxUtils.extend(mxJsCanvas,mxAbstractCanvas2D);mxJsCanvas.prototype.ctx=null;mxJsCanvas.prototype.waitCounter=0;mxJsCanvas.prototype.onComplete=null;mxJsCanvas.prototype.images=null;
+mxAsyncCanvas.prototype.image=function(a,d,b,c,g,f,l,m){g=this.rewriteImageSource(g);a=this.htmlCanvas.images[g];null==a&&(a=new Image,a.onload=mxUtils.bind(this,function(){this.decWaitCounter()}),a.onerror=mxUtils.bind(this,function(){this.decWaitCounter()}),this.incWaitCounter(),this.htmlCanvas.images[g]=a,a.src=g)};mxAsyncCanvas.prototype.fill=function(){};mxAsyncCanvas.prototype.stroke=function(){};mxAsyncCanvas.prototype.fillAndStroke=function(){};
+mxAsyncCanvas.prototype.text=function(a,d,b,c,g,f,l,m,e,k,n,p){if(null!=g&&0!=g.length&&(a=this.state.scale,"html"==e&&"function"===typeof html2canvas)){this.incWaitCounter();var u=this.canvasIndex++;html2canvas(g,{onrendered:mxUtils.bind(this,function(a){this.htmlCanvas.subCanvas[u]=a;this.decWaitCounter()}),scale:a,logging:!0})}};mxAsyncCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};function mxJsCanvas(a){mxAbstractCanvas2D.call(this);this.ctx=a.getContext("2d");this.ctx.textBaseline="top";this.ctx.fillStyle="rgba(255,255,255,0)";this.ctx.strokeStyle="rgba(0, 0, 0, 0)";this.M_RAD_PER_DEG=Math.PI/180;this.images=null==this.images?[]:this.images;this.subCanvas=null==this.subCanvas?[]:this.subCanvas}mxUtils.extend(mxJsCanvas,mxAbstractCanvas2D);mxJsCanvas.prototype.ctx=null;mxJsCanvas.prototype.waitCounter=0;mxJsCanvas.prototype.onComplete=null;mxJsCanvas.prototype.images=null;
mxJsCanvas.prototype.subCanvas=null;mxJsCanvas.prototype.canvasIndex=0;mxJsCanvas.prototype.hexToRgb=function(a){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,g){return b+b+c+c+g+g});return(a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a))?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null};mxJsCanvas.prototype.incWaitCounter=function(){this.waitCounter++};
mxJsCanvas.prototype.decWaitCounter=function(){this.waitCounter--;0==this.waitCounter&&null!=this.onComplete&&(this.onComplete(),this.onComplete=null)};mxJsCanvas.prototype.updateFont=function(){var a="";(this.state.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="bold ");(this.state.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="italic ");this.ctx.font=a+this.state.fontSize+"px "+this.state.fontFamily};
mxJsCanvas.prototype.save=function(){this.states.push(this.state);this.state=mxUtils.clone(this.state);this.ctx.save()};mxJsCanvas.prototype.restore=function(){this.state=this.states.pop();this.ctx.restore()};mxJsCanvas.prototype.scale=function(a){this.state.scale*=a;this.state.strokeWidth*=a;this.ctx.scale(a,a)};mxJsCanvas.prototype.translate=function(a,d){this.state.dx+=a;this.state.dy+=d;this.ctx.translate(a,d)};
mxJsCanvas.prototype.rotate=function(a,d,b,c,g){c-=this.state.dx;g-=this.state.dy;this.ctx.translate(c,g);(d||b)&&this.ctx.scale(d?-1:1,b?-1:1);this.ctx.rotate(a*this.M_RAD_PER_DEG);this.ctx.translate(-c,-g)};mxJsCanvas.prototype.setAlpha=function(a){this.state.alpha=a;this.ctx.globalAlpha=a};mxJsCanvas.prototype.setFillColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fillColor=a;this.state.gradientColor=null;this.ctx.fillStyle=a};
-mxJsCanvas.prototype.setGradient=function(a,d,b,c,g,f,m,n,e){b=this.ctx.createLinearGradient(0,c,0,c+f);c=this.state;c.fillColor=a;c.fillAlpha=null!=n?n:1;c.gradientColor=d;c.gradientAlpha=null!=e?e:1;c.gradientDirection=m;a=this.hexToRgb(a);d=this.hexToRgb(d);null!=a&&b.addColorStop(0,"rgba("+a.r+","+a.g+","+a.b+","+c.fillAlpha+")");null!=d&&b.addColorStop(1,"rgba("+d.r+","+d.g+","+d.b+","+c.gradientAlpha+")");this.ctx.fillStyle=b};
+mxJsCanvas.prototype.setGradient=function(a,d,b,c,g,f,l,m,e){b=this.ctx.createLinearGradient(0,c,0,c+f);c=this.state;c.fillColor=a;c.fillAlpha=null!=m?m:1;c.gradientColor=d;c.gradientAlpha=null!=e?e:1;c.gradientDirection=l;a=this.hexToRgb(a);d=this.hexToRgb(d);null!=a&&b.addColorStop(0,"rgba("+a.r+","+a.g+","+a.b+","+c.fillAlpha+")");null!=d&&b.addColorStop(1,"rgba("+d.r+","+d.g+","+d.b+","+c.gradientAlpha+")");this.ctx.fillStyle=b};
mxJsCanvas.prototype.setStrokeColor=function(a){null!=a&&(a==mxConstants.NONE?(this.state.strokeColor=null,this.ctx.strokeStyle="rgba(0, 0, 0, 0)"):(this.ctx.strokeStyle=a,this.state.strokeColor=a))};mxJsCanvas.prototype.setStrokeWidth=function(a){this.ctx.lineWidth=a};mxJsCanvas.prototype.setDashed=function(a){if(this.state.dashed=a){a=this.state.dashPattern.split(" ");for(var d=0;d<a.length;d++)a[d]=parseInt(a[d],10);this.setLineDash(a)}else this.setLineDash([0])};
mxJsCanvas.prototype.setLineDash=function(a){try{"function"===typeof this.ctx.setLineDash&&this.ctx.setLineDash(a)}catch(d){}};mxJsCanvas.prototype.setDashPattern=function(a){this.state.dashPattern=a;if(this.state.dashed){a=a.split(" ");for(var d=0;d<a.length;d++)a[d]=parseInt(a[d],10);this.ctx.setLineDash(a)}};mxJsCanvas.prototype.setLineCap=function(a){this.ctx.lineCap=a};mxJsCanvas.prototype.setLineJoin=function(a){this.ctx.lineJoin=a};
mxJsCanvas.prototype.setMiterLimit=function(a){this.ctx.lineJoin=a};mxJsCanvas.prototype.setFontColor=function(a){this.ctx.fillStyle=a};mxJsCanvas.prototype.setFontBackgroundColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBackgroundColor=a};mxJsCanvas.prototype.setFontBorderColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBorderColor=a};mxJsCanvas.prototype.setFontSize=function(a){this.state.fontSize=a};
mxJsCanvas.prototype.setFontFamily=function(a){this.state.fontFamily=a};mxJsCanvas.prototype.setFontStyle=function(a){this.state.fontStyle=a};mxJsCanvas.prototype.setShadow=function(a){(this.state.shadow=a)?(this.setShadowOffset(this.state.shadowDx,this.state.shadowDy),this.setShadowAlpha(this.state.shadowAlpha)):(this.ctx.shadowColor="transparent",this.ctx.shadowBlur=0,this.ctx.shadowOffsetX=0,this.ctx.shadowOffsetY=0)};
mxJsCanvas.prototype.setShadowColor=function(a){if(null==a||a==mxConstants.NONE)a=null,this.ctx.shadowColor="transparent";this.state.shadowColor=a;if(this.state.shadow&&null!=a){var d=null!=this.state.shadowAlpha?this.state.shadowAlpha:1;a=this.hexToRgb(a);this.ctx.shadowColor="rgba("+a.r+","+a.g+","+a.b+","+d+")"}};mxJsCanvas.prototype.setShadowAlpha=function(a){this.state.shadowAlpha=a;this.setShadowColor(this.state.shadowColor)};
mxJsCanvas.prototype.setShadowOffset=function(a,d){this.state.shadowDx=a;this.state.shadowDy=d;this.state.shadow&&(this.ctx.shadowOffsetX=a,this.ctx.shadowOffsetY=d)};mxJsCanvas.prototype.moveTo=function(a,d){this.ctx.moveTo(a,d);this.lastMoveX=a;this.lastMoveY=d};mxJsCanvas.prototype.lineTo=function(a,d){this.ctx.lineTo(a,d);this.lastMoveX=a;this.lastMoveY=d};mxJsCanvas.prototype.quadTo=function(a,d,b,c){this.ctx.quadraticCurveTo(a,d,b,c);this.lastMoveX=b;this.lastMoveY=c};
-mxJsCanvas.prototype.arcTo=function(a,d,b,c,g,f,m){a=mxUtils.arcToCurves(this.lastMoveX,this.lastMoveY,a,d,b,c,g,f,m);if(null!=a)for(d=0;d<a.length;d+=6)this.curveTo(a[d],a[d+1],a[d+2],a[d+3],a[d+4],a[d+5])};mxJsCanvas.prototype.curveTo=function(a,d,b,c,g,f){this.ctx.bezierCurveTo(a,d,b,c,g,f);this.lastMoveX=g;this.lastMoveY=f};mxJsCanvas.prototype.rect=function(a,d,b,c){this.begin();this.moveTo(a,d);this.lineTo(a+b,d);this.lineTo(a+b,d+c);this.lineTo(a,d+c);this.close()};
+mxJsCanvas.prototype.arcTo=function(a,d,b,c,g,f,l){a=mxUtils.arcToCurves(this.lastMoveX,this.lastMoveY,a,d,b,c,g,f,l);if(null!=a)for(d=0;d<a.length;d+=6)this.curveTo(a[d],a[d+1],a[d+2],a[d+3],a[d+4],a[d+5])};mxJsCanvas.prototype.curveTo=function(a,d,b,c,g,f){this.ctx.bezierCurveTo(a,d,b,c,g,f);this.lastMoveX=g;this.lastMoveY=f};mxJsCanvas.prototype.rect=function(a,d,b,c){this.begin();this.moveTo(a,d);this.lineTo(a+b,d);this.lineTo(a+b,d+c);this.lineTo(a,d+c);this.close()};
mxJsCanvas.prototype.roundrect=function(a,d,b,c,g,f){this.begin();this.moveTo(a+g,d);this.lineTo(a+b-g,d);this.quadTo(a+b,d,a+b,d+f);this.lineTo(a+b,d+c-f);this.quadTo(a+b,d+c,a+b-g,d+c);this.lineTo(a+g,d+c);this.quadTo(a,d+c,a,d+c-f);this.lineTo(a,d+f);this.quadTo(a,d,a+g,d)};mxJsCanvas.prototype.ellipse=function(a,d,b,c){this.ctx.save();this.ctx.translate(a+b/2,d+c/2);this.ctx.scale(b/2,c/2);this.ctx.beginPath();this.ctx.arc(0,0,1,0,2*Math.PI,!1);this.ctx.restore()};
mxJsCanvas.prototype.rewriteImageSource=function(a){if("http://"==a.substring(0,7)||"https://"==a.substring(0,8))a="/proxy?url="+encodeURIComponent(a);return a};
-mxJsCanvas.prototype.image=function(a,d,b,c,g,f,m,n){g=this.rewriteImageSource(g);g=this.images[g];if(null!=g&&0<g.height&&0<g.width){var e=this.ctx;e.save();if(f){f=g.width;var k=g.height,l=Math.min(b/f,c/k);a+=(b-f*l)/2;d+=(c-k*l)/2;b=f*l;c=k*l}m&&(e.translate(2*a+b,0),e.scale(-1,1));n&&(e.translate(0,2*d+c),e.scale(1,-1));e.drawImage(g,a,d,b,c);e.restore()}};mxJsCanvas.prototype.begin=function(){this.ctx.beginPath()};mxJsCanvas.prototype.close=function(){this.ctx.closePath()};
+mxJsCanvas.prototype.image=function(a,d,b,c,g,f,l,m){g=this.rewriteImageSource(g);g=this.images[g];if(null!=g&&0<g.height&&0<g.width){var e=this.ctx;e.save();if(f){f=g.width;var k=g.height,n=Math.min(b/f,c/k);a+=(b-f*n)/2;d+=(c-k*n)/2;b=f*n;c=k*n}l&&(e.translate(2*a+b,0),e.scale(-1,1));m&&(e.translate(0,2*d+c),e.scale(1,-1));e.drawImage(g,a,d,b,c);e.restore()}};mxJsCanvas.prototype.begin=function(){this.ctx.beginPath()};mxJsCanvas.prototype.close=function(){this.ctx.closePath()};
mxJsCanvas.prototype.fill=function(){this.ctx.fill()};mxJsCanvas.prototype.stroke=function(){this.ctx.stroke()};mxJsCanvas.prototype.fillAndStroke=function(){if(this.state.shadow){this.ctx.stroke();this.ctx.fill();var a=this.ctx.shadowColor,d=this.ctx.shadowOffsetX,b=this.ctx.shadowOffsetY;this.ctx.shadowColor="transparent";this.ctx.shadowOffsetX=0;this.ctx.shadowOffsetY=0;this.ctx.stroke();this.ctx.shadowColor=a;this.ctx.shadowOffsetX=d;this.ctx.shadowOffsetY=b}else this.ctx.fill(),this.ctx.stroke()};
-mxJsCanvas.prototype.text=function(a,d,b,c,g,f,m,n,e,k,l,p){if(null!=g&&0!=g.length){b=this.state.scale;0!=p&&(this.ctx.translate(Math.round(a),Math.round(d)),this.ctx.rotate(p*Math.PI/180),this.ctx.translate(Math.round(-a),Math.round(-d)));if("html"==e){g=this.subCanvas[this.canvasIndex++];e=g.height;p=g.width;switch(m){case mxConstants.ALIGN_MIDDLE:d-=e/2/b;break;case mxConstants.ALIGN_BOTTOM:d-=e/b}switch(f){case mxConstants.ALIGN_CENTER:a-=p/2/b;break;case mxConstants.ALIGN_RIGHT:a-=p/b}this.ctx.save();
+mxJsCanvas.prototype.text=function(a,d,b,c,g,f,l,m,e,k,n,p){if(null!=g&&0!=g.length){b=this.state.scale;0!=p&&(this.ctx.translate(Math.round(a),Math.round(d)),this.ctx.rotate(p*Math.PI/180),this.ctx.translate(Math.round(-a),Math.round(-d)));if("html"==e){g=this.subCanvas[this.canvasIndex++];e=g.height;p=g.width;switch(l){case mxConstants.ALIGN_MIDDLE:d-=e/2/b;break;case mxConstants.ALIGN_BOTTOM:d-=e/b}switch(f){case mxConstants.ALIGN_CENTER:a-=p/2/b;break;case mxConstants.ALIGN_RIGHT:a-=p/b}this.ctx.save();
if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor)null!=this.state.fontBackgroundColor&&(this.ctx.fillStyle=this.state.fontBackgroundColor,this.ctx.fillRect(Math.round(a)-.5,Math.round(d)-.5,Math.round(g.width/b),Math.round(g.height/b))),null!=this.state.fontBorderColor&&(this.ctx.strokeStyle=this.state.fontBorderColor,this.ctx.lineWidth=1,this.ctx.strokeRect(Math.round(a)-.5,Math.round(d)-.5,Math.round(g.width/b),Math.round(g.height/b)));this.ctx.scale(1/b,1/b);this.ctx.drawImage(g,
-Math.round(a*b),Math.round(d*b))}else{this.ctx.save();this.updateFont();p=document.createElement("div");p.innerHTML=g;p.style.position="absolute";p.style.top="-9999px";p.style.left="-9999px";p.style.fontFamily=this.state.fontFamily;p.style.fontWeight="bold";p.style.fontSize=this.state.fontSize+"pt";document.body.appendChild(p);e=[p.offsetWidth,p.offsetHeight];document.body.removeChild(p);g=g.split("\n");p=e[1];this.ctx.textBaseline="top";e=d;switch(m){case mxConstants.ALIGN_MIDDLE:this.ctx.textBaseline=
-"middle";d-=(g.length-1)*p/2;e=d-this.state.fontSize/2;break;case mxConstants.ALIGN_BOTTOM:this.ctx.textBaseline="alphabetic",d-=p*(g.length-1),e=d-this.state.fontSize}m=[];p=[];for(b=0;b<g.length;b++)p[b]=a,m[b]=this.ctx.measureText(g[b]).width,null!=f&&f!=mxConstants.ALIGN_LEFT&&(p[b]-=m[b],f==mxConstants.ALIGN_CENTER&&(p[b]+=m[b]/2));if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor){a=p[0];f=m[0];for(b=1;b<g.length;b++)a=Math.min(a,p[b]),f=Math.max(f,m[b]);this.ctx.save();
+Math.round(a*b),Math.round(d*b))}else{this.ctx.save();this.updateFont();p=document.createElement("div");p.innerHTML=g;p.style.position="absolute";p.style.top="-9999px";p.style.left="-9999px";p.style.fontFamily=this.state.fontFamily;p.style.fontWeight="bold";p.style.fontSize=this.state.fontSize+"pt";document.body.appendChild(p);e=[p.offsetWidth,p.offsetHeight];document.body.removeChild(p);g=g.split("\n");p=e[1];this.ctx.textBaseline="top";e=d;switch(l){case mxConstants.ALIGN_MIDDLE:this.ctx.textBaseline=
+"middle";d-=(g.length-1)*p/2;e=d-this.state.fontSize/2;break;case mxConstants.ALIGN_BOTTOM:this.ctx.textBaseline="alphabetic",d-=p*(g.length-1),e=d-this.state.fontSize}l=[];p=[];for(b=0;b<g.length;b++)p[b]=a,l[b]=this.ctx.measureText(g[b]).width,null!=f&&f!=mxConstants.ALIGN_LEFT&&(p[b]-=l[b],f==mxConstants.ALIGN_CENTER&&(p[b]+=l[b]/2));if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor){a=p[0];f=l[0];for(b=1;b<g.length;b++)a=Math.min(a,p[b]),f=Math.max(f,l[b]);this.ctx.save();
a=Math.round(a)-.5;e=Math.round(e)-.5;null!=this.state.fontBackgroundColor&&(this.ctx.fillStyle=this.state.fontBackgroundColor,this.ctx.fillRect(a,e,f,this.state.fontSize*mxConstants.LINE_HEIGHT*g.length));null!=this.state.fontBorderColor&&(this.ctx.strokeStyle=this.state.fontBorderColor,this.ctx.lineWidth=1,this.ctx.strokeRect(a,e,f,this.state.fontSize*mxConstants.LINE_HEIGHT*g.length));this.ctx.restore()}for(b=0;b<g.length;b++)this.ctx.fillText(g[b],p[b],d),d+=this.state.fontSize*mxConstants.LINE_HEIGHT}this.ctx.restore()}};
mxJsCanvas.prototype.getCanvas=function(){return canvas};mxJsCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};DrawioClient=function(a,d){mxEventSource.call(this);this.ui=a;this.cookieName=d;this.token=this.getPersistentToken()};mxUtils.extend(DrawioClient,mxEventSource);DrawioClient.prototype.token=null;DrawioClient.prototype.user=null;DrawioClient.prototype.setUser=function(a){this.user=a;this.fireEvent(new mxEventObject("userChanged"))};DrawioClient.prototype.getUser=function(){return this.user};
DrawioClient.prototype.clearPersistentToken=function(){if(isLocalStorage)localStorage.removeItem("."+this.cookieName),sessionStorage.removeItem("."+this.cookieName);else if("undefined"!=typeof Storage){var a=new Date;a.setYear(a.getFullYear()-1);document.cookie=this.cookieName+"=; expires="+a.toUTCString()}};
@@ -10598,9 +10598,9 @@ b.toUTCString(),localStorage.setItem("."+this.cookieName,d)))}return d};DrawioCl
DriveFile.prototype.isConflict=function(a){return null!=a&&null!=a.error&&412==a.error.code};DriveFile.prototype.getCurrentUser=function(){return null!=this.ui.drive?this.ui.drive.user:null};DriveFile.prototype.getMode=function(){return App.MODE_GOOGLE};
DriveFile.prototype.getPublicUrl=function(a){this.ui.drive.executeRequest({url:"/files/"+this.desc.id+"/permissions?supportsAllDrives=true"},mxUtils.bind(this,function(d){if(null!=d&&null!=d.items)for(var b=0;b<d.items.length;b++)if("anyoneWithLink"===d.items[b].id||"anyone"===d.items[b].id){a(this.desc.webContentLink);return}a(null)}),mxUtils.bind(this,function(){a(null)}))};DriveFile.prototype.isAutosaveOptional=function(){return!0};
DriveFile.prototype.isRenamable=function(){return this.isEditable()&&DrawioFile.prototype.isEditable.apply(this,arguments)};DriveFile.prototype.isMovable=function(){return this.isEditable()};DriveFile.prototype.isTrashed=function(){return this.desc.labels.trashed};DriveFile.prototype.save=function(a,d,b,c,g){DrawioFile.prototype.save.apply(this,[a,mxUtils.bind(this,function(){this.saveFile(null,a,d,b,c,g)}),b,c,g])};
-DriveFile.prototype.saveFile=function(a,d,b,c,g,f){try{this.isEditable()?this.savingFile||(this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.createSecret(mxUtils.bind(this,function(a,n){var e=mxUtils.bind(this,function(f,m){try{var k=this.desc;this.ui.drive.saveFile(this,m,mxUtils.bind(this,function(a,e){try{this.savingFile=!1,0!=a?(this.setModified(this.getShadowModified()),d&&(this.lastAutosaveRevision=(new Date).getTime()),this.autosaveDelay=Math.round(Math.min(1E4,
-Math.max(DriveFile.prototype.autosaveDelay,this.saveDelay))),this.desc=a,null!=n?this.fileSaved(e,k,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b(a)}),c,n):null!=b&&b(a)):null!=c&&c(a)}catch(q){if(this.savingFile=!1,null!=c)c(q);else throw q;}}),mxUtils.bind(this,function(a,b){try{this.savingFile=!1,this.isConflict(a)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(b,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();
-this.setShadowModified(!1);e(f,!0)}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}))):null!=c&&c()):null!=c&&c(a)}catch(q){if(this.savingFile=!1,null!=c)c(q);else throw q;}}),g,g,f,null,a)}catch(u){if(this.savingFile=!1,null!=c)c(u);else throw u;}});e(f,d)}))):null!=b&&b()}catch(m){if(null!=c)c(m);else throw m;}};
+DriveFile.prototype.saveFile=function(a,d,b,c,g,f){try{this.isEditable()?this.savingFile||(this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.createSecret(mxUtils.bind(this,function(a,m){var e=mxUtils.bind(this,function(f,l){try{var k=this.desc;this.ui.drive.saveFile(this,l,mxUtils.bind(this,function(a,e){try{this.savingFile=!1,0!=a?(this.setModified(this.getShadowModified()),d&&(this.lastAutosaveRevision=(new Date).getTime()),this.autosaveDelay=Math.round(Math.min(1E4,
+Math.max(DriveFile.prototype.autosaveDelay,this.saveDelay))),this.desc=a,null!=m?this.fileSaved(e,k,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b(a)}),c,m):null!=b&&b(a)):null!=c&&c(a)}catch(q){if(this.savingFile=!1,null!=c)c(q);else throw q;}}),mxUtils.bind(this,function(a,b){try{this.savingFile=!1,this.isConflict(a)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(b,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();
+this.setShadowModified(!1);e(f,!0)}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}))):null!=c&&c()):null!=c&&c(a)}catch(q){if(this.savingFile=!1,null!=c)c(q);else throw q;}}),g,g,f,null,a)}catch(u){if(this.savingFile=!1,null!=c)c(u);else throw u;}});e(f,d)}))):null!=b&&b()}catch(l){if(null!=c)c(l);else throw l;}};
DriveFile.prototype.copyFile=function(a,d){this.isRestricted()?DrawioFile.prototype.copyFile.apply(this,arguments):this.makeCopy(mxUtils.bind(this,function(){if(this.ui.spinner.spin(document.body,mxResources.get("saving")))try{this.save(!0,a,d)}catch(b){d(b)}}),d,!0)};
DriveFile.prototype.makeCopy=function(a,d,b){this.ui.spinner.spin(document.body,mxResources.get("saving"))&&this.saveAs(this.ui.getCopyFilename(this,b),mxUtils.bind(this,function(b){this.desc=b;this.ui.spinner.stop();this.setModified(!1);this.backupPatch=null;this.inConflictState=this.invalidChecksum=!1;this.descriptorChanged();a()}),mxUtils.bind(this,function(){this.ui.spinner.stop();null!=d&&d()}))};DriveFile.prototype.saveAs=function(a,d,b){this.ui.drive.copyFile(this.getId(),a,d,b)};
DriveFile.prototype.rename=function(a,d,b){var c=this.getCurrentEtag();this.ui.drive.renameFile(this.getId(),a,mxUtils.bind(this,function(g){this.hasSameExtension(a,this.getTitle())?(this.desc=g,this.descriptorChanged(),null!=this.sync&&this.sync.descriptorChanged(c),null!=d&&d(g)):(this.desc=g,null!=this.sync&&this.sync.descriptorChanged(c),this.save(!0,d,b))}),b)};
@@ -10611,8 +10611,8 @@ b?"&page="+b:""))+window.location.hash})})(b.items[c]);a(b.items)}),d)};DriveFil
DriveFile.prototype.getDescriptor=function(){return this.desc};DriveFile.prototype.setDescriptor=function(a){this.desc=a};DriveFile.prototype.getDescriptorSecret=function(a){return this.ui.drive.getCustomProperty(a,"secret")};DriveFile.prototype.setDescriptorRevisionId=function(a,d){a.headRevisionId=d};DriveFile.prototype.getDescriptorRevisionId=function(a){return a.headRevisionId};DriveFile.prototype.getDescriptorEtag=function(a){return a.etag};
DriveFile.prototype.setDescriptorEtag=function(a,d){a.etag=d};DriveFile.prototype.loadPatchDescriptor=function(a,d){this.ui.drive.executeRequest({url:"/files/"+this.getId()+"?supportsAllDrives=true&fields="+this.ui.drive.catchupFields},mxUtils.bind(this,function(b){a(b)}),d)};DriveFile.prototype.patchDescriptor=function(a,d){DrawioFile.prototype.patchDescriptor.apply(this,arguments);a.headRevisionId=d.headRevisionId;a.modifiedDate=d.modifiedDate};
DriveFile.prototype.loadDescriptor=function(a,d){this.ui.drive.loadDescriptor(this.getId(),a,d)};DriveFile.prototype.commentsSupported=function(){return!0};
-DriveFile.prototype.getComments=function(a,d){function b(a,d,m){if(d.deleted)return null;m=new DriveComment(a,d.commentId||d.replyId,d.content,d.modifiedDate,d.createdDate,"resolved"==d.status,d.author.isAuthenticatedUser?c:new DrawioUser(d.author.permissionId,d.author.emailAddress,d.author.displayName,d.author.picture.url),m);for(var f=0;null!=d.replies&&f<d.replies.length;f++)m.addReplyDirect(b(a,d.replies[f],d.commentId));return m}var c=this.ui.getCurrentUser();this.ui.drive.executeRequest({url:"/files/"+
-this.getId()+"/comments"},mxUtils.bind(this,function(c){for(var d=[],g=0;g<c.items.length;g++){var n=b(this,c.items[g]);null!=n&&d.push(n)}a(d)}),d)};DriveFile.prototype.addComment=function(a,d,b){a={content:a.content};this.ui.drive.executeRequest({url:"/files/"+this.getId()+"/comments",method:"POST",params:a},mxUtils.bind(this,function(a){d(a.commentId)}),b)};DriveFile.prototype.canReplyToReplies=function(){return!1};DriveFile.prototype.canComment=function(){return this.desc.canComment};
+DriveFile.prototype.getComments=function(a,d){function b(a,d,l){if(d.deleted)return null;l=new DriveComment(a,d.commentId||d.replyId,d.content,d.modifiedDate,d.createdDate,"resolved"==d.status,d.author.isAuthenticatedUser?c:new DrawioUser(d.author.permissionId,d.author.emailAddress,d.author.displayName,d.author.picture.url),l);for(var f=0;null!=d.replies&&f<d.replies.length;f++)l.addReplyDirect(b(a,d.replies[f],d.commentId));return l}var c=this.ui.getCurrentUser();this.ui.drive.executeRequest({url:"/files/"+
+this.getId()+"/comments"},mxUtils.bind(this,function(c){for(var d=[],g=0;g<c.items.length;g++){var m=b(this,c.items[g]);null!=m&&d.push(m)}a(d)}),d)};DriveFile.prototype.addComment=function(a,d,b){a={content:a.content};this.ui.drive.executeRequest({url:"/files/"+this.getId()+"/comments",method:"POST",params:a},mxUtils.bind(this,function(a){d(a.commentId)}),b)};DriveFile.prototype.canReplyToReplies=function(){return!1};DriveFile.prototype.canComment=function(){return this.desc.canComment};
DriveFile.prototype.newComment=function(a,d){return new DriveComment(this,null,a,Date.now(),Date.now(),!1,d)};DriveLibrary=function(a,d,b){DriveFile.call(this,a,d,b)};mxUtils.extend(DriveLibrary,DriveFile);DriveLibrary.prototype.isAutosave=function(){return!0};DriveLibrary.prototype.save=function(a,d,b){this.ui.drive.saveFile(this,a,mxUtils.bind(this,function(a){this.desc=a;null!=d&&d(a)}),b)};DriveLibrary.prototype.open=function(){};(function(){var a=null,d={};window.DriveClient=function(a,c){null==c&&null!=window.urlParams&&"1"==window.urlParams.extAuth&&(c=!0);mxEventSource.call(this);DrawioClient.call(this,a,"gDriveAuthInfo");this.isExtAuth=c;this.ui=a;this.xmlMimeType="application/vnd.jgraph.mxfile";this.mimeType="application/vnd.jgraph.mxfile.realtime";this.ui.editor.chromeless&&!this.ui.editor.editable&&"1"!=urlParams.rt&&"1"!=urlParams.extAuth?(this.cookieName="gDriveViewerAuthInfo",this.token=this.getPersistentToken(),
this.appId=window.DRAWIO_GOOGLE_VIEWER_APP_ID||"850530949725",this.clientId=window.DRAWIO_GOOGLE_VIEWER_CLIENT_ID||"850530949725.apps.googleusercontent.com",this.scopes=["https://www.googleapis.com/auth/drive.readonly","https://www.googleapis.com/auth/userinfo.profile"]):(this.appId=window.DRAWIO_GOOGLE_APP_ID||"671128082532",this.clientId=window.DRAWIO_GOOGLE_CLIENT_ID||"671128082532-jhphbq6d0e1gnsus9mn7vf8a6fjn10mp.apps.googleusercontent.com");this.mimeTypes=this.xmlMimeType+",application/mxe,application/mxr,application/vnd.jgraph.mxfile.realtime,application/vnd.jgraph.mxfile.rtlegacy";
var b=JSON.parse(this.token);null!=b&&null!=b.current&&(this.userId=b.current.userId,this.authCalled=!1)};mxUtils.extend(DriveClient,mxEventSource);mxUtils.extend(DriveClient,DrawioClient);DriveClient.prototype.redirectUri=window.location.protocol+"//"+window.location.host+"/google";DriveClient.prototype.GDriveBaseUrl="https://www.googleapis.com/drive/v2";DriveClient.prototype.scopes=["https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive.install","https://www.googleapis.com/auth/userinfo.profile"];
@@ -10621,55 +10621,55 @@ DriveClient.prototype.allFields="kind,id,parents,headRevisionId,etag,title,mimeT
null;DriveClient.prototype.sameWinAuthMode=!1;DriveClient.prototype.sameWinRedirectUrl=null;DriveClient.prototype.setUser=function(a){this.user=a;null==this.user?(this.userId=null,null!=this.tokenRefreshThread&&(window.clearTimeout(this.tokenRefreshThread),this.tokenRefreshThread=null)):this.userId=a.id;this.fireEvent(new mxEventObject("userChanged"))};DriveClient.prototype.setUserId=function(a){this.userId=a;null!=this.user&&this.user.id!=this.userId&&(this.user=null)};DriveClient.prototype.getUser=
function(){return this.user};DriveClient.prototype.getUsersList=function(){var a=[],c=JSON.parse(this.getPersistentToken(!0)),d=null;if(null!=c){null!=c.current&&(d=c.current.userId,a.push(c[d].user),a[0].isCurrent=!0);for(var f in c)"current"!=f&&f!=d&&a.push(c[f].user)}return a};DriveClient.prototype.logout=function(){this.ui.editor.loadUrl(this.redirectUri+"?doLogout=1&userId="+this.userId+"&state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname));this.clearPersistentToken();
this.setUser(null);a=null};DriveClient.prototype.execute=function(a){var b=mxUtils.bind(this,function(b){this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(b,c){this.authorize(!1,mxUtils.bind(this,function(){null!=c&&c();a()}),mxUtils.bind(this,function(a){var b=mxResources.get("cannotLogin");null!=a&&null!=a.error&&403==a.error.code&&null!=a.error.data&&0<a.error.data.length&&"domainPolicy"==a.error.data[0].reason&&(b=a.error.message);this.logout();this.ui.showError(mxResources.get("error"),
-b,mxResources.get("help"),mxUtils.bind(this,function(){this.ui.openLink("https://www.diagrams.net/doc/faq/gsuite-authorisation-troubleshoot")}),null,mxResources.get("ok"))}),b)}))});this.authorize(!0,a,b)};DriveClient.prototype.executeRequest=function(b,c,d){try{var f=!0,g=null,n=0;null!=this.requestThread&&window.clearTimeout(this.requestThread);var e=mxUtils.bind(this,function(){try{this.requestThread=null;this.currentRequest=b;null!=g&&window.clearTimeout(g);g=window.setTimeout(mxUtils.bind(this,
-function(){f=!1;null!=d&&d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout"),retry:e})}),this.ui.timeout);var k=null,m=!1;"string"===typeof b.params?k=b.params:null!=b.params&&(k=JSON.stringify(b.params),m=!0);var p=b.fullUrl||this.GDriveBaseUrl+b.url;m&&(p+=(0<p.indexOf("?")?"&":"?")+"alt=json");var u=new mxXmlRequest(p,k,b.method||"GET");u.setRequestHeaders=mxUtils.bind(this,function(c,e){if(null!=b.headers)for(var d in b.headers)c.setRequestHeader(d,b.headers[d]);else null!=b.contentType?
-c.setRequestHeader("Content-Type",b.contentType):m&&c.setRequestHeader("Content-Type","application/json");c.setRequestHeader("Authorization","Bearer "+a)});u.send(mxUtils.bind(this,function(a){try{if(window.clearTimeout(g),f){var k;try{k=JSON.parse(a.getText())}catch(x){k=null}if(200<=a.getStatus()&&299>=a.getStatus())null!=c&&c(k);else{var m=null!=k&&null!=k.error?null!=k.error.data?k.error.data:k.error.errors:null,l=null!=m&&0<m.length?m[0].reason:null;null==d||null==k||null==k.error||-1!=k.error.code&&
-(403!=k.error.code||"domainPolicy"!=l&&"The requested mime type change is forbidden."!=k.error.message)?null!=k&&null!=k.error&&(401==k.error.code||403==k.error.code&&"rateLimitExceeded"!=l)?403==k.error.code&&this.retryAuth||401==k.error.code&&this.retryAuth&&"authError"==l?(null!=d&&d(k),this.retryAuth=!1):(this.retryAuth=!0,this.execute(e)):null!=k&&null!=k.error&&412!=k.error.code&&404!=k.error.code&&400!=k.error.code&&this.currentRequest==b&&n<this.maxRetries?(n++,this.requestThread=window.setTimeout(e,
-Math.round(Math.pow(2,n)*(1+.1*(Math.random()-.5))*this.coolOff))):null!=d&&d(k):d(k)}}}catch(x){if(null!=d)d(x);else throw x;}}))}catch(t){if(null!=d)d(t);else throw t;}});null!=a&&this.authCalled?e():this.execute(e)}catch(k){if(null!=d)d(k);else throw k;}};DriveClient.prototype.createAuthWin=function(a){return window.open(a?a:"about:blank","gdauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join())};
-DriveClient.prototype.authorize=function(a,c,d,f,m){this.isExtAuth&&!a?window.parent.driveAuth(mxUtils.bind(this,function(a){this.updateAuthInfo(a,!0,!0,c,d)}),d):(new mxXmlRequest(this.redirectUri+"?getState=1",null,"GET")).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?this.authorizeStep2(b.getText(),a,c,d,f,m):null!=d&&d(b)}),d)};DriveClient.prototype.updateAuthInfo=function(b,c,d,f,m){a=b.access_token;delete b.access_token;b.expires=Date.now()+1E3*parseInt(b.expires_in);
-b.remember=c;this.resetTokenRefresh(b);this.authCalled=!0;if(d||null==this.user){var g=JSON.stringify(b);this.updateUser(mxUtils.bind(this,function(){var a=JSON.parse(g);this.setPersistentToken(a,!c);null!=f&&f()}),m)}else null!=f&&(this.setPersistentToken(b,!c),f())};DriveClient.prototype.authorizeStep2=function(a,c,d,f,m,n){try{null!=this.ui.stateArg&&null!=this.ui.stateArg.userId&&(this.userId=this.ui.stateArg.userId,null!=this.user&&this.user.id!=this.userId&&(this.user=null));if(null==this.userId){var b=
+b,mxResources.get("help"),mxUtils.bind(this,function(){this.ui.openLink("https://www.diagrams.net/doc/faq/gsuite-authorisation-troubleshoot")}),null,mxResources.get("ok"))}),b)}))});this.authorize(!0,a,b)};DriveClient.prototype.executeRequest=function(b,c,d){try{var f=!0,g=null,m=0;null!=this.requestThread&&window.clearTimeout(this.requestThread);var e=mxUtils.bind(this,function(){try{this.requestThread=null;this.currentRequest=b;null!=g&&window.clearTimeout(g);g=window.setTimeout(mxUtils.bind(this,
+function(){f=!1;null!=d&&d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout"),retry:e})}),this.ui.timeout);var k=null,l=!1;"string"===typeof b.params?k=b.params:null!=b.params&&(k=JSON.stringify(b.params),l=!0);var p=b.fullUrl||this.GDriveBaseUrl+b.url;l&&(p+=(0<p.indexOf("?")?"&":"?")+"alt=json");var u=new mxXmlRequest(p,k,b.method||"GET");u.setRequestHeaders=mxUtils.bind(this,function(c,e){if(null!=b.headers)for(var d in b.headers)c.setRequestHeader(d,b.headers[d]);else null!=b.contentType?
+c.setRequestHeader("Content-Type",b.contentType):l&&c.setRequestHeader("Content-Type","application/json");c.setRequestHeader("Authorization","Bearer "+a)});u.send(mxUtils.bind(this,function(a){try{if(window.clearTimeout(g),f){var k;try{k=JSON.parse(a.getText())}catch(x){k=null}if(200<=a.getStatus()&&299>=a.getStatus())null!=c&&c(k);else{var l=null!=k&&null!=k.error?null!=k.error.data?k.error.data:k.error.errors:null,n=null!=l&&0<l.length?l[0].reason:null;null==d||null==k||null==k.error||-1!=k.error.code&&
+(403!=k.error.code||"domainPolicy"!=n&&"The requested mime type change is forbidden."!=k.error.message)?null!=k&&null!=k.error&&(401==k.error.code||403==k.error.code&&"rateLimitExceeded"!=n)?403==k.error.code&&this.retryAuth||401==k.error.code&&this.retryAuth&&"authError"==n?(null!=d&&d(k),this.retryAuth=!1):(this.retryAuth=!0,this.execute(e)):null!=k&&null!=k.error&&412!=k.error.code&&404!=k.error.code&&400!=k.error.code&&this.currentRequest==b&&m<this.maxRetries?(m++,this.requestThread=window.setTimeout(e,
+Math.round(Math.pow(2,m)*(1+.1*(Math.random()-.5))*this.coolOff))):null!=d&&d(k):d(k)}}}catch(x){if(null!=d)d(x);else throw x;}}))}catch(t){if(null!=d)d(t);else throw t;}});null!=a&&this.authCalled?e():this.execute(e)}catch(k){if(null!=d)d(k);else throw k;}};DriveClient.prototype.createAuthWin=function(a){return window.open(a?a:"about:blank","gdauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join())};
+DriveClient.prototype.authorize=function(a,c,d,f,l){this.isExtAuth&&!a?window.parent.driveAuth(mxUtils.bind(this,function(a){this.updateAuthInfo(a,!0,!0,c,d)}),d):(new mxXmlRequest(this.redirectUri+"?getState=1",null,"GET")).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?this.authorizeStep2(b.getText(),a,c,d,f,l):null!=d&&d(b)}),d)};DriveClient.prototype.updateAuthInfo=function(b,c,d,f,l){a=b.access_token;delete b.access_token;b.expires=Date.now()+1E3*parseInt(b.expires_in);
+b.remember=c;this.resetTokenRefresh(b);this.authCalled=!0;if(d||null==this.user){var g=JSON.stringify(b);this.updateUser(mxUtils.bind(this,function(){var a=JSON.parse(g);this.setPersistentToken(a,!c);null!=f&&f()}),l)}else null!=f&&(this.setPersistentToken(b,!c),f())};DriveClient.prototype.authorizeStep2=function(a,c,d,f,l,m){try{null!=this.ui.stateArg&&null!=this.ui.stateArg.userId&&(this.userId=this.ui.stateArg.userId,null!=this.user&&this.user.id!=this.userId&&(this.user=null));if(null==this.userId){var b=
JSON.parse(this.getPersistentToken(!0));b&&null!=b.current&&(this.userId=b.current.userId)}if(c&&null==this.userId)null!=f&&f();else if(c)(new mxXmlRequest(this.redirectUri+"?state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname+"&token="+a)+"&userId="+this.userId,null,"GET")).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?(a=JSON.parse(a.getText()),this.updateAuthInfo(a,!0,!1,d,f)):(0!=a.getStatus()&&this.logout(),null!=f&&f(a))}),f);else{var g=
-"https://accounts.google.com/o/oauth2/v2/auth?client_id="+this.clientId+"&redirect_uri="+encodeURIComponent(this.redirectUri)+"&response_type=code&include_granted_scopes=true"+(m?"&access_type=offline&prompt=consent%20select_account":"")+"&scope="+encodeURIComponent(this.scopes.join(" "))+"&state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname+"&token="+a+(this.sameWinRedirectUrl?"&redirect="+this.sameWinRedirectUrl:""));this.sameWinAuthMode?(window.location.assign(g),
-n=null):null==n?n=this.createAuthWin(g):n.location=g;null!=n&&(window.onGoogleDriveCallback=mxUtils.bind(this,function(a,b){window.onGoogleDriveCallback=null;try{null==a?null!=f&&f({message:mxResources.get("accessDenied")}):this.updateAuthInfo(a,m,!0,d,f)}catch(u){null!=f&&f(u)}finally{null!=b&&b.close()}}),n.focus())}}catch(l){if(null!=f)f(l);else throw l;}};DriveClient.prototype.resetTokenRefresh=function(a){null!=this.tokenRefreshThread&&(window.clearTimeout(this.tokenRefreshThread),this.tokenRefreshThread=
+"https://accounts.google.com/o/oauth2/v2/auth?client_id="+this.clientId+"&redirect_uri="+encodeURIComponent(this.redirectUri)+"&response_type=code&include_granted_scopes=true"+(l?"&access_type=offline&prompt=consent%20select_account":"")+"&scope="+encodeURIComponent(this.scopes.join(" "))+"&state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname+"&token="+a+(this.sameWinRedirectUrl?"&redirect="+this.sameWinRedirectUrl:""));this.sameWinAuthMode?(window.location.assign(g),
+m=null):null==m?m=this.createAuthWin(g):m.location=g;null!=m&&(window.onGoogleDriveCallback=mxUtils.bind(this,function(a,b){window.onGoogleDriveCallback=null;try{null==a?null!=f&&f({message:mxResources.get("accessDenied")}):this.updateAuthInfo(a,l,!0,d,f)}catch(u){null!=f&&f(u)}finally{null!=b&&b.close()}}),m.focus())}}catch(n){if(null!=f)f(n);else throw n;}};DriveClient.prototype.resetTokenRefresh=function(a){null!=this.tokenRefreshThread&&(window.clearTimeout(this.tokenRefreshThread),this.tokenRefreshThread=
null);null!=a&&null==a.error&&0<a.expires_in&&(this.tokenRefreshInterval=1E3*parseInt(a.expires_in),this.lastTokenRefresh=(new Date).getTime(),this.tokenRefreshThread=window.setTimeout(mxUtils.bind(this,function(){this.authorize(!0,mxUtils.bind(this,function(){}),mxUtils.bind(this,function(){}))}),900*a.expires_in))};DriveClient.prototype.checkToken=function(a){var b=0<this.lastTokenRefresh;(new Date).getTime()-this.lastTokenRefresh>this.tokenRefreshInterval||null==this.tokenRefreshThread?this.execute(mxUtils.bind(this,
function(){a();b&&this.fireEvent(new mxEventObject("disconnected"))})):a()};DriveClient.prototype.updateUser=function(b,c){try{var d={Authorization:"Bearer "+a};this.ui.editor.loadUrl("https://www.googleapis.com/oauth2/v2/userinfo?alt=json",mxUtils.bind(this,function(a){var d=JSON.parse(a);this.executeRequest({url:"/about"},mxUtils.bind(this,function(a){var c=mxResources.get("notAvailable"),f=c,g=null;null!=a&&null!=a.user&&(c=a.user.emailAddress,f=a.user.displayName,g=null!=a.user.picture?a.user.picture.url:
null);this.setUser(new DrawioUser(d.id,c,f,g,d.locale));this.userId=d.id;null!=b&&b()}),c)}),c,null,null,null,null,d)}catch(f){if(null!=c)c(f);else throw f;}};DriveClient.prototype.copyFile=function(a,c,d,f){null!=a&&null!=c&&this.executeRequest({url:"/files/"+a+"/copy?fields="+encodeURIComponent(this.allFields)+"&supportsAllDrives=true&enforceSingleParent=true",method:"POST",params:{title:c,properties:[{key:"channel",value:Editor.guid()}]}},d,f)};DriveClient.prototype.renameFile=function(a,c,d,f){null!=
a&&null!=c&&this.executeRequest(this.createDriveRequest(a,{title:c}),d,f)};DriveClient.prototype.moveFile=function(a,c,d,f){null!=a&&null!=c&&this.executeRequest(this.createDriveRequest(a,{parents:[{kind:"drive#fileLink",id:c}]}),d,f)};DriveClient.prototype.createDriveRequest=function(a,c){return{url:"/files/"+a+"?uploadType=multipart&supportsAllDrives=true",method:"PUT",contentType:"application/json; charset=UTF-8",params:c}};DriveClient.prototype.getLibrary=function(a,c,d){return this.getFile(a,
-c,d,!0,!0)};DriveClient.prototype.loadDescriptor=function(a,c,d,f){this.executeRequest({url:"/files/"+a+"?supportsAllDrives=true&fields="+(null!=f?f:this.allFields)},c,d)};DriveClient.prototype.getCustomProperty=function(a,c){var b=a.properties,d=null;if(null!=b)for(var m=0;m<b.length;m++)if(b[m].key==c){d=b[m].value;break}return d};DriveClient.prototype.getFile=function(b,c,d,f,m){f=null!=f?f:!1;m=null!=m?m:!1;null!=urlParams.rev?this.executeRequest({url:"/files/"+b+"/revisions/"+urlParams.rev+"?supportsAllDrives=true"},
-mxUtils.bind(this,function(a){a.title=a.originalFilename;a.headRevisionId=a.id;a.id=b;this.getXmlFile(a,c,d)}),d):this.loadDescriptor(b,mxUtils.bind(this,function(b){try{if(null!=this.user){var e=/\.png$/i.test(b.title);/\.v(dx|sdx?)$/i.test(b.title)||/\.gliffy$/i.test(b.title)||!this.ui.useCanvasForExport&&e?this.ui.convertFile(b.downloadUrl,b.title,b.mimeType,this.extension,c,d,null,{Authorization:"Bearer "+a}):f||m||b.mimeType==this.libraryMimeType||b.mimeType==this.xmlMimeType?this.getXmlFile(b,
-c,d,!0,m):this.getXmlFile(b,c,d)}else d({message:mxResources.get("loggedOut")})}catch(k){if(null!=d)d(k);else throw k;}}),d)};DriveClient.prototype.isGoogleRealtimeMimeType=function(a){return null!=a&&"application/vnd.jgraph.mxfile."==a.substring(0,30)};DriveClient.prototype.getXmlFile=function(b,c,d,f,m){try{var g={Authorization:"Bearer "+a},e=b.downloadUrl;if(null==e)null!=d&&d({message:mxResources.get("exportOptionsDisabledDetails")});else{var k=0,l=mxUtils.bind(this,function(){this.ui.editor.loadUrl(e,
-mxUtils.bind(this,function(a){try{if(null==a)d({message:mxResources.get("invalidOrMissingFile")});else if(b.mimeType==this.libraryMimeType||m)b.mimeType!=this.libraryMimeType||m?c(new DriveLibrary(this.ui,a,b)):d({message:mxResources.get("notADiagramFile")});else{var f=!1;if(/\.png$/i.test(b.title)){var g=a.lastIndexOf(",");if(0<g){var k=this.ui.extractGraphModelFromPng(a);if(null!=k&&0<k.length)a=k;else try{var k=a.substring(g+1),l=!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(k):
-atob(k),n=this.ui.editor.extractGraphModel(mxUtils.parseXml(l).documentElement,!0);null==n||0<n.getElementsByTagName("parsererror").length?f=!0:a=l}catch(x){f=!0}}}else/\.pdf$/i.test(b.title)?(k=Editor.extractGraphModelFromPdf(a),null!=k&&0<k.length&&(f=!0,a=k)):"data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)&&(l=a.substring(22),a=window.atob&&!mxClient.IS_SF?atob(l):Base64.decode(l));Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(a,e)?this.ui.parseFile(new Blob([a],
-{type:"application/octet-stream"}),mxUtils.bind(this,function(a){try{4==a.readyState&&(200<=a.status&&299>=a.status?c(new LocalFile(this.ui,a.responseText,b.title+this.extension,!0)):null!=d&&d({message:mxResources.get("errorLoadingFile")}))}catch(B){if(null!=d)d(B);else throw B;}}),b.title):c(f?new LocalFile(this.ui,a,b.title,!0):new DriveFile(this.ui,a,b))}}catch(x){if(null!=d)d(x);else throw x;}}),mxUtils.bind(this,function(a,b){if(k<this.maxRetries&&null!=b&&403==b.getStatus())k++,window.setTimeout(l,
-2*k*this.coolOff*(1+.1*(Math.random()-.5)));else if(null!=d)d(a);else throw a;}),null!=b.mimeType&&"image/"==b.mimeType.substring(0,6)&&"image/svg"!=b.mimeType.substring(0,9)||/\.png$/i.test(b.title)||/\.jpe?g$/i.test(b.title)||/\.pdf$/i.test(b.title),null,null,null,g)});l()}}catch(p){if(null!=d)d(p);else throw p;}};DriveClient.prototype.saveFile=function(a,c,d,f,m,n,e,k,l){try{var b=0;a.saveLevel=1;var g=mxUtils.bind(this,function(b){if(null!=f)f(b);else throw b;try{if(!a.isConflict(b)){var c="sl_"+
+c,d,!0,!0)};DriveClient.prototype.loadDescriptor=function(a,c,d,f){this.executeRequest({url:"/files/"+a+"?supportsAllDrives=true&fields="+(null!=f?f:this.allFields)},c,d)};DriveClient.prototype.getCustomProperty=function(a,c){var b=a.properties,d=null;if(null!=b)for(var l=0;l<b.length;l++)if(b[l].key==c){d=b[l].value;break}return d};DriveClient.prototype.getFile=function(b,c,d,f,l){f=null!=f?f:!1;l=null!=l?l:!1;null!=urlParams.rev?this.executeRequest({url:"/files/"+b+"/revisions/"+urlParams.rev+"?supportsAllDrives=true"},
+mxUtils.bind(this,function(a){a.title=a.originalFilename;a.headRevisionId=a.id;a.id=b;this.getXmlFile(a,c,d)}),d):this.loadDescriptor(b,mxUtils.bind(this,function(b){try{if(null!=this.user){var e=/\.png$/i.test(b.title);/\.v(dx|sdx?)$/i.test(b.title)||/\.gliffy$/i.test(b.title)||!this.ui.useCanvasForExport&&e?this.ui.convertFile(b.downloadUrl,b.title,b.mimeType,this.extension,c,d,null,{Authorization:"Bearer "+a}):f||l||b.mimeType==this.libraryMimeType||b.mimeType==this.xmlMimeType?this.getXmlFile(b,
+c,d,!0,l):this.getXmlFile(b,c,d)}else d({message:mxResources.get("loggedOut")})}catch(k){if(null!=d)d(k);else throw k;}}),d)};DriveClient.prototype.isGoogleRealtimeMimeType=function(a){return null!=a&&"application/vnd.jgraph.mxfile."==a.substring(0,30)};DriveClient.prototype.getXmlFile=function(b,c,d,f,l){try{var g={Authorization:"Bearer "+a},e=b.downloadUrl;if(null==e)null!=d&&d({message:mxResources.get("exportOptionsDisabledDetails")});else{var k=0,n=mxUtils.bind(this,function(){this.ui.editor.loadUrl(e,
+mxUtils.bind(this,function(a){try{if(null==a)d({message:mxResources.get("invalidOrMissingFile")});else if(b.mimeType==this.libraryMimeType||l)b.mimeType!=this.libraryMimeType||l?c(new DriveLibrary(this.ui,a,b)):d({message:mxResources.get("notADiagramFile")});else{var f=!1;if(/\.png$/i.test(b.title)){var g=a.lastIndexOf(",");if(0<g){var k=this.ui.extractGraphModelFromPng(a);if(null!=k&&0<k.length)a=k;else try{var k=a.substring(g+1),m=!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(k):
+atob(k),n=this.ui.editor.extractGraphModel(mxUtils.parseXml(m).documentElement,!0);null==n||0<n.getElementsByTagName("parsererror").length?f=!0:a=m}catch(x){f=!0}}}else/\.pdf$/i.test(b.title)?(k=Editor.extractGraphModelFromPdf(a),null!=k&&0<k.length&&(f=!0,a=k)):"data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)&&(m=a.substring(22),a=window.atob&&!mxClient.IS_SF?atob(m):Base64.decode(m));Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(a,e)?this.ui.parseFile(new Blob([a],
+{type:"application/octet-stream"}),mxUtils.bind(this,function(a){try{4==a.readyState&&(200<=a.status&&299>=a.status?c(new LocalFile(this.ui,a.responseText,b.title+this.extension,!0)):null!=d&&d({message:mxResources.get("errorLoadingFile")}))}catch(B){if(null!=d)d(B);else throw B;}}),b.title):c(f?new LocalFile(this.ui,a,b.title,!0):new DriveFile(this.ui,a,b))}}catch(x){if(null!=d)d(x);else throw x;}}),mxUtils.bind(this,function(a,b){if(k<this.maxRetries&&null!=b&&403==b.getStatus())k++,window.setTimeout(n,
+2*k*this.coolOff*(1+.1*(Math.random()-.5)));else if(null!=d)d(a);else throw a;}),null!=b.mimeType&&"image/"==b.mimeType.substring(0,6)&&"image/svg"!=b.mimeType.substring(0,9)||/\.png$/i.test(b.title)||/\.jpe?g$/i.test(b.title)||/\.pdf$/i.test(b.title),null,null,null,g)});n()}}catch(p){if(null!=d)d(p);else throw p;}};DriveClient.prototype.saveFile=function(a,c,d,f,l,m,e,k,n){try{var b=0;a.saveLevel=1;var g=mxUtils.bind(this,function(b){if(null!=f)f(b);else throw b;try{if(!a.isConflict(b)){var c="sl_"+
a.saveLevel+"-error_"+(a.getErrorMessage(b)||"unknown");null!=b&&null!=b.error&&null!=b.error.code&&(c+="-code_"+b.error.code);EditorUi.logEvent({category:"ERROR-SAVE-FILE-"+a.getHash()+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),action:c,label:(null!=this.user?
-"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}}catch(H){}}),t=mxUtils.bind(this,function(a){g(a);try{EditorUi.logError(a.message,null,null,a)}catch(G){}});if(a.isEditable()&&null!=a.desc){var q=(new Date).getTime(),v=a.desc.etag,y=a.desc.modifiedDate,x=a.desc.headRevisionId,B=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle());n=null!=n?n:!1;var z=null,A=!1,C={mimeType:a.desc.mimeType,title:a.getTitle()};if(this.isGoogleRealtimeMimeType(C.mimeType))C.mimeType=
-this.xmlMimeType,z=a.desc,A=c=!0;else if("application/octet-stream"==C.mimeType||"1"==urlParams["override-mime"]&&C.mimeType!=this.xmlMimeType)C.mimeType=this.xmlMimeType;var E=mxUtils.bind(this,function(f,m,p){try{a.saveLevel=3;a.constructor==DriveFile&&(null==k&&(k=[]),null==a.getChannelId()&&k.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&&k.push({key:"key",value:Editor.guid(32)}),k.push({key:"secret",value:null!=l?l:Editor.guid(32)}));p||(null!=f||n||(f=this.placeholderThumbnail,
-m=this.placeholderMimeType),null!=f&&null!=m&&(C.thumbnail={image:f,mimeType:m}));var u=a.getData(),E=mxUtils.bind(this,function(b){try{if(a.saveDelay=(new Date).getTime()-q,a.saveLevel=11,null==b)g({message:mxResources.get("errorSavingFile")+": Empty response"});else{var e=(new Date(b.modifiedDate)).getTime()-(new Date(y)).getTime();if(0>=e||v==b.etag||c&&x==b.headRevisionId){a.saveLevel=12;var f=[];0>=e&&f.push("invalid modified time");v==b.etag&&f.push("stale etag");c&&x==b.headRevisionId&&f.push("stale revision");
+"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}}catch(H){}}),t=mxUtils.bind(this,function(a){g(a);try{EditorUi.logError(a.message,null,null,a)}catch(G){}});if(a.isEditable()&&null!=a.desc){var q=(new Date).getTime(),v=a.desc.etag,y=a.desc.modifiedDate,x=a.desc.headRevisionId,B=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle());m=null!=m?m:!1;var z=null,A=!1,C={mimeType:a.desc.mimeType,title:a.getTitle()};if(this.isGoogleRealtimeMimeType(C.mimeType))C.mimeType=
+this.xmlMimeType,z=a.desc,A=c=!0;else if("application/octet-stream"==C.mimeType||"1"==urlParams["override-mime"]&&C.mimeType!=this.xmlMimeType)C.mimeType=this.xmlMimeType;var E=mxUtils.bind(this,function(f,l,p){try{a.saveLevel=3;a.constructor==DriveFile&&(null==k&&(k=[]),null==a.getChannelId()&&k.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&&k.push({key:"key",value:Editor.guid(32)}),k.push({key:"secret",value:null!=n?n:Editor.guid(32)}));p||(null!=f||m||(f=this.placeholderThumbnail,
+l=this.placeholderMimeType),null!=f&&null!=l&&(C.thumbnail={image:f,mimeType:l}));var u=a.getData(),E=mxUtils.bind(this,function(b){try{if(a.saveDelay=(new Date).getTime()-q,a.saveLevel=11,null==b)g({message:mxResources.get("errorSavingFile")+": Empty response"});else{var e=(new Date(b.modifiedDate)).getTime()-(new Date(y)).getTime();if(0>=e||v==b.etag||c&&x==b.headRevisionId){a.saveLevel=12;var f=[];0>=e&&f.push("invalid modified time");v==b.etag&&f.push("stale etag");c&&x==b.headRevisionId&&f.push("stale revision");
var k=f.join(", ");g({message:mxResources.get("errorSavingFile")+": "+k},b);try{EditorUi.logError("Critical: Error saving to Google Drive "+a.desc.id,null,"from-"+x+"."+y+"-"+this.ui.hashValue(v)+"-to-"+b.headRevisionId+"."+b.modifiedDate+"-"+this.ui.hashValue(b.etag)+(0<k.length?"-errors-"+k:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync"))}catch(S){}}else if(a.saveLevel=null,d(b,u),null!=z){this.executeRequest({url:"/files/"+z.id+"/revisions/"+
z.headRevisionId+"?supportsAllDrives=true"},mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned=!0;this.executeRequest({url:"/files/"+z.id+"/revisions/"+z.headRevisionId,method:"PUT",params:a})})));try{EditorUi.logEvent({category:a.convertedFrom+"-CONVERT-FILE-"+a.getHash(),action:"from_"+z.id+"."+z.headRevisionId+"-to_"+a.desc.id+"."+a.desc.headRevisionId,label:null!=this.user?"user_"+this.user.id:"nouser"+(null!=a.sync?"-client_"+a.sync.clientId:"nosync")})}catch(S){}}}}catch(S){t(S)}}),F=
-mxUtils.bind(this,function(d,m){a.saveLevel=4;try{null!=k&&(C.properties=k);var l=e||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),n=mxUtils.bind(this,function(e){a.saveLevel=5;try{var f=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType,k=!0,n=null;try{n=window.setTimeout(mxUtils.bind(this,function(){k=!1;g({code:App.ERROR_TIMEOUT})}),5*this.ui.timeout)}catch(V){}this.executeRequest(this.createUploadRequest(a.getId(),
-C,d,c||e||f,m,e?null:l,A),mxUtils.bind(this,function(a){window.clearTimeout(n);k&&E(a)}),mxUtils.bind(this,function(c){window.clearTimeout(n);if(k){a.saveLevel=6;try{a.isConflict(c)?this.executeRequest({url:"/files/"+a.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(e){a.saveLevel=7;try{if(null!=e&&e.etag==l)if(b<this.staleEtagMaxRetries){b++;var d=2*b*this.coolOff*(1+.1*(Math.random()-.5));window.setTimeout(p,d);"1"==urlParams.test&&EditorUi.debug("DriveClient: Stale Etag Detected",
+mxUtils.bind(this,function(d,l){a.saveLevel=4;try{null!=k&&(C.properties=k);var m=e||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),n=mxUtils.bind(this,function(e){a.saveLevel=5;try{var f=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType,k=!0,n=null;try{n=window.setTimeout(mxUtils.bind(this,function(){k=!1;g({code:App.ERROR_TIMEOUT})}),5*this.ui.timeout)}catch(V){}this.executeRequest(this.createUploadRequest(a.getId(),
+C,d,c||e||f,l,e?null:m,A),mxUtils.bind(this,function(a){window.clearTimeout(n);k&&E(a)}),mxUtils.bind(this,function(c){window.clearTimeout(n);if(k){a.saveLevel=6;try{a.isConflict(c)?this.executeRequest({url:"/files/"+a.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(e){a.saveLevel=7;try{if(null!=e&&e.etag==m)if(b<this.staleEtagMaxRetries){b++;var d=2*b*this.coolOff*(1+.1*(Math.random()-.5));window.setTimeout(p,d);"1"==urlParams.test&&EditorUi.debug("DriveClient: Stale Etag Detected",
"retry",b,"delay",d)}else{p(!0);try{EditorUi.logEvent({category:"STALE-ETAG-SAVE-FILE-"+a.getHash(),action:"rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}catch(O){}}else"1"==
-urlParams.test&&e.headRevisionId==x&&EditorUi.debug("DriveClient: Remote Etag Changed","local",l,"remote",e.etag,"rev",a.desc.headRevisionId,"response",[e],"file",[a]),g(c,e)}catch(O){t(O)}}),mxUtils.bind(this,function(){g(c)})):g(c)}catch(fa){t(fa)}}}))}catch(V){t(V)}}),p=mxUtils.bind(this,function(b){a.saveLevel=9;if(b||null==l)n(b);else{var c=!0,e=null;try{e=window.setTimeout(mxUtils.bind(this,function(){c=!1;g({code:App.ERROR_TIMEOUT})}),3*this.ui.timeout)}catch(W){}this.executeRequest({url:"/files/"+
-a.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(d){window.clearTimeout(e);if(c){a.saveLevel=10;try{null!=d&&d.headRevisionId==x?("1"==urlParams.test&&l!=d.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",l,"to",d.etag,"rev",a.desc.headRevisionId,"response",[d],"file",[a]),l=d.etag,n(b)):g({error:{code:412}},d)}catch(V){t(V)}}}),mxUtils.bind(this,function(b){window.clearTimeout(e);c&&(a.saveLevel=11,g(b))}))}});if(B&&null==f){a.saveLevel=8;
+urlParams.test&&e.headRevisionId==x&&EditorUi.debug("DriveClient: Remote Etag Changed","local",m,"remote",e.etag,"rev",a.desc.headRevisionId,"response",[e],"file",[a]),g(c,e)}catch(O){t(O)}}),mxUtils.bind(this,function(){g(c)})):g(c)}catch(fa){t(fa)}}}))}catch(V){t(V)}}),p=mxUtils.bind(this,function(b){a.saveLevel=9;if(b||null==m)n(b);else{var c=!0,e=null;try{e=window.setTimeout(mxUtils.bind(this,function(){c=!1;g({code:App.ERROR_TIMEOUT})}),3*this.ui.timeout)}catch(W){}this.executeRequest({url:"/files/"+
+a.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(d){window.clearTimeout(e);if(c){a.saveLevel=10;try{null!=d&&d.headRevisionId==x?("1"==urlParams.test&&m!=d.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",m,"to",d.etag,"rev",a.desc.headRevisionId,"response",[d],"file",[a]),m=d.etag,n(b)):g({error:{code:412}},d)}catch(V){t(V)}}}),mxUtils.bind(this,function(b){window.clearTimeout(e);c&&(a.saveLevel=11,g(b))}))}});if(B&&null==f){a.saveLevel=8;
var z=new Image;z.onload=mxUtils.bind(this,function(){try{var a=this.thumbnailWidth/z.width,b=document.createElement("canvas");b.width=this.thumbnailWidth;b.height=Math.floor(z.height*a);b.getContext("2d").drawImage(z,0,0,b.width,b.height);var c=b.toDataURL(),c=c.substring(c.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");C.thumbnail={image:c,mimeType:"image/png"};p(!1)}catch(W){try{p(!1)}catch(V){t(V)}}});z.src="data:image/png;base64,"+d}else p(!1)}catch(X){t(X)}});if(B){var D=this.ui.getPngFileProperties(this.ui.fileNode);
-this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){F(a,!0)}),g,this.ui.getCurrentFile()!=a?u:null,D.scale,D.border)}else F(u,!1)}catch(L){t(L)}});try{a.saveLevel=2,(n||B||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=C.mimeType&&"application/vnd.jgraph.mxfile"!=C.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(a){try{var b=null;try{null!=a&&(b=a.toDataURL("image/png")),null!=b&&(b=b.length>this.maxThumbnailSize?null:
-b.substring(b.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(H){b=null}E(b,"image/png")}catch(H){t(H)}})))&&E(null,null,a.constructor!=DriveLibrary)}catch(D){t(D)}}else this.ui.editor.graph.reset(),g({message:mxResources.get("readOnly")})}catch(D){t(D)}};DriveClient.prototype.insertFile=function(a,c,d,f,m,n,e){n=null!=n?n:this.xmlMimeType;a={mimeType:n,title:a};null!=d&&(a.parents=[{kind:"drive#fileLink",id:d}]);this.executeRequest(this.createUploadRequest(null,a,c,!1,e),mxUtils.bind(this,
-function(a){n==this.libraryMimeType?f(new DriveLibrary(this.ui,c,a)):0==a?null!=m&&m({message:mxResources.get("errorSavingFile")}):f(new DriveFile(this.ui,c,a))}),m)};DriveClient.prototype.createUploadRequest=function(a,c,d,f,m,n,e){m=null!=m?m:!1;var b={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=n&&(b["If-Match"]=n);a={fullUrl:"https://content.googleapis.com/upload/drive/v2/files"+(null!=a?"/"+a:"")+"?uploadType=multipart&supportsAllDrives=true&enforceSingleParent=true&fields="+
-this.allFields,method:null!=a?"PUT":"POST",headers:b,params:"\r\n---------314159265358979323846\r\nContent-Type: application/json\r\n\r\n"+JSON.stringify(c)+"\r\n---------314159265358979323846\r\nContent-Type: application/octect-stream\r\nContent-Transfer-Encoding: base64\r\n\r\n"+(null!=d?m?d:!window.btoa||mxClient.IS_IE||mxClient.IS_IE11?Base64.encode(d):Graph.base64EncodeUnicode(d):"")+"\r\n---------314159265358979323846--"};f||(a.fullUrl+="&newRevision=false");e&&(a.fullUrl+="&pinned=true");return a};
+this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){F(a,!0)}),g,this.ui.getCurrentFile()!=a?u:null,D.scale,D.border)}else F(u,!1)}catch(L){t(L)}});try{a.saveLevel=2,(m||B||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=C.mimeType&&"application/vnd.jgraph.mxfile"!=C.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(a){try{var b=null;try{null!=a&&(b=a.toDataURL("image/png")),null!=b&&(b=b.length>this.maxThumbnailSize?null:
+b.substring(b.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(H){b=null}E(b,"image/png")}catch(H){t(H)}})))&&E(null,null,a.constructor!=DriveLibrary)}catch(D){t(D)}}else this.ui.editor.graph.reset(),g({message:mxResources.get("readOnly")})}catch(D){t(D)}};DriveClient.prototype.insertFile=function(a,c,d,f,l,m,e){m=null!=m?m:this.xmlMimeType;a={mimeType:m,title:a};null!=d&&(a.parents=[{kind:"drive#fileLink",id:d}]);this.executeRequest(this.createUploadRequest(null,a,c,!1,e),mxUtils.bind(this,
+function(a){m==this.libraryMimeType?f(new DriveLibrary(this.ui,c,a)):0==a?null!=l&&l({message:mxResources.get("errorSavingFile")}):f(new DriveFile(this.ui,c,a))}),l)};DriveClient.prototype.createUploadRequest=function(a,c,d,f,l,m,e){l=null!=l?l:!1;var b={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=m&&(b["If-Match"]=m);a={fullUrl:"https://content.googleapis.com/upload/drive/v2/files"+(null!=a?"/"+a:"")+"?uploadType=multipart&supportsAllDrives=true&enforceSingleParent=true&fields="+
+this.allFields,method:null!=a?"PUT":"POST",headers:b,params:"\r\n---------314159265358979323846\r\nContent-Type: application/json\r\n\r\n"+JSON.stringify(c)+"\r\n---------314159265358979323846\r\nContent-Type: application/octect-stream\r\nContent-Transfer-Encoding: base64\r\n\r\n"+(null!=d?l?d:!window.btoa||mxClient.IS_IE||mxClient.IS_IE11?Base64.encode(d):Graph.base64EncodeUnicode(d):"")+"\r\n---------314159265358979323846--"};f||(a.fullUrl+="&newRevision=false");e&&(a.fullUrl+="&pinned=true");return a};
DriveClient.prototype.createLinkPicker=function(){var b=d.linkPicker;if(null==b||d.linkPickerToken!=a){d.linkPickerToken=a;var b=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0),c=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0),g=(new google.picker.DocsView).setIncludeFolders(!0).setEnableDrives(!0).setSelectFolderEnabled(!0),b=(new google.picker.PickerBuilder).setAppId(this.appId).setLocale(mxLanguage).setOAuthToken(d.linkPickerToken).enableFeature(google.picker.Feature.SUPPORT_DRIVES).addView(b).addView(c).addView(g).addView(google.picker.ViewId.RECENTLY_PICKED)}return b};
-DriveClient.prototype.pickFile=function(b,c,g){this.filePickerCallback=null!=b?b:mxUtils.bind(this,function(a){this.ui.loadFile("G"+a)});this.filePicked=mxUtils.bind(this,function(a){a.action==google.picker.Action.PICKED&&this.filePickerCallback(a.docs[0].id,a.docs[0])});this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){try{this.ui.spinner.stop();var b=c?"genericPicker":"filePicker",m=mxUtils.bind(this,function(a){"picker modal-dialog-bg picker-dialog-bg"==
-mxEvent.getSource(a).className&&(mxEvent.removeListener(document,"click",m),this[b].setVisible(!1),g&&g())});if(null==d[b]||d[b+"Token"]!=a){d[b+"Token"]=a;var n=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0),e=(new google.picker.DocsView).setIncludeFolders(!0),k=(new google.picker.DocsView).setEnableDrives(!0).setIncludeFolders(!0),l=(new google.picker.DocsUploadView).setIncludeFolders(!0);c?(n.setMimeTypes("*/*"),e.setMimeTypes("*/*"),k.setMimeTypes("*/*")):
-(n.setMimeTypes(this.mimeTypes),e.setMimeTypes(this.mimeTypes),k.setMimeTypes(this.mimeTypes));d[b]=(new google.picker.PickerBuilder).setOAuthToken(d[b+"Token"]).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_DRIVES).addView(n).addView(e).addView(k).addView(google.picker.ViewId.RECENTLY_PICKED).addView(l);if(urlParams.gPickerSize){var p=urlParams.gPickerSize.split(",");d[b]=d[b].setSize(p[0],p[1])}urlParams.topBaseUrl&&(d[b]=d[b].setOrigin(decodeURIComponent(urlParams.topBaseUrl)));
-d[b]=d[b].setCallback(mxUtils.bind(this,function(a){if(a.action==google.picker.Action.PICKED||a.action==google.picker.Action.CANCEL)mxEvent.removeListener(document,"click",m),g&&a.action==google.picker.Action.CANCEL&&g();a.action==google.picker.Action.PICKED&&this.filePicked(a)})).build()}mxEvent.addListener(document,"click",m);d[b].setVisible(!0)}catch(u){this.ui.spinner.stop(),this.ui.handleError(u)}}))};DriveClient.prototype.pickFolder=function(b,c){this.folderPickerCallback=b;var g=mxUtils.bind(this,
+DriveClient.prototype.pickFile=function(b,c,g){this.filePickerCallback=null!=b?b:mxUtils.bind(this,function(a){this.ui.loadFile("G"+a)});this.filePicked=mxUtils.bind(this,function(a){a.action==google.picker.Action.PICKED&&this.filePickerCallback(a.docs[0].id,a.docs[0])});this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){try{this.ui.spinner.stop();var b=c?"genericPicker":"filePicker",l=mxUtils.bind(this,function(a){"picker modal-dialog-bg picker-dialog-bg"==
+mxEvent.getSource(a).className&&(mxEvent.removeListener(document,"click",l),this[b].setVisible(!1),g&&g())});if(null==d[b]||d[b+"Token"]!=a){d[b+"Token"]=a;var m=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0),e=(new google.picker.DocsView).setIncludeFolders(!0),k=(new google.picker.DocsView).setEnableDrives(!0).setIncludeFolders(!0),n=(new google.picker.DocsUploadView).setIncludeFolders(!0);c?(m.setMimeTypes("*/*"),e.setMimeTypes("*/*"),k.setMimeTypes("*/*")):
+(m.setMimeTypes(this.mimeTypes),e.setMimeTypes(this.mimeTypes),k.setMimeTypes(this.mimeTypes));d[b]=(new google.picker.PickerBuilder).setOAuthToken(d[b+"Token"]).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_DRIVES).addView(m).addView(e).addView(k).addView(google.picker.ViewId.RECENTLY_PICKED).addView(n);if(urlParams.gPickerSize){var p=urlParams.gPickerSize.split(",");d[b]=d[b].setSize(p[0],p[1])}urlParams.topBaseUrl&&(d[b]=d[b].setOrigin(decodeURIComponent(urlParams.topBaseUrl)));
+d[b]=d[b].setCallback(mxUtils.bind(this,function(a){if(a.action==google.picker.Action.PICKED||a.action==google.picker.Action.CANCEL)mxEvent.removeListener(document,"click",l),g&&a.action==google.picker.Action.CANCEL&&g();a.action==google.picker.Action.PICKED&&this.filePicked(a)})).build()}mxEvent.addListener(document,"click",l);d[b].setVisible(!0)}catch(u){this.ui.spinner.stop(),this.ui.handleError(u)}}))};DriveClient.prototype.pickFolder=function(b,c){this.folderPickerCallback=b;var g=mxUtils.bind(this,
function(){try{this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){try{this.ui.spinner.stop();var b=mxUtils.bind(this,function(a){"picker modal-dialog-bg picker-dialog-bg"==mxEvent.getSource(a).className&&(mxEvent.removeListener(document,"click",b),d.folderPicker.setVisible(!1))});if(null==d.folderPicker||d.folderPickerToken!=a){d.folderPickerToken=a;var c=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder"),
g=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder"),e=(new google.picker.DocsView).setIncludeFolders(!0).setEnableDrives(!0).setSelectFolderEnabled(!0).setMimeTypes("application/vnd.google-apps.folder");d.folderPicker=(new google.picker.PickerBuilder).setSelectableMimeTypes("application/vnd.google-apps.folder").setOAuthToken(d.folderPickerToken).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_DRIVES).addView(c).addView(g).addView(e).addView(google.picker.ViewId.RECENTLY_PICKED).setTitle(mxResources.get("pickFolder"));
-if(urlParams.gPickerSize){var k=urlParams.gPickerSize.split(",");d.folderPicker=d.folderPicker.setSize(k[0],k[1])}urlParams.topBaseUrl&&(d.folderPicker=d.folderPicker.setOrigin(decodeURIComponent(urlParams.topBaseUrl)));d.folderPicker=d.folderPicker.setCallback(mxUtils.bind(this,function(a){a.action!=google.picker.Action.PICKED&&a.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document,"click",b);this.folderPickerCallback(a)})).build()}mxEvent.addListener(document,"click",b);d.folderPicker.setVisible(!0)}catch(l){this.ui.spinner.stop(),
-this.ui.handleError(l)}}))}catch(f){this.ui.handleError(f)}});c?g():this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){this.folderPickerCallback({action:google.picker.Action.PICKED,docs:[{type:"folder",id:"root"}]})}),mxUtils.bind(this,function(){g()}),mxResources.get("yes"),mxResources.get("noPickFolder")+"...",!0)};DriveClient.prototype.pickLibrary=function(b){this.filePickerCallback=b;this.filePicked=mxUtils.bind(this,function(a){a.action==google.picker.Action.PICKED?
+if(urlParams.gPickerSize){var k=urlParams.gPickerSize.split(",");d.folderPicker=d.folderPicker.setSize(k[0],k[1])}urlParams.topBaseUrl&&(d.folderPicker=d.folderPicker.setOrigin(decodeURIComponent(urlParams.topBaseUrl)));d.folderPicker=d.folderPicker.setCallback(mxUtils.bind(this,function(a){a.action!=google.picker.Action.PICKED&&a.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document,"click",b);this.folderPickerCallback(a)})).build()}mxEvent.addListener(document,"click",b);d.folderPicker.setVisible(!0)}catch(n){this.ui.spinner.stop(),
+this.ui.handleError(n)}}))}catch(f){this.ui.handleError(f)}});c?g():this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){this.folderPickerCallback({action:google.picker.Action.PICKED,docs:[{type:"folder",id:"root"}]})}),mxUtils.bind(this,function(){g()}),mxResources.get("yes"),mxResources.get("noPickFolder")+"...",!0)};DriveClient.prototype.pickLibrary=function(b){this.filePickerCallback=b;this.filePicked=mxUtils.bind(this,function(a){a.action==google.picker.Action.PICKED?
this.filePickerCallback(a.docs[0].id):a.action==google.picker.Action.CANCEL&&null==this.ui.getCurrentFile()&&this.ui.showSplash()});this.ui.spinner.spin(document.body,mxResources.get("authorizing"))&&this.execute(mxUtils.bind(this,function(){try{this.ui.spinner.stop();var b=mxUtils.bind(this,function(a){"picker modal-dialog-bg picker-dialog-bg"==mxEvent.getSource(a).className&&(mxEvent.removeListener(document,"click",b),d.libraryPicker.setVisible(!1))});if(null==d.libraryPicker||d.libraryPickerToken!=
-a){d.libraryPickerToken=a;var g=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),f=(new google.picker.DocsView).setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),m=(new google.picker.DocsView).setEnableDrives(!0).setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),
-n=(new google.picker.DocsUploadView).setIncludeFolders(!0);d.libraryPicker=(new google.picker.PickerBuilder).setOAuthToken(d.libraryPickerToken).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_DRIVES).addView(g).addView(f).addView(m).addView(google.picker.ViewId.RECENTLY_PICKED).addView(n);if(urlParams.gPickerSize){var e=urlParams.gPickerSize.split(",");d.libraryPicker=d.libraryPicker.setSize(e[0],e[1])}urlParams.topBaseUrl&&(d.libraryPicker=d.libraryPicker.setOrigin(decodeURIComponent(urlParams.topBaseUrl)));
+a){d.libraryPickerToken=a;var g=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),f=(new google.picker.DocsView).setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),l=(new google.picker.DocsView).setEnableDrives(!0).setIncludeFolders(!0).setMimeTypes(this.libraryMimeType+",application/xml,text/plain,application/octet-stream"),
+m=(new google.picker.DocsUploadView).setIncludeFolders(!0);d.libraryPicker=(new google.picker.PickerBuilder).setOAuthToken(d.libraryPickerToken).setLocale(mxLanguage).setAppId(this.appId).enableFeature(google.picker.Feature.SUPPORT_DRIVES).addView(g).addView(f).addView(l).addView(google.picker.ViewId.RECENTLY_PICKED).addView(m);if(urlParams.gPickerSize){var e=urlParams.gPickerSize.split(",");d.libraryPicker=d.libraryPicker.setSize(e[0],e[1])}urlParams.topBaseUrl&&(d.libraryPicker=d.libraryPicker.setOrigin(decodeURIComponent(urlParams.topBaseUrl)));
d.libraryPicker=d.libraryPicker.setCallback(mxUtils.bind(this,function(a){a.action!=google.picker.Action.PICKED&&a.action!=google.picker.Action.CANCEL||mxEvent.removeListener(document,"click",b);a.action==google.picker.Action.PICKED&&this.filePicked(a)})).build()}mxEvent.addListener(document,"click",b);d.libraryPicker.setVisible(!0)}catch(k){this.ui.spinner.stop(),this.ui.handleError(k)}}))};DriveClient.prototype.showPermissions=function(b){var c=mxUtils.bind(this,function(){var a=new ConfirmDialog(this.ui,
mxResources.get("googleSharingNotAvailable"),mxUtils.bind(this,function(){this.ui.editor.graph.openLink("https://drive.google.com/open?id="+b)}),null,mxResources.get("open"),null,null,null,null,IMAGE_PATH+"/google-share.png");this.ui.showDialog(a.container,360,190,!0,!0);a.init()});this.sharingFailed?c():this.checkToken(mxUtils.bind(this,function(){try{var d=new gapi.drive.share.ShareClient(this.appId);d.setOAuthToken(a);d.setItemIds([b]);d.showSettingsDialog();"MutationObserver"in window&&(null!=
this.sharingObserver&&(this.sharingObserver.disconnect(),this.sharingObserver=null),this.sharingObserver=new MutationObserver(mxUtils.bind(this,function(a){for(var b=!1,d=0;d<a.length;d++)for(var e=0;e<a[d].addedNodes.length;e++){var f=a[d].addedNodes[e];"BUTTON"==f.nodeName&&"ok"==f.getAttribute("name")&&null!=f.parentNode&&null!=f.parentNode.parentNode&&"dialog"==f.parentNode.parentNode.getAttribute("role")?(this.sharingFailed=!0,f.click(),c(),b=!0):"DIV"==f.nodeName&&"shr-q-shr-r-shr-xb"==f.className&&
@@ -10677,34 +10677,34 @@ this.sharingObserver&&(this.sharingObserver.disconnect(),this.sharingObserver=nu
JSON.parse(this.getPersistentToken(!0))||{};a.userId=this.userId;b.current=a;b[this.userId]={user:this.user};DrawioClient.prototype.setPersistentToken.call(this,JSON.stringify(b),c)}})();DropboxFile=function(a,d,b){DrawioFile.call(this,a,d);this.stat=b};mxUtils.extend(DropboxFile,DrawioFile);DropboxFile.prototype.getId=function(){return this.stat.path_display.substring(1)};DropboxFile.prototype.getHash=function(){return"D"+encodeURIComponent(this.getId())};DropboxFile.prototype.getMode=function(){return App.MODE_DROPBOX};DropboxFile.prototype.isAutosaveOptional=function(){return!0};DropboxFile.prototype.getTitle=function(){return this.stat.name};
DropboxFile.prototype.isRenamable=function(){return!0};DropboxFile.prototype.getSize=function(){return this.stat.size};DropboxFile.prototype.isRevisionHistorySupported=function(){return!0};
DropboxFile.prototype.getRevisions=function(a,d){var b=this.ui.dropbox.client.filesListRevisions({path:this.stat.path_lower,limit:100});b.then(mxUtils.bind(this,function(b){try{for(var c=[],f=b.entries.length-1;0<=f;f--)mxUtils.bind(this,function(a){c.push({modifiedDate:a.client_modified,fileSize:a.size,getXml:mxUtils.bind(this,function(b,c){this.ui.dropbox.readFile({path:this.stat.path_lower,rev:a.rev},b,c)}),getUrl:mxUtils.bind(this,function(b){return this.ui.getUrl(window.location.pathname+"?rev="+
-a.rev+"&chrome=0&nav=1&layers=1&edit=_blank"+(null!=b?"&page="+b:""))+window.location.hash})})})(b.entries[f]);a(c)}catch(m){d(m)}}));b["catch"](function(a){d(a)})};DropboxFile.prototype.getLatestVersion=function(a,d){this.ui.dropbox.getFile(this.getId(),a,d)};DropboxFile.prototype.updateDescriptor=function(a){this.stat=a.stat};DropboxFile.prototype.save=function(a,d,b,c,g){this.doSave(this.getTitle(),a,d,b,c,g)};DropboxFile.prototype.saveAs=function(a,d,b){this.doSave(a,!1,d,b)};
-DropboxFile.prototype.doSave=function(a,d,b,c,g,f){var m=this.stat.name;this.stat.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.stat.name=m;this.saveFile(a,d,b,c,g,f)}),c,g,f])};
+a.rev+"&chrome=0&nav=1&layers=1&edit=_blank"+(null!=b?"&page="+b:""))+window.location.hash})})})(b.entries[f]);a(c)}catch(l){d(l)}}));b["catch"](function(a){d(a)})};DropboxFile.prototype.getLatestVersion=function(a,d){this.ui.dropbox.getFile(this.getId(),a,d)};DropboxFile.prototype.updateDescriptor=function(a){this.stat=a.stat};DropboxFile.prototype.save=function(a,d,b,c,g){this.doSave(this.getTitle(),a,d,b,c,g)};DropboxFile.prototype.saveAs=function(a,d,b){this.doSave(a,!1,d,b)};
+DropboxFile.prototype.doSave=function(a,d,b,c,g,f){var l=this.stat.name;this.stat.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.stat.name=l;this.saveFile(a,d,b,c,g,f)}),c,g,f])};
DropboxFile.prototype.saveFile=function(a,d,b,c){this.isEditable()?this.savingFile?null!=c&&c({code:App.ERROR_BUSY}):(d=mxUtils.bind(this,function(d){if(d)try{this.savingFileTime=new Date;this.setShadowModified(!1);this.savingFile=!0;var f=mxUtils.bind(this,function(d){var e=this.stat.path_display.lastIndexOf("/"),e=1<e?this.stat.path_display.substring(1,e+1):null;this.ui.dropbox.saveFile(a,d,mxUtils.bind(this,function(a){this.setModified(this.getShadowModified());this.savingFile=!1;this.stat=a;this.contentChanged();
-null!=b&&b()}),mxUtils.bind(this,function(a){this.savingFile=!1;null!=c&&c(a)}),e)});if(this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle())){var g=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){f(this.ui.base64ToBlob(a,"image/png"))}),c,this.ui.getCurrentFile()!=this?this.getData():null,g.scale,g.border)}else f(this.getData())}catch(n){if(this.savingFile=!1,null!=c)c(n);else throw n;}else null!=c&&c()}),this.getTitle()==a?d(!0):this.ui.dropbox.checkExists(a,
+null!=b&&b()}),mxUtils.bind(this,function(a){this.savingFile=!1;null!=c&&c(a)}),e)});if(this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle())){var g=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){f(this.ui.base64ToBlob(a,"image/png"))}),c,this.ui.getCurrentFile()!=this?this.getData():null,g.scale,g.border)}else f(this.getData())}catch(m){if(this.savingFile=!1,null!=c)c(m);else throw m;}else null!=c&&c()}),this.getTitle()==a?d(!0):this.ui.dropbox.checkExists(a,
d)):null!=b&&b()};DropboxFile.prototype.rename=function(a,d,b){this.ui.dropbox.renameFile(this,a,mxUtils.bind(this,function(c){this.hasSameExtension(a,this.getTitle())?(this.stat=c,this.descriptorChanged(),null!=d&&d()):(this.stat=c,this.descriptorChanged(),this.save(!0,d,b))}),b)};DropboxLibrary=function(a,d,b){DropboxFile.call(this,a,d,b)};mxUtils.extend(DropboxLibrary,DropboxFile);DropboxLibrary.prototype.isAutosave=function(){return!0};DropboxLibrary.prototype.doSave=function(a,d,b){this.saveFile(a,!1,d,b)};DropboxLibrary.prototype.open=function(){};DropboxClient=function(a){DrawioClient.call(this,a,"dbauth");this.client=new Dropbox({clientId:App.DROPBOX_APPKEY});this.client.setAccessToken(this.token)};mxUtils.extend(DropboxClient,DrawioClient);DropboxClient.prototype.appPath="/drawio/";DropboxClient.prototype.extension=".drawio";DropboxClient.prototype.writingFile=!1;DropboxClient.prototype.maxRetries=4;
DropboxClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null;this.client.authTokenRevoke().then(mxUtils.bind(this,function(){this.client.setAccessToken(null)}))};
DropboxClient.prototype.updateUser=function(a,d,b){var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d({code:App.ERROR_TIMEOUT})}),this.ui.timeout),f=this.client.usersGetCurrentAccount();f.then(mxUtils.bind(this,function(b){window.clearTimeout(g);c&&(this.setUser(new DrawioUser(b.account_id,b.email,b.name.display_name)),a())}));f["catch"](mxUtils.bind(this,function(f){window.clearTimeout(g);c&&(null==f||401!==f.status||b?d({message:mxResources.get("accessDenied")}):(this.setUser(null),
this.client.setAccessToken(null),this.authenticate(mxUtils.bind(this,function(){this.updateUser(a,d,!0)}),d)))}))};
-DropboxClient.prototype.authenticate=function(a,d){if(null==window.onDropboxCallback){var b=mxUtils.bind(this,function(){var c=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,f){null!=window.open(this.client.getAuthenticationUrl("https://"+window.location.host+"/dropbox.html"),"dbauth")?window.onDropboxCallback=mxUtils.bind(this,function(m,n){if(c){window.onDropboxCallback=null;c=!1;try{null==m?d({message:mxResources.get("accessDenied"),retry:b}):(null!=f&&f(),this.client.setAccessToken(m),
-this.setUser(null),g&&this.setPersistentToken(m),a())}catch(e){d(e)}finally{null!=n&&n.close()}}else null!=n&&n.close()}):d({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){c&&(window.onDropboxCallback=null,c=!1,d({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else d({code:App.ERROR_BUSY})};
-DropboxClient.prototype.executePromise=function(a,d,b){var c=mxUtils.bind(this,function(f){var m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout);a.then(mxUtils.bind(this,function(a){window.clearTimeout(n);m&&null!=d&&d(a)}));a["catch"](mxUtils.bind(this,function(a){window.clearTimeout(n);m&&(null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.setUser(null),this.client.setAccessToken(null),
+DropboxClient.prototype.authenticate=function(a,d){if(null==window.onDropboxCallback){var b=mxUtils.bind(this,function(){var c=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,f){null!=window.open(this.client.getAuthenticationUrl("https://"+window.location.host+"/dropbox.html"),"dbauth")?window.onDropboxCallback=mxUtils.bind(this,function(l,m){if(c){window.onDropboxCallback=null;c=!1;try{null==l?d({message:mxResources.get("accessDenied"),retry:b}):(null!=f&&f(),this.client.setAccessToken(l),
+this.setUser(null),g&&this.setPersistentToken(l),a())}catch(e){d(e)}finally{null!=m&&m.close()}}else null!=m&&m.close()}):d({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){c&&(window.onDropboxCallback=null,c=!1,d({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else d({code:App.ERROR_BUSY})};
+DropboxClient.prototype.executePromise=function(a,d,b){var c=mxUtils.bind(this,function(f){var l=!0,m=window.setTimeout(mxUtils.bind(this,function(){l=!1;b({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout);a.then(mxUtils.bind(this,function(a){window.clearTimeout(m);l&&null!=d&&d(a)}));a["catch"](mxUtils.bind(this,function(a){window.clearTimeout(m);l&&(null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.setUser(null),this.client.setAccessToken(null),
f?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)},b)})}):this.authenticate(function(){c(!0)},b)))}))}),g=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){g(!0)},b,a):c(a)});null===this.client.getAccessToken()?this.authenticate(function(){g(!0)},b):g(!1)};DropboxClient.prototype.getLibrary=function(a,d,b){this.getFile(a,d,b,!0)};
DropboxClient.prototype.getFile=function(a,d,b,c){c=null!=c?c:!1;var g=/\.png$/i.test(a);if(/^https:\/\//i.test(a)||/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&g){var f=mxUtils.bind(this,function(){var c=a.split("/");this.ui.convertFile(a,0<c.length?c[c.length-1]:a,null,this.extension,d,b)});null!=this.token?f():this.authenticate(f,b)}else f={path:"/"+a},null!=urlParams.rev&&(f.rev=urlParams.rev),this.readFile(f,mxUtils.bind(this,function(b,f){var e=
null;if(0<(g?b.lastIndexOf(","):-1)){var k=this.ui.extractGraphModelFromPng(b);null!=k&&0<k.length?b=k:e=new LocalFile(this,b,a,!0)}d(null!=e?e:c?new DropboxLibrary(this.ui,b,f):new DropboxFile(this.ui,b,f))}),b,g)};
-DropboxClient.prototype.readFile=function(a,d,b,c){var g=mxUtils.bind(this,function(m){var n=!0,e=window.setTimeout(mxUtils.bind(this,function(){n=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),k=this.client.filesGetMetadata({path:"/"+a.path.substring(1),include_deleted:!1});k.then(mxUtils.bind(this,function(a){}));k["catch"](function(a){window.clearTimeout(e);n&&null!=a&&409==a.status&&(n=!1,b({message:mxResources.get("fileNotFound")}))});k=this.client.filesDownload(a);k.then(mxUtils.bind(this,
-function(a){window.clearTimeout(e);if(n){n=!1;try{var f=new FileReader;f.onload=mxUtils.bind(this,function(b){d(f.result,a)});c?f.readAsDataURL(a.fileBlob):f.readAsText(a.fileBlob)}catch(u){b(u)}}}));k["catch"](mxUtils.bind(this,function(a){window.clearTimeout(e);n&&(n=!1,null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.client.setAccessToken(null),this.setUser(null),m?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){f(!0)},
+DropboxClient.prototype.readFile=function(a,d,b,c){var g=mxUtils.bind(this,function(l){var m=!0,e=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),k=this.client.filesGetMetadata({path:"/"+a.path.substring(1),include_deleted:!1});k.then(mxUtils.bind(this,function(a){}));k["catch"](function(a){window.clearTimeout(e);m&&null!=a&&409==a.status&&(m=!1,b({message:mxResources.get("fileNotFound")}))});k=this.client.filesDownload(a);k.then(mxUtils.bind(this,
+function(a){window.clearTimeout(e);if(m){m=!1;try{var f=new FileReader;f.onload=mxUtils.bind(this,function(b){d(f.result,a)});c?f.readAsDataURL(a.fileBlob):f.readAsText(a.fileBlob)}catch(u){b(u)}}}));k["catch"](mxUtils.bind(this,function(a){window.clearTimeout(e);m&&(m=!1,null==a||500!=a.status&&400!=a.status&&401!=a.status?b({message:mxResources.get("error")+" "+a.status}):(this.client.setAccessToken(null),this.setUser(null),l?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){f(!0)},
b)})}):this.authenticate(function(){g(!0)},b)))}))}),f=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){f(!0)},b,a):g(a)});null===this.client.getAccessToken()?this.authenticate(function(){f(!0)},b):f(!1)};
DropboxClient.prototype.checkExists=function(a,d,b){var c=this.client.filesGetMetadata({path:"/"+a.toLowerCase(),include_deleted:!1});this.executePromise(c,mxUtils.bind(this,function(c){b?d(!1,!0,c):this.ui.confirm(mxResources.get("replaceIt",[a]),function(){d(!0,!0,c)},function(){d(!1,!0,c)})}),function(a){d(!0,!1)})};
DropboxClient.prototype.renameFile=function(a,d,b,c){if(/[\\\/:\?\*"\|]/.test(d))c({message:mxResources.get("dropboxCharsNotAllowed")});else{if(null!=a&&null!=d){var g=a.stat.path_display.substring(1),f=g.lastIndexOf("/");0<f&&(d=g.substring(0,f+1)+d)}null!=a&&null!=d&&a.stat.path_lower.substring(1)!==d.toLowerCase()?this.checkExists(d,mxUtils.bind(this,function(f,g,e){f?(f=mxUtils.bind(this,function(e){e=this.client.filesMove({from_path:a.stat.path_display,to_path:"/"+d,autorename:!1});this.executePromise(e,
b,c)}),g&&e.path_lower.substring(1)!==d.toLowerCase()?(g=this.client.filesDelete({path:"/"+d.toLowerCase()}),this.executePromise(g,f,c)):f()):c()})):c({message:mxResources.get("invalidName")})}};DropboxClient.prototype.insertLibrary=function(a,d,b,c){this.insertFile(a,d,b,c,!0)};
DropboxClient.prototype.insertFile=function(a,d,b,c,g){g=null!=g?g:!1;this.checkExists(a,mxUtils.bind(this,function(f){f?this.saveFile(a,d,mxUtils.bind(this,function(a){g?b(new DropboxLibrary(this.ui,d,a)):b(new DropboxFile(this.ui,d,a))}),c):c()}))};
DropboxClient.prototype.saveFile=function(a,d,b,c,g){/[\\\/:\?\*"\|]/.test(a)?c({message:mxResources.get("dropboxCharsNotAllowed")}):15E7<=d.length?c({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(d.length)+" / 150 MB)"}):(a=this.client.filesUpload({path:"/"+(null!=g?g:"")+a,mode:{".tag":"overwrite"},mute:!0,contents:new Blob([d],{type:"text/plain"})}),this.executePromise(a,b,c))};
-DropboxClient.prototype.pickLibrary=function(a){Dropbox.choose({linkType:"direct",cancel:mxUtils.bind(this,function(){}),success:mxUtils.bind(this,function(d){if(this.ui.spinner.spin(document.body,mxResources.get("loading"))){var b=mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError(a)}),c=d[0].link.indexOf(this.appPath);if(0<c){var g=decodeURIComponent(d[0].link.substring(c+this.appPath.length-1));this.readFile({path:g},mxUtils.bind(this,function(c,m){if(null!=m&&m.id==d[0].id)try{this.ui.spinner.stop(),
-a(g.substring(1),new DropboxLibrary(this.ui,c,m))}catch(n){this.ui.handleError(n)}else this.createLibrary(d[0],a,b)}),b)}else this.createLibrary(d[0],a,b)}})})};
+DropboxClient.prototype.pickLibrary=function(a){Dropbox.choose({linkType:"direct",cancel:mxUtils.bind(this,function(){}),success:mxUtils.bind(this,function(d){if(this.ui.spinner.spin(document.body,mxResources.get("loading"))){var b=mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError(a)}),c=d[0].link.indexOf(this.appPath);if(0<c){var g=decodeURIComponent(d[0].link.substring(c+this.appPath.length-1));this.readFile({path:g},mxUtils.bind(this,function(c,l){if(null!=l&&l.id==d[0].id)try{this.ui.spinner.stop(),
+a(g.substring(1),new DropboxLibrary(this.ui,c,l))}catch(m){this.ui.handleError(m)}else this.createLibrary(d[0],a,b)}),b)}else this.createLibrary(d[0],a,b)}})})};
DropboxClient.prototype.createLibrary=function(a,d,b){this.ui.confirm(mxResources.get("note")+": "+mxResources.get("fileWillBeSavedInAppFolder",[a.name]),mxUtils.bind(this,function(){this.ui.editor.loadUrl(a.link,mxUtils.bind(this,function(c){this.insertFile(a.name,c,mxUtils.bind(this,function(a){try{this.ui.spinner.stop(),d(a.getHash().substring(1),a)}catch(f){b(f)}}),b,!0)}),b)}),mxUtils.bind(this,function(){this.ui.spinner.stop()}))};
DropboxClient.prototype.pickFile=function(a,d){null!=Dropbox.choose?(a=null!=a?a:mxUtils.bind(this,function(a,c){this.ui.loadFile(null!=a?"D"+encodeURIComponent(a):c.getHash(),null,c)}),Dropbox.choose({linkType:"direct",cancel:mxUtils.bind(this,function(){}),success:mxUtils.bind(this,function(b){if(this.ui.spinner.spin(document.body,mxResources.get("loading")))if(d)this.ui.spinner.stop(),a(b[0].link);else{var c=mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError(a)}),g=mxUtils.bind(this,
-function(b,c){this.ui.spinner.stop();a(b,c)}),f=/\.png$/i.test(b[0].name);if(/\.vsdx$/i.test(b[0].name)||/\.gliffy$/i.test(b[0].name)||!this.ui.useCanvasForExport&&f)g(b[0].link);else{var m=b[0].link.indexOf(this.appPath);if(0<m){var n=decodeURIComponent(b[0].link.substring(m+this.appPath.length-1));this.readFile({path:n},mxUtils.bind(this,function(e,d){if(null!=d&&d.id==b[0].id){var k=f?e.lastIndexOf(","):-1;this.ui.spinner.stop();var m=null;0<k&&(k=this.ui.extractGraphModelFromPng(e),null!=k&&0<
-k.length?e=k:m=new LocalFile(this,e,n,!0));a(n.substring(1),null!=m?m:new DropboxFile(this.ui,e,d))}else this.createFile(b[0],g,c)}),c,f)}else this.createFile(b[0],g,c)}}})})):this.ui.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})};
+function(b,c){this.ui.spinner.stop();a(b,c)}),f=/\.png$/i.test(b[0].name);if(/\.vsdx$/i.test(b[0].name)||/\.gliffy$/i.test(b[0].name)||!this.ui.useCanvasForExport&&f)g(b[0].link);else{var l=b[0].link.indexOf(this.appPath);if(0<l){var m=decodeURIComponent(b[0].link.substring(l+this.appPath.length-1));this.readFile({path:m},mxUtils.bind(this,function(e,d){if(null!=d&&d.id==b[0].id){var k=f?e.lastIndexOf(","):-1;this.ui.spinner.stop();var l=null;0<k&&(k=this.ui.extractGraphModelFromPng(e),null!=k&&0<
+k.length?e=k:l=new LocalFile(this,e,m,!0));a(m.substring(1),null!=l?l:new DropboxFile(this.ui,e,d))}else this.createFile(b[0],g,c)}),c,f)}else this.createFile(b[0],g,c)}}})})):this.ui.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})};
DropboxClient.prototype.createFile=function(a,d,b){var c=/(\.png)$/i.test(a.name);this.ui.editor.loadUrl(a.link,mxUtils.bind(this,function(g){null!=g&&0<g.length?this.ui.confirm(mxResources.get("note")+": "+mxResources.get("fileWillBeSavedInAppFolder",[a.name]),mxUtils.bind(this,function(){var f=c?g.lastIndexOf(","):-1;0<f&&(f=this.ui.extractGraphModelFromPng(g.substring(f+1)),null!=f&&0<f.length&&(g=f));this.insertFile(a.name,g,mxUtils.bind(this,function(b){d(a.name,b)}),b)}),mxUtils.bind(this,function(){this.ui.spinner.stop()})):
(this.ui.spinner.stop(),b({message:mxResources.get("errorLoadingFile")}))}),b,c)};OneDriveFile=function(a,d,b){DrawioFile.call(this,a,d);this.meta=b};mxUtils.extend(OneDriveFile,DrawioFile);
OneDriveFile.prototype.share=function(){var a=this.meta.webUrl,a=a.substring(0,a.lastIndexOf("/"));if(null!=this.meta.parentReference)try{if("personal"==this.meta.parentReference.driveType)a="https://onedrive.live.com/?cid="+encodeURIComponent(this.meta.parentReference.driveId)+"&id="+encodeURIComponent(this.meta.id);else if("documentLibrary"==this.meta.parentReference.driveType)var d=this.meta.parentReference.path,d=d.substring(d.indexOf("/root:")+6),b=this.meta.webUrl,a=b.substring(0,b.length-d.length-
@@ -10714,10 +10714,10 @@ OneDriveFile.prototype.getMode=function(){return App.MODE_ONEDRIVE};OneDriveFile
OneDriveFile.prototype.getCurrentUser=function(){return null!=this.ui.oneDrive?this.ui.oneDrive.user:null};OneDriveFile.prototype.loadDescriptor=function(a,d){this.ui.oneDrive.executeRequest(this.ui.oneDrive.getItemURL(this.getId()),mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?a(JSON.parse(b.getText())):null!=d&&d()}),d)};OneDriveFile.prototype.getLatestVersion=function(a,d){this.ui.oneDrive.getFile(this.getId(),a,d)};OneDriveFile.prototype.getDescriptor=function(){return this.meta};
OneDriveFile.prototype.setDescriptor=function(a){this.meta=a};OneDriveFile.prototype.getDescriptorEtag=function(a){return a.eTag};OneDriveFile.prototype.setDescriptorEtag=function(a,d){a.eTag=d};OneDriveFile.prototype.loadPatchDescriptor=function(a,d){var b=this.ui.oneDrive.getItemURL(this.getId());this.ui.oneDrive.executeRequest(b+"?select=etag,file",mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?a(JSON.parse(b.getText())):d(this.ui.oneDrive.parseRequestText(b))}),d)};
OneDriveFile.prototype.getChannelKey=function(){return"undefined"!==typeof CryptoJS?CryptoJS.MD5(this.meta.createdDateTime+(null!=this.meta.createdBy&&null!=this.meta.createdBy.user?this.meta.createdBy.user.id:"")).toString():null};OneDriveFile.prototype.getLastModifiedDate=function(){return new Date(this.meta.lastModifiedDateTime)};OneDriveFile.prototype.save=function(a,d,b,c,g){this.doSave(this.getTitle(),a,d,b,c,g)};OneDriveFile.prototype.saveAs=function(a,d,b){this.doSave(a,!1,d,b)};
-OneDriveFile.prototype.doSave=function(a,d,b,c,g,f){var m=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=m;this.saveFile(a,d,b,c,g,f)}),c,g,f])};
-OneDriveFile.prototype.saveFile=function(a,d,b,c,g,f){if(!this.isEditable())null!=b&&b();else if(!this.savingFile)if(this.getTitle()==a){var m=mxUtils.bind(this,function(){try{this.savingFileTime=new Date;this.setShadowModified(!1);this.savingFile=!0;var a=f||this.constructor!=OneDriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:this.getCurrentEtag(),e=this.meta;this.ui.oneDrive.saveFile(this,mxUtils.bind(this,function(a,d){this.setModified(this.getShadowModified());this.savingFile=
-!1;this.meta=a;this.fileSaved(d,e,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b()}),c)}),mxUtils.bind(this,function(a,b){try{this.savingFile=!1,this.isConflict(b)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();m()}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}))):null!=c&&c()):null!=c&&c(a)}catch(p){if(this.savingFile=
-!1,null!=c)c(p);else throw p;}}),a)}catch(k){if(this.savingFile=!1,null!=c)c(k);else throw k;}});m()}else this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.ui.oneDrive.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.setModified(this.getShadowModified());this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}))};
+OneDriveFile.prototype.doSave=function(a,d,b,c,g,f){var l=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=l;this.saveFile(a,d,b,c,g,f)}),c,g,f])};
+OneDriveFile.prototype.saveFile=function(a,d,b,c,g,f){if(!this.isEditable())null!=b&&b();else if(!this.savingFile)if(this.getTitle()==a){var l=mxUtils.bind(this,function(){try{this.savingFileTime=new Date;this.setShadowModified(!1);this.savingFile=!0;var a=f||this.constructor!=OneDriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:this.getCurrentEtag(),e=this.meta;this.ui.oneDrive.saveFile(this,mxUtils.bind(this,function(a,d){this.setModified(this.getShadowModified());this.savingFile=
+!1;this.meta=a;this.fileSaved(d,e,mxUtils.bind(this,function(){this.contentChanged();null!=b&&b()}),c)}),mxUtils.bind(this,function(a,b){try{this.savingFile=!1,this.isConflict(b)?(this.inConflictState=!0,null!=this.sync?(this.savingFile=!0,this.sync.fileConflict(null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){this.updateFileData();l()}),100+500*Math.random())}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}))):null!=c&&c()):null!=c&&c(a)}catch(p){if(this.savingFile=
+!1,null!=c)c(p);else throw p;}}),a)}catch(k){if(this.savingFile=!1,null!=c)c(k);else throw k;}});l()}else this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.ui.oneDrive.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.setModified(this.getShadowModified());this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}))};
OneDriveFile.prototype.rename=function(a,d,b){var c=this.getCurrentEtag();this.ui.oneDrive.renameFile(this,a,mxUtils.bind(this,function(g){this.hasSameExtension(a,this.getTitle())?(this.meta=g,this.descriptorChanged(),null!=this.sync&&this.sync.descriptorChanged(c),null!=d&&d(g)):(this.meta=g,null!=this.sync&&this.sync.descriptorChanged(c),this.save(!0,d,b))}),b)};
OneDriveFile.prototype.move=function(a,d,b){this.ui.oneDrive.moveFile(this.getId(),a,mxUtils.bind(this,function(a){this.meta=a;this.descriptorChanged();null!=d&&d(a)}),b)};OneDriveLibrary=function(a,d,b){OneDriveFile.call(this,a,d,b)};mxUtils.extend(OneDriveLibrary,OneDriveFile);OneDriveLibrary.prototype.isAutosave=function(){return!0};OneDriveLibrary.prototype.save=function(a,d,b){this.ui.oneDrive.saveFile(this,mxUtils.bind(this,function(a){this.desc=a;null!=d&&d(a)}),b)};OneDriveLibrary.prototype.open=function(){};(function(){var a=null;window.OneDriveClient=function(a,b,c,g){null==b&&null!=window.urlParams&&"1"==window.urlParams.extAuth&&(b=!0);null==c&&(null!=window.urlParams&&"1"==window.urlParams.inlinePicker||mxClient.IS_ANDROID||mxClient.IS_IOS)&&(c=!0);null==g&&null!=window.urlParams&&"1"==window.urlParams.noLogoutOD&&(g=!0);DrawioClient.call(this,a,b?"oneDriveExtAuthInfo":"oneDriveAuthInfo");this.isExtAuth=b;this.inlinePicker=c;this.noLogout=g;a=JSON.parse(this.token);null!=a&&(this.endpointHint=null!=
a.endpointHint?a.endpointHint.replace("/Documents","/_layouts/15/onedrive.aspx"):a.endpointHint)};mxUtils.extend(OneDriveClient,DrawioClient);OneDriveClient.prototype.clientId=window.DRAWIO_MSGRAPH_CLIENT_ID||("test.draw.io"==window.location.hostname?"2e598409-107f-4b59-89ca-d7723c8e00a4":"45c10911-200f-4e27-a666-9e9fca147395");OneDriveClient.prototype.clientId="app.diagrams.net"==window.location.hostname?"b5ff67d6-3155-4fca-965a-59a3655c4476":OneDriveClient.prototype.clientId;OneDriveClient.prototype.clientId=
@@ -10726,29 +10726,29 @@ OneDriveClient.prototype.defEndpointHint;OneDriveClient.prototype.extension=".dr
return!0};OneDriveClient.prototype.get=function(d,b,c){d=new mxXmlRequest(d,null,"GET");d.setRequestHeaders=mxUtils.bind(this,function(b,c){b.setRequestHeader("Authorization","Bearer "+a)});d.send(b,c);return d};OneDriveClient.prototype.updateUser=function(a,b,c){var d=!0,f=window.setTimeout(mxUtils.bind(this,function(){d=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.get(this.baseUrl+"/me",mxUtils.bind(this,function(g){window.clearTimeout(f);d&&(200>g.getStatus()||300<=g.getStatus()?c?b({message:mxResources.get("accessDenied")}):
(this.logout(),this.authenticate(mxUtils.bind(this,function(){this.updateUser(a,b,!0)}),b)):(g=JSON.parse(g.getText()),this.setUser(new DrawioUser(g.id,null,g.displayName)),a()))}),mxUtils.bind(this,function(a){window.clearTimeout(f);d&&b(a)}))};OneDriveClient.prototype.resetTokenRefresh=function(a){null!=this.tokenRefreshThread&&(window.clearTimeout(this.tokenRefreshThread),this.tokenRefreshThread=null);0<a&&(this.tokenRefreshInterval=1E3*a,this.tokenRefreshThread=window.setTimeout(mxUtils.bind(this,
function(){this.authenticate(this.emptyFn,this.emptyFn,!0)}),900*a))};OneDriveClient.prototype.authenticate=function(a,b,c){if(this.isExtAuth)window.parent.oneDriveAuth(mxUtils.bind(this,function(c){this.updateAuthInfo(c,!0,null==this.endpointHint,a,b)}),b,null!=window.urlParams&&"1"==urlParams.odAuthCancellable);else(new mxXmlRequest(this.redirectUri+"?getState=1",null,"GET")).send(mxUtils.bind(this,function(d){200<=d.getStatus()&&299>=d.getStatus()?this.authenticateStep2(d.getText(),a,b,c):null!=
-b&&b(d)}),b)};OneDriveClient.prototype.updateAuthInfo=function(d,b,c,g,f){c&&this.setUser(null);a=d.access_token;delete d.access_token;d.expiresOn=Date.now()+1E3*d.expires_in;this.tokenExpiresOn=d.expiresOn;d.remember=b;this.setPersistentToken(JSON.stringify(d),!b);this.resetTokenRefresh(d.expires_in);c?this.getAccountTypeAndEndpoint(mxUtils.bind(this,function(){g()}),f):g()};OneDriveClient.prototype.authenticateStep2=function(d,b,c,g){if(null==window.onOneDriveCallback){var f=mxUtils.bind(this,function(){var m=
-!0,n=JSON.parse(this.getPersistentToken(!0));null!=n?(new mxXmlRequest(this.redirectUri+"?state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname+"&token="+d),null,"GET")).send(mxUtils.bind(this,function(e){200<=e.getStatus()&&299>=e.getStatus()?this.updateAuthInfo(JSON.parse(e.getText()),n.remember,!1,b,c):(this.clearPersistentToken(),this.setUser(null),a=null,401!=e.getStatus()||g?c({message:mxResources.get("accessDenied"),retry:f}):f())}),c):this.ui.showAuthDialog(this,
+b&&b(d)}),b)};OneDriveClient.prototype.updateAuthInfo=function(d,b,c,g,f){c&&this.setUser(null);a=d.access_token;delete d.access_token;d.expiresOn=Date.now()+1E3*d.expires_in;this.tokenExpiresOn=d.expiresOn;d.remember=b;this.setPersistentToken(JSON.stringify(d),!b);this.resetTokenRefresh(d.expires_in);c?this.getAccountTypeAndEndpoint(mxUtils.bind(this,function(){g()}),f):g()};OneDriveClient.prototype.authenticateStep2=function(d,b,c,g){if(null==window.onOneDriveCallback){var f=mxUtils.bind(this,function(){var l=
+!0,m=JSON.parse(this.getPersistentToken(!0));null!=m?(new mxXmlRequest(this.redirectUri+"?state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname+"&token="+d),null,"GET")).send(mxUtils.bind(this,function(e){200<=e.getStatus()&&299>=e.getStatus()?this.updateAuthInfo(JSON.parse(e.getText()),m.remember,!1,b,c):(this.clearPersistentToken(),this.setUser(null),a=null,401!=e.getStatus()||g?c({message:mxResources.get("accessDenied"),retry:f}):f())}),c):this.ui.showAuthDialog(this,
!0,mxUtils.bind(this,function(a,g){var e="https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id="+this.clientId+"&response_type=code&redirect_uri="+encodeURIComponent(this.redirectUri)+"&scope="+encodeURIComponent(this.scopes+(a?" offline_access":""))+"&state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname+"&token="+d),e=window.open(e,"odauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+
-Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join());null!=e&&(window.onOneDriveCallback=mxUtils.bind(this,function(e,d){if(m){window.onOneDriveCallback=null;m=!1;try{null==e?c({message:mxResources.get("accessDenied"),retry:f}):(null!=g&&g(),this.updateAuthInfo(e,a,!0,b,c))}catch(t){c(t)}finally{null!=d&&d.close()}}else null!=d&&d.close()}),e.focus())}),mxUtils.bind(this,function(){m&&(window.onOneDriveCallback=null,m=!1,c({message:mxResources.get("accessDenied"),
+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join());null!=e&&(window.onOneDriveCallback=mxUtils.bind(this,function(e,d){if(l){window.onOneDriveCallback=null;l=!1;try{null==e?c({message:mxResources.get("accessDenied"),retry:f}):(null!=g&&g(),this.updateAuthInfo(e,a,!0,b,c))}catch(t){c(t)}finally{null!=d&&d.close()}}else null!=d&&d.close()}),e.focus())}),mxUtils.bind(this,function(){l&&(window.onOneDriveCallback=null,l=!1,c({message:mxResources.get("accessDenied"),
retry:f}))}))});f()}else c({code:App.ERROR_BUSY})};OneDriveClient.prototype.getAccountTypeAndEndpoint=function(a,b){this.get(this.baseUrl+"/me/drive/root",mxUtils.bind(this,function(c){try{if(200<=c.getStatus()&&299>=c.getStatus()){var d=JSON.parse(c.getText());0<d.webUrl.indexOf(".sharepoint.com")?this.endpointHint=d.webUrl.replace("/Documents","/_layouts/15/onedrive.aspx"):this.endpointHint=this.defEndpointHint;var f=JSON.parse(this.getPersistentToken(!0));null!=f&&(f.endpointHint=this.endpointHint,
-this.setPersistentToken(JSON.stringify(f),!f.remember));a();return}}catch(m){}b({message:mxResources.get("unknownError")+" (Code: "+c.getStatus()+")"})}),b)};OneDriveClient.prototype.executeRequest=function(d,b,c){var g=mxUtils.bind(this,function(a){var f=!0,n=window.setTimeout(mxUtils.bind(this,function(){f=!1;c({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout);this.get(d,mxUtils.bind(this,function(e){window.clearTimeout(n);f&&(200<=e.getStatus()&&299>=e.getStatus()||404==e.getStatus()?(null==
-this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),b(e)):a||401!==e.getStatus()&&400!==e.getStatus()?c(this.parseRequestText(e)):this.authenticate(function(){g(!0)},c,a))}),mxUtils.bind(this,function(a){window.clearTimeout(n);f&&c(a)}))});null==a||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){g(!0)},c):g(!1)};OneDriveClient.prototype.checkToken=function(d){null==a||null==this.tokenRefreshThread||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(d,this.emptyFn):d()};OneDriveClient.prototype.getItemRef=
+this.setPersistentToken(JSON.stringify(f),!f.remember));a();return}}catch(l){}b({message:mxResources.get("unknownError")+" (Code: "+c.getStatus()+")"})}),b)};OneDriveClient.prototype.executeRequest=function(d,b,c){var g=mxUtils.bind(this,function(a){var f=!0,m=window.setTimeout(mxUtils.bind(this,function(){f=!1;c({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout);this.get(d,mxUtils.bind(this,function(e){window.clearTimeout(m);f&&(200<=e.getStatus()&&299>=e.getStatus()||404==e.getStatus()?(null==
+this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),b(e)):a||401!==e.getStatus()&&400!==e.getStatus()?c(this.parseRequestText(e)):this.authenticate(function(){g(!0)},c,a))}),mxUtils.bind(this,function(a){window.clearTimeout(m);f&&c(a)}))});null==a||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){g(!0)},c):g(!1)};OneDriveClient.prototype.checkToken=function(d){null==a||null==this.tokenRefreshThread||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(d,this.emptyFn):d()};OneDriveClient.prototype.getItemRef=
function(a){var b=a.split("/");return 1<b.length?{driveId:b[0],id:b[1]}:{id:a}};OneDriveClient.prototype.getItemURL=function(a,b){var c=a.split("/");if(1<c.length){var d=c[1];return(b?"":this.baseUrl)+"/drives/"+c[0]+("root"==d?"/root":"/items/"+d)}return(b?"":this.baseUrl)+"/me/drive/items/"+a};OneDriveClient.prototype.getLibrary=function(a,b,c){this.getFile(a,b,c,!1,!0)};OneDriveClient.prototype.removeExtraHtmlContent=function(a){var b=a.lastIndexOf('<html><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"><meta name="Robots" ');
0<b&&(a=a.substring(0,b));return a};OneDriveClient.prototype.getFile=function(a,b,c,g,f){f=null!=f?f:!1;this.executeRequest(this.getItemURL(a),mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){var d=JSON.parse(a.getText()),e=/\.png$/i.test(d.name);if(/\.v(dx|sdx?)$/i.test(d.name)||/\.gliffy$/i.test(d.name)||/\.pdf$/i.test(d.name)||!this.ui.useCanvasForExport&&e)this.ui.convertFile(d["@microsoft.graph.downloadUrl"],d.name,null!=d.file?d.file.mimeType:null,this.extension,b,c);
-else{var g=!0,m=window.setTimeout(mxUtils.bind(this,function(){g=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.ui.editor.loadUrl(d["@microsoft.graph.downloadUrl"],mxUtils.bind(this,function(a){try{if(window.clearTimeout(m),g){/\.html$/i.test(d.name)&&(a=this.removeExtraHtmlContent(a));var k=null;if(0<(e?a.lastIndexOf(","):-1)){var l=this.ui.extractGraphModelFromPng(a);null!=l&&0<l.length?a=l:k=new LocalFile(this.ui,a,d.name,!0)}else if("data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)){var n=
+else{var g=!0,l=window.setTimeout(mxUtils.bind(this,function(){g=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.ui.editor.loadUrl(d["@microsoft.graph.downloadUrl"],mxUtils.bind(this,function(a){try{if(window.clearTimeout(l),g){/\.html$/i.test(d.name)&&(a=this.removeExtraHtmlContent(a));var k=null;if(0<(e?a.lastIndexOf(","):-1)){var m=this.ui.extractGraphModelFromPng(a);null!=m&&0<m.length?a=m:k=new LocalFile(this.ui,a,d.name,!0)}else if("data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)){var n=
a.substring(22);a=window.atob&&!mxClient.IS_SF?atob(n):Base64.decode(n)}Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(a,d["@microsoft.graph.downloadUrl"])?this.ui.parseFile(new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){try{4==a.readyState&&(200<=a.status&&299>=a.status?b(new LocalFile(this.ui,a.responseText,d.name+this.extension,!0)):null!=c&&c({message:mxResources.get("errorLoadingFile")}))}catch(y){if(null!=c)c(y);else throw y;}}),d.name):
-null!=k?b(k):f?b(new OneDriveLibrary(this.ui,a,d)):b(new OneDriveFile(this.ui,a,d))}}catch(v){if(null!=c)c(v);else throw v;}}),mxUtils.bind(this,function(a){window.clearTimeout(m);g&&c(this.parseRequestText(a))}),e||null!=d.file&&null!=d.file.mimeType&&("image/"==d.file.mimeType.substring(0,6)||"application/pdf"==d.file.mimeType))}}else c(this.parseRequestText(a))}),c)};OneDriveClient.prototype.renameFile=function(a,b,c,g){null!=a&&null!=b&&(this.isValidFilename(b)?this.checkExists(a.getParentId(),
+null!=k?b(k):f?b(new OneDriveLibrary(this.ui,a,d)):b(new OneDriveFile(this.ui,a,d))}}catch(v){if(null!=c)c(v);else throw v;}}),mxUtils.bind(this,function(a){window.clearTimeout(l);g&&c(this.parseRequestText(a))}),e||null!=d.file&&null!=d.file.mimeType&&("image/"==d.file.mimeType.substring(0,6)||"application/pdf"==d.file.mimeType))}}else c(this.parseRequestText(a))}),c)};OneDriveClient.prototype.renameFile=function(a,b,c,g){null!=a&&null!=b&&(this.isValidFilename(b)?this.checkExists(a.getParentId(),
b,!1,mxUtils.bind(this,function(d){d?this.writeFile(this.getItemURL(a.getId()),JSON.stringify({name:b}),"PATCH","application/json",c,g):g()})):g({message:this.invalidFilenameRegExs[0].test(b)?mxResources.get("oneDriveCharsNotAllowed"):mxResources.get("oneDriveInvalidDeviceName")}))};OneDriveClient.prototype.moveFile=function(a,b,c,g){b=this.getItemRef(b);var d=this.getItemRef(a);b.driveId!=d.driveId?g({message:mxResources.get("cannotMoveOneDrive",null,"Moving a file between accounts is not supported yet.")}):
-this.writeFile(this.getItemURL(a),JSON.stringify({parentReference:b}),"PATCH","application/json",c,g)};OneDriveClient.prototype.insertLibrary=function(a,b,c,g,f){this.insertFile(a,b,c,g,!0,f)};OneDriveClient.prototype.insertFile=function(a,b,c,g,f,m){this.isValidFilename(a)?(f=null!=f?f:!1,this.checkExists(m,a,!0,mxUtils.bind(this,function(d){if(d){d="/me/drive/root";null!=m&&(d=this.getItemURL(m,!0));var e=mxUtils.bind(this,function(a){f?c(new OneDriveLibrary(this.ui,b,a)):c(new OneDriveFile(this.ui,
+this.writeFile(this.getItemURL(a),JSON.stringify({parentReference:b}),"PATCH","application/json",c,g)};OneDriveClient.prototype.insertLibrary=function(a,b,c,g,f){this.insertFile(a,b,c,g,!0,f)};OneDriveClient.prototype.insertFile=function(a,b,c,g,f,l){this.isValidFilename(a)?(f=null!=f?f:!1,this.checkExists(l,a,!0,mxUtils.bind(this,function(d){if(d){d="/me/drive/root";null!=l&&(d=this.getItemURL(l,!0));var e=mxUtils.bind(this,function(a){f?c(new OneDriveLibrary(this.ui,b,a)):c(new OneDriveFile(this.ui,
b,a))});d=this.baseUrl+d+"/children/"+encodeURIComponent(a)+"/content";4E6<=b.length?this.writeFile(d,"","PUT",null,mxUtils.bind(this,function(a){this.writeLargeFile(this.getItemURL(a.id),b,e,g)}),g):this.writeFile(d,b,"PUT",null,e,g)}else g()}))):g({message:this.invalidFilenameRegExs[0].test(a)?mxResources.get("oneDriveCharsNotAllowed"):mxResources.get("oneDriveInvalidDeviceName")})};OneDriveClient.prototype.checkExists=function(a,b,c,g){var d="/me/drive/root";null!=a&&(d=this.getItemURL(a,!0));
-this.executeRequest(this.baseUrl+d+"/children/"+encodeURIComponent(b),mxUtils.bind(this,function(a){404==a.getStatus()?g(!0):c?(this.ui.spinner.stop(),this.ui.confirm(mxResources.get("replaceIt",[b]),function(){g(!0)},function(){g(!1)})):(this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){g(!1)}))}),function(a){g(!1)},!0)};OneDriveClient.prototype.saveFile=function(a,b,c,g){try{var d=a.getData(),m=mxUtils.bind(this,function(e){var f=
-mxUtils.bind(this,function(a){b(a,d)}),m=this.getItemURL(a.getId());4E6<=e.length?this.writeLargeFile(m,e,f,c,g):this.writeFile(m+"/content/",e,"PUT",null,f,c,g)});if(this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)){var n=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){m(this.ui.base64ToBlob(a,"image/png"))}),c,this.ui.getCurrentFile()!=a?d:null,n.scale,n.border)}else m(d)}catch(e){c(e)}};OneDriveClient.prototype.writeLargeFile=function(d,
-b,c,g,f){try{if(null!=b){var m=mxUtils.bind(this,function(a,d,f){try{f=f||0;var e=!0,k=null,k=window.setTimeout(mxUtils.bind(this,function(){e=!1;g({code:App.ERROR_TIMEOUT})}),this.ui.timeout),l=b.substr(d,4194304),n=new mxXmlRequest(a,l,"PUT");n.setRequestHeaders=mxUtils.bind(this,function(a,c){a.setRequestHeader("Content-Length",l.length);a.setRequestHeader("Content-Range","bytes "+d+"-"+(d+l.length-1)+"/"+b.length)});n.send(mxUtils.bind(this,function(n){window.clearTimeout(k);if(e){var p=n.getStatus();
-200<=p&&299>=p?(p=d+l.length,p==b.length?c(JSON.parse(n.getText())):m(a,p,f)):500<=p&&599>=p&&2>f?(f++,m(a,d,f)):g(this.parseRequestText(n),n)}}),mxUtils.bind(this,function(a){window.clearTimeout(k);e&&g(this.parseRequestText(a))}))}catch(v){g(v)}}),n=mxUtils.bind(this,function(b){try{var c=!0,e=null;try{e=window.setTimeout(mxUtils.bind(this,function(){c=!1;g({code:App.ERROR_TIMEOUT})}),this.ui.timeout)}catch(u){}var p=new mxXmlRequest(d+"/createUploadSession","{}","POST");p.setRequestHeaders=mxUtils.bind(this,
-function(b,c){b.setRequestHeader("Content-Type","application/json");b.setRequestHeader("Authorization","Bearer "+a);null!=f&&b.setRequestHeader("If-Match",f)});p.send(mxUtils.bind(this,function(a){window.clearTimeout(e);c&&(200<=a.getStatus()&&299>=a.getStatus()?(a=JSON.parse(a.getText()),m(a.uploadUrl,0)):b||401!==a.getStatus()?g(this.parseRequestText(a),a):this.authenticate(function(){n(!0)},g,b))}),mxUtils.bind(this,function(a){window.clearTimeout(e);c&&g(this.parseRequestText(a))}))}catch(u){g(u)}});
-null==a||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){n(!0)},g):n(!1)}else g({message:mxResources.get("unknownError")})}catch(e){g(e)}};OneDriveClient.prototype.writeFile=function(d,b,c,g,f,m,n){try{if(null!=d&&null!=b){var e=mxUtils.bind(this,function(k){try{var l=!0,p=null;try{p=window.setTimeout(mxUtils.bind(this,function(){l=!1;m({code:App.ERROR_TIMEOUT})}),this.ui.timeout)}catch(t){}var u=new mxXmlRequest(d,b,c);u.setRequestHeaders=mxUtils.bind(this,function(b,c){b.setRequestHeader("Content-Type",
-g||" ");b.setRequestHeader("Authorization","Bearer "+a);null!=n&&b.setRequestHeader("If-Match",n)});u.send(mxUtils.bind(this,function(a){window.clearTimeout(p);l&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),f(JSON.parse(a.getText()))):k||401!==a.getStatus()?m(this.parseRequestText(a),a):this.authenticate(function(){e(!0)},m,k))}),mxUtils.bind(this,function(a){window.clearTimeout(p);l&&m(this.parseRequestText(a))}))}catch(t){m(t)}});null==
-a||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){e(!0)},m):e(!1)}else m({message:mxResources.get("unknownError")})}catch(k){m(k)}};OneDriveClient.prototype.parseRequestText=function(a){var b={message:mxResources.get("unknownError")};try{b=JSON.parse(a.getText())}catch(c){}return b};OneDriveClient.prototype.pickLibrary=function(a){this.pickFile(function(b){a(b)})};OneDriveClient.prototype.createInlinePicker=function(a,b){return mxUtils.bind(this,function(){var c=null,d=document.createElement("div");
+this.executeRequest(this.baseUrl+d+"/children/"+encodeURIComponent(b),mxUtils.bind(this,function(a){404==a.getStatus()?g(!0):c?(this.ui.spinner.stop(),this.ui.confirm(mxResources.get("replaceIt",[b]),function(){g(!0)},function(){g(!1)})):(this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){g(!1)}))}),function(a){g(!1)},!0)};OneDriveClient.prototype.saveFile=function(a,b,c,g){try{var d=a.getData(),l=mxUtils.bind(this,function(e){var f=
+mxUtils.bind(this,function(a){b(a,d)}),l=this.getItemURL(a.getId());4E6<=e.length?this.writeLargeFile(l,e,f,c,g):this.writeFile(l+"/content/",e,"PUT",null,f,c,g)});if(this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)){var m=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){l(this.ui.base64ToBlob(a,"image/png"))}),c,this.ui.getCurrentFile()!=a?d:null,m.scale,m.border)}else l(d)}catch(e){c(e)}};OneDriveClient.prototype.writeLargeFile=function(d,
+b,c,g,f){try{if(null!=b){var l=mxUtils.bind(this,function(a,d,f){try{f=f||0;var e=!0,k=null,k=window.setTimeout(mxUtils.bind(this,function(){e=!1;g({code:App.ERROR_TIMEOUT})}),this.ui.timeout),m=b.substr(d,4194304),n=new mxXmlRequest(a,m,"PUT");n.setRequestHeaders=mxUtils.bind(this,function(a,c){a.setRequestHeader("Content-Length",m.length);a.setRequestHeader("Content-Range","bytes "+d+"-"+(d+m.length-1)+"/"+b.length)});n.send(mxUtils.bind(this,function(n){window.clearTimeout(k);if(e){var p=n.getStatus();
+200<=p&&299>=p?(p=d+m.length,p==b.length?c(JSON.parse(n.getText())):l(a,p,f)):500<=p&&599>=p&&2>f?(f++,l(a,d,f)):g(this.parseRequestText(n),n)}}),mxUtils.bind(this,function(a){window.clearTimeout(k);e&&g(this.parseRequestText(a))}))}catch(v){g(v)}}),m=mxUtils.bind(this,function(b){try{var c=!0,e=null;try{e=window.setTimeout(mxUtils.bind(this,function(){c=!1;g({code:App.ERROR_TIMEOUT})}),this.ui.timeout)}catch(u){}var p=new mxXmlRequest(d+"/createUploadSession","{}","POST");p.setRequestHeaders=mxUtils.bind(this,
+function(b,c){b.setRequestHeader("Content-Type","application/json");b.setRequestHeader("Authorization","Bearer "+a);null!=f&&b.setRequestHeader("If-Match",f)});p.send(mxUtils.bind(this,function(a){window.clearTimeout(e);c&&(200<=a.getStatus()&&299>=a.getStatus()?(a=JSON.parse(a.getText()),l(a.uploadUrl,0)):b||401!==a.getStatus()?g(this.parseRequestText(a),a):this.authenticate(function(){m(!0)},g,b))}),mxUtils.bind(this,function(a){window.clearTimeout(e);c&&g(this.parseRequestText(a))}))}catch(u){g(u)}});
+null==a||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){m(!0)},g):m(!1)}else g({message:mxResources.get("unknownError")})}catch(e){g(e)}};OneDriveClient.prototype.writeFile=function(d,b,c,g,f,l,m){try{if(null!=d&&null!=b){var e=mxUtils.bind(this,function(k){try{var n=!0,p=null;try{p=window.setTimeout(mxUtils.bind(this,function(){n=!1;l({code:App.ERROR_TIMEOUT})}),this.ui.timeout)}catch(t){}var u=new mxXmlRequest(d,b,c);u.setRequestHeaders=mxUtils.bind(this,function(b,c){b.setRequestHeader("Content-Type",
+g||" ");b.setRequestHeader("Authorization","Bearer "+a);null!=m&&b.setRequestHeader("If-Match",m)});u.send(mxUtils.bind(this,function(a){window.clearTimeout(p);n&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),f(JSON.parse(a.getText()))):k||401!==a.getStatus()?l(this.parseRequestText(a),a):this.authenticate(function(){e(!0)},l,k))}),mxUtils.bind(this,function(a){window.clearTimeout(p);n&&l(this.parseRequestText(a))}))}catch(t){l(t)}});null==
+a||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){e(!0)},l):e(!1)}else l({message:mxResources.get("unknownError")})}catch(k){l(k)}};OneDriveClient.prototype.parseRequestText=function(a){var b={message:mxResources.get("unknownError")};try{b=JSON.parse(a.getText())}catch(c){}return b};OneDriveClient.prototype.pickLibrary=function(a){this.pickFile(function(b){a(b)})};OneDriveClient.prototype.createInlinePicker=function(a,b){return mxUtils.bind(this,function(){var c=null,d=document.createElement("div");
d.style.width="550px";d.style.height="435px";d.style.position="relative";var f=new CustomDialog(this.ui,d,mxUtils.bind(this,function(){var d=c.getSelectedItem();if(null!=d){if(b&&"object"==typeof d.folder){a({value:[d]});return}if(!d.folder){a(OneDriveFile.prototype.getIdOf(d));return}}return mxResources.get("invalidSel",null,"Invalid selection")}),null,mxResources.get(b?"save":"open"),null,null,null,null,!0);this.ui.showDialog(f.container,550,485,!0,!0);c=new mxODPicker(d,null,mxUtils.bind(this,
function(a,b,c){this.executeRequest(this.baseUrl+a,function(a){b(JSON.parse(a.getText()))},c)}),mxUtils.bind(this,function(a,b,c,d){this.executeRequest(this.baseUrl+"/drives/"+b+"/items/"+a,function(a){c(JSON.parse(a.getText()))},d)}),null,null,function(c){b?a({value:[c]}):a(OneDriveFile.prototype.getIdOf(c))},mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)}),b)})};OneDriveClient.prototype.pickFolder=function(d,b){var c=mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),
a&&a.message?a.message:a)}),g=mxUtils.bind(this,function(b){var f=this.inlinePicker?this.createInlinePicker(d,!0):mxUtils.bind(this,function(){OneDrive.save({clientId:this.clientId,action:"query",openInNewWindow:!0,advanced:{endpointHint:mxClient.IS_IE11?null:this.endpointHint,redirectUri:this.pickerRedirectUri,queryParameters:"select=id,name,parentReference",accessToken:a,isConsumerAccount:!1},success:mxUtils.bind(this,function(b){d(b);mxClient.IS_IE11&&(a=b.accessToken)}),cancel:mxUtils.bind(this,
@@ -10760,109 +10760,109 @@ this.setUser(null);a=null}})();GitHubFile=function(a,d,b){DrawioFile.call(this,a
GitHubFile.prototype.getId=function(){return encodeURIComponent(this.meta.org)+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitHubFile.prototype.getHash=function(){return encodeURIComponent("H"+this.getId())};
GitHubFile.prototype.getPublicUrl=function(a){null!=this.meta.download_url?mxUtils.get(this.meta.download_url,mxUtils.bind(this,function(d){a(200<=d.getStatus()&&299>=d.getStatus()?this.meta.download_url:null)}),mxUtils.bind(this,function(){a(null)})):a(null)};GitHubFile.prototype.isConflict=function(a){return null!=a&&409==a.status};GitHubFile.prototype.getMode=function(){return App.MODE_GITHUB};GitHubFile.prototype.isAutosave=function(){return!1};GitHubFile.prototype.getTitle=function(){return this.meta.name};
GitHubFile.prototype.isRenamable=function(){return!1};GitHubFile.prototype.getLatestVersion=function(a,d){this.peer.getFile(this.getId(),a,d)};GitHubFile.prototype.isCompressedStorage=function(){return!1};GitHubFile.prototype.getDescriptor=function(){return this.meta};GitHubFile.prototype.setDescriptor=function(a){this.meta=a};GitHubFile.prototype.getDescriptorEtag=function(a){return a.sha};GitHubFile.prototype.setDescriptorEtag=function(a,d){a.sha=d};
-GitHubFile.prototype.save=function(a,d,b,c,g,f){this.doSave(this.getTitle(),d,b,c,g,f)};GitHubFile.prototype.saveAs=function(a,d,b){this.doSave(a,d,b)};GitHubFile.prototype.doSave=function(a,d,b,c,g,f){var m=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=m;this.saveFile(a,!1,d,b,c,g,f)}),b,c,g])};
-GitHubFile.prototype.saveFile=function(a,d,b,c,g,f,m){if(this.isEditable())if(this.savingFile)null!=c&&c({code:App.ERROR_BUSY});else{var n=mxUtils.bind(this,function(e){if(this.getTitle()==a)try{this.savingFileTime=new Date;this.setShadowModified(!1);this.savingFile=!0;var d=this.getCurrentEtag(),g=this.data;this.peer.saveFile(this,mxUtils.bind(this,function(a){this.setModified(this.getShadowModified());this.savingFile=!1;this.setDescriptorEtag(this.meta,a);this.fileSaved(g,d,mxUtils.bind(this,function(){this.contentChanged();
+GitHubFile.prototype.save=function(a,d,b,c,g,f){this.doSave(this.getTitle(),d,b,c,g,f)};GitHubFile.prototype.saveAs=function(a,d,b){this.doSave(a,d,b)};GitHubFile.prototype.doSave=function(a,d,b,c,g,f){var l=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=l;this.saveFile(a,!1,d,b,c,g,f)}),b,c,g])};
+GitHubFile.prototype.saveFile=function(a,d,b,c,g,f,l){if(this.isEditable())if(this.savingFile)null!=c&&c({code:App.ERROR_BUSY});else{var m=mxUtils.bind(this,function(e){if(this.getTitle()==a)try{this.savingFileTime=new Date;this.setShadowModified(!1);this.savingFile=!0;var d=this.getCurrentEtag(),g=this.data;this.peer.saveFile(this,mxUtils.bind(this,function(a){this.setModified(this.getShadowModified());this.savingFile=!1;this.setDescriptorEtag(this.meta,a);this.fileSaved(g,d,mxUtils.bind(this,function(){this.contentChanged();
null!=b&&b()}),c)}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isConflict(a)?(this.inConflictState=!0,null!=c&&c({commitMessage:e})):null!=c&&c(a)}),f,e)}catch(p){if(this.savingFile=!1,null!=c)c(p);else throw p;}else this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.ui.pickFolder(this.getMode(),mxUtils.bind(this,function(d){this.peer.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.setModified(this.getShadowModified());this.savingFile=!1;null!=
-b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}),!1,d,e)}))});null!=m?n(m):this.peer.showCommitDialog(this.meta.name,null==this.getDescriptorEtag(this.meta)||this.meta.isNew,mxUtils.bind(this,function(a){n(a)}),c)}else null!=b&&b()};GitHubLibrary=function(a,d,b){GitHubFile.call(this,a,d,b)};mxUtils.extend(GitHubLibrary,GitHubFile);GitHubLibrary.prototype.doSave=function(a,d,b){this.saveFile(a,!1,d,b)};GitHubLibrary.prototype.open=function(){};GitHubClient=function(a,d){DrawioClient.call(this,a,d||"ghauth")};mxUtils.extend(GitHubClient,DrawioClient);GitHubClient.prototype.clientId="test.draw.io"==window.location.hostname?"23bc97120b9035515661":"89c9e4624ca416554489";GitHubClient.prototype.scope="repo";GitHubClient.prototype.extension=".drawio";GitHubClient.prototype.baseUrl="https://api.github.com";GitHubClient.prototype.maxFileSize=1E6;GitHubClient.prototype.authToken="token";
-GitHubClient.prototype.updateUser=function(a,d,b){var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),f=new mxXmlRequest(this.baseUrl+"/user",null,"GET"),m=this.authToken+" "+this.token;f.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",m)};f.send(mxUtils.bind(this,function(){window.clearTimeout(g);c&&(401===f.getStatus()?b?d({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this,
+b&&b();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}),!1,d,e)}))});null!=l?m(l):this.peer.showCommitDialog(this.meta.name,null==this.getDescriptorEtag(this.meta)||this.meta.isNew,mxUtils.bind(this,function(a){m(a)}),c)}else null!=b&&b()};GitHubLibrary=function(a,d,b){GitHubFile.call(this,a,d,b)};mxUtils.extend(GitHubLibrary,GitHubFile);GitHubLibrary.prototype.doSave=function(a,d,b){this.saveFile(a,!1,d,b)};GitHubLibrary.prototype.open=function(){};GitHubClient=function(a,d){DrawioClient.call(this,a,d||"ghauth")};mxUtils.extend(GitHubClient,DrawioClient);GitHubClient.prototype.clientId="test.draw.io"==window.location.hostname?"23bc97120b9035515661":"89c9e4624ca416554489";GitHubClient.prototype.scope="repo";GitHubClient.prototype.extension=".drawio";GitHubClient.prototype.baseUrl="https://api.github.com";GitHubClient.prototype.maxFileSize=1E6;GitHubClient.prototype.authToken="token";
+GitHubClient.prototype.updateUser=function(a,d,b){var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),f=new mxXmlRequest(this.baseUrl+"/user",null,"GET"),l=this.authToken+" "+this.token;f.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",l)};f.send(mxUtils.bind(this,function(){window.clearTimeout(g);c&&(401===f.getStatus()?b?d({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this,
function(){this.updateUser(a,d,!0)}),d)):200>f.getStatus()||300<=f.getStatus()?d({message:mxResources.get("accessDenied")}):(this.setUser(this.createUser(JSON.parse(f.getText()))),a()))}),d)};GitHubClient.prototype.createUser=function(a){return new DrawioUser(a.id,a.email,a.name)};
-GitHubClient.prototype.authenticate=function(a,d){if(null==window.onGitHubCallback){var b=mxUtils.bind(this,function(){var c=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,f){null!=window.open("https://github.com/login/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope,"ghauth")?window.onGitHubCallback=mxUtils.bind(this,function(m,n){if(c)if(window.onGitHubCallback=null,c=!1,null==m)d({message:mxResources.get("accessDenied"),retry:b});else{var e=mxUtils.bind(this,function(){var b=
-!0,c=window.setTimeout(mxUtils.bind(this,function(){b=!1;d({code:App.ERROR_TIMEOUT,retry:e})}),this.ui.timeout);mxUtils.get("/github?client_id="+this.clientId+"&code="+m,mxUtils.bind(this,function(e){window.clearTimeout(c);if(b)try{if(200>e.getStatus()||300<=e.getStatus())d({message:mxResources.get("cannotLogin")});else{null!=f&&f();var k=e.getText();this.token=k.substring(k.indexOf("=")+1,k.indexOf("&"));this.setUser(null);g&&this.setPersistentToken(this.token);a()}}catch(t){d(t)}finally{null!=n&&
-n.close()}}))});e()}else null!=n&&n.close()}):d({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){c&&(window.onGitHubCallback=null,c=!1,d({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else d({code:App.ERROR_BUSY})};GitHubClient.prototype.getErrorMessage=function(a,d){try{var b=JSON.parse(a.getText());null!=b&&null!=b.message&&(d=b.message)}catch(c){}return d};
-GitHubClient.prototype.executeRequest=function(a,d,b,c){var g=mxUtils.bind(this,function(m){var n=!0,e=window.setTimeout(mxUtils.bind(this,function(){n=!1;b({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout),k=this.authToken+" "+this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",k)};a.send(mxUtils.bind(this,function(){window.clearTimeout(e);if(n)if(200<=a.getStatus()&&299>=a.getStatus()||c&&404==a.getStatus())d(a);else if(401===a.getStatus())m?b({code:a.getStatus(),
+GitHubClient.prototype.authenticate=function(a,d){if(null==window.onGitHubCallback){var b=mxUtils.bind(this,function(){var c=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,f){null!=window.open("https://github.com/login/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope,"ghauth")?window.onGitHubCallback=mxUtils.bind(this,function(l,m){if(c)if(window.onGitHubCallback=null,c=!1,null==l)d({message:mxResources.get("accessDenied"),retry:b});else{var e=mxUtils.bind(this,function(){var b=
+!0,c=window.setTimeout(mxUtils.bind(this,function(){b=!1;d({code:App.ERROR_TIMEOUT,retry:e})}),this.ui.timeout);mxUtils.get("/github?client_id="+this.clientId+"&code="+l,mxUtils.bind(this,function(e){window.clearTimeout(c);if(b)try{if(200>e.getStatus()||300<=e.getStatus())d({message:mxResources.get("cannotLogin")});else{null!=f&&f();var k=e.getText();this.token=k.substring(k.indexOf("=")+1,k.indexOf("&"));this.setUser(null);g&&this.setPersistentToken(this.token);a()}}catch(t){d(t)}finally{null!=m&&
+m.close()}}))});e()}else null!=m&&m.close()}):d({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){c&&(window.onGitHubCallback=null,c=!1,d({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else d({code:App.ERROR_BUSY})};GitHubClient.prototype.getErrorMessage=function(a,d){try{var b=JSON.parse(a.getText());null!=b&&null!=b.message&&(d=b.message)}catch(c){}return d};
+GitHubClient.prototype.executeRequest=function(a,d,b,c){var g=mxUtils.bind(this,function(l){var m=!0,e=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout),k=this.authToken+" "+this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",k)};a.send(mxUtils.bind(this,function(){window.clearTimeout(e);if(m)if(200<=a.getStatus()&&299>=a.getStatus()||c&&404==a.getStatus())d(a);else if(401===a.getStatus())l?b({code:a.getStatus(),
message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){f(!0)},b)})}):this.authenticate(function(){g(!0)},b);else if(403===a.getStatus()){var k=!1;try{var p=JSON.parse(a.getText());null!=p&&null!=p.errors&&0<p.errors.length&&(k="too_large"==p.errors[0].code)}catch(u){}b({message:mxResources.get(k?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?b({code:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("fileNotFound"))}):409===a.getStatus()?
-b({code:a.getStatus(),status:409}):b({code:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),mxUtils.bind(this,function(a){window.clearTimeout(e);n&&b(a)}))}),f=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){f(!0)},b,a):g(a)});null==this.token?this.authenticate(function(){f(!0)},b):f(!1)};GitHubClient.prototype.getLibrary=function(a,d,b){this.getFile(a,d,b,!0)};
-GitHubClient.prototype.getSha=function(a,d,b,c,g,f){var m="&t="+(new Date).getTime();a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+d+"/contents/"+b+"?ref="+c+m,null,"HEAD");this.executeRequest(a,mxUtils.bind(this,function(a){try{g(a.request.getResponseHeader("Etag").match(/"([^"]+)"/)[1])}catch(e){f(e)}}),f)};
-GitHubClient.prototype.getFile=function(a,d,b,c,g){c=null!=c?c:!1;var f=a.split("/"),m=f[0],n=f[1],e=f[2];a=f.slice(3,f.length).join("/");f=/\.png$/i.test(a);if(!g&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&f))if(null!=this.token){g=this.baseUrl+"/repos/"+m+"/"+n+"/contents/"+a+"?ref="+e;var k={Authorization:"token "+this.token},f=a.split("/");this.ui.convertFile(g,0<f.length?f[f.length-1]:a,null,this.extension,d,b,null,k)}else b({message:mxResources.get("accessDenied")});
-else f="&t="+(new Date).getTime(),a=new mxXmlRequest(this.baseUrl+"/repos/"+m+"/"+n+"/contents/"+a+"?ref="+e+f,null,"GET"),this.executeRequest(a,mxUtils.bind(this,function(a){try{d(this.createGitHubFile(m,n,e,JSON.parse(a.getText()),c))}catch(p){b(p)}}),b)};
+b({code:a.getStatus(),status:409}):b({code:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),mxUtils.bind(this,function(a){window.clearTimeout(e);m&&b(a)}))}),f=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){f(!0)},b,a):g(a)});null==this.token?this.authenticate(function(){f(!0)},b):f(!1)};GitHubClient.prototype.getLibrary=function(a,d,b){this.getFile(a,d,b,!0)};
+GitHubClient.prototype.getSha=function(a,d,b,c,g,f){var l="&t="+(new Date).getTime();a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+d+"/contents/"+b+"?ref="+c+l,null,"HEAD");this.executeRequest(a,mxUtils.bind(this,function(a){try{g(a.request.getResponseHeader("Etag").match(/"([^"]+)"/)[1])}catch(e){f(e)}}),f)};
+GitHubClient.prototype.getFile=function(a,d,b,c,g){c=null!=c?c:!1;var f=a.split("/"),l=f[0],m=f[1],e=f[2];a=f.slice(3,f.length).join("/");f=/\.png$/i.test(a);if(!g&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&f))if(null!=this.token){g=this.baseUrl+"/repos/"+l+"/"+m+"/contents/"+a+"?ref="+e;var k={Authorization:"token "+this.token},f=a.split("/");this.ui.convertFile(g,0<f.length?f[f.length-1]:a,null,this.extension,d,b,null,k)}else b({message:mxResources.get("accessDenied")});
+else f="&t="+(new Date).getTime(),a=new mxXmlRequest(this.baseUrl+"/repos/"+l+"/"+m+"/contents/"+a+"?ref="+e+f,null,"GET"),this.executeRequest(a,mxUtils.bind(this,function(a){try{d(this.createGitHubFile(l,m,e,JSON.parse(a.getText()),c))}catch(p){b(p)}}),b)};
GitHubClient.prototype.createGitHubFile=function(a,d,b,c,g){a={org:a,repo:d,ref:b,name:c.name,path:c.path,sha:c.sha,html_url:c.html_url,download_url:c.download_url};d=c.content;"base64"===c.encoding&&(/\.jpe?g$/i.test(c.name)?d="data:image/jpeg;base64,"+d:/\.gif$/i.test(c.name)?d="data:image/gif;base64,"+d:/\.png$/i.test(c.name)?(c=this.ui.extractGraphModelFromPng(d),d=null!=c&&0<c.length?c:"data:image/png;base64,"+d):d=Base64.decode(d));return g?new GitHubLibrary(this.ui,d,a):new GitHubFile(this.ui,
d,a)};GitHubClient.prototype.insertLibrary=function(a,d,b,c,g){this.insertFile(a,d,b,c,!0,g,!1)};
-GitHubClient.prototype.insertFile=function(a,d,b,c,g,f,m){g=null!=g?g:!1;f=f.split("/");var n=f[0],e=f[1],k=f[2],l=f.slice(3,f.length).join("/");0<l.length&&(l+="/");l+=a;this.checkExists(n+"/"+e+"/"+k+"/"+l,!0,mxUtils.bind(this,function(f,u){f?g?(m||(d=Base64.encode(d)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(n,e,k,l,a,d,u,mxUtils.bind(this,function(a){try{var d=JSON.parse(a.getText());b(this.createGitHubFile(n,e,k,d.content,g))}catch(y){c(y)}}),c)}),c)):b(new GitHubFile(this.ui,
-d,{org:n,repo:e,ref:k,name:a,path:l,sha:u,isNew:!0})):c()}))};GitHubClient.prototype.showCommitDialog=function(a,d,b,c){var g=this.ui.spinner.pause();a=new FilenameDialog(this.ui,mxResources.get(d?"addedFile":"updateFile",[a]),mxResources.get("ok"),mxUtils.bind(this,function(a){g();b(a)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){c()}),null,280);this.ui.showDialog(a.container,400,80,!0,!1);a.init()};
-GitHubClient.prototype.writeFile=function(a,d,b,c,g,f,m,n,e){f.length>=this.maxFileSize?e({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(f.length)+" / 1 MB)"}):(b={path:c,branch:decodeURIComponent(b),message:g,content:f},null!=m&&(b.sha=m),a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+d+"/contents/"+c,JSON.stringify(b),"PUT"),this.executeRequest(a,mxUtils.bind(this,function(a){n(a)}),mxUtils.bind(this,function(a){404==a.code&&(a.helpLink="https://github.com/settings/connections/applications/"+
+GitHubClient.prototype.insertFile=function(a,d,b,c,g,f,l){g=null!=g?g:!1;f=f.split("/");var m=f[0],e=f[1],k=f[2],n=f.slice(3,f.length).join("/");0<n.length&&(n+="/");n+=a;this.checkExists(m+"/"+e+"/"+k+"/"+n,!0,mxUtils.bind(this,function(f,u){f?g?(l||(d=Base64.encode(d)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(m,e,k,n,a,d,u,mxUtils.bind(this,function(a){try{var d=JSON.parse(a.getText());b(this.createGitHubFile(m,e,k,d.content,g))}catch(y){c(y)}}),c)}),c)):b(new GitHubFile(this.ui,
+d,{org:m,repo:e,ref:k,name:a,path:n,sha:u,isNew:!0})):c()}))};GitHubClient.prototype.showCommitDialog=function(a,d,b,c){var g=this.ui.spinner.pause();a=new FilenameDialog(this.ui,mxResources.get(d?"addedFile":"updateFile",[a]),mxResources.get("ok"),mxUtils.bind(this,function(a){g();b(a)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){c()}),null,280);this.ui.showDialog(a.container,400,80,!0,!1);a.init()};
+GitHubClient.prototype.writeFile=function(a,d,b,c,g,f,l,m,e){f.length>=this.maxFileSize?e({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(f.length)+" / 1 MB)"}):(b={path:c,branch:decodeURIComponent(b),message:g,content:f},null!=l&&(b.sha=l),a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+d+"/contents/"+c,JSON.stringify(b),"PUT"),this.executeRequest(a,mxUtils.bind(this,function(a){m(a)}),mxUtils.bind(this,function(a){404==a.code&&(a.helpLink="https://github.com/settings/connections/applications/"+
this.clientId,a.code=null);e(a)})))};
-GitHubClient.prototype.checkExists=function(a,d,b){var c=a.split("/"),g=c[0],f=c[1],m=c[2];a=c.slice(3,c.length).join("/");this.getSha(g,f,a,m,mxUtils.bind(this,function(c){if(d){var e=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[a]),function(){e();b(!0,c)},function(){e();b(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){b(!1)})}),mxUtils.bind(this,function(a){b(!0)}),null,!0)};
-GitHubClient.prototype.saveFile=function(a,d,b,c,g){var f=a.meta.org,m=a.meta.repo,n=a.meta.ref,e=a.meta.path,k=mxUtils.bind(this,function(c,k){this.writeFile(f,m,n,e,g,k,c,mxUtils.bind(this,function(b){delete a.meta.isNew;d(JSON.parse(b.getText()).content.sha)}),mxUtils.bind(this,function(a){b(a)}))}),l=mxUtils.bind(this,function(){if(this.ui.useCanvasForExport&&/(\.png)$/i.test(e)){var c=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){k(a.meta.sha,
-b)}),b,this.ui.getCurrentFile()!=a?a.getData():null,c.scale,c.border)}else k(a.meta.sha,Base64.encode(a.getData()))});c?this.getSha(f,m,e,n,mxUtils.bind(this,function(b){a.meta.sha=b;l()}),b):l()};GitHubClient.prototype.pickLibrary=function(a){this.pickFile(a)};GitHubClient.prototype.pickFolder=function(a){this.showGitHubDialog(!1,a)};GitHubClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("H"+encodeURIComponent(a))});this.showGitHubDialog(!0,a)};
-GitHubClient.prototype.showGitHubDialog=function(a,d){var b=null,c=null,g=null,f=null,m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.overflow="hidden";m.style.height="304px";var n=document.createElement("h3");mxUtils.write(n,mxResources.get(a?"selectFile":"selectFolder"));n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";m.appendChild(n);var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.border="1px solid lightgray";e.style.boxSizing=
-"border-box";e.style.padding="4px";e.style.overflow="auto";e.style.lineHeight="1.2em";e.style.height="274px";m.appendChild(e);var k=document.createElement("div");k.style.textOverflow="ellipsis";k.style.boxSizing="border-box";k.style.overflow="hidden";k.style.padding="4px";k.style.width="100%";var l=new CustomDialog(this.ui,m,mxUtils.bind(this,function(){d(b+"/"+c+"/"+encodeURIComponent(g)+"/"+f)}));this.ui.showDialog(l.container,420,360,!0,!0);a&&l.okButton.parentNode.removeChild(l.okButton);var p=
+GitHubClient.prototype.checkExists=function(a,d,b){var c=a.split("/"),g=c[0],f=c[1],l=c[2];a=c.slice(3,c.length).join("/");this.getSha(g,f,a,l,mxUtils.bind(this,function(c){if(d){var e=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[a]),function(){e();b(!0,c)},function(){e();b(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){b(!1)})}),mxUtils.bind(this,function(a){b(!0)}),null,!0)};
+GitHubClient.prototype.saveFile=function(a,d,b,c,g){var f=a.meta.org,l=a.meta.repo,m=a.meta.ref,e=a.meta.path,k=mxUtils.bind(this,function(c,k){this.writeFile(f,l,m,e,g,k,c,mxUtils.bind(this,function(b){delete a.meta.isNew;d(JSON.parse(b.getText()).content.sha)}),mxUtils.bind(this,function(a){b(a)}))}),n=mxUtils.bind(this,function(){if(this.ui.useCanvasForExport&&/(\.png)$/i.test(e)){var c=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){k(a.meta.sha,
+b)}),b,this.ui.getCurrentFile()!=a?a.getData():null,c.scale,c.border)}else k(a.meta.sha,Base64.encode(a.getData()))});c?this.getSha(f,l,e,m,mxUtils.bind(this,function(b){a.meta.sha=b;n()}),b):n()};GitHubClient.prototype.pickLibrary=function(a){this.pickFile(a)};GitHubClient.prototype.pickFolder=function(a){this.showGitHubDialog(!1,a)};GitHubClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("H"+encodeURIComponent(a))});this.showGitHubDialog(!0,a)};
+GitHubClient.prototype.showGitHubDialog=function(a,d){var b=null,c=null,g=null,f=null,l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.overflow="hidden";l.style.height="304px";var m=document.createElement("h3");mxUtils.write(m,mxResources.get(a?"selectFile":"selectFolder"));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";l.appendChild(m);var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.border="1px solid lightgray";e.style.boxSizing=
+"border-box";e.style.padding="4px";e.style.overflow="auto";e.style.lineHeight="1.2em";e.style.height="274px";l.appendChild(e);var k=document.createElement("div");k.style.textOverflow="ellipsis";k.style.boxSizing="border-box";k.style.overflow="hidden";k.style.padding="4px";k.style.width="100%";var n=new CustomDialog(this.ui,l,mxUtils.bind(this,function(){d(b+"/"+c+"/"+encodeURIComponent(g)+"/"+f)}));this.ui.showDialog(n.container,420,360,!0,!0);a&&n.okButton.parentNode.removeChild(n.okButton);var p=
mxUtils.bind(this,function(a,b,c,e){var d=document.createElement("a");d.setAttribute("title",a);d.style.cursor="pointer";mxUtils.write(d,a);mxEvent.addListener(d,"click",b);e&&(d.style.textDecoration="underline");null!=c&&(a=k.cloneNode(),a.style.padding=c,a.appendChild(d),d=a);return d}),u=mxUtils.bind(this,function(a){var d=document.createElement("div");d.style.marginBottom="8px";d.appendChild(p(b+"/"+c,mxUtils.bind(this,function(){f=null;B()}),null,!0));a||(mxUtils.write(d," / "),d.appendChild(p(decodeURIComponent(g),
-mxUtils.bind(this,function(){f=null;x()}),null,!0)));if(null!=f&&0<f.length){var k=f.split("/");for(a=0;a<k.length;a++)(function(a){mxUtils.write(d," / ");d.appendChild(p(k[a],mxUtils.bind(this,function(){f=k.slice(0,a+1).join("/");y()}),null,!0))})(a)}e.appendChild(d)}),t=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(f=g=c=b=null,B()):this.ui.hideDialog()}),null,{})}),q=null,v=null,y=mxUtils.bind(this,function(m){null==
-m&&(e.innerHTML="",m=1);var n=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+c+"/contents/"+f+"?ref="+encodeURIComponent(g)+"&per_page=100&page="+m,null,"GET");this.ui.spinner.spin(e,mxResources.get("loading"));l.okButton.removeAttribute("disabled");null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var z=mxUtils.bind(this,
-function(){y(m+1)});mxEvent.addListener(q,"click",z);this.executeRequest(n,mxUtils.bind(this,function(l){this.ui.spinner.stop();1==m&&(u(),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){if(""==f)f=null,B();else{var a=f.split("/");f=a.slice(0,a.length-1).join("/");y()}}),"4px")));var n=JSON.parse(l.getText());if(null==n||0==n.length)mxUtils.write(e,mxResources.get("noFiles"));else{var z=!0,A=0;l=mxUtils.bind(this,function(m){for(var l=0;l<n.length;l++)mxUtils.bind(this,function(l,n){if(m==
-("dir"==l.type)){var q=k.cloneNode();q.style.backgroundColor=z?"dark"==uiTheme?"#000000":"#eeeeee":"";z=!z;var t=document.createElement("img");t.src=IMAGE_PATH+"/"+("dir"==l.type?"folder.png":"file.png");t.setAttribute("align","absmiddle");t.style.marginRight="4px";t.style.marginTop="-4px";t.width=20;q.appendChild(t);q.appendChild(p(l.name+("dir"==l.type?"/":""),mxUtils.bind(this,function(){"dir"==l.type?(f=l.path,y()):a&&"file"==l.type&&(this.ui.hideDialog(),d(b+"/"+c+"/"+encodeURIComponent(g)+"/"+
-l.path))})));e.appendChild(q);A++}})(n[l],l)});l(!0);a&&l(!1)}}),t,!0)}),x=mxUtils.bind(this,function(a,d){null==a&&(e.innerHTML="",a=1);var m=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+c+"/branches?per_page=100&page="+a,null,"GET");l.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(e,mxResources.get("loading"));null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor=
-"pointer";mxUtils.write(q,mxResources.get("more")+"...");var n=mxUtils.bind(this,function(){x(a+1)});mxEvent.addListener(q,"click",n);this.executeRequest(m,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(u(!0),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){f=null;B()}),"4px")));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(e,mxResources.get("noFiles"));else if(1==b.length&&d)g=b[0].name,f="",y();else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=
-k.cloneNode();c.style.backgroundColor=0==b%2?"dark"==uiTheme?"#000000":"#eeeeee":"";c.appendChild(p(a.name,mxUtils.bind(this,function(){g=a.name;f="";y()})));e.appendChild(c)})(b[c],c);100==b.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&n()},mxEvent.addListener(e,"scroll",v))}}),t)}),B=mxUtils.bind(this,function(a){null==a&&(e.innerHTML="",a=1);var d=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+a,null,"GET");l.okButton.setAttribute("disabled",
-"disabled");this.ui.spinner.spin(e,mxResources.get("loading"));null!=v&&mxEvent.removeListener(e,"scroll",v);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var m=mxUtils.bind(this,function(){B(a+1)});mxEvent.addListener(q,"click",m);this.executeRequest(d,mxUtils.bind(this,function(d){this.ui.spinner.stop();d=JSON.parse(d.getText());if(null==d||0==d.length)mxUtils.write(e,
+mxUtils.bind(this,function(){f=null;x()}),null,!0)));if(null!=f&&0<f.length){var k=f.split("/");for(a=0;a<k.length;a++)(function(a){mxUtils.write(d," / ");d.appendChild(p(k[a],mxUtils.bind(this,function(){f=k.slice(0,a+1).join("/");y()}),null,!0))})(a)}e.appendChild(d)}),t=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(f=g=c=b=null,B()):this.ui.hideDialog()}),null,{})}),q=null,v=null,y=mxUtils.bind(this,function(l){null==
+l&&(e.innerHTML="",l=1);var m=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+c+"/contents/"+f+"?ref="+encodeURIComponent(g)+"&per_page=100&page="+l,null,"GET");this.ui.spinner.spin(e,mxResources.get("loading"));n.okButton.removeAttribute("disabled");null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var z=mxUtils.bind(this,
+function(){y(l+1)});mxEvent.addListener(q,"click",z);this.executeRequest(m,mxUtils.bind(this,function(m){this.ui.spinner.stop();1==l&&(u(),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){if(""==f)f=null,B();else{var a=f.split("/");f=a.slice(0,a.length-1).join("/");y()}}),"4px")));var n=JSON.parse(m.getText());if(null==n||0==n.length)mxUtils.write(e,mxResources.get("noFiles"));else{var z=!0,A=0;m=mxUtils.bind(this,function(l){for(var m=0;m<n.length;m++)mxUtils.bind(this,function(m,n){if(l==
+("dir"==m.type)){var q=k.cloneNode();q.style.backgroundColor=z?"dark"==uiTheme?"#000000":"#eeeeee":"";z=!z;var t=document.createElement("img");t.src=IMAGE_PATH+"/"+("dir"==m.type?"folder.png":"file.png");t.setAttribute("align","absmiddle");t.style.marginRight="4px";t.style.marginTop="-4px";t.width=20;q.appendChild(t);q.appendChild(p(m.name+("dir"==m.type?"/":""),mxUtils.bind(this,function(){"dir"==m.type?(f=m.path,y()):a&&"file"==m.type&&(this.ui.hideDialog(),d(b+"/"+c+"/"+encodeURIComponent(g)+"/"+
+m.path))})));e.appendChild(q);A++}})(n[m],m)});m(!0);a&&m(!1)}}),t,!0)}),x=mxUtils.bind(this,function(a,d){null==a&&(e.innerHTML="",a=1);var l=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+c+"/branches?per_page=100&page="+a,null,"GET");n.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(e,mxResources.get("loading"));null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor=
+"pointer";mxUtils.write(q,mxResources.get("more")+"...");var m=mxUtils.bind(this,function(){x(a+1)});mxEvent.addListener(q,"click",m);this.executeRequest(l,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(u(!0),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){f=null;B()}),"4px")));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(e,mxResources.get("noFiles"));else if(1==b.length&&d)g=b[0].name,f="",y();else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=
+k.cloneNode();c.style.backgroundColor=0==b%2?"dark"==uiTheme?"#000000":"#eeeeee":"";c.appendChild(p(a.name,mxUtils.bind(this,function(){g=a.name;f="";y()})));e.appendChild(c)})(b[c],c);100==b.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&m()},mxEvent.addListener(e,"scroll",v))}}),t)}),B=mxUtils.bind(this,function(a){null==a&&(e.innerHTML="",a=1);var d=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+a,null,"GET");n.okButton.setAttribute("disabled",
+"disabled");this.ui.spinner.spin(e,mxResources.get("loading"));null!=v&&mxEvent.removeListener(e,"scroll",v);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){B(a+1)});mxEvent.addListener(q,"click",l);this.executeRequest(d,mxUtils.bind(this,function(d){this.ui.spinner.stop();d=JSON.parse(d.getText());if(null==d||0==d.length)mxUtils.write(e,
mxResources.get("noFiles"));else{1==a&&(e.appendChild(p(mxResources.get("enterValue")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(a){if(null!=a){var d=a.split("/");if(1<d.length){a=d[0];var k=d[1];3>d.length?(b=a,c=k,f=g=null,x()):this.ui.spinner.spin(e,mxResources.get("loading"))&&(d=encodeURIComponent(d.slice(2,d.length).join("/")),this.getFile(a+"/"+k+"/"+d,mxUtils.bind(this,function(a){this.ui.spinner.stop();
-b=a.meta.org;c=a.meta.repo;g=decodeURIComponent(a.meta.ref);f="";y()}),mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError({message:mxResources.get("fileNotFound")})})))}else this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})}}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(e),mxUtils.br(e));for(var l=0;l<d.length;l++)mxUtils.bind(this,function(a,d){var g=k.cloneNode();g.style.backgroundColor=
-0==d%2?"dark"==uiTheme?"#000000":"#eeeeee":"";g.appendChild(p(a.full_name,mxUtils.bind(this,function(){b=a.owner.login;c=a.name;f="";x(null,!0)})));e.appendChild(g)})(d[l],l)}100==d.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&m()},mxEvent.addListener(e,"scroll",v))}),t)});B()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};TrelloFile=function(a,d,b){DrawioFile.call(this,a,d);this.meta=b;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes};
+b=a.meta.org;c=a.meta.repo;g=decodeURIComponent(a.meta.ref);f="";y()}),mxUtils.bind(this,function(a){this.ui.spinner.stop();this.ui.handleError({message:mxResources.get("fileNotFound")})})))}else this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})}}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(e),mxUtils.br(e));for(var m=0;m<d.length;m++)mxUtils.bind(this,function(a,d){var g=k.cloneNode();g.style.backgroundColor=
+0==d%2?"dark"==uiTheme?"#000000":"#eeeeee":"";g.appendChild(p(a.full_name,mxUtils.bind(this,function(){b=a.owner.login;c=a.name;f="";x(null,!0)})));e.appendChild(g)})(d[m],m)}100==d.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&l()},mxEvent.addListener(e,"scroll",v))}),t)});B()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};TrelloFile=function(a,d,b){DrawioFile.call(this,a,d);this.meta=b;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes};
TrelloFile.prototype.save=function(a,d,b){this.doSave(this.getTitle(),d,b)};TrelloFile.prototype.saveAs=function(a,d,b){this.doSave(a,d,b)};TrelloFile.prototype.doSave=function(a,d,b){var c=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=c;this.saveFile(a,!1,d,b)}),b])};
TrelloFile.prototype.saveFile=function(a,d,b,c){this.isEditable()?this.savingFile?null!=c&&(this.saveNeededCounter++,c({code:App.ERROR_BUSY})):(this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.getTitle()==a?this.ui.trello.saveFile(this,mxUtils.bind(this,function(g){this.setModified(this.getShadowModified());this.savingFile=!1;this.meta=g;this.contentChanged();null!=b&&b();0<this.saveNeededCounter&&(this.saveNeededCounter--,this.saveFile(a,d,b,c))}),mxUtils.bind(this,
function(a){this.savingFile=!1;null!=c&&c(a)})):this.ui.pickFolder(App.MODE_TRELLO,mxUtils.bind(this,function(g){this.ui.trello.insertFile(a,this.getData(),mxUtils.bind(this,function(f){this.savingFile=!1;null!=b&&b();this.ui.fileLoaded(f);0<this.saveNeededCounter&&(this.saveNeededCounter--,this.saveFile(a,d,b,c))}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}),!1,g)}))):null!=b&&b()};TrelloLibrary=function(a,d,b){TrelloFile.call(this,a,d,b)};mxUtils.extend(TrelloLibrary,TrelloFile);TrelloLibrary.prototype.doSave=function(a,d,b){this.saveFile(a,!1,d,b)};TrelloLibrary.prototype.open=function(){};TrelloClient=function(a){DrawioClient.call(this,a,"tauth");Trello.setKey(this.key)};mxUtils.extend(TrelloClient,DrawioClient);TrelloClient.prototype.key="e73615c79cf7e381aef91c85936e9553";TrelloClient.prototype.baseUrl="https://api.trello.com/1/";TrelloClient.prototype.SEPARATOR="|$|";TrelloClient.prototype.maxFileSize=1E7;TrelloClient.prototype.extension=".xml";
TrelloClient.prototype.authenticate=function(a,d,b){b&&this.logout();b=mxUtils.bind(this,function(b,g){Trello.authorize({type:"popup",name:"draw.io",scope:{read:"true",write:"true"},expiration:b?"never":"1hour",success:function(){null!=g&&g();a()},error:function(){null!=g&&g();null!=d&&d(mxResources.get("loggedOut"))}})});this.isAuthorized()?b(!0):this.ui.showAuthDialog(this,!0,b)};TrelloClient.prototype.getLibrary=function(a,d,b){this.getFile(a,d,b,!1,!0)};
-TrelloClient.prototype.getFile=function(a,d,b,c,g){g=null!=g?g:!1;var f=mxUtils.bind(this,function(){var c=a.split(this.SEPARATOR),n=!0,e=window.setTimeout(mxUtils.bind(this,function(){n=!1;b({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout);Trello.cards.get(c[0]+"/attachments/"+c[1],mxUtils.bind(this,function(c){window.clearTimeout(e);if(n){var k=/\.png$/i.test(c.name);/\.v(dx|sdx?)$/i.test(c.name)||/\.gliffy$/i.test(c.name)||!this.ui.useCanvasForExport&&k?this.ui.convertFile(PROXY_URL+"?url="+
-encodeURIComponent(c.url),c.name,c.mimeType,this.extension,d,b):(n=!0,e=window.setTimeout(mxUtils.bind(this,function(){n=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),this.ui.editor.loadUrl(PROXY_URL+"?url="+encodeURIComponent(c.url),mxUtils.bind(this,function(b){window.clearTimeout(e);if(n){c.compoundId=a;if(0<(k?b.lastIndexOf(","):-1)){var f=this.ui.extractGraphModelFromPng(b);null!=f&&0<f.length&&(b=f)}g?d(new TrelloLibrary(this.ui,b,c)):d(new TrelloFile(this.ui,b,c))}}),mxUtils.bind(this,
-function(a,c){window.clearTimeout(e);n&&(401==c.status?this.authenticate(f,b,!0):b())}),k||null!=c.mimeType&&"image/"==c.mimeType.substring(0,6)))}}),mxUtils.bind(this,function(a){window.clearTimeout(e);n&&(null!=a&&401==a.status?this.authenticate(f,b,!0):b())}))});this.authenticate(f,b)};TrelloClient.prototype.insertLibrary=function(a,d,b,c,g){this.insertFile(a,d,b,c,!0,g)};
-TrelloClient.prototype.insertFile=function(a,d,b,c,g,f){g=null!=g?g:!1;var m=mxUtils.bind(this,function(){var m=mxUtils.bind(this,function(e){this.writeFile(a,e,f,mxUtils.bind(this,function(a){g?b(new TrelloLibrary(this.ui,d,a)):b(new TrelloFile(this.ui,d,a))}),c)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){m(this.ui.base64ToBlob(a,"image/png"))}),c,d):m(d)});this.authenticate(m,c)};
+TrelloClient.prototype.getFile=function(a,d,b,c,g){g=null!=g?g:!1;var f=mxUtils.bind(this,function(){var c=a.split(this.SEPARATOR),m=!0,e=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout);Trello.cards.get(c[0]+"/attachments/"+c[1],mxUtils.bind(this,function(c){window.clearTimeout(e);if(m){var k=/\.png$/i.test(c.name);/\.v(dx|sdx?)$/i.test(c.name)||/\.gliffy$/i.test(c.name)||!this.ui.useCanvasForExport&&k?this.ui.convertFile(PROXY_URL+"?url="+
+encodeURIComponent(c.url),c.name,c.mimeType,this.extension,d,b):(m=!0,e=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT})}),this.ui.timeout),this.ui.editor.loadUrl(PROXY_URL+"?url="+encodeURIComponent(c.url),mxUtils.bind(this,function(b){window.clearTimeout(e);if(m){c.compoundId=a;if(0<(k?b.lastIndexOf(","):-1)){var f=this.ui.extractGraphModelFromPng(b);null!=f&&0<f.length&&(b=f)}g?d(new TrelloLibrary(this.ui,b,c)):d(new TrelloFile(this.ui,b,c))}}),mxUtils.bind(this,
+function(a,c){window.clearTimeout(e);m&&(401==c.status?this.authenticate(f,b,!0):b())}),k||null!=c.mimeType&&"image/"==c.mimeType.substring(0,6)))}}),mxUtils.bind(this,function(a){window.clearTimeout(e);m&&(null!=a&&401==a.status?this.authenticate(f,b,!0):b())}))});this.authenticate(f,b)};TrelloClient.prototype.insertLibrary=function(a,d,b,c,g){this.insertFile(a,d,b,c,!0,g)};
+TrelloClient.prototype.insertFile=function(a,d,b,c,g,f){g=null!=g?g:!1;var l=mxUtils.bind(this,function(){var l=mxUtils.bind(this,function(e){this.writeFile(a,e,f,mxUtils.bind(this,function(a){g?b(new TrelloLibrary(this.ui,d,a)):b(new TrelloFile(this.ui,d,a))}),c)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){l(this.ui.base64ToBlob(a,"image/png"))}),c,d):l(d)});this.authenticate(l,c)};
TrelloClient.prototype.saveFile=function(a,d,b){var c=a.meta.compoundId.split(this.SEPARATOR),g=mxUtils.bind(this,function(g){this.writeFile(a.meta.name,g,c[0],function(a){Trello.del("cards/"+c[0]+"/attachments/"+c[1],mxUtils.bind(this,function(){d(a)}),mxUtils.bind(this,function(a){null!=a&&401==a.status?this.authenticate(f,b,!0):b()}))},b)}),f=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){g(this.ui.base64ToBlob(a,
"image/png"))}),b,this.ui.getCurrentFile()!=a?a.getData():null):g(a.getData())});this.authenticate(f,b)};
-TrelloClient.prototype.writeFile=function(a,d,b,c,g){if(null!=a&&null!=d)if(d.length>=this.maxFileSize)g({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(d.length)+" / 10 MB)"});else{var f=mxUtils.bind(this,function(){var m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;g({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout),e=new FormData;e.append("key",Trello.key());e.append("token",Trello.token());e.append("file","string"===typeof d?new Blob([d]):d,a);e.append("name",
-a);var k=new XMLHttpRequest;k.responseType="json";k.onreadystatechange=mxUtils.bind(this,function(){if(4===k.readyState&&(window.clearTimeout(n),m))if(200==k.status){var a=k.response;a.compoundId=b+this.SEPARATOR+a.id;c(a)}else 401==k.status?this.authenticate(f,g,!0):g()});k.open("POST",this.baseUrl+"cards/"+b+"/attachments");k.send(e)});this.authenticate(f,g)}else g({message:mxResources.get("unknownError")})};TrelloClient.prototype.pickLibrary=function(a){this.pickFile(a)};
+TrelloClient.prototype.writeFile=function(a,d,b,c,g){if(null!=a&&null!=d)if(d.length>=this.maxFileSize)g({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(d.length)+" / 10 MB)"});else{var f=mxUtils.bind(this,function(){var l=!0,m=window.setTimeout(mxUtils.bind(this,function(){l=!1;g({code:App.ERROR_TIMEOUT,retry:f})}),this.ui.timeout),e=new FormData;e.append("key",Trello.key());e.append("token",Trello.token());e.append("file","string"===typeof d?new Blob([d]):d,a);e.append("name",
+a);var k=new XMLHttpRequest;k.responseType="json";k.onreadystatechange=mxUtils.bind(this,function(){if(4===k.readyState&&(window.clearTimeout(m),l))if(200==k.status){var a=k.response;a.compoundId=b+this.SEPARATOR+a.id;c(a)}else 401==k.status?this.authenticate(f,g,!0):g()});k.open("POST",this.baseUrl+"cards/"+b+"/attachments");k.send(e)});this.authenticate(f,g)}else g({message:mxResources.get("unknownError")})};TrelloClient.prototype.pickLibrary=function(a){this.pickFile(a)};
TrelloClient.prototype.pickFolder=function(a){this.authenticate(mxUtils.bind(this,function(){this.showTrelloDialog(!1,a)}),mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)}))};TrelloClient.prototype.pickFile=function(a,d){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("T"+encodeURIComponent(a))});this.authenticate(mxUtils.bind(this,function(){this.showTrelloDialog(!0,a)}),mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a,mxResources.get("ok"))}))};
-TrelloClient.prototype.showTrelloDialog=function(a,d){var b=null,c="@me",g=0,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.overflow="hidden";f.style.height="224px";var m=document.createElement("h3");mxUtils.write(m,a?mxResources.get("selectFile"):mxResources.get("selectCard"));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(m);var n=document.createElement("div");n.style.whiteSpace="nowrap";n.style.overflow="auto";n.style.height=
-"194px";f.appendChild(n);f=new CustomDialog(this.ui,f);this.ui.showDialog(f.container,340,270,!0,!0);f.okButton.parentNode.removeChild(f.okButton);var e=mxUtils.bind(this,function(a,b,c){g++;var e=document.createElement("div");e.style="width:100%;text-overflow:ellipsis;overflow:hidden;vertical-align:middle;padding:2px 0 2px 0;background:"+(0==g%2?"dark"==uiTheme?"#000":"#eee":"dark"==uiTheme?"":"#fff");var d=document.createElement("a");d.style.cursor="pointer";if(null!=c){var f=document.createElement("img");
-f.src=c.url;f.width=c.width;f.height=c.height;f.style="border: 1px solid black;margin:5px;vertical-align:middle";d.appendChild(f)}mxUtils.write(d,a);mxEvent.addListener(d,"click",b);e.appendChild(d);return e}),k=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.hideDialog()}))}),l=mxUtils.bind(this,function(){g=0;n.innerHTML="";this.ui.spinner.spin(n,mxResources.get("loading"));var a=mxUtils.bind(this,function(){Trello.cards.get(b+
-"/attachments",{fields:"id,name,previews"},mxUtils.bind(this,function(a){this.ui.spinner.stop();n.appendChild(e("../ [Up]",mxUtils.bind(this,function(){t()})));mxUtils.br(n);null==a||0==a.length?mxUtils.write(n,mxResources.get("noFiles")):mxUtils.bind(this,function(){for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){n.appendChild(e(a.name,mxUtils.bind(this,function(){this.ui.hideDialog();d(b+this.SEPARATOR+a.id)}),null!=a.previews?a.previews[0]:null))})(a[c])})()}),mxUtils.bind(this,function(b){401==
-b.status?this.authenticate(a,k,!0):null!=k&&k(b)}))});a()}),p=null,u=null,t=mxUtils.bind(this,function(f){null==f&&(g=0,n.innerHTML="",f=1);this.ui.spinner.spin(n,mxResources.get("loading"));null!=p&&null!=p.parentNode&&p.parentNode.removeChild(p);p=document.createElement("a");p.style.display="block";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("more")+"...");var m=mxUtils.bind(this,function(){mxEvent.removeListener(n,"scroll",u);t(f+1)});mxEvent.addListener(p,"click",m);var q=mxUtils.bind(this,
-function(){Trello.get("search",{query:""==mxUtils.trim(c)?"is:open":c,cards_limit:100,cards_page:f-1},mxUtils.bind(this,function(g){this.ui.spinner.stop();g=null!=g?g.cards:null;if(null==g||0==g.length)mxUtils.write(n,mxResources.get("noFiles"));else{1==f&&(n.appendChild(e(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,c,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(c=a,t())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards");
-this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(n));for(var k=0;k<g.length;k++)mxUtils.bind(this,function(c){n.appendChild(e(c.name,mxUtils.bind(this,function(){a?(b=c.id,l()):(this.ui.hideDialog(),d(c.id))})))})(g[k]);100==g.length&&(n.appendChild(p),u=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&m()},mxEvent.addListener(n,"scroll",u))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(q,k,!0):null!=k&&k({message:a.responseText})}))});q()});t()};
+TrelloClient.prototype.showTrelloDialog=function(a,d){var b=null,c="@me",g=0,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.overflow="hidden";f.style.height="224px";var l=document.createElement("h3");mxUtils.write(l,a?mxResources.get("selectFile"):mxResources.get("selectCard"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.overflow="auto";m.style.height=
+"194px";f.appendChild(m);f=new CustomDialog(this.ui,f);this.ui.showDialog(f.container,340,270,!0,!0);f.okButton.parentNode.removeChild(f.okButton);var e=mxUtils.bind(this,function(a,b,c){g++;var e=document.createElement("div");e.style="width:100%;text-overflow:ellipsis;overflow:hidden;vertical-align:middle;padding:2px 0 2px 0;background:"+(0==g%2?"dark"==uiTheme?"#000":"#eee":"dark"==uiTheme?"":"#fff");var d=document.createElement("a");d.style.cursor="pointer";if(null!=c){var f=document.createElement("img");
+f.src=c.url;f.width=c.width;f.height=c.height;f.style="border: 1px solid black;margin:5px;vertical-align:middle";d.appendChild(f)}mxUtils.write(d,a);mxEvent.addListener(d,"click",b);e.appendChild(d);return e}),k=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.hideDialog()}))}),n=mxUtils.bind(this,function(){g=0;m.innerHTML="";this.ui.spinner.spin(m,mxResources.get("loading"));var a=mxUtils.bind(this,function(){Trello.cards.get(b+
+"/attachments",{fields:"id,name,previews"},mxUtils.bind(this,function(a){this.ui.spinner.stop();m.appendChild(e("../ [Up]",mxUtils.bind(this,function(){t()})));mxUtils.br(m);null==a||0==a.length?mxUtils.write(m,mxResources.get("noFiles")):mxUtils.bind(this,function(){for(var c=0;c<a.length;c++)mxUtils.bind(this,function(a){m.appendChild(e(a.name,mxUtils.bind(this,function(){this.ui.hideDialog();d(b+this.SEPARATOR+a.id)}),null!=a.previews?a.previews[0]:null))})(a[c])})()}),mxUtils.bind(this,function(b){401==
+b.status?this.authenticate(a,k,!0):null!=k&&k(b)}))});a()}),p=null,u=null,t=mxUtils.bind(this,function(f){null==f&&(g=0,m.innerHTML="",f=1);this.ui.spinner.spin(m,mxResources.get("loading"));null!=p&&null!=p.parentNode&&p.parentNode.removeChild(p);p=document.createElement("a");p.style.display="block";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){mxEvent.removeListener(m,"scroll",u);t(f+1)});mxEvent.addListener(p,"click",l);var q=mxUtils.bind(this,
+function(){Trello.get("search",{query:""==mxUtils.trim(c)?"is:open":c,cards_limit:100,cards_page:f-1},mxUtils.bind(this,function(g){this.ui.spinner.stop();g=null!=g?g.cards:null;if(null==g||0==g.length)mxUtils.write(m,mxResources.get("noFiles"));else{1==f&&(m.appendChild(e(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,c,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(c=a,t())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards");
+this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(m));for(var k=0;k<g.length;k++)mxUtils.bind(this,function(c){m.appendChild(e(c.name,mxUtils.bind(this,function(){a?(b=c.id,n()):(this.ui.hideDialog(),d(c.id))})))})(g[k]);100==g.length&&(m.appendChild(p),u=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&l()},mxEvent.addListener(m,"scroll",u))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(q,k,!0):null!=k&&k({message:a.responseText})}))});q()});t()};
TrelloClient.prototype.isAuthorized=function(){try{return null!=localStorage.trello_token}catch(a){}return!1};TrelloClient.prototype.logout=function(){localStorage.removeItem("trello_token");Trello.deauthorize()};GitLabFile=function(a,d,b){GitHubFile.call(this,a,d,b);this.peer=this.ui.gitLab};mxUtils.extend(GitLabFile,GitHubFile);GitLabFile.prototype.share=function(){this.ui.editor.graph.openLink(DRAWIO_GITLAB_URL+"/"+encodeURIComponent(this.meta.org)+"/"+encodeURIComponent(this.meta.repo)+"/-/project_members")};
GitLabFile.prototype.getId=function(){return this.meta.org+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitLabFile.prototype.getHash=function(){return encodeURIComponent("A"+this.getId())};GitLabFile.prototype.isConflict=function(a){return null!=a&&400==a.status};GitLabFile.prototype.getMode=function(){return App.MODE_GITLAB};GitLabFile.prototype.getDescriptorEtag=function(a){return a.last_commit_id};
GitLabFile.prototype.setDescriptorEtag=function(a,d){a.last_commit_id=d};GitLabLibrary=function(a,d,b){GitLabFile.call(this,a,d,b)};mxUtils.extend(GitLabLibrary,GitLabFile);GitLabLibrary.prototype.doSave=function(a,d,b){this.saveFile(a,!1,d,b)};GitLabLibrary.prototype.open=function(){};GitLabClient=function(a){GitHubClient.call(this,a,"gitlabauth")};mxUtils.extend(GitLabClient,GitHubClient);GitLabClient.prototype.clientId=DRAWIO_GITLAB_ID;GitLabClient.prototype.scope="api%20read_repository%20write_repository";GitLabClient.prototype.baseUrl=DRAWIO_GITLAB_URL+"/api/v4";GitLabClient.prototype.maxFileSize=1E7;GitLabClient.prototype.authToken="Bearer";
-GitLabClient.prototype.authenticate=function(a,d){if(null==window.onGitLabCallback){var b=mxUtils.bind(this,function(){var c=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,f){var m=window.location.href,m=m.substring(0,m.lastIndexOf("/")),m=encodeURIComponent(m+"/gitlab.html");null!=window.open(DRAWIO_GITLAB_URL+"/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope+"&redirect_uri="+m+"&response_type=token&state=123","gitlabauth")?window.onGitLabCallback=mxUtils.bind(this,
-function(m,e){c?(window.onGitLabCallback=null,c=!1,null==m?d({message:mxResources.get("accessDenied"),retry:b}):(null!=f&&f(),this.token=m,this.setUser(null),g&&this.setPersistentToken(this.token),a())):null!=e&&e.close()}):d({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){c&&(window.onGitLabCallback=null,c=!1,d({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else d({code:App.ERROR_BUSY})};
-GitLabClient.prototype.executeRequest=function(a,d,b,c){var g=mxUtils.bind(this,function(m){var n=!0,e=window.setTimeout(mxUtils.bind(this,function(){n=!1;b({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),k=this.authToken+" "+this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",k);a.setRequestHeader("PRIVATE_TOKEN",k);a.setRequestHeader("Content-Type","application/json")};a.send(mxUtils.bind(this,function(){window.clearTimeout(e);if(n)if(200<=
-a.getStatus()&&299>=a.getStatus()||c&&404==a.getStatus())d(a);else if(401===a.getStatus())m?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){f(!0)},b)})}):this.authenticate(function(){g(!0)},b);else if(403===a.getStatus()){var k=!1;try{var p=JSON.parse(a.getText());null!=p&&null!=p.errors&&0<p.errors.length&&(k="too_large"==p.errors[0].code)}catch(u){}b({message:mxResources.get(k?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?b({message:this.getErrorMessage(a,
-mxResources.get("fileNotFound"))}):400===a.getStatus()?b({status:400}):b({status:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),mxUtils.bind(this,function(a){window.clearTimeout(e);n&&b(a)}))}),f=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){f(!0)},b,a):g(a)});null==this.token?this.authenticate(function(){f(!0)},b):f(!1)};
-GitLabClient.prototype.getRefIndex=function(a,d,b,c,g,f){if(null!=g)b(a,g);else{var m=a.length-2,n=mxUtils.bind(this,function(){if(2>m)c({message:mxResources.get("fileNotFound")});else{var e=Math.max(m-1,0),g=a.slice(0,e).join("/"),e=a[e],l=a[m],p=a.slice(m+1,a.length).join("/"),g=this.baseUrl+"/projects/"+encodeURIComponent(g+"/"+e)+"/repository/"+(d?f?"branches?per_page=1&page=1&ref="+l:"tree?path="+p+"&ref="+l:"files/"+encodeURIComponent(p)+"?ref="+l),u=new mxXmlRequest(g,null,"HEAD");this.executeRequest(u,
-mxUtils.bind(this,function(){200==u.getStatus()?b(a,m):c({message:mxResources.get("fileNotFound")})}),mxUtils.bind(this,function(){404==u.getStatus()?(m--,n()):c({message:mxResources.get("fileNotFound")})}))}});n()}};
-GitLabClient.prototype.getFile=function(a,d,b,c,g,f){c=null!=c?c:!1;this.getRefIndex(a.split("/"),!1,mxUtils.bind(this,function(f,n){var e=Math.max(n-1,0),k=f.slice(0,e).join("/"),m=f[e],p=f[n];a=f.slice(n+1,f.length).join("/");e=/\.png$/i.test(a);if(!g&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&e))if(null!=this.token){var e="&t="+(new Date).getTime(),u=this.baseUrl+"/projects/"+encodeURIComponent(k+"/"+m)+"/repository/files/"+encodeURIComponent(a)+
-"?ref="+p;f=a.split("/");this.ui.convertFile(u+e,0<f.length?f[f.length-1]:a,null,this.extension,d,b,mxUtils.bind(this,function(a,b,c){a=new mxXmlRequest(a,null,"GET");this.executeRequest(a,mxUtils.bind(this,function(a){try{b(this.getFileContent(JSON.parse(a.getText())))}catch(x){c(x)}}),c)}))}else b({message:mxResources.get("accessDenied")});else e="&t="+(new Date).getTime(),u=this.baseUrl+"/projects/"+encodeURIComponent(k+"/"+m)+"/repository/files/"+encodeURIComponent(a)+"?ref="+p,e=new mxXmlRequest(u+
-e,null,"GET"),this.executeRequest(e,mxUtils.bind(this,function(a){try{d(this.createGitLabFile(k,m,p,JSON.parse(a.getText()),c,n))}catch(q){b(q)}}),b)}),b,f)};
+GitLabClient.prototype.authenticate=function(a,d){if(null==window.onGitLabCallback){var b=mxUtils.bind(this,function(){var c=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(g,f){var l=window.location.href,l=l.substring(0,l.lastIndexOf("/")),l=encodeURIComponent(l+"/gitlab.html");null!=window.open(DRAWIO_GITLAB_URL+"/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope+"&redirect_uri="+l+"&response_type=token&state=123","gitlabauth")?window.onGitLabCallback=mxUtils.bind(this,
+function(l,e){c?(window.onGitLabCallback=null,c=!1,null==l?d({message:mxResources.get("accessDenied"),retry:b}):(null!=f&&f(),this.token=l,this.setUser(null),g&&this.setPersistentToken(this.token),a())):null!=e&&e.close()}):d({message:mxResources.get("serviceUnavailableOrBlocked"),retry:b})}),mxUtils.bind(this,function(){c&&(window.onGitLabCallback=null,c=!1,d({message:mxResources.get("accessDenied"),retry:b}))}))});b()}else d({code:App.ERROR_BUSY})};
+GitLabClient.prototype.executeRequest=function(a,d,b,c){var g=mxUtils.bind(this,function(l){var m=!0,e=window.setTimeout(mxUtils.bind(this,function(){m=!1;b({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),k=this.authToken+" "+this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",k);a.setRequestHeader("PRIVATE_TOKEN",k);a.setRequestHeader("Content-Type","application/json")};a.send(mxUtils.bind(this,function(){window.clearTimeout(e);if(m)if(200<=
+a.getStatus()&&299>=a.getStatus()||c&&404==a.getStatus())d(a);else if(401===a.getStatus())l?b({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){f(!0)},b)})}):this.authenticate(function(){g(!0)},b);else if(403===a.getStatus()){var k=!1;try{var p=JSON.parse(a.getText());null!=p&&null!=p.errors&&0<p.errors.length&&(k="too_large"==p.errors[0].code)}catch(u){}b({message:mxResources.get(k?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?b({message:this.getErrorMessage(a,
+mxResources.get("fileNotFound"))}):400===a.getStatus()?b({status:400}):b({status:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),mxUtils.bind(this,function(a){window.clearTimeout(e);m&&b(a)}))}),f=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){f(!0)},b,a):g(a)});null==this.token?this.authenticate(function(){f(!0)},b):f(!1)};
+GitLabClient.prototype.getRefIndex=function(a,d,b,c,g,f){if(null!=g)b(a,g);else{var l=a.length-2,m=mxUtils.bind(this,function(){if(2>l)c({message:mxResources.get("fileNotFound")});else{var e=Math.max(l-1,0),g=a.slice(0,e).join("/"),e=a[e],n=a[l],p=a.slice(l+1,a.length).join("/"),g=this.baseUrl+"/projects/"+encodeURIComponent(g+"/"+e)+"/repository/"+(d?f?"branches?per_page=1&page=1&ref="+n:"tree?path="+p+"&ref="+n:"files/"+encodeURIComponent(p)+"?ref="+n),u=new mxXmlRequest(g,null,"HEAD");this.executeRequest(u,
+mxUtils.bind(this,function(){200==u.getStatus()?b(a,l):c({message:mxResources.get("fileNotFound")})}),mxUtils.bind(this,function(){404==u.getStatus()?(l--,m()):c({message:mxResources.get("fileNotFound")})}))}});m()}};
+GitLabClient.prototype.getFile=function(a,d,b,c,g,f){c=null!=c?c:!1;this.getRefIndex(a.split("/"),!1,mxUtils.bind(this,function(f,m){var e=Math.max(m-1,0),k=f.slice(0,e).join("/"),l=f[e],p=f[m];a=f.slice(m+1,f.length).join("/");e=/\.png$/i.test(a);if(!g&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&e))if(null!=this.token){var e="&t="+(new Date).getTime(),u=this.baseUrl+"/projects/"+encodeURIComponent(k+"/"+l)+"/repository/files/"+encodeURIComponent(a)+
+"?ref="+p;f=a.split("/");this.ui.convertFile(u+e,0<f.length?f[f.length-1]:a,null,this.extension,d,b,mxUtils.bind(this,function(a,b,c){a=new mxXmlRequest(a,null,"GET");this.executeRequest(a,mxUtils.bind(this,function(a){try{b(this.getFileContent(JSON.parse(a.getText())))}catch(x){c(x)}}),c)}))}else b({message:mxResources.get("accessDenied")});else e="&t="+(new Date).getTime(),u=this.baseUrl+"/projects/"+encodeURIComponent(k+"/"+l)+"/repository/files/"+encodeURIComponent(a)+"?ref="+p,e=new mxXmlRequest(u+
+e,null,"GET"),this.executeRequest(e,mxUtils.bind(this,function(a){try{d(this.createGitLabFile(k,l,p,JSON.parse(a.getText()),c,m))}catch(q){b(q)}}),b)}),b,f)};
GitLabClient.prototype.getFileContent=function(a){var d=a.file_name,b=a.content;"base64"===a.encoding&&(/\.jpe?g$/i.test(d)?b="data:image/jpeg;base64,"+b:/\.gif$/i.test(d)?b="data:image/gif;base64,"+b:/\.pdf$/i.test(d)?b="data:application/pdf;base64,"+b:/\.png$/i.test(d)?(a=this.ui.extractGraphModelFromPng(b),b=null!=a&&0<a.length?a:"data:image/png;base64,"+b):b=Base64.decode(b));return b};
-GitLabClient.prototype.createGitLabFile=function(a,d,b,c,g,f){var m=DRAWIO_GITLAB_URL+"/";a={org:a,repo:d,ref:b,name:c.file_name,path:c.file_path,html_url:m+a+"/"+d+"/blob/"+b+"/"+c.file_path,download_url:m+a+"/"+d+"/raw/"+b+"/"+c.file_path+"?inline=false",last_commit_id:c.last_commit_id,refPos:f};c=this.getFileContent(c);return g?new GitLabLibrary(this.ui,c,a):new GitLabFile(this.ui,c,a)};
-GitLabClient.prototype.insertFile=function(a,d,b,c,g,f,m){g=null!=g?g:!1;f=f.split("/");this.getRefIndex(f,!0,mxUtils.bind(this,function(f,e){var k=Math.max(e-1,0),l=f.slice(0,k).join("/"),n=f[k],u=f[e];path=f.slice(e+1,f.length).join("/");0<path.length&&(path+="/");path+=a;this.checkExists(l+"/"+n+"/"+u+"/"+path,!0,mxUtils.bind(this,function(f,k){if(f)if(g)m||(d=Base64.encode(d)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(l,n,u,path,a,d,k,mxUtils.bind(this,function(a){try{var d=
-JSON.parse(a.getText());b(this.createGitLabFile(l,n,u,d.content,g,e))}catch(z){c(z)}}),c)}),c);else{var p=DRAWIO_GITLAB_URL+"/";b(new GitLabFile(this.ui,d,{org:l,repo:n,ref:u,name:a,path:path,html_url:p+l+"/"+n+"/blob/"+u+"/"+path,download_url:p+l+"/"+n+"/raw/"+u+"/"+path+"?inline=false",refPos:e,last_commit_id:k,isNew:!0}))}else c()}))}),c,null,4>=f.length)};
+GitLabClient.prototype.createGitLabFile=function(a,d,b,c,g,f){var l=DRAWIO_GITLAB_URL+"/";a={org:a,repo:d,ref:b,name:c.file_name,path:c.file_path,html_url:l+a+"/"+d+"/blob/"+b+"/"+c.file_path,download_url:l+a+"/"+d+"/raw/"+b+"/"+c.file_path+"?inline=false",last_commit_id:c.last_commit_id,refPos:f};c=this.getFileContent(c);return g?new GitLabLibrary(this.ui,c,a):new GitLabFile(this.ui,c,a)};
+GitLabClient.prototype.insertFile=function(a,d,b,c,g,f,l){g=null!=g?g:!1;f=f.split("/");this.getRefIndex(f,!0,mxUtils.bind(this,function(f,e){var k=Math.max(e-1,0),m=f.slice(0,k).join("/"),p=f[k],u=f[e];path=f.slice(e+1,f.length).join("/");0<path.length&&(path+="/");path+=a;this.checkExists(m+"/"+p+"/"+u+"/"+path,!0,mxUtils.bind(this,function(f,k){if(f)if(g)l||(d=Base64.encode(d)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(m,p,u,path,a,d,k,mxUtils.bind(this,function(a){try{var d=
+JSON.parse(a.getText());b(this.createGitLabFile(m,p,u,d.content,g,e))}catch(z){c(z)}}),c)}),c);else{var n=DRAWIO_GITLAB_URL+"/";b(new GitLabFile(this.ui,d,{org:m,repo:p,ref:u,name:a,path:path,html_url:n+m+"/"+p+"/blob/"+u+"/"+path,download_url:n+m+"/"+p+"/raw/"+u+"/"+path+"?inline=false",refPos:e,last_commit_id:k,isNew:!0}))}else c()}))}),c,null,4>=f.length)};
GitLabClient.prototype.checkExists=function(a,d,b){this.getFile(a,mxUtils.bind(this,function(c){if(d){var g=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[a]),function(){g();b(!0,c.getCurrentEtag())},function(){g();b(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){b(!1)})}),mxUtils.bind(this,function(a){b(!0)}),null,!0)};
-GitLabClient.prototype.writeFile=function(a,d,b,c,g,f,m,n,e){if(f.length>=this.maxFileSize)e({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(f.length)+" / 10 MB)"});else{var k="POST";b={path:encodeURIComponent(c),branch:decodeURIComponent(b),commit_message:g,content:f,encoding:"base64"};null!=m&&(b.last_commit_id=m,k="PUT");a=this.baseUrl+"/projects/"+encodeURIComponent(a+"/"+d)+"/repository/files/"+encodeURIComponent(c);k=new mxXmlRequest(a,JSON.stringify(b),k);this.executeRequest(k,
-mxUtils.bind(this,function(a){n(a)}),e)}};
-GitLabClient.prototype.saveFile=function(a,d,b,c,g){var f=a.meta.org,m=a.meta.repo,n=a.meta.ref,e=a.meta.path,k=mxUtils.bind(this,function(c,k){this.writeFile(f,m,n,e,g,k,c,mxUtils.bind(this,function(c){delete a.meta.isNew;this.getFile(f+"/"+m+"/"+n+"/"+e,mxUtils.bind(this,function(b){b.getData()==a.getData()?d(b.getCurrentEtag()):d({content:a.getCurrentEtag()})}),b,null,null,a.meta.refPos)}),b)}),l=mxUtils.bind(this,function(){if(this.ui.useCanvasForExport&&/(\.png)$/i.test(e)){var c=this.ui.getPngFileProperties(this.ui.fileNode);
-this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){k(a.meta.last_commit_id,b)}),b,this.ui.getCurrentFile()!=a?a.getData():null,c.scale,c.border)}else k(a.meta.last_commit_id,Base64.encode(a.getData()))});c?this.getFile(f+"/"+m+"/"+n+"/"+e,mxUtils.bind(this,function(b){a.meta.last_commit_id=b.meta.last_commit_id;l()}),b):l()};GitLabClient.prototype.pickFolder=function(a){this.showGitLabDialog(!1,a)};
+GitLabClient.prototype.writeFile=function(a,d,b,c,g,f,l,m,e){if(f.length>=this.maxFileSize)e({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(f.length)+" / 10 MB)"});else{var k="POST";b={path:encodeURIComponent(c),branch:decodeURIComponent(b),commit_message:g,content:f,encoding:"base64"};null!=l&&(b.last_commit_id=l,k="PUT");a=this.baseUrl+"/projects/"+encodeURIComponent(a+"/"+d)+"/repository/files/"+encodeURIComponent(c);k=new mxXmlRequest(a,JSON.stringify(b),k);this.executeRequest(k,
+mxUtils.bind(this,function(a){m(a)}),e)}};
+GitLabClient.prototype.saveFile=function(a,d,b,c,g){var f=a.meta.org,l=a.meta.repo,m=a.meta.ref,e=a.meta.path,k=mxUtils.bind(this,function(c,k){this.writeFile(f,l,m,e,g,k,c,mxUtils.bind(this,function(c){delete a.meta.isNew;this.getFile(f+"/"+l+"/"+m+"/"+e,mxUtils.bind(this,function(b){b.getData()==a.getData()?d(b.getCurrentEtag()):d({content:a.getCurrentEtag()})}),b,null,null,a.meta.refPos)}),b)}),n=mxUtils.bind(this,function(){if(this.ui.useCanvasForExport&&/(\.png)$/i.test(e)){var c=this.ui.getPngFileProperties(this.ui.fileNode);
+this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){k(a.meta.last_commit_id,b)}),b,this.ui.getCurrentFile()!=a?a.getData():null,c.scale,c.border)}else k(a.meta.last_commit_id,Base64.encode(a.getData()))});c?this.getFile(f+"/"+l+"/"+m+"/"+e,mxUtils.bind(this,function(b){a.meta.last_commit_id=b.meta.last_commit_id;n()}),b):n()};GitLabClient.prototype.pickFolder=function(a){this.showGitLabDialog(!1,a)};
GitLabClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("A"+encodeURIComponent(a))});this.showGitLabDialog(!0,a)};
-GitLabClient.prototype.showGitLabDialog=function(a,d){var b=null,c=null,g=null,f=null,m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.overflow="hidden";m.style.height="304px";var n=document.createElement("h3");mxUtils.write(n,mxResources.get(a?"selectFile":"selectFolder"));n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";m.appendChild(n);var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.border="1px solid lightgray";e.style.boxSizing=
-"border-box";e.style.padding="4px";e.style.overflow="auto";e.style.lineHeight="1.2em";e.style.height="274px";m.appendChild(e);var k=document.createElement("div");k.style.textOverflow="ellipsis";k.style.boxSizing="border-box";k.style.overflow="hidden";k.style.padding="4px";k.style.width="100%";var l=new CustomDialog(this.ui,m,mxUtils.bind(this,function(){d(b+"/"+c+"/"+encodeURIComponent(g)+"/"+f)}));this.ui.showDialog(l.container,420,360,!0,!0);a&&l.okButton.parentNode.removeChild(l.okButton);var p=
+GitLabClient.prototype.showGitLabDialog=function(a,d){var b=null,c=null,g=null,f=null,l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.overflow="hidden";l.style.height="304px";var m=document.createElement("h3");mxUtils.write(m,mxResources.get(a?"selectFile":"selectFolder"));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";l.appendChild(m);var e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.border="1px solid lightgray";e.style.boxSizing=
+"border-box";e.style.padding="4px";e.style.overflow="auto";e.style.lineHeight="1.2em";e.style.height="274px";l.appendChild(e);var k=document.createElement("div");k.style.textOverflow="ellipsis";k.style.boxSizing="border-box";k.style.overflow="hidden";k.style.padding="4px";k.style.width="100%";var n=new CustomDialog(this.ui,l,mxUtils.bind(this,function(){d(b+"/"+c+"/"+encodeURIComponent(g)+"/"+f)}));this.ui.showDialog(n.container,420,360,!0,!0);a&&n.okButton.parentNode.removeChild(n.okButton);var p=
mxUtils.bind(this,function(a,b,c,e){var d=document.createElement("a");d.setAttribute("title",a);d.style.cursor="pointer";mxUtils.write(d,a);mxEvent.addListener(d,"click",b);e&&(d.style.textDecoration="underline");null!=c&&(a=k.cloneNode(),a.style.padding=c,a.appendChild(d),d=a);return d}),u=mxUtils.bind(this,function(a){var d=document.createElement("div");d.style.marginBottom="8px";d.appendChild(p(b+"/"+c,mxUtils.bind(this,function(){f=null;B()}),null,!0));a||(mxUtils.write(d," / "),d.appendChild(p(decodeURIComponent(g),
-mxUtils.bind(this,function(){f=null;x()}),null,!0)));if(null!=f&&0<f.length){var k=f.split("/");for(a=0;a<k.length;a++)(function(a){mxUtils.write(d," / ");d.appendChild(p(k[a],mxUtils.bind(this,function(){f=k.slice(0,a+1).join("/");y()}),null,!0))})(a)}e.appendChild(d)}),t=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(f=g=c=b=null,B()):this.ui.hideDialog()}))}),q=null,v=null,y=mxUtils.bind(this,function(m){null==
-m&&(e.innerHTML="",m=1);var n=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(b+"/"+c)+"/repository/tree?path="+f+"&ref="+g+"&per_page=100&page="+m,null,"GET");this.ui.spinner.spin(e,mxResources.get("loading"));l.okButton.removeAttribute("disabled");null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");
-var z=mxUtils.bind(this,function(){y(m+1)});mxEvent.addListener(q,"click",z);this.executeRequest(n,mxUtils.bind(this,function(l){this.ui.spinner.stop();1==m&&(u(!g),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){if(""==f)f=null,B();else{var a=f.split("/");f=a.slice(0,a.length-1).join("/");y()}}),"4px")));var n=JSON.parse(l.getText());if(null==n||0==n.length)mxUtils.write(e,mxResources.get("noFiles"));else{var A=!0,t=0;l=mxUtils.bind(this,function(m){for(var l=0;l<n.length;l++)mxUtils.bind(this,
-function(l){if(m==("tree"==l.type)){var n=k.cloneNode();n.style.backgroundColor=A?"dark"==uiTheme?"#000000":"#eeeeee":"";A=!A;var z=document.createElement("img");z.src=IMAGE_PATH+"/"+("tree"==l.type?"folder.png":"file.png");z.setAttribute("align","absmiddle");z.style.marginRight="4px";z.style.marginTop="-4px";z.width=20;n.appendChild(z);n.appendChild(p(l.name+("tree"==l.type?"/":""),mxUtils.bind(this,function(){"tree"==l.type?(f=l.path,y()):a&&"blob"==l.type&&(this.ui.hideDialog(),d(b+"/"+c+"/"+g+
-"/"+l.path))})));e.appendChild(n);t++}})(n[l])});l(!0);a&&l(!1);100==t&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&z()},mxEvent.addListener(e,"scroll",v))}}),t,!0)}),x=mxUtils.bind(this,function(a,d){null==a&&(e.innerHTML="",a=1);var m=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(b+"/"+c)+"/repository/branches?per_page=100&page="+a,null,"GET");l.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(e,mxResources.get("loading"));null!=v&&
-(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var n=mxUtils.bind(this,function(){x(a+1)});mxEvent.addListener(q,"click",n);this.executeRequest(m,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(u(!0),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){f=null;B()}),"4px")));b=JSON.parse(b.getText());if(null==
-b||0==b.length)mxUtils.write(e,mxResources.get("noFiles"));else if(1==b.length&&d)g=b[0].name,f="",y();else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=k.cloneNode();c.style.backgroundColor=0==b%2?"dark"==uiTheme?"#000000":"#eeeeee":"";c.appendChild(p(a.name,mxUtils.bind(this,function(){g=encodeURIComponent(a.name);f="";y()})));e.appendChild(c)})(b[c],c);100==b.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&n()},mxEvent.addListener(e,"scroll",
-v))}}),t)});l.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(e,mxResources.get("loading"));var B=mxUtils.bind(this,function(a){this.ui.spinner.stop();null==a&&(e.innerHTML="",a=1);null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var d=mxUtils.bind(this,function(){B(a+1)});mxEvent.addListener(q,
-"click",d);var m=mxUtils.bind(this,function(a){this.ui.spinner.spin(e,mxResources.get("loading"));var b=new mxXmlRequest(this.baseUrl+"/groups?per_page=100",null,"GET");this.executeRequest(b,mxUtils.bind(this,function(b){this.ui.spinner.stop();a(JSON.parse(b.getText()))}),t)}),l=mxUtils.bind(this,function(a,b){this.ui.spinner.spin(e,mxResources.get("loading"));var c=new mxXmlRequest(this.baseUrl+"/groups/"+a.id+"/projects?per_page=100",null,"GET");this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();
-b(a,JSON.parse(c.getText()))}),t)});m(mxUtils.bind(this,function(m){var n=new mxXmlRequest(this.baseUrl+"/users/"+this.user.id+"/projects?per_page=100&page="+a,null,"GET");this.ui.spinner.spin(e,mxResources.get("loading"));this.executeRequest(n,mxUtils.bind(this,function(n){this.ui.spinner.stop();n=JSON.parse(n.getText());if(null!=n&&0!=n.length||null!=m&&0!=m.length){1==a&&(e.appendChild(p(mxResources.get("enterValue")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,"org/repo/ref",
+mxUtils.bind(this,function(){f=null;x()}),null,!0)));if(null!=f&&0<f.length){var k=f.split("/");for(a=0;a<k.length;a++)(function(a){mxUtils.write(d," / ");d.appendChild(p(k[a],mxUtils.bind(this,function(){f=k.slice(0,a+1).join("/");y()}),null,!0))})(a)}e.appendChild(d)}),t=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(f=g=c=b=null,B()):this.ui.hideDialog()}))}),q=null,v=null,y=mxUtils.bind(this,function(l){null==
+l&&(e.innerHTML="",l=1);var m=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(b+"/"+c)+"/repository/tree?path="+f+"&ref="+g+"&per_page=100&page="+l,null,"GET");this.ui.spinner.spin(e,mxResources.get("loading"));n.okButton.removeAttribute("disabled");null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");
+var z=mxUtils.bind(this,function(){y(l+1)});mxEvent.addListener(q,"click",z);this.executeRequest(m,mxUtils.bind(this,function(m){this.ui.spinner.stop();1==l&&(u(!g),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){if(""==f)f=null,B();else{var a=f.split("/");f=a.slice(0,a.length-1).join("/");y()}}),"4px")));var n=JSON.parse(m.getText());if(null==n||0==n.length)mxUtils.write(e,mxResources.get("noFiles"));else{var A=!0,t=0;m=mxUtils.bind(this,function(l){for(var m=0;m<n.length;m++)mxUtils.bind(this,
+function(m){if(l==("tree"==m.type)){var n=k.cloneNode();n.style.backgroundColor=A?"dark"==uiTheme?"#000000":"#eeeeee":"";A=!A;var z=document.createElement("img");z.src=IMAGE_PATH+"/"+("tree"==m.type?"folder.png":"file.png");z.setAttribute("align","absmiddle");z.style.marginRight="4px";z.style.marginTop="-4px";z.width=20;n.appendChild(z);n.appendChild(p(m.name+("tree"==m.type?"/":""),mxUtils.bind(this,function(){"tree"==m.type?(f=m.path,y()):a&&"blob"==m.type&&(this.ui.hideDialog(),d(b+"/"+c+"/"+g+
+"/"+m.path))})));e.appendChild(n);t++}})(n[m])});m(!0);a&&m(!1);100==t&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&z()},mxEvent.addListener(e,"scroll",v))}}),t,!0)}),x=mxUtils.bind(this,function(a,d){null==a&&(e.innerHTML="",a=1);var l=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(b+"/"+c)+"/repository/branches?per_page=100&page="+a,null,"GET");n.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(e,mxResources.get("loading"));null!=v&&
+(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var m=mxUtils.bind(this,function(){x(a+1)});mxEvent.addListener(q,"click",m);this.executeRequest(l,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(u(!0),e.appendChild(p("../ [Up]",mxUtils.bind(this,function(){f=null;B()}),"4px")));b=JSON.parse(b.getText());if(null==
+b||0==b.length)mxUtils.write(e,mxResources.get("noFiles"));else if(1==b.length&&d)g=b[0].name,f="",y();else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=k.cloneNode();c.style.backgroundColor=0==b%2?"dark"==uiTheme?"#000000":"#eeeeee":"";c.appendChild(p(a.name,mxUtils.bind(this,function(){g=encodeURIComponent(a.name);f="";y()})));e.appendChild(c)})(b[c],c);100==b.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&m()},mxEvent.addListener(e,"scroll",
+v))}}),t)});n.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(e,mxResources.get("loading"));var B=mxUtils.bind(this,function(a){this.ui.spinner.stop();null==a&&(e.innerHTML="",a=1);null!=v&&(mxEvent.removeListener(e,"scroll",v),v=null);null!=q&&null!=q.parentNode&&q.parentNode.removeChild(q);q=document.createElement("a");q.style.display="block";q.style.cursor="pointer";mxUtils.write(q,mxResources.get("more")+"...");var d=mxUtils.bind(this,function(){B(a+1)});mxEvent.addListener(q,
+"click",d);var l=mxUtils.bind(this,function(a){this.ui.spinner.spin(e,mxResources.get("loading"));var b=new mxXmlRequest(this.baseUrl+"/groups?per_page=100",null,"GET");this.executeRequest(b,mxUtils.bind(this,function(b){this.ui.spinner.stop();a(JSON.parse(b.getText()))}),t)}),m=mxUtils.bind(this,function(a,b){this.ui.spinner.spin(e,mxResources.get("loading"));var c=new mxXmlRequest(this.baseUrl+"/groups/"+a.id+"/projects?per_page=100",null,"GET");this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();
+b(a,JSON.parse(c.getText()))}),t)});l(mxUtils.bind(this,function(l){var n=new mxXmlRequest(this.baseUrl+"/users/"+this.user.id+"/projects?per_page=100&page="+a,null,"GET");this.ui.spinner.spin(e,mxResources.get("loading"));this.executeRequest(n,mxUtils.bind(this,function(n){this.ui.spinner.stop();n=JSON.parse(n.getText());if(null!=n&&0!=n.length||null!=l&&0!=l.length){1==a&&(e.appendChild(p(mxResources.get("enterValue")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,"org/repo/ref",
mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(a=a.split("/"),1<a.length?(b=a[0],c=a[1],g=f=null,2<a.length?(g=encodeURIComponent(a.slice(2,a.length).join("/")),y()):x(null,!0)):(this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})))}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(e),mxUtils.br(e));for(var z=0;z<n.length;z++)mxUtils.bind(this,function(a,d){var g=k.cloneNode();g.style.backgroundColor=
-0==d%2?"dark"==uiTheme?"#000000":"#eeeeee":"";g.appendChild(p(a.name_with_namespace,mxUtils.bind(this,function(){b=a.owner.username;c=a.path;f="";x(null,!0)})));e.appendChild(g)})(n[z],z);for(z=0;z<m.length;z++)l(m[z],mxUtils.bind(this,function(a,d){for(var g=0;g<d.length;g++){var m=k.cloneNode();m.style.backgroundColor=0==idx%2?"dark"==uiTheme?"#000000":"#eeeeee":"";mxUtils.bind(this,function(d){m.appendChild(p(d.name_with_namespace,mxUtils.bind(this,function(){b=a.full_path;c=d.path;f="";x(null,
-!0)})));e.appendChild(m)})(d[g])}}))}else mxUtils.write(e,mxResources.get("noFiles"));100==n.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&d()},mxEvent.addListener(e,"scroll",v))}),t)}))});this.token?this.user?B():this.updateUser(function(){B()},t,!0):this.authenticate(mxUtils.bind(this,function(){this.updateUser(function(){B()},t,!0)}),t)};GitLabClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};DrawioComment=function(a,d,b,c,g,f,m){this.file=a;this.id=d;this.content=b;this.modifiedDate=c;this.createdDate=g;this.isResolved=f;this.user=m;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,d,b,c,g){d()};DrawioComment.prototype.editComment=function(a,d,b){d()};DrawioComment.prototype.deleteComment=function(a,d){a()};DriveComment=function(a,d,b,c,g,f,m,n){DrawioComment.call(this,a,d,b,c,g,f,m);this.pCommentId=n};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(a,d,b,c,g){a={content:a.content};c?a.verb="resolve":g&&(a.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:a,method:"POST"},mxUtils.bind(this,function(a){d(a.replyId)}),b)};
+0==d%2?"dark"==uiTheme?"#000000":"#eeeeee":"";g.appendChild(p(a.name_with_namespace,mxUtils.bind(this,function(){b=a.owner.username;c=a.path;f="";x(null,!0)})));e.appendChild(g)})(n[z],z);for(z=0;z<l.length;z++)m(l[z],mxUtils.bind(this,function(a,d){for(var g=0;g<d.length;g++){var l=k.cloneNode();l.style.backgroundColor=0==idx%2?"dark"==uiTheme?"#000000":"#eeeeee":"";mxUtils.bind(this,function(d){l.appendChild(p(d.name_with_namespace,mxUtils.bind(this,function(){b=a.full_path;c=d.path;f="";x(null,
+!0)})));e.appendChild(l)})(d[g])}}))}else mxUtils.write(e,mxResources.get("noFiles"));100==n.length&&(e.appendChild(q),v=function(){e.scrollTop>=e.scrollHeight-e.offsetHeight&&d()},mxEvent.addListener(e,"scroll",v))}),t)}))});this.token?this.user?B():this.updateUser(function(){B()},t,!0):this.authenticate(mxUtils.bind(this,function(){this.updateUser(function(){B()},t,!0)}),t)};GitLabClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};DrawioComment=function(a,d,b,c,g,f,l){this.file=a;this.id=d;this.content=b;this.modifiedDate=c;this.createdDate=g;this.isResolved=f;this.user=l;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,d,b,c,g){d()};DrawioComment.prototype.editComment=function(a,d,b){d()};DrawioComment.prototype.deleteComment=function(a,d){a()};DriveComment=function(a,d,b,c,g,f,l,m){DrawioComment.call(this,a,d,b,c,g,f,l);this.pCommentId=m};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(a,d,b,c,g){a={content:a.content};c?a.verb="resolve":g&&(a.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:a,method:"POST"},mxUtils.bind(this,function(a){d(a.replyId)}),b)};
DriveComment.prototype.editComment=function(a,d,b){this.content=a;a={content:a};this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,params:a,method:"PATCH"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,params:a,method:"PATCH"},d,b)};
DriveComment.prototype.deleteComment=function(a,d){this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,method:"DELETE"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,method:"DELETE"},a,d)};App=function(a,d,b){EditorUi.call(this,a,d,null!=b?b:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.isModified()){var b={category:"DISCARD-FILE-"+a.getHash(),action:(a.savingFile?"saving":"")+(a.savingFile&&null!=a.savingFileTime?"_"+Math.round((Date.now()-a.savingFileTime.getTime())/1E3):"")+(null!=a.saveLevel?"-sl_"+a.saveLevel:"")+"-age_"+(null!=
a.ageStart?Math.round((Date.now()-a.ageStart.getTime())/1E3):"x")+(this.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+"-open_"+(null!=a.opened?Math.round((Date.now()-a.opened.getTime())/1E3):"x")+"-save_"+(null!=a.lastSaved?Math.round((Date.now()-a.lastSaved.getTime())/1E3):"x")+"-change_"+(null!=a.lastChanged?Math.round((Date.now()-a.lastChanged.getTime())/1E3):"x")+"-alive_"+Math.round((Date.now()-App.startTime.getTime())/1E3),label:null!=a.sync?"client_"+a.sync.clientId:"nosync"};
a.constructor==DriveFile&&null!=a.desc&&null!=this.drive&&(b.label+=(null!=this.drive.user?"-user_"+this.drive.user.id:"-nouser")+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType);EditorUi.logEvent(b)}}));this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&EditorUi.logEvent({category:(this.editor.autosave?"ON":"OFF")+"-AUTOSAVE-FILE-"+a.getHash(),action:"changed",label:"autosave_"+(this.editor.autosave?
"on":"off")})}));mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=":
-(new Image).src=mxGraph.prototype.warningImage.src;window.openWindow=mxUtils.bind(this,function(a,b,d){if("1"==urlParams.openInSameWin)d();else{var c=null;try{c=window.open(a)}catch(n){}null==c||void 0===c?this.showDialog((new PopupDialog(this,a,b,d)).container,320,140,!0,!0):null!=b&&b()}});this.updateDocumentTitle();this.updateUi();window.showOpenAlert=mxUtils.bind(this,function(a){null!=window.openFile&&window.openFile.cancel(!0);this.handleError(a)});this.editor.chromeless&&!this.editor.editable||
+(new Image).src=mxGraph.prototype.warningImage.src;window.openWindow=mxUtils.bind(this,function(a,b,d){if("1"==urlParams.openInSameWin)d();else{var c=null;try{c=window.open(a)}catch(m){}null==c||void 0===c?this.showDialog((new PopupDialog(this,a,b,d)).container,320,140,!0,!0):null!=b&&b()}});this.updateDocumentTitle();this.updateUi();window.showOpenAlert=mxUtils.bind(this,function(a){null!=window.openFile&&window.openFile.cancel(!0);this.handleError(a)});this.editor.chromeless&&!this.editor.editable||
this.addFileDropHandler([document]);if(null!=App.DrawPlugins){for(a=0;a<App.DrawPlugins.length;a++)try{App.DrawPlugins[a](this)}catch(c){null!=window.console&&console.log("Plugin Error:",c,App.DrawPlugins[a])}finally{App.embedModePluginsCount--,this.initializeEmbedMode()}window.Draw.loadPlugin=mxUtils.bind(this,function(a){try{a(this)}finally{App.embedModePluginsCount--,this.initializeEmbedMode()}});setTimeout(mxUtils.bind(this,function(){0<App.embedModePluginsCount&&(App.embedModePluginsCount=0,
this.initializeEmbedMode())}),5E3)}this.load()};App.ERROR_TIMEOUT="timeout";App.ERROR_BUSY="busy";App.ERROR_UNKNOWN="unknown";App.MODE_GOOGLE="google";App.MODE_DROPBOX="dropbox";App.MODE_ONEDRIVE="onedrive";App.MODE_GITHUB="github";App.MODE_GITLAB="gitlab";App.MODE_DEVICE="device";App.MODE_BROWSER="browser";App.MODE_TRELLO="trello";App.MODE_EMBED="embed";App.DROPBOX_APPKEY="libwls2fa9szdji";App.DROPBOX_URL=window.DRAWIO_BASE_URL+"/js/dropbox/Dropbox-sdk.min.js";App.DROPINS_URL="https://www.dropbox.com/static/api/2/dropins.js";
App.ONEDRIVE_URL=mxClient.IS_IE11?"https://js.live.net/v7.2/OneDrive.js":window.DRAWIO_BASE_URL+"/js/onedrive/OneDrive.js";App.ONEDRIVE_INLINE_PICKER_URL=window.DRAWIO_BASE_URL+"/js/onedrive/mxODPicker.js";App.TRELLO_URL="https://api.trello.com/1/client.js";App.TRELLO_JQUERY_URL="https://code.jquery.com/jquery-1.7.1.min.js";App.PUSHER_KEY="1e756b07a690c5bdb054";App.PUSHER_CLUSTER="eu";App.PUSHER_URL="https://js.pusher.com/4.3/pusher.min.js";App.GOOGLE_APIS="drive-share";App.startTime=new Date;
@@ -10885,12 +10885,12 @@ null!=a&&(a.innerHTML="Error loading page. <a>Please try refreshing.</a>",a.getE
a)}null!=mxSettings.settings.defaultEdgeLength&&(a=parseInt(mxSettings.settings.defaultEdgeLength),!isNaN(a)&&0<a?(Graph.prototype.defaultEdgeLength=a,EditorUi.debug("Using defaultEdgeLength",a)):EditorUi.debug("Invalid defaultEdgeLength",a))}}catch(p){null!=window.console&&console.error(p)}mxResources.loadDefaultBundle=!1;b(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(a,b,c,e,d){EditorUi.logError("Global: "+
(null!=a?a:""),b,c,e,d,null,!0)};if("1"==urlParams.embed||"1"==urlParams.lightbox){var g=document.getElementById("geInfo");null!=g&&g.parentNode.removeChild(g)}null!=document.referrer&&"aws3"==urlParams.libs&&"https://aws.amazon.com/architecture/icons/"==document.referrer.substring(0,42)&&(urlParams.libs="aws4");if(null!=window.mxscript){if("1"==urlParams.dev&&null!=CryptoJS&&"trello"!=urlParams.mode){g=document.getElementsByTagName("script");if(null!=g&&0<g.length){var f=mxUtils.getTextContent(g[0]);
"f13d3aba97e718436f2562cef8787e06"!=CryptoJS.MD5(f).toString()&&(console.log("Change bootstrap script MD5 in the previous line:",CryptoJS.MD5(f).toString()),alert("[Dev] Bootstrap script change requires update of CSP"))}null!=g&&1<g.length&&(f=mxUtils.getTextContent(g[g.length-1]),"d53805dd6f0bbba2da4966491ca0a505"!=CryptoJS.MD5(f).toString()&&(console.log("Change main script MD5 in the previous line:",CryptoJS.MD5(f).toString()),alert("[Dev] Main script change requires update of CSP")))}try{Editor.enableServiceWorker&&
-("0"==urlParams.offline||/www\.draw\.io$/.test(window.location.hostname)||"1"!=urlParams.offline&&"1"==urlParams.dev)?App.clearServiceWorker(function(){"0"==urlParams.offline&&alert("Cache cleared")}):Editor.enableServiceWorker&&navigator.serviceWorker.register("/service-worker.js")}catch(l){null!=window.console&&console.error(l)}!("ArrayBuffer"in window)||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||"1"==urlParams.embed&&"1"!=urlParams.embedRT||"1"==urlParams.local||"0"==
-urlParams.chrome&&"1"!=urlParams.rt||"1"==urlParams.stealth||"1"==urlParams.offline||mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){g=null!=mxSettings.settings?mxSettings.getPlugins():null;if(null==mxSettings.settings&&isLocalStorage&&"undefined"!==typeof JSON)try{var m=JSON.parse(localStorage.getItem(mxSettings.key));null!=m&&(g=m.plugins)}catch(l){}m=urlParams.p;App.initPluginCallback();null!=m&&App.loadPlugins(m.split(";"));if(null!=g&&0<g.length&&"0"!=urlParams.plugins){for(var m=
-window.location.protocol+"//"+window.location.host,f=!0,n=0;n<g.length&&f;n++)"/"!=g[n].charAt(0)&&g[n].substring(0,m.length)!=m&&(f=!1);if(f||mxUtils.confirm(mxResources.replacePlaceholders("The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n",[g.join("\n")]).replace(/\\n/g,"\n")))for(n=0;n<g.length;n++)try{null==App.pluginsLoaded[g[n]]&&
-(App.pluginsLoaded[g[n]]=!0,App.embedModePluginsCount++,"/"==g[n].charAt(0)&&(g[n]=PLUGINS_BASE_PATH+g[n]),mxscript(g[n]))}catch(l){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&
+("0"==urlParams.offline||/www\.draw\.io$/.test(window.location.hostname)||"1"!=urlParams.offline&&"1"==urlParams.dev)?App.clearServiceWorker(function(){"0"==urlParams.offline&&alert("Cache cleared")}):Editor.enableServiceWorker&&navigator.serviceWorker.register("/service-worker.js")}catch(n){null!=window.console&&console.error(n)}!("ArrayBuffer"in window)||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||"1"==urlParams.embed&&"1"!=urlParams.embedRT||"1"==urlParams.local||"0"==
+urlParams.chrome&&"1"!=urlParams.rt||"1"==urlParams.stealth||"1"==urlParams.offline||mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){g=null!=mxSettings.settings?mxSettings.getPlugins():null;if(null==mxSettings.settings&&isLocalStorage&&"undefined"!==typeof JSON)try{var l=JSON.parse(localStorage.getItem(mxSettings.key));null!=l&&(g=l.plugins)}catch(n){}l=urlParams.p;App.initPluginCallback();null!=l&&App.loadPlugins(l.split(";"));if(null!=g&&0<g.length&&"0"!=urlParams.plugins){for(var l=
+window.location.protocol+"//"+window.location.host,f=!0,m=0;m<g.length&&f;m++)"/"!=g[m].charAt(0)&&g[m].substring(0,l.length)!=l&&(f=!1);if(f||mxUtils.confirm(mxResources.replacePlaceholders("The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n",[g.join("\n")]).replace(/\\n/g,"\n")))for(m=0;m<g.length;m++)try{null==App.pluginsLoaded[g[m]]&&
+(App.pluginsLoaded[g[m]]=!0,App.embedModePluginsCount++,"/"==g[m].charAt(0)&&(g[m]=PLUGINS_BASE_PATH+g[m]),mxscript(g[m]))}catch(n){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&
(window.DriveClient=null)}"0"!=urlParams.math&&Editor.initMath();if("1"==urlParams.configure){var e=window.opener||window.parent,k=function(a){if(a.source==e)try{var b=JSON.parse(a.data);null!=b&&"configure"==b.action&&(mxEvent.removeListener(window,"message",k),Editor.configure(b.config,!0),mxSettings.load(),c())}catch(u){null!=window.console&&console.log("Error in configure message: "+u,a.data)}};mxEvent.addListener(window,"message",k);e.postMessage(JSON.stringify({event:"configure"}),"*")}else{if(null==
-Editor.config){if(null!=window.DRAWIO_CONFIG)try{EditorUi.debug("Using global configuration",window.DRAWIO_CONFIG),Editor.configure(window.DRAWIO_CONFIG),mxSettings.load()}catch(l){null!=window.console&&console.error(l)}if(isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&(g=localStorage.getItem(".configuration"),null!=g))try{g=JSON.parse(g),null!=g&&(EditorUi.debug("Using local configuration",g),Editor.configure(g),mxSettings.load())}catch(l){null!=window.console&&console.error(l)}}c()}};
+Editor.config){if(null!=window.DRAWIO_CONFIG)try{EditorUi.debug("Using global configuration",window.DRAWIO_CONFIG),Editor.configure(window.DRAWIO_CONFIG),mxSettings.load()}catch(n){null!=window.console&&console.error(n)}if(isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&(g=localStorage.getItem(".configuration"),null!=g))try{g=JSON.parse(g),null!=g&&(EditorUi.debug("Using local configuration",g),Editor.configure(g),mxSettings.load())}catch(n){null!=window.console&&console.error(n)}}c()}};
mxUtils.extend(App,EditorUi);App.prototype.defaultUserPicture="https://lh3.googleusercontent.com/-HIzvXUy6QUY/AAAAAAAAAAI/AAAAAAAAAAA/giuR7PQyjEk/photo.jpg?sz=64";App.prototype.shareImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOTgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMjU2NzdEMTcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMjU2NzdEMDcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNjgwMTE3NDA3MjA2ODExODcxRkM4MUY1OTFDMjQ5OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrM/fs0AAADgSURBVHjaYmDAA/7//88MwgzkAKDGFiD+BsQ/QWxSNaf9RwN37twpI8WAS+gGfP78+RpQSoRYA36iG/D379+vQClNdLVMOMz4gi7w79+/n0CKg1gD9qELvH379hzIHGK9oA508ieY8//8+fO5rq4uFCilRKwL1JmYmNhhHEZGRiZ+fn6Q2meEbDYG4u3/cYCfP38uA7kOm0ZOIJ7zn0jw48ePPiDFhmzArv8kgi9fvuwB+w5qwH9ykjswbFSZyM4sEMDPBDTlL5BxkFSd7969OwZ2BZKYGhDzkmjOJ4AAAwBhpRqGnEFb8QAAAABJRU5ErkJggg==";
App.prototype.chevronUpImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDg2NEE3NUY1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDg2NEE3NjA1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ODY0QTc1RDUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0ODY0QTc1RTUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg+qUokAAAAMUExURQAAANnZ2b+/v////5bgre4AAAAEdFJOU////wBAKqn0AAAAL0lEQVR42mJgRgMMRAswMKAKMDDARBjg8lARBoR6KImkH0wTbygT6YaS4DmAAAMAYPkClOEDDD0AAAAASUVORK5CYII=":
IMAGE_PATH+"/chevron-up.png";
@@ -10930,20 +10930,20 @@ b.setAttribute("border","0");b.setAttribute("align","absmiddle");b.setAttribute(
a.appendChild(b);var c=document.createElement("img");c.setAttribute("border","0");c.setAttribute("align","absmiddle");c.setAttribute("title","2 star");c.setAttribute("style","margin-top:-6px;margin-left:3px;cursor:pointer;");c.setAttribute("src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAQRdEVYdFhNTDpjb20uYWRvYmUueG1wADw/eHBhY2tldCBiZWdpbj0iICAgIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMS1jMDM0IDQ2LjI3Mjk3NiwgU2F0IEphbiAyNyAyMDA3IDIyOjExOjQxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0b3JUb29sPkFkb2JlIEZpcmV3b3JrcyBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDItMTdUMDI6MzY6NDVaPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhhcDpNb2RpZnlEYXRlPjIwMDktMDMtMTdUMTQ6MTI6MDJaPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIIImu8AAAAAVdEVYdENyZWF0aW9uIFRpbWUAMi8xNy8wOCCcqlgAAAHuSURBVDiNlZJBi1JRGIbfk+fc0ZuMXorJe4XujWoMdREaA23HICj6AQeLINr0C4I27ab27VqOI9+q/sH8gMDceG1RkIwgClEXFMbRc5zTZgZURmG+5fu9PN/7Hg6wZohoh4h21nn4uqXW+q0xZgzg+SrPlTXX73uet+26bp6ICpcGaK1fua57M5vN3tZav7gUgIiSqVTqcRAEm0EQbCaTyQoRXb3Iy4hoG8CT6XSaY4xtMMaSQohMPp8v+r7vAEC3243CMGwqpfoApsaYE8uyfgM45ABOjDEvXdfNlMvlzFINAIDneY7neZVzvdlsDgaDQYtzfsjOIjtKqU+e5+0Wi0V3VV8ACMOw3+/3v3HOX0sp/7K53te11h/S6fRuoVAIhBAL76OUOm2320dRFH0VQuxJKf8BAFu+UKvVvpRKpWe2bYt5fTweq0ajQUKIN1LK43N94SMR0Y1YLLYlhBBKqQUw51wkEol7WmuzoC8FuJtIJLaUUoii6Ljb7f4yxpz6vp9zHMe2bfvacDi8BeDHKkBuNps5rVbr52QyaVuW9ZExttHpdN73ej0/Ho+nADxYCdBaV0aj0RGAz5ZlHUgpx2erR/V6/d1wOHwK4CGA/QsBnPN9AN+llH+WkqFare4R0QGAO/M6M8Ysey81/wGqa8MlVvHPNAAAAABJRU5ErkJggg==");
a.appendChild(c);var g=document.createElement("img");g.setAttribute("border","0");g.setAttribute("align","absmiddle");g.setAttribute("title","3 star");g.setAttribute("style","margin-top:-6px;margin-left:3px;cursor:pointer;");g.setAttribute("src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAQRdEVYdFhNTDpjb20uYWRvYmUueG1wADw/eHBhY2tldCBiZWdpbj0iICAgIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMS1jMDM0IDQ2LjI3Mjk3NiwgU2F0IEphbiAyNyAyMDA3IDIyOjExOjQxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0b3JUb29sPkFkb2JlIEZpcmV3b3JrcyBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDItMTdUMDI6MzY6NDVaPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhhcDpNb2RpZnlEYXRlPjIwMDktMDMtMTdUMTQ6MTI6MDJaPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIIImu8AAAAAVdEVYdENyZWF0aW9uIFRpbWUAMi8xNy8wOCCcqlgAAAHuSURBVDiNlZJBi1JRGIbfk+fc0ZuMXorJe4XujWoMdREaA23HICj6AQeLINr0C4I27ab27VqOI9+q/sH8gMDceG1RkIwgClEXFMbRc5zTZgZURmG+5fu9PN/7Hg6wZohoh4h21nn4uqXW+q0xZgzg+SrPlTXX73uet+26bp6ICpcGaK1fua57M5vN3tZav7gUgIiSqVTqcRAEm0EQbCaTyQoRXb3Iy4hoG8CT6XSaY4xtMMaSQohMPp8v+r7vAEC3243CMGwqpfoApsaYE8uyfgM45ABOjDEvXdfNlMvlzFINAIDneY7neZVzvdlsDgaDQYtzfsjOIjtKqU+e5+0Wi0V3VV8ACMOw3+/3v3HOX0sp/7K53te11h/S6fRuoVAIhBAL76OUOm2320dRFH0VQuxJKf8BAFu+UKvVvpRKpWe2bYt5fTweq0ajQUKIN1LK43N94SMR0Y1YLLYlhBBKqQUw51wkEol7WmuzoC8FuJtIJLaUUoii6Ljb7f4yxpz6vp9zHMe2bfvacDi8BeDHKkBuNps5rVbr52QyaVuW9ZExttHpdN73ej0/Ho+nADxYCdBaV0aj0RGAz5ZlHUgpx2erR/V6/d1wOHwK4CGA/QsBnPN9AN+llH+WkqFare4R0QGAO/M6M8Ysey81/wGqa8MlVvHPNAAAAABJRU5ErkJggg==");
a.appendChild(g);var f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.setAttribute("title","4 star");f.setAttribute("style","margin-top:-6px;margin-left:3px;cursor:pointer;");f.setAttribute("src","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAQRdEVYdFhNTDpjb20uYWRvYmUueG1wADw/eHBhY2tldCBiZWdpbj0iICAgIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMS1jMDM0IDQ2LjI3Mjk3NiwgU2F0IEphbiAyNyAyMDA3IDIyOjExOjQxICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0b3JUb29sPkFkb2JlIEZpcmV3b3JrcyBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDgtMDItMTdUMDI6MzY6NDVaPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhhcDpNb2RpZnlEYXRlPjIwMDktMDMtMTdUMTQ6MTI6MDJaPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIIImu8AAAAAVdEVYdENyZWF0aW9uIFRpbWUAMi8xNy8wOCCcqlgAAAHuSURBVDiNlZJBi1JRGIbfk+fc0ZuMXorJe4XujWoMdREaA23HICj6AQeLINr0C4I27ab27VqOI9+q/sH8gMDceG1RkIwgClEXFMbRc5zTZgZURmG+5fu9PN/7Hg6wZohoh4h21nn4uqXW+q0xZgzg+SrPlTXX73uet+26bp6ICpcGaK1fua57M5vN3tZav7gUgIiSqVTqcRAEm0EQbCaTyQoRXb3Iy4hoG8CT6XSaY4xtMMaSQohMPp8v+r7vAEC3243CMGwqpfoApsaYE8uyfgM45ABOjDEvXdfNlMvlzFINAIDneY7neZVzvdlsDgaDQYtzfsjOIjtKqU+e5+0Wi0V3VV8ACMOw3+/3v3HOX0sp/7K53te11h/S6fRuoVAIhBAL76OUOm2320dRFH0VQuxJKf8BAFu+UKvVvpRKpWe2bYt5fTweq0ajQUKIN1LK43N94SMR0Y1YLLYlhBBKqQUw51wkEol7WmuzoC8FuJtIJLaUUoii6Ljb7f4yxpz6vp9zHMe2bfvacDi8BeDHKkBuNps5rVbr52QyaVuW9ZExttHpdN73ej0/Ho+nADxYCdBaV0aj0RGAz5ZlHUgpx2erR/V6/d1wOHwK4CGA/QsBnPN9AN+llH+WkqFare4R0QGAO/M6M8Ysey81/wGqa8MlVvHPNAAAAABJRU5ErkJggg==");
-a.appendChild(f);this.bannerShowing=!0;var m=mxUtils.bind(this,function(){null!=a.parentNode&&(a.parentNode.removeChild(a),this.bannerShowing=!1,this.hideBannerratingFooter=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings.closeratingFooter=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);m()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);m()}));mxEvent.addListener(c,"click",mxUtils.bind(this,
-function(a){mxEvent.consume(a);m()}));mxEvent.addListener(g,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);m()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);window.open("https://marketplace.atlassian.com/apps/1210933/draw-io-diagrams-for-confluence?hosting=datacenter&tab=reviews");m()}));d=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(a.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){m()}),1E3)});window.setTimeout(mxUtils.bind(this,
+a.appendChild(f);this.bannerShowing=!0;var l=mxUtils.bind(this,function(){null!=a.parentNode&&(a.parentNode.removeChild(a),this.bannerShowing=!1,this.hideBannerratingFooter=!0,isLocalStorage&&null!=mxSettings.settings&&(mxSettings.settings.closeratingFooter=Date.now(),mxSettings.save()))});mxEvent.addListener(d,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);l()}));mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);l()}));mxEvent.addListener(c,"click",mxUtils.bind(this,
+function(a){mxEvent.consume(a);l()}));mxEvent.addListener(g,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);l()}));mxEvent.addListener(f,"click",mxUtils.bind(this,function(a){mxEvent.consume(a);window.open("https://marketplace.atlassian.com/apps/1210933/draw-io-diagrams-for-confluence?hosting=datacenter&tab=reviews");l()}));d=mxUtils.bind(this,function(){mxUtils.setPrefixedStyle(a.style,"transform","translate(-50%,120%)");window.setTimeout(mxUtils.bind(this,function(){l()}),1E3)});window.setTimeout(mxUtils.bind(this,
function(){mxUtils.setPrefixedStyle(a.style,"transform","translate(-50%,0%)")}),500);window.setTimeout(d,6E4)}};
App.prototype.checkLicense=function(){var a=this.drive.getUser(),d=("1"==urlParams.dev?urlParams.lic:null)||(null!=a?a.email:null);if(!this.isOffline()&&!this.editor.chromeless&&null!=d){var b=d.lastIndexOf("@"),c=d;0<=b&&(c=d.substring(b+1),d=Editor.crc32(d.substring(0,b))+"@"+c);mxUtils.post("/license","domain="+encodeURIComponent(c)+"&email="+encodeURIComponent(d)+"&lc="+encodeURIComponent(a.locale)+"&ts="+(new Date).getTime(),mxUtils.bind(this,function(a){try{if(200<=a.getStatus()&&299>=a.getStatus()){var b=
-a.getText();if(0<b.length){var d=JSON.parse(b);null!=d&&this.handleLicense(d,c)}}}catch(n){}}))}};App.prototype.handleLicense=function(a,d){null!=a&&null!=a.plugins&&App.loadPlugins(a.plugins.split(";"),!0)};App.prototype.getEditBlankXml=function(){var a=this.getCurrentFile();return null!=a&&this.editor.isChromelessView()&&this.editor.graph.isLightboxView()?a.getData():this.getFileData(!0)};App.prototype.updateActionStates=function(){EditorUi.prototype.updateActionStates.apply(this,arguments);this.actions.get("revisionHistory").setEnabled(this.isRevisionHistoryEnabled())};
+a.getText();if(0<b.length){var d=JSON.parse(b);null!=d&&this.handleLicense(d,c)}}}catch(m){}}))}};App.prototype.handleLicense=function(a,d){null!=a&&null!=a.plugins&&App.loadPlugins(a.plugins.split(";"),!0)};App.prototype.getEditBlankXml=function(){var a=this.getCurrentFile();return null!=a&&this.editor.isChromelessView()&&this.editor.graph.isLightboxView()?a.getData():this.getFileData(!0)};App.prototype.updateActionStates=function(){EditorUi.prototype.updateActionStates.apply(this,arguments);this.actions.get("revisionHistory").setEnabled(this.isRevisionHistoryEnabled())};
App.prototype.addRecent=function(a){if(isLocalStorage&&null!=localStorage){var d=this.getRecent();if(null==d)d=[];else for(var b=0;b<d.length;b++)d[b].id==a.id&&d.splice(b,1);null!=d&&(d.unshift(a),d=d.slice(0,10),localStorage.setItem(".recent",JSON.stringify(d)))}};App.prototype.getRecent=function(){if(isLocalStorage&&null!=localStorage){try{var a=localStorage.getItem(".recent");if(null!=a)return JSON.parse(a)}catch(d){}return null}};
App.prototype.resetRecent=function(a){if(isLocalStorage&&null!=localStorage)try{localStorage.removeItem(".recent")}catch(d){}};
App.prototype.onBeforeUnload=function(){if("1"==urlParams.embed&&this.editor.modified)return mxResources.get("allChangesLost");var a=this.getCurrentFile();if(null!=a)if(a.constructor!=LocalFile||""!=a.getHash()||a.isModified()||"1"==urlParams.nowarn||this.isDiagramEmpty()||null!=urlParams.url||this.editor.isChromelessView()||null!=a.fileHandle){if(a.isModified())return mxResources.get("allChangesLost");a.close(!0)}else return mxResources.get("ensureDataSaved")};
App.prototype.updateDocumentTitle=function(){if(!this.editor.graph.isLightboxView()){var a=this.editor.appName,d=this.getCurrentFile();this.isOfflineApp()&&(a+=" app");null!=d&&(a=(null!=d.getTitle()?d.getTitle():this.defaultFilename)+" - "+a);document.title!=a&&(document.title=a,a=this.editor.graph,a.invalidateDescendantsWithPlaceholders(a.model.getRoot()),a.view.validate())}};
-App.prototype.getThumbnail=function(a,d){var b=!1;try{var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(null)}),this.timeout),f=mxUtils.bind(this,function(a){window.clearTimeout(g);c&&d(a)});null==this.thumbImageCache&&(this.thumbImageCache={});var m=this.editor.graph,n=null!=m.themes&&"darkTheme"==m.defaultThemeName;if(n||null!=this.pages&&this.currentPage!=this.pages[0]){var e=m.getGlobalVariable,m=this.createTemporaryGraph(n?m.getDefaultStylesheet():m.getStylesheet()),k=this.pages[0];
-n&&(m.defaultThemeName="default");m.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?1:e.apply(this,arguments)};m.getGlobalVariable=e;document.body.appendChild(m.container);m.model.setRoot(k.root)}if(mxClient.IS_CHROMEAPP||this.useCanvasForExport)this.editor.exportToCanvas(mxUtils.bind(this,function(a){try{m!=this.editor.graph&&null!=m.container.parentNode&&m.container.parentNode.removeChild(m.container)}catch(C){a=null}f(a)}),a,this.thumbImageCache,"#ffffff",function(){f()},
-null,null,null,null,null,null,m),b=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var l=document.createElement("canvas"),p=m.getGraphBounds(),u=a/p.width,u=Math.min(1,Math.min(3*a/(4*p.height),u)),t=Math.floor(p.x),q=Math.floor(p.y);l.setAttribute("width",Math.ceil(u*(p.width+4)));l.setAttribute("height",Math.ceil(u*(p.height+4)));var v=l.getContext("2d");v.scale(u,u);v.translate(-t,-q);var y=m.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";v.save();v.fillStyle=y;v.fillRect(t,
-q,Math.ceil(p.width+4),Math.ceil(p.height+4));v.restore();var x=new mxJsCanvas(l),B=new mxAsyncCanvas(this.thumbImageCache);x.images=this.thumbImageCache.images;var z=new mxImageExport;z.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};z.drawText=function(a,b){};z.drawState(m.getView().getState(m.model.root),B);B.finish(mxUtils.bind(this,function(){try{z.drawState(m.getView().getState(m.model.root),
-x),m!=this.editor.graph&&null!=m.container.parentNode&&m.container.parentNode.removeChild(m.container)}catch(A){l=null}f(l)}));b=!0}}catch(A){b=!1,null!=m&&m!=this.editor.graph&&null!=m.container.parentNode&&m.container.parentNode.removeChild(m.container)}return b};
+App.prototype.getThumbnail=function(a,d){var b=!1;try{var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;d(null)}),this.timeout),f=mxUtils.bind(this,function(a){window.clearTimeout(g);c&&d(a)});null==this.thumbImageCache&&(this.thumbImageCache={});var l=this.editor.graph,m=null!=l.themes&&"darkTheme"==l.defaultThemeName;if(m||null!=this.pages&&this.currentPage!=this.pages[0]){var e=l.getGlobalVariable,l=this.createTemporaryGraph(m?l.getDefaultStylesheet():l.getStylesheet()),k=this.pages[0];
+m&&(l.defaultThemeName="default");l.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?1:e.apply(this,arguments)};l.getGlobalVariable=e;document.body.appendChild(l.container);l.model.setRoot(k.root)}if(mxClient.IS_CHROMEAPP||this.useCanvasForExport)this.editor.exportToCanvas(mxUtils.bind(this,function(a){try{l!=this.editor.graph&&null!=l.container.parentNode&&l.container.parentNode.removeChild(l.container)}catch(C){a=null}f(a)}),a,this.thumbImageCache,"#ffffff",function(){f()},
+null,null,null,null,null,null,l),b=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var n=document.createElement("canvas"),p=l.getGraphBounds(),u=a/p.width,u=Math.min(1,Math.min(3*a/(4*p.height),u)),t=Math.floor(p.x),q=Math.floor(p.y);n.setAttribute("width",Math.ceil(u*(p.width+4)));n.setAttribute("height",Math.ceil(u*(p.height+4)));var v=n.getContext("2d");v.scale(u,u);v.translate(-t,-q);var y=l.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";v.save();v.fillStyle=y;v.fillRect(t,
+q,Math.ceil(p.width+4),Math.ceil(p.height+4));v.restore();var x=new mxJsCanvas(n),B=new mxAsyncCanvas(this.thumbImageCache);x.images=this.thumbImageCache.images;var z=new mxImageExport;z.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};z.drawText=function(a,b){};z.drawState(l.getView().getState(l.model.root),B);B.finish(mxUtils.bind(this,function(){try{z.drawState(l.getView().getState(l.model.root),
+x),l!=this.editor.graph&&null!=l.container.parentNode&&l.container.parentNode.removeChild(l.container)}catch(A){n=null}f(n)}));b=!0}}catch(A){b=!1,null!=l&&l!=this.editor.graph&&null!=l.container.parentNode&&l.container.parentNode.removeChild(l.container)}return b};
App.prototype.createBackground=function(){var a=this.createDiv("background");a.style.position="absolute";a.style.background="white";a.style.left="0px";a.style.top="0px";a.style.bottom="0px";a.style.right="0px";mxUtils.setOpacity(a,100);return a};
(function(){var a=EditorUi.prototype.setMode;App.prototype.setMode=function(d,b){a.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(null!=this.appIcon){var c=this.getCurrentFile();d=null!=c?c.getMode():d;d==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):d==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])),
this.appIcon.style.cursor="pointer"):d==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor=d==App.MODE_DEVICE?"pointer":"default")}if(b)try{if(isLocalStorage)localStorage.setItem(".mode",d);else if("undefined"!=typeof Storage){var g=new Date;g.setYear(g.getFullYear()+1);document.cookie="MODE="+d+"; expires="+g.toUTCString()}}catch(f){}}})();
@@ -10965,14 +10965,14 @@ var b=this.getDiagramId(),c=this.getCurrentFile();null!=c&&c.getHash()==b||this.
mxResources.get("errorLoadingFile"))}else if((null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.url)this.loadFile("U"+urlParams.url,!0);else if(null==this.getCurrentFile()){var d=mxUtils.bind(this,function(){if("1"==urlParams.client&&(null==window.location.hash||0==window.location.hash.length||"#P"==window.location.hash.substring(0,2))){var a=mxUtils.bind(this,function(a){"data:image/png;base64,"==a.substring(0,22)&&(a=this.extractGraphModelFromPng(a));var b=urlParams.title,
b=null!=b?decodeURIComponent(b):this.defaultFilename;a=new LocalFile(this,a,b,!0);null!=window.location.hash&&"#P"==window.location.hash.substring(0,2)&&(a.getHash=function(){return window.location.hash.substring(1)});this.fileLoaded(a);this.getCurrentFile().setModified(!this.editor.chromeless)}),b=window.opener||window.parent;if(b!=window){var c=urlParams.create;null!=c?a(b[decodeURIComponent(c)]):(c=urlParams.data,null!=c?a(decodeURIComponent(c)):this.installMessageHandler(mxUtils.bind(this,function(c,
d){d.source==b&&a(c)})))}}else if(null==this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c=null!=window.opener&&null!=window.opener.openFile}catch(e){}c?this.spinner.spin(document.body,mxResources.get("loading")):(c=this.getDiagramId(),!EditorUi.enableDrafts||null!=urlParams.mode&&!EditorUi.isElectronApp||"draw.io"!=this.getServiceName()||null!=c&&0!=c.length||this.editor.isChromelessView()?
-null!=c&&0<c.length?this.loadFile(c,null,null,mxUtils.bind(this,function(){var a=decodeURIComponent(urlParams.viewbox||"");if(""!=a)try{var b=JSON.parse(a);this.editor.graph.fitWindow(b,b.border)}catch(l){console.error(l)}})):"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.checkDrafts())}}),b=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=b&&0<b.length&&
+null!=c&&0<c.length?this.loadFile(c,null,null,mxUtils.bind(this,function(){var a=decodeURIComponent(urlParams.viewbox||"");if(""!=a)try{var b=JSON.parse(a);this.editor.graph.fitWindow(b,b.border)}catch(n){console.error(n)}})):"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.checkDrafts())}}),b=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=b&&0<b.length&&
this.spinner.spin(document.body,mxResources.get("loading"))){var c=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create","title"]))}),g=mxUtils.bind(this,function(a){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,a,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a=this.getServiceCount(!0);
isLocalStorage&&a++;var c=4>=a?2:6<a?4:3,b=new CreateDialog(this,b,mxUtils.bind(this,function(a,b){if(null==b){this.hideDialog();var c=Editor.useLocalStorage;this.createFile(0<a.length?a:this.defaultFilename,this.getFileData(),null,null,null,!0,null,!0);Editor.useLocalStorage=c}else this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,this.getFileData(!0),null,b,null,!0,c)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,c,null,null,null,this.editor.fileExtensions);this.showDialog(b.container,
400,a>c?390:270,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&this.showSplash()}));b.init()}}),b=decodeURIComponent(b);if("http://"!=b.substring(0,7)&&"https://"!=b.substring(0,8))try{null!=window.opener&&null!=window.opener[b]?g(window.opener[b]):this.handleError(null,mxResources.get("errorLoadingFile"))}catch(f){this.handleError(f,mxResources.get("errorLoadingFile"))}else this.loadTemplate(b,function(a){g(a)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),
c)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action?null!=this.stateArg.ids&&(window.history&&window.history.replaceState&&window.history.replaceState(null,null,window.location.pathname+this.getSearch(["state"])),window.location.hash="G"+this.stateArg.ids[0]):(null==window.location.hash||1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(window.history&&
window.history.replaceState&&window.history.replaceState(null,null,window.location.pathname+this.getSearch(["state"])),this.setMode(App.MODE_GOOGLE),this.actions.get("new").funct()):(null!=urlParams.open&&window.history&&window.history.replaceState&&(window.history.replaceState(null,null,window.location.pathname+this.getSearch(["open"])),window.location.hash=urlParams.open),d())}}catch(f){this.handleError(f)}};
App.prototype.loadDraft=function(a,d){this.createFile(this.defaultFilename,a,null,null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&(a.fileChanged(),null!=d&&d())}),0)}),null,null,!0)};
-App.prototype.checkDrafts=function(){try{var a=Editor.guid();localStorage.setItem(".draft-alive-check",a);window.setTimeout(mxUtils.bind(this,function(){localStorage.removeItem(".draft-alive-check");this.getDatabaseItems(mxUtils.bind(this,function(d){for(var b=[],c=0;c<d.length;c++)try{var g=d[c].key;if(null!=g&&".draft_"==g.substring(0,7)){var f=JSON.parse(d[c].data);null!=f&&"draft"==f.type&&f.aliveCheck!=a&&(f.key=g,b.push(f))}}catch(m){}1==b.length?this.loadDraft(b[0].data,mxUtils.bind(this,function(){this.removeDatabaseItem(b[0].key)})):
+App.prototype.checkDrafts=function(){try{var a=Editor.guid();localStorage.setItem(".draft-alive-check",a);window.setTimeout(mxUtils.bind(this,function(){localStorage.removeItem(".draft-alive-check");this.getDatabaseItems(mxUtils.bind(this,function(d){for(var b=[],c=0;c<d.length;c++)try{var g=d[c].key;if(null!=g&&".draft_"==g.substring(0,7)){var f=JSON.parse(d[c].data);null!=f&&"draft"==f.type&&f.aliveCheck!=a&&(f.key=g,b.push(f))}}catch(l){}1==b.length?this.loadDraft(b[0].data,mxUtils.bind(this,function(){this.removeDatabaseItem(b[0].key)})):
1<b.length?(d=new Date(b[0].modified),d=new DraftDialog(this,1<b.length?mxResources.get("selectDraft"):mxResources.get("draftFound",[d.toLocaleDateString()+" "+d.toLocaleTimeString()]),1<b.length?null:b[0].data,mxUtils.bind(this,function(a){this.hideDialog();a=""!=a?a:0;this.loadDraft(b[a].data,mxUtils.bind(this,function(){this.removeDatabaseItem(b[a].key)}))}),mxUtils.bind(this,function(a,c){a=""!=a?a:0;this.confirm(mxResources.get("areYouSure"),null,mxUtils.bind(this,function(){this.removeDatabaseItem(b[a].key);
null!=c&&c()}),mxResources.get("no"),mxResources.get("yes"))}),null,null,null,1<b.length?b:null),this.showDialog(d.container,640,480,!0,!1,mxUtils.bind(this,function(a){"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0)})),d.init()):"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0)}),mxUtils.bind(this,function(){"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,
this.getFileData(),null,null,null,null,null,!0)}))}),0)}catch(d){}};
@@ -10981,71 +10981,71 @@ mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){this.showSplash
App.prototype.addLanguageMenu=function(a,d){var b=null;if(null!=this.menus.get("language")){b=document.createElement("div");b.setAttribute("title",mxResources.get("language"));b.className="geIcon geSprite geSprite-globe";b.style.position="absolute";b.style.cursor="pointer";b.style.bottom="20px";b.style.right="20px";if(d){b.style.direction="rtl";b.style.textAlign="right";b.style.right="24px";var c=document.createElement("span");c.style.display="inline-block";c.style.fontSize="12px";c.style.margin=
"5px 24px 0 0";c.style.color="gray";c.style.userSelect="none";mxUtils.write(c,mxResources.get("language"));b.appendChild(c)}mxEvent.addListener(b,"click",mxUtils.bind(this,function(a){this.editor.graph.popupMenuHandler.hideMenu();var c=new mxPopupMenu(this.menus.get("language").funct);c.div.className+=" geMenubarMenu";c.smartSeparators=!0;c.showDisabled=!0;c.autoExpand=!0;c.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(c,arguments);c.destroy()});var d=mxUtils.getOffset(b);
c.popup(d.x,d.y+b.offsetHeight,null,a);this.setCurrentMenu(c)}));a.appendChild(b)}return b};
-App.prototype.loadFileSystemEntry=function(a,d,b){b=null!=b?b:mxUtils.bind(this,function(a){this.handleError(a)});try{a.getFile().then(mxUtils.bind(this,function(c){var g=new FileReader;g.onload=mxUtils.bind(this,function(f){try{if(null!=d){var g=f.target.result;"image/png"==c.type&&(g=this.extractGraphModelFromPng(g));d(new LocalFile(this,g,c.name,null,a,c))}else this.openFileHandle(f.target.result,c.name,c,!1,a)}catch(n){b(n)}});g.onerror=b;"image"!==c.type.substring(0,5)&&"application/pdf"!==c.type||
+App.prototype.loadFileSystemEntry=function(a,d,b){b=null!=b?b:mxUtils.bind(this,function(a){this.handleError(a)});try{a.getFile().then(mxUtils.bind(this,function(c){var g=new FileReader;g.onload=mxUtils.bind(this,function(f){try{if(null!=d){var g=f.target.result;"image/png"==c.type&&(g=this.extractGraphModelFromPng(g));d(new LocalFile(this,g,c.name,null,a,c))}else this.openFileHandle(f.target.result,c.name,c,!1,a)}catch(m){b(m)}});g.onerror=b;"image"!==c.type.substring(0,5)&&"application/pdf"!==c.type||
"image/svg"===c.type.substring(0,9)?g.readAsText(c):g.readAsDataURL(c)}),b)}catch(c){b(c)}};
App.prototype.createFileSystemOptions=function(a){var d=[],b=null;if(null!=a){var c=a.lastIndexOf(".");0<c&&(b=a.substring(c+1))}for(c=0;c<this.editor.diagramFileTypes.length;c++){var g={description:mxResources.get(this.editor.diagramFileTypes[c].description)+(mxClient.IS_MAC?" (."+this.editor.diagramFileTypes[c].extension+")":""),accept:{}};g.accept[this.editor.diagramFileTypes[c].mimeType]=["."+this.editor.diagramFileTypes[c].extension];this.editor.diagramFileTypes[c].extension==b?d.splice(0,0,
g):this.editor.diagramFileTypes[c].extension==b?d.splice(0,0,g):d.push(g)}return{types:d,fileName:a}};App.prototype.showSaveFilePicker=function(a,d,b){d=null!=d?d:mxUtils.bind(this,function(a){"AbortError"!=a.name&&this.handleError(a)});b=null!=b?b:this.createFileSystemOptions();window.showSaveFilePicker(b).then(mxUtils.bind(this,function(b){null!=b&&b.getFile().then(mxUtils.bind(this,function(c){a(b,c)}),d)}),d)};
App.prototype.pickFile=function(a){try{if(a=null!=a?a:this.mode,a==App.MODE_GOOGLE)null!=this.drive&&"undefined"!=typeof google&&"undefined"!=typeof google.picker?this.drive.pickFile():this.openLink("https://drive.google.com");else{var d=this.getPeerForMode(a);if(null!=d)d.pickFile();else if(a==App.MODE_DEVICE&&"showOpenFilePicker"in window&&!EditorUi.isElectronApp)window.showOpenFilePicker().then(mxUtils.bind(this,function(a){null!=a&&0<a.length&&this.spinner.spin(document.body,mxResources.get("loading"))&&
this.loadFileSystemEntry(a[0])}),mxUtils.bind(this,function(a){"AbortError"!=a.name&&this.handleError(a)}));else if(a==App.MODE_DEVICE&&Graph.fileSupport){if(null==this.openFileInputElt){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){null!=b.files&&(this.openFiles(b.files),b.type="",b.type="file",b.value="")}));b.style.display="none";document.body.appendChild(b);this.openFileInputElt=b}this.openFileInputElt.click()}else{this.hideDialog();
window.openNew=null!=this.getCurrentFile()&&!this.isDiagramEmpty();window.baseUrl=this.getUrl();window.openKey="open";window.listBrowserFiles=mxUtils.bind(this,function(a,b){StorageFile.listFiles(this,"F",a,b)});window.openBrowserFile=mxUtils.bind(this,function(a,b,c){StorageFile.getFileContent(this,a,b,c)});window.deleteBrowserFile=mxUtils.bind(this,function(a,b,c){StorageFile.deleteFile(this,a,b,c)});var c=Editor.useLocalStorage;Editor.useLocalStorage=a==App.MODE_BROWSER;this.openFile();window.openFile.setConsumer(mxUtils.bind(this,
-function(b,c){this.useCanvasForExport||".png"!=c.substring(c.length-4)||(c=c.substring(0,c.length-4)+".drawio");this.fileLoaded(a==App.MODE_BROWSER?new StorageFile(this,b,c):new LocalFile(this,b,c))}));var g=this.dialog,f=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=c;f.apply(g,arguments);null==this.getCurrentFile()&&this.showSplash()})}}}catch(m){this.handleError(m)}};
-App.prototype.pickLibrary=function(a){a=null!=a?a:this.mode;if(a==App.MODE_GOOGLE||a==App.MODE_DROPBOX||a==App.MODE_ONEDRIVE||a==App.MODE_GITHUB||a==App.MODE_GITLAB||a==App.MODE_TRELLO){var d=a==App.MODE_GOOGLE?this.drive:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_GITLAB?this.gitLab:a==App.MODE_TRELLO?this.trello:this.dropbox;null!=d&&d.pickLibrary(mxUtils.bind(this,function(a,b){if(null!=b)try{this.loadLibrary(b)}catch(m){this.handleError(m,mxResources.get("errorLoadingFile"))}else this.spinner.spin(document.body,
-mxResources.get("loading"))&&d.getLibrary(a,mxUtils.bind(this,function(a){this.spinner.stop();try{this.loadLibrary(a)}catch(n){this.handleError(n,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(a){this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)}))}))}else if(a==App.MODE_DEVICE&&Graph.fileSupport){if(null==this.libFileInputElt){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=
+function(b,c){this.useCanvasForExport||".png"!=c.substring(c.length-4)||(c=c.substring(0,c.length-4)+".drawio");this.fileLoaded(a==App.MODE_BROWSER?new StorageFile(this,b,c):new LocalFile(this,b,c))}));var g=this.dialog,f=g.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=c;f.apply(g,arguments);null==this.getCurrentFile()&&this.showSplash()})}}}catch(l){this.handleError(l)}};
+App.prototype.pickLibrary=function(a){a=null!=a?a:this.mode;if(a==App.MODE_GOOGLE||a==App.MODE_DROPBOX||a==App.MODE_ONEDRIVE||a==App.MODE_GITHUB||a==App.MODE_GITLAB||a==App.MODE_TRELLO){var d=a==App.MODE_GOOGLE?this.drive:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_GITLAB?this.gitLab:a==App.MODE_TRELLO?this.trello:this.dropbox;null!=d&&d.pickLibrary(mxUtils.bind(this,function(a,b){if(null!=b)try{this.loadLibrary(b)}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}else this.spinner.spin(document.body,
+mxResources.get("loading"))&&d.getLibrary(a,mxUtils.bind(this,function(a){this.spinner.stop();try{this.loadLibrary(a)}catch(m){this.handleError(m,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(a){this.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)}))}))}else if(a==App.MODE_DEVICE&&Graph.fileSupport){if(null==this.libFileInputElt){var b=document.createElement("input");b.setAttribute("type","file");mxEvent.addListener(b,"change",mxUtils.bind(this,function(){if(null!=
b.files){for(var a=0;a<b.files.length;a++)mxUtils.bind(this,function(a){var b=new FileReader;b.onload=mxUtils.bind(this,function(b){try{this.loadLibrary(new LocalLibrary(this,b.target.result,a.name))}catch(e){this.handleError(e,mxResources.get("errorLoadingFile"))}});b.readAsText(a)})(b.files[a]);b.type="";b.type="file";b.value=""}}));b.style.display="none";document.body.appendChild(b);this.libFileInputElt=b}this.libFileInputElt.click()}else{window.openNew=!1;window.openKey="open";window.listBrowserFiles=
mxUtils.bind(this,function(a,b){StorageFile.listFiles(this,"L",a,b)});window.openBrowserFile=mxUtils.bind(this,function(a,b,c){StorageFile.getFileContent(this,a,b,c)});window.deleteBrowserFile=mxUtils.bind(this,function(a,b,c){StorageFile.deleteFile(this,a,b,c)});var c=Editor.useLocalStorage;Editor.useLocalStorage=a==App.MODE_BROWSER;window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(b,c){try{this.loadLibrary(a==
-App.MODE_BROWSER?new StorageLibrary(this,b,c):new LocalLibrary(this,b,c))}catch(m){this.handleError(m,mxResources.get("errorLoadingFile"))}}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){Editor.useLocalStorage=c;window.openFile=null})}};
-App.prototype.saveLibrary=function(a,d,b,c,g,f,m){try{c=null!=c?c:this.mode;g=null!=g?g:!1;f=null!=f?f:!1;var n=this.createLibraryDataFromImages(d),e=mxUtils.bind(this,function(a){this.spinner.stop();null!=m&&m();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==b&&c==App.MODE_DEVICE&&(b=new LocalLibrary(this,n,a));if(null==b)this.pickFolder(c,mxUtils.bind(this,function(b){c==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?
-this.drive.insertFile(a,n,b,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,this.drive.libraryMimeType):c==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(a,n,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_GITLAB&&null!=this.gitLab&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitLab.insertLibrary(a,
-n,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(a,n,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(a,n,mxUtils.bind(this,function(a){this.spinner.stop();
-this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(a,n,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_BROWSER?(b=mxUtils.bind(this,function(){var b=new StorageLibrary(this,n,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(b,d)}),e)}),null==localStorage.getItem(a)?
-b():this.confirm(mxResources.get("replaceIt",[a]),b)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(g||this.spinner.spin(document.body,mxResources.get("saving"))){b.setData(n);var k=mxUtils.bind(this,function(){b.save(!0,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);f||this.libraryLoaded(b,d);null!=m&&m()}),e)});if(a!=b.getTitle()){var l=b.getHash();b.rename(a,mxUtils.bind(this,function(a){b.constructor!=LocalLibrary&&l!=b.getHash()&&
-(mxSettings.removeCustomLibrary(l),mxSettings.addCustomLibrary(b.getHash()));this.removeLibrarySidebar(l);k()}),e)}else k()}}catch(p){this.handleError(p)}};
+App.MODE_BROWSER?new StorageLibrary(this,b,c):new LocalLibrary(this,b,c))}catch(l){this.handleError(l,mxResources.get("errorLoadingFile"))}}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){Editor.useLocalStorage=c;window.openFile=null})}};
+App.prototype.saveLibrary=function(a,d,b,c,g,f,l){try{c=null!=c?c:this.mode;g=null!=g?g:!1;f=null!=f?f:!1;var m=this.createLibraryDataFromImages(d),e=mxUtils.bind(this,function(a){this.spinner.stop();null!=l&&l();this.handleError(a,null!=a?mxResources.get("errorSavingFile"):null)});null==b&&c==App.MODE_DEVICE&&(b=new LocalLibrary(this,m,a));if(null==b)this.pickFolder(c,mxUtils.bind(this,function(b){c==App.MODE_GOOGLE&&null!=this.drive&&this.spinner.spin(document.body,mxResources.get("inserting"))?
+this.drive.insertFile(a,m,b,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,this.drive.libraryMimeType):c==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_GITLAB&&null!=this.gitLab&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitLab.insertLibrary(a,
+m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();
+this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(a,m,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,d)}),e,b):c==App.MODE_BROWSER?(b=mxUtils.bind(this,function(){var b=new StorageLibrary(this,m,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(b,d)}),e)}),null==localStorage.getItem(a)?
+b():this.confirm(mxResources.get("replaceIt",[a]),b)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(g||this.spinner.spin(document.body,mxResources.get("saving"))){b.setData(m);var k=mxUtils.bind(this,function(){b.save(!0,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);f||this.libraryLoaded(b,d);null!=l&&l()}),e)});if(a!=b.getTitle()){var n=b.getHash();b.rename(a,mxUtils.bind(this,function(a){b.constructor!=LocalLibrary&&n!=b.getHash()&&
+(mxSettings.removeCustomLibrary(n),mxSettings.addCustomLibrary(b.getHash()));this.removeLibrarySidebar(n);k()}),e)}else k()}}catch(p){this.handleError(p)}};
App.prototype.saveFile=function(a,d){var b=this.getCurrentFile();if(null!=b){var c=mxUtils.bind(this,function(){EditorUi.enableDrafts&&b.removeDraft();this.getCurrentFile()==b||b.isModified()||(b.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=d&&d()});if(a||null==b.getTitle()||null!=b.invalidFileHandle||null==this.mode)if(null!=b&&b.constructor==LocalFile&&null!=b.fileHandle)this.showSaveFilePicker(mxUtils.bind(this,
-function(a,d){b.invalidFileHandle=null;b.fileHandle=a;b.title=d.name;b.desc=d;this.save(d.name,c)}),null,this.createFileSystemOptions(b.getTitle()));else{var g=null!=b.getTitle()?b.getTitle():this.defaultFilename,f=!mxClient.IS_IOS||!navigator.standalone,m=this.mode,n=this.getServiceCount(!0);isLocalStorage&&n++;var e=4>=n?2:6<n?4:3,g=new CreateDialog(this,g,mxUtils.bind(this,function(a,d,e){null!=a&&0<a.length&&(/(\.pdf)$/i.test(a)?this.confirm(mxResources.get("didYouMeanToExportToPdf"),mxUtils.bind(this,
-function(){this.hideDialog();this.actions.get("exportPdf").funct()}),mxUtils.bind(this,function(){e.value=a.split(".").slice(0,-1).join(".");e.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null)}),mxResources.get("yes"),mxResources.get("no")):(this.hideDialog(),null==m&&d==App.MODE_DEVICE?null!=b&&"showSaveFilePicker"in window?this.showSaveFilePicker(mxUtils.bind(this,function(a,d){b.fileHandle=a;b.mode=App.MODE_DEVICE;b.title=d.name;
-b.desc=d;this.setMode(App.MODE_DEVICE);this.save(d.name,c)}),mxUtils.bind(this,function(a){"AbortError"!=a.name&&this.handleError(a)}),this.createFileSystemOptions(a)):(this.setMode(App.MODE_DEVICE),this.save(a,c)):"download"==d?(new LocalFile(this,null,a)).save():"_blank"==d?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):m!=d?this.pickFolder(d,mxUtils.bind(this,function(b){this.createFile(a,
-this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")||/(\.drawio)$/i.test(a),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,d,c,null==this.mode,b)})):null!=d&&this.save(a,c)))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,f,null,!0,e,null,null,null,this.editor.fileExtensions,!1);this.showDialog(g.container,400,n>e?390:270,!0,!0);g.init()}else this.save(b.getTitle(),c)}};
-App.prototype.loadTemplate=function(a,d,b,c,g){var f=!1,m=a;this.editor.isCorsEnabledForUrl(m)||(m="t="+(new Date).getTime(),m=PROXY_URL+"?url="+encodeURIComponent(a)+"&base64=1&"+m,f=!0);var n=null!=c?c:a;this.editor.loadUrl(m,mxUtils.bind(this,function(c){try{var e=f?!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(c):atob(c):c,l=/(\.v(dx|sdx?))($|\?)/i.test(n)||/(\.vs(x|sx?))($|\?)/i.test(n);if(l||this.isVisioData(e))l||(n=g?this.isRemoteVisioData(e)?"raw.vss":"raw.vssx":this.isRemoteVisioData(e)?
-"raw.vsd":"raw.vsdx"),this.importVisio(this.base64ToBlob(c.substring(c.indexOf(",")+1)),function(a){d(a)},b,n);else if(!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(e,n))this.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&d(a.responseText)}),a);else if(this.isLucidChartData(e))this.convertLucidChart(e,mxUtils.bind(this,function(a){d(a)}),
-mxUtils.bind(this,function(a){b(a)}));else{if(/(\.png)($|\?)/i.test(n)||this.isPngData(e))e=this.extractGraphModelFromPng(c);d(e)}}catch(p){b(p)}}),b,/(\.png)($|\?)/i.test(n)||/(\.v(dx|sdx?))($|\?)/i.test(n)||/(\.vs(x|sx?))($|\?)/i.test(n),null,null,f)};App.prototype.getPeerForMode=function(a){return a==App.MODE_GOOGLE?this.drive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_GITLAB?this.gitLab:a==App.MODE_DROPBOX?this.dropbox:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_TRELLO?this.trello:null};
-App.prototype.createFile=function(a,d,b,c,g,f,m,n,e){c=n?null:null!=c?c:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){d=null!=d?d:this.emptyDiagramXml;var k=mxUtils.bind(this,function(){this.spinner.stop()}),l=mxUtils.bind(this,function(a){k();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{c==App.MODE_GOOGLE&&null!=this.drive?(null==m&&null!=this.stateArg&&null!=this.stateArg.folderId&&(m=this.stateArg.folderId),
-this.drive.insertFile(a,d,m,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),l)):c==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),l,!1,m):c==App.MODE_GITLAB&&null!=this.gitLab?this.gitLab.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),l,!1,m):c==App.MODE_TRELLO&&null!=this.trello?this.trello.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),l,
-!1,m):c==App.MODE_DROPBOX&&null!=this.dropbox?this.dropbox.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),l):c==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),l,!1,m):c==App.MODE_BROWSER?StorageFile.insertFile(this,a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),l):!n&&c==App.MODE_DEVICE&&"showSaveFilePicker"in window&&!EditorUi.isElectronApp?(k(),this.showSaveFilePicker(mxUtils.bind(this,
-function(a,c){var k=new LocalFile(this,d,c.name,null,a,c);k.saveFile(c.name,!1,mxUtils.bind(this,function(){this.fileCreated(k,b,f,g,e)}),l,!0)}),mxUtils.bind(this,function(a){"AbortError"!=a.name&&l(a)}),this.createFileSystemOptions(a))):(k(),this.fileCreated(new LocalFile(this,d,a,null==c),b,f,g,e))}catch(p){k(),this.handleError(p)}}};
-App.prototype.fileCreated=function(a,d,b,c,g){var f=window.location.pathname;null!=d&&0<d.length&&(f+="?libs="+d);null!=g&&0<g.length&&(f+="?clibs="+g);f=this.getUrl(f);a.getMode()!=App.MODE_DEVICE&&(f+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var m=a.getData(),m=0<m.length?this.editor.extractGraphModel(mxUtils.parseXml(m).documentElement,!0):null,n=window.location.protocol+"//"+window.location.hostname+f,e=m,k=null;null!=m&&/\.svg$/i.test(a.getTitle())&&
-(k=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(k.container),e=this.decodeNodeIntoGraph(e,k));a.setData(this.createFileData(m,k,a,n));null!=k&&k.container.parentNode.removeChild(k.container);var l=mxUtils.bind(this,function(){this.spinner.stop()}),p=mxUtils.bind(this,function(){l();var e=this.getCurrentFile();null==b&&null!=e&&(b=!e.isModified()&&null==e.getMode());var k=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);b&&a.addAllSavedStatus();
-null!=d&&this.sidebar.showEntries(d);if(null!=g){for(var c=[],e=g.split(";"),f=0;f<e.length;f++)c.push(decodeURIComponent(e[f]));this.loadLibraries(c)}}),m=mxUtils.bind(this,function(){b||null==e||!e.isModified()?k():this.confirm(mxResources.get("allChangesLost"),null,k,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=c&&c();null==b||b?m():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(),
-null==a.getMode())),null!=c&&c(),window.openWindow(f,null,m))});a.constructor==LocalFile?p():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){p()}),mxUtils.bind(this,function(a){l();this.handleError(a)}))}};
+function(a,d){b.invalidFileHandle=null;b.fileHandle=a;b.title=d.name;b.desc=d;this.save(d.name,c)}),null,this.createFileSystemOptions(b.getTitle()));else{var g=null!=b.getTitle()?b.getTitle():this.defaultFilename,f=!mxClient.IS_IOS||!navigator.standalone,l=this.mode,m=this.getServiceCount(!0);isLocalStorage&&m++;var e=4>=m?2:6<m?4:3,g=new CreateDialog(this,g,mxUtils.bind(this,function(a,d,e){null!=a&&0<a.length&&(/(\.pdf)$/i.test(a)?this.confirm(mxResources.get("didYouMeanToExportToPdf"),mxUtils.bind(this,
+function(){this.hideDialog();this.actions.get("exportPdf").funct()}),mxUtils.bind(this,function(){e.value=a.split(".").slice(0,-1).join(".");e.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?e.select():document.execCommand("selectAll",!1,null)}),mxResources.get("yes"),mxResources.get("no")):(this.hideDialog(),null==l&&d==App.MODE_DEVICE?null!=b&&"showSaveFilePicker"in window?this.showSaveFilePicker(mxUtils.bind(this,function(a,d){b.fileHandle=a;b.mode=App.MODE_DEVICE;b.title=d.name;
+b.desc=d;this.setMode(App.MODE_DEVICE);this.save(d.name,c)}),mxUtils.bind(this,function(a){"AbortError"!=a.name&&this.handleError(a)}),this.createFileSystemOptions(a)):(this.setMode(App.MODE_DEVICE),this.save(a,c)):"download"==d?(new LocalFile(this,null,a)).save():"_blank"==d?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):l!=d?this.pickFolder(d,mxUtils.bind(this,function(b){this.createFile(a,
+this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")||/(\.drawio)$/i.test(a),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,d,c,null==this.mode,b)})):null!=d&&this.save(a,c)))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,f,null,!0,e,null,null,null,this.editor.fileExtensions,!1);this.showDialog(g.container,400,m>e?390:270,!0,!0);g.init()}else this.save(b.getTitle(),c)}};
+App.prototype.loadTemplate=function(a,d,b,c,g){var f=!1,l=a;this.editor.isCorsEnabledForUrl(l)||(l="t="+(new Date).getTime(),l=PROXY_URL+"?url="+encodeURIComponent(a)+"&base64=1&"+l,f=!0);var m=null!=c?c:a;this.editor.loadUrl(l,mxUtils.bind(this,function(c){try{var e=f?!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(c):atob(c):c,l=/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m);if(l||this.isVisioData(e))l||(m=g?this.isRemoteVisioData(e)?"raw.vss":"raw.vssx":this.isRemoteVisioData(e)?
+"raw.vsd":"raw.vsdx"),this.importVisio(this.base64ToBlob(c.substring(c.indexOf(",")+1)),function(a){d(a)},b,m);else if(!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(e,m))this.parseFile(new Blob([e],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&d(a.responseText)}),a);else if(this.isLucidChartData(e))this.convertLucidChart(e,mxUtils.bind(this,function(a){d(a)}),
+mxUtils.bind(this,function(a){b(a)}));else{if(/(\.png)($|\?)/i.test(m)||this.isPngData(e))e=this.extractGraphModelFromPng(c);d(e)}}catch(p){b(p)}}),b,/(\.png)($|\?)/i.test(m)||/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m),null,null,f)};App.prototype.getPeerForMode=function(a){return a==App.MODE_GOOGLE?this.drive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_GITLAB?this.gitLab:a==App.MODE_DROPBOX?this.dropbox:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_TRELLO?this.trello:null};
+App.prototype.createFile=function(a,d,b,c,g,f,l,m,e){c=m?null:null!=c?c:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){d=null!=d?d:this.emptyDiagramXml;var k=mxUtils.bind(this,function(){this.spinner.stop()}),n=mxUtils.bind(this,function(a){k();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{c==App.MODE_GOOGLE&&null!=this.drive?(null==l&&null!=this.stateArg&&null!=this.stateArg.folderId&&(l=this.stateArg.folderId),
+this.drive.insertFile(a,d,l,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),n)):c==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),n,!1,l):c==App.MODE_GITLAB&&null!=this.gitLab?this.gitLab.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),n,!1,l):c==App.MODE_TRELLO&&null!=this.trello?this.trello.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),n,
+!1,l):c==App.MODE_DROPBOX&&null!=this.dropbox?this.dropbox.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),n):c==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.insertFile(a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),n,!1,l):c==App.MODE_BROWSER?StorageFile.insertFile(this,a,d,mxUtils.bind(this,function(a){k();this.fileCreated(a,b,f,g,e)}),n):!m&&c==App.MODE_DEVICE&&"showSaveFilePicker"in window&&!EditorUi.isElectronApp?(k(),this.showSaveFilePicker(mxUtils.bind(this,
+function(a,c){var k=new LocalFile(this,d,c.name,null,a,c);k.saveFile(c.name,!1,mxUtils.bind(this,function(){this.fileCreated(k,b,f,g,e)}),n,!0)}),mxUtils.bind(this,function(a){"AbortError"!=a.name&&n(a)}),this.createFileSystemOptions(a))):(k(),this.fileCreated(new LocalFile(this,d,a,null==c),b,f,g,e))}catch(p){k(),this.handleError(p)}}};
+App.prototype.fileCreated=function(a,d,b,c,g){var f=window.location.pathname;null!=d&&0<d.length&&(f+="?libs="+d);null!=g&&0<g.length&&(f+="?clibs="+g);f=this.getUrl(f);a.getMode()!=App.MODE_DEVICE&&(f+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var l=a.getData(),l=0<l.length?this.editor.extractGraphModel(mxUtils.parseXml(l).documentElement,!0):null,m=window.location.protocol+"//"+window.location.hostname+f,e=l,k=null;null!=l&&/\.svg$/i.test(a.getTitle())&&
+(k=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(k.container),e=this.decodeNodeIntoGraph(e,k));a.setData(this.createFileData(l,k,a,m));null!=k&&k.container.parentNode.removeChild(k.container);var n=mxUtils.bind(this,function(){this.spinner.stop()}),p=mxUtils.bind(this,function(){n();var e=this.getCurrentFile();null==b&&null!=e&&(b=!e.isModified()&&null==e.getMode());var k=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);b&&a.addAllSavedStatus();
+null!=d&&this.sidebar.showEntries(d);if(null!=g){for(var c=[],e=g.split(";"),f=0;f<e.length;f++)c.push(decodeURIComponent(e[f]));this.loadLibraries(c)}}),l=mxUtils.bind(this,function(){b||null==e||!e.isModified()?k():this.confirm(mxResources.get("allChangesLost"),null,k,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=c&&c();null==b||b?l():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(),
+null==a.getMode())),null!=c&&c(),window.openWindow(f,null,l))});a.constructor==LocalFile?p():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){p()}),mxUtils.bind(this,function(a){n();this.handleError(a)}))}};
App.prototype.loadFile=function(a,d,b,c,g){"1"==urlParams.openInSameWin&&(d=!0);this.hideDialog();var f=mxUtils.bind(this,function(){if(null==a||0==a.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==a.charAt(0))if(this.spinner.stop(),isLocalStorage){var e=mxUtils.bind(this,function(a){this.handleError(a,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=
null!=a?a.getHash():""}))});a=decodeURIComponent(a.substring(1));StorageFile.getFileContent(this,a,mxUtils.bind(this,function(b){null!=b?(this.fileLoaded(new StorageFile(this,b,a)),null!=c&&c()):e({message:mxResources.get("fileNotFound")})}),e)}else this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}));else if(null!=b)this.spinner.stop(),this.fileLoaded(b),
null!=c&&c();else if("S"==a.charAt(0))this.spinner.stop(),this.alert("[Deprecation] #S is no longer supportd, go to https://www.draw.io/?desc="+a.substring(1).substring(0,10)+"...",mxUtils.bind(this,function(){window.location.href="https://www.draw.io/?desc="+a.substring(1)}));else if("R"==a.charAt(0)){this.spinner.stop();var f=decodeURIComponent(a.substring(1));"<"!=f.charAt(0)&&(f=Graph.decompress(f));f=new LocalFile(this,f,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,
!0);f.getHash=function(){return a};this.fileLoaded(f);null!=c&&c()}else if("E"==a.charAt(0))null==this.getCurrentFile()?this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile")):this.remoteInvoke("getDraftFileContent",null,null,mxUtils.bind(this,function(a,b){this.spinner.stop();this.fileLoaded(new EmbedFile(this,a,b));null!=c&&c()}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"))}));
-else if("U"==a.charAt(0)){var g=decodeURIComponent(a.substring(1)),m=mxUtils.bind(this,function(){if("https://drive.google.com/uc?id="!=g.substring(0,31)||null==this.drive&&"function"!==typeof window.DriveClient)return!1;this.hideDialog();var a=mxUtils.bind(this,function(){this.spinner.stop();if(null!=this.drive){var a=g.substring(31,g.lastIndexOf("&ex"));this.loadFile("G"+a,d,null,mxUtils.bind(this,function(){var b=this.getCurrentFile();null!=b&&this.editor.chromeless&&!this.editor.editable&&(b.getHash=
+else if("U"==a.charAt(0)){var g=decodeURIComponent(a.substring(1)),l=mxUtils.bind(this,function(){if("https://drive.google.com/uc?id="!=g.substring(0,31)||null==this.drive&&"function"!==typeof window.DriveClient)return!1;this.hideDialog();var a=mxUtils.bind(this,function(){this.spinner.stop();if(null!=this.drive){var a=g.substring(31,g.lastIndexOf("&ex"));this.loadFile("G"+a,d,null,mxUtils.bind(this,function(){var b=this.getCurrentFile();null!=b&&this.editor.chromeless&&!this.editor.editable&&(b.getHash=
function(){return"G"+a},window.location.hash="#"+b.getHash());null!=c&&c()}));return!0}return!1});!a()&&this.spinner.spin(document.body,mxResources.get("loading"))&&this.addListener("clientLoaded",a);return!0});this.loadTemplate(g,mxUtils.bind(this,function(b){this.spinner.stop();if(null!=b&&0<b.length){var d=this.defaultFilename;if(null==urlParams.title&&"1"!=urlParams.notitle){var e=g,f=g.lastIndexOf("."),k=e.lastIndexOf("/");f>k&&0<k&&(e=e.substring(k+1,f),f=g.substring(f),this.useCanvasForExport||
-".png"!=f||(f=".drawio"),".svg"===f||".xml"===f||".html"===f||".png"===f||".drawio"===f)&&(d=e+f)}b=new LocalFile(this,b,null!=urlParams.title?decodeURIComponent(urlParams.title):d,!0);b.getHash=function(){return a};this.fileLoaded(b,!0)?null!=c&&c():m()||this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))}else m()||this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))}),mxUtils.bind(this,function(){m()||(this.spinner.stop(),
+".png"!=f||(f=".drawio"),".svg"===f||".xml"===f||".html"===f||".png"===f||".drawio"===f)&&(d=e+f)}b=new LocalFile(this,b,null!=urlParams.title?decodeURIComponent(urlParams.title):d,!0);b.getHash=function(){return a};this.fileLoaded(b,!0)?null!=c&&c():l()||this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))}else l()||this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))}),mxUtils.bind(this,function(){l()||(this.spinner.stop(),
this.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile")))}),null!=urlParams["template-filename"]?decodeURIComponent(urlParams["template-filename"]):null)}else if(f=null,"G"==a.charAt(0)?f=this.drive:"D"==a.charAt(0)?f=this.dropbox:"W"==a.charAt(0)?f=this.oneDrive:"H"==a.charAt(0)?f=this.gitHub:"A"==a.charAt(0)?f=this.gitLab:"T"==a.charAt(0)&&(f=this.trello),null==f)this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")},mxResources.get("errorLoadingFile"),
-mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}));else{var n=a.charAt(0);a=decodeURIComponent(a.substring(1));f.getFile(a,mxUtils.bind(this,function(b){this.spinner.stop();this.fileLoaded(b);var d=this.getCurrentFile();null==d?(window.location.hash="",this.showSplash()):this.editor.chromeless&&!this.editor.editable?(d.getHash=function(){return n+a},window.location.hash="#"+d.getHash()):b==d&&null==b.getMode()&&(b=mxResources.get("copyCreated"),
-this.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+b+"</div>"));null!=c&&c()}),mxUtils.bind(this,function(b){null!=window.console&&null!=b&&console.log("error in loadFile:",a,b);this.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash="#"+a.getHash()}),null,null,"#"+n+a)}))}}),m=this.getCurrentFile(),n=mxUtils.bind(this,
-function(){g||null==m||!m.isModified()?f():this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=m&&(window.location.hash=m.getHash())}),f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==a||0==a.length?n():null==m||d?n():this.showDialog((new PopupDialog(this,this.getUrl()+"#"+a,null,n)).container,320,140,!0,!0)};
+mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}));else{var m=a.charAt(0);a=decodeURIComponent(a.substring(1));f.getFile(a,mxUtils.bind(this,function(b){this.spinner.stop();this.fileLoaded(b);var d=this.getCurrentFile();null==d?(window.location.hash="",this.showSplash()):this.editor.chromeless&&!this.editor.editable?(d.getHash=function(){return m+a},window.location.hash="#"+d.getHash()):b==d&&null==b.getMode()&&(b=mxResources.get("copyCreated"),
+this.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+b+"</div>"));null!=c&&c()}),mxUtils.bind(this,function(b){null!=window.console&&null!=b&&console.log("error in loadFile:",a,b);this.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null,mxUtils.bind(this,function(){var a=this.getCurrentFile();null==a?(window.location.hash="",this.showSplash()):window.location.hash="#"+a.getHash()}),null,null,"#"+m+a)}))}}),l=this.getCurrentFile(),m=mxUtils.bind(this,
+function(){g||null==l||!l.isModified()?f():this.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){null!=l&&(window.location.hash=l.getHash())}),f,mxResources.get("cancel"),mxResources.get("discardChanges"))});null==a||0==a.length?m():null==l||d?m():this.showDialog((new PopupDialog(this,this.getUrl()+"#"+a,null,m)).container,320,140,!0,!0)};
App.prototype.getLibraryStorageHint=function(a){var d=a.getTitle();a.constructor!=LocalLibrary&&(d+="\n"+a.getHash());a.constructor==DriveLibrary?d+=" ("+mxResources.get("googleDrive")+")":a.constructor==GitHubLibrary?d+=" ("+mxResources.get("github")+")":a.constructor==TrelloLibrary?d+=" ("+mxResources.get("trello")+")":a.constructor==DropboxLibrary?d+=" ("+mxResources.get("dropbox")+")":a.constructor==OneDriveLibrary?d+=" ("+mxResources.get("oneDrive")+")":a.constructor==StorageLibrary?d+=" ("+
mxResources.get("browser")+")":a.constructor==LocalLibrary&&(d+=" ("+mxResources.get("device")+")");return d};App.prototype.restoreLibraries=function(){this.loadLibraries(mxSettings.getCustomLibraries(),mxUtils.bind(this,function(){this.loadLibraries((urlParams.clibs||"").split(";"))}))};
-App.prototype.loadLibraries=function(a,d){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var b=mxUtils.bind(this,function(a,b){b||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=0,g=[],f=mxUtils.bind(this,function(){if(0==c){if(null!=a)for(var b=a.length-1;0<=b;b--)null!=g[b]&&this.loadLibrary(g[b]);null!=d&&d()}});if(null!=a)for(var m=0;m<a.length;m++){var n=encodeURIComponent(decodeURIComponent(a[m]));mxUtils.bind(this,function(a,d){if(null!=
-a&&0<a.length&&null==this.pendingLibraries[a]&&null==this.sidebar.palettes[a]){c++;var e=mxUtils.bind(this,function(b){delete this.pendingLibraries[a];g[d]=b;c--;f()}),k=mxUtils.bind(this,function(d){b(a,d);c--;f()});this.pendingLibraries[a]=!0;var m=a.substring(0,1);if("L"==m)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var b=decodeURIComponent(a.substring(1));StorageFile.getFileContent(this,b,mxUtils.bind(this,function(a){".scratchpad"==b&&null==a&&
-(a=this.emptyLibraryXml);null!=a?e(new StorageLibrary(this,a,b)):k()}),k)}catch(x){k()}}),0);else if("U"==m){var n=decodeURIComponent(a.substring(1));this.isOffline()||this.loadTemplate(n,mxUtils.bind(this,function(a){null!=a&&0<a.length?e(new UrlLibrary(this,a,n)):k()}),function(){k()},null,!0)}else if("R"==m){m=decodeURIComponent(a.substring(1));try{var m=JSON.parse(m),q={id:m[0],title:m[1],downloadUrl:m[2]};this.remoteInvoke("getFileContent",[q.downloadUrl],null,mxUtils.bind(this,function(a){try{e(new RemoteLibrary(this,
-a,q))}catch(x){k()}}),function(){k()})}catch(y){k()}}else if("S"==m&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(a.substring(1)),function(a){e(a)},k)}catch(y){k()}else{var v=null;"G"==m?null!=this.drive&&null!=this.drive.user&&(v=this.drive):"H"==m?null!=this.gitHub&&null!=this.gitHub.getUser()&&(v=this.gitHub):"T"==m?null!=this.trello&&this.trello.isAuthorized()&&(v=this.trello):"D"==m?null!=this.dropbox&&null!=this.dropbox.getUser()&&(v=this.dropbox):"W"==m&&null!=this.oneDrive&&
-null!=this.oneDrive.getUser()&&(v=this.oneDrive);null!=v?v.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{e(a)}catch(x){k()}}),function(a){k()}):k(!0)}}})(n,m)}f()}};
+App.prototype.loadLibraries=function(a,d){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var b=mxUtils.bind(this,function(a,b){b||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),c=0,g=[],f=mxUtils.bind(this,function(){if(0==c){if(null!=a)for(var b=a.length-1;0<=b;b--)null!=g[b]&&this.loadLibrary(g[b]);null!=d&&d()}});if(null!=a)for(var l=0;l<a.length;l++){var m=encodeURIComponent(decodeURIComponent(a[l]));mxUtils.bind(this,function(a,d){if(null!=
+a&&0<a.length&&null==this.pendingLibraries[a]&&null==this.sidebar.palettes[a]){c++;var e=mxUtils.bind(this,function(b){delete this.pendingLibraries[a];g[d]=b;c--;f()}),k=mxUtils.bind(this,function(d){b(a,d);c--;f()});this.pendingLibraries[a]=!0;var l=a.substring(0,1);if("L"==l)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var b=decodeURIComponent(a.substring(1));StorageFile.getFileContent(this,b,mxUtils.bind(this,function(a){".scratchpad"==b&&null==a&&
+(a=this.emptyLibraryXml);null!=a?e(new StorageLibrary(this,a,b)):k()}),k)}catch(x){k()}}),0);else if("U"==l){var m=decodeURIComponent(a.substring(1));this.isOffline()||this.loadTemplate(m,mxUtils.bind(this,function(a){null!=a&&0<a.length?e(new UrlLibrary(this,a,m)):k()}),function(){k()},null,!0)}else if("R"==l){l=decodeURIComponent(a.substring(1));try{var l=JSON.parse(l),q={id:l[0],title:l[1],downloadUrl:l[2]};this.remoteInvoke("getFileContent",[q.downloadUrl],null,mxUtils.bind(this,function(a){try{e(new RemoteLibrary(this,
+a,q))}catch(x){k()}}),function(){k()})}catch(y){k()}}else if("S"==l&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(a.substring(1)),function(a){e(a)},k)}catch(y){k()}else{var v=null;"G"==l?null!=this.drive&&null!=this.drive.user&&(v=this.drive):"H"==l?null!=this.gitHub&&null!=this.gitHub.getUser()&&(v=this.gitHub):"T"==l?null!=this.trello&&this.trello.isAuthorized()&&(v=this.trello):"D"==l?null!=this.dropbox&&null!=this.dropbox.getUser()&&(v=this.dropbox):"W"==l&&null!=this.oneDrive&&
+null!=this.oneDrive.getUser()&&(v=this.oneDrive);null!=v?v.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{e(a)}catch(x){k()}}),function(a){k()}):k(!0)}}})(m,l)}f()}};
App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();this.commentsSupported()?null==this.commentButton&&(this.commentButton=document.createElement("a"),this.commentButton.setAttribute("title",mxResources.get("comments")),this.commentButton.className="geToolbarButton",this.commentButton.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;float:left;cursor:pointer;width:24px;height:24px;background-size:24px 24px;background-position:center center;background-repeat:no-repeat;background-image:url("+
Editor.commentImage+");","atlas"==uiTheme?(this.commentButton.style.marginRight="10px",this.commentButton.style.marginTop="-3px"):this.commentButton.style.marginTop="min"==uiTheme?"1px":"-5px",mxEvent.addListener(this.commentButton,"click",mxUtils.bind(this,function(){this.actions.get("comments").funct()})),this.buttonContainer.appendChild(this.commentButton),"dark"==uiTheme||"atlas"==uiTheme)&&(this.commentButton.style.filter="invert(100%)"):null!=this.commentButton&&(this.commentButton.parentNode.removeChild(this.commentButton),
-this.commentButton=null);"1"==urlParams.embed||"draw.io"!=this.getServiceName()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||this.isOfflineApp()||null==a?null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null):null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.backgroundColor="#F2931E",this.shareButton.style.borderColor=
-"#F08705",this.shareButton.style.backgroundImage="none",this.shareButton.style.padding="2px 10px 0 10px",this.shareButton.style.marginTop="-10px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop=
-"-3px",this.shareButton.appendChild(a),"dark"!=uiTheme&&"atlas"!=uiTheme&&(this.shareButton.style.color="black",a.style.filter="invert(100%)"),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton))}};
+this.commentButton=null);"1"==urlParams.embed||"draw.io"!=this.getServiceName()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||this.isOfflineApp()||(null!=a?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.backgroundColor="#F2931E",this.shareButton.style.borderColor="#F08705",this.shareButton.style.backgroundImage="none",this.shareButton.style.padding="2px 10px 0 10px",
+this.shareButton.style.marginTop="-10px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight="28px",this.shareButton.style.minWidth="0px",this.shareButton.style.cssFloat="right",this.shareButton.setAttribute("title",mxResources.get("share")),a=document.createElement("img"),a.setAttribute("src",this.shareImage),a.setAttribute("align","absmiddle"),a.style.marginRight="4px",a.style.marginTop="-3px",this.shareButton.appendChild(a),"dark"!=uiTheme&&"atlas"!=uiTheme&&(this.shareButton.style.color=
+"black",a.style.filter="invert(100%)"),mxUtils.write(this.shareButton,mxResources.get("share")),mxEvent.addListener(this.shareButton,"click",mxUtils.bind(this,function(){this.actions.get("share").funct()})),this.buttonContainer.appendChild(this.shareButton)):null!=this.shareButton&&(this.shareButton.parentNode.removeChild(this.shareButton),this.shareButton=null),this.fetchAndShowNotification("device"==this.mode||"google"==this.mode?this.mode:null))}};
App.prototype.fetchAndShowNotification=function(a){a=a||"online";mxUtils.get(NOTIFICATIONS_URL+"?target="+a,mxUtils.bind(this,function(d){if(200<=d.getStatus()&&299>=d.getStatus()){d=JSON.parse(d.getText());for(var b=a+"NotifReadTS",c=parseInt(localStorage.getItem(b)),g=0;g<d.length;g++)d[g].isNew=!c||d[g].timestamp>c;d.sort(function(a,b){return b.timestamp-a.timestamp});this.showNotification(d,b)}}))};
App.prototype.showNotification=function(a,d){function b(a){var b=document.querySelector(".geNotification-count");b.innerHTML=a;b.style.display=0==a?"none":"";b=document.querySelector(".geNotification-bell");b.style.animation=0==a?"none":"";b.className="geNotification-bell"+(0==a?" geNotification-bellOff":"");document.querySelector(".geBell-rad").style.animation=0==a?"none":""}var c=mxUtils.bind(this,function(){this.notificationWin.style.display="none";for(var b=this.notificationWin.querySelectorAll(".circle.active"),
-c=0;c<b.length;c++)b[c].className="circle";a[0]&&localStorage.setItem(d,a[0].timestamp)});null==this.notificationBtn&&(this.notificationBtn=document.createElement("div"),this.notificationBtn.className="geNotification-box",this.notificationBtn.innerHTML='<span class="geNotification-count"></span><div class="geNotification-bell"><span class="geBell-top"></span><span class="geBell-middle"></span><span class="geBell-bottom"></span><span class="geBell-rad"></span></div>',this.buttonContainer.insertBefore(this.notificationBtn,
-this.buttonContainer.firstChild),this.notificationWin=document.createElement("div"),this.notificationWin.className="geNotifPanel",this.notificationWin.style.display="none",document.body.appendChild(this.notificationWin),this.notificationWin.innerHTML='<div class="header"> <div class="menu-icon"> <div class="dash-top"></div> <div class="dash-bottom"></div> <div class="circle"></div> </div> <span class="title">'+mxResources.get("notifications")+'</span> <span id="geNotifClose" class="closeBtn">x</span></div><div class="notifications clearfix">\t<div id="geNotifList" style="position: relative"></div></div>',
-mxEvent.addListener(this.notificationBtn,"click",mxUtils.bind(this,function(){if("none"==this.notificationWin.style.display){this.notificationWin.style.display="";document.querySelector(".notifications").scrollTop=0;var a=this.notificationBtn.getBoundingClientRect();this.notificationWin.style.top=a.top+this.notificationBtn.clientHeight+"px";this.notificationWin.style.left=a.right-this.notificationWin.clientWidth+"px";b(0)}else c()})),mxEvent.addListener(document.getElementById("geNotifClose"),"click",
-c));var g=0,f=document.getElementById("geNotifList");if(0==a.length)f.innerHTML='<div class="line"></div><div class="notification">'+mxUtils.htmlEntities(mxResources.get("none"))+"</div>";else{f.innerHTML='<div class="line"></div>';for(var m=0;m<a.length;m++)(function(a,b){b.isNew&&g++;var c=document.createElement("div");c.className="notification";var d=a.timeSince(new Date(b.timestamp));null==d&&(d=mxResources.get("lessThanAMinute"));c.innerHTML='<div class="circle'+(b.isNew?" active":"")+'"></div><span class="time">'+
-mxUtils.htmlEntities(mxResources.get("timeAgo",[d],"{1} ago"))+"</span><p>"+mxUtils.htmlEntities(b.content)+"</p>";b.link&&mxEvent.addListener(c,"click",function(){window.open(b.link,"notifWin")});f.appendChild(c)})(this,a[m])}b(g)};
+c=0;c<b.length;c++)b[c].className="circle";a[0]&&localStorage.setItem(d,a[0].timestamp)});null==this.notificationBtn&&(this.notificationBtn=document.createElement("div"),this.notificationBtn.className="geNotification-box","min"==uiTheme&&(this.notificationBtn.style.top="4px"),this.notificationBtn.innerHTML='<span class="geNotification-count"></span><div class="geNotification-bell"'+("min"==uiTheme?' style="opacity: 0.5"':"")+'><span class="geBell-top"></span><span class="geBell-middle"></span><span class="geBell-bottom"></span><span class="geBell-rad"></span></div>',
+this.buttonContainer.insertBefore(this.notificationBtn,this.buttonContainer.firstChild),this.notificationWin=document.createElement("div"),this.notificationWin.className="geNotifPanel",this.notificationWin.style.display="none",document.body.appendChild(this.notificationWin),this.notificationWin.innerHTML='<div class="header"> <div class="menu-icon"> <div class="dash-top"></div> <div class="dash-bottom"></div> <div class="circle"></div> </div> <span class="title">'+mxResources.get("notifications")+
+'</span> <span id="geNotifClose" class="closeBtn">x</span></div><div class="notifications clearfix">\t<div id="geNotifList" style="position: relative"></div></div>',mxEvent.addListener(this.notificationBtn,"click",mxUtils.bind(this,function(){if("none"==this.notificationWin.style.display){this.notificationWin.style.display="";document.querySelector(".notifications").scrollTop=0;var a=this.notificationBtn.getBoundingClientRect();this.notificationWin.style.top=a.top+this.notificationBtn.clientHeight+
+"px";this.notificationWin.style.left=a.right-this.notificationWin.clientWidth+"px";b(0)}else c()})),mxEvent.addListener(document.getElementById("geNotifClose"),"click",c));var g=0,f=document.getElementById("geNotifList");if(0==a.length)f.innerHTML='<div class="line"></div><div class="notification">'+mxUtils.htmlEntities(mxResources.get("none"))+"</div>";else{f.innerHTML='<div class="line"></div>';for(var l=0;l<a.length;l++)(function(a,b){b.isNew&&g++;var c=document.createElement("div");c.className=
+"notification";var d=a.timeSince(new Date(b.timestamp));null==d&&(d=mxResources.get("lessThanAMinute"));c.innerHTML='<div class="circle'+(b.isNew?" active":"")+'"></div><span class="time">'+mxUtils.htmlEntities(mxResources.get("timeAgo",[d],"{1} ago"))+"</span><p>"+mxUtils.htmlEntities(b.content)+"</p>";b.link&&mxEvent.addListener(c,"click",function(){window.open(b.link,"notifWin")});f.appendChild(c)})(this,a[l])}b(g)};
App.prototype.save=function(a,d){var b=this.getCurrentFile();if(null!=b&&this.spinner.spin(document.body,mxResources.get("saving"))){this.editor.setStatus("");this.editor.graph.isEditing()&&this.editor.graph.stopEditing();var c=mxUtils.bind(this,function(){b.handleFileSuccess(!0);null!=d&&d()}),g=mxUtils.bind(this,function(c){b.isModified()&&Editor.addRetryToError(c,mxUtils.bind(this,function(){this.save(a,d)}));b.handleFileError(c,!0)});try{a==b.getTitle()?b.save(!0,c,g):b.saveAs(a,c,g)}catch(f){g(f)}}};
App.prototype.pickFolder=function(a,d,b,c,g){b=null!=b?b:!0;var f=this.spinner.pause();b&&a==App.MODE_GOOGLE&&null!=this.drive?this.drive.pickFolder(mxUtils.bind(this,function(a){f();if(a.action==google.picker.Action.PICKED){var b=null;null!=a.docs&&0<a.docs.length&&"folder"==a.docs[0].type&&(b=a.docs[0].id);d(b)}}),g):b&&a==App.MODE_ONEDRIVE&&null!=this.oneDrive?this.oneDrive.pickFolder(mxUtils.bind(this,function(a){f();null!=a&&null!=a.value&&0<a.value.length&&(a=OneDriveFile.prototype.getIdOf(a.value[0]),
d(a))}),c):b&&a==App.MODE_GITHUB&&null!=this.gitHub?this.gitHub.pickFolder(mxUtils.bind(this,function(a){f();d(a)})):b&&a==App.MODE_GITLAB&&null!=this.gitLab?this.gitLab.pickFolder(mxUtils.bind(this,function(a){f();d(a)})):b&&a==App.MODE_TRELLO&&null!=this.trello?this.trello.pickFolder(mxUtils.bind(this,function(a){f();d(a)})):EditorUi.prototype.pickFolder.apply(this,arguments)};
@@ -11055,12 +11055,12 @@ function(){this.spinner.stop()}),mxUtils.bind(this,function(a){this.spinner.stop
b():this.confirm(mxResources.get("replaceIt",[d]),b))};
App.prototype.descriptorChanged=function(){var a=this.getCurrentFile();if(null!=a){if(null!=this.fname){this.fnameWrapper.style.display="block";this.fname.innerHTML="";var d=null!=a.getTitle()?a.getTitle():this.defaultFilename;mxUtils.write(this.fname,d);this.fname.setAttribute("title",d+" - "+mxResources.get("rename"))}var d=this.editor.graph,b=a.isEditable()&&!a.invalidChecksum;d.isEnabled()&&!b&&d.reset();d.setEnabled(b);null==urlParams.rev&&(this.updateDocumentTitle(),a=a.getHash(),0<a.length?
window.location.hash=a:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.editor.graph.isSelectionEmpty()&&this.format.refresh()};
-App.prototype.showAuthDialog=function(a,d,b,c){var g=this.spinner.pause();this.showDialog((new AuthDialog(this,a,d,mxUtils.bind(this,function(a){try{null!=b&&b(a,mxUtils.bind(this,function(){this.hideDialog();g()}))}catch(m){this.editor.setStatus(mxUtils.htmlEntities(m.message))}}))).container,300,d?180:140,!0,!0,mxUtils.bind(this,function(a){null!=c&&c(a);a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))};
-App.prototype.convertFile=function(a,d,b,c,g,f,m,n){var e=d;/\.svg$/i.test(e)||(e=e.substring(0,d.lastIndexOf("."))+c);var k=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(k=!0);if(/\.v(dx|sdx?)$/i.test(d)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var l=new XMLHttpRequest;l.open("GET",a,!0);k||(l.responseType="blob");if(n)for(var p in n)l.setRequestHeader(p,n[p]);l.onload=mxUtils.bind(this,function(){if(200<=
-l.status&&299>=l.status){var a=null;k?(a=JSON.parse(l.responseText),a=this.base64ToBlob(a.content,"application/octet-stream")):a=new Blob([l.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){g(new LocalFile(this,a,e,!0))}),f,d)}else null!=f&&f({message:mxResources.get("errorLoadingFile")})});l.onerror=f;l.send()}else{var u=mxUtils.bind(this,function(b){try{if(/\.pdf$/i.test(d)){var c=Editor.extractGraphModelFromPdf(b);null!=c&&0<c.length&&g(new LocalFile(this,
+App.prototype.showAuthDialog=function(a,d,b,c){var g=this.spinner.pause();this.showDialog((new AuthDialog(this,a,d,mxUtils.bind(this,function(a){try{null!=b&&b(a,mxUtils.bind(this,function(){this.hideDialog();g()}))}catch(l){this.editor.setStatus(mxUtils.htmlEntities(l.message))}}))).container,300,d?180:140,!0,!0,mxUtils.bind(this,function(a){null!=c&&c(a);a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))};
+App.prototype.convertFile=function(a,d,b,c,g,f,l,m){var e=d;/\.svg$/i.test(e)||(e=e.substring(0,d.lastIndexOf("."))+c);var k=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(k=!0);if(/\.v(dx|sdx?)$/i.test(d)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var n=new XMLHttpRequest;n.open("GET",a,!0);k||(n.responseType="blob");if(m)for(var p in m)n.setRequestHeader(p,m[p]);n.onload=mxUtils.bind(this,function(){if(200<=
+n.status&&299>=n.status){var a=null;k?(a=JSON.parse(n.responseText),a=this.base64ToBlob(a.content,"application/octet-stream")):a=new Blob([n.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){g(new LocalFile(this,a,e,!0))}),f,d)}else null!=f&&f({message:mxResources.get("errorLoadingFile")})});n.onerror=f;n.send()}else{var u=mxUtils.bind(this,function(b){try{if(/\.pdf$/i.test(d)){var c=Editor.extractGraphModelFromPdf(b);null!=c&&0<c.length&&g(new LocalFile(this,
c,e,!0))}else/\.png$/i.test(d)?(c=this.extractGraphModelFromPng(b),null!=c?g(new LocalFile(this,c,e,!0)):g(new LocalFile(this,b,d,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,a)?this.parseFile(new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?g(new LocalFile(this,a.responseText,e,!0)):null!=f&&f({message:mxResources.get("errorLoadingFile")}))}),d):g(new LocalFile(this,b,e,!0))}catch(v){null!=
f&&f(v)}});b=/\.png$/i.test(d)||/\.jpe?g$/i.test(d)||/\.pdf$/i.test(d)||null!=b&&"image/"==b.substring(0,6);k?mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=g){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(d)?"data:image/png;base64,"+b:/\.pdf$/i.test(d)?"data:application/pdf;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));u(b)}}else null!=f&&f({code:App.ERROR_UNKNOWN})}),function(){null!=
-f&&f({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=f&&f({code:App.ERROR_TIMEOUT,retry:fn})},n):null!=m?m(a,u,f,b):this.editor.loadUrl(a,u,f,b,null,null,null,n)}};
+f&&f({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=f&&f({code:App.ERROR_TIMEOUT,retry:fn})},m):null!=l?l(a,u,f,b):this.editor.loadUrl(a,u,f,b,null,null,null,m)}};
App.prototype.updateHeader=function(){if(null!=this.menubar){this.appIcon=document.createElement("a");this.appIcon.style.display="block";this.appIcon.style.position="absolute";this.appIcon.style.width="32px";this.appIcon.style.height=this.menubarHeight-28+"px";this.appIcon.style.margin="14px 0px 8px 16px";this.appIcon.style.opacity="0.85";this.appIcon.style.borderRadius="3px";"dark"!=uiTheme&&(this.appIcon.style.backgroundColor="#f08705");mxEvent.disableContextMenu(this.appIcon);mxEvent.addListener(this.appIcon,
"click",mxUtils.bind(this,function(a){this.appIconClicked(a)}));var a=mxClient.IS_SVG?"dark"==uiTheme?"url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzA2LjE4NSAxMjAuMjk2IgogICB2aWV3Qm94PSIyNCAyNiA2OCA2OCIKICAgeT0iMHB4IgogICB4PSIwcHgiCiAgIHZlcnNpb249IjEuMSI+CiAgIAkgPGc+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNDEuMDYxIgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjkiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTUyOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNzUuMDc2IgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjgiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTAwOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGc+PHBhdGgKICAgICAgICAgZD0iTTUyLjc3Myw3Ny4wODRjMCwxLjk1NC0xLjU5OSwzLjU1My0zLjU1MywzLjU1M0gzNi45OTljLTEuOTU0LDAtMy41NTMtMS41OTktMy41NTMtMy41NTN2LTkuMzc5ICAgIGMwLTEuOTU0LDEuNTk5LTMuNTUzLDMuNTUzLTMuNTUzaDEyLjIyMmMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjc3LjA4NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnCiAgICAgICBpZD0iZzM0MTkiPjxwYXRoCiAgICAgICAgIGQ9Ik02Ny43NjIsNDguMDc0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINTEuOTg4Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M0g2NC4yMWMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjQ4LjA3NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnPjxwYXRoCiAgICAgICAgIGQ9Ik04Mi43NTIsNzcuMDg0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINjYuOTc3Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M2gxMi4yMjJjMS45NTQsMCwzLjU1MywxLjU5OSwzLjU1MywzLjU1M1Y3Ny4wODR6IgogICAgICAgICBmaWxsPSIjRkZGRkZGIiAvPjwvZz48L2c+PC9zdmc+)":
"url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJFYmVuZV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjI1IDIyNSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjI1IDIyNTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MXtmaWxsOiNERjZDMEM7fQoJLnN0MntmaWxsOiNGRkZGRkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjI1LDIxNS40YzAsNS4zLTQuMyw5LjYtOS41LDkuNmwwLDBINzcuMWwtNDQuOC00NS41TDYwLjIsMTM0bDgyLjctMTAyLjdsODIuMSw4NC41VjIxNS40eiIvPgo8cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTg0LjYsMTI1LjhoLTIzLjdsLTI1LTQyLjdjNS43LTEuMiw5LjgtNi4yLDkuNy0xMlYzOWMwLTYuOC01LjQtMTIuMy0xMi4yLTEyLjNoLTAuMUg5MS42CgljLTYuOCwwLTEyLjMsNS40LTEyLjMsMTIuMlYzOXYzMi4xYzAsNS44LDQsMTAuOCw5LjcsMTJsLTI1LDQyLjdINDAuNGMtNi44LDAtMTIuMyw1LjQtMTIuMywxMi4ydjAuMXYzMi4xCgljMCw2LjgsNS40LDEyLjMsMTIuMiwxMi4zaDAuMWg0MS43YzYuOCwwLDEyLjMtNS40LDEyLjMtMTIuMnYtMC4xdi0zMi4xYzAtNi44LTUuNC0xMi4zLTEyLjItMTIuM2gtMC4xaC00bDI0LjgtNDIuNGgxOS4zCglsMjQuOSw0Mi40SDE0M2MtNi44LDAtMTIuMyw1LjQtMTIuMywxMi4ydjAuMXYzMi4xYzAsNi44LDUuNCwxMi4zLDEyLjIsMTIuM2gwLjFoNDEuN2M2LjgsMCwxMi4zLTUuNCwxMi4zLTEyLjJ2LTAuMXYtMzIuMQoJYzAtNi44LTUuNC0xMi4zLTEyLjItMTIuM0MxODQuNywxMjUuOCwxODQuNywxMjUuOCwxODQuNiwxMjUuOHoiLz4KPC9zdmc+Cg==)":
@@ -11087,8 +11087,8 @@ mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(a){a.pr
else{var c=!1;this.userPanel.innerHTML="";b=document.createElement("img");b.setAttribute("src",Dialog.prototype.closeImage);b.setAttribute("title",mxResources.get("close"));b.className="geDialogClose";b.style.top="8px";b.style.right="8px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){null!=this.userPanel.parentNode&&this.userPanel.parentNode.removeChild(this.userPanel)}));this.userPanel.appendChild(b);if(null!=this.drive&&(b=this.drive.getUsersList(),0<b.length)){var d=mxUtils.bind(this,
function(a,b){var c=this.getCurrentFile();null!=c&&c.constructor==DriveFile?(this.spinner.spin(document.body,b),this.fileLoaded(null),window.setTimeout(mxUtils.bind(this,function(){this.spinner.stop();a()}),2E3)):a()}),f=mxUtils.bind(this,function(a){var b=document.createElement("tr");b.style.cssText=a.isCurrent?"":"background-color: whitesmoke; cursor: pointer";b.setAttribute("title","User ID: "+a.id);b.innerHTML='<td valign="middle" style="height: 59px;width: 66px;'+(a.isCurrent?"":"border-top: 1px solid rgb(224, 224, 224);")+
'"><img width="50" height="50" style="margin: 4px 8px 0 8px;border-radius:50%;" src="'+(null!=a.pictureUrl?a.pictureUrl:this.defaultUserPicture)+'"/></td><td valign="middle" style="white-space:nowrap;'+(null!=a.pictureUrl?"padding-top:4px;":"")+(a.isCurrent?"":"border-top: 1px solid rgb(224, 224, 224);")+'">'+mxUtils.htmlEntities(a.displayName)+'<br><small style="color:gray;">'+mxUtils.htmlEntities(a.email)+'</small><div style="margin-top:4px;"><i>'+mxResources.get("googleDrive")+"</i></div>";a.isCurrent||
-mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){d(mxUtils.bind(this,function(){this.stateArg=null;this.drive.setUser(a);this.drive.authorize(!0,mxUtils.bind(this,function(){this.setMode(App.MODE_GOOGLE);this.hideDialog();this.showSplash()}),mxUtils.bind(this,function(a){this.handleError(a)}),!0)}),mxResources.get("closingFile")+"...");mxEvent.consume(b)}));return b}),c=!0,m=document.createElement("table");m.style.cssText="font-size:10pt;padding: 20px 0 0 0;min-width: 300px;border-spacing: 0;";
-for(var n=0;n<b.length;n++)m.appendChild(f(b[n]));this.userPanel.appendChild(m);b=document.createElement("div");b.style.textAlign="left";b.style.padding="8px";b.style.whiteSpace="nowrap";b.style.borderTop="1px solid rgb(224, 224, 224)";f=mxUtils.button(mxResources.get("signOut"),mxUtils.bind(this,function(){this.confirm(mxResources.get("areYouSure"),mxUtils.bind(this,function(){d(mxUtils.bind(this,function(){this.stateArg=null;this.drive.logout();this.setMode(App.MODE_GOOGLE);this.hideDialog();this.showSplash()}),
+mxEvent.addListener(b,"click",mxUtils.bind(this,function(b){d(mxUtils.bind(this,function(){this.stateArg=null;this.drive.setUser(a);this.drive.authorize(!0,mxUtils.bind(this,function(){this.setMode(App.MODE_GOOGLE);this.hideDialog();this.showSplash()}),mxUtils.bind(this,function(a){this.handleError(a)}),!0)}),mxResources.get("closingFile")+"...");mxEvent.consume(b)}));return b}),c=!0,l=document.createElement("table");l.style.cssText="font-size:10pt;padding: 20px 0 0 0;min-width: 300px;border-spacing: 0;";
+for(var m=0;m<b.length;m++)l.appendChild(f(b[m]));this.userPanel.appendChild(l);b=document.createElement("div");b.style.textAlign="left";b.style.padding="8px";b.style.whiteSpace="nowrap";b.style.borderTop="1px solid rgb(224, 224, 224)";f=mxUtils.button(mxResources.get("signOut"),mxUtils.bind(this,function(){this.confirm(mxResources.get("areYouSure"),mxUtils.bind(this,function(){d(mxUtils.bind(this,function(){this.stateArg=null;this.drive.logout();this.setMode(App.MODE_GOOGLE);this.hideDialog();this.showSplash()}),
mxResources.get("signOut"))}))}));f.className="geBtn";f.style["float"]="right";b.appendChild(f);f=mxUtils.button(mxResources.get("addAccount"),mxUtils.bind(this,function(){var a=this.drive.createAuthWin();a.blur();window.focus();d(mxUtils.bind(this,function(){this.stateArg=null;this.drive.authorize(!1,mxUtils.bind(this,function(){this.setMode(App.MODE_GOOGLE);this.hideDialog();this.showSplash()}),mxUtils.bind(this,function(a){this.handleError(a)}),!0,a)}),mxResources.get("closingFile")+"...")}));
f.className="geBtn";f.style.margin="0px";b.appendChild(f);this.userPanel.appendChild(b)}b=mxUtils.bind(this,function(a,b,d,f){if(null!=a){c&&this.userPanel.appendChild(document.createElement("hr"));c=!0;var e=document.createElement("table");e.style.cssText="font-size:10pt;padding:"+(c?"10":"20")+"px 20px 10px 10px;";e.innerHTML+='<tr><td valign="top">'+(null!=b?'<img style="margin-right:6px;" src="'+b+'" width="40" height="40"/></td>':"")+'<td valign="middle" style="white-space:nowrap;">'+mxUtils.htmlEntities(a.displayName)+
(null!=a.email?'<br><small style="color:gray;">'+mxUtils.htmlEntities(a.email)+"</small>":"")+(null!=f?'<div style="margin-top:4px;"><i>'+mxUtils.htmlEntities(f)+"</i></div>":"")+"</td></tr>";this.userPanel.appendChild(e);a=document.createElement("div");a.style.textAlign="center";a.style.paddingBottom="12px";a.style.whiteSpace="nowrap";null!=d&&(d=mxUtils.button(mxResources.get("signOut"),d),d.className="geBtn",a.appendChild(d));this.userPanel.appendChild(a)}});null!=this.dropbox&&b(this.dropbox.getUser(),
@@ -11103,46 +11103,46 @@ a.displayName),this.userElement.style.display="block")):this.userElement.style.d
App.prototype.getCurrentUser=function(){var a=null;null!=this.drive&&null!=this.drive.getUser()?a=this.drive.getUser():null!=this.oneDrive&&null!=this.oneDrive.getUser()?a=this.oneDrive.getUser():null!=this.dropbox&&null!=this.dropbox.getUser()?a=this.dropbox.getUser():null!=this.gitHub&&null!=this.gitHub.getUser()&&(a=this.gitHub.getUser());return a};var editorResetGraph=Editor.prototype.resetGraph;
Editor.prototype.resetGraph=function(){editorResetGraph.apply(this,arguments);this.graph.pageFormat=mxSettings.getPageFormat()};(function(){var a=mxPopupMenu.prototype.showMenu;mxPopupMenu.prototype.showMenu=function(){a.apply(this,arguments);this.div.style.overflowY="auto";this.div.style.overflowX="hidden";this.div.style.maxHeight=Math.max(document.body.clientHeight,document.documentElement.clientHeight)-10+"px"};Menus.prototype.createHelpLink=function(a){var b=document.createElement("span");b.setAttribute("title",mxResources.get("help"));b.style.cssText="color:blue;text-decoration:underline;margin-left:8px;cursor:help;";
var d=document.createElement("img");mxUtils.setOpacity(d,50);d.style.height="16px";d.style.width="16px";d.setAttribute("border","0");d.setAttribute("valign","bottom");d.setAttribute("src",Editor.helpImage);b.appendChild(d);mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){null!=this.editorUi.menubar&&this.editorUi.menubar.hideMenu();this.editorUi.openLink(a);mxEvent.consume(b)}));return b};Menus.prototype.addLinkToItem=function(a,c){null!=a&&a.firstChild.nextSibling.appendChild(this.createHelpLink(c))};
-var d=Menus.prototype.init;Menus.prototype.init=function(){function a(a,b,c){this.ui=a;this.previousExtFonts=this.extFonts=b;this.prevCustomFonts=this.customFonts=c}d.apply(this,arguments);var c=this.editorUi,g=c.editor.graph,f=mxUtils.bind(g,g.isEnabled),m=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),n=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&
+var d=Menus.prototype.init;Menus.prototype.init=function(){function a(a,b,c){this.ui=a;this.previousExtFonts=this.extFonts=b;this.prevCustomFonts=this.customFonts=c}d.apply(this,arguments);var c=this.editorUi,g=c.editor.graph,f=mxUtils.bind(g,g.isEnabled),l=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),m=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&
"1"==urlParams.db)&&mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode),e=("www.draw.io"==window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname||"app.diagrams.net"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!mxClient.IS_IOS&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),k="1"==urlParams.tr&&mxClient.IS_SVG&&(null==document.documentMode||
9<document.documentMode);mxClient.IS_SVG||c.isOffline()||((new Image).src=IMAGE_PATH+"/help.png");"1"==urlParams.noFileMenu&&(this.defaultMenuItems=this.defaultMenuItems.filter(function(a){return"file"!=a}));c.actions.addAction("new...",function(){var a=c.isOffline(),b=new NewDialog(c,a,!(c.mode==App.MODE_DEVICE&&"chooseFileSystemEntries"in window));c.showDialog(b.container,a?350:620,a?70:440,!0,!0,function(a){a&&null==c.getCurrentFile()&&c.showSplash()});b.init()});c.actions.put("insertTemplate",
-new Action(mxResources.get("template")+"...",function(){var a=new NewDialog(c,null,!1,function(a){c.hideDialog();if(null!=a){var b=c.editor.graph.getFreeInsertPoint();g.setSelectionCells(c.importXml(a,Math.max(b.x,20),Math.max(b.y,20),!0));g.scrollCellToVisible(g.getSelectionCell())}},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));c.showDialog(a.container,620,440,!0,!0)})).isEnabled=f;var l=c.actions.addAction("points",function(){c.editor.graph.view.setUnit(mxConstants.POINTS)});
-l.setToggleAction(!0);l.setSelectedCallback(function(){return c.editor.graph.view.unit==mxConstants.POINTS});l=c.actions.addAction("inches",function(){c.editor.graph.view.setUnit(mxConstants.INCHES)});l.setToggleAction(!0);l.setSelectedCallback(function(){return c.editor.graph.view.unit==mxConstants.INCHES});l=c.actions.addAction("millimeters",function(){c.editor.graph.view.setUnit(mxConstants.MILLIMETERS)});l.setToggleAction(!0);l.setSelectedCallback(function(){return c.editor.graph.view.unit==mxConstants.MILLIMETERS});
-this.put("units",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["points","millimeters"],b)})));l=c.actions.addAction("ruler",function(){mxSettings.setRulerOn(!mxSettings.isRulerOn());mxSettings.save();null!=c.ruler?(c.ruler.destroy(),c.ruler=null):c.ruler=new mxDualRuler(c,c.editor.graph.view.unit);c.refresh()});l.setEnabled(c.canvasSupported&&9!=document.documentMode);l.setToggleAction(!0);l.setSelectedCallback(function(){return null!=c.ruler});c.actions.addAction("properties...",
+new Action(mxResources.get("template")+"...",function(){var a=new NewDialog(c,null,!1,function(a){c.hideDialog();if(null!=a){var b=c.editor.graph.getFreeInsertPoint();g.setSelectionCells(c.importXml(a,Math.max(b.x,20),Math.max(b.y,20),!0));g.scrollCellToVisible(g.getSelectionCell())}},null,null,null,null,null,null,null,null,null,null,!1,mxResources.get("insert"));c.showDialog(a.container,620,440,!0,!0)})).isEnabled=f;var n=c.actions.addAction("points",function(){c.editor.graph.view.setUnit(mxConstants.POINTS)});
+n.setToggleAction(!0);n.setSelectedCallback(function(){return c.editor.graph.view.unit==mxConstants.POINTS});n=c.actions.addAction("inches",function(){c.editor.graph.view.setUnit(mxConstants.INCHES)});n.setToggleAction(!0);n.setSelectedCallback(function(){return c.editor.graph.view.unit==mxConstants.INCHES});n=c.actions.addAction("millimeters",function(){c.editor.graph.view.setUnit(mxConstants.MILLIMETERS)});n.setToggleAction(!0);n.setSelectedCallback(function(){return c.editor.graph.view.unit==mxConstants.MILLIMETERS});
+this.put("units",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["points","millimeters"],b)})));n=c.actions.addAction("ruler",function(){mxSettings.setRulerOn(!mxSettings.isRulerOn());mxSettings.save();null!=c.ruler?(c.ruler.destroy(),c.ruler=null):c.ruler=new mxDualRuler(c,c.editor.graph.view.unit);c.refresh()});n.setEnabled(c.canvasSupported&&9!=document.documentMode);n.setToggleAction(!0);n.setSelectedCallback(function(){return null!=c.ruler});c.actions.addAction("properties...",
function(){var a=new FilePropertiesDialog(c);c.showDialog(a.container,320,120,!0,!0);a.init()}).isEnabled=f;window.mxFreehand&&(c.actions.put("insertFreehand",new Action(mxResources.get("freehand")+"...",function(a){g.isEnabled()&&(null==this.freehandWindow&&(this.freehandWindow=new FreehandWindow(c,document.body.offsetWidth-420,102,176,104)),g.freehand.isDrawing()?g.freehand.stopDrawing():g.freehand.startDrawing(),this.freehandWindow.window.setVisible(g.freehand.isDrawing()))})).isEnabled=function(){return f()&&
mxClient.IS_SVG});c.actions.put("exportXml",new Action(mxResources.get("formatXml")+"...",function(){var a=document.createElement("div");a.style.whiteSpace="nowrap";var b=null==c.pages||1>=c.pages.length,d=document.createElement("h3");mxUtils.write(d,mxResources.get("formatXml"));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";a.appendChild(d);var e=c.addCheckbox(a,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),f=c.addCheckbox(a,mxResources.get("compressed"),
!0),k=c.addCheckbox(a,mxResources.get("allPages"),!b,b);k.style.marginBottom="16px";mxEvent.addListener(e,"change",function(){e.checked?k.setAttribute("disabled","disabled"):k.removeAttribute("disabled")});a=new CustomDialog(c,a,mxUtils.bind(this,function(){c.downloadFile("xml",!f.checked,null,!e.checked,b||!k.checked)}),null,mxResources.get("export"));c.showDialog(a.container,300,180,!0,!0)}));c.actions.put("exportUrl",new Action(mxResources.get("url")+"...",function(){c.showPublishLinkDialog(mxResources.get("url"),
-!0,null,null,function(a,b,d,e,f,g){a=new EmbedDialog(c,c.createLink(a,b,d,e,f,g,null,!0));c.showDialog(a.container,440,240,!0,!0);a.init()})}));c.actions.put("exportHtml",new Action(mxResources.get("formatHtmlEmbedded")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(a){c.spinner.stop();c.showHtmlDialog(mxResources.get("export"),null,a,function(a,b,d,e,f,g,k,m,l,n){c.createHtml(a,b,d,e,f,g,k,m,l,n,mxUtils.bind(this,function(a,b){var d=
+!0,null,null,function(a,b,d,e,f,g){a=new EmbedDialog(c,c.createLink(a,b,d,e,f,g,null,!0));c.showDialog(a.container,440,240,!0,!0);a.init()})}));c.actions.put("exportHtml",new Action(mxResources.get("formatHtmlEmbedded")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(a){c.spinner.stop();c.showHtmlDialog(mxResources.get("export"),null,a,function(a,b,d,e,f,g,k,l,m,n){c.createHtml(a,b,d,e,f,g,k,l,m,n,mxUtils.bind(this,function(a,b){var d=
c.getBaseFilename(k),e='\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n<!DOCTYPE html>\n<html>\n<head>\n<title>'+mxUtils.htmlEntities(d)+'</title>\n<meta charset="utf-8"/>\n</head>\n<body>'+a+"\n"+b+"\n</body>\n</html>";c.saveData(d+".html","html",e,"text/html")}))})})}));c.actions.put("exportPdf",new Action(mxResources.get("formatPdf")+"...",function(){if(EditorUi.isElectronApp||!c.isOffline()&&!c.printPdfExport){var a=null==c.pages||1>=c.pages.length,b=document.createElement("div");
-b.style.whiteSpace="nowrap";var d=document.createElement("h3");mxUtils.write(d,mxResources.get("formatPdf"));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";b.appendChild(d);var e=function(){f!=this&&this.checked?(l.removeAttribute("disabled"),l.checked=!g.pageVisible):(l.setAttribute("disabled","disabled"),l.checked=!1)},d=180;if(c.pdfPageExport&&!a){var f=c.addRadiobox(b,"pages",mxResources.get("allPages"),!0),k=c.addRadiobox(b,"pages",mxResources.get("currentPage"),
-!1),m=c.addRadiobox(b,"pages",mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),l=c.addCheckbox(b,mxResources.get("crop"),!1,!0),n=c.addCheckbox(b,mxResources.get("grid"),!1,!1);mxEvent.addListener(f,"change",e);mxEvent.addListener(k,"change",e);mxEvent.addListener(m,"change",e);d+=60}else m=c.addCheckbox(b,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),l=c.addCheckbox(b,mxResources.get("crop"),!g.pageVisible||!c.pdfPageExport,!c.pdfPageExport),n=c.addCheckbox(b,mxResources.get("grid"),
-!1,!1),c.pdfPageExport||mxEvent.addListener(m,"change",e);var p=null,q=null;mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=c.getServiceName()||(q=c.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),!0),p=c.addCheckbox(b,mxResources.get("transparentBackground"),!1),d+=60);b=new CustomDialog(c,b,mxUtils.bind(this,function(){c.downloadFile("pdf",null,null,!m.checked,a?!0:!f.checked,!l.checked,null!=p&&p.checked,null,null,n.checked,null!=q&&q.checked)}),null,mxResources.get("export"));
+b.style.whiteSpace="nowrap";var d=document.createElement("h3");mxUtils.write(d,mxResources.get("formatPdf"));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";b.appendChild(d);var e=function(){f!=this&&this.checked?(m.removeAttribute("disabled"),m.checked=!g.pageVisible):(m.setAttribute("disabled","disabled"),m.checked=!1)},d=180;if(c.pdfPageExport&&!a){var f=c.addRadiobox(b,"pages",mxResources.get("allPages"),!0),k=c.addRadiobox(b,"pages",mxResources.get("currentPage"),
+!1),l=c.addRadiobox(b,"pages",mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),m=c.addCheckbox(b,mxResources.get("crop"),!1,!0),n=c.addCheckbox(b,mxResources.get("grid"),!1,!1);mxEvent.addListener(f,"change",e);mxEvent.addListener(k,"change",e);mxEvent.addListener(l,"change",e);d+=60}else l=c.addCheckbox(b,mxResources.get("selectionOnly"),!1,g.isSelectionEmpty()),m=c.addCheckbox(b,mxResources.get("crop"),!g.pageVisible||!c.pdfPageExport,!c.pdfPageExport),n=c.addCheckbox(b,mxResources.get("grid"),
+!1,!1),c.pdfPageExport||mxEvent.addListener(l,"change",e);var p=null,q=null;mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=c.getServiceName()||(q=c.addCheckbox(b,mxResources.get("includeCopyOfMyDiagram"),!0),p=c.addCheckbox(b,mxResources.get("transparentBackground"),!1),d+=60);b=new CustomDialog(c,b,mxUtils.bind(this,function(){c.downloadFile("pdf",null,null,!l.checked,a?!0:!f.checked,!m.checked,null!=p&&p.checked,null,null,n.checked,null!=q&&q.checked)}),null,mxResources.get("export"));
c.showDialog(b.container,300,d,!0,!0)}else c.showDialog((new PrintDialog(c,mxResources.get("formatPdf"))).container,360,null!=c.pages&&1<c.pages.length&&(c.editor.editable||"1"!=urlParams["hide-pages"])?450:370,!0,!0)}));c.actions.addAction("open...",function(){c.pickFile()});c.actions.addAction("close",function(){function a(){null!=b&&b.removeDraft();c.fileLoaded(null)}var b=c.getCurrentFile();null!=b&&b.isModified()?c.confirm(mxResources.get("allChangesLost"),null,a,mxResources.get("cancel"),mxResources.get("discardChanges")):
a()});c.actions.addAction("editShape...",mxUtils.bind(this,function(){g.getSelectionCells();if(1==g.getSelectionCount()){var a=g.getSelectionCell(),b=g.view.getState(a);null!=b&&null!=b.shape&&null!=b.shape.stencil&&(a=new EditShapeDialog(c,a,mxResources.get("editShape")+":",630,400),c.showDialog(a.container,640,480,!0,!1),a.init())}}));c.actions.addAction("revisionHistory...",function(){c.isRevisionHistorySupported()?c.spinner.spin(document.body,mxResources.get("loading"))&&c.getRevisions(mxUtils.bind(this,
-function(a,b){c.spinner.stop();var d=new RevisionDialog(c,a,b);c.showDialog(d.container,640,480,!0,!0);d.init()}),mxUtils.bind(this,function(a){c.handleError(a)})):c.showError(mxResources.get("error"),mxResources.get("notAvailable"),mxResources.get("ok"))});c.actions.addAction("createRevision",function(){c.actions.get("save").funct()},null,null,Editor.ctrlKey+"+S");l=c.actions.addAction("synchronize",function(){c.synchronizeCurrentFile("none"==DrawioFile.SYNC)},null,null,"Alt+Shift+S");"none"==DrawioFile.SYNC&&
-(l.label=mxResources.get("refresh"));c.actions.addAction("upload...",function(){var a=c.getCurrentFile();null!=a&&(window.drawdata=c.getFileData(),a=null!=a.getTitle()?a.getTitle():c.defaultFilename,c.openLink(window.location.protocol+"//"+window.location.host+"/?create=drawdata&"+(c.mode==App.MODE_DROPBOX?"mode=dropbox&":"")+"title="+encodeURIComponent(a),null,!0))});"undefined"!==typeof MathJax&&(l=c.actions.addAction("mathematicalTypesetting",function(){var a=new ChangePageSetup(c);a.ignoreColor=
-!0;a.ignoreImage=!0;a.mathEnabled=!c.isMathEnabled();g.model.execute(a)}),l.setToggleAction(!0),l.setSelectedCallback(function(){return c.isMathEnabled()}),l.isEnabled=f);isLocalStorage&&(l=c.actions.addAction("showStartScreen",function(){mxSettings.setShowStartScreen(!mxSettings.getShowStartScreen());mxSettings.save()}),l.setToggleAction(!0),l.setSelectedCallback(function(){return mxSettings.getShowStartScreen()}));var p=c.actions.addAction("autosave",function(){c.editor.setAutosave(!c.editor.autosave)});
+function(a,b){c.spinner.stop();var d=new RevisionDialog(c,a,b);c.showDialog(d.container,640,480,!0,!0);d.init()}),mxUtils.bind(this,function(a){c.handleError(a)})):c.showError(mxResources.get("error"),mxResources.get("notAvailable"),mxResources.get("ok"))});c.actions.addAction("createRevision",function(){c.actions.get("save").funct()},null,null,Editor.ctrlKey+"+S");n=c.actions.addAction("synchronize",function(){c.synchronizeCurrentFile("none"==DrawioFile.SYNC)},null,null,"Alt+Shift+S");"none"==DrawioFile.SYNC&&
+(n.label=mxResources.get("refresh"));c.actions.addAction("upload...",function(){var a=c.getCurrentFile();null!=a&&(window.drawdata=c.getFileData(),a=null!=a.getTitle()?a.getTitle():c.defaultFilename,c.openLink(window.location.protocol+"//"+window.location.host+"/?create=drawdata&"+(c.mode==App.MODE_DROPBOX?"mode=dropbox&":"")+"title="+encodeURIComponent(a),null,!0))});"undefined"!==typeof MathJax&&(n=c.actions.addAction("mathematicalTypesetting",function(){var a=new ChangePageSetup(c);a.ignoreColor=
+!0;a.ignoreImage=!0;a.mathEnabled=!c.isMathEnabled();g.model.execute(a)}),n.setToggleAction(!0),n.setSelectedCallback(function(){return c.isMathEnabled()}),n.isEnabled=f);isLocalStorage&&(n=c.actions.addAction("showStartScreen",function(){mxSettings.setShowStartScreen(!mxSettings.getShowStartScreen());mxSettings.save()}),n.setToggleAction(!0),n.setSelectedCallback(function(){return mxSettings.getShowStartScreen()}));var p=c.actions.addAction("autosave",function(){c.editor.setAutosave(!c.editor.autosave)});
p.setToggleAction(!0);p.setSelectedCallback(function(){return p.isEnabled()&&c.editor.autosave});c.actions.addAction("editGeometry...",function(){for(var a=g.getSelectionCells(),b=[],d=0;d<a.length;d++)g.getModel().isVertex(a[d])&&b.push(a[d]);0<b.length&&(a=new EditGeometryDialog(c,b),c.showDialog(a.container,200,270,!0,!0),a.init())},null,null,Editor.ctrlKey+"+Shift+M");var u=null;c.actions.addAction("copyStyle",function(){g.isEnabled()&&!g.isSelectionEmpty()&&(u=g.copyStyle(g.getSelectionCell()))},
null,null,Editor.ctrlKey+"+Shift+C");c.actions.addAction("pasteStyle",function(){g.isEnabled()&&!g.isSelectionEmpty()&&null!=u&&g.pasteStyle(u,g.getSelectionCells())},null,null,Editor.ctrlKey+"+Shift+V");c.actions.put("pageBackgroundImage",new Action(mxResources.get("backgroundImage")+"...",function(){if(!c.isOffline()){var a=new BackgroundImageDialog(c,function(a){c.setBackgroundImage(a)});c.showDialog(a.container,320,170,!0,!0);a.init()}}));c.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+
-"...",function(){c.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://www.diagrams.net/doc/faq/export-diagram",mxUtils.bind(this,function(a,b,d,e,f,g,k,m,l,n,p,q,t){a=parseInt(a);!isNaN(a)&&0<a&&c.exportSvg(a/100,b,d,e,f,g,k,!m,!1,n,q,t)}),!0,null,"svg",!0)}));c.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){c.isExportToCanvas()?c.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://www.diagrams.net/doc/faq/export-diagram",
-mxUtils.bind(this,function(a,b,d,e,f,g,k,m,l,n,p,q,t){a=parseInt(a);!isNaN(a)&&0<a&&c.exportImage(a/100,b,d,e,f,k,!m,!1,null,p,null,q,t)}),!0,!0,"png",!0):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||c.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(a,b,d,e,f){c.downloadFile(b?"xmlpng":"png",null,null,a,null,null,d,e,f)}),!1,!0)}));c.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){c.isExportToCanvas()?c.showExportDialog(mxResources.get("image"),
-!1,mxResources.get("export"),"https://www.diagrams.net/doc/faq/export-diagram",mxUtils.bind(this,function(a,b,d,e,f,g,k,m,l,n,p,q,t){a=parseInt(a);!isNaN(a)&&0<a&&c.exportImage(a/100,!1,d,e,!1,k,!m,!1,"jpeg",p,null,q,t)}),!0,!1,"jpeg",!0):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||c.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(a,b,d,e,f){c.downloadFile("jpeg",null,null,a,null,null,null,e,f)}),!0,!0)}));l=c.actions.put("shadowVisible",new Action(mxResources.get("shadow"),
-function(){g.setShadowVisible(!g.shadowVisible)}));l.setToggleAction(!0);l.setSelectedCallback(function(){return g.shadowVisible});c.actions.put("about",new Action(mxResources.get("about")+" "+EditorUi.VERSION+"...",function(){c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.alert(c.editor.appName+" "+EditorUi.VERSION):c.openLink("https://www.diagrams.net/")}));c.actions.addAction("support...",function(){EditorUi.isElectronApp?c.openLink("https://github.com/jgraph/drawio-desktop/wiki/Getting-Support"):
+"...",function(){c.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://www.diagrams.net/doc/faq/export-diagram",mxUtils.bind(this,function(a,b,d,e,f,g,k,l,m,n,p,q,t){a=parseInt(a);!isNaN(a)&&0<a&&c.exportSvg(a/100,b,d,e,f,g,k,!l,!1,n,q,t)}),!0,null,"svg",!0)}));c.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){c.isExportToCanvas()?c.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://www.diagrams.net/doc/faq/export-diagram",
+mxUtils.bind(this,function(a,b,d,e,f,g,k,l,m,n,p,q,t){a=parseInt(a);!isNaN(a)&&0<a&&c.exportImage(a/100,b,d,e,f,k,!l,!1,null,p,null,q,t)}),!0,!0,"png",!0):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||c.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(a,b,d,e,f){c.downloadFile(b?"xmlpng":"png",null,null,a,null,null,d,e,f)}),!1,!0)}));c.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){c.isExportToCanvas()?c.showExportDialog(mxResources.get("image"),
+!1,mxResources.get("export"),"https://www.diagrams.net/doc/faq/export-diagram",mxUtils.bind(this,function(a,b,d,e,f,g,k,l,m,n,p,q,t){a=parseInt(a);!isNaN(a)&&0<a&&c.exportImage(a/100,!1,d,e,!1,k,!l,!1,"jpeg",p,null,q,t)}),!0,!1,"jpeg",!0):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||c.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(a,b,d,e,f){c.downloadFile("jpeg",null,null,a,null,null,null,e,f)}),!0,!0)}));n=c.actions.put("shadowVisible",new Action(mxResources.get("shadow"),
+function(){g.setShadowVisible(!g.shadowVisible)}));n.setToggleAction(!0);n.setSelectedCallback(function(){return g.shadowVisible});c.actions.put("about",new Action(mxResources.get("about")+" "+EditorUi.VERSION+"...",function(){c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.alert(c.editor.appName+" "+EditorUi.VERSION):c.openLink("https://www.diagrams.net/")}));c.actions.addAction("support...",function(){EditorUi.isElectronApp?c.openLink("https://github.com/jgraph/drawio-desktop/wiki/Getting-Support"):
c.openLink("https://github.com/jgraph/drawio/wiki/Getting-Support")});c.actions.addAction("exportOptionsDisabled...",function(){c.handleError({message:mxResources.get("exportOptionsDisabledDetails")},mxResources.get("exportOptionsDisabled"))});c.actions.addAction("keyboardShortcuts...",function(){!mxClient.IS_SVG||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?c.openLink("https://viewer.diagrams.net/#Uhttps%3A%2F%2Fviewer.diagrams.net%2Fshortcuts.svg"):c.openLink("shortcuts.svg")});c.actions.addAction("feedback...",
-function(){var a=new FeedbackDialog(c);c.showDialog(a.container,610,360,!0,!1);a.init()});c.actions.addAction("quickStart...",function(){c.openLink("https://www.youtube.com/watch?v=Z0D96ZikMkc")});c.actions.addAction("forkme",function(){EditorUi.isElectronApp?c.openLink("https://github.com/jgraph/drawio-desktop"):c.openLink("https://github.com/jgraph/drawio")}).label="Fork me on GitHub...";c.actions.addAction("downloadDesktop...",function(){c.openLink("https://get.diagrams.net/")});l=c.actions.addAction("tags...",
-mxUtils.bind(this,function(){null==this.tagsWindow?(this.tagsWindow=new TagsWindow(c,document.body.offsetWidth-380,230,300,120),this.tagsWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("tags"))):this.tagsWindow.window.setVisible(!this.tagsWindow.window.isVisible())}));l.setToggleAction(!0);l.setSelectedCallback(mxUtils.bind(this,
-function(){return null!=this.tagsWindow&&this.tagsWindow.window.isVisible()}));l=c.actions.addAction("find...",mxUtils.bind(this,function(){null==this.findWindow?(this.findWindow=new FindWindow(c,document.body.offsetWidth-300,110,240,155),this.findWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("find"))}),this.findWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("find"))}),this.findWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("find"))):
-this.findWindow.window.setVisible(!this.findWindow.window.isVisible())}));l.setToggleAction(!0);l.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.findWindow&&this.findWindow.window.isVisible()}));c.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){c.exportVisio()}));isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&c.actions.addAction("configuration...",function(){var a=localStorage.getItem(".configuration"),b=[[mxResources.get("reset"),
+function(){var a=new FeedbackDialog(c);c.showDialog(a.container,610,360,!0,!1);a.init()});c.actions.addAction("quickStart...",function(){c.openLink("https://www.youtube.com/watch?v=Z0D96ZikMkc")});c.actions.addAction("forkme",function(){EditorUi.isElectronApp?c.openLink("https://github.com/jgraph/drawio-desktop"):c.openLink("https://github.com/jgraph/drawio")}).label="Fork me on GitHub...";c.actions.addAction("downloadDesktop...",function(){c.openLink("https://get.diagrams.net/")});n=c.actions.addAction("tags...",
+mxUtils.bind(this,function(){null==this.tagsWindow?(this.tagsWindow=new TagsWindow(c,document.body.offsetWidth-380,230,300,120),this.tagsWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("tags"))):this.tagsWindow.window.setVisible(!this.tagsWindow.window.isVisible())}));n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,
+function(){return null!=this.tagsWindow&&this.tagsWindow.window.isVisible()}));n=c.actions.addAction("find...",mxUtils.bind(this,function(){null==this.findWindow?(this.findWindow=new FindWindow(c,document.body.offsetWidth-300,110,240,155),this.findWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("find"))}),this.findWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("find"))}),this.findWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("find"))):
+this.findWindow.window.setVisible(!this.findWindow.window.isVisible())}));n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.findWindow&&this.findWindow.window.isVisible()}));c.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){c.exportVisio()}));isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&c.actions.addAction("configuration...",function(){var a=localStorage.getItem(".configuration"),b=[[mxResources.get("reset"),
function(a,b){c.confirm(mxResources.get("areYouSure"),function(){try{localStorage.removeItem(".configuration"),mxEvent.isShiftDown(a)&&(localStorage.removeItem(".drawio-config"),localStorage.removeItem(".mode")),c.hideDialog(),c.alert(mxResources.get("restartForChangeRequired"))}catch(D){c.handleError(D)}})}]];EditorUi.isElectronApp||b.push([mxResources.get("link"),function(a,b){if(0<b.value.length)try{var d=JSON.parse(b.value),e=window.location.protocol+"//"+window.location.host+"/"+c.getSearch()+
"#_CONFIG_"+Graph.compress(JSON.stringify(d)),f=new EmbedDialog(c,e);c.showDialog(f.container,440,240,!0);f.init()}catch(I){c.handleError(I)}else c.handleError({message:mxResources.get("invalidInput")})}]);a=new TextareaDialog(c,mxResources.get("configuration")+":",null!=a?JSON.stringify(JSON.parse(a),null,2):"",function(a){if(null!=a)try{if(0<a.length){var b=JSON.parse(a);localStorage.setItem(".configuration",JSON.stringify(b))}else localStorage.removeItem(".configuration");c.hideDialog();c.alert(mxResources.get("restartForChangeRequired"))}catch(D){c.handleError(D)}},
null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/configure-diagram-editor",b);a.textarea.style.width="600px";a.textarea.style.height="380px";c.showDialog(a.container,620,460,!0,!1);a.init()});if(mxClient.IS_CHROMEAPP||isLocalStorage){this.put("language",new Menu(mxUtils.bind(this,function(a,b){var d=mxUtils.bind(this,function(d){var e=""==d?mxResources.get("automatic"):mxLanguageMap[d],f=null;""!=e&&(f=a.addItem(e,null,mxUtils.bind(this,function(){mxSettings.setLanguage(d);
mxSettings.save();mxClient.language=d;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);c.alert(mxResources.get("restartForChangeRequired"))}),b),(d==mxLanguage||""==d&&null==mxLanguage)&&a.addCheckmark(f,Editor.checkmarkImage));return f});d("");a.addSeparator(b);for(var e in mxLanguageMap)d(e)})));var t=Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(a){var b=t.apply(this,arguments);if(null!=b&&"1"!=urlParams.noLangIcon){var c=this.get("language");if(null!=c){c=
b.addMenu("",c.funct);c.setAttribute("title",mxResources.get("language"));c.style.width="16px";c.style.paddingTop="2px";c.style.paddingLeft="4px";c.style.zIndex="1";c.style.position="absolute";c.style.display="block";c.style.cursor="pointer";c.style.right="17px";"atlas"==uiTheme?(c.style.top="6px",c.style.right="15px"):c.style.top="min"==uiTheme?"2px":"0px";var d=document.createElement("div");d.style.backgroundImage="url("+Editor.globeImage+")";d.style.backgroundPosition="center center";d.style.backgroundRepeat=
"no-repeat";d.style.backgroundSize="19px 19px";d.style.position="absolute";d.style.height="19px";d.style.width="19px";d.style.marginTop="2px";d.style.zIndex="1";c.appendChild(d);mxUtils.setOpacity(c,40);if("atlas"==uiTheme||"dark"==uiTheme)c.style.opacity="0.85",c.style.filter="invert(100%)";document.body.appendChild(c)}}return b}}c.customLayoutConfig=[{layout:"mxHierarchicalLayout",config:{orientation:"west",intraCellSpacing:30,interRankCellSpacing:100,interHierarchySpacing:60,parallelEdgeSpacing:10}}];
-c.actions.addAction("runLayout",function(){var a=new TextareaDialog(c,"Run Layouts:",JSON.stringify(c.customLayoutConfig,null,2),function(a){if(0<a.length)try{var b=JSON.parse(a);c.executeLayoutList(b);c.customLayoutConfig=b}catch(E){c.handleError(E),null!=window.console&&console.error(E)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");a.textarea.style.width="600px";a.textarea.style.height="380px";c.showDialog(a.container,620,460,!0,!0);a.init()});var l=this.get("layout"),
-q=l.funct;l.funct=function(a,b){q.apply(this,arguments);a.addItem(mxResources.get("orgChart"),null,function(){var a=null,b=20,d=20,e=!0,f=function(){c.loadingOrgChart=!1;c.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=a&&e){var f=c.editor.graph,g=new mxOrgChartLayout(f,a,b,d),k=f.getDefaultParent();1<f.model.getChildCount(f.getSelectionCell())&&(k=f.getSelectionCell());g.execute(k);e=!1}},g=document.createElement("div"),k=document.createElement("div");k.style.marginTop="6px";k.style.display=
-"inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("orgChartType")+": ");g.appendChild(k);var m=document.createElement("select");m.style.width="200px";m.style.boxSizing="border-box";for(var k=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")],l=0;l<k.length;l++){var n=document.createElement("option");mxUtils.write(n,
-k[l]);n.value=l;2==l&&n.setAttribute("selected","selected");m.appendChild(n)}mxEvent.addListener(m,"change",function(){a=m.value});g.appendChild(m);k=document.createElement("div");k.style.marginTop="6px";k.style.display="inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("parentChildSpacing")+": ");g.appendChild(k);var p=document.createElement("input");p.type="number";p.value=b;p.style.width="200px";p.style.boxSizing="border-box";g.appendChild(p);mxEvent.addListener(p,"change",function(){b=
+c.actions.addAction("runLayout",function(){var a=new TextareaDialog(c,"Run Layouts:",JSON.stringify(c.customLayoutConfig,null,2),function(a){if(0<a.length)try{var b=JSON.parse(a);c.executeLayoutList(b);c.customLayoutConfig=b}catch(E){c.handleError(E),null!=window.console&&console.error(E)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");a.textarea.style.width="600px";a.textarea.style.height="380px";c.showDialog(a.container,620,460,!0,!0);a.init()});var n=this.get("layout"),
+q=n.funct;n.funct=function(a,b){q.apply(this,arguments);a.addItem(mxResources.get("orgChart"),null,function(){var a=null,b=20,d=20,e=!0,f=function(){c.loadingOrgChart=!1;c.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=a&&e){var f=c.editor.graph,g=new mxOrgChartLayout(f,a,b,d),k=f.getDefaultParent();1<f.model.getChildCount(f.getSelectionCell())&&(k=f.getSelectionCell());g.execute(k);e=!1}},g=document.createElement("div"),k=document.createElement("div");k.style.marginTop="6px";k.style.display=
+"inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("orgChartType")+": ");g.appendChild(k);var l=document.createElement("select");l.style.width="200px";l.style.boxSizing="border-box";for(var k=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")],m=0;m<k.length;m++){var n=document.createElement("option");mxUtils.write(n,
+k[m]);n.value=m;2==m&&n.setAttribute("selected","selected");l.appendChild(n)}mxEvent.addListener(l,"change",function(){a=l.value});g.appendChild(l);k=document.createElement("div");k.style.marginTop="6px";k.style.display="inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("parentChildSpacing")+": ");g.appendChild(k);var p=document.createElement("input");p.type="number";p.value=b;p.style.width="200px";p.style.boxSizing="border-box";g.appendChild(p);mxEvent.addListener(p,"change",function(){b=
p.value});k=document.createElement("div");k.style.marginTop="6px";k.style.display="inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("siblingSpacing")+": ");g.appendChild(k);var z=document.createElement("input");z.type="number";z.value=d;z.style.width="200px";z.style.boxSizing="border-box";g.appendChild(z);mxEvent.addListener(z,"change",function(){d=z.value});g=new CustomDialog(c,g,function(){null==a&&(a=2);"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.min.js",f):mxscript("js/extensions.min.js",f))});c.showDialog(g.container,355,125,!0,!0)},b,null,f());a.addSeparator(b);a.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var a=new mxParallelEdgeLayout(g);a.checkOverlap=!0;a.spacing=20;c.executeLayout(function(){a.execute(g.getDefaultParent(),g.isSelectionEmpty()?null:g.getSelectionCells())},!1)}),b);a.addSeparator(b);
c.menus.addMenuItem(a,"runLayout",b,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(a,b){if(!mxClient.IS_CHROMEAPP&&c.isOffline())this.addMenuItems(a,["about"],b);else{var d=a.addItem("Search:",null,null,b,null,null,!1);d.style.backgroundColor="dark"==uiTheme?"#505759":"whiteSmoke";d.style.cursor="default";var e=document.createElement("input");e.setAttribute("type","text");e.setAttribute("size","25");e.style.marginLeft="8px";mxEvent.addListener(e,"keydown",
@@ -11151,40 +11151,40 @@ function(a){document.activeElement!=e&&e.focus();mxEvent.consume(a)},function(a)
a,b))})));mxResources.parse("diagramLanguage=Diagram Language");c.actions.addAction("diagramLanguage...",function(){var a=prompt("Language Code",Graph.diagramLanguage||"");null!=a&&(Graph.diagramLanguage=0<a.length?a:null,g.refresh())});"1"==urlParams.test&&(mxResources.parse("testDevelop=Develop"),mxResources.parse("showBoundingBox=Show bounding box"),mxResources.parse("createSidebarEntry=Create Sidebar Entry"),mxResources.parse("testCheckFile=Check File"),mxResources.parse("testDiff=Diff"),mxResources.parse("testInspect=Inspect"),
mxResources.parse("testShowConsole=Show Console"),mxResources.parse("testXmlImageExport=XML Image Export"),mxResources.parse("testDownloadRtModel=Export RT model"),mxResources.parse("testImportRtModel=Import RT model"),c.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){if(!g.isSelectionEmpty()){var a=g.cloneCells(g.getSelectionCells()),b=g.getBoundingBoxFromGeometry(a),a=g.moveCells(a,-b.x,-b.y);c.showTextDialog("Create Sidebar Entry","this.addDataEntry('tag1 tag2', "+b.width+", "+
b.height+", 'The Title', '"+Graph.compress(mxUtils.getXml(g.encodeCells(a)))+"'),")}})),c.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var a=g.getGraphBounds(),b=g.view.translate,c=g.view.scale;g.insertVertex(g.getDefaultParent(),null,"",a.x/c-b.x,a.y/c-b.y,a.width/c,a.height/c,"fillColor=none;strokeColor=red;")})),c.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var a=null!=c.pages&&null!=c.getCurrentFile()?c.getCurrentFile().getAnonymizedXmlForPages(c.pages):
-"",a=new TextareaDialog(c,"Paste Data:",a,function(a){if(0<a.length)try{var b=function(a){function b(a){if(null==n[a]){if(n[a]=!0,null!=e[a]){for(;0<e[a].length;){var d=e[a].pop();b(d)}delete e[a]}}else mxLog.debug(c+": Visited: "+a)}var c=a.parentNode.id,d=a.childNodes;a={};for(var e={},f=null,g={},k=0;k<d.length;k++){var m=d[k];if(null!=m.id&&0<m.id.length)if(null==a[m.id]){a[m.id]=m.id;var l=m.getAttribute("parent");null==l?null!=f?mxLog.debug(c+": Multiple roots: "+m.id):f=m.id:(null==e[l]&&(e[l]=
-[]),e[l].push(m.id))}else g[m.id]=m.id}0<Object.keys(g).length?(d=c+": "+Object.keys(g).length+" Duplicates: "+Object.keys(g).join(", "),mxLog.debug(d+" (see console)")):mxLog.debug(c+": Checked");var n={};null==f?mxLog.debug(c+": No root"):(b(f),Object.keys(n).length!=Object.keys(a).length&&(mxLog.debug(c+": Invalid tree: (see console)"),console.log(c+": Invalid tree",e)))};"<"!=a.charAt(0)&&(a=Graph.decompress(a),mxLog.debug("See console for uncompressed XML"),console.log("xml",a));var d=mxUtils.parseXml(a),
+"",a=new TextareaDialog(c,"Paste Data:",a,function(a){if(0<a.length)try{var b=function(a){function b(a){if(null==n[a]){if(n[a]=!0,null!=e[a]){for(;0<e[a].length;){var d=e[a].pop();b(d)}delete e[a]}}else mxLog.debug(c+": Visited: "+a)}var c=a.parentNode.id,d=a.childNodes;a={};for(var e={},f=null,g={},k=0;k<d.length;k++){var l=d[k];if(null!=l.id&&0<l.id.length)if(null==a[l.id]){a[l.id]=l.id;var m=l.getAttribute("parent");null==m?null!=f?mxLog.debug(c+": Multiple roots: "+l.id):f=l.id:(null==e[m]&&(e[m]=
+[]),e[m].push(l.id))}else g[l.id]=l.id}0<Object.keys(g).length?(d=c+": "+Object.keys(g).length+" Duplicates: "+Object.keys(g).join(", "),mxLog.debug(d+" (see console)")):mxLog.debug(c+": Checked");var n={};null==f?mxLog.debug(c+": No root"):(b(f),Object.keys(n).length!=Object.keys(a).length&&(mxLog.debug(c+": Invalid tree: (see console)"),console.log(c+": Invalid tree",e)))};"<"!=a.charAt(0)&&(a=Graph.decompress(a),mxLog.debug("See console for uncompressed XML"),console.log("xml",a));var d=mxUtils.parseXml(a),
e=c.getPagesForNode(d.documentElement,"mxGraphModel");if(null!=e&&0<e.length)try{var f=c.getHashValueForPages(e);mxLog.debug("Checksum: ",f)}catch(I){mxLog.debug("Error: ",I.message)}else mxLog.debug("No pages found for checksum");var g=d.getElementsByTagName("root");for(a=0;a<g.length;a++)b(g[a]);mxLog.show()}catch(I){c.handleError(I),null!=window.console&&console.error(I)}});a.textarea.style.width="600px";a.textarea.style.height="380px";c.showDialog(a.container,620,460,!0,!0);a.init()})),c.actions.addAction("testDiff",
mxUtils.bind(this,function(){if(null!=c.pages){var a=new TextareaDialog(c,"Paste Data:","",function(a){if(0<a.length)try{console.log(JSON.stringify(c.diffPages(c.pages,c.getPagesForNode(mxUtils.parseXml(a).documentElement)),null,2))}catch(C){c.handleError(C),null!=window.console&&console.error(C)}});a.textarea.style.width="600px";a.textarea.style.height="380px";c.showDialog(a.container,620,460,!0,!0);a.init()}else c.alert("No pages")})),c.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(c,
-g.getModel())})),c.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=g.getGraphBounds(),c=g.view.scale,d=mxUtils.createXmlDocument(),e=d.createElement("output");d.appendChild(e);d=new mxXmlCanvas2D(e);d.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));d.scale(1/c);var f=0,k=d.save;d.save=function(){f++;k.apply(this,arguments)};var m=d.restore;d.restore=function(){f--;m.apply(this,arguments)};var l=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",
-a,f);l.apply(this,arguments);mxLog.debug("leaving shape",a,f)};a.drawState(g.getView().getState(g.model.root),d);mxLog.show();mxLog.debug(mxUtils.getXml(e));mxLog.debug("stateCounter",f)})),c.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testShowConsole".split(" "),
+g.getModel())})),c.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=g.getGraphBounds(),c=g.view.scale,d=mxUtils.createXmlDocument(),e=d.createElement("output");d.appendChild(e);d=new mxXmlCanvas2D(e);d.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));d.scale(1/c);var f=0,k=d.save;d.save=function(){f++;k.apply(this,arguments)};var l=d.restore;d.restore=function(){f--;l.apply(this,arguments)};var m=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",
+a,f);m.apply(this,arguments);mxLog.debug("leaving shape",a,f)};a.drawState(g.getView().getState(g.model.root),d);mxLog.show();mxLog.debug(mxUtils.getXml(e));mxLog.debug("stateCounter",f)})),c.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testShowConsole".split(" "),
b)}))));c.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!c.isOffline()?c.showDialog((new MoreShapesDialog(c,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):c.showDialog((new MoreShapesDialog(c,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});c.actions.put("createShape",new Action(mxResources.get("shape")+"...",function(a){g.isEnabled()&&(a=new mxCell("",new mxGeometry(0,0,120,120),c.defaultCustomShapeStyle),a.vertex=!0,a=new EditShapeDialog(c,
-a,mxResources.get("editShape")+":",630,400),c.showDialog(a.container,640,480,!0,!1),a.init())})).isEnabled=f;c.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(a){c.spinner.stop();c.showHtmlDialog(mxResources.get("create"),"https://www.diagrams.net/doc/faq/embed-html-options",a,function(a,b,d,e,f,g,k,m,l,n){c.createHtml(a,b,d,e,f,g,k,m,l,n,mxUtils.bind(this,function(a,b){var d=
+a,mxResources.get("editShape")+":",630,400),c.showDialog(a.container,640,480,!0,!1),a.init())})).isEnabled=f;c.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(a){c.spinner.stop();c.showHtmlDialog(mxResources.get("create"),"https://www.diagrams.net/doc/faq/embed-html-options",a,function(a,b,d,e,f,g,k,l,m,n){c.createHtml(a,b,d,e,f,g,k,l,m,n,mxUtils.bind(this,function(a,b){var d=
new EmbedDialog(c,a+"\n"+b,null,null,function(){var d=window.open(),e=d.document;if(null!=e){"CSS1Compat"===document.compatMode&&e.writeln("<!DOCTYPE html>");e.writeln("<html>");e.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');e.writeln("<body>");e.writeln(a);var f=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;f&&e.writeln(b);e.writeln("</body>");e.writeln("</html>");e.close();if(!f){var g=d.document.createElement("div");
g.marginLeft="26px";g.marginTop="26px";mxUtils.write(g,mxResources.get("updatingDocument"));f=d.document.createElement("img");f.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");f.style.marginLeft="6px";g.appendChild(f);d.document.body.insertBefore(g,d.document.body.firstChild);window.setTimeout(function(){var a=document.createElement("script");a.type="text/javascript";a.src=/<script.*?src="(.*?)"/.exec(b)[1];e.body.appendChild(a);g.parentNode.removeChild(g)},
20)}}else c.handleError({message:mxResources.get("errorUpdatingPreview")})});c.showDialog(d.container,440,240,!0,!0);d.init()}))})})}));c.actions.put("liveImage",new Action("Live image...",function(){var a=c.getCurrentFile();null!=a&&c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();null!=b?(b=new EmbedDialog(c,'<img src="'+(a.constructor!=DriveFile?b:"https://drive.google.com/uc?id="+a.getId())+'"/>'),c.showDialog(b.container,
440,240,!0,!0),b.init()):c.handleError({message:mxResources.get("invalidPublicUrl")})})}));c.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){c.showEmbedImageDialog(function(a,b,d,e,f,g){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedImage(a,b,d,e,f,g,function(a){c.spinner.stop();a=new EmbedDialog(c,a);c.showDialog(a.container,440,240,!0,!0);a.init()},function(a){c.spinner.stop();c.handleError(a)})},mxResources.get("image"),mxResources.get("retina"),
c.isExportToCanvas())}));c.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){c.showEmbedImageDialog(function(a,b,d,e,f,g){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedSvg(a,b,d,e,f,g,function(a){c.spinner.stop();a=new EmbedDialog(c,a);c.showDialog(a.container,440,240,!0,!0);a.init()},function(a){c.spinner.stop();c.handleError(a)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://www.diagrams.net/doc/faq/embed-svg.html")}));
-c.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var a=g.getGraphBounds();c.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil(a.height/g.view.scale)+2,function(a,b,d,e,f,g,k,m){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();l=new EmbedDialog(c,'<iframe frameborder="0" style="width:'+k+";height:"+m+';" src="'+c.createLink(a,b,d,e,f,g,l)+'"></iframe>');c.showDialog(l.container,
-440,240,!0,!0);l.init()})},!0)}));c.actions.put("embedNotion",new Action(mxResources.get("notion")+"...",function(){c.showPublishLinkDialog(mxResources.get("notion"),null,null,null,function(a,b,d,e,f,g,k,m){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(k){c.spinner.stop();k=new EmbedDialog(c,c.createLink(a,b,d,e,f,g,k,null,["border=0"],!0));c.showDialog(k.container,440,240,!0,!0);k.init()})},!0)}));c.actions.put("publishLink",new Action(mxResources.get("link")+
+c.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var a=g.getGraphBounds();c.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil(a.height/g.view.scale)+2,function(a,b,d,e,f,g,k,l){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(m){c.spinner.stop();m=new EmbedDialog(c,'<iframe frameborder="0" style="width:'+k+";height:"+l+';" src="'+c.createLink(a,b,d,e,f,g,m)+'"></iframe>');c.showDialog(m.container,
+440,240,!0,!0);m.init()})},!0)}));c.actions.put("embedNotion",new Action(mxResources.get("notion")+"...",function(){c.showPublishLinkDialog(mxResources.get("notion"),null,null,null,function(a,b,d,e,f,g,k,l){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(k){c.spinner.stop();k=new EmbedDialog(c,c.createLink(a,b,d,e,f,g,k,null,["border=0"],!0));c.showDialog(k.container,440,240,!0,!0);k.init()})},!0)}));c.actions.put("publishLink",new Action(mxResources.get("link")+
"...",function(){c.showPublishLinkDialog(null,null,null,null,function(a,b,d,e,f,g){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(k){c.spinner.stop();k=new EmbedDialog(c,c.createLink(a,b,d,e,f,g,k));c.showDialog(k.container,440,240,!0,!0);k.init()})})}));c.actions.addAction("microsoftOffice...",function(){c.openLink("https://office.draw.io")});c.actions.addAction("googleDocs...",function(){c.openLink("http://docsaddon.draw.io")});c.actions.addAction("googleSlides...",
-function(){c.openLink("https://slidesaddon.draw.io")});c.actions.addAction("googleSheets...",function(){c.openLink("https://sheetsaddon.draw.io")});c.actions.addAction("googleSites...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(a){c.spinner.stop();a=new GoogleSitesDialog(c,a);c.showDialog(a.container,420,256,!0,!0);a.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)l=c.actions.addAction("scratchpad",function(){c.toggleScratchpad()}),
-l.setToggleAction(!0),l.setSelectedCallback(function(){return null!=c.scratchpad}),c.actions.addAction("plugins...",function(){c.showDialog((new PluginsDialog(c)).container,360,170,!0,!1)});l=c.actions.addAction("search",function(){var a=c.sidebar.isEntryVisible("search");c.sidebar.showPalette("search",!a);isLocalStorage&&(mxSettings.settings.search=!a,mxSettings.save())});l.setToggleAction(!0);l.setSelectedCallback(function(){return c.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(c.actions.get("save").funct=
+function(){c.openLink("https://slidesaddon.draw.io")});c.actions.addAction("googleSheets...",function(){c.openLink("https://sheetsaddon.draw.io")});c.actions.addAction("googleSites...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(a){c.spinner.stop();a=new GoogleSitesDialog(c,a);c.showDialog(a.container,420,256,!0,!0);a.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)n=c.actions.addAction("scratchpad",function(){c.toggleScratchpad()}),
+n.setToggleAction(!0),n.setSelectedCallback(function(){return null!=c.scratchpad}),c.actions.addAction("plugins...",function(){c.showDialog((new PluginsDialog(c)).container,360,170,!0,!1)});n=c.actions.addAction("search",function(){var a=c.sidebar.isEntryVisible("search");c.sidebar.showPalette("search",!a);isLocalStorage&&(mxSettings.settings.search=!a,mxSettings.save())});n.setToggleAction(!0);n.setSelectedCallback(function(){return c.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(c.actions.get("save").funct=
function(a){g.isEditing()&&g.stopEditing();var b="0"!=urlParams.pages||null!=c.pages&&1<c.pages.length?c.getFileData(!0):mxUtils.getXml(c.editor.getGraphXml());if("json"==urlParams.proto){var d=c.createLoadMessage("save");d.xml=b;a&&(d.exit=!0);b=JSON.stringify(d)}(window.opener||window.parent).postMessage(b,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(c.editor.modified=!1,c.editor.setStatus(""));a=c.getCurrentFile();null==a||a.constructor==EmbedFile||a.constructor==LocalFile&&null==
a.mode||c.saveFile()},c.actions.addAction("saveAndExit",function(){c.actions.get("save").funct(!0)}).label="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit"),c.actions.addAction("exit",function(){var a=function(){c.editor.modified=!1;var a="json"==urlParams.proto?JSON.stringify({event:"exit",modified:c.editor.modified}):"";(window.opener||window.parent).postMessage(a,"*")};c.editor.modified?c.confirm(mxResources.get("allChangesLost"),null,a,mxResources.get("cancel"),
mxResources.get("discardChanges")):a()}));this.put("exportAs",new Menu(mxUtils.bind(this,function(a,b){c.isExportToCanvas()?(this.addMenuItems(a,["exportPng"],b),c.jpgSupported&&this.addMenuItems(a,["exportJpg"],b)):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,["exportPng","exportJpg"],b);this.addMenuItems(a,["exportSvg","-"],b);c.isOffline()||c.printPdfExport?this.addMenuItems(a,["exportPdf"],b):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,
["exportPdf"],b);mxClient.IS_IE||"undefined"===typeof VsdxExport&&c.isOffline()||this.addMenuItems(a,["exportVsdx"],b);this.addMenuItems(a,["-","exportHtml","exportXml","exportUrl"],b);c.isOffline()||(a.addSeparator(b),this.addMenuItem(a,"export",b).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(a,b){function d(a){a.pickFile(function(b){c.spinner.spin(document.body,mxResources.get("loading"))&&a.getFile(b,function(a){var b=
-"data:image/"==a.getData().substring(0,11)?l(a.getTitle()):"text/xml";/\.svg$/i.test(a.getTitle())&&!c.editor.isDataSvg(a.getData())&&(a.setData(Editor.createSvgDataUri(a.getData())),b="image/svg+xml");f(a.getData(),b,a.getTitle())},function(a){c.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)},a==c.drive)},!0)}var f=mxUtils.bind(this,function(a,b,d){var e=g.view,f=g.getGraphBounds(),k=g.snap(Math.ceil(Math.max(0,f.x/e.scale-e.translate.x)+4*g.gridSize)),m=g.snap(Math.ceil(Math.max(0,
-(f.y+f.height)/e.scale-e.translate.y)+4*g.gridSize));"data:image/"==a.substring(0,11)?c.loadImage(a,mxUtils.bind(this,function(e){var f=!0,l=mxUtils.bind(this,function(){c.resizeImage(e,a,mxUtils.bind(this,function(e,l,n){e=f?Math.min(1,Math.min(c.maxImageSize/l,c.maxImageSize/n)):1;c.importFile(a,b,k,m,Math.round(l*e),Math.round(n*e),d,function(a){c.spinner.stop();g.setSelectionCells(a);g.scrollCellToVisible(g.getSelectionCell())})}),f)});a.length>c.resampleThreshold?c.confirmImageResize(function(a){f=
-a;l()}):l()}),mxUtils.bind(this,function(){c.handleError({message:mxResources.get("cannotOpenFile")})})):c.importFile(a,b,k,m,0,0,d,function(a){c.spinner.stop();g.setSelectionCells(a);g.scrollCellToVisible(g.getSelectionCell())})}),l=mxUtils.bind(this,function(a){var b="text/xml";/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)?b="image/gif":/\.pdf$/i.test(a)&&(b="application/pdf");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=
-c.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){d(c.drive)},b):m&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1));null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){d(c.oneDrive)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?
-a.addItem(mxResources.get("dropbox")+"...",null,function(){d(c.dropbox)},b):n&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);null!=c.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){d(c.gitHub)},b);null!=c.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){d(c.gitLab)},b);null!=c.trello?a.addItem(mxResources.get("trello")+"...",null,function(){d(c.trello)},
+"data:image/"==a.getData().substring(0,11)?n(a.getTitle()):"text/xml";/\.svg$/i.test(a.getTitle())&&!c.editor.isDataSvg(a.getData())&&(a.setData(Editor.createSvgDataUri(a.getData())),b="image/svg+xml");f(a.getData(),b,a.getTitle())},function(a){c.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)},a==c.drive)},!0)}var f=mxUtils.bind(this,function(a,b,d){var e=g.view,f=g.getGraphBounds(),k=g.snap(Math.ceil(Math.max(0,f.x/e.scale-e.translate.x)+4*g.gridSize)),l=g.snap(Math.ceil(Math.max(0,
+(f.y+f.height)/e.scale-e.translate.y)+4*g.gridSize));"data:image/"==a.substring(0,11)?c.loadImage(a,mxUtils.bind(this,function(e){var f=!0,m=mxUtils.bind(this,function(){c.resizeImage(e,a,mxUtils.bind(this,function(e,m,n){e=f?Math.min(1,Math.min(c.maxImageSize/m,c.maxImageSize/n)):1;c.importFile(a,b,k,l,Math.round(m*e),Math.round(n*e),d,function(a){c.spinner.stop();g.setSelectionCells(a);g.scrollCellToVisible(g.getSelectionCell())})}),f)});a.length>c.resampleThreshold?c.confirmImageResize(function(a){f=
+a;m()}):m()}),mxUtils.bind(this,function(){c.handleError({message:mxResources.get("cannotOpenFile")})})):c.importFile(a,b,k,l,0,0,d,function(a){c.spinner.stop();g.setSelectionCells(a);g.scrollCellToVisible(g.getSelectionCell())})}),n=mxUtils.bind(this,function(a){var b="text/xml";/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)?b="image/gif":/\.pdf$/i.test(a)&&(b="application/pdf");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=
+c.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){d(c.drive)},b):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1));null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){d(c.oneDrive)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?
+a.addItem(mxResources.get("dropbox")+"...",null,function(){d(c.dropbox)},b):m&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);null!=c.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){d(c.gitHub)},b);null!=c.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){d(c.gitLab)},b);null!=c.trello?a.addItem(mxResources.get("trello")+"...",null,function(){d(c.trello)},
b):k&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){c.importLocalFile(!1)},b);a.addItem(mxResources.get("device")+"...",null,function(){c.importLocalFile(!0)},b);c.isOffline()||(a.addSeparator(b),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(c,"",mxResources.get("import"),
function(a){if(null!=a&&0<a.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var b=/(\.png)($|\?)/i.test(a)?"image/png":"text/xml";c.editor.loadUrl(PROXY_URL+"?url="+encodeURIComponent(a),function(c){f(c,b,a)},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==b)}},mxResources.get("url"));c.showDialog(a.container,300,80,!0,!0);a.init()},b))}))).isEnabled=f;this.put("theme",new Menu(mxUtils.bind(this,function(a,b){var d=mxSettings.getUi(),
e=a.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();c.alert(mxResources.get("restartForChangeRequired"))},b);"kennedy"!=d&&"atlas"!=d&&"dark"!=d&&"min"!=d&&a.addCheckmark(e,Editor.checkmarkImage);a.addSeparator(b);e=a.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();c.alert(mxResources.get("restartForChangeRequired"))},b);"kennedy"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("minimal"),
null,function(){mxSettings.setUi("min");mxSettings.save();c.alert(mxResources.get("restartForChangeRequired"))},b);"min"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");mxSettings.save();c.alert(mxResources.get("restartForChangeRequired"))},b);"atlas"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");mxSettings.save();c.alert(mxResources.get("restartForChangeRequired"))},
-b);"dark"==d&&a.addCheckmark(e,Editor.checkmarkImage)})));l=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();if(null!=a)if(a.constructor==LocalFile&&null!=a.fileHandle)c.showSaveFilePicker(mxUtils.bind(c,function(b,d){a.invalidFileHandle=null;a.fileHandle=b;a.title=d.name;a.desc=d;c.save(d.name)}),null,c.createFileSystemOptions(a.getTitle()));else{var b=null!=a.getTitle()?a.getTitle():this.editorUi.defaultFilename,b=new FilenameDialog(this.editorUi,
+b);"dark"==d&&a.addCheckmark(e,Editor.checkmarkImage)})));n=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();if(null!=a)if(a.constructor==LocalFile&&null!=a.fileHandle)c.showSaveFilePicker(mxUtils.bind(c,function(b,d){a.invalidFileHandle=null;a.fileHandle=b;a.title=d.name;a.desc=d;c.save(d.name)}),null,c.createFileSystemOptions(a.getTitle()));else{var b=null!=a.getTitle()?a.getTitle():this.editorUi.defaultFilename,b=new FilenameDialog(this.editorUi,
b,mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&null!=a&&b!=a.getTitle()&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&a.rename(b,mxUtils.bind(this,function(a){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(a){this.editorUi.handleError(a,null!=a?mxResources.get("errorRenamingFile"):null)}))}),a.constructor==DriveFile||a.constructor==StorageFile?mxResources.get("diagramName"):null,function(a){if(null!=a&&0<a.length)return!0;c.showError(mxResources.get("error"),
-mxResources.get("invalidName"),mxResources.get("ok"));return!1},null,null,null,null,c.editor.fileExtensions);this.editorUi.showDialog(b.container,340,90,!0,!0);b.init()}}));l.isEnabled=function(){return this.enabled&&f.apply(this,arguments)};l.visible="1"!=urlParams.embed;c.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var a=c.getCurrentFile();if(null!=a){var b=c.getCopyFilename(a);a.constructor==DriveFile?(b=new CreateDialog(c,b,mxUtils.bind(this,function(b,d){"_blank"==d?c.editor.editAsNew(c.getFileData(),
+mxResources.get("invalidName"),mxResources.get("ok"));return!1},null,null,null,null,c.editor.fileExtensions);this.editorUi.showDialog(b.container,340,90,!0,!0);b.init()}}));n.isEnabled=function(){return this.enabled&&f.apply(this,arguments)};n.visible="1"!=urlParams.embed;c.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var a=c.getCurrentFile();if(null!=a){var b=c.getCopyFilename(a);a.constructor==DriveFile?(b=new CreateDialog(c,b,mxUtils.bind(this,function(b,d){"_blank"==d?c.editor.editAsNew(c.getFileData(),
b):("download"==d&&(d=App.MODE_GOOGLE),null!=b&&0<b.length&&(d==App.MODE_GOOGLE?c.spinner.spin(document.body,mxResources.get("saving"))&&a.saveAs(b,mxUtils.bind(this,function(b){a.desc=b;a.save(!1,mxUtils.bind(this,function(){c.spinner.stop();a.setModified(!1);a.addAllSavedStatus()}),mxUtils.bind(this,function(a){c.handleError(a)}))}),mxUtils.bind(this,function(a){c.handleError(a)})):c.createFile(b,c.getFileData(!0),null,d)))}),mxUtils.bind(this,function(){c.hideDialog()}),mxResources.get("makeCopy"),
mxResources.get("create"),null,null,!0,null,!0,null,null,null,null,c.editor.fileExtensions),c.showDialog(b.container,420,380,!0,!0),b.init()):c.editor.editAsNew(this.editorUi.getFileData(!0),b)}}));c.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var a=c.getCurrentFile();if(a.getMode()==App.MODE_GOOGLE||a.getMode()==App.MODE_ONEDRIVE){var b=!1;if(a.getMode()==App.MODE_GOOGLE&&null!=a.desc.parents)for(var d=0;d<a.desc.parents.length;d++)if(a.desc.parents[d].isRoot){b=!0;break}c.pickFolder(a.getMode(),
mxUtils.bind(this,function(b){c.spinner.spin(document.body,mxResources.get("moving"))&&a.move(b,mxUtils.bind(this,function(a){c.spinner.stop()}),mxUtils.bind(this,function(a){c.handleError(a)}))}),null,!0,b)}}));this.put("publish",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["publishLink"],b)})));c.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){c.openLink("https://app.draw.io/")}));c.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+
@@ -11196,21 +11196,21 @@ function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&y("",120,60,"wh
y("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=f;var x=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):v(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),b);c.insertTemplateEnabled&&!c.isOffline()&&this.addMenuItems(a,["insertTemplate"],b);a.addSeparator(b);
this.addSubmenu("insertLayout",a,b,mxResources.get("layout"));this.addSubmenu("insertAdvanced",a,b,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){x(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,b){x(a,b,["fromText","plantUml","mermaid","-","formatSql"]);a.addItem(mxResources.get("csv")+"...",null,function(){c.showImportCsvDialog()},
b,null,f())})));this.put("openRecent",new Menu(function(a,b){var d=c.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&&(e="oneDrive");a.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){c.loadFile(d.id)},b)})(d[e]);a.addSeparator(b)}a.addItem(mxResources.get("reset"),null,function(){c.resetRecent()},b)}));this.put("openFrom",new Menu(function(a,b){null!=c.drive?a.addItem(mxResources.get("googleDrive")+"...",
-null,function(){c.pickFile(App.MODE_GOOGLE)},b):m&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickFile(App.MODE_ONEDRIVE)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?a.addItem(mxResources.get("dropbox")+
-"...",null,function(){c.pickFile(App.MODE_DROPBOX)},b):n&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);null!=c.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){c.pickFile(App.MODE_GITHUB)},b);null!=c.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickFile(App.MODE_GITLAB)},b);null!=c.trello?a.addItem(mxResources.get("trello")+"...",null,function(){c.pickFile(App.MODE_TRELLO)},
+null,function(){c.pickFile(App.MODE_GOOGLE)},b):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickFile(App.MODE_ONEDRIVE)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?a.addItem(mxResources.get("dropbox")+
+"...",null,function(){c.pickFile(App.MODE_DROPBOX)},b):m&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);null!=c.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){c.pickFile(App.MODE_GITHUB)},b);null!=c.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickFile(App.MODE_GITLAB)},b);null!=c.trello?a.addItem(mxResources.get("trello")+"...",null,function(){c.pickFile(App.MODE_TRELLO)},
b):k&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){c.pickFile(App.MODE_BROWSER)},b);a.addItem(mxResources.get("device")+"...",null,function(){c.pickFile(App.MODE_DEVICE)},b);c.isOffline()||(a.addSeparator(b),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(c,
"",mxResources.get("open"),function(a){null!=a&&0<a.length&&(null==c.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(a):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(a)))},mxResources.get("url"));c.showDialog(a.container,300,80,!0,!0);a.init()},b))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(a,b){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=
-c.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},b):m&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1));null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+
-" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},b):n&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);null!=c.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},
+c.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},b):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1));null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+
+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},b):m&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);null!=c.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},
b);null!=c.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},b);null!=c.trello?a.addItem(mxResources.get("trello")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},b):k&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+
-"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},b);a.addItem(mxResources.get("device")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},b)})),this.put("openLibraryFrom",new Menu(function(a,b){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickLibrary(App.MODE_GOOGLE)},b):m&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+
-" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1));null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickLibrary(App.MODE_ONEDRIVE)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickLibrary(App.MODE_DROPBOX)},b):n&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+
+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},b);a.addItem(mxResources.get("device")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},b)})),this.put("openLibraryFrom",new Menu(function(a,b){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickLibrary(App.MODE_GOOGLE)},b):l&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+
+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1));null!=c.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickLibrary(App.MODE_ONEDRIVE)},b):e&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);null!=c.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickLibrary(App.MODE_DROPBOX)},b):m&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+
" ("+mxResources.get("loading")+"...)",null,function(){},b,null,!1);a.addSeparator(b);null!=c.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){c.pickLibrary(App.MODE_GITHUB)},b);null!=c.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickLibrary(App.MODE_GITLAB)},b);null!=c.trello?a.addItem(mxResources.get("trello")+"...",null,function(){c.pickLibrary(App.MODE_TRELLO)},b):k&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+
"...)",null,function(){},b,null,!1);a.addSeparator(b);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){c.pickLibrary(App.MODE_BROWSER)},b);a.addItem(mxResources.get("device")+"...",null,function(){c.pickLibrary(App.MODE_DEVICE)},b);c.isOffline()||(a.addSeparator(b),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(c,"",mxResources.get("open"),function(a){if(null!=a&&0<a.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var b=
a;c.editor.isCorsEnabledForUrl(a)||(b=PROXY_URL+"?url="+encodeURIComponent(a));mxUtils.get(b,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){c.spinner.stop();try{c.loadLibrary(new UrlLibrary(this,b.getText(),a))}catch(H){c.handleError(H,mxResources.get("errorLoadingFile"))}}else c.spinner.stop(),c.handleError(null,mxResources.get("errorLoadingFile"))},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));c.showDialog(a.container,300,
80,!0,!0);a.init()},b));"1"==urlParams.confLib&&(a.addSeparator(b),a.addItem(mxResources.get("confluenceCloud")+"...",null,function(){c.showRemotelyStoredLibrary(mxResources.get("libraries"))},b))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["undo","redo","-","cut","copy"]);EditorUi.isElectronApp&&this.addMenuItems(a,["copyAsImage"]);this.addMenuItems(a,"paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));
-l=c.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(c,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("comments"));else{var a=!this.commentsWindow.window.isVisible();
-this.commentsWindow.window.setVisible(a);this.commentsWindow.refreshCommentsTime();a&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));l.setToggleAction(!0);l.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));c.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var l=this.get("viewPanels"),B=l.funct;l.funct=
+n=c.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(c,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("comments"));else{var a=!this.commentsWindow.window.isVisible();
+this.commentsWindow.window.setVisible(a);this.commentsWindow.refreshCommentsTime();a&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));n.setToggleAction(!0);n.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));c.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var n=this.get("viewPanels"),B=n.funct;n.funct=
function(a,b){B.apply(this,arguments);c.commentsSupported()&&c.menus.addMenuItems(a,["comments"],b)};this.put("view",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers"]).concat(c.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(a,["-","search"],b);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(a,"scratchpad",b);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,
"https://www.diagrams.net/doc/faq/scratchpad")}this.addMenuItems(a,["shapes","-","pageView","pageScale"]);this.addSubmenu("units",a,b);this.addMenuItems(a,"- scrollbars tooltips ruler - grid guides".split(" "),b);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(a,"shadowVisible",b);this.addMenuItems(a,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),b)})));this.put("extras",new Menu(mxUtils.bind(this,function(a,b){"1"==urlParams.noLangIcon&&
(this.addSubmenu("language",a,b),a.addSeparator(b));"1"!=urlParams.embed&&(this.addSubmenu("theme",a,b),a.addSeparator(b));if("undefined"!==typeof MathJax){var d=this.addMenuItem(a,"mathematicalTypesetting",b);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://www.diagrams.net/doc/faq/math-typesetting")}this.addMenuItems(a,["copyConnect","collapseExpand","-"],b);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(a,["showStartScreen"],
@@ -11224,11 +11224,11 @@ a,b);isLocalStorage&&this.addSubmenu("openRecent",a,b);null!=d&&d.constructor==D
mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=c.getServiceName()||c.isOfflineApp()||null==d||this.addMenuItems(a,["share","-"],b),this.addMenuItems(a,["rename"],b),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(a,["upload"],b):(this.addMenuItems(a,["makeCopy"],b),null!=d&&d.constructor==OneDriveFile&&this.addMenuItems(a,["moveToFolder"],b)));a.addSeparator(b);this.addSubmenu("importFrom",a,b);this.addSubmenu("exportAs",a,b);a.addSeparator(b);
this.addSubmenu("embed",a,b);this.addSubmenu("publish",a,b);a.addSeparator(b);this.addSubmenu("newLibrary",a,b);this.addSubmenu("openLibraryFrom",a,b);c.isRevisionHistorySupported()&&this.addMenuItems(a,["-","revisionHistory"],b);null!=d&&null!=c.fileNode&&(d=null!=d.getTitle()?d.getTitle():c.defaultFilename,/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||this.addMenuItems(a,["-","properties"]));this.addMenuItems(a,["-","pageSetup"],b);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,["print"],
b);this.addMenuItems(a,["-","close"])}})));a.prototype.execute=function(){var a=this.ui.editor.graph;this.customFonts=this.prevCustomFonts;this.prevCustomFonts=this.ui.menus.customFonts;this.ui.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts));this.extFonts=this.previousExtFonts;for(var b=a.extFonts,c=0;null!=b&&c<b.length;c++){var d=document.getElementById("extFont_"+b[c].name);null!=d&&d.parentNode.removeChild(d)}a.extFonts=[];for(c=0;null!=this.previousExtFonts&&
-c<this.previousExtFonts.length;c++)this.ui.editor.graph.addExtFont(this.previousExtFonts[c].name,this.previousExtFonts[c].url);this.previousExtFonts=b};this.put("fontFamily",new Menu(mxUtils.bind(this,function(b,d){for(var e=mxUtils.bind(this,function(e,f,g,k,m){var l=this.editorUi.editor.graph;k=this.styleChange(b,k||e,"1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"1"!=urlParams["ext-fonts"]?[e,null!=f?encodeURIComponent(f):null,null]:
-[e],null,d,function(){"1"!=urlParams["ext-fonts"]?l.setFont(e,f):(document.execCommand("fontname",!1,e),l.addExtFont(e,f))},function(){l.updateLabelElements(l.getSelectionCells(),function(a){a.removeAttribute("face");a.style.fontFamily=null;"PRE"==a.nodeName&&l.replaceElement(a,"div")});"1"==urlParams["ext-fonts"]&&l.addExtFont(e,f)});g&&(g=document.createElement("span"),g.className="geSprite geSprite-delete",g.style.cursor="pointer",g.style.display="inline-block",k.firstChild.nextSibling.nextSibling.appendChild(g),
+c<this.previousExtFonts.length;c++)this.ui.editor.graph.addExtFont(this.previousExtFonts[c].name,this.previousExtFonts[c].url);this.previousExtFonts=b};this.put("fontFamily",new Menu(mxUtils.bind(this,function(b,d){for(var e=mxUtils.bind(this,function(e,f,g,k,l){var m=this.editorUi.editor.graph;k=this.styleChange(b,k||e,"1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"1"!=urlParams["ext-fonts"]?[e,null!=f?encodeURIComponent(f):null,null]:
+[e],null,d,function(){"1"!=urlParams["ext-fonts"]?m.setFont(e,f):(document.execCommand("fontname",!1,e),m.addExtFont(e,f))},function(){m.updateLabelElements(m.getSelectionCells(),function(a){a.removeAttribute("face");a.style.fontFamily=null;"PRE"==a.nodeName&&m.replaceElement(a,"div")});"1"==urlParams["ext-fonts"]&&m.addExtFont(e,f)});g&&(g=document.createElement("span"),g.className="geSprite geSprite-delete",g.style.cursor="pointer",g.style.display="inline-block",k.firstChild.nextSibling.nextSibling.appendChild(g),
mxEvent.addListener(g,mxClient.IS_POINTER?"pointerup":"mouseup",mxUtils.bind(this,function(b){if("1"!=urlParams["ext-fonts"]){delete Graph.recentCustomFonts[e.toLowerCase()];for(var d=0;d<this.customFonts.length;d++)if(this.customFonts[d].name==e&&this.customFonts[d].url==f){this.customFonts.splice(d,1);c.fireEvent(new mxEventObject("customFontsChanged"));break}}else{var g=mxUtils.clone(this.editorUi.editor.graph.extFonts);if(null!=g&&0<g.length)for(d=0;d<g.length;d++)if(g[d].name==e){g.splice(d,
-1);break}for(var k=mxUtils.clone(this.customFonts),d=0;d<k.length;d++)if(k[d].name==e){k.splice(d,1);break}d=new a(this.editorUi,g,k);this.editorUi.editor.graph.model.execute(d)}this.editorUi.menubar.hideMenu();mxEvent.consume(b)})));Graph.addFont(e,f);k.firstChild.nextSibling.style.fontFamily=e;null!=m&&k.setAttribute("title",m)}),f=0;f<this.defaultFonts.length;f++)e(this.defaultFonts[f]);b.addSeparator(d);if("1"!=urlParams["ext-fonts"]){for(var g=function(a){for(var b=encodeURIComponent(a.name)+
-(null==a.url?"":"@"+encodeURIComponent(a.url)),c=a.name,d=0;null!=m[c.toLowerCase()];)c=a.name+" ("+ ++d+")";null==k[b]&&(l.push({name:a.name,url:a.url,label:c,title:a.url}),m[c.toLowerCase()]=a,k[b]=a)},k={},m={},l=[],f=0;f<this.customFonts.length;f++)g(this.customFonts[f],!1);for(var n in Graph.recentCustomFonts)g(Graph.recentCustomFonts[n],!0);l.sort(function(a,b){return a.label<b.label?-1:a.label>b.label?1:0});if(0<l.length){for(f=0;f<l.length;f++)e(l[f].name,l[f].url,!0,l[f].label,l[f].url);
+1);break}for(var k=mxUtils.clone(this.customFonts),d=0;d<k.length;d++)if(k[d].name==e){k.splice(d,1);break}d=new a(this.editorUi,g,k);this.editorUi.editor.graph.model.execute(d)}this.editorUi.menubar.hideMenu();mxEvent.consume(b)})));Graph.addFont(e,f);k.firstChild.nextSibling.style.fontFamily=e;null!=l&&k.setAttribute("title",l)}),f=0;f<this.defaultFonts.length;f++)e(this.defaultFonts[f]);b.addSeparator(d);if("1"!=urlParams["ext-fonts"]){for(var g=function(a){for(var b=encodeURIComponent(a.name)+
+(null==a.url?"":"@"+encodeURIComponent(a.url)),c=a.name,d=0;null!=l[c.toLowerCase()];)c=a.name+" ("+ ++d+")";null==k[b]&&(m.push({name:a.name,url:a.url,label:c,title:a.url}),l[c.toLowerCase()]=a,k[b]=a)},k={},l={},m=[],f=0;f<this.customFonts.length;f++)g(this.customFonts[f],!1);for(var n in Graph.recentCustomFonts)g(Graph.recentCustomFonts[n],!0);m.sort(function(a,b){return a.label<b.label?-1:a.label>b.label?1:0});if(0<m.length){for(f=0;f<m.length;f++)e(m[f].name,m[f].url,!0,m[f].label,m[f].url);
b.addSeparator(d)}b.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){Graph.recentCustomFonts={};this.customFonts=[];c.fireEvent(new mxEventObject("customFontsChanged"))}),d);b.addSeparator(d)}else{g=this.editorUi.editor.graph.extFonts;if(null!=g&&0<g.length){n={};for(var p=!1,f=0;f<this.customFonts.length;f++)n[this.customFonts[f].name]=!0;for(f=0;f<g.length;f++)n[g[f].name]||(this.customFonts.push(g[f]),p=!0);p&&this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",
this.customFonts))}if(0<this.customFonts.length){for(f=0;f<this.customFonts.length;f++)g=this.customFonts[f].name,n=this.customFonts[f].url,e(g,n,!0),this.editorUi.editor.graph.addExtFont(g,n,!0);b.addSeparator(d);b.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){var b=new a(this.editorUi,[],[]);c.editor.graph.model.execute(b)}),d);b.addSeparator(d)}}b.addItem(mxResources.get("custom")+"...",null,mxUtils.bind(this,function(){var a=this.editorUi.editor.graph,b=a.getStylesheet().getDefaultVertexStyle()[mxConstants.STYLE_FONTFAMILY],
c="s",d=null;if("1"!=urlParams["ext-fonts"]&&a.isEditing()){var e=a.getSelectedEditingElement();null!=e&&(e=mxUtils.getCurrentStyle(e),null!=e&&(b=Graph.stripQuotes(e.fontFamily),d=Graph.getFontUrl(b,null),null!=d&&(Graph.isGoogleFontUrl(d)?(d=null,c="g"):c="w")))}else e=a.getView().getState(a.getSelectionCell()),null!=e&&(b=e.style[mxConstants.STYLE_FONTFAMILY]||b,"1"!=urlParams["ext-fonts"]?(e=e.style.fontSource,null!=e&&(e=decodeURIComponent(e),Graph.isGoogleFontUrl(e)?c="g":(c="w",d=e))):(c=e.style.FType||
@@ -11248,9 +11248,9 @@ this.tabContainer.style.height;this.tabContainer.style.height=null==this.fileNod
(a.container.scrollLeft=0,a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft=a.view.translate.x*a.view.scale+c.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+c.viewState.scrollTop),b=c);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=
this.editor&&this.editor.graph.refresh()})):"undefined"===typeof Editor.MathJaxClear||null!=this.editor&&this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var d=b.getProperty("edit").changes,f=0;f<d.length;f++)if(d[f]instanceof SelectPage||d[f]instanceof RenamePage||d[f]instanceof MovePage||d[f]instanceof mxRootChange){c();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}};
EditorUi.prototype.restoreViewState=function(a,d,b){a=null!=a?this.getPageById(a.getId()):null;var c=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,d):(c.setViewState(d),this.editor.updateGraphComponents(),c.view.revalidate(),c.sizeDidChange()),c.container.scrollLeft=c.view.translate.x*c.view.scale+d.scrollLeft,c.container.scrollTop=c.view.translate.y*c.view.scale+d.scrollTop,c.restoreSelection(b))};
-Graph.prototype.createViewState=function(a){var d=a.getAttribute("page"),b=parseFloat(a.getAttribute("pageScale")),c=parseFloat(a.getAttribute("pageWidth")),g=parseFloat(a.getAttribute("pageHeight")),f=a.getAttribute("background"),m=a.getAttribute("backgroundImage"),m=null!=m&&0<m.length?JSON.parse(m):null,n=a.getAttribute("extFonts");if(n)try{n=n.split("|").map(function(a){a=a.split("^");return{name:a[0],url:a[1]}})}catch(e){console.log("ExtFonts format error: "+e.message)}return{gridEnabled:"0"!=
-a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"),shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=d?"0"!=d:this.defaultPageVisible,background:null!=f&&0<f.length?f:null,backgroundImage:null!=m?new mxImage(m.src,m.width,m.height):null,pageScale:isNaN(b)?mxGraph.prototype.pageScale:b,pageFormat:isNaN(c)||isNaN(g)?"undefined"===
-typeof mxSettings?mxGraph.prototype.pageFormat:mxSettings.getPageFormat():new mxRectangle(0,0,c,g),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"),selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1,extFonts:n||[]}};
+Graph.prototype.createViewState=function(a){var d=a.getAttribute("page"),b=parseFloat(a.getAttribute("pageScale")),c=parseFloat(a.getAttribute("pageWidth")),g=parseFloat(a.getAttribute("pageHeight")),f=a.getAttribute("background"),l=a.getAttribute("backgroundImage"),l=null!=l&&0<l.length?JSON.parse(l):null,m=a.getAttribute("extFonts");if(m)try{m=m.split("|").map(function(a){a=a.split("^");return{name:a[0],url:a[1]}})}catch(e){console.log("ExtFonts format error: "+e.message)}return{gridEnabled:"0"!=
+a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"),shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=d?"0"!=d:this.defaultPageVisible,background:null!=f&&0<f.length?f:null,backgroundImage:null!=l?new mxImage(l.src,l.width,l.height):null,pageScale:isNaN(b)?mxGraph.prototype.pageScale:b,pageFormat:isNaN(c)||isNaN(g)?"undefined"===
+typeof mxSettings?mxGraph.prototype.pageFormat:mxSettings.getPageFormat():new mxRectangle(0,0,c,g),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"),selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1,extFonts:m||[]}};
Graph.prototype.saveViewState=function(a,d,b){b||(d.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),d.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),d.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),d.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),d.setAttribute("connect",null==a||a.connect?"1":"0"),d.setAttribute("arrows",null==a||a.arrows?"1":"0"),d.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),d.setAttribute("fold",
null==a||a.foldingEnabled?"1":"0"));d.setAttribute("pageScale",null!=a&&null!=a.pageScale?a.pageScale:mxGraph.prototype.pageScale);b=null!=a?a.pageFormat:"undefined"===typeof mxSettings?mxGraph.prototype.pageFormat:mxSettings.getPageFormat();null!=b&&(d.setAttribute("pageWidth",b.width),d.setAttribute("pageHeight",b.height));null!=a&&null!=a.background&&d.setAttribute("background",a.background);null!=a&&null!=a.backgroundImage&&d.setAttribute("backgroundImage",JSON.stringify(a.backgroundImage));d.setAttribute("math",
null!=a&&a.mathEnabled?"1":"0");d.setAttribute("shadow",null!=a&&a.shadowVisible?"1":"0");null!=a&&null!=a.extFonts&&0<a.extFonts.length&&d.setAttribute("extFonts",a.extFonts.map(function(a){return a.name+"^"+a.url}).join("|"))};
@@ -11276,9 +11276,9 @@ EditorUi.prototype.createTabContainer=function(){var a=document.createElement("d
EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&null!=this.pages){var a=this.editor.graph,d=document.createElement("div");d.style.position="relative";d.style.display="inline-block";d.style.verticalAlign="top";d.style.height=this.tabContainer.style.height;d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.fontSize="13px";d.style.marginLeft="30px";for(var b=this.editor.isChromelessView()?29:59,c=Math.min(140,Math.max(20,(this.tabContainer.clientWidth-b)/this.pages.length)+
1),g=null,f=0;f<this.pages.length;f++)mxUtils.bind(this,function(b,c){this.pages[b]==this.currentPage?(c.className="geActivePage",c.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#fff"):c.className="geInactivePage";c.setAttribute("draggable","true");mxEvent.addListener(c,"dragstart",mxUtils.bind(this,function(c){a.isEnabled()?(mxClient.IS_FF&&c.dataTransfer.setData("Text","<diagram/>"),g=b):mxEvent.consume(c)}));mxEvent.addListener(c,"dragend",mxUtils.bind(this,function(a){g=null;a.stopPropagation();
a.preventDefault()}));mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null!=g&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=g&&b!=g&&this.movePage(g,b);a.stopPropagation();a.preventDefault()}));d.appendChild(c)})(f,this.createTabForPage(this.pages[f],c,this.pages[f]!=this.currentPage,f+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(d);c=this.createPageMenuTab();this.tabContainer.appendChild(c);
-c=null;this.isPageInsertTabVisible()&&(c=this.createPageInsertTab(),this.tabContainer.appendChild(c));if(d.clientWidth>this.tabContainer.clientWidth-b){null!=c&&(c.style.position="absolute",c.style.right="0px",d.style.marginRight="30px");var m=this.createControlTab(4,"&nbsp;&#10094;&nbsp;");m.style.position="absolute";m.style.right=this.editor.chromeless?"29px":"55px";m.style.fontSize="13pt";this.tabContainer.appendChild(m);var n=this.createControlTab(4,"&nbsp;&#10095;");n.style.position="absolute";
-n.style.right=this.editor.chromeless?"0px":"29px";n.style.fontSize="13pt";this.tabContainer.appendChild(n);var e=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));d.style.width=e+"px";mxEvent.addListener(m,"click",mxUtils.bind(this,function(a){d.scrollLeft-=Math.max(20,e-20);mxUtils.setOpacity(m,0<d.scrollLeft?100:50);mxUtils.setOpacity(n,d.scrollLeft<d.scrollWidth-d.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(m,0<d.scrollLeft?100:50);mxUtils.setOpacity(n,
-d.scrollLeft<d.scrollWidth-d.clientWidth?100:50);mxEvent.addListener(n,"click",mxUtils.bind(this,function(a){d.scrollLeft+=Math.max(20,e-20);mxUtils.setOpacity(m,0<d.scrollLeft?100:50);mxUtils.setOpacity(n,d.scrollLeft<d.scrollWidth-d.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
+c=null;this.isPageInsertTabVisible()&&(c=this.createPageInsertTab(),this.tabContainer.appendChild(c));if(d.clientWidth>this.tabContainer.clientWidth-b){null!=c&&(c.style.position="absolute",c.style.right="0px",d.style.marginRight="30px");var l=this.createControlTab(4,"&nbsp;&#10094;&nbsp;");l.style.position="absolute";l.style.right=this.editor.chromeless?"29px":"55px";l.style.fontSize="13pt";this.tabContainer.appendChild(l);var m=this.createControlTab(4,"&nbsp;&#10095;");m.style.position="absolute";
+m.style.right=this.editor.chromeless?"0px":"29px";m.style.fontSize="13pt";this.tabContainer.appendChild(m);var e=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));d.style.width=e+"px";mxEvent.addListener(l,"click",mxUtils.bind(this,function(a){d.scrollLeft-=Math.max(20,e-20);mxUtils.setOpacity(l,0<d.scrollLeft?100:50);mxUtils.setOpacity(m,d.scrollLeft<d.scrollWidth-d.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(l,0<d.scrollLeft?100:50);mxUtils.setOpacity(m,
+d.scrollLeft<d.scrollWidth-d.clientWidth?100:50);mxEvent.addListener(m,"click",mxUtils.bind(this,function(a){d.scrollLeft+=Math.max(20,e-20);mxUtils.setOpacity(l,0<d.scrollLeft?100:50);mxUtils.setOpacity(m,d.scrollLeft<d.scrollWidth-d.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()};
EditorUi.prototype.createTab=function(a){var d=document.createElement("div");d.style.display="inline-block";d.style.whiteSpace="nowrap";d.style.boxSizing="border-box";d.style.position="relative";d.style.overflow="hidden";d.style.textAlign="center";d.style.marginLeft="-1px";d.style.height=this.tabContainer.clientHeight+"px";d.style.padding="12px 4px 8px 4px";d.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #e8eaed";d.style.borderTopStyle="none";d.style.borderBottomStyle="none";d.style.backgroundColor=
this.tabContainer.style.backgroundColor;d.style.cursor="move";d.style.color="gray";a&&(mxEvent.addListener(d,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(d.style.backgroundColor="dark"==uiTheme?"black":"#e8eaed",mxEvent.consume(a))})),mxEvent.addListener(d,"mouseleave",mxUtils.bind(this,function(a){d.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return d};
EditorUi.prototype.createControlTab=function(a,d){var b=this.createTab(!0);b.style.lineHeight=this.tabContainerHeight+"px";b.style.paddingTop=a+"px";b.style.cursor="pointer";b.style.width="30px";b.innerHTML=d;null!=b.firstChild&&null!=b.firstChild.style&&mxUtils.setOpacity(b.firstChild,40);return b};
@@ -11288,42 +11288,42 @@ function(){this.removePage(d)}),b),a.addItem(mxResources.get("rename"),null,mxUt
mxEvent.getClientX(a),d=mxEvent.getClientY(a);b.popup(c,d,null,a);this.setCurrentMenu(b);mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a};
EditorUi.prototype.createTabForPage=function(a,d,b,c){b=this.createTab(b);var g=a.getName()||mxResources.get("untitled"),f=a.getId();b.setAttribute("title",g+(null!=f?" ("+f+")":"")+" ["+c+"]");mxUtils.write(b,g);b.style.maxWidth=d+"px";b.style.width=d+"px";this.addTabListeners(a,b);42<d&&(b.style.textOverflow="ellipsis");return b};
EditorUi.prototype.addTabListeners=function(a,d){mxEvent.disableContextMenu(d);var b=this.editor.graph;mxEvent.addListener(d,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var c=!1,g=!1;mxEvent.addGestureListeners(d,mxUtils.bind(this,function(d){c=null!=this.currentMenu;g=a==this.currentPage;b.isMouseDown||g||this.selectPage(a)}),null,mxUtils.bind(this,function(f){if(b.isEnabled()&&!b.isMouseDown&&(mxEvent.isTouchEvent(f)&&g||mxEvent.isPopupTrigger(f))){b.popupMenuHandler.hideMenu();
-this.hideCurrentMenu();if(!mxEvent.isTouchEvent(f)||!c){var m=new mxPopupMenu(this.createPageMenu(a));m.div.className+=" geMenubarMenu";m.smartSeparators=!0;m.showDisabled=!0;m.autoExpand=!0;m.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(m,arguments);this.resetCurrentMenu();m.destroy()});var n=mxEvent.getClientX(f),e=mxEvent.getClientY(f);m.popup(n,e,null,f);this.setCurrentMenu(m,d)}mxEvent.consume(f)}}))};
+this.hideCurrentMenu();if(!mxEvent.isTouchEvent(f)||!c){var l=new mxPopupMenu(this.createPageMenu(a));l.div.className+=" geMenubarMenu";l.smartSeparators=!0;l.showDisabled=!0;l.autoExpand=!0;l.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(l,arguments);this.resetCurrentMenu();l.destroy()});var m=mxEvent.getClientX(f),e=mxEvent.getClientY(f);l.popup(m,e,null,f);this.setCurrentMenu(l,d)}mxEvent.consume(f)}}))};
EditorUi.prototype.getLinkForPage=function(a,d,b){if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp){var c=this.getCurrentFile();if(null!=c&&c.constructor!=LocalFile&&"draw.io"==this.getServiceName()){var g=this.getSearch("create title mode url drive splash state clibs ui viewbox hide-pages".split(" ")),g=g+((0==g.length?"?":"&")+"page-id="+a.getId());null!=d&&(g+="&"+d.join("&"));return(b&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?
EditorUi.drawHost:"https://"+window.location.host)+"/"+g+"#"+c.getHash()}}return null};
EditorUi.prototype.createPageMenu=function(a,d){return mxUtils.bind(this,function(b,c){var g=this.editor.graph;b.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),c);b.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),c);b.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,d)}),c);null!=this.getLinkForPage(a)&&(b.addSeparator(c),b.addItem(mxResources.get("link"),
-null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(b,c,d,e,k,l){b=this.createUrlParameters(b,c,d,e,k,l);d||b.push("hide-pages=1");g.isSelectionEmpty()||(d=g.getBoundingBox(g.getSelectionCells()),c=g.view.translate,k=g.view.scale,d.width/=k,d.height/=k,d.x=d.x/k-c.x,d.y=d.y/k-c.y,b.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}))));
+null,mxUtils.bind(this,function(){this.showPublishLinkDialog(mxResources.get("url"),!0,null,null,mxUtils.bind(this,function(b,c,d,e,k,n){b=this.createUrlParameters(b,c,d,e,k,n);d||b.push("hide-pages=1");g.isSelectionEmpty()||(d=g.getBoundingBox(g.getSelectionCells()),c=g.view.translate,k=g.view.scale,d.width/=k,d.height/=k,d.x=d.x/k-c.x,d.y=d.y/k-c.y,b.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}))));
e=new EmbedDialog(this,this.getLinkForPage(a,b,e));this.showDialog(e.container,440,240,!0,!0);e.init()}))})));b.addSeparator(c);b.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a,mxResources.get("copyOf",[a.getName()]))}),c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=this.getServiceName()||(b.addSeparator(c),b.addItem(mxResources.get("openInNewWindow"),null,mxUtils.bind(this,function(){this.editor.editAsNew(this.getFileData(!0,null,null,null,
!0,!0))}),c))})};(function(){var a=EditorUi.prototype.refresh;EditorUi.prototype.refresh=function(d){a.apply(this,arguments);this.updateTabContainer()}})();(function(){mxCodecRegistry.getCodec(ChangePageSetup).exclude.push("page")})();(function(){var a=new mxObjectCodec(new MovePage,["ui"]);a.beforeDecode=function(a,b,c){c.ui=a.ui;return b};a.afterDecode=function(a,b,c){a=c.oldIndex;c.oldIndex=c.newIndex;c.newIndex=a;return c};mxCodecRegistry.register(a)})();
(function(){var a=new mxObjectCodec(new RenamePage,["ui","page"]);a.beforeDecode=function(a,b,c){c.ui=a.ui;return b};a.afterDecode=function(a,b,c){a=c.previous;c.previous=c.name;c.name=a;return c};mxCodecRegistry.register(a)})();
(function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),d="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,c,g){g.setAttribute("relatedPage",c.relatedPage.getId());null==c.index&&(g.setAttribute("name",c.relatedPage.getName()),null!=c.relatedPage.viewState&&g.setAttribute("viewState",JSON.stringify(c.relatedPage.viewState,function(a,b){return 0>mxUtils.indexOf(d,
a)?b:void 0})),null!=c.relatedPage.root&&a.encodeCell(c.relatedPage.root,g));return g};a.beforeDecode=function(a,c,d){d.ui=a.ui;d.relatedPage=d.ui.getPageById(c.getAttribute("relatedPage"));if(null==d.relatedPage){var b=c.ownerDocument.createElement("diagram");b.setAttribute("id",c.getAttribute("relatedPage"));b.setAttribute("name",c.getAttribute("name"));d.relatedPage=new DiagramPage(b);b=c.getAttribute("viewState");null!=b&&(d.relatedPage.viewState=JSON.parse(b),c.removeAttribute("viewState"));
-c=c.cloneNode(!0);b=c.firstChild;if(null!=b)for(d.relatedPage.root=a.decodeCell(b,!1),d=b.nextSibling,b.parentNode.removeChild(b),b=d;null!=b;){d=b.nextSibling;if(b.nodeType==mxConstants.NODETYPE_ELEMENT){var g=b.getAttribute("id");null==a.lookup(g)&&a.decodeCell(b)}b.parentNode.removeChild(b);b=d}}return c};a.afterDecode=function(a,c,d){d.index=d.previousIndex;return d};mxCodecRegistry.register(a)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var a=Graph.prototype.foldCells;Graph.prototype.foldCells=function(b,d,f,m,n){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),b));this.stopEditing();this.model.beginUpdate();try{for(var c=f.slice(),g=0;g<f.length;g++)"1"==mxUtils.getValue(this.getCurrentCellStyle(f[g]),"treeFolding","0")&&this.foldTreeCell(b,f[g]);f=c;f=a.apply(this,arguments)}finally{this.model.endUpdate()}return f};Graph.prototype.foldTreeCell=
+c=c.cloneNode(!0);b=c.firstChild;if(null!=b)for(d.relatedPage.root=a.decodeCell(b,!1),d=b.nextSibling,b.parentNode.removeChild(b),b=d;null!=b;){d=b.nextSibling;if(b.nodeType==mxConstants.NODETYPE_ELEMENT){var g=b.getAttribute("id");null==a.lookup(g)&&a.decodeCell(b)}b.parentNode.removeChild(b);b=d}}return c};a.afterDecode=function(a,c,d){d.index=d.previousIndex;return d};mxCodecRegistry.register(a)})();(function(){EditorUi.prototype.altShiftActions[68]="selectDescendants";var a=Graph.prototype.foldCells;Graph.prototype.foldCells=function(b,d,f,l,m){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),b));this.stopEditing();this.model.beginUpdate();try{for(var c=f.slice(),g=0;g<f.length;g++)"1"==mxUtils.getValue(this.getCurrentCellStyle(f[g]),"treeFolding","0")&&this.foldTreeCell(b,f[g]);f=c;f=a.apply(this,arguments)}finally{this.model.endUpdate()}return f};Graph.prototype.foldTreeCell=
function(a,b){this.model.beginUpdate();try{var c=[];this.traverse(b,!0,mxUtils.bind(this,function(a,d){null!=d&&c.push(d);a!=b&&c.push(a);return a==b||!this.model.isCollapsed(a)}));this.model.setCollapsed(b,a);for(var d=0;d<c.length;d++)this.model.setVisible(c[d],!a)}finally{this.model.endUpdate()}};var d=EditorUi.prototype.init;EditorUi.prototype.init=function(){d.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function a(a){return v.isVertex(a)&&
-d(a)}function b(a){var b=!1;null!=a&&(b="1"==q.getCurrentCellStyle(a).treeMoving);return b}function d(a){var b=!1;null!=a&&(a=v.getParent(a),b=q.view.getState(a),b="tree"==(null!=b?b.style:q.getCellStyle(a)).containerType);return b}function m(a){var b=!1;null!=a&&(a=v.getParent(a),b=q.view.getState(a),q.view.getState(a),b=null!=(null!=b?b.style:q.getCellStyle(a)).childLayout);return b}function n(a){a=q.view.getState(a);if(null!=a){var b=q.getIncomingEdges(a.cell);if(0<b.length&&(b=q.view.getState(b[0]),
+d(a)}function b(a){var b=!1;null!=a&&(b="1"==q.getCurrentCellStyle(a).treeMoving);return b}function d(a){var b=!1;null!=a&&(a=v.getParent(a),b=q.view.getState(a),b="tree"==(null!=b?b.style:q.getCellStyle(a)).containerType);return b}function l(a){var b=!1;null!=a&&(a=v.getParent(a),b=q.view.getState(a),q.view.getState(a),b=null!=(null!=b?b.style:q.getCellStyle(a)).childLayout);return b}function m(a){a=q.view.getState(a);if(null!=a){var b=q.getIncomingEdges(a.cell);if(0<b.length&&(b=q.view.getState(b[0]),
null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y==a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function e(a,b){b=null!=b?b:!0;q.model.beginUpdate();try{var c=q.model.getParent(a),d=q.getIncomingEdges(a),e=q.cloneCells([d[0],a]);q.model.setTerminal(e[0],
-q.model.getTerminal(d[0],!0),!0);var f=n(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;q.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=q.view.getState(a),l=q.view.scale;if(null!=k){var m=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-
-10)*l:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var p=q.getOutgoingEdges(q.model.getTerminal(d[0],!0));if(null!=p){for(var t=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,v=g=d=0;v<p.length;v++){var u=q.model.getTerminal(p[v],!1);if(f==n(u)){var z=q.view.getState(u);u!=a&&null!=z&&(t&&b!=z.getCenterX()<k.getCenterX()||!t&&b!=z.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,z)&&(d=10+Math.max(d,(Math.min(m.x+m.width,z.x+z.width)-Math.max(m.x,z.x))/l),g=10+Math.max(g,
-(Math.min(m.y+m.height,z.y+z.height)-Math.max(m.y,z.y))/l))}}t?g=0:d=0;for(v=0;v<p.length;v++)if(u=q.model.getTerminal(p[v],!1),f==n(u)&&(z=q.view.getState(u),u!=a&&null!=z&&(t&&b!=z.getCenterX()<k.getCenterX()||!t&&b!=z.getCenterY()<k.getCenterY()))){var x=[];q.traverse(z.cell,!0,function(a,b){null!=b&&x.push(b);x.push(a);return!0});q.moveCells(x,(b?1:-1)*d,(b?1:-1)*g)}}}return q.addCells(e,c)}finally{q.model.endUpdate()}}function k(a){q.model.beginUpdate();try{var b=n(a),c=q.getIncomingEdges(a),
-d=q.cloneCells([c[0],a]);q.model.setTerminal(c[0],d[1],!1);q.model.setTerminal(d[0],d[1],!0);q.model.setTerminal(d[0],a,!1);var e=q.model.getParent(a),f=e.geometry,g=[];q.view.currentRoot!=e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);q.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,m=-m):b==mxConstants.DIRECTION_WEST?(k=-k,m=0):b==mxConstants.DIRECTION_EAST&&
-(m=0);q.moveCells(g,k,m);return q.addCells(d,e)}finally{q.model.endUpdate()}}function l(a,b){q.model.beginUpdate();try{var c=q.model.getParent(a),d=q.getIncomingEdges(a),e=n(a);0==d.length&&(d=[q.createEdge(c,null,"",null,null,q.createCurrentEdgeStyle())],e=b);var f=q.cloneCells([d[0],a]);q.model.setTerminal(f[0],a,!0);if(null==q.model.getTerminal(f[0],!1)){q.model.setTerminal(f[0],f[1],!1);var g=q.getCellStyle(f[1]).newEdgeStyle;if(null!=g)try{var k=JSON.parse(g),m;for(m in k)q.setCellStyles(m,k[m],
-[f[0]]),"edgeStyle"==m&&"elbowEdgeStyle"==k[m]&&q.setCellStyles("elbow",e==mxConstants.DIRECTION_SOUTH||e==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[f[0]])}catch(ea){}}var d=q.getOutgoingEdges(a),l=c.geometry,g=[];q.view.currentRoot==c&&(l=new mxRectangle);for(k=0;k<d.length;k++){var p=q.model.getTerminal(d[k],!1);null!=p&&g.push(p)}var t=q.view.getBounds(g),v=q.view.translate,u=q.view.scale;e==mxConstants.DIRECTION_SOUTH?(f[1].geometry.x=null==t?a.geometry.x+(a.geometry.width-f[1].geometry.width)/
-2:(t.x+t.width)/u-v.x-l.x+10,f[1].geometry.y+=f[1].geometry.height-l.y+40):e==mxConstants.DIRECTION_NORTH?(f[1].geometry.x=null==t?a.geometry.x+(a.geometry.width-f[1].geometry.width)/2:(t.x+t.width)/u-v.x+-l.x+10,f[1].geometry.y-=f[1].geometry.height+l.y+40):(f[1].geometry.x=e==mxConstants.DIRECTION_WEST?f[1].geometry.x-(f[1].geometry.width+l.x+40):f[1].geometry.x+(f[1].geometry.width-l.x+40),f[1].geometry.y=null==t?a.geometry.y+(a.geometry.height-f[1].geometry.height)/2:(t.y+t.height)/u-v.y+-l.y+
-10);return q.addCells(f,c)}finally{q.model.endUpdate()}}function p(a,b,c){a=q.getOutgoingEdges(a);c=q.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=q.view.getState(q.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function u(a,b){var c=n(a),d=b==mxConstants.DIRECTION_EAST||
+q.model.getTerminal(d[0],!0),!0);var f=m(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;q.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=q.view.getState(a),l=q.view.scale;if(null!=k){var n=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-e[1].geometry.width-
+10)*l:n.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var p=q.getOutgoingEdges(q.model.getTerminal(d[0],!0));if(null!=p){for(var t=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,v=g=d=0;v<p.length;v++){var u=q.model.getTerminal(p[v],!1);if(f==m(u)){var x=q.view.getState(u);u!=a&&null!=x&&(t&&b!=x.getCenterX()<k.getCenterX()||!t&&b!=x.getCenterY()<k.getCenterY())&&mxUtils.intersects(n,x)&&(d=10+Math.max(d,(Math.min(n.x+n.width,x.x+x.width)-Math.max(n.x,x.x))/l),g=10+Math.max(g,
+(Math.min(n.y+n.height,x.y+x.height)-Math.max(n.y,x.y))/l))}}t?g=0:d=0;for(v=0;v<p.length;v++)if(u=q.model.getTerminal(p[v],!1),f==m(u)&&(x=q.view.getState(u),u!=a&&null!=x&&(t&&b!=x.getCenterX()<k.getCenterX()||!t&&b!=x.getCenterY()<k.getCenterY()))){var z=[];q.traverse(x.cell,!0,function(a,b){null!=b&&z.push(b);z.push(a);return!0});q.moveCells(z,(b?1:-1)*d,(b?1:-1)*g)}}}return q.addCells(e,c)}finally{q.model.endUpdate()}}function k(a){q.model.beginUpdate();try{var b=m(a),c=q.getIncomingEdges(a),
+d=q.cloneCells([c[0],a]);q.model.setTerminal(c[0],d[1],!1);q.model.setTerminal(d[0],d[1],!0);q.model.setTerminal(d[0],a,!1);var e=q.model.getParent(a),f=e.geometry,g=[];q.view.currentRoot!=e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);q.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-l):b==mxConstants.DIRECTION_WEST?(k=-k,l=0):b==mxConstants.DIRECTION_EAST&&
+(l=0);q.moveCells(g,k,l);return q.addCells(d,e)}finally{q.model.endUpdate()}}function n(a,b){q.model.beginUpdate();try{var c=q.model.getParent(a),d=q.getIncomingEdges(a),e=m(a);0==d.length&&(d=[q.createEdge(c,null,"",null,null,q.createCurrentEdgeStyle())],e=b);var f=q.cloneCells([d[0],a]);q.model.setTerminal(f[0],a,!0);if(null==q.model.getTerminal(f[0],!1)){q.model.setTerminal(f[0],f[1],!1);var g=q.getCellStyle(f[1]).newEdgeStyle;if(null!=g)try{var k=JSON.parse(g),l;for(l in k)q.setCellStyles(l,k[l],
+[f[0]]),"edgeStyle"==l&&"elbowEdgeStyle"==k[l]&&q.setCellStyles("elbow",e==mxConstants.DIRECTION_SOUTH||e==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[f[0]])}catch(ea){}}var d=q.getOutgoingEdges(a),n=c.geometry,g=[];q.view.currentRoot==c&&(n=new mxRectangle);for(k=0;k<d.length;k++){var p=q.model.getTerminal(d[k],!1);null!=p&&g.push(p)}var t=q.view.getBounds(g),v=q.view.translate,u=q.view.scale;e==mxConstants.DIRECTION_SOUTH?(f[1].geometry.x=null==t?a.geometry.x+(a.geometry.width-f[1].geometry.width)/
+2:(t.x+t.width)/u-v.x-n.x+10,f[1].geometry.y+=f[1].geometry.height-n.y+40):e==mxConstants.DIRECTION_NORTH?(f[1].geometry.x=null==t?a.geometry.x+(a.geometry.width-f[1].geometry.width)/2:(t.x+t.width)/u-v.x+-n.x+10,f[1].geometry.y-=f[1].geometry.height+n.y+40):(f[1].geometry.x=e==mxConstants.DIRECTION_WEST?f[1].geometry.x-(f[1].geometry.width+n.x+40):f[1].geometry.x+(f[1].geometry.width-n.x+40),f[1].geometry.y=null==t?a.geometry.y+(a.geometry.height-f[1].geometry.height)/2:(t.y+t.height)/u-v.y+-n.y+
+10);return q.addCells(f,c)}finally{q.model.endUpdate()}}function p(a,b,c){a=q.getOutgoingEdges(a);c=q.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=q.view.getState(q.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function u(a,b){var c=m(a),d=b==mxConstants.DIRECTION_EAST||
b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST)==d&&c!=b?t.actions.get("selectParent").funct():c==b?(d=q.getOutgoingEdges(a),null!=d&&0<d.length&&q.setSelectionCell(q.model.getTerminal(d[0],!1))):(c=q.getIncomingEdges(a),null!=c&&0<c.length&&(d=p(q.model.getTerminal(c[0],!0),d,a),c=q.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&q.setSelectionCell(d[c].cell)))))}
var t=this,q=t.editor.graph,v=q.getModel(),y=t.menus.createPopupMenu;t.menus.createPopupMenu=function(b,c,d){y.apply(this,arguments);if(1==q.getSelectionCount()){c=q.getSelectionCell();var e=q.getOutgoingEdges(c);b.addSeparator();0<e.length&&(a(q.getSelectionCell())&&this.addMenuItems(b,["selectChildren"],null,d),this.addMenuItems(b,["selectDescendants"],null,d));a(q.getSelectionCell())&&(b.addSeparator(),0<q.getIncomingEdges(c).length&&this.addMenuItems(b,["selectSiblings","selectParent"],null,d))}};
t.actions.addAction("selectChildren",function(){if(q.isEnabled()&&1==q.getSelectionCount()){var a=q.getSelectionCell(),a=q.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(q.model.getTerminal(a[c],!1));q.setSelectionCells(b)}}},null,null,"Alt+Shift+X");t.actions.addAction("selectSiblings",function(){if(q.isEnabled()&&1==q.getSelectionCount()){var a=q.getSelectionCell(),a=q.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=q.getOutgoingEdges(q.model.getTerminal(a[0],!0)),null!=a)){for(var b=
[],c=0;c<a.length;c++)b.push(q.model.getTerminal(a[c],!1));q.setSelectionCells(b)}}},null,null,"Alt+Shift+S");t.actions.addAction("selectParent",function(){if(q.isEnabled()&&1==q.getSelectionCount()){var a=q.getSelectionCell(),a=q.getIncomingEdges(a);null!=a&&0<a.length&&q.setSelectionCell(q.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");t.actions.addAction("selectDescendants",function(a,b){var c=q.getSelectionCell();if(q.isEnabled()&&q.model.isVertex(c)){if(null!=b&&mxEvent.isAltDown(b))q.setSelectionCells(q.model.getEdges(c,
null==b||!mxEvent.isShiftDown(b),null==b||!mxEvent.isControlDown(b)));else{var d=[];q.traverse(c,!0,function(a,c){null!=c&&d.push(c);null!=b&&mxEvent.isShiftDown(b)||d.push(a);return!0})}q.setSelectionCells(d)}},null,null,"Alt+Shift+D");var x=q.removeCells;q.removeCells=function(b,c){c=null!=c?c:!0;null==b&&(b=this.getDeletableCells(this.getSelectionCells()));c&&(b=this.getDeletableCells(this.addAllEdges(b)));for(var e=[],f=0;f<b.length;f++){var g=b[f];v.isEdge(g)&&d(g)&&(e.push(g),g=v.getTerminal(g,
!1));if(a(g)){var k=[];q.traverse(g,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});0<k.length&&(e=e.concat(k),g=q.getIncomingEdges(b[f]),b=b.concat(g))}else null!=g&&e.push(b[f])}b=e;return x.apply(this,arguments)};t.hoverIcons.getStateAt=function(b,c,d){return a(b.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var B=q.duplicateCells;q.duplicateCells=function(b,c){b=null!=b?b:this.getSelectionCells();for(var d=b.slice(0),e=0;e<d.length;e++){var f=q.view.getState(d[e]);if(null!=
-f&&a(f.cell))for(var g=q.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var k=B.call(this,b,c);if(k.length==b.length)for(e=0;e<b.length;e++)if(a(b[e])){var m=q.getIncomingEdges(k[e]),g=q.getIncomingEdges(b[e]);if(0==m.length&&0<g.length){var l=this.cloneCell(g[0]);this.addEdge(l,q.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var z=q.moveCells;q.moveCells=function(b,c,d,e,f,g,k){var m=null;this.model.beginUpdate();
-try{var l=f,n=this.getCurrentCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var p=0;p<b.length;p++)if(a(b[p])||q.model.isEdge(b[p])&&null==q.model.getTerminal(b[p],!0)){f=q.model.getParent(b[p]);break}if(null!=l&&f!=l&&null!=this.view.getState(b[0])){var t=q.getIncomingEdges(b[0]);if(0<t.length){var v=q.view.getState(q.model.getTerminal(t[0],!0));if(null!=v){var u=q.view.getState(l);null!=u&&(c=(u.getCenterX()-v.getCenterX())/q.view.scale,d=(u.getCenterY()-v.getCenterY())/
-q.view.scale)}}}}m=z.apply(this,arguments);if(null!=m&&null!=b&&m.length==b.length)for(p=0;p<m.length;p++)if(this.model.isEdge(m[p]))a(l)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[p],!0))&&this.model.setTerminal(m[p],l,!0);else if(a(b[p])&&(t=q.getIncomingEdges(b[p]),0<t.length))if(!e)a(l)&&0>mxUtils.indexOf(b,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],l,!0);else if(0==q.getIncomingEdges(m[p]).length){n=l;if(null==n||n==q.model.getParent(b[p]))n=q.model.getTerminal(t[0],!0);
-e=this.cloneCell(t[0]);this.addEdge(e,q.getDefaultParent(),n,m[p])}}finally{this.model.endUpdate()}return m};if(null!=t.sidebar){var A=t.sidebar.dropAndConnect;t.sidebar.dropAndConnect=function(b,c,d,e){var f=q.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],b,!0);var m=q.getCellGeometry(g[k]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var C=
-{88:t.actions.get("selectChildren"),84:t.actions.get("selectSubtree"),80:t.actions.get("selectParent"),83:t.actions.get("selectSiblings")},E=t.onKeyDown;t.onKeyDown=function(b){try{if(q.isEnabled()&&!q.isEditing()&&a(q.getSelectionCell())&&1==q.getSelectionCount()){var c=null;0<q.getIncomingEdges(q.getSelectionCell()).length&&(9==b.which?c=mxEvent.isShiftDown(b)?k(q.getSelectionCell()):l(q.getSelectionCell()):13==b.which&&(c=e(q.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==
+f&&a(f.cell))for(var g=q.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],b)}this.model.beginUpdate();try{var k=B.call(this,b,c);if(k.length==b.length)for(e=0;e<b.length;e++)if(a(b[e])){var l=q.getIncomingEdges(k[e]),g=q.getIncomingEdges(b[e]);if(0==l.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,q.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var z=q.moveCells;q.moveCells=function(b,c,d,e,f,g,k){var l=null;this.model.beginUpdate();
+try{var m=f,n=this.getCurrentCellStyle(f);if(null!=b&&a(f)&&"1"==mxUtils.getValue(n,"treeFolding","0")){for(var p=0;p<b.length;p++)if(a(b[p])||q.model.isEdge(b[p])&&null==q.model.getTerminal(b[p],!0)){f=q.model.getParent(b[p]);break}if(null!=m&&f!=m&&null!=this.view.getState(b[0])){var t=q.getIncomingEdges(b[0]);if(0<t.length){var v=q.view.getState(q.model.getTerminal(t[0],!0));if(null!=v){var u=q.view.getState(m);null!=u&&(c=(u.getCenterX()-v.getCenterX())/q.view.scale,d=(u.getCenterY()-v.getCenterY())/
+q.view.scale)}}}}l=z.apply(this,arguments);if(null!=l&&null!=b&&l.length==b.length)for(p=0;p<l.length;p++)if(this.model.isEdge(l[p]))a(m)&&0>mxUtils.indexOf(l,this.model.getTerminal(l[p],!0))&&this.model.setTerminal(l[p],m,!0);else if(a(b[p])&&(t=q.getIncomingEdges(b[p]),0<t.length))if(!e)a(m)&&0>mxUtils.indexOf(b,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],m,!0);else if(0==q.getIncomingEdges(l[p]).length){n=m;if(null==n||n==q.model.getParent(b[p]))n=q.model.getTerminal(t[0],!0);
+e=this.cloneCell(t[0]);this.addEdge(e,q.getDefaultParent(),n,l[p])}}finally{this.model.endUpdate()}return l};if(null!=t.sidebar){var A=t.sidebar.dropAndConnect;t.sidebar.dropAndConnect=function(b,c,d,e){var f=q.model,g=null;f.beginUpdate();try{if(g=A.apply(this,arguments),a(b))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],b,!0);var l=q.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var C=
+{88:t.actions.get("selectChildren"),84:t.actions.get("selectSubtree"),80:t.actions.get("selectParent"),83:t.actions.get("selectSiblings")},E=t.onKeyDown;t.onKeyDown=function(b){try{if(q.isEnabled()&&!q.isEditing()&&a(q.getSelectionCell())&&1==q.getSelectionCount()){var c=null;0<q.getIncomingEdges(q.getSelectionCell()).length&&(9==b.which?c=mxEvent.isShiftDown(b)?k(q.getSelectionCell()):n(q.getSelectionCell()):13==b.which&&(c=e(q.getSelectionCell(),!mxEvent.isShiftDown(b))));if(null!=c&&0<c.length)1==
c.length&&q.model.isEdge(c[0])?q.setSelectionCell(q.model.getTerminal(c[0],!1)):q.setSelectionCell(c[c.length-1]),null!=t.hoverIcons&&t.hoverIcons.update(q.view.getState(q.getSelectionCell())),q.startEditingAtCell(q.getSelectionCell()),mxEvent.consume(b);else if(mxEvent.isAltDown(b)&&mxEvent.isShiftDown(b)){var d=C[b.keyCode];null!=d&&(d.funct(b),mxEvent.consume(b))}else 37==b.keyCode?(u(q.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(b)):38==b.keyCode?(u(q.getSelectionCell(),mxConstants.DIRECTION_NORTH),
-mxEvent.consume(b)):39==b.keyCode?(u(q.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(u(q.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(b))}}catch(N){t.handleError(N)}mxEvent.isConsumed(b)||E.apply(this,arguments)};var D=q.connectVertex;q.connectVertex=function(b,c,d,f,g,m,p){var t=q.getIncomingEdges(b);if(a(b)){var v=n(b),u=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,z=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;
-return v==c||0==t.length?l(b,c):u==z?k(b):e(b,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)}return D.apply(this,arguments)};q.getSubtree=function(c){var d=[c];!b(c)&&!a(c)||m(c)||q.traverse(c,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var G=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){G.apply(this,arguments);(b(this.state.cell)||a(this.state.cell))&&!m(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&
+mxEvent.consume(b)):39==b.keyCode?(u(q.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(b)):40==b.keyCode&&(u(q.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(b))}}catch(N){t.handleError(N)}mxEvent.isConsumed(b)||E.apply(this,arguments)};var D=q.connectVertex;q.connectVertex=function(b,c,d,f,g,l,p){var t=q.getIncomingEdges(b);if(a(b)){var v=m(b),u=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,x=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;
+return v==c||0==t.length?n(b,c):u==x?k(b):e(b,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)}return D.apply(this,arguments)};q.getSubtree=function(c){var d=[c];!b(c)&&!a(c)||l(c)||q.traverse(c,!0,function(a,b){null!=b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var G=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){G.apply(this,arguments);(b(this.state.cell)||a(this.state.cell))&&!l(this.state.cell)&&0<this.graph.getOutgoingEdges(this.state.cell).length&&
(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSubtree(this.state.cell));
this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;t.hoverIcons.reset();mxEvent.consume(a)})))};var H=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){H.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var I=mxVertexHandler.prototype.setHandlesVisible;
mxVertexHandler.prototype.setHandlesVisible=function(a){I.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var J=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(a,b){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var b=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=b.apply(this,
@@ -11331,15 +11331,15 @@ arguments),d=this.graph;return a.concat([this.addEntry("tree container",function
c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");d.geometry.relative=!0;d.edge=!0;b.insertEdge(d,!0);c.insertEdge(d,!1);a.insert(d);a.insert(b);a.insert(c);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");
a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),'ellipse;whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');b.vertex=!0;var c=new mxCell("Topic",new mxGeometry(320,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};');
c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;b.insertEdge(d,!0);c.insertEdge(d,!1);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;b.insertEdge(l,!0);g.insertEdge(l,!1);var p=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};');
+g.vertex=!0;var n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");n.geometry.relative=!0;n.edge=!0;b.insertEdge(n,!0);g.insertEdge(n,!1);var p=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};');
p.vertex=!0;var u=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");u.geometry.relative=!0;u.edge=!0;b.insertEdge(u,!0);p.insertEdge(u,!1);var t=new mxCell("Branch",new mxGeometry(20,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};');
-t.vertex=!0;var q=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");q.geometry.relative=!0;q.edge=!0;b.insertEdge(q,!0);t.insertEdge(q,!1);a.insert(d);a.insert(l);a.insert(u);a.insert(q);a.insert(b);a.insert(c);a.insert(g);a.insert(p);a.insert(t);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",
+t.vertex=!0;var q=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");q.geometry.relative=!0;q.edge=!0;b.insertEdge(q,!0);t.insertEdge(q,!1);a.insert(d);a.insert(n);a.insert(u);a.insert(q);a.insert(b);a.insert(c);a.insert(g);a.insert(p);a.insert(t);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=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;');a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),'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;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"entityRelationEdgeStyle","startArrow":"none","endArrow":"none","segment":10,"curved":1};');
a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),'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};');
a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),'swimlane;html=1;startSize=20;horizontal=1;containerType=tree;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
a.vertex=!0;var b=new mxCell("Organization",new mxGeometry(80,40,120,60),'whiteSpace=wrap;html=1;align=center;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');d.setAttributeForCell(b,"treeRoot","1");b.vertex=!0;var c=new mxCell("Division",new mxGeometry(20,140,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
-c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!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;b.insertEdge(l,!0);g.insertEdge(l,!1);a.insert(e);a.insert(l);a.insert(b);a.insert(c);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function(){var a=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(a,"treeRoot",
+c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!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 n=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
+n.geometry.relative=!0;n.edge=!0;b.insertEdge(n,!0);g.insertEdge(n,!1);a.insert(e);a.insert(n);a.insert(b);a.insert(c);a.insert(g);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree root",function(){var a=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(a,"treeRoot",
"1");a.vertex=!0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree division",function(){var a=new mxCell("Division",new mxGeometry(20,40,100,60),'whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");
b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree sub sections",function(){var a=new mxCell("Sub Section",new mxGeometry(0,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");
b.geometry.setTerminalPoint(new mxPoint(110,-40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);var c=new mxCell("Sub Section",new mxGeometry(120,0,100,60),"whiteSpace=wrap;html=1;align=center;verticalAlign=middle;treeFolding=1;treeMoving=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=orthogonalEdgeStyle;startArrow=none;endArrow=none;rounded=0;targetPortConstraint=eastwest;sourcePortConstraint=northsouth;");d.geometry.setTerminalPoint(new mxPoint(110,-40),!0);d.geometry.relative=
@@ -11357,14 +11357,14 @@ this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(
mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 3 L 11 7" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxWindow.prototype.normalizeImage=Graph.createSvgImage(14,10,'<path d="M 3 3 L 7 7 L 11 3" stroke="#C0C0C0" stroke-width="2" fill="#ffffff"/>').src;mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5,5,'<path d="m 0 0 L 5 5 M 0 5 L 5 0" stroke="#29b6f2"/>');mxOutline.prototype.sizerImage=null;mxConstants.VERTEX_SELECTION_COLOR="#C0C0C0";mxConstants.EDGE_SELECTION_COLOR=
"#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor=
"#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!mxClient.IS_IOS&&!mxClient.IS_ANDROID;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var f=EditorUi.prototype.updateTabContainer;
-EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom=this.tabContainerHeight+"px");f.apply(this,arguments)};var m=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){m.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var n=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,c){null!=c.shortcut&&900>
-b&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",c.shortcut):n.apply(this,arguments)};var e=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){e.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+a.style.display;a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat=
+EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom=this.tabContainerHeight+"px");f.apply(this,arguments)};var l=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){l.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var m=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,c){null!=c.shortcut&&900>
+b&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",c.shortcut):m.apply(this,arguments)};var e=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){e.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+a.style.display;a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat=
"no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"));"none"!=a.style.display&&(a.style.display="inline-block")}};var k=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){k.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;";
a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="8px";a.style.marginRight="4px";var b=document.createElement("a");
b.className="geMenuItem gePrimaryBtn";b.style.marginLeft="8px";b.style.padding="6px";"1"==urlParams.noSaveBtn?(mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)):(mxUtils.write(b,mxResources.get("save")),b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),
a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem",b.style.marginLeft="6px",b.style.padding="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)));"1"!=urlParams.noExitBtn&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("exit")),b.setAttribute("title",mxResources.get("exit")),
-b.className="geMenuItem",b.style.marginLeft="6px",b.style.padding="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),a.appendChild(b));this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);a.y+=40;return a};var l=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var d=this.editorUi.editor.graph;
-a.smartSeparators=!0;l.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==d.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editGeometry","edit","-"],null,c),d.isCellFoldable(d.getSelectionCell())&&this.addMenuItems(a,d.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible",
+b.className="geMenuItem",b.style.marginLeft="6px",b.style.padding="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),a.appendChild(b));this.buttonContainer.appendChild(a);this.buttonContainer.style.top="6px"}};Sidebar.prototype.getTooltipOffset=function(){var a=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);a.y+=40;return a};var n=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(a,b,c){var d=this.editorUi.editor.graph;
+a.smartSeparators=!0;n.apply(this,arguments);mxUtils.bind(this,function(a,b){var c=new FilenameDialog(this.editorUi,a,mxResources.get("apply"),function(a){b(parseFloat(a))},mxResources.get("spacing"));this.editorUi.showDialog(c.container,300,80,!0,!0);c.init()});1==d.getSelectionCount()?(this.addMenuItems(a,["editTooltip","-","editGeometry","edit","-"],null,c),d.isCellFoldable(d.getSelectionCell())&&this.addMenuItems(a,d.isCellCollapsed(b)?["expand"]:["collapse"],null,c),this.addMenuItems(a,["collapsible",
"-","lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):d.isSelectionEmpty()&&d.isEnabled()?(a.addSeparator(),this.addMenuItems(a,["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),a.addSeparator(),this.addSubmenu("insert",a),this.addMenuItems(a,["-","exitGroup"],null,c)):d.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow?
this.formatWindow.window.setVisible(null!=b?b:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var p=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&&
(this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),
@@ -11403,25 +11403,25 @@ l.diagramContainer.style.top="47px";var J=l.menus.get("viewZoom");if(null!=J){th
F.style.textDecoration="none";F.style.textDecoration="none";F.style.right="0px";F.style.bottom="0px";F.style.overflow="hidden";F.style.visibility="hidden";F.style.textAlign="center";F.style.color="#000";F.style.fontSize="12px";F.style.color="#707070";F.style.width="59px";F.style.cursor="pointer";F.style.borderTop="1px solid lightgray";F.style.borderLeft="1px solid lightgray";F.style.height=parseInt(l.tabContainerHeight)-1+"px";F.style.lineHeight=parseInt(l.tabContainerHeight)+1+"px";I.appendChild(F);
J=mxUtils.bind(this,function(){F.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,J);l.editor.addListener("resetGraphView",J);l.editor.addListener("pageSelected",J);var M=l.setGraphEnabled;l.setGraphEnabled=function(){M.apply(this,arguments);null!=this.tabContainer&&(F.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}I.appendChild(l.tabContainer);
I.appendChild(n);I.appendChild(l.diagramContainer);k.appendChild(I);l.updateTabContainer();var L=null;g();mxEvent.addListener(window,"resize",function(){g();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};
-(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var d=EditorUi.initTheme;EditorUi.initTheme=function(){d.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,d,f,m){var c=d.y,e=d.x,g=!1,l=!1;if(null!=this.states&&null!=b&&null!=d){var p=this,u=new mxCellState,t=this.graph.getView().scale,q=Math.max(2,this.getGuideTolerance()/2);u.x=b.x+e;u.y=b.y+c;u.width=b.width;u.height=b.height;for(var v=[],y=[],x=0;x<this.states.length;x++){var B=this.states[x];B instanceof mxCellState&&(m||!this.graph.isCellSelected(B.cell))&&((u.x>=B.x&&u.x<=B.x+B.width||B.x>=u.x&&B.x<=u.x+u.width)&&(u.y>
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var d=EditorUi.initTheme;EditorUi.initTheme=function(){d.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,d,f,l){var c=d.y,e=d.x,g=!1,n=!1;if(null!=this.states&&null!=b&&null!=d){var p=this,u=new mxCellState,t=this.graph.getView().scale,q=Math.max(2,this.getGuideTolerance()/2);u.x=b.x+e;u.y=b.y+c;u.width=b.width;u.height=b.height;for(var v=[],y=[],x=0;x<this.states.length;x++){var B=this.states[x];B instanceof mxCellState&&(l||!this.graph.isCellSelected(B.cell))&&((u.x>=B.x&&u.x<=B.x+B.width||B.x>=u.x&&B.x<=u.x+u.width)&&(u.y>
B.y+B.height+4||u.y+u.height+4<B.y)?v.push(B):(u.y>=B.y&&u.y<=B.y+B.height||B.y>=u.y&&B.y<=u.y+u.height)&&(u.x>B.x+B.width+4||u.x+u.width+4<B.x)&&y.push(B))}var z=0,A=0,C=B=0,E=0,D=0,G=0,H=0,I=5*t;if(1<v.length){v.push(u);v.sort(function(a,b){return a.y-b.y});var J=!1,x=u==v[0],t=u==v[v.length-1];if(!x&&!t)for(x=1;x<v.length-1;x++)if(u==v[x]){t=v[x-1];x=v[x+1];B=A=C=(x.y-t.y-t.height-u.height)/2;break}for(x=0;x<v.length-1;x++){var t=v[x],F=v[x+1],M=u==t||u==F,F=F.y-t.y-t.height,J=J|u==t;if(0==A&&
0==z)A=F,z=1;else if(Math.abs(A-F)<=(M||1==x&&J?q:0))z+=1;else if(1<z&&J){v=v.slice(0,x+1);break}else if(3<=v.length-x&&!J)z=0,B=A=0!=C?C:0,v.splice(0,0==x?1:x),x=-1;else break;0!=B||M||(A=B=F)}3==v.length&&v[1]==u&&(B=0)}if(1<y.length){y.push(u);y.sort(function(a,b){return a.x-b.x});J=!1;x=u==y[0];t=u==y[y.length-1];if(!x&&!t)for(x=1;x<y.length-1;x++)if(u==y[x]){t=y[x-1];x=y[x+1];G=D=H=(x.x-t.x-t.width-u.width)/2;break}for(x=0;x<y.length-1;x++){t=y[x];F=y[x+1];M=u==t||u==F;F=F.x-t.x-t.width;J|=u==
t;if(0==D&&0==E)D=F,E=1;else if(Math.abs(D-F)<=(M||1==x&&J?q:0))E+=1;else if(1<E&&J){y=y.slice(0,x+1);break}else if(3<=y.length-x&&!J)E=0,G=D=0!=H?H:0,y.splice(0,0==x?1:x),x=-1;else break;0!=G||M||(D=G=F)}3==y.length&&y[1]==u&&(G=0)}q=function(a,b,c,d){var e=[],f;d?(d=I,f=0):(d=0,f=I);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR,
mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(p.graph.getView().getOverlayPane());return a};D=function(a,b){if(a&&null!=p.guidesArrHor)for(var c=0;c<p.guidesArrHor.length;c++)p.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=p.guidesArrVer)for(c=0;c<p.guidesArrVer.length;c++)p.guidesArrVer[c].node.style.visibility="hidden"};if(1<E&&E==y.length-1){E=[];H=p.guidesArrHor;g=[];e=0;x=y[0]==u?1:0;J=y[x].y+y[x].height;if(0<G)for(x=0;x<y.length-1;x++)t=
y[x],F=y[x+1],u==t?(e=F.x-t.width-G,g.push(new mxPoint(e+t.width+I,J)),g.push(new mxPoint(F.x-I,J))):u==F?(g.push(new mxPoint(t.x+t.width+I,J)),e=t.x+t.width+G,g.push(new mxPoint(e-I,J))):(g.push(new mxPoint(t.x+t.width+I,J)),g.push(new mxPoint(F.x-I,J)));else t=y[0],x=y[2],e=t.x+t.width+(x.x-t.x-t.width-u.width)/2,g.push(new mxPoint(t.x+t.width+I,J)),g.push(new mxPoint(e-I,J)),g.push(new mxPoint(e+u.width+I,J)),g.push(new mxPoint(x.x-I,J));for(x=0;x<g.length;x+=2)y=g[x],G=g[x+1],y=q(y,G,null!=H?
-H[x/2]:null),y.node.style.visibility="visible",y.redraw(),E.push(y);for(x=g.length/2;null!=H&&x<H.length;x++)H[x].destroy();p.guidesArrHor=E;e-=b.x;g=!0}else D(!0);if(1<z&&z==v.length-1){E=[];H=p.guidesArrVer;l=[];c=0;x=v[0]==u?1:0;z=v[x].x+v[x].width;if(0<B)for(x=0;x<v.length-1;x++)t=v[x],F=v[x+1],u==t?(c=F.y-t.height-B,l.push(new mxPoint(z,c+t.height+I)),l.push(new mxPoint(z,F.y-I))):u==F?(l.push(new mxPoint(z,t.y+t.height+I)),c=t.y+t.height+B,l.push(new mxPoint(z,c-I))):(l.push(new mxPoint(z,t.y+
-t.height+I)),l.push(new mxPoint(z,F.y-I)));else t=v[0],x=v[2],c=t.y+t.height+(x.y-t.y-t.height-u.height)/2,l.push(new mxPoint(z,t.y+t.height+I)),l.push(new mxPoint(z,c-I)),l.push(new mxPoint(z,c+u.height+I)),l.push(new mxPoint(z,x.y-I));for(x=0;x<l.length;x+=2)y=l[x],G=l[x+1],y=q(y,G,null!=H?H[x/2]:null,!0),y.node.style.visibility="visible",y.redraw(),E.push(y);for(x=l.length/2;null!=H&&x<H.length;x++)H[x].destroy();p.guidesArrVer=E;c-=b.y;l=!0}else D(!1,!0)}if(g||l)return u=new mxPoint(e,c),v=a.call(this,
-b,u,f,m),g&&!l?u.y=v.y:l&&!g&&(u.x=v.x),v.y!=u.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),v.x!=u.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),u;D(!0,!0);return a.apply(this,arguments)};var d=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){d.call(this,a);var b=this.guidesArrVer,c=this.guidesArrHor;if(null!=b)for(var m=0;m<b.length;m++)b[m].node.style.visibility=a?"visible":"hidden";if(null!=
-c)for(m=0;m<c.length;m++)c[m].node.style.visibility=a?"visible":"hidden"};var b=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){b.call(this);var a=this.guidesArrVer,d=this.guidesArrHor;if(null!=a){for(var f=0;f<a.length;f++)a[f].destroy();this.guidesArrVer=null}if(null!=d){for(f=0;f<d.length;f++)d[f].destroy();this.guidesArrHor=null}}})();function mxRuler(a,d,b,c){function g(){var c=a.diagramContainer;p.style.top=c.offsetTop-e+"px";p.style.left=c.offsetLeft-e+"px";p.style.width=(b?0:c.offsetWidth)+e+"px";p.style.height=(b?c.offsetHeight:0)+e+"px"}function f(a,b,c){if(null!=m)return a;var d;return function(){var e=this,f=arguments,g=c&&!d;clearTimeout(d);d=setTimeout(function(){d=null;c||a.apply(e,f)},b);g&&a.apply(e,f)}}var m=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,
-n=window.cancelAnimationFrame||window.mozCancelAnimationFrame,e=this.RULER_THICKNESS,k=this;this.unit=d;var l="dark"!=window.uiTheme?{bkgClr:"#ffffff",outBkgClr:"#e8e9ed",cornerClr:"#fbfbfb",strokeClr:"#dadce0",fontClr:"#BBBBBB",guideClr:"#0000BB"}:{bkgClr:"#202020",outBkgClr:"#2a2a2a",cornerClr:"#2a2a2a",strokeClr:"#505759",fontClr:"#BBBBBB",guideClr:"#0088cf"},p=document.createElement("div");p.style.position="absolute";p.style.background=l.bkgClr;p.style[b?"borderRight":"borderBottom"]="0.5px solid "+
-l.strokeClr;p.style.borderLeft="0.5px solid "+l.strokeClr;document.body.appendChild(p);mxEvent.disableContextMenu(p);this.editorUiRefresh=a.refresh;a.refresh=function(b){k.editorUiRefresh.apply(a,arguments);g()};g();var u=document.createElement("canvas");u.width=p.offsetWidth;u.height=p.offsetHeight;p.style.overflow="hidden";u.style.position="relative";p.appendChild(u);var t=u.getContext("2d");this.ui=a;var q=a.editor.graph;this.graph=q;this.container=p;this.canvas=u;var v=function(a,c,d,e,f){a=Math.round(a);
-c=Math.round(c);d=Math.round(d);e=Math.round(e);t.beginPath();t.moveTo(a+.5,c+.5);t.lineTo(d+.5,e+.5);t.stroke();f&&(b?(t.save(),t.translate(a,c),t.rotate(-Math.PI/2),t.fillText(f,0,0),t.restore()):t.fillText(f,a,c))},y=function(){t.clearRect(0,0,u.width,u.height);t.beginPath();t.lineWidth=.7;t.strokeStyle=l.strokeClr;t.setLineDash([]);t.font="9px Arial";t.textAlign="center";var a=q.view.scale,c=q.view.getBackgroundPageBounds(),d=q.view.translate,f=q.pageVisible,d=f?e+(b?c.y-q.container.scrollTop:
-c.x-q.container.scrollLeft):e+(b?d.y*a-q.container.scrollTop:d.x*a-q.container.scrollLeft),g=0;f&&(g=q.getPageLayout(),g=b?g.y*q.pageFormat.height:g.x*q.pageFormat.width);var m,n,p;switch(k.unit){case mxConstants.POINTS:m=p=10;n=[3,5,5,5,5,10,5,5,5,5];break;case mxConstants.MILLIMETERS:p=10;m=mxConstants.PIXELS_PER_MM;n=[5,3,3,3,3,6,3,3,3,3];break;case mxConstants.INCHES:p=.5>=a||4<=a?8:16,m=mxConstants.PIXELS_PER_INCH/p,n=[5,3,5,3,7,3,5,3,7,3,5,3,7,3,5,3]}var x=m;2<=a?x=m/(2*Math.floor(a/2)):.5>=
-a&&(x=m*Math.floor(1/a/2)*(k.unit==mxConstants.MILLIMETERS?2:1));m=null;c=f?Math.min(d+(b?c.height:c.width),b?u.height:u.width):b?u.height:u.width;if(f)if(t.fillStyle=l.outBkgClr,b){var y=d-e;0<y&&t.fillRect(0,e,e,y);c<u.height&&t.fillRect(0,c,e,u.height)}else y=d-e,0<y&&t.fillRect(e,0,y,e),c<u.width&&t.fillRect(c,0,u.width,e);t.fillStyle=l.fontClr;for(f=f?d:d%(x*a);f<=c;f+=x*a)if(y=Math.round((f-d)/a/x),!(f<e||y==m)){m=y;var B=null;0==y%p&&(B=k.formatText(g+y*x)+"");b?v(e-n[Math.abs(y)%p],f,e,f,
-B):v(f,e-n[Math.abs(y)%p],f,e,B)}t.lineWidth=1;v(b?0:e,b?e:0,e,e);t.fillStyle=l.cornerClr;t.fillRect(0,0,e,e)},x=-1,B=function(){null!=m?(null!=n&&n(x),x=m(y)):y()};this.drawRuler=B;this.sizeListener=d=f(function(){var a=q.container;b?(a=a.offsetHeight+e,u.height!=a&&(u.height=a,p.style.height=a+"px",B())):(a=a.offsetWidth+e,u.width!=a&&(u.width=a,p.style.width=a+"px",B()))},10);this.pageListener=function(){B()};this.scrollListener=c=f(function(){var a=b?q.container.scrollTop:q.container.scrollLeft;
-k.lastScroll!=a&&(k.lastScroll=a,B())},10);this.unitListener=function(a,b){k.setUnit(b.getProperty("unit"))};q.addListener(mxEvent.SIZE,d);q.container.addEventListener("scroll",c);q.view.addListener("unitChanged",this.unitListener);a.addListener("pageViewChanged",this.pageListener);a.addListener("pageScaleChanged",this.pageListener);a.addListener("pageFormatChanged",this.pageListener);this.setStyle=function(a){l=a;p.style.background=l.bkgClr;y()};this.origGuideMove=mxGuide.prototype.move;mxGuide.prototype.move=
-function(a,c,d,f){var g;if(b&&4<a.height||!b&&4<a.width){if(null!=k.guidePart)try{t.putImageData(k.guidePart.imgData1,k.guidePart.x1,k.guidePart.y1),t.putImageData(k.guidePart.imgData2,k.guidePart.x2,k.guidePart.y2),t.putImageData(k.guidePart.imgData3,k.guidePart.x3,k.guidePart.y3)}catch(K){}g=k.origGuideMove.apply(this,arguments);try{var m,n,p,q,u,x,z,y,B;t.lineWidth=.5;t.strokeStyle=l.guideClr;t.setLineDash([2]);b?(n=a.y+g.y+e-this.graph.container.scrollTop,m=0,u=n+a.height/2,q=e/2,y=n+a.height,
-z=0,p=t.getImageData(m,n-1,e,3),v(m,n,e,n),n--,x=t.getImageData(q,u-1,e,3),v(q,u,e,u),u--,B=t.getImageData(z,y-1,e,3),v(z,y,e,y),y--):(n=0,m=a.x+g.x+e-this.graph.container.scrollLeft,u=e/2,q=m+a.width/2,y=0,z=m+a.width,p=t.getImageData(m-1,n,3,e),v(m,n,m,e),m--,x=t.getImageData(q-1,u,3,e),v(q,u,q,e),q--,B=t.getImageData(z-1,y,3,e),v(z,y,z,e),z--);if(null==k.guidePart||k.guidePart.x1!=m||k.guidePart.y1!=n)k.guidePart={imgData1:p,x1:m,y1:n,imgData2:x,x2:q,y2:u,imgData3:B,x3:z,y3:y}}catch(K){}}else g=
+H[x/2]:null),y.node.style.visibility="visible",y.redraw(),E.push(y);for(x=g.length/2;null!=H&&x<H.length;x++)H[x].destroy();p.guidesArrHor=E;e-=b.x;g=!0}else D(!0);if(1<z&&z==v.length-1){E=[];H=p.guidesArrVer;n=[];c=0;x=v[0]==u?1:0;z=v[x].x+v[x].width;if(0<B)for(x=0;x<v.length-1;x++)t=v[x],F=v[x+1],u==t?(c=F.y-t.height-B,n.push(new mxPoint(z,c+t.height+I)),n.push(new mxPoint(z,F.y-I))):u==F?(n.push(new mxPoint(z,t.y+t.height+I)),c=t.y+t.height+B,n.push(new mxPoint(z,c-I))):(n.push(new mxPoint(z,t.y+
+t.height+I)),n.push(new mxPoint(z,F.y-I)));else t=v[0],x=v[2],c=t.y+t.height+(x.y-t.y-t.height-u.height)/2,n.push(new mxPoint(z,t.y+t.height+I)),n.push(new mxPoint(z,c-I)),n.push(new mxPoint(z,c+u.height+I)),n.push(new mxPoint(z,x.y-I));for(x=0;x<n.length;x+=2)y=n[x],G=n[x+1],y=q(y,G,null!=H?H[x/2]:null,!0),y.node.style.visibility="visible",y.redraw(),E.push(y);for(x=n.length/2;null!=H&&x<H.length;x++)H[x].destroy();p.guidesArrVer=E;c-=b.y;n=!0}else D(!1,!0)}if(g||n)return u=new mxPoint(e,c),v=a.call(this,
+b,u,f,l),g&&!n?u.y=v.y:n&&!g&&(u.x=v.x),v.y!=u.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),v.x!=u.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),u;D(!0,!0);return a.apply(this,arguments)};var d=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){d.call(this,a);var b=this.guidesArrVer,c=this.guidesArrHor;if(null!=b)for(var l=0;l<b.length;l++)b[l].node.style.visibility=a?"visible":"hidden";if(null!=
+c)for(l=0;l<c.length;l++)c[l].node.style.visibility=a?"visible":"hidden"};var b=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){b.call(this);var a=this.guidesArrVer,d=this.guidesArrHor;if(null!=a){for(var f=0;f<a.length;f++)a[f].destroy();this.guidesArrVer=null}if(null!=d){for(f=0;f<d.length;f++)d[f].destroy();this.guidesArrHor=null}}})();function mxRuler(a,d,b,c){function g(){var c=a.diagramContainer;p.style.top=c.offsetTop-e+"px";p.style.left=c.offsetLeft-e+"px";p.style.width=(b?0:c.offsetWidth)+e+"px";p.style.height=(b?c.offsetHeight:0)+e+"px"}function f(a,b,c){if(null!=l)return a;var d;return function(){var e=this,f=arguments,g=c&&!d;clearTimeout(d);d=setTimeout(function(){d=null;c||a.apply(e,f)},b);g&&a.apply(e,f)}}var l=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,
+m=window.cancelAnimationFrame||window.mozCancelAnimationFrame,e=this.RULER_THICKNESS,k=this;this.unit=d;var n="dark"!=window.uiTheme?{bkgClr:"#ffffff",outBkgClr:"#e8e9ed",cornerClr:"#fbfbfb",strokeClr:"#dadce0",fontClr:"#BBBBBB",guideClr:"#0000BB"}:{bkgClr:"#202020",outBkgClr:"#2a2a2a",cornerClr:"#2a2a2a",strokeClr:"#505759",fontClr:"#BBBBBB",guideClr:"#0088cf"},p=document.createElement("div");p.style.position="absolute";p.style.background=n.bkgClr;p.style[b?"borderRight":"borderBottom"]="0.5px solid "+
+n.strokeClr;p.style.borderLeft="0.5px solid "+n.strokeClr;document.body.appendChild(p);mxEvent.disableContextMenu(p);this.editorUiRefresh=a.refresh;a.refresh=function(b){k.editorUiRefresh.apply(a,arguments);g()};g();var u=document.createElement("canvas");u.width=p.offsetWidth;u.height=p.offsetHeight;p.style.overflow="hidden";u.style.position="relative";p.appendChild(u);var t=u.getContext("2d");this.ui=a;var q=a.editor.graph;this.graph=q;this.container=p;this.canvas=u;var v=function(a,c,d,e,f){a=Math.round(a);
+c=Math.round(c);d=Math.round(d);e=Math.round(e);t.beginPath();t.moveTo(a+.5,c+.5);t.lineTo(d+.5,e+.5);t.stroke();f&&(b?(t.save(),t.translate(a,c),t.rotate(-Math.PI/2),t.fillText(f,0,0),t.restore()):t.fillText(f,a,c))},y=function(){t.clearRect(0,0,u.width,u.height);t.beginPath();t.lineWidth=.7;t.strokeStyle=n.strokeClr;t.setLineDash([]);t.font="9px Arial";t.textAlign="center";var a=q.view.scale,c=q.view.getBackgroundPageBounds(),d=q.view.translate,f=q.pageVisible,d=f?e+(b?c.y-q.container.scrollTop:
+c.x-q.container.scrollLeft):e+(b?d.y*a-q.container.scrollTop:d.x*a-q.container.scrollLeft),g=0;f&&(g=q.getPageLayout(),g=b?g.y*q.pageFormat.height:g.x*q.pageFormat.width);var l,m,p;switch(k.unit){case mxConstants.POINTS:l=p=10;m=[3,5,5,5,5,10,5,5,5,5];break;case mxConstants.MILLIMETERS:p=10;l=mxConstants.PIXELS_PER_MM;m=[5,3,3,3,3,6,3,3,3,3];break;case mxConstants.INCHES:p=.5>=a||4<=a?8:16,l=mxConstants.PIXELS_PER_INCH/p,m=[5,3,5,3,7,3,5,3,7,3,5,3,7,3,5,3]}var x=l;2<=a?x=l/(2*Math.floor(a/2)):.5>=
+a&&(x=l*Math.floor(1/a/2)*(k.unit==mxConstants.MILLIMETERS?2:1));l=null;c=f?Math.min(d+(b?c.height:c.width),b?u.height:u.width):b?u.height:u.width;if(f)if(t.fillStyle=n.outBkgClr,b){var y=d-e;0<y&&t.fillRect(0,e,e,y);c<u.height&&t.fillRect(0,c,e,u.height)}else y=d-e,0<y&&t.fillRect(e,0,y,e),c<u.width&&t.fillRect(c,0,u.width,e);t.fillStyle=n.fontClr;for(f=f?d:d%(x*a);f<=c;f+=x*a)if(y=Math.round((f-d)/a/x),!(f<e||y==l)){l=y;var B=null;0==y%p&&(B=k.formatText(g+y*x)+"");b?v(e-m[Math.abs(y)%p],f,e,f,
+B):v(f,e-m[Math.abs(y)%p],f,e,B)}t.lineWidth=1;v(b?0:e,b?e:0,e,e);t.fillStyle=n.cornerClr;t.fillRect(0,0,e,e)},x=-1,B=function(){null!=l?(null!=m&&m(x),x=l(y)):y()};this.drawRuler=B;this.sizeListener=d=f(function(){var a=q.container;b?(a=a.offsetHeight+e,u.height!=a&&(u.height=a,p.style.height=a+"px",B())):(a=a.offsetWidth+e,u.width!=a&&(u.width=a,p.style.width=a+"px",B()))},10);this.pageListener=function(){B()};this.scrollListener=c=f(function(){var a=b?q.container.scrollTop:q.container.scrollLeft;
+k.lastScroll!=a&&(k.lastScroll=a,B())},10);this.unitListener=function(a,b){k.setUnit(b.getProperty("unit"))};q.addListener(mxEvent.SIZE,d);q.container.addEventListener("scroll",c);q.view.addListener("unitChanged",this.unitListener);a.addListener("pageViewChanged",this.pageListener);a.addListener("pageScaleChanged",this.pageListener);a.addListener("pageFormatChanged",this.pageListener);this.setStyle=function(a){n=a;p.style.background=n.bkgClr;y()};this.origGuideMove=mxGuide.prototype.move;mxGuide.prototype.move=
+function(a,c,d,f){var g;if(b&&4<a.height||!b&&4<a.width){if(null!=k.guidePart)try{t.putImageData(k.guidePart.imgData1,k.guidePart.x1,k.guidePart.y1),t.putImageData(k.guidePart.imgData2,k.guidePart.x2,k.guidePart.y2),t.putImageData(k.guidePart.imgData3,k.guidePart.x3,k.guidePart.y3)}catch(K){}g=k.origGuideMove.apply(this,arguments);try{var l,m,p,q,u,x,y,z,B;t.lineWidth=.5;t.strokeStyle=n.guideClr;t.setLineDash([2]);b?(m=a.y+g.y+e-this.graph.container.scrollTop,l=0,u=m+a.height/2,q=e/2,z=m+a.height,
+y=0,p=t.getImageData(l,m-1,e,3),v(l,m,e,m),m--,x=t.getImageData(q,u-1,e,3),v(q,u,e,u),u--,B=t.getImageData(y,z-1,e,3),v(y,z,e,z),z--):(m=0,l=a.x+g.x+e-this.graph.container.scrollLeft,u=e/2,q=l+a.width/2,z=0,y=l+a.width,p=t.getImageData(l-1,m,3,e),v(l,m,l,e),l--,x=t.getImageData(q-1,u,3,e),v(q,u,q,e),q--,B=t.getImageData(y-1,z,3,e),v(y,z,y,e),y--);if(null==k.guidePart||k.guidePart.x1!=l||k.guidePart.y1!=m)k.guidePart={imgData1:p,x1:l,y1:m,imgData2:x,x2:q,y2:u,imgData3:B,x3:y,y3:z}}catch(K){}}else g=
k.origGuideMove.apply(this,arguments);return g};this.origGuideDestroy=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){var a=k.origGuideDestroy.apply(this,arguments);if(null!=k.guidePart)try{t.putImageData(k.guidePart.imgData1,k.guidePart.x1,k.guidePart.y1),t.putImageData(k.guidePart.imgData2,k.guidePart.x2,k.guidePart.y2),t.putImageData(k.guidePart.imgData3,k.guidePart.x3,k.guidePart.y3),k.guidePart=null}catch(A){}return a}}mxRuler.prototype.RULER_THICKNESS=14;
mxRuler.prototype.unit=mxConstants.POINTS;mxRuler.prototype.setUnit=function(a){this.unit=a;this.drawRuler()};mxRuler.prototype.formatText=function(a){switch(this.unit){case mxConstants.POINTS:return Math.round(a);case mxConstants.MILLIMETERS:return(a/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.INCHES:return(a/mxConstants.PIXELS_PER_INCH).toFixed(2)}};
mxRuler.prototype.destroy=function(){this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.graph.removeListener(this.sizeListener);this.graph.container.removeEventListener("scroll",this.scrollListener);this.graph.view.removeListener("unitChanged",this.unitListener);this.ui.removeListener("pageViewChanged",this.pageListener);this.ui.removeListener("pageScaleChanged",this.pageListener);this.ui.removeListener("pageFormatChanged",
@@ -11429,10 +11429,10 @@ this.pageListener);null!=this.container&&this.container.parentNode.removeChild(t
function mxDualRuler(a,d){var b=new mxPoint(mxRuler.prototype.RULER_THICKNESS,mxRuler.prototype.RULER_THICKNESS);this.editorUiGetDiagContOffset=a.getDiagramContainerOffset;a.getDiagramContainerOffset=function(){return b};this.editorUiRefresh=a.refresh;this.ui=a;this.origGuideMove=mxGuide.prototype.move;this.origGuideDestroy=mxGuide.prototype.destroy;this.vRuler=new mxRuler(a,d,!0);this.hRuler=new mxRuler(a,d,!1,!0);var c=mxUtils.bind(this,function(b){var c=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,
function(b){c=null!=a.currentMenu;mxEvent.consume(b)}),null,mxUtils.bind(this,function(d){if(a.editor.graph.isEnabled()&&!a.editor.graph.isMouseDown&&(mxEvent.isTouchEvent(d)||mxEvent.isPopupTrigger(d))){a.editor.graph.popupMenuHandler.hideMenu();a.hideCurrentMenu();if(!mxEvent.isTouchEvent(d)||!c){var f=new mxPopupMenu(mxUtils.bind(this,function(b,c){a.menus.addMenuItems(b,["points","millimeters"],c)}));f.div.className+=" geMenubarMenu";f.smartSeparators=!0;f.showDisabled=!0;f.autoExpand=!0;f.hideMenu=
mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(f,arguments);a.resetCurrentMenu();f.destroy()});var e=mxEvent.getClientX(d),g=mxEvent.getClientY(d);f.popup(e,g,null,d);a.setCurrentMenu(f,b)}mxEvent.consume(d)}}))});c(this.hRuler.container);c(this.vRuler.container);this.vRuler.drawRuler();this.hRuler.drawRuler()}mxDualRuler.prototype.setUnit=function(a){this.vRuler.setUnit(a);this.hRuler.setUnit(a)};mxDualRuler.prototype.setStyle=function(a){this.vRuler.setStyle(a);this.hRuler.setStyle(a)};
-mxDualRuler.prototype.destroy=function(){this.vRuler.destroy();this.hRuler.destroy();this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.ui.getDiagramContainerOffset=this.editorUiGetDiagContOffset};function mxFreehand(a){var d=null!=a.view&&null!=a.view.canvas?a.view.canvas.ownerSVGElement:null;if(null!=a.container&&null!=d){var b=mxFreehand.prototype.NORMAL_SMOOTHING,c=null,g=[],f,m=[],n,e=!1,k=!0,l=[],p=!1,u=!0;this.setClosedPath=function(a){e=a};this.setAutoClose=function(a){k=a};this.setStopClickEnabled=function(a){u=a};this.setSmoothing=function(a){b=a};var t=function(b){p=b;a.getRubberband().setEnabled(!b);a.graphHandler.setSelectEnabled(!b);a.graphHandler.setMoveEnabled(!b);a.container.style.cursor=
-b?"crosshair":"";a.fireEvent(new mxEventObject("freehandStateChanged"))};this.startDrawing=function(){t(!0)};this.isDrawing=function(){return p};var q=mxUtils.bind(this,function(a){if(c){var b=u&&0<m.length&&null!=n&&2>n.length;b||m.push.apply(m,n);n=[];m.push(null);g.push(c);c=null;b&&this.stopDrawing();mxEvent.consume(a)}});this.stopDrawing=function(){if(0<g.length){for(var b=m[0].x,d=m[0].x,f=m[0].y,l=m[0].y,n=1;n<m.length;n++)null!=m[n]&&(b=Math.max(b,m[n].x),d=Math.min(d,m[n].x),f=Math.max(f,
-m[n].y),l=Math.min(l,m[n].y));b-=d;f-=l;if(0<b&&0<f){var p=100/b,q=100/f;m.map(function(a){if(null==a)return a;a.x=(a.x-d)*p;a.y=(a.y-l)*q;return a});for(var u='<shape strokewidth="inherit"><foreground>',v=0,n=0;n<m.length;n++){var x=m[n];if(null==x){var x=!1,v=m[v],y=m[n-1];!e&&k&&(x=v.x-y.x,y=v.y-y.y,x=Math.sqrt(x*x+y*y)<=a.tolerance);if(e||x)u+='<line x="'+v.x.toFixed(2)+'" y="'+v.y.toFixed(2)+'"/>';u+="</path>"+(e||x?"<fillstroke/>":"<stroke/>");v=n+1}else u=n==v?u+('<path><move x="'+x.x.toFixed(2)+
-'" y="'+x.y.toFixed(2)+'"/>'):u+('<line x="'+x.x.toFixed(2)+'" y="'+x.y.toFixed(2)+'"/>')}var n=mxConstants.STYLE_SHAPE+"=stencil("+Graph.compress(u+"</foreground></shape>")+");fillColor=none;",u=a.view.scale,v=a.view.translate,M=new mxCell("",new mxGeometry(d/u-v.x,l/u-v.y,b/u,f/u),n);M.vertex=1;a.model.beginUpdate();try{M=a.addCell(M)}finally{a.model.endUpdate()}a.fireEvent(new mxEventObject("cellsInserted","cells",[M]));a.fireEvent(new mxEventObject("freehandInserted","cell",M));setTimeout(function(){a.setSelectionCells([M])},
-10)}for(n=0;n<g.length;n++)g[n].parentNode.removeChild(g[n]);c=null;g=[];m=[]}t(!1)};mxEvent.addGestureListeners(d,function(b){if(p){var e=parseFloat(a.currentVertexStyle[mxConstants.STYLE_STROKEWIDTH]||1),e=Math.max(1,e*a.view.scale);c=document.createElementNS("http://www.w3.org/2000/svg","path");c.setAttribute("fill","none");c.setAttribute("stroke",a.currentVertexStyle[mxConstants.STYLE_STROKECOLOR]||"#000");c.setAttribute("stroke-width",e);if("1"==a.currentVertexStyle[mxConstants.STYLE_DASHED]){var g=
-a.currentVertexStyle[mxConstants.STYLE_DASH_PATTERN]||"3 3",g=g.split(" ").map(function(a){return parseFloat(a)*e}).join(" ");c.setAttribute("stroke-dasharray",g)}l=[];g=v(b);y(g);f="M"+g.x+" "+g.y;m.push(g);n=[];c.setAttribute("d",f);d.appendChild(c);mxEvent.consume(b)}},function(a){if(c){y(v(a));var b=x(0);if(b){f+=" L"+b.x+" "+b.y;m.push(b);var d="";n=[];for(var e=2;e<l.length;e+=2)b=x(e),d+=" L"+b.x+" "+b.y,n.push(b);c.setAttribute("d",f+d)}mxEvent.consume(a)}},q);var v=function(b){return mxUtils.convertPoint(a.container,
-mxEvent.getClientX(b),mxEvent.getClientY(b))},y=function(a){for(l.push(a);l.length>b;)l.shift()},x=function(a){var c=l.length;if(1===c%2||c>=b){var d=0,e=0,f,g=0;for(f=a;f<c;f++)g++,a=l[f],d+=a.x,e+=a.y;return{x:d/g,y:e/g}}return null}}}mxFreehand.prototype.NO_SMOOTHING=1;mxFreehand.prototype.MILD_SMOOTHING=4;mxFreehand.prototype.NORMAL_SMOOTHING=8;mxFreehand.prototype.VERY_SMOOTH_SMOOTHING=12;mxFreehand.prototype.SUPER_SMOOTH_SMOOTHING=16;mxFreehand.prototype.HYPER_SMOOTH_SMOOTHING=20;
+mxDualRuler.prototype.destroy=function(){this.vRuler.destroy();this.hRuler.destroy();this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.ui.getDiagramContainerOffset=this.editorUiGetDiagContOffset};function mxFreehand(a){var d=null!=a.view&&null!=a.view.canvas?a.view.canvas.ownerSVGElement:null;if(null!=a.container&&null!=d){var b=mxFreehand.prototype.NORMAL_SMOOTHING,c=null,g=[],f,l=[],m,e=!1,k=!0,n=[],p=!1,u=!0;this.setClosedPath=function(a){e=a};this.setAutoClose=function(a){k=a};this.setStopClickEnabled=function(a){u=a};this.setSmoothing=function(a){b=a};var t=function(b){p=b;a.getRubberband().setEnabled(!b);a.graphHandler.setSelectEnabled(!b);a.graphHandler.setMoveEnabled(!b);a.container.style.cursor=
+b?"crosshair":"";a.fireEvent(new mxEventObject("freehandStateChanged"))};this.startDrawing=function(){t(!0)};this.isDrawing=function(){return p};var q=mxUtils.bind(this,function(a){if(c){var b=u&&0<l.length&&null!=m&&2>m.length;b||l.push.apply(l,m);m=[];l.push(null);g.push(c);c=null;b&&this.stopDrawing();mxEvent.consume(a)}});this.stopDrawing=function(){if(0<g.length){for(var b=l[0].x,d=l[0].x,f=l[0].y,m=l[0].y,n=1;n<l.length;n++)null!=l[n]&&(b=Math.max(b,l[n].x),d=Math.min(d,l[n].x),f=Math.max(f,
+l[n].y),m=Math.min(m,l[n].y));b-=d;f-=m;if(0<b&&0<f){var p=100/b,q=100/f;l.map(function(a){if(null==a)return a;a.x=(a.x-d)*p;a.y=(a.y-m)*q;return a});for(var u='<shape strokewidth="inherit"><foreground>',v=0,n=0;n<l.length;n++){var x=l[n];if(null==x){var x=!1,v=l[v],y=l[n-1];!e&&k&&(x=v.x-y.x,y=v.y-y.y,x=Math.sqrt(x*x+y*y)<=a.tolerance);if(e||x)u+='<line x="'+v.x.toFixed(2)+'" y="'+v.y.toFixed(2)+'"/>';u+="</path>"+(e||x?"<fillstroke/>":"<stroke/>");v=n+1}else u=n==v?u+('<path><move x="'+x.x.toFixed(2)+
+'" y="'+x.y.toFixed(2)+'"/>'):u+('<line x="'+x.x.toFixed(2)+'" y="'+x.y.toFixed(2)+'"/>')}var n=mxConstants.STYLE_SHAPE+"=stencil("+Graph.compress(u+"</foreground></shape>")+");fillColor=none;",u=a.view.scale,v=a.view.translate,M=new mxCell("",new mxGeometry(d/u-v.x,m/u-v.y,b/u,f/u),n);M.vertex=1;a.model.beginUpdate();try{M=a.addCell(M)}finally{a.model.endUpdate()}a.fireEvent(new mxEventObject("cellsInserted","cells",[M]));a.fireEvent(new mxEventObject("freehandInserted","cell",M));setTimeout(function(){a.setSelectionCells([M])},
+10)}for(n=0;n<g.length;n++)g[n].parentNode.removeChild(g[n]);c=null;g=[];l=[]}t(!1)};mxEvent.addGestureListeners(d,function(b){if(p){var e=parseFloat(a.currentVertexStyle[mxConstants.STYLE_STROKEWIDTH]||1),e=Math.max(1,e*a.view.scale);c=document.createElementNS("http://www.w3.org/2000/svg","path");c.setAttribute("fill","none");c.setAttribute("stroke",a.currentVertexStyle[mxConstants.STYLE_STROKECOLOR]||"#000");c.setAttribute("stroke-width",e);if("1"==a.currentVertexStyle[mxConstants.STYLE_DASHED]){var g=
+a.currentVertexStyle[mxConstants.STYLE_DASH_PATTERN]||"3 3",g=g.split(" ").map(function(a){return parseFloat(a)*e}).join(" ");c.setAttribute("stroke-dasharray",g)}n=[];g=v(b);y(g);f="M"+g.x+" "+g.y;l.push(g);m=[];c.setAttribute("d",f);d.appendChild(c);mxEvent.consume(b)}},function(a){if(c){y(v(a));var b=x(0);if(b){f+=" L"+b.x+" "+b.y;l.push(b);var d="";m=[];for(var e=2;e<n.length;e+=2)b=x(e),d+=" L"+b.x+" "+b.y,m.push(b);c.setAttribute("d",f+d)}mxEvent.consume(a)}},q);var v=function(b){return mxUtils.convertPoint(a.container,
+mxEvent.getClientX(b),mxEvent.getClientY(b))},y=function(a){for(n.push(a);n.length>b;)n.shift()},x=function(a){var c=n.length;if(1===c%2||c>=b){var d=0,e=0,f,g=0;for(f=a;f<c;f++)g++,a=n[f],d+=a.x,e+=a.y;return{x:d/g,y:e/g}}return null}}}mxFreehand.prototype.NO_SMOOTHING=1;mxFreehand.prototype.MILD_SMOOTHING=4;mxFreehand.prototype.NORMAL_SMOOTHING=8;mxFreehand.prototype.VERY_SMOOTH_SMOOTHING=12;mxFreehand.prototype.SUPER_SMOOTH_SMOOTHING=16;mxFreehand.prototype.HYPER_SMOOTH_SMOOTHING=20;
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index a1097103..22a23023 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -5647,51 +5647,57 @@ App.prototype.updateButtonContainer = function()
// Share
if (urlParams['embed'] != '1' && this.getServiceName() == 'draw.io' &&
!mxClient.IS_CHROMEAPP && !EditorUi.isElectronApp &&
- !this.isOfflineApp() && file != null)
- {
- if (this.shareButton == null)
- {
- this.shareButton = document.createElement('div');
- this.shareButton.className = 'geBtn gePrimaryBtn';
- this.shareButton.style.display = 'inline-block';
- this.shareButton.style.backgroundColor = '#F2931E';
- this.shareButton.style.borderColor = '#F08705';
- this.shareButton.style.backgroundImage = 'none';
- this.shareButton.style.padding = '2px 10px 0 10px';
- this.shareButton.style.marginTop = '-10px';
- this.shareButton.style.height = '28px';
- this.shareButton.style.lineHeight = '28px';
- this.shareButton.style.minWidth = '0px';
- this.shareButton.style.cssFloat = 'right';
- this.shareButton.setAttribute('title', mxResources.get('share'));
-
- var icon = document.createElement('img');
- icon.setAttribute('src', this.shareImage);
- icon.setAttribute('align', 'absmiddle');
- icon.style.marginRight = '4px';
- icon.style.marginTop = '-3px';
- this.shareButton.appendChild(icon);
-
- if (uiTheme != 'dark' && uiTheme != 'atlas')
- {
- this.shareButton.style.color = 'black';
- icon.style.filter = 'invert(100%)';
+ !this.isOfflineApp())
+ {
+ if (file != null)
+ {
+ if (this.shareButton == null)
+ {
+ this.shareButton = document.createElement('div');
+ this.shareButton.className = 'geBtn gePrimaryBtn';
+ this.shareButton.style.display = 'inline-block';
+ this.shareButton.style.backgroundColor = '#F2931E';
+ this.shareButton.style.borderColor = '#F08705';
+ this.shareButton.style.backgroundImage = 'none';
+ this.shareButton.style.padding = '2px 10px 0 10px';
+ this.shareButton.style.marginTop = '-10px';
+ this.shareButton.style.height = '28px';
+ this.shareButton.style.lineHeight = '28px';
+ this.shareButton.style.minWidth = '0px';
+ this.shareButton.style.cssFloat = 'right';
+ this.shareButton.setAttribute('title', mxResources.get('share'));
+
+ var icon = document.createElement('img');
+ icon.setAttribute('src', this.shareImage);
+ icon.setAttribute('align', 'absmiddle');
+ icon.style.marginRight = '4px';
+ icon.style.marginTop = '-3px';
+ this.shareButton.appendChild(icon);
+
+ if (uiTheme != 'dark' && uiTheme != 'atlas')
+ {
+ this.shareButton.style.color = 'black';
+ icon.style.filter = 'invert(100%)';
+ }
+
+ mxUtils.write(this.shareButton, mxResources.get('share'));
+
+ mxEvent.addListener(this.shareButton, 'click', mxUtils.bind(this, function()
+ {
+ this.actions.get('share').funct();
+ }));
+
+ this.buttonContainer.appendChild(this.shareButton);
}
-
- mxUtils.write(this.shareButton, mxResources.get('share'));
-
- mxEvent.addListener(this.shareButton, 'click', mxUtils.bind(this, function()
- {
- this.actions.get('share').funct();
- }));
-
- this.buttonContainer.appendChild(this.shareButton);
}
- }
- else if (this.shareButton != null)
- {
- this.shareButton.parentNode.removeChild(this.shareButton);
- this.shareButton = null;
+ else if (this.shareButton != null)
+ {
+ this.shareButton.parentNode.removeChild(this.shareButton);
+ this.shareButton = null;
+ }
+
+ //Fetch notifications
+ this.fetchAndShowNotification(this.mode == 'device' || this.mode == 'google'? this.mode : null);
}
}
};
@@ -5759,8 +5765,14 @@ App.prototype.showNotification = function(notifs, lsReadFlag)
{
this.notificationBtn = document.createElement('div');
this.notificationBtn.className = 'geNotification-box';
+
+ if (uiTheme == 'min')
+ {
+ this.notificationBtn.style.top = '4px';
+ }
+
this.notificationBtn.innerHTML = '<span class="geNotification-count"></span>' +
- '<div class="geNotification-bell">'+
+ '<div class="geNotification-bell"' + (uiTheme == 'min'? ' style="opacity: 0.5"' : '') + '>'+
'<span class="geBell-top"></span>' +
'<span class="geBell-middle"></span>' +
'<span class="geBell-bottom"></span>' +
diff --git a/src/main/webapp/js/diagramly/Dialogs.js b/src/main/webapp/js/diagramly/Dialogs.js
index ae7358b3..e7a4109e 100644
--- a/src/main/webapp/js/diagramly/Dialogs.js
+++ b/src/main/webapp/js/diagramly/Dialogs.js
@@ -10237,7 +10237,7 @@ var FontDialog = function(editorUi, curFontname, curUrl, curType, fn)
*/
function AspectDialog(editorUi, pageId, layerIds, okFn, cancelFn)
{
- this.aspect = {pageId : pageId || editorUi.pages[0].getId(), layerIds : layerIds || []};
+ this.aspect = {pageId : pageId || (editorUi.pages? editorUi.pages[0].getId() : null), layerIds : layerIds || []};
var div = document.createElement('div');
var title = document.createElement('h5');
@@ -10306,13 +10306,20 @@ function AspectDialog(editorUi, pageId, layerIds, okFn, cancelFn)
//Drawing the graph with dialog not visible doesn't get dimensions right. It has to be visible!
AspectDialog.prototype.init = function()
{
- this.ui.getFileData(true); //Force pages to update their nodes
+ var xml = this.ui.getFileData(true); //Force pages to update their nodes
- for (var i = 0; i < this.ui.pages.length; i++)
+ if (this.ui.pages)
{
- var page = this.ui.updatePageRoot(this.ui.pages[i]);
-
- this.createPageItem(page.getId(), page.getName(), page.node, page.root);
+ for (var i = 0; i < this.ui.pages.length; i++)
+ {
+ var page = this.ui.updatePageRoot(this.ui.pages[i]);
+
+ this.createPageItem(page.getId(), page.getName(), page.node);
+ }
+ }
+ else
+ {
+ this.createPageItem('1', 'Page-1', mxUtils.parseXml(xml).documentElement);
}
};
@@ -10365,7 +10372,7 @@ AspectDialog.prototype.createViewer = function(container, pageNode, layerId)
return graph;
};
-AspectDialog.prototype.createPageItem = function(pageId, pageName, pageNode, pageRoot)
+AspectDialog.prototype.createPageItem = function(pageId, pageName, pageNode)
{
var $listItem = document.createElement('div');
$listItem.className = 'geAspectDlgListItem';
diff --git a/src/main/webapp/js/viewer-static.min.js b/src/main/webapp/js/viewer-static.min.js
index 2804c99b..dea92a56 100644
--- a/src/main/webapp/js/viewer-static.min.js
+++ b/src/main/webapp/js/viewer-static.min.js
@@ -3195,7 +3195,7 @@ this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=
this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};Editor.prototype.useCanvasForExport=!1;try{var O=document.createElement("canvas"),G=new Image;G.onload=function(){try{O.getContext("2d").drawImage(G,0,0);var a=O.toDataURL("image/png");Editor.prototype.useCanvasForExport=
null!=a&&6<a.length}catch(K){}};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(v){}})();
(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,e){e.ui=a.ui;return b};a.afterDecode=function(a,b,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);null!=e.mathEnabled&&(e.mathEnabled=!e.mathEnabled);null!=e.shadowVisible&&(e.shadowVisible=!e.shadowVisible);return e};mxCodecRegistry.register(a)})();
-(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);a.beforeDecode=function(a,b,e){e.ui=a.ui;return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="14.4.2";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(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=
+(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);a.beforeDecode=function(a,b,e){e.ui=a.ui;return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="14.4.3";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(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;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;
EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,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(a,b,d,e,l,p,t){p=null!=p?p:0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&
@@ -3764,7 +3764,7 @@ l.diagramContainer.style.top="47px";var O=l.menus.get("viewZoom");if(null!=O){th
G.style.textDecoration="none";G.style.textDecoration="none";G.style.right="0px";G.style.bottom="0px";G.style.overflow="hidden";G.style.visibility="hidden";G.style.textAlign="center";G.style.color="#000";G.style.fontSize="12px";G.style.color="#707070";G.style.width="59px";G.style.cursor="pointer";G.style.borderTop="1px solid lightgray";G.style.borderLeft="1px solid lightgray";G.style.height=parseInt(l.tabContainerHeight)-1+"px";G.style.lineHeight=parseInt(l.tabContainerHeight)+1+"px";L.appendChild(G);
O=mxUtils.bind(this,function(){G.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,O);l.editor.addListener("resetGraphView",O);l.editor.addListener("pageSelected",O);var v=l.setGraphEnabled;l.setGraphEnabled=function(){v.apply(this,arguments);null!=this.tabContainer&&(G.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}L.appendChild(l.tabContainer);
L.appendChild(n);L.appendChild(l.diagramContainer);k.appendChild(L);l.updateTabContainer();var K=null;g();mxEvent.addListener(window,"resize",function(){g();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};
-(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var d=EditorUi.initTheme;EditorUi.initTheme=function(){d.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,d,b,e,k,m,q){this.file=a;this.id=d;this.content=b;this.modifiedDate=e;this.createdDate=k;this.isResolved=m;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,d,b,e,k){d()};DrawioComment.prototype.editComment=function(a,d,b){d()};DrawioComment.prototype.deleteComment=function(a,d){a()};DrawioUser=function(a,d,b,e,k){this.id=a;this.email=d;this.displayName=b;this.pictureUrl=e;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found \nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occured during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "\'{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var d=EditorUi.initTheme;EditorUi.initTheme=function(){d.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,d,b,e,k,m,q){this.file=a;this.id=d;this.content=b;this.modifiedDate=e;this.createdDate=k;this.isResolved=m;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,d,b,e,k){d()};DrawioComment.prototype.editComment=function(a,d,b){d()};DrawioComment.prototype.deleteComment=function(a,d){a()};DrawioUser=function(a,d,b,e,k){this.id=a;this.email=d;this.displayName=b;this.pictureUrl=e;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found \nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occured during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "\'{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#2a2a2a"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,d,b){this.init(a,d,b)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://app.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.center=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(a,d,b){this.graphConfig=null!=b?b:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.center=null!=this.graphConfig.center?
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index 4bf164ee..d1e88aa2 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -3195,7 +3195,7 @@ this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=
this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};Editor.prototype.useCanvasForExport=!1;try{var O=document.createElement("canvas"),G=new Image;G.onload=function(){try{O.getContext("2d").drawImage(G,0,0);var a=O.toDataURL("image/png");Editor.prototype.useCanvasForExport=
null!=a&&6<a.length}catch(K){}};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(v){}})();
(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,b,e){e.ui=a.ui;return b};a.afterDecode=function(a,b,e){e.previousColor=e.color;e.previousImage=e.image;e.previousFormat=e.format;null!=e.foldingEnabled&&(e.foldingEnabled=!e.foldingEnabled);null!=e.mathEnabled&&(e.mathEnabled=!e.mathEnabled);null!=e.shadowVisible&&(e.shadowVisible=!e.shadowVisible);return e};mxCodecRegistry.register(a)})();
-(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);a.beforeDecode=function(a,b,e){e.ui=a.ui;return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="14.4.2";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(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=
+(function(){var a=new mxObjectCodec(new ChangeGridColor,["ui"]);a.beforeDecode=function(a,b,e){e.ui=a.ui;return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="14.4.3";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(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;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;
EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,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(a,b,d,e,l,p,t){p=null!=p?p:0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")||0<=a.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&"1"!=urlParams.dev)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&
@@ -3764,7 +3764,7 @@ l.diagramContainer.style.top="47px";var O=l.menus.get("viewZoom");if(null!=O){th
G.style.textDecoration="none";G.style.textDecoration="none";G.style.right="0px";G.style.bottom="0px";G.style.overflow="hidden";G.style.visibility="hidden";G.style.textAlign="center";G.style.color="#000";G.style.fontSize="12px";G.style.color="#707070";G.style.width="59px";G.style.cursor="pointer";G.style.borderTop="1px solid lightgray";G.style.borderLeft="1px solid lightgray";G.style.height=parseInt(l.tabContainerHeight)-1+"px";G.style.lineHeight=parseInt(l.tabContainerHeight)+1+"px";L.appendChild(G);
O=mxUtils.bind(this,function(){G.innerHTML=Math.round(100*l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,O);l.editor.addListener("resetGraphView",O);l.editor.addListener("pageSelected",O);var v=l.setGraphEnabled;l.setGraphEnabled=function(){v.apply(this,arguments);null!=this.tabContainer&&(G.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}L.appendChild(l.tabContainer);
L.appendChild(n);L.appendChild(l.diagramContainer);k.appendChild(L);l.updateTabContainer();var K=null;g();mxEvent.addListener(window,"resize",function(){g();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}};
-(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var d=EditorUi.initTheme;EditorUi.initTheme=function(){d.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,d,b,e,k,m,q){this.file=a;this.id=d;this.content=b;this.modifiedDate=e;this.createdDate=k;this.isResolved=m;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,d,b,e,k){d()};DrawioComment.prototype.editComment=function(a,d,b){d()};DrawioComment.prototype.deleteComment=function(a,d){a()};DrawioUser=function(a,d,b,e,k){this.id=a;this.email=d;this.displayName=b;this.pictureUrl=e;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found \nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occured during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "\'{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var d=EditorUi.initTheme;EditorUi.initTheme=function(){d.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,d,b,e,k,m,q){this.file=a;this.id=d;this.content=b;this.modifiedDate=e;this.createdDate=k;this.isResolved=m;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,d,b,e,k){d()};DrawioComment.prototype.editComment=function(a,d,b){d()};DrawioComment.prototype.deleteComment=function(a,d){a()};DrawioUser=function(a,d,b,e,k){this.id=a;this.email=d;this.displayName=b;this.pictureUrl=e;this.locale=k};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About \naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found \nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occured during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "\'{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#ffffff"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="#2a2a2a"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,d,b){this.init(a,d,b)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://app.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.center=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(a,d,b){this.graphConfig=null!=b?b:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.center=null!=this.graphConfig.center?
diff --git a/src/main/webapp/mxgraph/mxClient.js b/src/main/webapp/mxgraph/mxClient.js
index d847aa23..dd2546ce 100644
--- a/src/main/webapp/mxgraph/mxClient.js
+++ b/src/main/webapp/mxgraph/mxClient.js
@@ -1,4 +1,4 @@
-var mxClient={VERSION:"14.4.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/"),
+var mxClient={VERSION:"14.4.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/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||
0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!=document.createElementNS("http://www.w3.org/2000/svg","foreignObject")||0<=navigator.userAgent.indexOf("Opera/"),IS_WIN:0<navigator.appVersion.indexOf("Win"),IS_MAC:0<navigator.appVersion.indexOf("Mac"),
diff --git a/src/main/webapp/resources/dia.txt b/src/main/webapp/resources/dia.txt
index 8a951508..8ad2e34d 100644
--- a/src/main/webapp/resources/dia.txt
+++ b/src/main/webapp/resources/dia.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_am.txt b/src/main/webapp/resources/dia_am.txt
index cdbe2739..480a4757 100644
--- a/src/main/webapp/resources/dia_am.txt
+++ b/src/main/webapp/resources/dia_am.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt
index 12f10e6d..82fca9c6 100644
--- a/src/main/webapp/resources/dia_ar.txt
+++ b/src/main/webapp/resources/dia_ar.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_bg.txt b/src/main/webapp/resources/dia_bg.txt
index edb0d38f..47695499 100644
--- a/src/main/webapp/resources/dia_bg.txt
+++ b/src/main/webapp/resources/dia_bg.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_bn.txt b/src/main/webapp/resources/dia_bn.txt
index 1b7ed261..5c8041e8 100644
--- a/src/main/webapp/resources/dia_bn.txt
+++ b/src/main/webapp/resources/dia_bn.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_bs.txt b/src/main/webapp/resources/dia_bs.txt
index f00ab4a7..6b1ee238 100644
--- a/src/main/webapp/resources/dia_bs.txt
+++ b/src/main/webapp/resources/dia_bs.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ca.txt b/src/main/webapp/resources/dia_ca.txt
index 87a8dd6d..46ba98c2 100644
--- a/src/main/webapp/resources/dia_ca.txt
+++ b/src/main/webapp/resources/dia_ca.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_cs.txt b/src/main/webapp/resources/dia_cs.txt
index 247dbb11..65b29673 100644
--- a/src/main/webapp/resources/dia_cs.txt
+++ b/src/main/webapp/resources/dia_cs.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_da.txt b/src/main/webapp/resources/dia_da.txt
index 167e0219..e2978c71 100644
--- a/src/main/webapp/resources/dia_da.txt
+++ b/src/main/webapp/resources/dia_da.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_de.txt b/src/main/webapp/resources/dia_de.txt
index ff64f8e2..fb261c81 100644
--- a/src/main/webapp/resources/dia_de.txt
+++ b/src/main/webapp/resources/dia_de.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Import von {1} Bibliothek(en) fehlgeschlagen
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_el.txt b/src/main/webapp/resources/dia_el.txt
index 2d72b455..e4fa5936 100644
--- a/src/main/webapp/resources/dia_el.txt
+++ b/src/main/webapp/resources/dia_el.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_eo.txt b/src/main/webapp/resources/dia_eo.txt
index 30b31295..5e70a96d 100644
--- a/src/main/webapp/resources/dia_eo.txt
+++ b/src/main/webapp/resources/dia_eo.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_es.txt b/src/main/webapp/resources/dia_es.txt
index 4154e4a5..8c501abb 100644
--- a/src/main/webapp/resources/dia_es.txt
+++ b/src/main/webapp/resources/dia_es.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_et.txt b/src/main/webapp/resources/dia_et.txt
index 96f8ac41..49c86453 100644
--- a/src/main/webapp/resources/dia_et.txt
+++ b/src/main/webapp/resources/dia_et.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_eu.txt b/src/main/webapp/resources/dia_eu.txt
index 1ad07371..55bf2efb 100644
--- a/src/main/webapp/resources/dia_eu.txt
+++ b/src/main/webapp/resources/dia_eu.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_fa.txt b/src/main/webapp/resources/dia_fa.txt
index 2e8f15ee..12cce6a9 100644
--- a/src/main/webapp/resources/dia_fa.txt
+++ b/src/main/webapp/resources/dia_fa.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_fi.txt b/src/main/webapp/resources/dia_fi.txt
index eb4cf2f2..0f226c14 100644
--- a/src/main/webapp/resources/dia_fi.txt
+++ b/src/main/webapp/resources/dia_fi.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_fil.txt b/src/main/webapp/resources/dia_fil.txt
index da30949e..2cd1be8f 100644
--- a/src/main/webapp/resources/dia_fil.txt
+++ b/src/main/webapp/resources/dia_fil.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_fr.txt b/src/main/webapp/resources/dia_fr.txt
index 330aa88f..412c3b31 100644
--- a/src/main/webapp/resources/dia_fr.txt
+++ b/src/main/webapp/resources/dia_fr.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_gl.txt b/src/main/webapp/resources/dia_gl.txt
index 199002df..6ba6db34 100644
--- a/src/main/webapp/resources/dia_gl.txt
+++ b/src/main/webapp/resources/dia_gl.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_gu.txt b/src/main/webapp/resources/dia_gu.txt
index 86562ff9..4e1dc991 100644
--- a/src/main/webapp/resources/dia_gu.txt
+++ b/src/main/webapp/resources/dia_gu.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_he.txt b/src/main/webapp/resources/dia_he.txt
index 050506ed..1271bab9 100644
--- a/src/main/webapp/resources/dia_he.txt
+++ b/src/main/webapp/resources/dia_he.txt
@@ -3,10 +3,10 @@
about=‫אודות ‬
aboutDrawio=‫אודות Draw.io‬
accessDenied=‫הגישה דחתה‬
-action=Action
+action=‫פעולה‬
actualSize=‫גודל אמיתי‬
add=‫הוסף‬
-addAccount=Add account
+addAccount=‫הוסף חשבון‬
addedFile=‫נוסף {1}‬
addImages=‫הוסף תמונות‬
addImageUrl=‫הוסף קישור לתמונה‬
@@ -27,13 +27,13 @@ allTags=‫כל התגיות‬
anchor=‫עוגן‬
android=‫אנדרואיד‬
angle=‫זווית‬
-arc=Arc
+arc=‫קשת‬
areYouSure=‫האם אתה בטוח?‬
ensureDataSaved=‫אנא וודא ששמרת את המידע לפני סגירה.‬
allChangesSaved=‫כל השינויים נשמרו‬
allChangesSavedInDrive=‫כל השינויים נשמרו בכונן‬
allowPopups=‫אפשר חלונות קופצים כדי להימנע מדיאלוג זה‬
-allowRelativeUrl=Allow relative URL
+allowRelativeUrl=‫אפשר URL יחסי‬
alreadyConnected=‫הנקודות כבר מחוברות‬
apply=‫החל‬
archiMate21=ArchiMate 2.1
@@ -54,7 +54,7 @@ attachments=‫קבצים מצורפים‬
aws=AWS
aws3d=AWS 3D
azure=Azure
-back=Back
+back=‫חזרה‬
background=‫רקע‬
backgroundColor=‫צבע רקע‬
backgroundImage=‫תמונת רקע‬
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_hi.txt b/src/main/webapp/resources/dia_hi.txt
index 83b3c89e..1792678d 100644
--- a/src/main/webapp/resources/dia_hi.txt
+++ b/src/main/webapp/resources/dia_hi.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_hr.txt b/src/main/webapp/resources/dia_hr.txt
index a358dbef..1f112583 100644
--- a/src/main/webapp/resources/dia_hr.txt
+++ b/src/main/webapp/resources/dia_hr.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_hu.txt b/src/main/webapp/resources/dia_hu.txt
index fa9b4e60..7ed11944 100644
--- a/src/main/webapp/resources/dia_hu.txt
+++ b/src/main/webapp/resources/dia_hu.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_i18n.txt b/src/main/webapp/resources/dia_i18n.txt
index 0e522d41..4b085453 100644
--- a/src/main/webapp/resources/dia_i18n.txt
+++ b/src/main/webapp/resources/dia_i18n.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=confALibsImpFailed
contributors=contributors
drawDiagrams=drawDiagrams
errFileNotFoundOrNoPer=errFileNotFoundOrNoPer
+confACheckPagesWEmbed=confACheckPagesWEmbed
+confADelBrokenEmbedDiagLnk=confADelBrokenEmbedDiagLnk
diff --git a/src/main/webapp/resources/dia_id.txt b/src/main/webapp/resources/dia_id.txt
index 0ee49187..3d6d1149 100644
--- a/src/main/webapp/resources/dia_id.txt
+++ b/src/main/webapp/resources/dia_id.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_it.txt b/src/main/webapp/resources/dia_it.txt
index 2e2228ca..841d4337 100644
--- a/src/main/webapp/resources/dia_it.txt
+++ b/src/main/webapp/resources/dia_it.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ja.txt b/src/main/webapp/resources/dia_ja.txt
index 3a7767b5..9f552586 100644
--- a/src/main/webapp/resources/dia_ja.txt
+++ b/src/main/webapp/resources/dia_ja.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_kn.txt b/src/main/webapp/resources/dia_kn.txt
index 56830762..9d92e8ee 100644
--- a/src/main/webapp/resources/dia_kn.txt
+++ b/src/main/webapp/resources/dia_kn.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ko.txt b/src/main/webapp/resources/dia_ko.txt
index 71ea0a1a..e0bcf305 100644
--- a/src/main/webapp/resources/dia_ko.txt
+++ b/src/main/webapp/resources/dia_ko.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_lt.txt b/src/main/webapp/resources/dia_lt.txt
index 79491166..6cb6a451 100644
--- a/src/main/webapp/resources/dia_lt.txt
+++ b/src/main/webapp/resources/dia_lt.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_lv.txt b/src/main/webapp/resources/dia_lv.txt
index 3c9c4be1..008cd3ed 100644
--- a/src/main/webapp/resources/dia_lv.txt
+++ b/src/main/webapp/resources/dia_lv.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ml.txt b/src/main/webapp/resources/dia_ml.txt
index c2e7b20b..9c2555db 100644
--- a/src/main/webapp/resources/dia_ml.txt
+++ b/src/main/webapp/resources/dia_ml.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_mr.txt b/src/main/webapp/resources/dia_mr.txt
index c67d1faf..c1bdf854 100644
--- a/src/main/webapp/resources/dia_mr.txt
+++ b/src/main/webapp/resources/dia_mr.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ms.txt b/src/main/webapp/resources/dia_ms.txt
index a27ddea3..6dd0599a 100644
--- a/src/main/webapp/resources/dia_ms.txt
+++ b/src/main/webapp/resources/dia_ms.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_my.txt b/src/main/webapp/resources/dia_my.txt
index 8a951508..8ad2e34d 100644
--- a/src/main/webapp/resources/dia_my.txt
+++ b/src/main/webapp/resources/dia_my.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_nl.txt b/src/main/webapp/resources/dia_nl.txt
index cd1ce9f1..ba5d2cbf 100644
--- a/src/main/webapp/resources/dia_nl.txt
+++ b/src/main/webapp/resources/dia_nl.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_no.txt b/src/main/webapp/resources/dia_no.txt
index 7ce2b622..24d2dfad 100644
--- a/src/main/webapp/resources/dia_no.txt
+++ b/src/main/webapp/resources/dia_no.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_pl.txt b/src/main/webapp/resources/dia_pl.txt
index b594b78c..22d7ff9d 100644
--- a/src/main/webapp/resources/dia_pl.txt
+++ b/src/main/webapp/resources/dia_pl.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt
index 73875505..56d7b636 100644
--- a/src/main/webapp/resources/dia_pt-br.txt
+++ b/src/main/webapp/resources/dia_pt-br.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_pt.txt b/src/main/webapp/resources/dia_pt.txt
index e1519329..18bab4a7 100644
--- a/src/main/webapp/resources/dia_pt.txt
+++ b/src/main/webapp/resources/dia_pt.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ro.txt b/src/main/webapp/resources/dia_ro.txt
index 7ec5bb92..f0f11f0b 100644
--- a/src/main/webapp/resources/dia_ro.txt
+++ b/src/main/webapp/resources/dia_ro.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ru.txt b/src/main/webapp/resources/dia_ru.txt
index f061b796..16a3cf56 100644
--- a/src/main/webapp/resources/dia_ru.txt
+++ b/src/main/webapp/resources/dia_ru.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_si.txt b/src/main/webapp/resources/dia_si.txt
index 8a951508..8ad2e34d 100644
--- a/src/main/webapp/resources/dia_si.txt
+++ b/src/main/webapp/resources/dia_si.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_sk.txt b/src/main/webapp/resources/dia_sk.txt
index 6eb4dcbc..8a9697cf 100644
--- a/src/main/webapp/resources/dia_sk.txt
+++ b/src/main/webapp/resources/dia_sk.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_sl.txt b/src/main/webapp/resources/dia_sl.txt
index 869e0971..31116789 100644
--- a/src/main/webapp/resources/dia_sl.txt
+++ b/src/main/webapp/resources/dia_sl.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_sr.txt b/src/main/webapp/resources/dia_sr.txt
index 7a083a29..d4fc2517 100644
--- a/src/main/webapp/resources/dia_sr.txt
+++ b/src/main/webapp/resources/dia_sr.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_sv.txt b/src/main/webapp/resources/dia_sv.txt
index 522dcbf3..6dfffebc 100644
--- a/src/main/webapp/resources/dia_sv.txt
+++ b/src/main/webapp/resources/dia_sv.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_sw.txt b/src/main/webapp/resources/dia_sw.txt
index 5c7233cd..43ab66f8 100644
--- a/src/main/webapp/resources/dia_sw.txt
+++ b/src/main/webapp/resources/dia_sw.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_ta.txt b/src/main/webapp/resources/dia_ta.txt
index 937cfd46..b65a7643 100644
--- a/src/main/webapp/resources/dia_ta.txt
+++ b/src/main/webapp/resources/dia_ta.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_te.txt b/src/main/webapp/resources/dia_te.txt
index f8f2e2c0..68bf70ce 100644
--- a/src/main/webapp/resources/dia_te.txt
+++ b/src/main/webapp/resources/dia_te.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_th.txt b/src/main/webapp/resources/dia_th.txt
index 806b6824..d1e39b9d 100644
--- a/src/main/webapp/resources/dia_th.txt
+++ b/src/main/webapp/resources/dia_th.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_tr.txt b/src/main/webapp/resources/dia_tr.txt
index 6da416fc..d8aa0044 100644
--- a/src/main/webapp/resources/dia_tr.txt
+++ b/src/main/webapp/resources/dia_tr.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_uk.txt b/src/main/webapp/resources/dia_uk.txt
index 492d32bc..749f2a98 100644
--- a/src/main/webapp/resources/dia_uk.txt
+++ b/src/main/webapp/resources/dia_uk.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_vi.txt b/src/main/webapp/resources/dia_vi.txt
index 5aca9e9c..eb110dab 100644
--- a/src/main/webapp/resources/dia_vi.txt
+++ b/src/main/webapp/resources/dia_vi.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_zh-tw.txt b/src/main/webapp/resources/dia_zh-tw.txt
index 5c59c73c..42db26fa 100644
--- a/src/main/webapp/resources/dia_zh-tw.txt
+++ b/src/main/webapp/resources/dia_zh-tw.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/resources/dia_zh.txt b/src/main/webapp/resources/dia_zh.txt
index 2b9c2436..118e5420 100644
--- a/src/main/webapp/resources/dia_zh.txt
+++ b/src/main/webapp/resources/dia_zh.txt
@@ -1129,3 +1129,5 @@ confALibsImpFailed=Importing {1} library failed
contributors=Contributors
drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
+confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
+confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js
index 475ea600..29a30b38 100644
--- a/src/main/webapp/service-worker.js
+++ b/src/main/webapp/service-worker.js
@@ -6,7 +6,7 @@ if (workbox)
workbox.precaching.precacheAndRoute([
{
"url": "js/app.min.js",
- "revision": "aa2a357c99ed9281142a5962df644ace"
+ "revision": "0c2329f554982cdfed24bcbc27d7c659"
},
{
"url": "js/extensions.min.js",
@@ -34,15 +34,15 @@ if (workbox)
},
{
"url": "styles/grapheditor.css",
- "revision": "705c15d388d662654170b53efd9cd317"
+ "revision": "eea703b9c14c50ef256e8a3674922e99"
},
{
"url": "styles/atlas.css",
- "revision": "07ff03bf40985d2740d142012b24c7d1"
+ "revision": "e8152cda9233d3a3af017422993abfce"
},
{
"url": "styles/dark.css",
- "revision": "372fe7bbfa631d8c6ebbde5445b36c1d"
+ "revision": "b8072196fe3cff2ae39b39f8d7751447"
},
{
"url": "js/croppie/croppie.min.css",
@@ -58,7 +58,7 @@ if (workbox)
},
{
"url": "js/viewer-static.min.js",
- "revision": "a0a00120805f6c3b38e620f965bff33e"
+ "revision": "e484a29caad971e5f00891d9e426cbc6"
},
{
"url": "connect/jira/editor-1-3-3.html",
@@ -138,7 +138,7 @@ if (workbox)
},
{
"url": "connect/confluence/includeDiagram-1-4-8.js",
- "revision": "94471897ad83bcd2ac2518f563bfd06a"
+ "revision": "8b81191082e56b2a9134afede269f13d"
},
{
"url": "connect/confluence/includeDiagram.html",
@@ -178,231 +178,231 @@ if (workbox)
},
{
"url": "resources/dia.txt",
- "revision": "3e2dd0ab776eae77103a51e1ad15ff90"
+ "revision": "7572ccf91d66ce7ed0df9277b0e5113c"
},
{
"url": "resources/dia_am.txt",
- "revision": "6402c05cc88931967ab517c57f293a7e"
+ "revision": "8a228511ceb4db6b52f5882558605704"
},
{
"url": "resources/dia_ar.txt",
- "revision": "755cea532de72be044a13392595327ec"
+ "revision": "36ec5c7a61984f89f27be842750ddb0e"
},
{
"url": "resources/dia_bg.txt",
- "revision": "95c9170b3c49b95c5c9c183cb43249fe"
+ "revision": "dbfdd91df71c24ffd3e6399ec45ffc5d"
},
{
"url": "resources/dia_bn.txt",
- "revision": "25962fb06109ea8666d2ec0ab0744c1c"
+ "revision": "7488d00edbdb24f17d6cdb5f2391f8fa"
},
{
"url": "resources/dia_bs.txt",
- "revision": "10c27b6a621505c49297ee8acbdc06e3"
+ "revision": "82c182eeed467892d62d8597605ef426"
},
{
"url": "resources/dia_ca.txt",
- "revision": "5fd0e77cb0d5b5e3903dba5b195373b6"
+ "revision": "c6a5ee4917073d2af480af4917675404"
},
{
"url": "resources/dia_cs.txt",
- "revision": "eaf1778a0a25825da564a49a94ecd7f2"
+ "revision": "e1d171f5f86829bec1973492e807cc8d"
},
{
"url": "resources/dia_da.txt",
- "revision": "00622877f695e26ca5545b16904dd1e3"
+ "revision": "3ff31c868106a973fb99929875f09b48"
},
{
"url": "resources/dia_de.txt",
- "revision": "e4b6052df805f80bd97e6879f04b8709"
+ "revision": "5e7c2fd603eedac26c69333449af8088"
},
{
"url": "resources/dia_el.txt",
- "revision": "394eaf985708b491f926a17d93dee4cb"
+ "revision": "bcb953ed7edede566f40bd13d2743f28"
},
{
"url": "resources/dia_eo.txt",
- "revision": "e8e9397352668b64665527a812876361"
+ "revision": "1cacaf34fb6164f4c438d100c2f0ac52"
},
{
"url": "resources/dia_es.txt",
- "revision": "f919e5d0e319fe2e4770bde6cf4e5994"
+ "revision": "1d8da01e1e04f06d98ed1dfa82e4d86d"
},
{
"url": "resources/dia_et.txt",
- "revision": "47d0caa24df756494659a145905dd112"
+ "revision": "9b4452d67407026e453424bbf99ccb58"
},
{
"url": "resources/dia_eu.txt",
- "revision": "a1113a80101b3421a3dd83b183c9f7e0"
+ "revision": "5a5038630fbba8a661eee457af5441b3"
},
{
"url": "resources/dia_fa.txt",
- "revision": "24f44981fe4a01362db2d79e1aeb0b89"
+ "revision": "0141bba419d50d299aa0304e89d8ed7e"
},
{
"url": "resources/dia_fi.txt",
- "revision": "b5ab2f5bea04045a49ed047c8c963ecf"
+ "revision": "e18ab303368c011181b0ada35a01bc6d"
},
{
"url": "resources/dia_fil.txt",
- "revision": "f4251dc00db76100bb11bf128b0641b2"
+ "revision": "5054c1b0d0a26ed27b005dcf0d2839f1"
},
{
"url": "resources/dia_fr.txt",
- "revision": "06a75eba44a0e561d4dfcb68da498800"
+ "revision": "6d1f2c666bfe183a77fa64c380d12476"
},
{
"url": "resources/dia_gl.txt",
- "revision": "178ee68d9a99343ea3d4d0097b017f3f"
+ "revision": "ead42820ea8d8949b89983a7681ef3f4"
},
{
"url": "resources/dia_gu.txt",
- "revision": "b6743887cfeea5453d80eeff076c8d9a"
+ "revision": "19598094d368006fa58bf6936b6a34cf"
},
{
"url": "resources/dia_he.txt",
- "revision": "4eaa487eadfbd54355d2b2609c5417be"
+ "revision": "c5f130088cd5486ca8abaac2d3df3e28"
},
{
"url": "resources/dia_hi.txt",
- "revision": "c8ac19dedcb1d9860c207907f1950fc5"
+ "revision": "42953621eb8e1d6c47438085c2d27c69"
},
{
"url": "resources/dia_hr.txt",
- "revision": "642ef11bc8b0f8441c865ecaa84de017"
+ "revision": "7c18e1731a40bed71d8d856620a4e1df"
},
{
"url": "resources/dia_hu.txt",
- "revision": "c55f62b1a2bb5285f8571b1a63d840a8"
+ "revision": "b8e7aba470bb8692c6536c77a4f6074b"
},
{
"url": "resources/dia_id.txt",
- "revision": "f5cd87874330123c3102e419b687f3a7"
+ "revision": "a5a69b6c876861e278b4879030f4d9b1"
},
{
"url": "resources/dia_it.txt",
- "revision": "729c532af0640eb21a88cc8b2c0f5372"
+ "revision": "96bdde96ffc82bcbffbd7cd6a0c4a634"
},
{
"url": "resources/dia_ja.txt",
- "revision": "0a5f01af131df8a764f3d28aa3d3f920"
+ "revision": "2a4e9165aab9d08f85eaef6a2e9c6023"
},
{
"url": "resources/dia_kn.txt",
- "revision": "574a0c93503b4a0f3f8e56f772537e0d"
+ "revision": "7a133516052138ee84e83556b38466d1"
},
{
"url": "resources/dia_ko.txt",
- "revision": "54ab3ec95629984e94b72ac1646daff3"
+ "revision": "9dd16eb8da245ea82499dc944b640369"
},
{
"url": "resources/dia_lt.txt",
- "revision": "d1cf8934b7ef68de3900c6f164af94e7"
+ "revision": "1e5d0b04bc05f8035841d936106ade3f"
},
{
"url": "resources/dia_lv.txt",
- "revision": "8f6c4be146ac3c771ff1c09bd892a163"
+ "revision": "a56827d86e903dfb352be20ac30fb058"
},
{
"url": "resources/dia_ml.txt",
- "revision": "36105b7b30adeff6301352cb1975a281"
+ "revision": "7aa53d267f4d0b960481a4f876118873"
},
{
"url": "resources/dia_mr.txt",
- "revision": "7c302f9b34d1993c086be567782ee848"
+ "revision": "0a300886598cb2fbf22d8dc10d2c2574"
},
{
"url": "resources/dia_ms.txt",
- "revision": "1764d0c71a6a0eb5a997a6e581c42809"
+ "revision": "a02de1a0b4d4230a445f913206771eb9"
},
{
"url": "resources/dia_my.txt",
- "revision": "3e2dd0ab776eae77103a51e1ad15ff90"
+ "revision": "7572ccf91d66ce7ed0df9277b0e5113c"
},
{
"url": "resources/dia_nl.txt",
- "revision": "53a169f186ed965aad517375d01af65d"
+ "revision": "7035fd3fc0ab49414510212cc57f17c0"
},
{
"url": "resources/dia_no.txt",
- "revision": "7860d72c8307ef774ca5a8c540360d0f"
+ "revision": "eac65aecb73465bab62d85ea8b4f44c6"
},
{
"url": "resources/dia_pl.txt",
- "revision": "94bfca5280d72b62e9f4ebccb1bfdc0e"
+ "revision": "ef595fb8dcad31722701cd49af35c377"
},
{
"url": "resources/dia_pt-br.txt",
- "revision": "9569a14d2eda756c22998822ffaccd24"
+ "revision": "6d23a4c353b662948ad64715a9abe560"
},
{
"url": "resources/dia_pt.txt",
- "revision": "90e102cc6d590a763cd0fd5ae28523be"
+ "revision": "cc28ec15ed7695d8f54d9860c3042a22"
},
{
"url": "resources/dia_ro.txt",
- "revision": "e4c8ba84fb42ae98915331b338d109fe"
+ "revision": "8aafb26dc23394fe0b1784ba3a6e5186"
},
{
"url": "resources/dia_ru.txt",
- "revision": "d27fc65428649d77f2cf23e65d2ecea5"
+ "revision": "42463331d172c1e59b9485436664e9ce"
},
{
"url": "resources/dia_si.txt",
- "revision": "3e2dd0ab776eae77103a51e1ad15ff90"
+ "revision": "7572ccf91d66ce7ed0df9277b0e5113c"
},
{
"url": "resources/dia_sk.txt",
- "revision": "b9863cd247dd1803cb1a93d65b75e5d5"
+ "revision": "a03bdd8863a921cf715d86bca40a2fc5"
},
{
"url": "resources/dia_sl.txt",
- "revision": "1592628a920221484a894954bc8cd155"
+ "revision": "3068e643ebf5bb92e1672cd7cf29604b"
},
{
"url": "resources/dia_sr.txt",
- "revision": "535caef0e3d9615a4559bbda455d3b3b"
+ "revision": "35e004b1dd0b384d72d3d764780f6527"
},
{
"url": "resources/dia_sv.txt",
- "revision": "1c44482e45092e4986336f68a97edccf"
+ "revision": "f212760f7c7642c4ec2894ed52a96657"
},
{
"url": "resources/dia_sw.txt",
- "revision": "01fa72ae78aa42d4e4b78dfd4793b5cc"
+ "revision": "5334b2d732ff7a7669eba710354f6562"
},
{
"url": "resources/dia_ta.txt",
- "revision": "e919a3b194fbfcc758f64ba9aa3c9022"
+ "revision": "624614130110cb46a324a45a2ae01727"
},
{
"url": "resources/dia_te.txt",
- "revision": "e515d74b7139c92e8f69f8f6f17c8e59"
+ "revision": "4e7309f136ba85da5d5898e968a3ccc6"
},
{
"url": "resources/dia_th.txt",
- "revision": "7fff117e4a2204f6e3a0e577fa65e9b1"
+ "revision": "852b77250be33ddd839976cd91646cfa"
},
{
"url": "resources/dia_tr.txt",
- "revision": "67566f11e947835cf8e576410252bda9"
+ "revision": "f73bdcbd6de5bf43c1e749ce8053dd94"
},
{
"url": "resources/dia_uk.txt",
- "revision": "6cd06dce212c30812e2cbae73290ded5"
+ "revision": "7bfac9696ac58cc0c72a224a45e42566"
},
{
"url": "resources/dia_vi.txt",
- "revision": "e103a845a0afc14352c6880b930d20f6"
+ "revision": "0afa748cad90c3b7ddcfe8b70888ade6"
},
{
"url": "resources/dia_zh-tw.txt",
- "revision": "aa3f7622d2a7cae143c83e35cda20807"
+ "revision": "691b4bb524d9ebc1cc083552bc543acc"
},
{
"url": "resources/dia_zh.txt",
- "revision": "41f50753e414c31f1f54b7c9828b431d"
+ "revision": "88af494f433516aa4b5b33c5f9fc5290"
},
{
"url": "favicon.ico",
diff --git a/src/main/webapp/styles/atlas.css b/src/main/webapp/styles/atlas.css
index 077d4732..e6e2b87e 100644
--- a/src/main/webapp/styles/atlas.css
+++ b/src/main/webapp/styles/atlas.css
@@ -206,3 +206,48 @@ html body .geMenubarContainer .mxDisabled {
border-top:1px solid #e5e5e5;
color:darkGray;
}
+
+.geNotification-box {
+ width: 50px;
+ height: 30px;
+ text-align: center;
+ float: left;
+ position: relative;
+ top: 1px !important;
+ cursor: pointer;
+}
+
+.geNotification-bell {
+ animation: geBellAnim 1s 1s both;
+ opacity: 0.75;
+}
+
+.geNotification-bell * {
+ display: block;
+ margin: 0 auto;
+ background-color: #DEEBFF !important;
+ box-shadow: 0px 0px 10px #DEEBFF !important;
+}
+
+.geNotification-count {
+ position: absolute;
+ z-index: 1;
+ top: -5px;
+ right: 7px;
+ width: 15px;
+ height: 15px;
+ line-height: 15px;
+ font-size: 10px;
+ border-radius: 50%;
+ background-color: #ff4927;
+ color: #DEEBFF !important;
+ animation: geZoomAnim 1s 1s both;
+}
+
+.geNotifPanel .header {
+ height: 30px;
+ width: 100%;
+ background: #0049B0 !important;
+ color: #DEEBFF !important;
+ font-size: 15px;
+} \ No newline at end of file
diff --git a/src/main/webapp/styles/dark.css b/src/main/webapp/styles/dark.css
index 27fef9ed..1d0c4c4d 100644
--- a/src/main/webapp/styles/dark.css
+++ b/src/main/webapp/styles/dark.css
@@ -167,4 +167,42 @@ html body .geCommentContainer {
border-width: 1px;
box-shadow: none;
color: inherit;
+}
+
+.geNotification-bell * {
+ display: block;
+ margin: 0 auto;
+ background-color: #aaa !important;
+ box-shadow: 0px 0px 10px #aaa !important;
+}
+
+.geNotification-count {
+ position: absolute;
+ z-index: 1;
+ top: -5px;
+ right: 7px;
+ width: 15px;
+ height: 15px;
+ line-height: 15px;
+ font-size: 10px;
+ border-radius: 50%;
+ background-color: #ff4927;
+ color: #DEEBFF !important;
+ animation: geZoomAnim 1s 1s both;
+}
+
+.geNotifPanel .header {
+ height: 30px;
+ width: 100%;
+ background: #424242 !important;
+ color: #ccc !important;
+ font-size: 15px;
+}
+
+.geNotifPanel .notifications {
+ position: relative;
+ height: 270px;
+ overflow-x: hidden;
+ overflow-y: auto;
+ background-color: #707070;
} \ No newline at end of file
diff --git a/src/main/webapp/styles/grapheditor.css b/src/main/webapp/styles/grapheditor.css
index 2e8d0802..3d092d29 100644
--- a/src/main/webapp/styles/grapheditor.css
+++ b/src/main/webapp/styles/grapheditor.css
@@ -1550,18 +1550,17 @@ table.geProperties tr td {
text-align: center;
float: left;
position: relative;
- top: 1px;
+ top: -2px;
cursor: pointer;
}
.geNotification-bell {
animation: geBellAnim 1s 1s both;
- opacity: 0.75;
}
.geNotification-bell * {
display: block;
margin: 0 auto;
- background-color: #DEEBFF;
- box-shadow: 0px 0px 10px #DEEBFF;
+ background-color: #656565;
+ box-shadow: 0px 0px 10px #656565;
}
.geNotification-bellOff * {
@@ -1593,13 +1592,13 @@ table.geProperties tr td {
}
.geBell-bottom::before {
left: 1px;
- border-bottom: 4px solid #DEEBFF;
+ border-bottom-width: 4px;
border-right: 0 solid transparent;
border-left: 4px solid transparent;
}
.geBell-bottom::after {
right: 1px;
- border-bottom: 4px solid #DEEBFF;
+ border-bottom-width: 4px;
border-right: 4px solid transparent;
border-left: 0 solid transparent;
}
@@ -1621,7 +1620,7 @@ table.geProperties tr td {
font-size: 10px;
border-radius: 50%;
background-color: #ff4927;
- color: #DEEBFF;
+ color: #FFF;
animation: geZoomAnim 1s 1s both;
}
@keyframes geBellAnim {
@@ -1664,8 +1663,8 @@ table.geProperties tr td {
.geNotifPanel .header {
height: 30px;
width: 100%;
- background: #0049B0;
- color: #DEEBFF;
+ background: #cecece;
+ color: #707070;
font-size: 15px;
}
.geNotifPanel .header .title {