Built motion from commit 9ab4571.|0.0.110
[motion.git] / public / assets / plugins / square / js / EditorUi.js
index 58e1d87..49b7a1c 100644 (file)
@@ -1,1481 +1 @@
-/**
- * $Id: EditorUi.js,v 1.21 2013/03/14 20:46:36 david Exp $
- * Copyright (c) 2006-2012, JGraph Ltd
- */
-/**
- * Constructs a new graph editor
- */
-EditorUi = function(editor, container) {
-       this.editor = editor || new Editor();
-       this.container = container || document.getElementById('geEditor');
-       var graph = editor.graph;
-       var self = this;
-
-       // Disables scrollbars
-       this.container.style.overflow = 'hidden';
-
-       // Pre-fetches submenu image
-       new Image().src = mxPopupMenu.prototype.submenuImage;
-
-       // Pre-fetches connect image
-       if (mxConnectionHandler.prototype.connectImage != null) {
-               new Image().src = mxConnectionHandler.prototype.connectImage.src;
-       }
-
-       // Creates the user interface
-       this.actions = new Actions(this);
-       this.menus = new Menus(this);
-       this.createDivs();
-       this.refresh();
-       this.createUi();
-
-       // Disables HTML and text selection
-       var textEditing = mxUtils.bind(this, function(evt) {
-               if (evt == null) {
-                       evt = window.event;
-               }
-
-               if (this.isSelectionAllowed(evt)) {
-                       return true;
-               }
-
-               return graph.isEditing();
-       });
-
-       // Disables text selection while not editing and no dialog visible
-       if (this.container == document.body) {
-               this.menubarContainer.onselectstart = textEditing;
-               this.menubarContainer.onmousedown = textEditing;
-               this.toolbarContainer.onselectstart = textEditing;
-               this.toolbarContainer.onmousedown = textEditing;
-               this.diagramContainer.onselectstart = textEditing;
-               this.diagramContainer.onmousedown = textEditing;
-               this.sidebarContainer.onselectstart = textEditing;
-               this.sidebarContainer.onmousedown = textEditing;
-               this.footerContainer.onselectstart = textEditing;
-               this.footerContainer.onmousedown = textEditing;
-       }
-
-       // And uses built-in context menu while editing
-       if (mxClient.IS_IE && (typeof(document.documentMode) === 'undefined' ||
-                       document.documentMode < 9)) {
-               mxEvent.addListener(this.diagramContainer, 'contextmenu', textEditing);
-               mxEvent.addListener(this.sidebarContainer, 'contextmenu', textEditing);
-       } else {
-               // Allows browser context menu outside of diagram and sidebar
-               this.diagramContainer.oncontextmenu = textEditing;
-               this.sidebarContainer.oncontextmenu = textEditing;
-       }
-
-       // Contains the main graph instance inside the given panel
-       graph.init(this.diagramContainer);
-       graph.refresh();
-
-       // Enables scrollbars and sets cursor style for the container
-       graph.container.setAttribute('tabindex', '0');
-       // graph.container.style.overflow = (touchStyle) ? 'hidden' : 'auto';
-       graph.container.style.cursor = 'default';
-       graph.container.style.backgroundImage = 'url(' + editor.gridImage + ')';
-       graph.container.style.backgroundPosition = '-1px -1px';
-       graph.container.focus();
-
-       // Keeps graph container focused on mouse down
-       var graphFireMouseEvent = graph.fireMouseEvent;
-       graph.fireMouseEvent = function(evtName, me, sender) {
-               if (evtName == mxEvent.MOUSE_DOWN) {
-                       this.container.focus();
-               }
-
-               graphFireMouseEvent.apply(this, arguments);
-       };
-
-       // Giuseppe Careri
-       // Defines invalid connections along with the error messages that they produce.
-       this.createMultiplicities(graph.multiplicities, ['start', 'finally', 'end'], [
-               [1, 1],
-               [1, 1],
-               [0, 0]
-       ], [
-               [0, 0],
-               [0, 0],
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['answer', 'hangup', 'dial',
-               'ext_dial', 'queue', 'voicemail', 'callback'
-       ], [
-               [1, 1],
-               [0, 0],
-               [0, 1],
-               [0, 1],
-               [0, 1],
-               [1, 1],
-               [0, 1]
-       ], [
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['set', 'math'], [
-               [1, 1],
-               [1, 1]
-       ], [
-               [1, 'n'],
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['background', 'playback',
-               'menu', 'saydigits', 'saynumber', 'sayphonetic', 'tts', 'ispeechtts', 'getdigits'
-       ], [
-               [1, 'n'],
-               [1, 1],
-               [1, 'n'],
-               [1, 1],
-               [1, 1],
-               [1, 1],
-               [1, 1],
-               [1, 1],
-               [1, 'n']
-       ], [
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['record'], [
-               [1, 1]
-       ], [
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['database', 'ispeechasr'], [
-               [1, 1],
-               [1, 1]
-       ], [
-               [1, 'n'],
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['gotoc', 'gotoif',
-               'gotoiftime', 'gotoifmultitime', 'vswitch'
-       ], [
-               [0, 0],
-               [1, 2],
-               [1, 2],
-               [1, 2],
-               [1, 'n']
-       ], [
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['queuelog', 'goal'], [
-               [1, 1],
-               [1, 1]
-       ], [
-               [1, 'n'],
-               [1, 'n']
-       ]);
-       this.createMultiplicities(graph.multiplicities, ['noop', 'system', 'agi',
-               'subproject', 'custom_app'
-       ], [
-               [1, 1],
-               [1, 1],
-               [0, 1],
-               [0, 1],
-               [0, 1]
-       ], [
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n'],
-               [1, 'n']
-       ]);
-
-       // Giuseppe Careri
-       // Processes a doubleclick on an optional cell and fires a <dblclick> event.
-       // The event is fired initially.
-       // If the graph is enabled and the event has not been consumed, then <edit> is called with the given cell.
-       // The event is ignored if no cell was specified.
-       graph.dblClick = function(evt, cell) {
-               var edges = ['background', 'gotoif', 'gotoiftime', 'menu', 'getdigits', 'vswitch'];
-               var mxe = new mxEventObject(mxEvent.DOUBLE_CLICK, 'event', evt, 'cell',
-                       cell);
-               this.fireEvent(mxe);
-
-               if (this.isEnabled() && !mxEvent.isConsumed(evt) && !mxe.isConsumed()) {
-                       // Override dblClick Vertices and Edges
-                       if (this.getModel().isEdge(cell)) {
-                               if (edges.indexOf(cell.source.value.tagName) >= 0)
-                                       this.startEditingAtCell(cell);
-                       } else if (this.getModel().isVertex(cell)) {
-                               console.log(self);
-                               console.log(cell);
-                               self.showDialog(new GeneralDialog(self, cell).container, 320, 280, true,
-                                       true);
-                       }
-                       mxe.consume();
-               }
-       }
-
-       // Configures automatic expand on mouseover
-       graph.panningHandler.autoExpand = true;
-
-       // Installs context menu
-       graph.panningHandler.factoryMethod = mxUtils.bind(this, function(menu, cell,
-               evt) {
-               this.menus.createPopupMenu(menu, cell, evt);
-       });
-
-       // Initializes the outline
-       editor.outline.init(this.outlineContainer);
-
-       // Hides context menu
-       mxEvent.addGestureListeners(document, mxUtils.bind(this, function(evt) {
-               graph.panningHandler.hideMenu();
-       }));
-
-       // Adds gesture handling (pinch to zoom)
-       if (mxClient.IS_TOUCH) {
-               mxEvent.addListener(graph.container, 'gesturechange',
-                       mxUtils.bind(this, function(evt) {
-                               graph.view.getDrawPane().setAttribute('transform', 'scale(' + evt.scale +
-                                       ')');
-                               graph.view.getOverlayPane().style.visibility = 'hidden';
-                       })
-               );
-
-               mxEvent.addListener(graph.container, 'gestureend',
-                       mxUtils.bind(this, function(evt) {
-                               graph.view.getDrawPane().removeAttribute('transform');
-                               graph.zoomToCenter = true;
-                               graph.zoom(evt.scale);
-                               graph.view.getOverlayPane().style.visibility = 'visible';
-                       })
-               );
-       }
-
-       // Create handler for key events
-       var keyHandler = this.createKeyHandler(editor);
-
-       // Getter for key handler
-       this.getKeyHandler = function() {
-               return keyHandler;
-       };
-
-       // Updates the editor UI after the window has been resized
-       mxEvent.addListener(window, 'resize', mxUtils.bind(this, function() {
-               this.refresh();
-               graph.sizeDidChange();
-               this.editor.outline.update(false);
-               this.editor.outline.outline.sizeDidChange();
-       }));
-
-       // Updates action and menu states
-       this.init();
-       this.open();
-};
-
-/**
- * Specifies the size of the split bar.
- */
-EditorUi.prototype.splitSize = (mxClient.IS_TOUCH) ? 16 : 8;
-
-/**
- * Specifies the height of the menubar. Default is 34.
- */
-EditorUi.prototype.menubarHeight = 33;
-
-/**
- * Specifies the height of the toolbar. Default is 36.
- */
-EditorUi.prototype.toolbarHeight = 36;
-
-/**
- * Specifies the height of the footer. Default is 28.
- */
-EditorUi.prototype.footerHeight = 28;
-
-/**
- * Specifies the position of the horizontal split bar. Default is 212.
- */
-EditorUi.prototype.hsplitPosition = 204;
-
-/**
- * Specifies the position of the vertical split bar. Default is 190.
- */
-EditorUi.prototype.vsplitPosition = 190;
-
-/**
- * Installs the listeners to update the action states.
- */
-EditorUi.prototype.init = function() {
-       // Updates action states
-       this.addUndoListener();
-       this.addSelectionListener();
-
-       // Overrides clipboard to update paste action state
-       var paste = this.actions.get('paste');
-
-       var updatePaste = function() {
-               paste.setEnabled(!mxClipboard.isEmpty());
-       };
-
-       var mxClipboardCut = mxClipboard.cut;
-       mxClipboard.cut = function() {
-               mxClipboardCut.apply(this, arguments);
-               updatePaste();
-       };
-
-       var mxClipboardCopy = mxClipboard.copy;
-       mxClipboard.copy = function() {
-               mxClipboardCopy.apply(this, arguments);
-               updatePaste();
-       };
-};
-
-/**
- * Hook for allowing selection and context menu for certain events.
- */
-EditorUi.prototype.isSelectionAllowed = function(evt) {
-       return false;
-};
-
-/**
- * Opens the current diagram via the window.opener if one exists.
- */
-EditorUi.prototype.open = function() {
-       // Cross-domain window access is not allowed in FF, so if we
-       // were opened from another domain then this will fail.
-       try {
-               if (window.opener != null && window.opener.openFile != null) {
-                       window.opener.openFile.setConsumer(mxUtils.bind(this, function(xml,
-                               filename) {
-                               try {
-                                       var doc = mxUtils.parseXml(xml);
-                                       this.editor.setGraphXml(doc.documentElement);
-                                       this.editor.modified = false;
-                                       this.editor.undoManager.clear();
-
-                                       if (filename != null) {
-                                               this.editor.filename = filename;
-                                       }
-                               } catch (e) {
-                                       mxUtils.alert(mxResources.get('invalidOrMissingFile') + ': ' + e.message);
-                               }
-                       }));
-               }
-       } catch (e) {
-               // ignore
-       }
-};
-
-/**
- * Giuseppe Careri
- * Opens the current diagram via string.
- */
-EditorUi.prototype.openString = function(xml, filename, data) {
-       try {
-               var doc = mxUtils.parseXml(xml);
-               this.editor.setGraphXml(doc.documentElement);
-               this.editor.modified = false;
-               this.editor.undoManager.clear();
-
-               if (filename != null) {
-                       this.editor.filename = filename;
-               }
-
-               if (data != null) {
-                       this.editor.data = data;
-               }
-       } catch (e) {
-               mxUtils.alert(mxResources.get('invalidOrMissingFile') + ': ' + e.message);
-       }
-};
-
-/**
- * Saves As the current graph under the given project name.
- */
-EditorUi.prototype.new = function(name) {
-       var editor = this.editor;
-
-       if (name != null) {
-               var xml = mxUtils.getPrettyXml(this.editor.getGraphXml());
-               try {
-                       if (useLocalStorage) {
-                               if (localStorage.getItem(name) != null &&
-                                       !mxUtils.confirm(mxResources.get('replace', [name]))) {
-                                       return;
-                               }
-
-                               localStorage.setItem(name, xml);
-                               this.editor.setStatus(mxResources.get('saved') + ' ' + new Date());
-                       } else {
-                               console.log(xml.length);
-                               console.log(MAX_REQUEST_SIZE);
-                               if (xml.length < MAX_REQUEST_SIZE) {
-                                       xml = encodeURIComponent(xml);
-                                       name = encodeURIComponent(name);
-
-                                       var xhr = new XMLHttpRequest();
-                                       xhr.open("POST", SAVE_URL, true);
-                                       xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                                       xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token);
-                                       xhr.onload = function(e) {
-                                               if (xhr.readyState === 4) {
-                                                       if (xhr.status === 201) {
-                                                               editor.setStatus('Project ' + JSON.parse(xhr.response).name +
-                                                                       ' is opening in new window!');
-                                                               setTimeout(function() {
-                                                                       window.open('square/project/' + JSON.parse(xhr.response).id,
-                                                                               '_blank');
-                                                               }, 1500);
-                                                       } else {
-                                                               editor.setStatus('Error creating project: ' +
-                                                                       JSON.parse(xhr.response).errors[0].message);
-                                                       }
-                                               }
-                                       };
-                                       xhr.onerror = function(e) {
-                                               mxUtils.alert(xhr.statusText);
-                                       };
-                                       xhr.send('description=project_new&name=' + name);
-                               } else {
-                                       mxUtils.alert(mxResources.get('drawingTooLarge'));
-                                       mxUtils.popup(xml);
-
-                                       return;
-                               }
-                       }
-
-                       this.editor.filename = name;
-                       this.editor.modified = false;
-               } catch (e) {
-                       this.editor.setStatus('Error creating project');
-               }
-       } else {
-               this.editor.setStatus('Error creating project');
-       }
-};
-
-
-/**
- * Saves the current graph under the given project name.
- */
-EditorUi.prototype.save = function(name) {
-       var editor = this.editor;
-
-       if (name != null) {
-               var xml = mxUtils.getPrettyXml(this.editor.getGraphXml());
-               try {
-                       if (useLocalStorage) {
-                               if (localStorage.getItem(name) != null &&
-                                       !mxUtils.confirm(mxResources.get('replace', [name]))) {
-                                       return;
-                               }
-
-                               localStorage.setItem(name, xml);
-                               this.editor.setStatus(mxResources.get('saved') + ' ' + new Date());
-                       } else {
-                               console.log(xml.length);
-                               console.log(MAX_REQUEST_SIZE);
-                               if (xml.length < MAX_REQUEST_SIZE) {
-                                       xml = encodeURIComponent(xml);
-
-                                       var xhr = new XMLHttpRequest();
-                                       xhr.open("PUT", SAVE_URL + this.editor.data.id, true);
-                                       xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                                       xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token);
-                                       xhr.onload = function(e) {
-                                               if (xhr.readyState === 4) {
-                                                       if (xhr.status === 200) {
-                                                               editor.setStatus('Updated at ' + JSON.parse(xhr.response).updatedAt +
-                                                                       ' (' + xhr.status + ' ' + xhr.statusText + ')');
-                                                       } else {
-                                                               editor.setStatus('Error saving project: ' +
-                                                                       JSON.parse(xhr.response).errors[0].message);
-                                                       }
-                                               }
-                                       };
-                                       xhr.onerror = function(e) {
-                                               mxUtils.alert(xhr.statusText);
-                                       };
-                                       xhr.send('preproduction=' + xml);
-                               } else {
-                                       mxUtils.alert(mxResources.get('drawingTooLarge'));
-                                       mxUtils.popup(xml);
-
-                                       return;
-                               }
-                       }
-
-                       this.editor.filename = name;
-                       this.editor.modified = false;
-               } catch (e) {
-                       this.editor.setStatus('Error saving file');
-               }
-       } else {
-               this.editor.setStatus('Error saving file');
-       }
-};
-
-/**
- * Saves As the current graph under the given project name.
- */
-EditorUi.prototype.saveAs = function(name) {
-       var editor = this.editor;
-
-       if (name != null) {
-               var xml = mxUtils.getPrettyXml(this.editor.getGraphXml());
-               try {
-                       if (useLocalStorage) {
-                               if (localStorage.getItem(name) != null &&
-                                       !mxUtils.confirm(mxResources.get('replace', [name]))) {
-                                       return;
-                               }
-
-                               localStorage.setItem(name, xml);
-                               this.editor.setStatus(mxResources.get('saved') + ' ' + new Date());
-                       } else {
-                               console.log(xml.length);
-                               console.log(MAX_REQUEST_SIZE);
-                               if (xml.length < MAX_REQUEST_SIZE) {
-                                       xml = encodeURIComponent(xml);
-                                       name = encodeURIComponent(name);
-
-                                       var xhr = new XMLHttpRequest();
-                                       xhr.open("POST", SAVE_URL, true);
-                                       xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                                       xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token);
-                                       xhr.onload = function(e) {
-                                               if (xhr.readyState === 4) {
-                                                       if (xhr.status === 201) {
-                                                               editor.setStatus('Project ' + JSON.parse(xhr.response).name +
-                                                                       ' is opening in new window!');
-                                                               setTimeout(function() {
-                                                                       window.open('square/project/' + JSON.parse(xhr.response).id,
-                                                                               '_blank');
-                                                               }, 1500);
-                                                       } else {
-                                                               editor.setStatus('Error cloning project: ' +
-                                                                       JSON.parse(xhr.response).errors[0].message);
-                                                       }
-                                               }
-                                       };
-                                       xhr.onerror = function(e) {
-                                               mxUtils.alert(xhr.statusText);
-                                       };
-                                       xhr.send('description=project_cloned&name=' + name +
-                                               '&preproduction=' + xml + '&production=' + xml);
-                               } else {
-                                       mxUtils.alert(mxResources.get('drawingTooLarge'));
-                                       mxUtils.popup(xml);
-
-                                       return;
-                               }
-                       }
-
-                       this.editor.filename = name;
-                       this.editor.modified = false;
-               } catch (e) {
-                       this.editor.setStatus('Error saving file');
-               }
-       } else {
-               this.editor.setStatus('Error saving file');
-       }
-};
-
-/**
- * Plush the current graph under the given project name.
- */
-EditorUi.prototype.validate = function(a, b) {
-       var graph = this.editor.graph;
-       for (var a = a != null ? a : graph.model.getRoot(), b = b != null ? b : {}, c = true, d = graph.model.getChildCount(a), e = 0; e < d; e++) {
-               var f = graph.model.getChildAt(a, e),
-                       g = b;
-               graph.isValidRoot(f) && (g = {});
-               g = this.validate(f, g);
-               g != null ? graph.setCellWarning(f, g.replace(/\n/g, "<br>")) : graph.setCellWarning(f, null);
-               c = c && g == null
-       }
-
-       d = "";
-
-       //--- Giuseppe Careri - Modify 12/12/2013 - giuseppe.careri@gmail.com
-       if (graph.model.isVertex(a)) {
-               switch (a.value.nodeName) {
-                       case 'start':
-                               d = this.validateBlock('start') ? '' : "Only one Start block is allowed" + "\n";
-                               break;
-                       case 'finally':
-                               d = this.validateBlock('finally') ? '' : "Only one Finally block is allowed" + "\n";
-                               break;
-                       case 'playback':
-                       case 'background':
-                       case 'menu':
-                               d = (a.value.getAttribute('file_id') > 0) ? "" : mxResources.get('noAudioSelected') + "\n";
-                               break;
-                       case 'getdigits':
-                               d = (a.value.getAttribute('file_id') > 0) ? "" : mxResources.get('noAudioSelected') + "\n";
-                               d += (a.value.getAttribute('variable_id') > 0) ? "" : mxResources.get('noVariableSelected') + "\n";
-                               break;
-                       case 'vswitch':
-                               d = (a.value.getAttribute('variable') !== "") ? "" : mxResources.get('noVariableSelected') + "\n";
-                               break;
-                       case 'database':
-                               d = (a.value.getAttribute('database_id') > 0) ? "" : mxResources.get('noDatabaseSelected') + "\n";
-                               break;
-                       case 'set':
-                       case 'math':
-                               d = (a.value.getAttribute('variable_id') > 0) ? "" : mxResources.get('noVariableSelected') + "\n";
-                               break;
-                       case 'gotoc':
-                               d = (a.value.getAttribute('extension') !== "") ? "" : mxResources.get('noExtensionSelected') + "\n";
-                               break;
-                       case 'system':
-                       case 'agi':
-                               d = (a.value.getAttribute('command') !== "") ? "" : mxResources.get('noCommandSelected') + "\n";
-                               break;
-                       case 'gotoif':
-                               d = (a.value.getAttribute('condition') !== "") ? "" : mxResources.get('noConditionSelected') + "\n";
-                               break;
-                       case 'saydigits':
-                               d = (a.value.getAttribute('digits') !== "") ? "" : mxResources.get('noDigitsSelected') + "\n";
-                               break;
-                       case 'saynumber':
-                               d = (a.value.getAttribute('number') !== "") ? "" : mxResources.get('noNumberSelected') + "\n";
-                               break;
-                       case 'sayphonetic':
-                               d = (a.value.getAttribute('text') !== "") ? "" : mxResources.get('noTextSelected') + "\n";
-                               break;
-                       case 'record':
-                               d = (a.value.getAttribute('filename') !== "") ? "" : mxResources.get('noFileSelected') + "\n";
-                               break;
-                       case 'goal':
-                               d = (a.value.getAttribute('goalname') !== "") ? "" : mxResources.get('noGoalSelected') + "\n";
-                               break;
-                       case 'ext_dial':
-                               d = (a.value.getAttribute('phone') !== "") ? "" : mxResources.get('noIdentifierSelected') + "\n";
-                               break;
-                       case 'dial':
-                               d = (a.value.getAttribute('sip_id') > 0) ? "" : mxResources.get('noIdentifierSelected') + "\n";
-                               break;
-                       case 'queue':
-                               d = (a.value.getAttribute('queue_id') !== "") ? "" : mxResources.get('noQueueSelected') + "\n";
-                               break;
-                       case 'callback':
-                               d = (a.value.getAttribute('list_id') > 0) ? "" : mxResources.get('noListSelected') + "\n";
-                               break;
-                       case 'gotoiftime':
-                               d = (a.value.getAttribute('interval_id') > 0) ? "" : mxResources.get('noIntervalSelected') + "\n";
-                               break;
-                       case 'gotoifmultitime':
-                               d = (a.value.getAttribute('interval_id') != "") ? "" : mxResources.get('noIntervalSelected') + "\n";
-                               break;
-                       case 'voicemail':
-                               d = (a.value.getAttribute('context') !== "") ? "" : mxResources.get('noContextSelected') + "\n";
-                               d += (a.value.getAttribute('boxnumber') !== "") ? "" : mxResources.get('noBoxNumberSelected') + "\n";
-                               break;
-                       case 'subproject':
-                               d = (a.value.getAttribute('project_id') > 0) ? "" : mxResources.get('noProjectSelected') + "\n";
-                               break;
-                       case 'tts':
-                               d = (a.value.getAttribute('text') !== "") ? "" : mxResources.get('noTextSelected') + "\n";
-                               break;
-                       case 'ispeechtts':
-                               d = (a.value.getAttribute('text') !== "") ? "" : mxResources.get('noTextSelected') + "\n";
-                               d += (a.value.getAttribute('key') !== "") ? "" : mxResources.get('noKeySelected') + "\n";
-                               break;
-                       case 'ispeechasr':
-                               d = (a.value.getAttribute('key') !== "") ? "" : mxResources.get('noKeySelected') + "\n";
-                               break;
-               }
-       }
-
-       if (graph.model.isEdge(a)) {
-               var z = graph.model.getCell(a.source.getId());
-               switch (z.value.nodeName) {
-                       case 'background':
-                               var patt = /^[0-9]{1,45}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;
-                               d = d + ((patt.test(String(a.getValue()))) ? "" : mxResources.get('numberOrInvalidOrTimeout') + "\n");
-                               break;
-                       case 'menu':
-                               var patt = /^[0-9]{1,45}$|^[-]{1}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;
-                               var str = String(a.getValue());
-                               var res = str.split(",");
-                               res.forEach(function(entry) {
-                                       d = d + ((patt.test(entry)) ? "" : mxResources.get('numberOrAll') + "\n");
-                               });
-                               break;
-                       case 'getdigits':
-                               var patt = /^(x|i|-)$/;
-                               var str = String(a.getValue());
-                               d = d + ((patt.test(str)) ? "" : mxResources.get('numberOrInvalidOrDefault') + "\n");
-                               break;
-                       case 'gotoif':
-                       case 'gotoiftime':
-                       case 'gotoifmultitime':
-                               var patt = /^(true){1}$|^(false){1}$/;
-                               d = d + ((patt.test(String(a.getValue()))) ? "" : mxResources.get('trueOrFalse') + "\n");
-                               break;
-
-               }
-       }
-       // -----------------------------------------------------------------
-
-
-       graph.isCellCollapsed(a) && !c && (d = d + ((mxResources.get(graph.containsValidationErrorsResource) || graph.containsValidationErrorsResource) + "\n"));
-       d = graph.model.isEdge(a) ?
-               d + (graph.getEdgeValidationError(a, graph.model.getTerminal(a, true), graph.model.getTerminal(a, false)) || "") : d + (graph.getCellValidationError(a) || "");
-       e = graph.validateCell(a, b);
-       e != null && (d = d + e);
-       graph.model.getParent(a) == null && graph.view.validate();
-       return d.length > 0 || !c ? d : null
-};
-EditorUi.prototype.validateBlock = function(blockName) {
-       var graph = this.editor.graph;
-       var parent = graph.getDefaultParent();
-       var count = 0;
-       // var model = graph.getModel();
-       //We can also use model.getChildren(parent)
-       parent.children.forEach(function(n) {
-               if (graph.model.isVertex(n) && n.value.nodeName == blockName) {
-                       count++;
-               }
-       });
-       return count > 1 ? false : true;
-}
-EditorUi.prototype.publish = function(name) {
-       var editor = this.editor;
-
-       if (name != null) {
-               var response = this.validate();
-               if (response === null) {
-
-                       var xml = mxUtils.getPrettyXml(this.editor.getGraphXml());
-                       try {
-                               if (useLocalStorage) {
-                                       if (localStorage.getItem(name) != null &&
-                                               !mxUtils.confirm(mxResources.get('replace', [name]))) {
-                                               return;
-                                       }
-
-                                       localStorage.setItem(name, xml);
-                                       this.editor.setStatus(mxResources.get('saved') + ' ' + new Date());
-                               } else {
-                                       console.log(xml.length);
-                                       console.log(MAX_REQUEST_SIZE);
-                                       if (xml.length < MAX_REQUEST_SIZE) {
-                                               xml = encodeURIComponent(xml);
-
-                                               var xhr = new XMLHttpRequest();
-                                               xhr.open("PUT", SAVE_URL + this.editor.data.id, true);
-                                               xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                                               xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token);
-                                               xhr.onload = function(e) {
-                                                       if (xhr.readyState === 4) {
-                                                               if (xhr.status === 200) {
-                                                                       editor.setStatus('Published at ' + JSON.parse(xhr.response).updatedAt +
-                                                                               ' (' + xhr.status + ' ' + xhr.statusText + ')');
-                                                               } else {
-                                                                       editor.setStatus('Error saving project: ' +
-                                                                               JSON.parse(xhr.response).errors[0].message);
-                                                               }
-                                                       }
-                                               };
-                                               xhr.onerror = function(e) {
-                                                       mxUtils.alert(xhr.statusText);
-                                               };
-                                               xhr.send('preproduction=' + xml + '&production=' + xml);
-                                       } else {
-                                               mxUtils.alert(mxResources.get('drawingTooLarge'));
-                                               mxUtils.popup(xml);
-
-                                               return;
-                                       }
-                               }
-
-                               this.editor.filename = name;
-                               this.editor.modified = false;
-                       } catch (e) {
-                               this.editor.setStatus('Error publishing file');
-                       }
-               } else {
-                       editor.setStatus('Error publishing project: ');
-               }
-       } else {
-               this.editor.setStatus('Error publishing file');
-       }
-};
-
-
-/**
- * Create variable
- */
-EditorUi.prototype.variable = function(name) {
-       var editor = this.editor;
-
-       if (name != null) {
-               try {
-
-                       var xhr = new XMLHttpRequest();
-                       xhr.open("POST", VARIABLE_URL, true);
-                       xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                       xhr.setRequestHeader('Authorization', 'Bearer ' + editor.data.token);
-                       xhr.onload = function(e) {
-                               if (xhr.readyState === 4) {
-                                       if (xhr.status === 201) {
-                                               editor.setStatus('Variable created at ' + JSON.parse(xhr.response).createdAt +
-                                                       ' (' + xhr.status + ' ' + xhr.statusText + ')');
-                                       } else {
-                                               editor.setStatus('Error cloning project: ' +
-                                                       JSON.parse(xhr.response).errors[0].message);
-                                       }
-                               }
-                       };
-                       xhr.onerror = function(e) {
-                               mxUtils.alert(xhr.statusText);
-                       };
-                       xhr.send('name=' + name);
-               } catch (e) {
-                       this.editor.setStatus('Error creating variable');
-               }
-       } else {
-               this.editor.setStatus('Error creating variable');
-       }
-};
-
-/**
- * Returns the URL for a copy of this editor with no state.
- */
-EditorUi.prototype.getUrl = function(pathname) {
-       var href = (pathname != null) ? pathname : window.location.pathname;
-       var parms = (href.indexOf('?') > 0) ? 1 : 0;
-
-       // Removes template URL parameter for new blank diagram
-       for (var key in urlParams) {
-               if (parms == 0) {
-                       href += '?';
-               } else {
-                       href += '&';
-               }
-
-               href += key + '=' + urlParams[key];
-               parms++;
-       }
-
-       return href;
-};
-
-/**
- * Updates the states of the given undo/redo items.
- */
-EditorUi.prototype.addUndoListener = function() {
-       var undo = this.actions.get('undo');
-       var redo = this.actions.get('redo');
-
-       var undoMgr = this.editor.undoManager;
-
-       var undoListener = function() {
-               undo.setEnabled(undoMgr.canUndo());
-               redo.setEnabled(undoMgr.canRedo());
-       };
-
-       undoMgr.addListener(mxEvent.ADD, undoListener);
-       undoMgr.addListener(mxEvent.UNDO, undoListener);
-       undoMgr.addListener(mxEvent.REDO, undoListener);
-       undoMgr.addListener(mxEvent.CLEAR, undoListener);
-
-       // Updates the button states once
-       undoListener();
-};
-
-/**
- * Updates the states of the given toolbar items based on the selection.
- */
-EditorUi.prototype.addSelectionListener = function() {
-       var selectionListener = mxUtils.bind(this, function() {
-               var graph = this.editor.graph;
-               var selected = !graph.isSelectionEmpty();
-               var vertexSelected = false;
-               var edgeSelected = false;
-
-               var cells = graph.getSelectionCells();
-
-               if (cells != null) {
-                       for (var i = 0; i < cells.length; i++) {
-                               var cell = cells[i];
-
-                               if (graph.getModel().isEdge(cell)) {
-                                       edgeSelected = true;
-                               }
-
-                               if (graph.getModel().isVertex(cell)) {
-                                       vertexSelected = true;
-                               }
-
-                               if (edgeSelected && vertexSelected) {
-                                       break;
-                               }
-                       }
-               }
-
-               // Updates action states
-               var actions = ['cut', 'copy', 'delete', 'duplicate', 'bold', 'italic',
-                       'style', 'underline', 'toFront', 'toBack', 'dashed', 'rounded',
-                       'shadow',
-                       'tilt', 'autosize'
-               ];
-
-               for (var i = 0; i < actions.length; i++) {
-                       this.actions.get(actions[i]).setEnabled(selected);
-               }
-
-               this.actions.get('curved').setEnabled(edgeSelected);
-               this.actions.get('rotation').setEnabled(vertexSelected);
-               this.actions.get('wordWrap').setEnabled(vertexSelected);
-               this.actions.get('group').setEnabled(graph.getSelectionCount() > 1);
-               this.actions.get('ungroup').setEnabled(graph.getSelectionCount() == 1 &&
-                       graph.getModel().getChildCount(graph.getSelectionCell()) > 0);
-               var oneVertexSelected = vertexSelected && graph.getSelectionCount() == 1;
-               this.actions.get('removeFromGroup').setEnabled(oneVertexSelected &&
-                       graph.getModel().isVertex(graph.getModel().getParent(graph.getSelectionCell()))
-               );
-
-               // Updates menu states
-               var menus = ['fontFamily', 'fontSize', 'alignment', 'position', 'text',
-                       'format',
-                       'arrange', 'linewidth', 'spacing'
-               ];
-
-               for (var i = 0; i < menus.length; i++) {
-                       this.menus.get(menus[i]).setEnabled(selected);
-               }
-
-               menus = ['line', 'lineend', 'linestart'];
-
-               for (var i = 0; i < menus.length; i++) {
-                       this.menus.get(menus[i]).setEnabled(edgeSelected);
-               }
-
-               this.actions.get('setAsDefaultEdge').setEnabled(edgeSelected);
-
-               this.menus.get('align').setEnabled(graph.getSelectionCount() > 1);
-               this.menus.get('direction').setEnabled(vertexSelected || (edgeSelected &&
-                       graph.isLoop(graph.view.getState(graph.getSelectionCell()))));
-               this.menus.get('navigation').setEnabled(graph.foldingEnabled && ((graph.view
-                               .currentRoot != null) ||
-                       (graph.getSelectionCount() == 1 && graph.isValidRoot(graph.getSelectionCell()))
-               ));
-               this.actions.get('home').setEnabled(graph.view.currentRoot != null);
-               this.actions.get('exitGroup').setEnabled(graph.view.currentRoot != null);
-               var groupEnabled = graph.getSelectionCount() == 1 && graph.isValidRoot(
-                       graph.getSelectionCell());
-               this.actions.get('enterGroup').setEnabled(groupEnabled);
-               this.actions.get('expand').setEnabled(groupEnabled);
-               this.actions.get('collapse').setEnabled(groupEnabled);
-               this.actions.get('editLink').setEnabled(graph.getSelectionCount() == 1);
-               this.actions.get('openLink').setEnabled(graph.getSelectionCount() == 1 &&
-                       graph.getLinkForCell(graph.getSelectionCell()) != null);
-       });
-
-       this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,
-               selectionListener);
-       selectionListener();
-};
-
-/**
- * Refreshes the viewport.
- */
-EditorUi.prototype.refresh = function() {
-       var quirks = mxClient.IS_IE && (document.documentMode == null || document.documentMode ==
-               5);
-       var w = this.container.clientWidth;
-       var h = this.container.clientHeight;
-
-       if (this.container == document.body) {
-               w = document.body.clientWidth || document.documentElement.clientWidth;
-               h = (quirks) ? document.body.clientHeight || document.documentElement.clientHeight :
-                       document.documentElement.clientHeight;
-       }
-
-       var effHsplitPosition = Math.max(0, Math.min(this.hsplitPosition, w - this.splitSize -
-               20));
-       var effVsplitPosition = Math.max(0, Math.min(this.vsplitPosition, h - this.menubarHeight -
-               this.toolbarHeight - this.footerHeight - this.splitSize - 1));
-
-       this.menubarContainer.style.height = this.menubarHeight + 'px';
-       this.toolbarContainer.style.top = this.menubarHeight + 'px';
-       this.toolbarContainer.style.height = this.toolbarHeight + 'px';
-
-       var tmp = this.menubarHeight + this.toolbarHeight;
-
-       if (!mxClient.IS_QUIRKS) {
-               tmp += 1;
-       }
-
-       this.sidebarContainer.style.top = tmp + 'px';
-       this.sidebarContainer.style.width = effHsplitPosition + 'px';
-       this.outlineContainer.style.width = effHsplitPosition + 'px';
-       this.outlineContainer.style.height = effVsplitPosition + 'px';
-       this.outlineContainer.style.bottom = this.footerHeight + 'px';
-       this.diagramContainer.style.left = (effHsplitPosition + this.splitSize) +
-               'px';
-       this.diagramContainer.style.top = this.sidebarContainer.style.top;
-       this.footerContainer.style.height = this.footerHeight + 'px';
-       this.footerContainer.style.display = 'none';
-       this.hsplit.style.top = this.sidebarContainer.style.top;
-       this.hsplit.style.bottom = this.outlineContainer.style.bottom;
-       this.hsplit.style.left = effHsplitPosition + 'px';
-       this.vsplit.style.width = this.sidebarContainer.style.width;
-       this.vsplit.style.bottom = (effVsplitPosition + this.footerHeight) + 'px';
-
-       if (quirks) {
-               this.menubarContainer.style.width = w + 'px';
-               this.toolbarContainer.style.width = this.menubarContainer.style.width;
-               var sidebarHeight = (h - effVsplitPosition - this.splitSize - this.footerHeight -
-                       this.menubarHeight - this.toolbarHeight);
-               this.sidebarContainer.style.height = sidebarHeight + 'px';
-               this.diagramContainer.style.width = (w - effHsplitPosition - this.splitSize) +
-                       'px';
-               var diagramHeight = (h - this.footerHeight - this.menubarHeight - this.toolbarHeight);
-               this.diagramContainer.style.height = diagramHeight + 'px';
-               this.footerContainer.style.width = this.menubarContainer.style.width;
-               this.hsplit.style.height = diagramHeight + 'px';
-       } else {
-               this.sidebarContainer.style.bottom = (effVsplitPosition + this.splitSize +
-                       this.footerHeight) + 'px';
-               this.diagramContainer.style.bottom = this.outlineContainer.style.bottom;
-       }
-};
-
-/**
- * Creates the required containers.
- */
-EditorUi.prototype.createDivs = function() {
-       this.menubarContainer = this.createDiv('geMenubarContainer');
-       this.toolbarContainer = this.createDiv('geToolbarContainer');
-       this.sidebarContainer = this.createDiv('geSidebarContainer');
-       this.outlineContainer = this.createDiv('geOutlineContainer');
-       this.diagramContainer = this.createDiv('geDiagramContainer');
-       this.footerContainer = this.createDiv('geFooterContainer');
-       this.hsplit = this.createDiv('geHsplit');
-       this.vsplit = this.createDiv('geVsplit');
-
-       // Sets static style for containers
-       this.menubarContainer.style.top = '0px';
-       this.menubarContainer.style.left = '0px';
-       this.menubarContainer.style.right = '0px';
-       this.toolbarContainer.style.left = '0px';
-       this.toolbarContainer.style.right = '0px';
-       this.sidebarContainer.style.left = '0px';
-       this.outlineContainer.style.left = '0px';
-       this.diagramContainer.style.right = '0px';
-       this.footerContainer.style.left = '0px';
-       this.footerContainer.style.right = '0px';
-       this.footerContainer.style.bottom = '0px';
-       this.vsplit.style.left = '0px';
-       this.vsplit.style.height = this.splitSize + 'px';
-       this.hsplit.style.width = this.splitSize + 'px';
-};
-
-/**
- * Creates the required containers.
- */
-EditorUi.prototype.createUi = function() {
-       // Creates menubar
-       this.menubar = this.menus.createMenubar(this.createDiv('geMenubar'));
-       this.menubarContainer.appendChild(this.menubar.container);
-
-       // Creates toolbar
-       this.toolbar = this.createToolbar(this.createDiv('geToolbar'));
-       this.toolbarContainer.appendChild(this.toolbar.container);
-
-       // Creates the sidebar
-       this.sidebar = this.createSidebar(this.sidebarContainer);
-
-       // Creates the footer
-       this.footerContainer.appendChild(this.createFooter());
-
-       // Adds status bar in menubar
-       this.statusContainer = this.createStatusContainer();
-
-       // Connects the status bar to the editor status
-       this.editor.addListener('statusChanged', mxUtils.bind(this, function() {
-               this.setStatusText(this.editor.getStatus());
-       }));
-
-       this.setStatusText(this.editor.getStatus());
-       this.menubar.container.appendChild(this.statusContainer);
-
-       // Inserts into DOM
-       this.container.appendChild(this.menubarContainer);
-       this.container.appendChild(this.toolbarContainer);
-       this.container.appendChild(this.sidebarContainer);
-       this.container.appendChild(this.outlineContainer);
-       this.container.appendChild(this.diagramContainer);
-       this.container.appendChild(this.footerContainer);
-       this.container.appendChild(this.hsplit);
-       this.container.appendChild(this.vsplit);
-
-       // HSplit
-       this.addSplitHandler(this.hsplit, true, 0, mxUtils.bind(this, function(
-               value) {
-               this.hsplitPosition = value;
-               this.refresh();
-               this.editor.graph.sizeDidChange();
-               this.editor.outline.update(false);
-               this.editor.outline.outline.sizeDidChange();
-       }));
-
-       // VSplit
-       this.addSplitHandler(this.vsplit, false, this.footerHeight, mxUtils.bind(
-               this,
-               function(value) {
-                       this.vsplitPosition = value;
-                       this.refresh();
-                       this.editor.outline.update(false);
-                       this.editor.outline.outline.sizeDidChange();
-               }));
-};
-
-/**
- * Creates a new toolbar for the given container.
- */
-EditorUi.prototype.createStatusContainer = function() {
-       var container = document.createElement('a');
-       container.className = 'geItem geStatus';
-
-       return container;
-};
-
-/**
- * Creates a new toolbar for the given container.
- */
-EditorUi.prototype.createStatusContainer = function() {
-       var container = document.createElement('a');
-       container.className = 'geItem geStatus';
-
-       return container;
-};
-
-/**
- * Creates a new toolbar for the given container.
- */
-EditorUi.prototype.setStatusText = function(value) {
-       this.statusContainer.innerHTML = value;
-};
-
-/**
- * Creates a new toolbar for the given container.
- */
-EditorUi.prototype.createToolbar = function(container) {
-       return new Toolbar(this, container);
-};
-
-/**
- * Creates a new sidebar for the given container.
- */
-EditorUi.prototype.createSidebar = function(container) {
-       return new Sidebar(this, container);
-};
-
-/**
- * Creates and returns a new footer.
- */
-EditorUi.prototype.createFooter = function() {
-       return this.createDiv('geFooter');
-};
-
-/**
- * Creates the actual toolbar for the toolbar container.
- */
-EditorUi.prototype.createDiv = function(classname) {
-       var elt = document.createElement('div');
-       elt.className = classname;
-
-       return elt;
-};
-
-/**
- * Creates the custom header.
- */
-EditorUi.prototype.createHeader = function(classname) {
-       var elt = document.createElement(classname);
-       return elt;
-};
-
-/**
- * Creates the custom header.
- */
-EditorUi.prototype.createForm = function(classname) {
-       var elt = document.createElement('form');
-       elt.className = classname;
-
-       return elt;
-};
-
-/**
- * Updates the states of the given undo/redo items.
- */
-EditorUi.prototype.addSplitHandler = function(elt, horizontal, dx, onChange) {
-       var start = null;
-       var initial = null;
-
-       function getValue() {
-               return parseInt(((horizontal) ? elt.style.left : elt.style.bottom));
-       };
-
-       function moveHandler(evt) {
-               if (start != null) {
-                       var pt = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt));
-                       onChange(Math.max(0, initial + ((horizontal) ? (pt.x - start.x) : (start.y -
-                               pt.y)) - dx));
-                       mxEvent.consume(evt);
-               }
-       };
-
-       function dropHandler(evt) {
-               moveHandler(evt);
-               start = null;
-               initial = null;
-       };
-
-       mxEvent.addGestureListeners(elt, function(evt) {
-               start = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt));
-               initial = getValue();
-               mxEvent.consume(evt);
-       });
-
-       mxEvent.addListener(document, 'mousemove', moveHandler);
-       mxEvent.addListener(document, 'touchmove', moveHandler);
-       mxEvent.addListener(document, 'mouseup', dropHandler);
-       mxEvent.addListener(document, 'touchend', dropHandler);
-};
-
-/**
- * Displays a print dialog.
- */
-EditorUi.prototype.showDialog = function(elt, w, h, modal, closable, onClose) {
-       this.hideDialog();
-       this.dialog = new Dialog(this, elt, w, (mxClient.IS_VML) ? h - 12 : h,
-               modal,
-               closable, onClose);
-};
-
-/**
- * Displays a print dialog.
- */
-EditorUi.prototype.hideDialog = function() {
-       if (this.dialog != null) {
-               this.dialog.close();
-               this.dialog = null;
-               this.editor.graph.container.focus();
-       }
-};
-
-/**
- * Adds the label menu items to the given menu and parent.
- */
-EditorUi.prototype.saveFile = function(forceDialog) {
-       if (!forceDialog && this.editor.filename != null) {
-               this.save(this.editor.getOrCreateFilename());
-       } else {
-               this.showDialog(new SaveDialog(this).container, 300, 100, true, true);
-       }
-};
-
-/**
- * Adds the label menu items to the given menu and parent.
- */
-EditorUi.prototype.publishFile = function(forceDialog) {
-       if (!forceDialog && this.editor.filename != null) {
-               this.publish(this.editor.getOrCreateFilename());
-       } else {
-               //this.showDialog(new SaveDialog(this).container, 300, 100, true, true);
-       }
-};
-
-/**
- * Executes the given layout.
- */
-EditorUi.prototype.executeLayout = function(layout, animate, ignoreChildCount) {
-       var graph = this.editor.graph;
-       var cell = graph.getSelectionCell();
-
-       // Allow global overridding of animation
-       animate = this.animate != null ? this.animate : animate;
-
-       graph.getModel().beginUpdate();
-       try {
-               layout.execute(graph.getDefaultParent(), cell);
-       } catch (e) {
-               throw e;
-       } finally {
-               // Animates the changes in the graph model except
-               // for Camino, where animation is too slow
-               if (animate && navigator.userAgent.indexOf('Camino') < 0) {
-                       // New API for animating graph layout results asynchronously
-                       var morph = new mxMorphing(graph);
-                       morph.addListener(mxEvent.DONE, mxUtils.bind(this, function() {
-                               graph.getModel().endUpdate();
-                       }));
-
-                       morph.startAnimation();
-               } else {
-                       graph.getModel().endUpdate();
-               }
-       }
-};
-
-/**
- * Creates the keyboard event handler for the current graph and history.
- */
-EditorUi.prototype.createKeyHandler = function(editor) {
-       var graph = this.editor.graph;
-       var keyHandler = new mxKeyHandler(graph);
-
-       // Routes command-key to control-key on Mac
-       keyHandler.isControlDown = function(evt) {
-               return mxEvent.isControlDown(evt) || (mxClient.IS_MAC && evt.metaKey);
-       };
-
-       // Helper function to move cells with the cursor keys
-       function nudge(keyCode) {
-               if (!graph.isSelectionEmpty()) {
-                       var dx = 0;
-                       var dy = 0;
-
-                       if (keyCode == 37) {
-                               dx = -1;
-                       } else if (keyCode == 38) {
-                               dy = -1;
-                       } else if (keyCode == 39) {
-                               dx = 1;
-                       } else if (keyCode == 40) {
-                               dy = 1;
-                       }
-
-                       graph.moveCells(graph.getSelectionCells(), dx, dy);
-                       graph.scrollCellToVisible(graph.getSelectionCell());
-               }
-       };
-
-       // Binds keystrokes to actions
-       var bindAction = mxUtils.bind(this, function(code, control, key, shift) {
-               var action = this.actions.get(key);
-
-               if (action != null) {
-                       var f = function() {
-                               if (action.enabled) {
-                                       action.funct();
-                               }
-                       };
-
-                       if (control) {
-                               if (shift) {
-                                       keyHandler.bindControlShiftKey(code, f);
-                               } else {
-                                       keyHandler.bindControlKey(code, f);
-                               }
-                       } else {
-                               if (shift) {
-                                       keyHandler.bindShiftKey(code, f);
-                               } else {
-                                       keyHandler.bindKey(code, f);
-                               }
-                       }
-               }
-       });
-
-       var ui = this;
-       var keyHandleEscape = keyHandler.escape;
-       keyHandler.escape = function(evt) {
-               ui.hideDialog();
-               keyHandleEscape.apply(this, arguments);
-       };
-
-       // Ignores enter keystroke. Remove this line if you want the
-       // enter keystroke to stop editing.
-       keyHandler.enter = function() {};
-       keyHandler.bindKey(8, function() {
-               graph.foldCells(true);
-       }); // Backspace
-       keyHandler.bindKey(13, function() {
-               graph.foldCells(false);
-       }); // Enter
-       keyHandler.bindKey(33, function() {
-               graph.exitGroup();
-       }); // Page Up
-       keyHandler.bindKey(34, function() {
-               graph.enterGroup();
-       }); // Page Down
-       keyHandler.bindKey(36, function() {
-               graph.home();
-       }); // Home
-       keyHandler.bindKey(35, function() {
-               graph.refresh();
-       }); // End
-       keyHandler.bindKey(37, function() {
-               nudge(37);
-       }); // Left arrow
-       keyHandler.bindKey(38, function() {
-               nudge(38);
-       }); // Up arrow
-       keyHandler.bindKey(39, function() {
-               nudge(39);
-       }); // Right arrow
-       keyHandler.bindKey(40, function() {
-               nudge(40);
-       }); // Down arrow
-       keyHandler.bindKey(113, function() {
-               graph.startEditingAtCell();
-       });
-       bindAction(46, false, 'delete'); // Delete
-       bindAction(82, true, 'tilt'); // Ctrl+R
-       bindAction(83, true, 'save'); // Ctrl+S
-       bindAction(83, true, 'saveAs', true); // Ctrl+Shift+S
-       bindAction(107, false, 'zoomIn'); // Add
-       bindAction(109, false, 'zoomOut'); // Subtract
-       bindAction(65, true, 'selectAll'); // Ctrl+A
-       bindAction(86, true, 'selectVertices', true); // Ctrl+Shift+V
-       bindAction(69, true, 'selectEdges', true); // Ctrl+Shift+E
-       bindAction(69, true, 'export'); // Ctrl+Shift+E
-       bindAction(66, true, 'toBack'); // Ctrl+B
-       bindAction(70, true, 'toFront'); // Ctrl+F
-       bindAction(68, true, 'duplicate'); // Ctrl+D
-       bindAction(90, true, 'undo'); // Ctrl+Z
-       bindAction(89, true, 'redo'); // Ctrl+Y
-       bindAction(88, true, 'cut'); // Ctrl+X
-       bindAction(67, true, 'copy'); // Ctrl+C
-       bindAction(81, true, 'connect'); // Ctrl+Q
-       bindAction(86, true, 'paste'); // Ctrl+V
-       bindAction(71, true, 'group'); // Ctrl+G
-       bindAction(71, true, 'grid', true); // Ctrl+Shift+G
-       bindAction(85, true, 'ungroup'); // Ctrl+U
-       bindAction(112, false, 'about'); // F1
-       bindAction(80, true, 'publish', true); // Ctrl+Shift+P
-
-       return keyHandler;
-};
-
-/**
- * Giuseppe Careri
- * Creates a new toolbar for the given container.
- */
-EditorUi.prototype.createMultiplicities = function(graph, cells, source,
-       target) {
-       for (var i = 0; i < cells.length; i++) {
-               graph.push(new mxMultiplicity(true, cells[i], null, null, source[i][0],
-                       source[i][1], null, mxResources.get(cells[i]) + ' must have ' + source[i][0] + ' outcoming edge.', null));
-               graph.push(new mxMultiplicity(false, cells[i], null, null, target[i][0],
-                       target[i][1], null, mxResources.get(cells[i]) + ' must have ' + target[i][0] + ' incoming edge.', null));
-       };
-};
+var _0xedc0=["\x65\x64\x69\x74\x6F\x72","\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x45\x64\x69\x74\x6F\x72","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x67\x72\x61\x70\x68","\x6F\x76\x65\x72\x66\x6C\x6F\x77","\x73\x74\x79\x6C\x65","\x68\x69\x64\x64\x65\x6E","\x73\x72\x63","\x73\x75\x62\x6D\x65\x6E\x75\x49\x6D\x61\x67\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x63\x6F\x6E\x6E\x65\x63\x74\x49\x6D\x61\x67\x65","\x61\x63\x74\x69\x6F\x6E\x73","\x6D\x65\x6E\x75\x73","\x63\x72\x65\x61\x74\x65\x44\x69\x76\x73","\x72\x65\x66\x72\x65\x73\x68","\x63\x72\x65\x61\x74\x65\x55\x69","\x65\x76\x65\x6E\x74","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x41\x6C\x6C\x6F\x77\x65\x64","\x69\x73\x45\x64\x69\x74\x69\x6E\x67","\x62\x69\x6E\x64","\x62\x6F\x64\x79","\x6F\x6E\x73\x65\x6C\x65\x63\x74\x73\x74\x61\x72\x74","\x6D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x6E\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E","\x74\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x64\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x66\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x49\x53\x5F\x49\x45","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x61\x64\x64\x4C\x69\x73\x74\x65\x6E\x65\x72","\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\x75","\x69\x6E\x69\x74","\x74\x61\x62\x69\x6E\x64\x65\x78","\x30","\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x63\x75\x72\x73\x6F\x72","\x64\x65\x66\x61\x75\x6C\x74","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65","\x75\x72\x6C\x28","\x67\x72\x69\x64\x49\x6D\x61\x67\x65","\x29","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x2D\x31\x70\x78\x20\x2D\x31\x70\x78","\x66\x6F\x63\x75\x73","\x66\x69\x72\x65\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74","\x4D\x4F\x55\x53\x45\x5F\x44\x4F\x57\x4E","\x61\x70\x70\x6C\x79","\x6D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x73\x74\x61\x72\x74","\x66\x69\x6E\x61\x6C\x6C\x79","\x65\x6E\x64","\x6E","\x63\x72\x65\x61\x74\x65\x4D\x75\x6C\x74\x69\x70\x6C\x69\x63\x69\x74\x69\x65\x73","\x61\x6E\x73\x77\x65\x72","\x68\x61\x6E\x67\x75\x70","\x64\x69\x61\x6C","\x65\x78\x74\x5F\x64\x69\x61\x6C","\x71\x75\x65\x75\x65","\x76\x6F\x69\x63\x65\x6D\x61\x69\x6C","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x73\x65\x74","\x6D\x61\x74\x68","\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64","\x70\x6C\x61\x79\x62\x61\x63\x6B","\x6D\x65\x6E\x75","\x73\x61\x79\x64\x69\x67\x69\x74\x73","\x73\x61\x79\x6E\x75\x6D\x62\x65\x72","\x73\x61\x79\x70\x68\x6F\x6E\x65\x74\x69\x63","\x74\x74\x73","\x69\x73\x70\x65\x65\x63\x68\x74\x74\x73","\x67\x65\x74\x64\x69\x67\x69\x74\x73","\x72\x65\x63\x6F\x72\x64","\x64\x61\x74\x61\x62\x61\x73\x65","\x69\x73\x70\x65\x65\x63\x68\x61\x73\x72","\x67\x6F\x74\x6F\x63","\x67\x6F\x74\x6F\x69\x66","\x67\x6F\x74\x6F\x69\x66\x74\x69\x6D\x65","\x67\x6F\x74\x6F\x69\x66\x6D\x75\x6C\x74\x69\x74\x69\x6D\x65","\x76\x73\x77\x69\x74\x63\x68","\x71\x75\x65\x75\x65\x6C\x6F\x67","\x67\x6F\x61\x6C","\x6E\x6F\x6F\x70","\x73\x79\x73\x74\x65\x6D","\x61\x67\x69","\x73\x75\x62\x70\x72\x6F\x6A\x65\x63\x74","\x63\x75\x73\x74\x6F\x6D\x5F\x61\x70\x70","\x64\x62\x6C\x43\x6C\x69\x63\x6B","\x63\x65\x6C\x6C","\x66\x69\x72\x65\x45\x76\x65\x6E\x74","\x69\x73\x45\x6E\x61\x62\x6C\x65\x64","\x69\x73\x43\x6F\x6E\x73\x75\x6D\x65\x64","\x69\x73\x45\x64\x67\x65","\x67\x65\x74\x4D\x6F\x64\x65\x6C","\x74\x61\x67\x4E\x61\x6D\x65","\x76\x61\x6C\x75\x65","\x73\x6F\x75\x72\x63\x65","\x69\x6E\x64\x65\x78\x4F\x66","\x73\x74\x61\x72\x74\x45\x64\x69\x74\x69\x6E\x67\x41\x74\x43\x65\x6C\x6C","\x69\x73\x56\x65\x72\x74\x65\x78","\x6C\x6F\x67","\x73\x68\x6F\x77\x44\x69\x61\x6C\x6F\x67","\x63\x6F\x6E\x73\x75\x6D\x65","\x61\x75\x74\x6F\x45\x78\x70\x61\x6E\x64","\x70\x61\x6E\x6E\x69\x6E\x67\x48\x61\x6E\x64\x6C\x65\x72","\x66\x61\x63\x74\x6F\x72\x79\x4D\x65\x74\x68\x6F\x64","\x63\x72\x65\x61\x74\x65\x50\x6F\x70\x75\x70\x4D\x65\x6E\x75","\x6F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x6F\x75\x74\x6C\x69\x6E\x65","\x68\x69\x64\x65\x4D\x65\x6E\x75","\x61\x64\x64\x47\x65\x73\x74\x75\x72\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73","\x49\x53\x5F\x54\x4F\x55\x43\x48","\x67\x65\x73\x74\x75\x72\x65\x63\x68\x61\x6E\x67\x65","\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D","\x73\x63\x61\x6C\x65\x28","\x73\x63\x61\x6C\x65","\x67\x65\x74\x44\x72\x61\x77\x50\x61\x6E\x65","\x76\x69\x65\x77","\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79","\x67\x65\x74\x4F\x76\x65\x72\x6C\x61\x79\x50\x61\x6E\x65","\x67\x65\x73\x74\x75\x72\x65\x65\x6E\x64","\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x7A\x6F\x6F\x6D\x54\x6F\x43\x65\x6E\x74\x65\x72","\x7A\x6F\x6F\x6D","\x76\x69\x73\x69\x62\x6C\x65","\x63\x72\x65\x61\x74\x65\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x67\x65\x74\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72","\x72\x65\x73\x69\x7A\x65","\x73\x69\x7A\x65\x44\x69\x64\x43\x68\x61\x6E\x67\x65","\x75\x70\x64\x61\x74\x65","\x6F\x70\x65\x6E","\x73\x70\x6C\x69\x74\x53\x69\x7A\x65","\x6D\x65\x6E\x75\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x74\x6F\x6F\x6C\x62\x61\x72\x48\x65\x69\x67\x68\x74","\x66\x6F\x6F\x74\x65\x72\x48\x65\x69\x67\x68\x74","\x68\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x76\x73\x70\x6C\x69\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E","\x61\x64\x64\x55\x6E\x64\x6F\x4C\x69\x73\x74\x65\x6E\x65\x72","\x61\x64\x64\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4C\x69\x73\x74\x65\x6E\x65\x72","\x70\x61\x73\x74\x65","\x67\x65\x74","\x69\x73\x45\x6D\x70\x74\x79","\x73\x65\x74\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x74","\x63\x6F\x70\x79","\x6F\x70\x65\x6E\x65\x72","\x6F\x70\x65\x6E\x46\x69\x6C\x65","\x70\x61\x72\x73\x65\x58\x6D\x6C","\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x6D\x6F\x64\x69\x66\x69\x65\x64","\x63\x6C\x65\x61\x72","\x75\x6E\x64\x6F\x4D\x61\x6E\x61\x67\x65\x72","\x66\x69\x6C\x65\x6E\x61\x6D\x65","\x69\x6E\x76\x61\x6C\x69\x64\x4F\x72\x4D\x69\x73\x73\x69\x6E\x67\x46\x69\x6C\x65","\x3A\x20","\x6D\x65\x73\x73\x61\x67\x65","\x61\x6C\x65\x72\x74","\x73\x65\x74\x43\x6F\x6E\x73\x75\x6D\x65\x72","\x6F\x70\x65\x6E\x53\x74\x72\x69\x6E\x67","\x64\x61\x74\x61","\x6E\x65\x77","\x67\x65\x74\x47\x72\x61\x70\x68\x58\x6D\x6C","\x67\x65\x74\x50\x72\x65\x74\x74\x79\x58\x6D\x6C","\x67\x65\x74\x49\x74\x65\x6D","\x72\x65\x70\x6C\x61\x63\x65","\x63\x6F\x6E\x66\x69\x72\x6D","\x73\x65\x74\x49\x74\x65\x6D","\x73\x61\x76\x65\x64","\x20","\x73\x65\x74\x53\x74\x61\x74\x75\x73","\x6C\x65\x6E\x67\x74\x68","\x50\x4F\x53\x54","\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x78\x2D\x77\x77\x77\x2D\x66\x6F\x72\x6D\x2D\x75\x72\x6C\x65\x6E\x63\x6F\x64\x65\x64","\x73\x65\x74\x52\x65\x71\x75\x65\x73\x74\x48\x65\x61\x64\x65\x72","\x41\x75\x74\x68\x6F\x72\x69\x7A\x61\x74\x69\x6F\x6E","\x42\x65\x61\x72\x65\x72\x20","\x74\x6F\x6B\x65\x6E","\x6F\x6E\x6C\x6F\x61\x64","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x73\x74\x61\x74\x75\x73","\x50\x72\x6F\x6A\x65\x63\x74\x20","\x6E\x61\x6D\x65","\x72\x65\x73\x70\x6F\x6E\x73\x65","\x70\x61\x72\x73\x65","\x20\x69\x73\x20\x6F\x70\x65\x6E\x69\x6E\x67\x20\x69\x6E\x20\x6E\x65\x77\x20\x77\x69\x6E\x64\x6F\x77\x21","\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x2F","\x69\x64","\x5F\x62\x6C\x61\x6E\x6B","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x65\x72\x72\x6F\x72\x73","\x6F\x6E\x65\x72\x72\x6F\x72","\x73\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x6E\x65\x77\x26\x6E\x61\x6D\x65\x3D","\x73\x65\x6E\x64","\x64\x72\x61\x77\x69\x6E\x67\x54\x6F\x6F\x4C\x61\x72\x67\x65","\x70\x6F\x70\x75\x70","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74","\x73\x61\x76\x65","\x50\x55\x54","\x55\x70\x64\x61\x74\x65\x64\x20\x61\x74\x20","\x75\x70\x64\x61\x74\x65\x64\x41\x74","\x20\x28","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x70\x72\x65\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x45\x72\x72\x6F\x72\x20\x73\x61\x76\x69\x6E\x67\x20\x66\x69\x6C\x65","\x73\x61\x76\x65\x41\x73","\x73\x71\x75\x61\x72\x65\x2F\x70\x72\x6F\x6A\x65\x63\x74\x73\x2F\x76\x69\x65\x77\x2F","\x45\x72\x72\x6F\x72\x20\x63\x6C\x6F\x6E\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E\x3D\x70\x72\x6F\x6A\x65\x63\x74\x5F\x63\x6C\x6F\x6E\x65\x64\x26\x6E\x61\x6D\x65\x3D","\x26\x70\x72\x65\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x26\x70\x72\x6F\x64\x75\x63\x74\x69\x6F\x6E\x3D","\x76\x61\x6C\x69\x64\x61\x74\x65","\x67\x65\x74\x52\x6F\x6F\x74","\x6D\x6F\x64\x65\x6C","\x67\x65\x74\x43\x68\x69\x6C\x64\x43\x6F\x75\x6E\x74","\x67\x65\x74\x43\x68\x69\x6C\x64\x41\x74","\x69\x73\x56\x61\x6C\x69\x64\x52\x6F\x6F\x74","\x3C\x62\x72\x3E","\x73\x65\x74\x43\x65\x6C\x6C\x57\x61\x72\x6E\x69\x6E\x67","","\x76\x61\x6C\x69\x64\x61\x74\x65\x42\x6C\x6F\x63\x6B","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x53\x74\x61\x72\x74\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x0A","\x4F\x6E\x6C\x79\x20\x6F\x6E\x65\x20\x46\x69\x6E\x61\x6C\x6C\x79\x20\x62\x6C\x6F\x63\x6B\x20\x69\x73\x20\x61\x6C\x6C\x6F\x77\x65\x64","\x66\x69\x6C\x65\x5F\x69\x64","\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65","\x6E\x6F\x41\x75\x64\x69\x6F\x53\x65\x6C\x65\x63\x74\x65\x64","\x64\x69\x67\x69\x74","\x77\x72\x6F\x6E\x67\x4D\x61\x78\x44\x69\x67\x69\x74","\x76\x61\x72\x69\x61\x62\x6C\x65\x5F\x69\x64","\x6E\x6F\x56\x61\x72\x69\x61\x62\x6C\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x69\x6E\x64\x69\x67\x69\x74","\x77\x72\x6F\x6E\x67\x4D\x69\x6E\x44\x69\x67\x69\x74","\x6D\x61\x78\x64\x69\x67\x69\x74","\x76\x61\x72\x69\x61\x62\x6C\x65","\x6F\x64\x62\x63\x5F\x69\x64","\x6E\x6F\x44\x61\x74\x61\x62\x61\x73\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x72\x75\x6E\x6B\x5F\x6E\x61\x6D\x65","\x2D\x31","\x6E\x6F\x54\x72\x75\x6E\x6B\x53\x65\x6C\x65\x63\x74\x65\x64","\x65\x78\x74\x65\x6E\x73\x69\x6F\x6E","\x6E\x6F\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x6F\x6D\x6D\x61\x6E\x64","\x6E\x6F\x43\x6F\x6D\x6D\x61\x6E\x64\x53\x65\x6C\x65\x63\x74\x65\x64","\x63\x6F\x6E\x64\x69\x74\x69\x6F\x6E","\x6E\x6F\x43\x6F\x6E\x64\x69\x74\x69\x6F\x6E\x53\x65\x6C\x65\x63\x74\x65\x64","\x64\x69\x67\x69\x74\x73","\x6E\x6F\x44\x69\x67\x69\x74\x73\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x75\x6D\x62\x65\x72","\x6E\x6F\x4E\x75\x6D\x62\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x65\x78\x74","\x6E\x6F\x54\x65\x78\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x66\x69\x6C\x65","\x6E\x6F\x46\x69\x6C\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x67\x6F\x61\x6C\x6E\x61\x6D\x65","\x6E\x6F\x47\x6F\x61\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x70\x68\x6F\x6E\x65","\x6E\x6F\x49\x64\x65\x6E\x74\x69\x66\x69\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x73\x69\x70\x5F\x69\x64","\x71\x75\x65\x75\x65\x5F\x69\x64","\x6E\x6F\x51\x75\x65\x75\x65\x53\x65\x6C\x65\x63\x74\x65\x64","\x6C\x69\x73\x74\x5F\x69\x64","\x6E\x6F\x4C\x69\x73\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x69\x6E\x74\x65\x72\x76\x61\x6C\x5F\x69\x64","\x6E\x6F\x49\x6E\x74\x65\x72\x76\x61\x6C\x53\x65\x6C\x65\x63\x74\x65\x64","\x6D\x61\x69\x6C\x62\x6F\x78","\x6E\x6F\x42\x6F\x78\x4E\x75\x6D\x62\x65\x72\x53\x65\x6C\x65\x63\x74\x65\x64","\x70\x72\x6F\x6A\x65\x63\x74\x5F\x69\x64","\x6E\x6F\x50\x72\x6F\x6A\x65\x63\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x61\x63\x63\x6F\x75\x6E\x74\x5F\x69\x64","\x6E\x6F\x41\x63\x63\x6F\x75\x6E\x74\x53\x65\x6C\x65\x63\x74\x65\x64","\x74\x6F","\x73\x6D\x73\x5F\x74\x65\x78\x74","\x73\x6D\x73","\x6B\x65\x79","\x6E\x6F\x4B\x65\x79\x53\x65\x6C\x65\x63\x74\x65\x64","\x6E\x6F\x64\x65\x4E\x61\x6D\x65","\x67\x65\x74\x49\x64","\x67\x65\x74\x43\x65\x6C\x6C","\x67\x65\x74\x56\x61\x6C\x75\x65","\x74\x65\x73\x74","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x49\x6E\x76\x61\x6C\x69\x64\x4F\x72\x54\x69\x6D\x65\x6F\x75\x74","\x2C","\x73\x70\x6C\x69\x74","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x41\x6C\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x6E\x75\x6D\x62\x65\x72\x4F\x72\x49\x6E\x76\x61\x6C\x69\x64\x4F\x72\x44\x65\x66\x61\x75\x6C\x74","\x74\x72\x75\x65\x4F\x72\x46\x61\x6C\x73\x65","\x69\x73\x43\x65\x6C\x6C\x43\x6F\x6C\x6C\x61\x70\x73\x65\x64","\x63\x6F\x6E\x74\x61\x69\x6E\x73\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72\x73\x52\x65\x73\x6F\x75\x72\x63\x65","\x67\x65\x74\x54\x65\x72\x6D\x69\x6E\x61\x6C","\x67\x65\x74\x45\x64\x67\x65\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x67\x65\x74\x43\x65\x6C\x6C\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x45\x72\x72\x6F\x72","\x76\x61\x6C\x69\x64\x61\x74\x65\x43\x65\x6C\x6C","\x67\x65\x74\x50\x61\x72\x65\x6E\x74","\x67\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x50\x61\x72\x65\x6E\x74","\x63\x68\x69\x6C\x64\x72\x65\x6E","\x70\x75\x62\x6C\x69\x73\x68","\x50\x75\x62\x6C\x69\x73\x68\x65\x64\x20\x61\x74\x20","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x66\x69\x6C\x65","\x45\x72\x72\x6F\x72\x20\x70\x75\x62\x6C\x69\x73\x68\x69\x6E\x67\x20\x70\x72\x6F\x6A\x65\x63\x74\x3A\x20","\x56\x61\x72\x69\x61\x62\x6C\x65\x20\x63\x72\x65\x61\x74\x65\x64\x20\x61\x74\x20","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65\x3A\x20","\x6E\x61\x6D\x65\x3D","\x45\x72\x72\x6F\x72\x20\x63\x72\x65\x61\x74\x69\x6E\x67\x20\x76\x61\x72\x69\x61\x62\x6C\x65","\x67\x65\x74\x55\x72\x6C","\x70\x61\x74\x68\x6E\x61\x6D\x65","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x3F","\x26","\x3D","\x75\x6E\x64\x6F","\x72\x65\x64\x6F","\x63\x61\x6E\x55\x6E\x64\x6F","\x63\x61\x6E\x52\x65\x64\x6F","\x69\x73\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x45\x6D\x70\x74\x79","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C\x73","\x64\x65\x6C\x65\x74\x65","\x64\x75\x70\x6C\x69\x63\x61\x74\x65","\x62\x6F\x6C\x64","\x69\x74\x61\x6C\x69\x63","\x75\x6E\x64\x65\x72\x6C\x69\x6E\x65","\x74\x6F\x46\x72\x6F\x6E\x74","\x74\x6F\x42\x61\x63\x6B","\x64\x61\x73\x68\x65\x64","\x72\x6F\x75\x6E\x64\x65\x64","\x73\x68\x61\x64\x6F\x77","\x74\x69\x6C\x74","\x61\x75\x74\x6F\x73\x69\x7A\x65","\x63\x75\x72\x76\x65\x64","\x72\x6F\x74\x61\x74\x69\x6F\x6E","\x77\x6F\x72\x64\x57\x72\x61\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x6F\x75\x6E\x74","\x67\x72\x6F\x75\x70","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x43\x65\x6C\x6C","\x75\x6E\x67\x72\x6F\x75\x70","\x72\x65\x6D\x6F\x76\x65\x46\x72\x6F\x6D\x47\x72\x6F\x75\x70","\x66\x6F\x6E\x74\x46\x61\x6D\x69\x6C\x79","\x66\x6F\x6E\x74\x53\x69\x7A\x65","\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74","\x70\x6F\x73\x69\x74\x69\x6F\x6E","\x66\x6F\x72\x6D\x61\x74","\x61\x72\x72\x61\x6E\x67\x65","\x6C\x69\x6E\x65\x77\x69\x64\x74\x68","\x73\x70\x61\x63\x69\x6E\x67","\x6C\x69\x6E\x65","\x6C\x69\x6E\x65\x65\x6E\x64","\x6C\x69\x6E\x65\x73\x74\x61\x72\x74","\x73\x65\x74\x41\x73\x44\x65\x66\x61\x75\x6C\x74\x45\x64\x67\x65","\x61\x6C\x69\x67\x6E","\x67\x65\x74\x53\x74\x61\x74\x65","\x69\x73\x4C\x6F\x6F\x70","\x64\x69\x72\x65\x63\x74\x69\x6F\x6E","\x66\x6F\x6C\x64\x69\x6E\x67\x45\x6E\x61\x62\x6C\x65\x64","\x63\x75\x72\x72\x65\x6E\x74\x52\x6F\x6F\x74","\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E","\x68\x6F\x6D\x65","\x65\x78\x69\x74\x47\x72\x6F\x75\x70","\x65\x6E\x74\x65\x72\x47\x72\x6F\x75\x70","\x65\x78\x70\x61\x6E\x64","\x63\x6F\x6C\x6C\x61\x70\x73\x65","\x65\x64\x69\x74\x4C\x69\x6E\x6B","\x67\x65\x74\x4C\x69\x6E\x6B\x46\x6F\x72\x43\x65\x6C\x6C","\x6F\x70\x65\x6E\x4C\x69\x6E\x6B","\x67\x65\x74\x53\x65\x6C\x65\x63\x74\x69\x6F\x6E\x4D\x6F\x64\x65\x6C","\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68","\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74","\x6D\x69\x6E","\x6D\x61\x78","\x68\x65\x69\x67\x68\x74","\x70\x78","\x74\x6F\x70","\x49\x53\x5F\x51\x55\x49\x52\x4B\x53","\x77\x69\x64\x74\x68","\x62\x6F\x74\x74\x6F\x6D","\x6C\x65\x66\x74","\x64\x69\x73\x70\x6C\x61\x79","\x6E\x6F\x6E\x65","\x68\x73\x70\x6C\x69\x74","\x76\x73\x70\x6C\x69\x74","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x44\x69\x76","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x53\x69\x64\x65\x62\x61\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x4F\x75\x74\x6C\x69\x6E\x65\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x44\x69\x61\x67\x72\x61\x6D\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x46\x6F\x6F\x74\x65\x72\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x67\x65\x48\x73\x70\x6C\x69\x74","\x67\x65\x56\x73\x70\x6C\x69\x74","\x30\x70\x78","\x72\x69\x67\x68\x74","\x6D\x65\x6E\x75\x62\x61\x72","\x67\x65\x4D\x65\x6E\x75\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x4D\x65\x6E\x75\x62\x61\x72","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x74\x6F\x6F\x6C\x62\x61\x72","\x67\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x54\x6F\x6F\x6C\x62\x61\x72","\x73\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x53\x69\x64\x65\x62\x61\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x6F\x74\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x63\x72\x65\x61\x74\x65\x53\x74\x61\x74\x75\x73\x43\x6F\x6E\x74\x61\x69\x6E\x65\x72","\x73\x74\x61\x74\x75\x73\x43\x68\x61\x6E\x67\x65\x64","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x74\x53\x74\x61\x74\x75\x73\x54\x65\x78\x74","\x61\x64\x64\x53\x70\x6C\x69\x74\x48\x61\x6E\x64\x6C\x65\x72","\x61","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65","\x67\x65\x49\x74\x65\x6D\x20\x67\x65\x53\x74\x61\x74\x75\x73","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x67\x65\x46\x6F\x6F\x74\x65\x72","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x48\x65\x61\x64\x65\x72","\x63\x72\x65\x61\x74\x65\x46\x6F\x72\x6D","\x66\x6F\x72\x6D","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x58","\x67\x65\x74\x43\x6C\x69\x65\x6E\x74\x59","\x78","\x79","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65","\x6D\x6F\x75\x73\x65\x75\x70","\x74\x6F\x75\x63\x68\x65\x6E\x64","\x68\x69\x64\x65\x44\x69\x61\x6C\x6F\x67","\x64\x69\x61\x6C\x6F\x67","\x49\x53\x5F\x56\x4D\x4C","\x63\x6C\x6F\x73\x65","\x73\x61\x76\x65\x46\x69\x6C\x65","\x67\x65\x74\x4F\x72\x43\x72\x65\x61\x74\x65\x46\x69\x6C\x65\x6E\x61\x6D\x65","\x70\x75\x62\x6C\x69\x73\x68\x46\x69\x6C\x65","\x65\x78\x65\x63\x75\x74\x65\x4C\x61\x79\x6F\x75\x74","\x61\x6E\x69\x6D\x61\x74\x65","\x62\x65\x67\x69\x6E\x55\x70\x64\x61\x74\x65","\x65\x78\x65\x63\x75\x74\x65","\x43\x61\x6D\x69\x6E\x6F","\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x65\x6E\x64\x55\x70\x64\x61\x74\x65","\x73\x74\x61\x72\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x69\x73\x43\x6F\x6E\x74\x72\x6F\x6C\x44\x6F\x77\x6E","\x49\x53\x5F\x4D\x41\x43","\x6D\x65\x74\x61\x4B\x65\x79","\x6D\x6F\x76\x65\x43\x65\x6C\x6C\x73","\x73\x63\x72\x6F\x6C\x6C\x43\x65\x6C\x6C\x54\x6F\x56\x69\x73\x69\x62\x6C\x65","\x65\x6E\x61\x62\x6C\x65\x64","\x66\x75\x6E\x63\x74","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x43\x6F\x6E\x74\x72\x6F\x6C\x4B\x65\x79","\x62\x69\x6E\x64\x53\x68\x69\x66\x74\x4B\x65\x79","\x62\x69\x6E\x64\x4B\x65\x79","\x65\x73\x63\x61\x70\x65","\x65\x6E\x74\x65\x72","\x66\x6F\x6C\x64\x43\x65\x6C\x6C\x73","\x7A\x6F\x6F\x6D\x49\x6E","\x7A\x6F\x6F\x6D\x4F\x75\x74","\x73\x65\x6C\x65\x63\x74\x41\x6C\x6C","\x73\x65\x6C\x65\x63\x74\x56\x65\x72\x74\x69\x63\x65\x73","\x73\x65\x6C\x65\x63\x74\x45\x64\x67\x65\x73","\x65\x78\x70\x6F\x72\x74","\x63\x6F\x6E\x6E\x65\x63\x74","\x67\x72\x69\x64","\x61\x62\x6F\x75\x74","\x6D\x75\x73\x74\x68\x61\x76\x65","\x6F\x75\x74\x67\x6F\x69\x6E\x67\x65\x64\x67\x65","\x70\x75\x73\x68","\x69\x6E\x63\x6F\x6D\x69\x6E\x67\x65\x64\x67\x65"];EditorUi=function(_0xcf2dx1,_0xcf2dx2){this[_0xedc0[0]]=_0xcf2dx1|| new Editor();this[_0xedc0[1]]=_0xcf2dx2||document[_0xedc0[3]](_0xedc0[2]);var _0xcf2dx3=_0xcf2dx1[_0xedc0[4]];var _0xcf2dx4=this;this[_0xedc0[1]][_0xedc0[6]][_0xedc0[5]]=_0xedc0[7]; new Image()[_0xedc0[8]]=mxPopupMenu[_0xedc0[10]][_0xedc0[9]];if(mxConnectionHandler[_0xedc0[10]][_0xedc0[11]]!=null){ new Image()[_0xedc0[8]]=mxConnectionHandler[_0xedc0[10]][_0xedc0[11]][_0xedc0[8]]};this[_0xedc0[12]]= new Actions(this);this[_0xedc0[13]]= new Menus(this);this[_0xedc0[14]]();this[_0xedc0[15]]();this[_0xedc0[16]]();var _0xcf2dx5=mxUtils[_0xedc0[20]](this,function(_0xcf2dx6){if(_0xcf2dx6==null){_0xcf2dx6=window[_0xedc0[17]]};if(this[_0xedc0[18]](_0xcf2dx6)){return true};return _0xcf2dx3[_0xedc0[19]]()});if(this[_0xedc0[1]]==document[_0xedc0[21]]){this[_0xedc0[23]][_0xedc0[22]]=_0xcf2dx5;this[_0xedc0[23]][_0xedc0[24]]=_0xcf2dx5;this[_0xedc0[25]][_0xedc0[22]]=_0xcf2dx5;this[_0xedc0[25]][_0xedc0[24]]=_0xcf2dx5;this[_0xedc0[26]][_0xedc0[22]]=_0xcf2dx5;this[_0xedc0[26]][_0xedc0[24]]=_0xcf2dx5;this[_0xedc0[27]][_0xedc0[22]]=_0xcf2dx5;this[_0xedc0[27]][_0xedc0[24]]=_0xcf2dx5;this[_0xedc0[28]][_0xedc0[22]]=_0xcf2dx5;this[_0xedc0[28]][_0xedc0[24]]=_0xcf2dx5};if(mxClient[_0xedc0[29]]&&( typeof (document[_0xedc0[30]])===_0xedc0[31]||document[_0xedc0[30]]<9)){mxEvent[_0xedc0[33]](this[_0xedc0[26]],_0xedc0[32],_0xcf2dx5);mxEvent[_0xedc0[33]](this[_0xedc0[27]],_0xedc0[32],_0xcf2dx5)}else {this[_0xedc0[26]][_0xedc0[34]]=_0xcf2dx5;this[_0xedc0[27]][_0xedc0[34]]=_0xcf2dx5};_0xcf2dx3[_0xedc0[35]](this[_0xedc0[26]]);_0xcf2dx3[_0xedc0[15]]();_0xcf2dx3[_0xedc0[1]][_0xedc0[38]](_0xedc0[36],_0xedc0[37]);_0xcf2dx3[_0xedc0[1]][_0xedc0[6]][_0xedc0[39]]=_0xedc0[40];_0xcf2dx3[_0xedc0[1]][_0xedc0[6]][_0xedc0[41]]=_0xedc0[42]+_0xcf2dx1[_0xedc0[43]]+_0xedc0[44];_0xcf2dx3[_0xedc0[1]][_0xedc0[6]][_0xedc0[45]]=_0xedc0[46];_0xcf2dx3[_0xedc0[1]][_0xedc0[47]]();var _0xcf2dx7=_0xcf2dx3[_0xedc0[48]];_0xcf2dx3[_0xedc0[48]]=function(_0xcf2dx8,_0xcf2dx9,_0xcf2dxa){if(_0xcf2dx8==mxEvent[_0xedc0[49]]){this[_0xedc0[1]][_0xedc0[47]]()};_0xcf2dx7[_0xedc0[50]](this,arguments)};this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[52],_0xedc0[53],_0xedc0[54]],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[57],_0xedc0[58],_0xedc0[59],_0xedc0[60],_0xedc0[61],_0xedc0[62],_0xedc0[63]],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[64],_0xedc0[65]],[[1,1],[1,1]],[[1,_0xedc0[55]],[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[66],_0xedc0[67],_0xedc0[68],_0xedc0[69],_0xedc0[70],_0xedc0[71],_0xedc0[72],_0xedc0[73],_0xedc0[74]],[[1,_0xedc0[55]],[1,1],[1,_0xedc0[55]],[1,1],[1,1],[1,1],[1,1],[1,1],[1,_0xedc0[55]]],[[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[75]],[[1,1]],[[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[76],_0xedc0[77]],[[1,1],[1,1]],[[1,_0xedc0[55]],[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[78],_0xedc0[79],_0xedc0[80],_0xedc0[81],_0xedc0[82]],[[0,0],[1,2],[1,2],[1,2],[1,_0xedc0[55]]],[[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[83],_0xedc0[84]],[[1,1],[1,1]],[[1,_0xedc0[55]],[1,_0xedc0[55]]]);this[_0xedc0[56]](_0xcf2dx3[_0xedc0[51]],[_0xedc0[85],_0xedc0[86],_0xedc0[87],_0xedc0[88],_0xedc0[89]],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]],[1,_0xedc0[55]]]);_0xcf2dx3[_0xedc0[90]]=function(_0xcf2dx6,_0xcf2dxb){var _0xcf2dxc=[_0xedc0[66],_0xedc0[79],_0xedc0[80],_0xedc0[68],_0xedc0[74],_0xedc0[82]];var _0xcf2dxd= new mxEventObject(mxEvent.DOUBLE_CLICK,_0xedc0[17],_0xcf2dx6,_0xedc0[91],_0xcf2dxb);this[_0xedc0[92]](_0xcf2dxd);if(this[_0xedc0[93]]()&&!mxEvent[_0xedc0[94]](_0xcf2dx6)&&!_0xcf2dxd[_0xedc0[94]]()){if(this[_0xedc0[96]]()[_0xedc0[95]](_0xcf2dxb)){if(_0xcf2dxc[_0xedc0[100]](_0xcf2dxb[_0xedc0[99]][_0xedc0[98]][_0xedc0[97]])>=0){this[_0xedc0[101]](_0xcf2dxb)}}else {if(this[_0xedc0[96]]()[_0xedc0[102]](_0xcf2dxb)){console[_0xedc0[103]](_0xcf2dx4);console[_0xedc0[103]](_0xcf2dxb);_0xcf2dx4[_0xedc0[104]]( new GeneralDialog(_0xcf2dx4,_0xcf2dxb)[_0xedc0[1]],320,280,true,true)}};_0xcf2dxd[_0xedc0[105]]()}};_0xcf2dx3[_0xedc0[107]][_0xedc0[106]]=true;_0xcf2dx3[_0xedc0[107]][_0xedc0[108]]=mxUtils[_0xedc0[20]](this,function(_0xcf2dxe,_0xcf2dxb,_0xcf2dx6){this[_0xedc0[13]][_0xedc0[109]](_0xcf2dxe,_0xcf2dxb,_0xcf2dx6)});_0xcf2dx1[_0xedc0[111]][_0xedc0[35]](this[_0xedc0[110]]);mxEvent[_0xedc0[113]](document,mxUtils[_0xedc0[20]](this,function(_0xcf2dx6){_0xcf2dx3[_0xedc0[107]][_0xedc0[112]]()}));if(mxClient[_0xedc0[114]]){mxEvent[_0xedc0[33]](_0xcf2dx3[_0xedc0[1]],_0xedc0[115],mxUtils[_0xedc0[20]](this,function(_0xcf2dx6){_0xcf2dx3[_0xedc0[120]][_0xedc0[119]]()[_0xedc0[38]](_0xedc0[116],_0xedc0[117]+_0xcf2dx6[_0xedc0[118]]+_0xedc0[44]);_0xcf2dx3[_0xedc0[120]][_0xedc0[122]]()[_0xedc0[6]][_0xedc0[121]]=_0xedc0[7]}));mxEvent[_0xedc0[33]](_0xcf2dx3[_0xedc0[1]],_0xedc0[123],mxUtils[_0xedc0[20]](this,function(_0xcf2dx6){_0xcf2dx3[_0xedc0[120]][_0xedc0[119]]()[_0xedc0[124]](_0xedc0[116]);_0xcf2dx3[_0xedc0[125]]=true;_0xcf2dx3[_0xedc0[126]](_0xcf2dx6[_0xedc0[118]]);_0xcf2dx3[_0xedc0[120]][_0xedc0[122]]()[_0xedc0[6]][_0xedc0[121]]=_0xedc0[127]}))};var _0xcf2dxf=this[_0xedc0[128]](_0xcf2dx1);this[_0xedc0[129]]=function(){return _0xcf2dxf};mxEvent[_0xedc0[33]](window,_0xedc0[130],mxUtils[_0xedc0[20]](this,function(){this[_0xedc0[15]]();_0xcf2dx3[_0xedc0[131]]();this[_0xedc0[0]][_0xedc0[111]][_0xedc0[132]](false);this[_0xedc0[0]][_0xedc0[111]][_0xedc0[111]][_0xedc0[131]]()}));this[_0xedc0[35]]();this[_0xedc0[133]]()};EditorUi[_0xedc0[10]][_0xedc0[134]]=(mxClient[_0xedc0[114]])?16:8;EditorUi[_0xedc0[10]][_0xedc0[135]]=33;EditorUi[_0xedc0[10]][_0xedc0[136]]=36;EditorUi[_0xedc0[10]][_0xedc0[137]]=28;EditorUi[_0xedc0[10]][_0xedc0[138]]=204;EditorUi[_0xedc0[10]][_0xedc0[139]]=190;EditorUi[_0xedc0[10]][_0xedc0[35]]=function(){this[_0xedc0[140]]();this[_0xedc0[141]]();var _0xcf2dx10=this[_0xedc0[12]][_0xedc0[143]](_0xedc0[142]);var _0xcf2dx11=function(){_0xcf2dx10[_0xedc0[145]](!mxClipboard[_0xedc0[144]]())};var _0xcf2dx12=mxClipboard[_0xedc0[146]];mxClipboard[_0xedc0[146]]=function(){_0xcf2dx12[_0xedc0[50]](this,arguments);_0xcf2dx11()};var _0xcf2dx13=mxClipboard[_0xedc0[147]];mxClipboard[_0xedc0[147]]=function(){_0xcf2dx13[_0xedc0[50]](this,arguments);_0xcf2dx11()}};EditorUi[_0xedc0[10]][_0xedc0[18]]=function(_0xcf2dx6){return false};EditorUi[_0xedc0[10]][_0xedc0[133]]=function(){try{if(window[_0xedc0[148]]!=null&&window[_0xedc0[148]][_0xedc0[149]]!=null){window[_0xedc0[148]][_0xedc0[149]][_0xedc0[161]](mxUtils[_0xedc0[20]](this,function(_0xcf2dx14,_0xcf2dx15){try{var _0xcf2dx16=mxUtils[_0xedc0[150]](_0xcf2dx14);this[_0xedc0[0]][_0xedc0[152]](_0xcf2dx16[_0xedc0[151]]);this[_0xedc0[0]][_0xedc0[153]]=false;this[_0xedc0[0]][_0xedc0[155]][_0xedc0[154]]();if(_0xcf2dx15!=null){this[_0xedc0[0]][_0xedc0[156]]=_0xcf2dx15}}catch(e){mxUtils[_0xedc0[160]](mxResources[_0xedc0[143]](_0xedc0[157])+_0xedc0[158]+e[_0xedc0[159]])}}))}}catch(e){}};EditorUi[_0xedc0[10]][_0xedc0[162]]=function(_0xcf2dx14,_0xcf2dx15,_0xcf2dx17){try{var _0xcf2dx16=mxUtils[_0xedc0[150]](_0xcf2dx14);this[_0xedc0[0]][_0xedc0[152]](_0xcf2dx16[_0xedc0[151]]);this[_0xedc0[0]][_0xedc0[153]]=false;this[_0xedc0[0]][_0xedc0[155]][_0xedc0[154]]();if(_0xcf2dx15!=null){this[_0xedc0[0]][_0xedc0[156]]=_0xcf2dx15};if(_0xcf2dx17!=null){this[_0xedc0[0]][_0xedc0[163]]=_0xcf2dx17}}catch(e){mxUtils[_0xedc0[160]](mxResources[_0xedc0[143]](_0xedc0[157])+_0xedc0[158]+e[_0xedc0[159]])}};EditorUi[_0xedc0[10]][_0xedc0[164]]=function(_0xcf2dx18){var _0xcf2dx1=this[_0xedc0[0]];if(_0xcf2dx18!=null){var _0xcf2dx14=mxUtils[_0xedc0[166]](this[_0xedc0[0]][_0xedc0[165]]());try{if(useLocalStorage){if(localStorage[_0xedc0[167]](_0xcf2dx18)!=null&&!mxUtils[_0xedc0[169]](mxResources[_0xedc0[143]](_0xedc0[168],[_0xcf2dx18]))){return};localStorage[_0xedc0[170]](_0xcf2dx18,_0xcf2dx14);this[_0xedc0[0]][_0xedc0[173]](mxResources[_0xedc0[143]](_0xedc0[171])+_0xedc0[172]+ new Date())}else {console[_0xedc0[103]](_0xcf2dx14[_0xedc0[174]]);console[_0xedc0[103]](MAX_REQUEST_SIZE);if(_0xcf2dx14[_0xedc0[174]]<MAX_REQUEST_SIZE){_0xcf2dx14=encodeURIComponent(_0xcf2dx14);_0xcf2dx18=encodeURIComponent(_0xcf2dx18);var _0xcf2dx19= new XMLHttpRequest();_0xcf2dx19[_0xedc0[133]](_0xedc0[175],SAVE_URL,true);_0xcf2dx19[_0xedc0[178]](_0xedc0[176],_0xedc0[177]);_0xcf2dx19[_0xedc0[178]](_0xedc0[179],_0xedc0[180]+_0xcf2dx1[_0xedc0[163]][_0xedc0[181]]);_0xcf2dx19[_0xedc0[182]]=function(_0xcf2dx1a){if(_0xcf2dx19[_0xedc0[183]]===4){if(_0xcf2dx19[_0xedc0[184]]===201){_0xcf2dx1[_0xedc0[173]](_0xedc0[185]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[186]]+_0xedc0[189]);setTimeout(function(){window[_0xedc0[133]](_0xedc0[190]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[191]],_0xedc0[192])},1500)}else {_0xcf2dx1[_0xedc0[173]](_0xedc0[193]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[194]][0][_0xedc0[159]])}}};_0xcf2dx19[_0xedc0[195]]=function(_0xcf2dx1a){mxUtils[_0xedc0[160]](_0xcf2dx19[_0xedc0[196]])};_0xcf2dx19[_0xedc0[198]](_0xedc0[197]+_0xcf2dx18)}else {mxUtils[_0xedc0[160]](mxResources[_0xedc0[143]](_0xedc0[199]));mxUtils[_0xedc0[200]](_0xcf2dx14);return}};this[_0xedc0[0]][_0xedc0[156]]=_0xcf2dx18;this[_0xedc0[0]][_0xedc0[153]]=false}catch(e){this[_0xedc0[0]][_0xedc0[173]](_0xedc0[201])}}else {this[_0xedc0[0]][_0xedc0[173]](_0xedc0[201])}};EditorUi[_0xedc0[10]][_0xedc0[202]]=function(_0xcf2dx18){var _0xcf2dx1=this[_0xedc0[0]];if(_0xcf2dx18!=null){var _0xcf2dx14=mxUtils[_0xedc0[166]](this[_0xedc0[0]][_0xedc0[165]]());try{if(useLocalStorage){if(localStorage[_0xedc0[167]](_0xcf2dx18)!=null&&!mxUtils[_0xedc0[169]](mxResources[_0xedc0[143]](_0xedc0[168],[_0xcf2dx18]))){return};localStorage[_0xedc0[170]](_0xcf2dx18,_0xcf2dx14);this[_0xedc0[0]][_0xedc0[173]](mxResources[_0xedc0[143]](_0xedc0[171])+_0xedc0[172]+ new Date())}else {console[_0xedc0[103]](_0xcf2dx14[_0xedc0[174]]);console[_0xedc0[103]](MAX_REQUEST_SIZE);if(_0xcf2dx14[_0xedc0[174]]<MAX_REQUEST_SIZE){_0xcf2dx14=encodeURIComponent(_0xcf2dx14);var _0xcf2dx19= new XMLHttpRequest();_0xcf2dx19[_0xedc0[133]](_0xedc0[203],SAVE_URL+this[_0xedc0[0]][_0xedc0[163]][_0xedc0[191]],true);_0xcf2dx19[_0xedc0[178]](_0xedc0[176],_0xedc0[177]);_0xcf2dx19[_0xedc0[178]](_0xedc0[179],_0xedc0[180]+_0xcf2dx1[_0xedc0[163]][_0xedc0[181]]);_0xcf2dx19[_0xedc0[182]]=function(_0xcf2dx1a){if(_0xcf2dx19[_0xedc0[183]]===4){if(_0xcf2dx19[_0xedc0[184]]===200){_0xcf2dx1[_0xedc0[173]](_0xedc0[204]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[205]]+_0xedc0[206]+_0xcf2dx19[_0xedc0[184]]+_0xedc0[172]+_0xcf2dx19[_0xedc0[196]]+_0xedc0[44])}else {_0xcf2dx1[_0xedc0[173]](_0xedc0[207]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[194]][0][_0xedc0[159]])}}};_0xcf2dx19[_0xedc0[195]]=function(_0xcf2dx1a){mxUtils[_0xedc0[160]](_0xcf2dx19[_0xedc0[196]])};_0xcf2dx19[_0xedc0[198]](_0xedc0[208]+_0xcf2dx14)}else {mxUtils[_0xedc0[160]](mxResources[_0xedc0[143]](_0xedc0[199]));mxUtils[_0xedc0[200]](_0xcf2dx14);return}};this[_0xedc0[0]][_0xedc0[156]]=_0xcf2dx18;this[_0xedc0[0]][_0xedc0[153]]=false}catch(e){this[_0xedc0[0]][_0xedc0[173]](_0xedc0[209])}}else {this[_0xedc0[0]][_0xedc0[173]](_0xedc0[209])}};EditorUi[_0xedc0[10]][_0xedc0[210]]=function(_0xcf2dx18){var _0xcf2dx1=this[_0xedc0[0]];if(_0xcf2dx18!=null){var _0xcf2dx14=mxUtils[_0xedc0[166]](this[_0xedc0[0]][_0xedc0[165]]());try{if(useLocalStorage){if(localStorage[_0xedc0[167]](_0xcf2dx18)!=null&&!mxUtils[_0xedc0[169]](mxResources[_0xedc0[143]](_0xedc0[168],[_0xcf2dx18]))){return};localStorage[_0xedc0[170]](_0xcf2dx18,_0xcf2dx14);this[_0xedc0[0]][_0xedc0[173]](mxResources[_0xedc0[143]](_0xedc0[171])+_0xedc0[172]+ new Date())}else {console[_0xedc0[103]](_0xcf2dx14[_0xedc0[174]]);console[_0xedc0[103]](MAX_REQUEST_SIZE);if(_0xcf2dx14[_0xedc0[174]]<MAX_REQUEST_SIZE){_0xcf2dx14=encodeURIComponent(_0xcf2dx14);_0xcf2dx18=encodeURIComponent(_0xcf2dx18);var _0xcf2dx19= new XMLHttpRequest();_0xcf2dx19[_0xedc0[133]](_0xedc0[175],SAVE_URL,true);_0xcf2dx19[_0xedc0[178]](_0xedc0[176],_0xedc0[177]);_0xcf2dx19[_0xedc0[178]](_0xedc0[179],_0xedc0[180]+_0xcf2dx1[_0xedc0[163]][_0xedc0[181]]);_0xcf2dx19[_0xedc0[182]]=function(_0xcf2dx1a){if(_0xcf2dx19[_0xedc0[183]]===4){if(_0xcf2dx19[_0xedc0[184]]===201){_0xcf2dx1[_0xedc0[173]](_0xedc0[185]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[186]]+_0xedc0[189]);setTimeout(function(){window[_0xedc0[133]](_0xedc0[211]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[191]],_0xedc0[192])},1500)}else {_0xcf2dx1[_0xedc0[173]](_0xedc0[212]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[194]][0][_0xedc0[159]])}}};_0xcf2dx19[_0xedc0[195]]=function(_0xcf2dx1a){mxUtils[_0xedc0[160]](_0xcf2dx19[_0xedc0[196]])};_0xcf2dx19[_0xedc0[198]](_0xedc0[213]+_0xcf2dx18+_0xedc0[214]+_0xcf2dx14+_0xedc0[215]+_0xcf2dx14)}else {mxUtils[_0xedc0[160]](mxResources[_0xedc0[143]](_0xedc0[199]));mxUtils[_0xedc0[200]](_0xcf2dx14);return}};this[_0xedc0[0]][_0xedc0[156]]=_0xcf2dx18;this[_0xedc0[0]][_0xedc0[153]]=false}catch(e){this[_0xedc0[0]][_0xedc0[173]](_0xedc0[209])}}else {this[_0xedc0[0]][_0xedc0[173]](_0xedc0[209])}};EditorUi[_0xedc0[10]][_0xedc0[216]]=function(_0xcf2dx1b,_0xcf2dx1c){var _0xcf2dx3=this[_0xedc0[0]][_0xedc0[4]];for(var _0xcf2dx1b=_0xcf2dx1b!=null?_0xcf2dx1b:_0xcf2dx3[_0xedc0[218]][_0xedc0[217]](),_0xcf2dx1c=_0xcf2dx1c!=null?_0xcf2dx1c:{},_0xcf2dx1d=true,_0xcf2dx1e=_0xcf2dx3[_0xedc0[218]][_0xedc0[219]](_0xcf2dx1b),_0xcf2dx1a=0;_0xcf2dx1a<_0xcf2dx1e;_0xcf2dx1a++){var _0xcf2dx1f=_0xcf2dx3[_0xedc0[218]][_0xedc0[220]](_0xcf2dx1b,_0xcf2dx1a),_0xcf2dx20=_0xcf2dx1c;_0xcf2dx3[_0xedc0[221]](_0xcf2dx1f)&&(_0xcf2dx20={});_0xcf2dx20=this[_0xedc0[216]](_0xcf2dx1f,_0xcf2dx20);_0xcf2dx20!=null?_0xcf2dx3[_0xedc0[223]](_0xcf2dx1f,_0xcf2dx20[_0xedc0[168]](/\n/g,_0xedc0[222])):_0xcf2dx3[_0xedc0[223]](_0xcf2dx1f,null);_0xcf2dx1d=_0xcf2dx1d&&_0xcf2dx20==null};_0xcf2dx1e=_0xedc0[224];if(_0xcf2dx3[_0xedc0[218]][_0xedc0[102]](_0xcf2dx1b)){switch(_0xcf2dx1b[_0xedc0[98]][_0xedc0[281]]){case _0xedc0[52]:_0xcf2dx1e=this[_0xedc0[225]](_0xedc0[52])?_0xedc0[224]:_0xedc0[226]+_0xedc0[227];break;case _0xedc0[53]:_0xcf2dx1e=this[_0xedc0[225]](_0xedc0[53])?_0xedc0[224]:_0xedc0[228]+_0xedc0[227];break;case _0xedc0[67]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[229])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[231])+_0xedc0[227];break;case _0xedc0[66]:;case _0xedc0[68]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[229])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[231])+_0xedc0[227];_0xcf2dx1e+=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[232])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[233])+_0xedc0[227];break;case _0xedc0[74]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[229])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[231])+_0xedc0[227];_0xcf2dx1e+=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[234])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[235])+_0xedc0[227];_0xcf2dx1e+=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[236])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[237])+_0xedc0[227];_0xcf2dx1e+=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[238])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[233])+_0xedc0[227];break;case _0xedc0[82]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[239])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[235])+_0xedc0[227];break;case _0xedc0[76]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[240])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[241])+_0xedc0[227];break;case _0xedc0[60]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[242])!==_0xedc0[243])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[244])+_0xedc0[227];break;case _0xedc0[64]:;case _0xedc0[65]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[234])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[235])+_0xedc0[227];break;case _0xedc0[78]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[245])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[246])+_0xedc0[227];break;case _0xedc0[86]:;case _0xedc0[87]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[247])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[248])+_0xedc0[227];break;case _0xedc0[79]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[249])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[250])+_0xedc0[227];break;case _0xedc0[69]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[251])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[252])+_0xedc0[227];break;case _0xedc0[70]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[253])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[254])+_0xedc0[227];break;case _0xedc0[71]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[255])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[256])+_0xedc0[227];break;case _0xedc0[75]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[257])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[258])+_0xedc0[227];break;case _0xedc0[84]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[259])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[260])+_0xedc0[227];break;case _0xedc0[60]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[261])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[262])+_0xedc0[227];break;case _0xedc0[59]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[263])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[262])+_0xedc0[227];break;case _0xedc0[61]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[264])!==_0xedc0[243])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[265])+_0xedc0[227];break;case _0xedc0[63]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[266])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[267])+_0xedc0[227];break;case _0xedc0[80]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[268])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[269])+_0xedc0[227];break;case _0xedc0[81]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[268])!=_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[269])+_0xedc0[227];break;case _0xedc0[62]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[270])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[271])+_0xedc0[227];break;case _0xedc0[88]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[272])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[273])+_0xedc0[227];break;case _0xedc0[278]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[274])>0)?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[275])+_0xedc0[227];_0xcf2dx1e+=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[276])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[254])+_0xedc0[227];_0xcf2dx1e+=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[277])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[256])+_0xedc0[227];break;case _0xedc0[72]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[255])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[256])+_0xedc0[227];break;case _0xedc0[73]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[255])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[256])+_0xedc0[227];_0xcf2dx1e+=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[279])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[280])+_0xedc0[227];break;case _0xedc0[77]:_0xcf2dx1e=(_0xcf2dx1b[_0xedc0[98]][_0xedc0[230]](_0xedc0[279])!==_0xedc0[224])?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[280])+_0xedc0[227];break}};if(_0xcf2dx3[_0xedc0[218]][_0xedc0[95]](_0xcf2dx1b)){var _0xcf2dx21=_0xcf2dx3[_0xedc0[218]][_0xedc0[283]](_0xcf2dx1b[_0xedc0[99]][_0xedc0[282]]());switch(_0xcf2dx21[_0xedc0[98]][_0xedc0[281]]){case _0xedc0[66]:var _0xcf2dx22=/^[0-9]{1,45}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;_0xcf2dx1e=_0xcf2dx1e+((_0xcf2dx22[_0xedc0[285]](String(_0xcf2dx1b[_0xedc0[284]]())))?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[286])+_0xedc0[227]);break;case _0xedc0[68]:var _0xcf2dx22=/^[0-9]{1,45}$|^[-]{1}$|^[i]{1}$|^[t]{1}|^[#]{1}|^[*]{1}$/;var _0xcf2dx23=String(_0xcf2dx1b[_0xedc0[284]]());var _0xcf2dx24=_0xcf2dx23[_0xedc0[288]](_0xedc0[287]);_0xcf2dx24[_0xedc0[290]](function(_0xcf2dx25){_0xcf2dx1e=_0xcf2dx1e+((_0xcf2dx22[_0xedc0[285]](_0xcf2dx25))?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[289])+_0xedc0[227])});break;case _0xedc0[74]:var _0xcf2dx22=/^(x|i|-)$/;var _0xcf2dx23=String(_0xcf2dx1b[_0xedc0[284]]());_0xcf2dx1e=_0xcf2dx1e+((_0xcf2dx22[_0xedc0[285]](_0xcf2dx23))?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[291])+_0xedc0[227]);break;case _0xedc0[79]:;case _0xedc0[80]:;case _0xedc0[81]:var _0xcf2dx22=/^(true){1}$|^(false){1}$/;_0xcf2dx1e=_0xcf2dx1e+((_0xcf2dx22[_0xedc0[285]](String(_0xcf2dx1b[_0xedc0[284]]())))?_0xedc0[224]:mxResources[_0xedc0[143]](_0xedc0[292])+_0xedc0[227]);break}};_0xcf2dx3[_0xedc0[293]](_0xcf2dx1b)&&!_0xcf2dx1d&&(_0xcf2dx1e=_0xcf2dx1e+((mxResources[_0xedc0[143]](_0xcf2dx3[_0xedc0[294]])||_0xcf2dx3[_0xedc0[294]])+_0xedc0[227]));_0xcf2dx1e=_0xcf2dx3[_0xedc0[218]][_0xedc0[95]](_0xcf2dx1b)?_0xcf2dx1e+(_0xcf2dx3[_0xedc0[296]](_0xcf2dx1b,_0xcf2dx3[_0xedc0[218]][_0xedc0[295]](_0xcf2dx1b,true),_0xcf2dx3[_0xedc0[218]][_0xedc0[295]](_0xcf2dx1b,false))||_0xedc0[224]):_0xcf2dx1e+(_0xcf2dx3[_0xedc0[297]](_0xcf2dx1b)||_0xedc0[224]);_0xcf2dx1a=_0xcf2dx3[_0xedc0[298]](_0xcf2dx1b,_0xcf2dx1c);_0xcf2dx1a!=null&&(_0xcf2dx1e=_0xcf2dx1e+_0xcf2dx1a);_0xcf2dx3[_0xedc0[218]][_0xedc0[299]](_0xcf2dx1b)==null&&_0xcf2dx3[_0xedc0[120]][_0xedc0[216]]();return _0xcf2dx1e[_0xedc0[174]]>0||!_0xcf2dx1d?_0xcf2dx1e:null};EditorUi[_0xedc0[10]][_0xedc0[225]]=function(_0xcf2dx26){var _0xcf2dx3=this[_0xedc0[0]][_0xedc0[4]];var _0xcf2dx27=_0xcf2dx3[_0xedc0[300]]();var _0xcf2dx28=0;_0xcf2dx27[_0xedc0[301]][_0xedc0[290]](function(_0xcf2dx29){if(_0xcf2dx3[_0xedc0[218]][_0xedc0[102]](_0xcf2dx29)&&_0xcf2dx29[_0xedc0[98]][_0xedc0[281]]==_0xcf2dx26){_0xcf2dx28++}});return _0xcf2dx28>1?false:true};EditorUi[_0xedc0[10]][_0xedc0[302]]=function(_0xcf2dx18){var _0xcf2dx1=this[_0xedc0[0]];if(_0xcf2dx18!=null){var _0xcf2dx2a=this[_0xedc0[216]]();if(_0xcf2dx2a===null){var _0xcf2dx14=mxUtils[_0xedc0[166]](this[_0xedc0[0]][_0xedc0[165]]());try{if(useLocalStorage){if(localStorage[_0xedc0[167]](_0xcf2dx18)!=null&&!mxUtils[_0xedc0[169]](mxResources[_0xedc0[143]](_0xedc0[168],[_0xcf2dx18]))){return};localStorage[_0xedc0[170]](_0xcf2dx18,_0xcf2dx14);this[_0xedc0[0]][_0xedc0[173]](mxResources[_0xedc0[143]](_0xedc0[171])+_0xedc0[172]+ new Date())}else {console[_0xedc0[103]](_0xcf2dx14[_0xedc0[174]]);console[_0xedc0[103]](MAX_REQUEST_SIZE);if(_0xcf2dx14[_0xedc0[174]]<MAX_REQUEST_SIZE){_0xcf2dx14=encodeURIComponent(_0xcf2dx14);var _0xcf2dx19= new XMLHttpRequest();_0xcf2dx19[_0xedc0[133]](_0xedc0[203],SAVE_URL+this[_0xedc0[0]][_0xedc0[163]][_0xedc0[191]],true);_0xcf2dx19[_0xedc0[178]](_0xedc0[176],_0xedc0[177]);_0xcf2dx19[_0xedc0[178]](_0xedc0[179],_0xedc0[180]+_0xcf2dx1[_0xedc0[163]][_0xedc0[181]]);_0xcf2dx19[_0xedc0[182]]=function(_0xcf2dx1a){if(_0xcf2dx19[_0xedc0[183]]===4){if(_0xcf2dx19[_0xedc0[184]]===200){_0xcf2dx1[_0xedc0[173]](_0xedc0[303]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[205]]+_0xedc0[206]+_0xcf2dx19[_0xedc0[184]]+_0xedc0[172]+_0xcf2dx19[_0xedc0[196]]+_0xedc0[44])}else {_0xcf2dx1[_0xedc0[173]](_0xedc0[207]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[194]][0][_0xedc0[159]])}}};_0xcf2dx19[_0xedc0[195]]=function(_0xcf2dx1a){mxUtils[_0xedc0[160]](_0xcf2dx19[_0xedc0[196]])};_0xcf2dx19[_0xedc0[198]](_0xedc0[208]+_0xcf2dx14+_0xedc0[215]+_0xcf2dx14)}else {mxUtils[_0xedc0[160]](mxResources[_0xedc0[143]](_0xedc0[199]));mxUtils[_0xedc0[200]](_0xcf2dx14);return}};this[_0xedc0[0]][_0xedc0[156]]=_0xcf2dx18;this[_0xedc0[0]][_0xedc0[153]]=false}catch(e){this[_0xedc0[0]][_0xedc0[173]](_0xedc0[304])}}else {_0xcf2dx1[_0xedc0[173]](_0xedc0[305])}}else {this[_0xedc0[0]][_0xedc0[173]](_0xedc0[304])}};EditorUi[_0xedc0[10]][_0xedc0[239]]=function(_0xcf2dx18){var _0xcf2dx1=this[_0xedc0[0]];if(_0xcf2dx18!=null){try{var _0xcf2dx19= new XMLHttpRequest();_0xcf2dx19[_0xedc0[133]](_0xedc0[175],VARIABLE_URL,true);_0xcf2dx19[_0xedc0[178]](_0xedc0[176],_0xedc0[177]);_0xcf2dx19[_0xedc0[178]](_0xedc0[179],_0xedc0[180]+_0xcf2dx1[_0xedc0[163]][_0xedc0[181]]);_0xcf2dx19[_0xedc0[182]]=function(_0xcf2dx1a){if(_0xcf2dx19[_0xedc0[183]]===4){if(_0xcf2dx19[_0xedc0[184]]===201){_0xcf2dx1[_0xedc0[173]](_0xedc0[306]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[307]]+_0xedc0[206]+_0xcf2dx19[_0xedc0[184]]+_0xedc0[172]+_0xcf2dx19[_0xedc0[196]]+_0xedc0[44])}else {_0xcf2dx1[_0xedc0[173]](_0xedc0[308]+JSON[_0xedc0[188]](_0xcf2dx19[_0xedc0[187]])[_0xedc0[194]][0][_0xedc0[159]])}}};_0xcf2dx19[_0xedc0[195]]=function(_0xcf2dx1a){mxUtils[_0xedc0[160]](_0xcf2dx19[_0xedc0[196]])};_0xcf2dx19[_0xedc0[198]](_0xedc0[309]+_0xcf2dx18)}catch(e){this[_0xedc0[0]][_0xedc0[173]](_0xedc0[310])}}else {this[_0xedc0[0]][_0xedc0[173]](_0xedc0[310])}};EditorUi[_0xedc0[10]][_0xedc0[311]]=function(_0xcf2dx2b){var _0xcf2dx2c=(_0xcf2dx2b!=null)?_0xcf2dx2b:window[_0xedc0[313]][_0xedc0[312]];var _0xcf2dx2d=(_0xcf2dx2c[_0xedc0[100]](_0xedc0[314])>0)?1:0;for(var _0xcf2dx2e in urlParams){if(_0xcf2dx2d==0){_0xcf2dx2c+=_0xedc0[314]}else {_0xcf2dx2c+=_0xedc0[315]};_0xcf2dx2c+=_0xcf2dx2e+_0xedc0[316]+urlParams[_0xcf2dx2e];_0xcf2dx2d++};return _0xcf2dx2c};EditorUi[_0xedc0[10]][_0xedc0[140]]=function(){var _0xcf2dx2f=this[_0xedc0[12]][_0xedc0[143]](_0xedc0[317]);var _0xcf2dx30=this[_0xedc0[12]][_0xedc0[143]](_0xedc0[318]);var _0xcf2dx31=this[_0xedc0[0]][_0xedc0[155]];var _0xcf2dx32=function(){_0xcf2dx2f[_0xedc0[145]](_0xcf2dx31[_0xedc0[319]]());_0xcf2dx30[_0xedc0[145]](_0xcf2dx31[_0xedc0[320]]())};_0xcf2dx31[_0xedc0[33]](mxEvent.ADD,_0xcf2dx32);_0xcf2dx31[_0xedc0[33]](mxEvent.UNDO,_0xcf2dx32);_0xcf2dx31[_0xedc0[33]](mxEvent.REDO,_0xcf2dx32);_0xcf2dx31[_0xedc0[33]](mxEvent.CLEAR,_0xcf2dx32);_0xcf2dx32()};EditorUi[_0xedc0[10]][_0xedc0[141]]=function(){var _0xcf2dx33=mxUtils[_0xedc0[20]](this,function(){var _0xcf2dx3=this[_0xedc0[0]][_0xedc0[4]];var _0xcf2dx34=!_0xcf2dx3[_0xedc0[321]]();var _0xcf2dx35=false;var _0xcf2dx36=false;var _0xcf2dx37=_0xcf2dx3[_0xedc0[322]]();if(_0xcf2dx37!=null){for(var _0xcf2dx38=0;_0xcf2dx38<_0xcf2dx37[_0xedc0[174]];_0xcf2dx38++){var _0xcf2dxb=_0xcf2dx37[_0xcf2dx38];if(_0xcf2dx3[_0xedc0[96]]()[_0xedc0[95]](_0xcf2dxb)){_0xcf2dx36=true};if(_0xcf2dx3[_0xedc0[96]]()[_0xedc0[102]](_0xcf2dxb)){_0xcf2dx35=true};if(_0xcf2dx36&&_0xcf2dx35){break}}};var _0xcf2dx39=[_0xedc0[146],_0xedc0[147],_0xedc0[323],_0xedc0[324],_0xedc0[325],_0xedc0[326],_0xedc0[6],_0xedc0[327],_0xedc0[328],_0xedc0[329],_0xedc0[330],_0xedc0[331],_0xedc0[332],_0xedc0[333],_0xedc0[334]];for(var _0xcf2dx38=0;_0xcf2dx38<_0xcf2dx39[_0xedc0[174]];_0xcf2dx38++){this[_0xedc0[12]][_0xedc0[143]](_0xcf2dx39[_0xcf2dx38])[_0xedc0[145]](_0xcf2dx34)};this[_0xedc0[12]][_0xedc0[143]](_0xedc0[335])[_0xedc0[145]](_0xcf2dx36);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[336])[_0xedc0[145]](_0xcf2dx35);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[337])[_0xedc0[145]](_0xcf2dx35);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[339])[_0xedc0[145]](_0xcf2dx3[_0xedc0[338]]()>1);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[341])[_0xedc0[145]](_0xcf2dx3[_0xedc0[338]]()==1&&_0xcf2dx3[_0xedc0[96]]()[_0xedc0[219]](_0xcf2dx3[_0xedc0[340]]())>0);var _0xcf2dx3a=_0xcf2dx35&&_0xcf2dx3[_0xedc0[338]]()==1;this[_0xedc0[12]][_0xedc0[143]](_0xedc0[342])[_0xedc0[145]](_0xcf2dx3a&&_0xcf2dx3[_0xedc0[96]]()[_0xedc0[102]](_0xcf2dx3[_0xedc0[96]]()[_0xedc0[299]](_0xcf2dx3[_0xedc0[340]]())));var _0xcf2dx3b=[_0xedc0[343],_0xedc0[344],_0xedc0[345],_0xedc0[346],_0xedc0[255],_0xedc0[347],_0xedc0[348],_0xedc0[349],_0xedc0[350]];for(var _0xcf2dx38=0;_0xcf2dx38<_0xcf2dx3b[_0xedc0[174]];_0xcf2dx38++){this[_0xedc0[13]][_0xedc0[143]](_0xcf2dx3b[_0xcf2dx38])[_0xedc0[145]](_0xcf2dx34)};_0xcf2dx3b=[_0xedc0[351],_0xedc0[352],_0xedc0[353]];for(var _0xcf2dx38=0;_0xcf2dx38<_0xcf2dx3b[_0xedc0[174]];_0xcf2dx38++){this[_0xedc0[13]][_0xedc0[143]](_0xcf2dx3b[_0xcf2dx38])[_0xedc0[145]](_0xcf2dx36)};this[_0xedc0[12]][_0xedc0[143]](_0xedc0[354])[_0xedc0[145]](_0xcf2dx36);this[_0xedc0[13]][_0xedc0[143]](_0xedc0[355])[_0xedc0[145]](_0xcf2dx3[_0xedc0[338]]()>1);this[_0xedc0[13]][_0xedc0[143]](_0xedc0[358])[_0xedc0[145]](_0xcf2dx35||(_0xcf2dx36&&_0xcf2dx3[_0xedc0[357]](_0xcf2dx3[_0xedc0[120]][_0xedc0[356]](_0xcf2dx3[_0xedc0[340]]()))));this[_0xedc0[13]][_0xedc0[143]](_0xedc0[361])[_0xedc0[145]](_0xcf2dx3[_0xedc0[359]]&&((_0xcf2dx3[_0xedc0[120]][_0xedc0[360]]!=null)||(_0xcf2dx3[_0xedc0[338]]()==1&&_0xcf2dx3[_0xedc0[221]](_0xcf2dx3[_0xedc0[340]]()))));this[_0xedc0[12]][_0xedc0[143]](_0xedc0[362])[_0xedc0[145]](_0xcf2dx3[_0xedc0[120]][_0xedc0[360]]!=null);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[363])[_0xedc0[145]](_0xcf2dx3[_0xedc0[120]][_0xedc0[360]]!=null);var _0xcf2dx3c=_0xcf2dx3[_0xedc0[338]]()==1&&_0xcf2dx3[_0xedc0[221]](_0xcf2dx3[_0xedc0[340]]());this[_0xedc0[12]][_0xedc0[143]](_0xedc0[364])[_0xedc0[145]](_0xcf2dx3c);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[365])[_0xedc0[145]](_0xcf2dx3c);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[366])[_0xedc0[145]](_0xcf2dx3c);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[367])[_0xedc0[145]](_0xcf2dx3[_0xedc0[338]]()==1);this[_0xedc0[12]][_0xedc0[143]](_0xedc0[369])[_0xedc0[145]](_0xcf2dx3[_0xedc0[338]]()==1&&_0xcf2dx3[_0xedc0[368]](_0xcf2dx3[_0xedc0[340]]())!=null)});this[_0xedc0[0]][_0xedc0[4]][_0xedc0[370]]()[_0xedc0[33]](mxEvent.CHANGE,_0xcf2dx33);_0xcf2dx33()};EditorUi[_0xedc0[10]][_0xedc0[15]]=function(){var _0xcf2dx3d=mxClient[_0xedc0[29]]&&(document[_0xedc0[30]]==null||document[_0xedc0[30]]==5);var _0xcf2dx3e=this[_0xedc0[1]][_0xedc0[371]];var _0xcf2dx3f=this[_0xedc0[1]][_0xedc0[372]];if(this[_0xedc0[1]]==document[_0xedc0[21]]){_0xcf2dx3e=document[_0xedc0[21]][_0xedc0[371]]||document[_0xedc0[151]][_0xedc0[371]];_0xcf2dx3f=(_0xcf2dx3d)?document[_0xedc0[21]][_0xedc0[372]]||document[_0xedc0[151]][_0xedc0[372]]:document[_0xedc0[151]][_0xedc0[372]]};var _0xcf2dx40=Math[_0xedc0[374]](0,Math[_0xedc0[373]](this[_0xedc0[138]],_0xcf2dx3e-this[_0xedc0[134]]-20));var _0xcf2dx41=Math[_0xedc0[374]](0,Math[_0xedc0[373]](this[_0xedc0[139]],_0xcf2dx3f-this[_0xedc0[135]]-this[_0xedc0[136]]-this[_0xedc0[137]]-this[_0xedc0[134]]-1));this[_0xedc0[23]][_0xedc0[6]][_0xedc0[375]]=this[_0xedc0[135]]+_0xedc0[376];this[_0xedc0[25]][_0xedc0[6]][_0xedc0[377]]=this[_0xedc0[135]]+_0xedc0[376];this[_0xedc0[25]][_0xedc0[6]][_0xedc0[375]]=this[_0xedc0[136]]+_0xedc0[376];var _0xcf2dx42=this[_0xedc0[135]]+this[_0xedc0[136]];if(!mxClient[_0xedc0[378]]){_0xcf2dx42+=1};this[_0xedc0[27]][_0xedc0[6]][_0xedc0[377]]=_0xcf2dx42+_0xedc0[376];this[_0xedc0[27]][_0xedc0[6]][_0xedc0[379]]=_0xcf2dx40+_0xedc0[376];this[_0xedc0[110]][_0xedc0[6]][_0xedc0[379]]=_0xcf2dx40+_0xedc0[376];this[_0xedc0[110]][_0xedc0[6]][_0xedc0[375]]=_0xcf2dx41+_0xedc0[376];this[_0xedc0[110]][_0xedc0[6]][_0xedc0[380]]=this[_0xedc0[137]]+_0xedc0[376];this[_0xedc0[26]][_0xedc0[6]][_0xedc0[381]]=(_0xcf2dx40+this[_0xedc0[134]])+_0xedc0[376];this[_0xedc0[26]][_0xedc0[6]][_0xedc0[377]]=this[_0xedc0[27]][_0xedc0[6]][_0xedc0[377]];this[_0xedc0[28]][_0xedc0[6]][_0xedc0[375]]=this[_0xedc0[137]]+_0xedc0[376];this[_0xedc0[28]][_0xedc0[6]][_0xedc0[382]]=_0xedc0[383];this[_0xedc0[384]][_0xedc0[6]][_0xedc0[377]]=this[_0xedc0[27]][_0xedc0[6]][_0xedc0[377]];this[_0xedc0[384]][_0xedc0[6]][_0xedc0[380]]=this[_0xedc0[110]][_0xedc0[6]][_0xedc0[380]];this[_0xedc0[384]][_0xedc0[6]][_0xedc0[381]]=_0xcf2dx40+_0xedc0[376];this[_0xedc0[385]][_0xedc0[6]][_0xedc0[379]]=this[_0xedc0[27]][_0xedc0[6]][_0xedc0[379]];this[_0xedc0[385]][_0xedc0[6]][_0xedc0[380]]=(_0xcf2dx41+this[_0xedc0[137]])+_0xedc0[376];if(_0xcf2dx3d){this[_0xedc0[23]][_0xedc0[6]][_0xedc0[379]]=_0xcf2dx3e+_0xedc0[376];this[_0xedc0[25]][_0xedc0[6]][_0xedc0[379]]=this[_0xedc0[23]][_0xedc0[6]][_0xedc0[379]];var _0xcf2dx43=(_0xcf2dx3f-_0xcf2dx41-this[_0xedc0[134]]-this[_0xedc0[137]]-this[_0xedc0[135]]-this[_0xedc0[136]]);this[_0xedc0[27]][_0xedc0[6]][_0xedc0[375]]=_0xcf2dx43+_0xedc0[376];this[_0xedc0[26]][_0xedc0[6]][_0xedc0[379]]=(_0xcf2dx3e-_0xcf2dx40-this[_0xedc0[134]])+_0xedc0[376];var _0xcf2dx44=(_0xcf2dx3f-this[_0xedc0[137]]-this[_0xedc0[135]]-this[_0xedc0[136]]);this[_0xedc0[26]][_0xedc0[6]][_0xedc0[375]]=_0xcf2dx44+_0xedc0[376];this[_0xedc0[28]][_0xedc0[6]][_0xedc0[379]]=this[_0xedc0[23]][_0xedc0[6]][_0xedc0[379]];this[_0xedc0[384]][_0xedc0[6]][_0xedc0[375]]=_0xcf2dx44+_0xedc0[376]}else {this[_0xedc0[27]][_0xedc0[6]][_0xedc0[380]]=(_0xcf2dx41+this[_0xedc0[134]]+this[_0xedc0[137]])+_0xedc0[376];this[_0xedc0[26]][_0xedc0[6]][_0xedc0[380]]=this[_0xedc0[110]][_0xedc0[6]][_0xedc0[380]]}};EditorUi[_0xedc0[10]][_0xedc0[14]]=function(){this[_0xedc0[23]]=this[_0xedc0[387]](_0xedc0[386]);this[_0xedc0[25]]=this[_0xedc0[387]](_0xedc0[388]);this[_0xedc0[27]]=this[_0xedc0[387]](_0xedc0[389]);this[_0xedc0[110]]=this[_0xedc0[387]](_0xedc0[390]);this[_0xedc0[26]]=this[_0xedc0[387]](_0xedc0[391]);this[_0xedc0[28]]=this[_0xedc0[387]](_0xedc0[392]);this[_0xedc0[384]]=this[_0xedc0[387]](_0xedc0[393]);this[_0xedc0[385]]=this[_0xedc0[387]](_0xedc0[394]);this[_0xedc0[23]][_0xedc0[6]][_0xedc0[377]]=_0xedc0[395];this[_0xedc0[23]][_0xedc0[6]][_0xedc0[381]]=_0xedc0[395];this[_0xedc0[23]][_0xedc0[6]][_0xedc0[396]]=_0xedc0[395];this[_0xedc0[25]][_0xedc0[6]][_0xedc0[381]]=_0xedc0[395];this[_0xedc0[25]][_0xedc0[6]][_0xedc0[396]]=_0xedc0[395];this[_0xedc0[27]][_0xedc0[6]][_0xedc0[381]]=_0xedc0[395];this[_0xedc0[110]][_0xedc0[6]][_0xedc0[381]]=_0xedc0[395];this[_0xedc0[26]][_0xedc0[6]][_0xedc0[396]]=_0xedc0[395];this[_0xedc0[28]][_0xedc0[6]][_0xedc0[381]]=_0xedc0[395];this[_0xedc0[28]][_0xedc0[6]][_0xedc0[396]]=_0xedc0[395];this[_0xedc0[28]][_0xedc0[6]][_0xedc0[380]]=_0xedc0[395];this[_0xedc0[385]][_0xedc0[6]][_0xedc0[381]]=_0xedc0[395];this[_0xedc0[385]][_0xedc0[6]][_0xedc0[375]]=this[_0xedc0[134]]+_0xedc0[376];this[_0xedc0[384]][_0xedc0[6]][_0xedc0[379]]=this[_0xedc0[134]]+_0xedc0[376]};EditorUi[_0xedc0[10]][_0xedc0[16]]=function(){this[_0xedc0[397]]=this[_0xedc0[13]][_0xedc0[399]](this[_0xedc0[387]](_0xedc0[398]));this[_0xedc0[23]][_0xedc0[400]](this[_0xedc0[397]][_0xedc0[1]]);this[_0xedc0[401]]=this[_0xedc0[403]](this[_0xedc0[387]](_0xedc0[402]));this[_0xedc0[25]][_0xedc0[400]](this[_0xedc0[401]][_0xedc0[1]]);this[_0xedc0[404]]=this[_0xedc0[405]](this[_0xedc0[27]]);this[_0xedc0[28]][_0xedc0[400]](this[_0xedc0[406]]());this[_0xedc0[407]]=this[_0xedc0[408]]();this[_0xedc0[0]][_0xedc0[33]](_0xedc0[409],mxUtils[_0xedc0[20]](this,function(){this[_0xedc0[411]](this[_0xedc0[0]][_0xedc0[410]]())}));this[_0xedc0[411]](this[_0xedc0[0]][_0xedc0[410]]());this[_0xedc0[397]][_0xedc0[1]][_0xedc0[400]](this[_0xedc0[407]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[23]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[25]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[27]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[110]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[26]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[28]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[384]]);this[_0xedc0[1]][_0xedc0[400]](this[_0xedc0[385]]);this[_0xedc0[412]](this[_0xedc0[384]],true,0,mxUtils[_0xedc0[20]](this,function(_0xcf2dx45){this[_0xedc0[138]]=_0xcf2dx45;this[_0xedc0[15]]();this[_0xedc0[0]][_0xedc0[4]][_0xedc0[131]]();this[_0xedc0[0]][_0xedc0[111]][_0xedc0[132]](false);this[_0xedc0[0]][_0xedc0[111]][_0xedc0[111]][_0xedc0[131]]()}));this[_0xedc0[412]](this[_0xedc0[385]],false,this[_0xedc0[137]],mxUtils[_0xedc0[20]](this,function(_0xcf2dx45){this[_0xedc0[139]]=_0xcf2dx45;this[_0xedc0[15]]();this[_0xedc0[0]][_0xedc0[111]][_0xedc0[132]](false);this[_0xedc0[0]][_0xedc0[111]][_0xedc0[111]][_0xedc0[131]]()}))};EditorUi[_0xedc0[10]][_0xedc0[408]]=function(){var _0xcf2dx2=document[_0xedc0[414]](_0xedc0[413]);_0xcf2dx2[_0xedc0[415]]=_0xedc0[416];return _0xcf2dx2};EditorUi[_0xedc0[10]][_0xedc0[408]]=function(){var _0xcf2dx2=document[_0xedc0[414]](_0xedc0[413]);_0xcf2dx2[_0xedc0[415]]=_0xedc0[416];return _0xcf2dx2};EditorUi[_0xedc0[10]][_0xedc0[411]]=function(_0xcf2dx45){this[_0xedc0[407]][_0xedc0[417]]=_0xcf2dx45};EditorUi[_0xedc0[10]][_0xedc0[403]]=function(_0xcf2dx2){return  new Toolbar(this,_0xcf2dx2)};EditorUi[_0xedc0[10]][_0xedc0[405]]=function(_0xcf2dx2){return  new Sidebar(this,_0xcf2dx2)};EditorUi[_0xedc0[10]][_0xedc0[406]]=function(){return this[_0xedc0[387]](_0xedc0[418])};EditorUi[_0xedc0[10]][_0xedc0[387]]=function(_0xcf2dx46){var _0xcf2dx47=document[_0xedc0[414]](_0xedc0[419]);_0xcf2dx47[_0xedc0[415]]=_0xcf2dx46;return _0xcf2dx47};EditorUi[_0xedc0[10]][_0xedc0[420]]=function(_0xcf2dx46){var _0xcf2dx47=document[_0xedc0[414]](_0xcf2dx46);return _0xcf2dx47};EditorUi[_0xedc0[10]][_0xedc0[421]]=function(_0xcf2dx46){var _0xcf2dx47=document[_0xedc0[414]](_0xedc0[422]);_0xcf2dx47[_0xedc0[415]]=_0xcf2dx46;return _0xcf2dx47};EditorUi[_0xedc0[10]][_0xedc0[412]]=function(_0xcf2dx47,_0xcf2dx48,_0xcf2dx49,_0xcf2dx4a){var _0xcf2dx4b=null;var _0xcf2dx4c=null;function _0xcf2dx4d(){return parseInt(((_0xcf2dx48)?_0xcf2dx47[_0xedc0[6]][_0xedc0[381]]:_0xcf2dx47[_0xedc0[6]][_0xedc0[380]]))}function _0xcf2dx4e(_0xcf2dx6){if(_0xcf2dx4b!=null){var _0xcf2dx4f= new mxPoint(mxEvent[_0xedc0[423]](_0xcf2dx6),mxEvent[_0xedc0[424]](_0xcf2dx6));_0xcf2dx4a(Math[_0xedc0[374]](0,_0xcf2dx4c+((_0xcf2dx48)?(_0xcf2dx4f[_0xedc0[425]]-_0xcf2dx4b[_0xedc0[425]]):(_0xcf2dx4b[_0xedc0[426]]-_0xcf2dx4f[_0xedc0[426]]))-_0xcf2dx49));mxEvent[_0xedc0[105]](_0xcf2dx6)}}function _0xcf2dx50(_0xcf2dx6){_0xcf2dx4e(_0xcf2dx6);_0xcf2dx4b=null;_0xcf2dx4c=null}mxEvent[_0xedc0[113]](_0xcf2dx47,function(_0xcf2dx6){_0xcf2dx4b= new mxPoint(mxEvent[_0xedc0[423]](_0xcf2dx6),mxEvent[_0xedc0[424]](_0xcf2dx6));_0xcf2dx4c=_0xcf2dx4d();mxEvent[_0xedc0[105]](_0xcf2dx6)});mxEvent[_0xedc0[33]](document,_0xedc0[427],_0xcf2dx4e);mxEvent[_0xedc0[33]](document,_0xedc0[428],_0xcf2dx4e);mxEvent[_0xedc0[33]](document,_0xedc0[429],_0xcf2dx50);mxEvent[_0xedc0[33]](document,_0xedc0[430],_0xcf2dx50)};EditorUi[_0xedc0[10]][_0xedc0[104]]=function(_0xcf2dx47,_0xcf2dx3e,_0xcf2dx3f,_0xcf2dx51,_0xcf2dx52,_0xcf2dx53){this[_0xedc0[431]]();this[_0xedc0[432]]= new Dialog(this,_0xcf2dx47,_0xcf2dx3e,(mxClient[_0xedc0[433]])?_0xcf2dx3f-12:_0xcf2dx3f,_0xcf2dx51,_0xcf2dx52,_0xcf2dx53)};EditorUi[_0xedc0[10]][_0xedc0[431]]=function(){if(this[_0xedc0[432]]!=null){this[_0xedc0[432]][_0xedc0[434]]();this[_0xedc0[432]]=null;this[_0xedc0[0]][_0xedc0[4]][_0xedc0[1]][_0xedc0[47]]()}};EditorUi[_0xedc0[10]][_0xedc0[435]]=function(_0xcf2dx54){if(!_0xcf2dx54&&this[_0xedc0[0]][_0xedc0[156]]!=null){this[_0xedc0[202]](this[_0xedc0[0]][_0xedc0[436]]())}else {this[_0xedc0[104]]( new SaveDialog(this)[_0xedc0[1]],300,100,true,true)}};EditorUi[_0xedc0[10]][_0xedc0[437]]=function(_0xcf2dx54){if(!_0xcf2dx54&&this[_0xedc0[0]][_0xedc0[156]]!=null){this[_0xedc0[302]](this[_0xedc0[0]][_0xedc0[436]]())}else {}};EditorUi[_0xedc0[10]][_0xedc0[438]]=function(_0xcf2dx55,_0xcf2dx56,_0xcf2dx57){var _0xcf2dx3=this[_0xedc0[0]][_0xedc0[4]];var _0xcf2dxb=_0xcf2dx3[_0xedc0[340]]();_0xcf2dx56=this[_0xedc0[439]]!=null?this[_0xedc0[439]]:_0xcf2dx56;_0xcf2dx3[_0xedc0[96]]()[_0xedc0[440]]();try{_0xcf2dx55[_0xedc0[441]](_0xcf2dx3[_0xedc0[300]](),_0xcf2dxb)}catch(e){throw e}finally{if(_0xcf2dx56&&navigator[_0xedc0[443]][_0xedc0[100]](_0xedc0[442])<0){var _0xcf2dx58= new mxMorphing(_0xcf2dx3);_0xcf2dx58[_0xedc0[33]](mxEvent.DONE,mxUtils[_0xedc0[20]](this,function(){_0xcf2dx3[_0xedc0[96]]()[_0xedc0[444]]()}));_0xcf2dx58[_0xedc0[445]]()}else {_0xcf2dx3[_0xedc0[96]]()[_0xedc0[444]]()}}};EditorUi[_0xedc0[10]][_0xedc0[128]]=function(_0xcf2dx1){var _0xcf2dx3=this[_0xedc0[0]][_0xedc0[4]];var _0xcf2dxf= new mxKeyHandler(_0xcf2dx3);_0xcf2dxf[_0xedc0[446]]=function(_0xcf2dx6){return mxEvent[_0xedc0[446]](_0xcf2dx6)||(mxClient[_0xedc0[447]]&&_0xcf2dx6[_0xedc0[448]])};function _0xcf2dx59(_0xcf2dx5a){if(!_0xcf2dx3[_0xedc0[321]]()){var _0xcf2dx49=0;var _0xcf2dx5b=0;if(_0xcf2dx5a==37){_0xcf2dx49= -1}else {if(_0xcf2dx5a==38){_0xcf2dx5b= -1}else {if(_0xcf2dx5a==39){_0xcf2dx49=1}else {if(_0xcf2dx5a==40){_0xcf2dx5b=1}}}};_0xcf2dx3[_0xedc0[449]](_0xcf2dx3[_0xedc0[322]](),_0xcf2dx49,_0xcf2dx5b);_0xcf2dx3[_0xedc0[450]](_0xcf2dx3[_0xedc0[340]]())}}var _0xcf2dx5c=mxUtils[_0xedc0[20]](this,function(_0xcf2dx5d,_0xcf2dx5e,_0xcf2dx2e,_0xcf2dx5f){var _0xcf2dx60=this[_0xedc0[12]][_0xedc0[143]](_0xcf2dx2e);if(_0xcf2dx60!=null){var _0xcf2dx1f=function(){if(_0xcf2dx60[_0xedc0[451]]){_0xcf2dx60[_0xedc0[452]]()}};if(_0xcf2dx5e){if(_0xcf2dx5f){_0xcf2dxf[_0xedc0[453]](_0xcf2dx5d,_0xcf2dx1f)}else {_0xcf2dxf[_0xedc0[454]](_0xcf2dx5d,_0xcf2dx1f)}}else {if(_0xcf2dx5f){_0xcf2dxf[_0xedc0[455]](_0xcf2dx5d,_0xcf2dx1f)}else {_0xcf2dxf[_0xedc0[456]](_0xcf2dx5d,_0xcf2dx1f)}}}});var _0xcf2dx61=this;var _0xcf2dx62=_0xcf2dxf[_0xedc0[457]];_0xcf2dxf[_0xedc0[457]]=function(_0xcf2dx6){_0xcf2dx61[_0xedc0[431]]();_0xcf2dx62[_0xedc0[50]](this,arguments)};_0xcf2dxf[_0xedc0[458]]=function(){};_0xcf2dxf[_0xedc0[456]](8,function(){_0xcf2dx3[_0xedc0[459]](true)});_0xcf2dxf[_0xedc0[456]](13,function(){_0xcf2dx3[_0xedc0[459]](false)});_0xcf2dxf[_0xedc0[456]](33,function(){_0xcf2dx3[_0xedc0[363]]()});_0xcf2dxf[_0xedc0[456]](34,function(){_0xcf2dx3[_0xedc0[364]]()});_0xcf2dxf[_0xedc0[456]](36,function(){_0xcf2dx3[_0xedc0[362]]()});_0xcf2dxf[_0xedc0[456]](35,function(){_0xcf2dx3[_0xedc0[15]]()});_0xcf2dxf[_0xedc0[456]](37,function(){_0xcf2dx59(37)});_0xcf2dxf[_0xedc0[456]](38,function(){_0xcf2dx59(38)});_0xcf2dxf[_0xedc0[456]](39,function(){_0xcf2dx59(39)});_0xcf2dxf[_0xedc0[456]](40,function(){_0xcf2dx59(40)});_0xcf2dxf[_0xedc0[456]](113,function(){_0xcf2dx3[_0xedc0[101]]()});_0xcf2dx5c(46,false,_0xedc0[323]);_0xcf2dx5c(82,true,_0xedc0[333]);_0xcf2dx5c(83,true,_0xedc0[202]);_0xcf2dx5c(83,true,_0xedc0[210],true);_0xcf2dx5c(107,false,_0xedc0[460]);_0xcf2dx5c(109,false,_0xedc0[461]);_0xcf2dx5c(65,true,_0xedc0[462]);_0xcf2dx5c(86,true,_0xedc0[463],true);_0xcf2dx5c(69,true,_0xedc0[464],true);_0xcf2dx5c(69,true,_0xedc0[465]);_0xcf2dx5c(66,true,_0xedc0[329]);_0xcf2dx5c(70,true,_0xedc0[328]);_0xcf2dx5c(68,true,_0xedc0[324]);_0xcf2dx5c(90,true,_0xedc0[317]);_0xcf2dx5c(89,true,_0xedc0[318]);_0xcf2dx5c(88,true,_0xedc0[146]);_0xcf2dx5c(67,true,_0xedc0[147]);_0xcf2dx5c(81,true,_0xedc0[466]);_0xcf2dx5c(86,true,_0xedc0[142]);_0xcf2dx5c(71,true,_0xedc0[339]);_0xcf2dx5c(71,true,_0xedc0[467],true);_0xcf2dx5c(85,true,_0xedc0[341]);_0xcf2dx5c(112,false,_0xedc0[468]);_0xcf2dx5c(80,true,_0xedc0[302],true);return _0xcf2dxf};EditorUi[_0xedc0[10]][_0xedc0[56]]=function(_0xcf2dx3,_0xcf2dx37,_0xcf2dx63,_0xcf2dx64){for(var _0xcf2dx38=0;_0xcf2dx38<_0xcf2dx37[_0xedc0[174]];_0xcf2dx38++){_0xcf2dx3[_0xedc0[471]]( new mxMultiplicity(true,_0xcf2dx37[_0xcf2dx38],null,null,_0xcf2dx63[_0xcf2dx38][0],_0xcf2dx63[_0xcf2dx38][1],null,mxResources[_0xedc0[143]](_0xcf2dx37[_0xcf2dx38])+mxResources[_0xedc0[143]](_0xedc0[469])+_0xcf2dx63[_0xcf2dx38][0]+mxResources[_0xedc0[143]](_0xedc0[470]),null));_0xcf2dx3[_0xedc0[471]]( new mxMultiplicity(false,_0xcf2dx37[_0xcf2dx38],null,null,_0xcf2dx64[_0xcf2dx38][0],_0xcf2dx64[_0xcf2dx38][1],null,mxResources[_0xedc0[143]](_0xcf2dx37[_0xcf2dx38])+mxResources[_0xedc0[143]](_0xedc0[469])+_0xcf2dx64[_0xcf2dx38][0]+mxResources[_0xedc0[143]](_0xedc0[472]),null))}}
\ No newline at end of file