(function(){var A=function(){return this}();A||"undefined"==typeof window||(A=window);var C=function(c,a,b){"string"!==typeof c?C.original?C.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace()):(2==arguments.length&&(b=a),C.modules[c]||(C.payloads[c]=b,C.modules[c]=null))};C.modules={};C.payloads={};var J=function(c,a,b){if("string"===typeof a){if(c=f(c,a),void 0!=c)return b&&b(),c}else if("[object Array]"===Object.prototype.toString.call(a)){for(var d=
	[],g=0,l=a.length;g<l;++g){var n=f(c,a[g]);if(void 0==n&&y.original)return;d.push(n)}return b&&b.apply(null,d)||!0}},y=function(c,a){var b=J("",c,a);return void 0==b&&y.original?y.original.apply(this,arguments):b},q=function(c,a){if(-1!==a.indexOf("!"))return a=a.split("!"),q(c,a[0])+"!"+q(c,a[1]);if("."==a.charAt(0))for(a=c.split("/").slice(0,-1).join("/")+"/"+a;-1!==a.indexOf(".")&&b!=a;){var b=a;a=a.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}return a},f=function(c,a){a=q(c,a);c=C.modules[a];
	if(!c){c=C.payloads[a];if("function"===typeof c){var b={},d={id:a,uri:"",exports:b,packaged:!0};b=c(function(g,l){return J(a,g,l)},b,d)||d.exports;C.modules[a]=b;delete C.payloads[a]}c=C.modules[a]=b||c}return c};(function(c){var a=A;c&&(A[c]||(A[c]={}),a=A[c]);a.define&&a.define.packaged||(C.original=a.define,a.define=C,a.define.packaged=!0);a.require&&a.require.packaged||(y.original=a.require,a.require=y,a.require.packaged=!0)})("ace")})();
	ace.define("ace/lib/fixoldbrowsers",["require","exports","module"],function(A,C,J){"undefined"==typeof Element||Element.prototype.remove||Object.defineProperty(Element.prototype,"remove",{enumerable:!1,writable:!0,configurable:!0,value:function(){this.parentNode&&this.parentNode.removeChild(this)}})});
	ace.define("ace/lib/useragent",["require","exports","module"],function(A,C,J){C.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"};C.getOS=function(){return C.isMac?C.OS.MAC:C.isLinux?C.OS.LINUX:C.OS.WINDOWS};var y="object"==typeof navigator?navigator:{};A=(/mac|win|linux/i.exec(y.platform)||["other"])[0].toLowerCase();J=y.userAgent||"";y=y.appName||"";C.isWin="win"==A;C.isMac="mac"==A;C.isLinux="linux"==A;C.isIE="Microsoft Internet Explorer"==y||0<=y.indexOf("MSAppHost")?parseFloat((J.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||
	[])[1]):parseFloat((J.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]);C.isOldIE=C.isIE&&9>C.isIE;C.isGecko=C.isMozilla=J.match(/ Gecko\/\d+/);C.isOpera="object"==typeof opera&&"[object Opera]"==Object.prototype.toString.call(window.opera);C.isWebKit=parseFloat(J.split("WebKit/")[1])||void 0;C.isChrome=parseFloat(J.split(" Chrome/")[1])||void 0;C.isEdge=parseFloat(J.split(" Edge/")[1])||void 0;C.isAIR=0<=J.indexOf("AdobeAIR");C.isAndroid=0<=J.indexOf("Android");C.isChromeOS=0<=
	J.indexOf(" CrOS ");C.isIOS=/iPad|iPhone|iPod/.test(J)&&!window.MSStream;C.isIOS&&(C.isMac=!0);C.isMobile=C.isIOS||C.isAndroid});
	ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(A,C,J){A=A("./useragent");C.buildDom=function a(q,f,c){if("string"==typeof q&&q)return q=document.createTextNode(q),f&&f.appendChild(q),q;if(!Array.isArray(q))return q&&q.appendChild&&f&&f.appendChild(q),q;if("string"!=typeof q[0]||!q[0]){for(var b=[],d=0;d<q.length;d++){var g=a(q[d],f,c);g&&b.push(g)}return b}var l=document.createElement(q[0]),n=q[1];b=1;n&&"object"==typeof n&&!Array.isArray(n)&&(b=2);for(d=b;d<
	q.length;d++)a(q[d],l,c);2==b&&Object.keys(n).forEach(function(h){var t=n[h];"class"===h?l.className=Array.isArray(t)?t.join(" "):t:"function"==typeof t||"value"==h||"$"==h[0]?l[h]=t:"ref"===h?c&&(c[t]=l):null!=t&&l.setAttribute(h,t)});f&&f.appendChild(l);return l};C.getDocumentHead=function(q){q||(q=document);return q.head||q.getElementsByTagName("head")[0]||q.documentElement};C.createElement=function(q,f){return document.createElementNS?document.createElementNS(f||"http://www.w3.org/1999/xhtml",
	q):document.createElement(q)};C.removeChildren=function(q){q.innerHTML=""};C.createTextNode=function(q,f){return(f?f.ownerDocument:document).createTextNode(q)};C.createFragment=function(q){return(q?q.ownerDocument:document).createDocumentFragment()};C.hasCssClass=function(q,f){return-1!==(q.className+"").split(/\s+/g).indexOf(f)};C.addCssClass=function(q,f){C.hasCssClass(q,f)||(q.className+=" "+f)};C.removeCssClass=function(q,f){for(var c=q.className.split(/\s+/g);;){var a=c.indexOf(f);if(-1==a)break;
	c.splice(a,1)}q.className=c.join(" ")};C.toggleCssClass=function(q,f){for(var c=q.className.split(/\s+/g),a=!0;;){var b=c.indexOf(f);if(-1==b)break;a=!1;c.splice(b,1)}a&&c.push(f);q.className=c.join(" ");return a};C.setCssClass=function(q,f,c){c?C.addCssClass(q,f):C.removeCssClass(q,f)};C.hasCssString=function(q,f){var c=0;f=f||document;if(f=f.querySelectorAll("style"))for(;c<f.length;)if(f[c++].id===q)return!0};C.importCssString=function(q,f,c){var a;c&&c.getRootNode?(a=c.getRootNode())&&a!=c||(a=
	document):a=document;c=a.ownerDocument||a;if(f&&C.hasCssString(f,a))return null;f&&(q+="\n/*# sourceURL=ace/css/"+f+" */");var b=C.createElement("style");b.appendChild(c.createTextNode(q));f&&(b.id=f);a==c&&(a=C.getDocumentHead(c));a.insertBefore(b,a.firstChild)};C.importCssStylsheet=function(q,f){C.buildDom(["link",{rel:"stylesheet",href:q}],C.getDocumentHead(f))};C.scrollbarWidth=function(q){var f=C.createElement("ace_inner");f.style.width="100%";f.style.minWidth="0px";f.style.height="200px";f.style.display=
	"block";var c=C.createElement("ace_outer"),a=c.style;a.position="absolute";a.left="-10000px";a.overflow="hidden";a.width="200px";a.minWidth="0px";a.height="150px";a.display="block";c.appendChild(f);q=q.documentElement;q.appendChild(c);var b=f.offsetWidth;a.overflow="scroll";f=f.offsetWidth;b==f&&(f=c.clientWidth);q.removeChild(c);return b-f};"undefined"==typeof document&&(C.importCssString=function(){});C.computedStyle=function(q,f){return window.getComputedStyle(q,"")||{}};C.setStyle=function(q,
	f,c){q[f]!==c&&(q[f]=c)};C.HAS_CSS_ANIMATION=!1;C.HAS_CSS_TRANSFORMS=!1;C.HI_DPI=A.isWin?"undefined"!==typeof window&&1.5<=window.devicePixelRatio:!0;"undefined"!==typeof document&&(J=document.createElement("div"),C.HI_DPI&&void 0!==J.style.transform&&(C.HAS_CSS_TRANSFORMS=!0),A.isEdge||"undefined"===typeof J.style.animationName||(C.HAS_CSS_ANIMATION=!0),J=null);C.translate=C.HAS_CSS_TRANSFORMS?function(q,f,c){q.style.transform="translate("+Math.round(f)+"px, "+Math.round(c)+"px)"}:function(q,f,c){q.style.top=
	Math.round(c)+"px";q.style.left=Math.round(f)+"px"}});ace.define("ace/lib/oop",["require","exports","module"],function(A,C,J){C.inherits=function(y,q){y.super_=q;y.prototype=Object.create(q.prototype,{constructor:{value:y,enumerable:!1,writable:!0,configurable:!0}})};C.mixin=function(y,q){for(var f in q)y[f]=q[f];return y};C.implement=function(y,q){C.mixin(y,q)}});
	ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(A,C,J){var y=A("./oop"),q=function(){var f={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta",91:"MetaLeft",92:"MetaRight",93:"ContextMenu"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,"super":8,meta:8,command:8,cmd:8,control:1},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",
	96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",
	79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}},c;for(c in f.FUNCTION_KEYS){var a=f.FUNCTION_KEYS[c].toLowerCase();f[a]=parseInt(c,10)}for(c in f.PRINTABLE_KEYS)a=f.PRINTABLE_KEYS[c].toLowerCase(),f[a]=parseInt(c,10);y.mixin(f,f.MODIFIER_KEYS);y.mixin(f,f.PRINTABLE_KEYS);y.mixin(f,f.FUNCTION_KEYS);f.enter=f["return"];f.escape=f.esc;
	f.del=f["delete"];f[173]="-";(function(){for(var b=["cmd","ctrl","alt","shift"],d=Math.pow(2,b.length);d--;)f.KEY_MODS[d]=b.filter(function(g){return d&f.KEY_MODS[g]}).join("-")+"-"})();f.KEY_MODS[0]="";f.KEY_MODS[-1]="input-";return f}();y.mixin(C,q);C.keyCodeToString=function(f){var c=q[f];"string"!=typeof c&&(c=String.fromCharCode(f));return c.toLowerCase()}});
	ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(A,C,J){function y(){n=!1;try{document.createComment("").addEventListener("test",function(){},{get passive(){n={passive:!1}}})}catch(k){}}function q(){void 0==n&&y();return n}function f(k,e,p){this.elem=k;this.type=e;this.callback=p}function c(k,e,p){var v=r(e);if(!d.isMac&&g){e.getModifierState&&(e.getModifierState("OS")||e.getModifierState("Win"))&&(v|=8);if(g.altGr)if(3!=(3&v))g.altGr=0;else return;
	if(18===p||17===p){var w="location"in e?e.location:e.keyLocation;17===p&&1===w?1==g[p]&&(l=e.timeStamp):18===p&&3===v&&2===w&&50>e.timeStamp-l&&(g.altGr=!0)}}p in b.MODIFIER_KEYS&&(p=-1);if(!v&&13===p&&(w="location"in e?e.location:e.keyLocation,3===w&&(k(e,v,-p),e.defaultPrevented)))return;if(d.isChromeOS&&v&8){k(e,v,p);if(e.defaultPrevented)return;v&=-9}return v||p in b.FUNCTION_KEYS||p in b.PRINTABLE_KEYS?k(e,v,p):!1}function a(){g=Object.create(null)}var b=A("./keys"),d=A("./useragent"),g=null,
	l=0,n;f.prototype.destroy=function(){t(this.elem,this.type,this.callback);this.elem=this.type=this.callback=void 0};var h=C.addListener=function(k,e,p,v){k.addEventListener(e,p,q());v&&v.$toDestroy.push(new f(k,e,p))},t=C.removeListener=function(k,e,p){k.removeEventListener(e,p,q())};C.stopEvent=function(k){C.stopPropagation(k);C.preventDefault(k);return!1};C.stopPropagation=function(k){k.stopPropagation&&k.stopPropagation()};C.preventDefault=function(k){k.preventDefault&&k.preventDefault()};C.getButton=
	function(k){return"dblclick"==k.type?0:"contextmenu"==k.type||d.isMac&&k.ctrlKey&&!k.altKey&&!k.shiftKey?2:k.button};C.capture=function(k,e,p){function v(m){e&&e(m);p&&p(m);t(w,"mousemove",e);t(w,"mouseup",v);t(w,"dragstart",v)}var w=k&&k.ownerDocument||document;h(w,"mousemove",e);h(w,"mouseup",v);h(w,"dragstart",v);return v};C.addMouseWheelListener=function(k,e,p){"onmousewheel"in k?h(k,"mousewheel",function(v){void 0!==v.wheelDeltaX?(v.wheelX=-v.wheelDeltaX/8,v.wheelY=-v.wheelDeltaY/8):(v.wheelX=
	0,v.wheelY=-v.wheelDelta/8);e(v)},p):"onwheel"in k?h(k,"wheel",function(v){switch(v.deltaMode){case v.DOM_DELTA_PIXEL:v.wheelX=.35*v.deltaX||0;v.wheelY=.35*v.deltaY||0;break;case v.DOM_DELTA_LINE:case v.DOM_DELTA_PAGE:v.wheelX=5*(v.deltaX||0),v.wheelY=5*(v.deltaY||0)}e(v)},p):h(k,"DOMMouseScroll",function(v){v.axis&&v.axis==v.HORIZONTAL_AXIS?(v.wheelX=5*(v.detail||0),v.wheelY=0):(v.wheelX=0,v.wheelY=5*(v.detail||0));e(v)},p)};C.addMultiMouseDownListener=function(k,e,p,v,w){function m(G){0!==C.getButton(G)?
	u=0:1<G.detail?(u++,4<u&&(u=1)):u=1;if(d.isIE){var H=5<Math.abs(G.clientX-z)||5<Math.abs(G.clientY-B);if(!D||H)u=1;D&&clearTimeout(D);D=setTimeout(function(){D=null},e[u-1]||600);1==u&&(z=G.clientX,B=G.clientY)}G._clicks=u;p[v]("mousedown",G);if(4<u)u=0;else if(1<u)return p[v](E[u],G)}var u=0,z,B,D,E={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(k)||(k=[k]);k.forEach(function(G){h(G,"mousedown",m,w)})};var r=function(k){return 0|(k.ctrlKey?1:0)|(k.altKey?2:0)|(k.shiftKey?4:0)|(k.metaKey?
	8:0)};C.getModifierString=function(k){return b.KEY_MODS[r(k)]};C.addCommandKeyListener=function(k,e,p){if(d.isOldGecko||d.isOpera&&!("KeyboardEvent"in window)){var v=null;h(k,"keydown",function(m){v=m.keyCode},p);h(k,"keypress",function(m){return c(e,m,v)},p)}else{var w=null;h(k,"keydown",function(m){g[m.keyCode]=(g[m.keyCode]||0)+1;var u=c(e,m,m.keyCode);w=m.defaultPrevented;return u},p);h(k,"keypress",function(m){w&&(m.ctrlKey||m.altKey||m.shiftKey||m.metaKey)&&(C.stopEvent(m),w=null)},p);h(k,"keyup",
	function(m){g[m.keyCode]=null},p);g||(a(),h(window,"focus",a))}};if("object"==typeof window&&window.postMessage&&!d.isOldIE){var x=1;C.nextTick=function(k,e){e=e||window;var p="zero-timeout-message-"+x++,v=function(w){w.data==p&&(C.stopPropagation(w),t(e,"message",v),k())};h(e,"message",v);e.postMessage(p,"*")}}C.$idleBlocked=!1;C.onIdle=function(k,e){return setTimeout(function v(){C.$idleBlocked?setTimeout(v,100):k()},e)};C.$idleBlockId=null;C.blockIdle=function(k){C.$idleBlockId&&clearTimeout(C.$idleBlockId);
	C.$idleBlocked=!0;C.$idleBlockId=setTimeout(function(){C.$idleBlocked=!1},k||100)};C.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame);C.nextFrame=C.nextFrame?C.nextFrame.bind(window):function(k){setTimeout(k,17)}});
	ace.define("ace/range",["require","exports","module"],function(A,C,J){var y=function(q,f,c,a){this.start={row:q,column:f};this.end={row:c,column:a}};(function(){this.isEqual=function(q){return this.start.row===q.start.row&&this.end.row===q.end.row&&this.start.column===q.start.column&&this.end.column===q.end.column};this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"};this.contains=function(q,f){return 0==this.compare(q,f)};this.compareRange=
	function(q){var f=q.end;q=q.start;f=this.compare(f.row,f.column);if(1==f)return f=this.compare(q.row,q.column),1==f?2:0==f?1:0;if(-1==f)return-2;f=this.compare(q.row,q.column);return-1==f?-1:1==f?42:0};this.comparePoint=function(q){return this.compare(q.row,q.column)};this.containsRange=function(q){return 0==this.comparePoint(q.start)&&0==this.comparePoint(q.end)};this.intersects=function(q){q=this.compareRange(q);return-1==q||0==q||1==q};this.isEnd=function(q,f){return this.end.row==q&&this.end.column==
	f};this.isStart=function(q,f){return this.start.row==q&&this.start.column==f};this.setStart=function(q,f){"object"==typeof q?(this.start.column=q.column,this.start.row=q.row):(this.start.row=q,this.start.column=f)};this.setEnd=function(q,f){"object"==typeof q?(this.end.column=q.column,this.end.row=q.row):(this.end.row=q,this.end.column=f)};this.inside=function(q,f){return 0!=this.compare(q,f)||this.isEnd(q,f)||this.isStart(q,f)?!1:!0};this.insideStart=function(q,f){return 0!=this.compare(q,f)||this.isEnd(q,
	f)?!1:!0};this.insideEnd=function(q,f){return 0!=this.compare(q,f)||this.isStart(q,f)?!1:!0};this.compare=function(q,f){return this.isMultiLine()||q!==this.start.row?q<this.start.row?-1:q>this.end.row?1:this.start.row===q?f>=this.start.column?0:-1:this.end.row===q?f<=this.end.column?0:1:0:f<this.start.column?-1:f>this.end.column?1:0};this.compareStart=function(q,f){return this.start.row==q&&this.start.column==f?-1:this.compare(q,f)};this.compareEnd=function(q,f){return this.end.row==q&&this.end.column==
	f?1:this.compare(q,f)};this.compareInside=function(q,f){return this.end.row==q&&this.end.column==f?1:this.start.row==q&&this.start.column==f?-1:this.compare(q,f)};this.clipRows=function(q,f){if(this.end.row>f)var c={row:f+1,column:0};else this.end.row<q&&(c={row:q,column:0});if(this.start.row>f)var a={row:f+1,column:0};else this.start.row<q&&(a={row:q,column:0});return y.fromPoints(a||this.start,c||this.end)};this.extend=function(q,f){var c=this.compare(q,f);if(0==c)return this;if(-1==c)var a={row:q,
	column:f};else var b={row:q,column:f};return y.fromPoints(a||this.start,b||this.end)};this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column};this.isMultiLine=function(){return this.start.row!==this.end.row};this.clone=function(){return y.fromPoints(this.start,this.end)};this.collapseRows=function(){return 0==this.end.column?new y(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new y(this.start.row,0,this.end.row,0)};this.toScreenRange=function(q){var f=
	q.documentToScreenPosition(this.start);q=q.documentToScreenPosition(this.end);return new y(f.row,f.column,q.row,q.column)};this.moveBy=function(q,f){this.start.row+=q;this.start.column+=f;this.end.row+=q;this.end.column+=f}}).call(y.prototype);y.fromPoints=function(q,f){return new y(q.row,q.column,f.row,f.column)};y.comparePoints=function(q,f){return q.row-f.row||q.column-f.column};y.comparePoints=function(q,f){return q.row-f.row||q.column-f.column};C.Range=y});
	ace.define("ace/lib/lang",["require","exports","module"],function(A,C,J){C.last=function(f){return f[f.length-1]};C.stringReverse=function(f){return f.split("").reverse().join("")};C.stringRepeat=function(f,c){for(var a="";0<c;)if(c&1&&(a+=f),c>>=1)f+=f;return a};var y=/^\s\s*/,q=/\s\s*$/;C.stringTrimLeft=function(f){return f.replace(y,"")};C.stringTrimRight=function(f){return f.replace(q,"")};C.copyObject=function(f){var c={},a;for(a in f)c[a]=f[a];return c};C.copyArray=function(f){for(var c=[],
	a=0,b=f.length;a<b;a++)c[a]=f[a]&&"object"==typeof f[a]?this.copyObject(f[a]):f[a];return c};C.deepCopy=function a(c){if("object"!==typeof c||!c)return c;if(Array.isArray(c)){var b=[];for(var d=0;d<c.length;d++)b[d]=a(c[d]);return b}if("[object Object]"!==Object.prototype.toString.call(c))return c;b={};for(d in c)b[d]=a(c[d]);return b};C.arrayToMap=function(c){for(var a={},b=0;b<c.length;b++)a[c[b]]=1;return a};C.createMap=function(c){var a=Object.create(null),b;for(b in c)a[b]=c[b];return a};C.arrayRemove=
	function(c,a){for(var b=0;b<=c.length;b++)a===c[b]&&c.splice(b,1)};C.escapeRegExp=function(c){return c.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")};C.escapeHTML=function(c){return(""+c).replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")};C.getMatchOffsets=function(c,a){var b=[];c.replace(a,function(d){b.push({offset:arguments[arguments.length-2],length:d.length})});return b};C.deferredCall=function(c){var a=null,b=function(){a=null;c()},d=function(g){d.cancel();
	a=setTimeout(b,g||0);return d};d.schedule=d;d.call=function(){this.cancel();c();return d};d.cancel=function(){clearTimeout(a);a=null;return d};d.isPending=function(){return a};return d};C.delayedCall=function(c,a){var b=null,d=function(){b=null;c()},g=function(l){null==b&&(b=setTimeout(d,l||a))};g.delay=function(l){b&&clearTimeout(b);b=setTimeout(d,l||a)};g.schedule=g;g.call=function(){this.cancel();c()};g.cancel=function(){b&&clearTimeout(b);b=null};g.isPending=function(){return b};return g}});
	ace.define("ace/clipboard",["require","exports","module"],function(A,C,J){var y;J.exports={lineMode:!1,pasteCancelled:function(){return y&&y>Date.now()-50?!0:y=!1},cancel:function(){y=Date.now()}}});
	ace.define("ace/keyboard/textinput","require exports module ace/lib/event ace/lib/useragent ace/lib/dom ace/lib/lang ace/clipboard ace/lib/keys".split(" "),function(A,C,J){var y=A("../lib/event"),q=A("../lib/useragent"),f=A("../lib/dom"),c=A("../lib/lang"),a=A("../clipboard"),b=18>q.isChrome,d=q.isIE,g=63<q.isChrome,l=A("../lib/keys"),n=l.KEY_MODS,h=q.isIOS,t=h?/\s/:/\n/,r=q.isMobile;C.TextInput=function(x,k){function e(){G=!0;w.blur();w.focus();G=!1}function p(){clearTimeout(fa);fa=setTimeout(function(){D&&
	(w.style.cssText=D,D="");k.renderer.$isMousePressed=!1;k.renderer.$keepTextAreaAtCursor&&k.renderer.$moveTextAreaToCursor()},0)}function v(K,O,Q){var R=null,T=!1;Q.addEventListener("keydown",function(S){R&&clearTimeout(R);T=!0},!0);Q.addEventListener("keyup",function(S){R=setTimeout(function(){T=!1},100)},!0);var Y=function(S){if(document.activeElement===Q&&!(T||z||O.$mouseHandler.isMousePressed||m)){S=Q.selectionStart;var X=Q.selectionEnd,W=null,V=0;if(0==S)W=l.up;else if(1==S)W=l.home;else if(X>
	F&&"\n"==H[X])W=l.end;else if(S<I&&" "==H[S-1])W=l.left,V=n.option;else if(S<I||S==I&&F!=I&&S==X)W=l.left;else if(X>F&&2<H.slice(0,X).split("\n").length)W=l.down;else if(X>F&&" "==H[X-1])W=l.right,V=n.option;else if(X>F||X==F&&F!=I&&S==X)W=l.right;S!==X&&(V|=n.shift);W&&(!O.onCommandKey({},V,W)&&O.commands&&(W=l.keyCodeToString(W),(W=O.commands.findKeyCommand(V,W))&&O.execCommand(W)),I=S,F=X,N(""))}};document.addEventListener("selectionchange",Y);O.on("destroy",function(){document.removeEventListener("selectionchange",
	Y)})}var w=f.createElement("textarea");w.className="ace_text-input";w.setAttribute("wrap","off");w.setAttribute("autocorrect","off");w.setAttribute("autocapitalize","off");w.setAttribute("spellcheck",!1);w.style.opacity="0";x.insertBefore(w,x.firstChild);var m=!1,u=!1,z=!1,B=!1,D="";r||(w.style.fontSize="1px");var E=!1,G=!1,H="",I=0,F=0,L=0;try{var M=document.activeElement===w}catch(K){}y.addListener(w,"blur",function(K){G||(k.onBlur(K),M=!1)},k);y.addListener(w,"focus",function(K){if(!G){M=!0;if(q.isEdge)try{if(!document.hasFocus())return}catch(O){}k.onFocus(K);
	q.isEdge?setTimeout(N):N()}},k);this.$focusScroll=!1;this.focus=function(){if(D||g||"browser"==this.$focusScroll)return w.focus({preventScroll:!0});var K=w.style.top;w.style.position="fixed";w.style.top="0px";try{var O=0!=w.getBoundingClientRect().top}catch(T){return}var Q=[];if(O)for(var R=w.parentElement;R&&1==R.nodeType;)Q.push(R),R.setAttribute("ace_nocontext",!0),R=!R.parentElement&&R.getRootNode?R.getRootNode().host:R.parentElement;w.focus({preventScroll:!0});O&&Q.forEach(function(T){T.removeAttribute("ace_nocontext")});
	setTimeout(function(){w.style.position="";"0px"==w.style.top&&(w.style.top=K)},0)};this.blur=function(){w.blur()};this.isFocused=function(){return M};k.on("beforeEndOperation",function(){var K=k.curOp,O=K&&K.command&&K.command.name;"insertstring"!=O&&(K=O&&(K.docChanged||K.selectionChanged),z&&K&&(H=w.value="",ia()),N())});var N=h?function(K){if(M&&(!m||K)&&!B){K||(K="");var O="\n ab"+K+"cde fg\n";O!=w.value&&(w.value=H=O);K=4+(K.length||(k.selection.isEmpty()?0:1));4==I&&F==K||w.setSelectionRange(4,
	K);I=4;F=K}}:function(){if(!z&&!B&&(M||U)){z=!0;var K=0,O=0,Q="";if(k.session){K=k.selection;var R=K.getRange(),T=K.cursor.row;K=R.start.column;O=R.end.column;Q=k.session.getLine(T);if(R.start.row!=T){var Y=k.session.getLine(T-1);K=R.start.row<T-1?0:K;O+=Y.length+1;Q=Y+"\n"+Q}else R.end.row!=T?(Y=k.session.getLine(T+1),O=R.end.row>T+1?Y.length:O,O+=Q.length+1,Q=Q+"\n"+Y):r&&0<T&&(Q="\n"+Q,O+=1,K+=1);400<Q.length&&(400>K&&400>O?Q=Q.slice(0,400):(Q="\n",K==O?K=O=0:(K=0,O=1)))}R=Q+"\n\n";R!=H&&(w.value=
	H=R,I=F=R.length);U&&(I=w.selectionStart,F=w.selectionEnd);if(F!=O||I!=K||w.selectionEnd!=F)try{w.setSelectionRange(K,O),I=K,F=O}catch(S){}z=!1}};this.resetSelection=N;if(M)k.onFocus();var P=null;this.setInputHandler=function(K){P=K};this.getInputHandler=function(){return P};var U=!1,Z=function(K,O){U&&(U=!1);if(u){N();if(K)k.onPaste(K);u=!1;return""}for(var Q=w.selectionStart,R=w.selectionEnd,T=I,Y=H.length-F,S,X=K.length-Q,W=K.length-R,V=0;0<T&&H[V]==K[V];)V++,T--;S=K.slice(V);for(V=1;0<Y&&H.length-
	V>I-1&&H[H.length-V]==K[K.length-V];)V++,Y--;X-=V-1;W-=V-1;V=S.length-V+1;0>V&&(T=-V,V=0);S=S.slice(0,V);if(!(O||S||X||T||Y||W))return"";B=!0;O=!1;q.isAndroid&&". "==S&&(S="  ",O=!0);if(S&&!T&&!Y&&!X&&!W||E)k.onTextInput(S);else k.onTextInput(S,{extendLeft:T,extendRight:Y,restoreStart:X,restoreEnd:W});B=!1;H=K;I=Q;F=R;L=W;return O?"\n":S},ba=function(K){if(z)return da();if(K&&K.inputType){if("historyUndo"==K.inputType)return k.execCommand("undo");if("historyRedo"==K.inputType)return k.execCommand("redo")}K=
	w.value;var O=Z(K,!0);(500<K.length||t.test(O)||r&&1>I&&I==F)&&N()},aa=function(K,O,Q){if((K=K.clipboardData||window.clipboardData)&&!b){var R=d||Q?"Text":"text/plain";try{return O?!1!==K.setData(R,O):K.getData(R)}catch(T){if(!Q)return aa(T,O,!0)}}},ca=function(K,O){var Q=k.getCopyText();if(!Q)return y.preventDefault(K);aa(K,Q)?(h&&(N(Q),m=Q,setTimeout(function(){m=!1},10)),O?k.onCut():k.onCopy(),y.preventDefault(K)):(m=!0,w.value=Q,w.select(),setTimeout(function(){m=!1;N();O?k.onCut():k.onCopy()}))},
	ea=function(K){ca(K,!0)},ja=function(K){ca(K,!1)},ka=function(K){var O=aa(K);if(!a.pasteCancelled())if("string"==typeof O){if(O)k.onPaste(O,K);q.isIE&&setTimeout(N);y.preventDefault(K)}else w.value="",u=!0};y.addCommandKeyListener(w,k.onCommandKey.bind(k),k);y.addListener(w,"select",function(K){z||(m?m=!1:0===w.selectionStart&&w.selectionEnd>=H.length&&w.value===H&&H&&w.selectionEnd!==F?(k.selectAll(),N()):r&&w.selectionStart!=I&&N())},k);y.addListener(w,"input",ba,k);y.addListener(w,"cut",ea,k);
	y.addListener(w,"copy",ja,k);y.addListener(w,"paste",ka,k);"oncut"in w&&"oncopy"in w&&"onpaste"in w||y.addListener(x,"keydown",function(K){if((!q.isMac||K.metaKey)&&K.ctrlKey)switch(K.keyCode){case 67:ja(K);break;case 86:ka(K);break;case 88:ea(K)}},k);var da=function(){if(z&&k.onCompositionUpdate&&!k.$readOnly){if(E)return e();if(z.useTextareaForIME)k.onCompositionUpdate(w.value);else Z(w.value),z.markerRange&&(z.context&&(z.markerRange.start.column=z.selectionStart=z.context.compositionStartOffset),
	z.markerRange.end.column=z.markerRange.start.column+F-z.selectionStart+L)}},ia=function(K){k.onCompositionEnd&&!k.$readOnly&&(z=!1,k.onCompositionEnd(),k.off("mousedown",e),K&&ba())},la=c.delayedCall(da,50).schedule.bind(null,null);y.addListener(w,"compositionstart",function(K){z||!k.onCompositionStart||k.$readOnly||(z={},E||(K.data&&(z.useTextareaForIME=!1),setTimeout(da,0),k._signal("compositionStart"),k.on("mousedown",e),K=k.getSelectionRange(),K.end.row=K.start.row,K.end.column=K.start.column,
	z.markerRange=K,z.selectionStart=I,k.onCompositionStart(z),z.useTextareaForIME?(H=w.value="",F=I=0):(w.msGetInputContext&&(z.context=w.msGetInputContext()),w.getInputContext&&(z.context=w.getInputContext()))))},k);y.addListener(w,"compositionupdate",da,k);y.addListener(w,"keyup",function(K){27==K.keyCode&&w.value.length<w.selectionStart&&(z||(H=w.value),I=F=-1,N());la()},k);y.addListener(w,"keydown",la,k);y.addListener(w,"compositionend",ia,k);this.getElement=function(){return w};this.setCommandMode=
	function(K){E=K;w.readOnly=!1};this.setReadOnly=function(K){E||(w.readOnly=K)};this.setCopyWithEmptySelection=function(K){};this.onContextMenu=function(K){U=!0;N();k._emit("nativecontextmenu",{target:k,domEvent:K});this.moveToMouse(K,!0)};this.moveToMouse=function(K,O){D||(D=w.style.cssText);w.style.cssText=(O?"z-index:100000;":"")+(q.isIE?"opacity:0.1;":"")+"text-indent: -"+(I+F)*k.renderer.characterWidth*.5+"px;";O=k.container.getBoundingClientRect();var Q=f.computedStyle(k.container),R=O.top+(parseInt(Q.borderTopWidth)||
	0),T=O.left+(parseInt(O.borderLeftWidth)||0),Y=O.bottom-R-w.clientHeight-2;O=function(S){f.translate(w,S.clientX-T-2,Math.min(S.clientY-R-2,Y))};O(K);"mousedown"==K.type&&(k.renderer.$isMousePressed=!0,clearTimeout(fa),q.isWin&&y.capture(k.container,O,p))};this.onContextMenuClose=p;var fa,ha=function(K){k.textInput.onContextMenu(K);p()};y.addListener(w,"mouseup",ha,k);y.addListener(w,"mousedown",function(K){K.preventDefault();p()},k);y.addListener(k.renderer.scroller,"contextmenu",ha,k);y.addListener(w,
	"contextmenu",ha,k);h&&v(x,k,w)};C.$setUserAgentForTests=function(x,k){r=x;h=k}});
	ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(A,C,J){function y(c){c.$clickSelection=null;var a=c.editor;a.setDefaultHandler("mousedown",this.onMouseDown.bind(c));a.setDefaultHandler("dblclick",this.onDoubleClick.bind(c));a.setDefaultHandler("tripleclick",this.onTripleClick.bind(c));a.setDefaultHandler("quadclick",this.onQuadClick.bind(c));a.setDefaultHandler("mousewheel",this.onMouseWheel.bind(c));"select startSelect selectEnd selectAllEnd selectByWordsEnd selectByLinesEnd dragWait dragWaitEnd focusWait".split(" ").forEach(function(b){c[b]=
	this[b]},this);c.selectByLines=this.extendSelectionBy.bind(c,"getLineRange");c.selectByWords=this.extendSelectionBy.bind(c,"getWordRange")}function q(c,a){return 0>(c.start.row==c.end.row?2*a.column-c.start.column-c.end.column:c.start.row!=c.end.row-1||c.start.column||c.end.column?2*a.row-c.start.row-c.end.row:a.column-4)?{cursor:c.start,anchor:c.end}:{cursor:c.end,anchor:c.start}}var f=A("../lib/useragent");(function(){this.onMouseDown=function(c){var a=c.inSelection(),b=c.getDocumentPosition();
	this.mousedownEvent=c;var d=this.editor,g=c.getButton();if(0!==g)(d.getSelectionRange().isEmpty()||1==g)&&d.selection.moveToPosition(b),2==g&&(d.textInput.onContextMenu(c.domEvent),f.isMozilla||c.preventDefault());else{this.mousedownEvent.time=Date.now();if(a&&!d.isFocused()&&(d.focus(),this.$focusTimeout&&!this.$clickSelection&&!d.inMultiSelectMode)){this.setState("focusWait");this.captureMouse(c);return}this.captureMouse(c);this.startSelect(b,1<c.domEvent._clicks);return c.preventDefault()}};this.startSelect=
	function(c,a){c=c||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var b=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?b.selection.selectToPosition(c):a||b.selection.moveToPosition(c),a||this.select(),b.renderer.scroller.setCapture&&b.renderer.scroller.setCapture(),b.setStyle("ace_selecting"),this.setState("select"))};this.select=function(){var c=this.editor,a=c.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var b=this.$clickSelection.comparePoint(a);
	-1==b?b=this.$clickSelection.end:1==b?b=this.$clickSelection.start:(b=q(this.$clickSelection,a),a=b.cursor,b=b.anchor);c.selection.setSelectionAnchor(b.row,b.column)}c.selection.selectToPosition(a);c.renderer.scrollCursorIntoView()};this.extendSelectionBy=function(c){var a=this.editor,b=a.renderer.screenToTextCoordinates(this.x,this.y);c=a.selection[c](b.row,b.column);if(this.$clickSelection){var d=this.$clickSelection.comparePoint(c.start);var g=this.$clickSelection.comparePoint(c.end);if(-1==d&&
	0>=g){if(d=this.$clickSelection.end,c.end.row!=b.row||c.end.column!=b.column)b=c.start}else if(1==g&&0<=d){if(d=this.$clickSelection.start,c.start.row!=b.row||c.start.column!=b.column)b=c.end}else-1==d&&1==g?(b=c.end,d=c.start):(c=q(this.$clickSelection,b),b=c.cursor,d=c.anchor);a.selection.setSelectionAnchor(d.row,d.column)}a.selection.selectToPosition(b);a.renderer.scrollCursorIntoView()};this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=
	null;this.editor.unsetStyle("ace_selecting");this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()};this.focusWait=function(){var c=Math.sqrt(Math.pow(this.x-this.mousedownEvent.x,2)+Math.pow(this.y-this.mousedownEvent.y,2)),a=Date.now();(0<c||a-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())};this.onDoubleClick=function(c){c=c.getDocumentPosition();var a=this.editor,b=a.session.getBracketRange(c);b?(b.isEmpty()&&
	(b.start.column--,b.end.column++),this.setState("select")):(b=a.selection.getWordRange(c.row,c.column),this.setState("selectByWords"));this.$clickSelection=b;this.select()};this.onTripleClick=function(c){c=c.getDocumentPosition();var a=this.editor;this.setState("selectByLines");var b=a.getSelectionRange();b.isMultiLine()&&b.contains(c.row,c.column)?(this.$clickSelection=a.selection.getLineRange(b.start.row),this.$clickSelection.end=a.selection.getLineRange(b.end.row).end):this.$clickSelection=a.selection.getLineRange(c.row);
	this.select()};this.onQuadClick=function(c){c=this.editor;c.selectAll();this.$clickSelection=c.getSelectionRange();this.setState("selectAll")};this.onMouseWheel=function(c){if(!c.getAccelKey()){c.getShiftKey()&&c.wheelY&&!c.wheelX&&(c.wheelX=c.wheelY,c.wheelY=0);var a=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var b=this.$lastScroll,d=c.domEvent.timeStamp,g=d-b.t,l=g?c.wheelX/g:b.vx,n=g?c.wheelY/g:b.vy;550>g&&(l=(l+b.vx)/2,n=(n+b.vy)/2);g=Math.abs(l/n);var h=!1;1<=
	g&&a.renderer.isScrollableBy(c.wheelX*c.speed,0)&&(h=!0);1>=g&&a.renderer.isScrollableBy(0,c.wheelY*c.speed)&&(h=!0);h?b.allowed=d:550>d-b.allowed&&(Math.abs(l)<=1.5*Math.abs(b.vx)&&Math.abs(n)<=1.5*Math.abs(b.vy)?(h=!0,b.allowed=d):b.allowed=0);b.t=d;b.vx=l;b.vy=n;if(h)return a.renderer.scrollBy(c.wheelX*c.speed,c.wheelY*c.speed),c.stop()}}}).call(y.prototype);C.DefaultHandlers=y});
	ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(A,C,J){function y(f){this.isOpen=!1;this.$element=null;this.$parentNode=f}A("./lib/oop");var q=A("./lib/dom");(function(){this.$init=function(){this.$element=q.createElement("div");this.$element.className="ace_tooltip";this.$element.style.display="none";this.$parentNode.appendChild(this.$element);return this.$element};this.getElement=function(){return this.$element||this.$init()};this.setText=function(f){this.getElement().textContent=
	f};this.setHtml=function(f){this.getElement().innerHTML=f};this.setPosition=function(f,c){this.getElement().style.left=f+"px";this.getElement().style.top=c+"px"};this.setClassName=function(f){q.addCssClass(this.getElement(),f)};this.show=function(f,c,a){null!=f&&this.setText(f);null!=c&&null!=a&&this.setPosition(c,a);this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)};this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)};this.getHeight=function(){return this.getElement().offsetHeight};
	this.getWidth=function(){return this.getElement().offsetWidth};this.destroy=function(){this.isOpen=!1;this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)}}).call(y.prototype);C.Tooltip=y});
	ace.define("ace/mouse/default_gutter_handler","require exports module ace/lib/dom ace/lib/oop ace/lib/event ace/tooltip".split(" "),function(A,C,J){function y(a){c.call(this,a)}var q=A("../lib/dom");J=A("../lib/oop");var f=A("../lib/event"),c=A("../tooltip").Tooltip;J.inherits(y,c);(function(){this.setPosition=function(a,b){var d=window.innerWidth||document.documentElement.clientWidth,g=window.innerHeight||document.documentElement.clientHeight,l=this.getWidth(),n=this.getHeight();a+=15;b+=15;a+l>
	d&&(a-=a+l-d);b+n>g&&(b-=20+n);c.prototype.setPosition.call(this,a,b)}}).call(y.prototype);C.GutterHandler=function(a){function b(){n&&(n=clearTimeout(n));t&&(l.hide(),t=null,d._signal("hideGutterTooltip",l),d.off("mousewheel",b))}var d=a.editor,g=d.renderer.$gutterLayer,l=new y(d.container);a.editor.setDefaultHandler("guttermousedown",function(r){if(d.isFocused()&&0==r.getButton()&&"foldWidgets"!=g.getRegion(r)){var x=r.getDocumentPosition().row,k=d.session.selection;if(r.getShiftKey())k.selectTo(x,
	0);else{if(2==r.domEvent.detail)return d.selectAll(),r.preventDefault();a.$clickSelection=d.selection.getLineRange(x)}a.setState("selectByLines");a.captureMouse(r);return r.preventDefault()}});var n,h,t;a.editor.setDefaultHandler("guttermousemove",function(r){if(q.hasCssClass(r.domEvent.target||r.domEvent.srcElement,"ace_fold-widget"))return b();t&&a.$tooltipFollowsMouse&&l.setPosition(r.x,r.y);h=r;n||(n=setTimeout(function(){n=null;if(h&&!a.isMousePressed)a:{var x=h.getDocumentPosition().row,k=g.$annotations[x];
	if(k){var e=d.session.getLength();if(x==e&&(x=d.renderer.pixelToScreenCoordinates(0,h.y).row,e=h.$pos,x>d.session.documentToScreenRow(e.row,e.column))){b();break a}t!=k&&(t=k.text.join("<br/>"),l.setHtml(t),l.show(),d._signal("showGutterTooltip",l),d.on("mousewheel",b),a.$tooltipFollowsMouse?l.setPosition(h.x,h.y):(k=h.domEvent.target.getBoundingClientRect(),x=l.getElement().style,x.left=k.right+"px",x.top=k.bottom+"px"))}else b()}else b()},50))});f.addListener(d.renderer.$gutter,"mouseout",function(r){h=
	null;t&&!n&&(n=setTimeout(function(){n=null;b()},50))},d);d.on("changeSession",b)}});
	ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(A,C,J){var y=A("../lib/event"),q=A("../lib/useragent");A=C.MouseEvent=function(f,c){this.domEvent=f;this.editor=c;this.x=this.clientX=f.clientX;this.y=this.clientY=f.clientY;this.$inSelection=this.$pos=null;this.defaultPrevented=this.propagationStopped=!1};(function(){this.stopPropagation=function(){y.stopPropagation(this.domEvent);this.propagationStopped=!0};this.preventDefault=function(){y.preventDefault(this.domEvent);
	this.defaultPrevented=!0};this.stop=function(){this.stopPropagation();this.preventDefault()};this.getDocumentPosition=function(){return this.$pos?this.$pos:this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)};this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var f=this.editor.getSelectionRange();if(f.isEmpty())this.$inSelection=!1;else{var c=this.getDocumentPosition();this.$inSelection=f.contains(c.row,c.column)}return this.$inSelection};
	this.getButton=function(){return y.getButton(this.domEvent)};this.getShiftKey=function(){return this.domEvent.shiftKey};this.getAccelKey=q.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(A.prototype)});
	ace.define("ace/mouse/dragdrop_handler","require exports module ace/lib/dom ace/lib/event ace/lib/useragent".split(" "),function(A,C,J){function y(a){var b,d;function g(){var F=z,L=z=x.renderer.screenToTextCoordinates(v,w),M=Date.now(),N=!F||L.row!=F.row,P=!F||L.column!=F.column;!H||N||P?(x.moveCursorToPosition(L),H=M,b=v,d=w):5<Math.sqrt(Math.pow(v-b,2)+Math.pow(w-d,2))?H=null:200<=M-H&&(x.renderer.scrollCursorIntoView(),H=null);L=z;M=Date.now();P=x.renderer.layerConfig.lineHeight;var U=x.renderer.layerConfig.characterWidth;
	N=x.renderer.scroller.getBoundingClientRect();var Z=v-N.left,ba=N.right-v,aa=w-N.top,ca=N.bottom-w,ea=Math.min(aa,ca);N={row:L.row,column:L.column};2>=Math.min(Z,ba)/U&&(N.column+=Z<ba?-3:2);1>=ea/P&&(N.row+=aa<ca?-1:1);P=L.column!=N.column;F=!F||L.row!=F.row;L.row!=N.row||P&&!F?G?200<=M-G&&x.renderer.scrollCursorIntoView(N):G=M:G=null}function l(){u=x.selection.toOrientedRange();p=x.session.addMarker(u,"ace_selection",x.getSelectionStyle());x.clearSelection();x.isFocused()&&x.renderer.$cursorLayer.setBlinking(!1);
	clearInterval(m);g();m=setInterval(g,20);B=0;f.addListener(document,"mousemove",h)}function n(){clearInterval(m);x.session.removeMarker(p);p=null;x.selection.fromOrientedRange(u);x.isFocused()&&!E&&x.$resetCursorStyle();z=u=null;B=0;H=G=null;f.removeListener(document,"mousemove",h)}function h(){null==I&&(I=setTimeout(function(){null!=I&&p&&n()},20))}function t(F){F=F.types;return!F||Array.prototype.some.call(F,function(L){return"text/plain"==L||"Text"==L})}function r(F){var L=["copy","copymove","all",
	"uninitialized"],M=["move","copymove","linkmove","all","uninitialized"],N=c.isMac?F.altKey:F.ctrlKey,P="uninitialized";try{P=F.dataTransfer.effectAllowed.toLowerCase()}catch(U){}F="none";N&&0<=L.indexOf(P)?F="copy":0<=M.indexOf(P)?F="move":0<=L.indexOf(P)&&(F="copy");return F}var x=a.editor,k=q.createElement("img");k.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";c.isOpera&&(k.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");
	["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(F){a[F]=this[F]},this);x.on("mousedown",this.onMouseDown.bind(a));var e=x.container,p,v,w,m,u,z,B=0,D,E,G,H;this.onDragStart=function(F){if(this.cancelDrag||!e.draggable){var L=this;setTimeout(function(){L.startSelect();L.captureMouse(F)},0);return F.preventDefault()}u=x.getSelectionRange();var M=F.dataTransfer;M.effectAllowed=x.getReadOnly()?"copy":"copyMove";c.isOpera&&(x.container.appendChild(k),k.scrollTop=0);
	M.setDragImage&&M.setDragImage(k,0,0);c.isOpera&&x.container.removeChild(k);M.clearData();M.setData("Text",x.session.getTextRange());E=!0;this.setState("drag")};this.onDragEnd=function(F){E=e.draggable=!1;this.setState(null);x.getReadOnly()||(F=F.dataTransfer.dropEffect,D||"move"!=F||x.session.remove(x.getSelectionRange()),x.$resetCursorStyle());this.editor.unsetStyle("ace_dragging");this.editor.renderer.setCursorStyle("")};this.onDragEnter=function(F){if(!x.getReadOnly()&&t(F.dataTransfer))return v=
	F.clientX,w=F.clientY,p||l(),B++,F.dataTransfer.dropEffect=D=r(F),f.preventDefault(F)};this.onDragOver=function(F){if(!x.getReadOnly()&&t(F.dataTransfer))return v=F.clientX,w=F.clientY,p||(l(),B++),null!==I&&(I=null),F.dataTransfer.dropEffect=D=r(F),f.preventDefault(F)};this.onDragLeave=function(F){B--;if(0>=B&&p)return n(),D=null,f.preventDefault(F)};this.onDrop=function(F){if(z){var L=F.dataTransfer;if(E)switch(D){case "move":u=u.contains(z.row,z.column)?{start:z,end:z}:x.moveText(u,z);break;case "copy":u=
	x.moveText(u,z,!0)}else L=L.getData("Text"),u={start:z,end:x.session.insert(z,L)},x.focus(),D=null;n();return f.preventDefault(F)}};f.addListener(e,"dragstart",this.onDragStart.bind(a),x);f.addListener(e,"dragend",this.onDragEnd.bind(a),x);f.addListener(e,"dragenter",this.onDragEnter.bind(a),x);f.addListener(e,"dragover",this.onDragOver.bind(a),x);f.addListener(e,"dragleave",this.onDragLeave.bind(a),x);f.addListener(e,"drop",this.onDrop.bind(a),x);var I=null}var q=A("../lib/dom"),f=A("../lib/event"),
	c=A("../lib/useragent");(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()};this.dragWaitEnd=function(){this.editor.container.draggable=!1;this.startSelect(this.mousedownEvent.getDocumentPosition());this.selectEnd()};this.dragReadyEnd=function(a){this.editor.$resetCursorStyle();this.editor.unsetStyle("ace_dragging");this.editor.renderer.setCursorStyle("");this.dragWaitEnd()};this.startDrag=function(){this.cancelDrag=!1;var a=this.editor;
	a.container.draggable=!0;a.renderer.$cursorLayer.setBlinking(!1);a.setStyle("ace_dragging");a.renderer.setCursorStyle(c.isWin?"default":"move");this.setState("dragReady")};this.onMouseDrag=function(a){a=this.editor.container;if(c.isIE&&"dragReady"==this.state){var b=Math.sqrt(Math.pow(this.x-this.mousedownEvent.x,2)+Math.pow(this.y-this.mousedownEvent.y,2));3<b&&a.dragDrop()}"dragWait"===this.state&&(b=Math.sqrt(Math.pow(this.x-this.mousedownEvent.x,2)+Math.pow(this.y-this.mousedownEvent.y,2)),0<
	b&&(a.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition())))};this.onMouseDown=function(a){if(this.$dragEnabled){this.mousedownEvent=a;var b=this.editor,d=a.inSelection(),g=a.getButton();1!==(a.domEvent.detail||1)||0!==g||!d||a.editor.inMultiSelectMode&&(a.getAccelKey()||a.getShiftKey())||(this.mousedownEvent.time=Date.now(),d=a.domEvent.target||a.domEvent.srcElement,"unselectable"in d&&(d.unselectable="on"),b.getDragDelay()?(c.isWebKit&&(this.cancelDrag=!0,b.container.draggable=
	!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(a,this.onMouseDrag.bind(this)),a.defaultPrevented=!0)}}}).call(y.prototype);C.DragdropHandler=y});
	ace.define("ace/mouse/touch_handler","require exports module ace/mouse/mouse_event ace/lib/event ace/lib/dom".split(" "),function(A,C,J){var y=A("./mouse_event").MouseEvent,q=A("../lib/event"),f=A("../lib/dom");ace.mobileCopyText="";C.addTouchListeners=function(c,a){function b(){var G=window.navigator&&window.navigator.clipboard,H=!1,I=function(){var L=a.getCopyText(),M=a.session.getUndoManager().hasUndo();E.replaceChild(f.buildDom(H?["span",!L&&["span",{class:"ace_mobile-button",action:"selectall"},
	"Select All"],L&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],L&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],(ace.mobileCopyText||G)&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],M&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPallete"},"Pallete"]]:["span"]),E.firstChild)},F=function(L){var M=L.target.getAttribute("action");if("more"==
	M||!H)return H=!H,I();if("paste"==M){if(!G){ace.mobileCopyText&&a.insert(ace.mobileCopyText);return}G.readText().then(function(N){a.execCommand(M,N)})}else if(M){ace.mobileCopyText=a.getSelectedText();if("cut"==M||"copy"==M)G?G.writeText(a.getCopyText()):document.execCommand("copy");a.execCommand(M)}E.firstChild.style.display="none";H=!1;"openCommandPallete"!=M&&a.focus()};E=f.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(L){t="menu";L.stopPropagation();L.preventDefault();a.textInput.focus()},
	ontouchend:function(L){L.stopPropagation();L.preventDefault();F(L)},onclick:F},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],a.container)}function d(){E||b();var G=a.selection.cursor;G=a.renderer.textToScreenCoordinates(G.row,G.column);var H=a.renderer.textToScreenCoordinates(0,0).pageX,I=a.renderer.scrollLeft,F=a.container.getBoundingClientRect();E.style.top=G.pageY-F.top-3+"px";G.pageX-F.left<F.width-70?(E.style.left="",E.style.right="10px"):(E.style.right="",E.style.left=H+
	I-F.left+"px");E.style.display="";E.firstChild.style.display="none";a.on("input",g)}function g(G){E&&(E.style.display="none");a.off("input",g)}function l(){p=null;clearTimeout(p);var G=a.selection.getRange(),H=G.contains(m.row,m.column);if(G.isEmpty()||!H)a.selection.moveToPosition(m),a.selection.selectWord();t="wait";d()}function n(){p=null;clearTimeout(p);a.selection.moveToPosition(m);var G=2<=u?a.selection.getLineRange(m.row):a.session.getBracketRange(m);G&&!G.isEmpty()?a.selection.setRange(G):
	a.selection.selectWord();t="wait"}function h(){w+=60;v=setInterval(function(){0>=w--&&(clearInterval(v),v=null);.01>Math.abs(z)&&(z=0);.01>Math.abs(B)&&(B=0);20>w&&(z*=.9);20>w&&(B*=.9);var G=a.session.getScrollTop();a.renderer.scrollBy(10*z,10*B);G==a.session.getScrollTop()&&(w=0)},10)}var t="scroll",r,x,k,e,p,v,w=0,m,u=0,z=0,B=0,D,E;q.addListener(c,"contextmenu",function(G){D&&a.textInput.getElement().focus()},a);q.addListener(c,"touchstart",function(G){var H=G.touches;if(p||1<H.length)clearTimeout(p),
	p=null,k=-1,t="zoom";else{D=a.$mouseHandler.isMousePressed=!0;var I=a.renderer.layerConfig.lineHeight,F=a.renderer.layerConfig.lineHeight,L=G.timeStamp;e=L;var M=H[0],N=M.clientX;M=M.clientY;Math.abs(r-N)+Math.abs(x-M)>I&&(k=-1);r=G.clientX=N;x=G.clientY=M;z=B=0;m=(new y(G,a)).getDocumentPosition();if(500>L-k&&1==H.length&&!w)u++,G.preventDefault(),G.button=0,n();else{u=0;H=a.selection.cursor;N=a.selection.isEmpty()?H:a.selection.anchor;H=a.renderer.$cursorLayer.getPixelPosition(H,!0);N=a.renderer.$cursorLayer.getPixelPosition(N,
	!0);M=a.renderer.scroller.getBoundingClientRect();var P=a.renderer.layerConfig.offset,U=a.renderer.scrollLeft,Z=function(ba,aa){ba/=F;aa=aa/I-.75;return ba*ba+aa*aa};if(G.clientX<M.left){t="zoom";return}H=Z(G.clientX-M.left-H.left+U,G.clientY-M.top-H.top+P);G=Z(G.clientX-M.left-N.left+U,G.clientY-M.top-N.top+P);3.5>H&&3.5>G&&(t=H>G?"cursor":"anchor");t=3.5>G?"anchor":3.5>H?"cursor":"scroll";p=setTimeout(l,450)}k=L}},a);q.addListener(c,"touchend",function(G){D=a.$mouseHandler.isMousePressed=!1;v&&
	clearInterval(v);"zoom"==t?(t="",w=0):p?(a.selection.moveToPosition(m),w=0,d()):"scroll"==t?(h(),g()):d();clearTimeout(p);p=null},a);q.addListener(c,"touchmove",function(G){p&&(clearTimeout(p),p=null);var H=G.touches;if(!(1<H.length||"zoom"==t)){var I=H[0];H=r-I.clientX;var F=x-I.clientY;if("wait"==t)if(4<H*H+F*F)t="cursor";else return G.preventDefault();r=I.clientX;x=I.clientY;G.clientX=I.clientX;G.clientY=I.clientY;var L=G.timeStamp;I=L-e;e=L;"scroll"==t?(G=new y(G,a),G.speed=1,G.wheelX=H,G.wheelY=
	F,10*Math.abs(H)<Math.abs(F)&&(H=0),10*Math.abs(F)<Math.abs(H)&&(F=0),0!=I&&(z=H/I,B=F/I),a._emit("mousewheel",G),G.propagationStopped||(z=B=0)):(H=(new y(G,a)).getDocumentPosition(),"cursor"==t?a.selection.moveCursorToPosition(H):"anchor"==t&&a.selection.setSelectionAnchor(H.row,H.column),a.renderer.scrollCursorIntoView(H),G.preventDefault())}},a)}});
	ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(A,C,J){var y=A("./dom");C.get=function(q,f){var c=new XMLHttpRequest;c.open("GET",q,!0);c.onreadystatechange=function(){4===c.readyState&&f(c.responseText)};c.send(null)};C.loadScript=function(q,f){var c=y.getDocumentHead(),a=document.createElement("script");a.src=q;c.appendChild(a);a.onload=a.onreadystatechange=function(b,d){if(d||!a.readyState||"loaded"==a.readyState||"complete"==a.readyState)a=a.onload=a.onreadystatechange=
	null,d||f()}};C.qualifyURL=function(q){var f=document.createElement("a");f.href=q;return f.href}});
	ace.define("ace/lib/event_emitter",["require","exports","module"],function(A,C,J){A={};var y=function(){this.propagationStopped=!0},q=function(){this.defaultPrevented=!0};A._emit=A._dispatchEvent=function(f,c){this._eventRegistry||(this._eventRegistry={});this._defaultHandlers||(this._defaultHandlers={});var a=this._eventRegistry[f]||[],b=this._defaultHandlers[f];if(a.length||b){"object"==typeof c&&c||(c={});c.type||(c.type=f);c.stopPropagation||(c.stopPropagation=y);c.preventDefault||(c.preventDefault=
	q);a=a.slice();for(f=0;f<a.length&&(a[f](c,this),!c.propagationStopped);f++);if(b&&!c.defaultPrevented)return b(c,this)}};A._signal=function(f,c){if(f=(this._eventRegistry||{})[f]){f=f.slice();for(var a=0;a<f.length;a++)f[a](c,this)}};A.once=function(f,c){var a=this;this.on(f,function d(){a.off(f,d);c.apply(null,arguments)});if(!c)return new Promise(function(d){c=d})};A.setDefaultHandler=function(f,c){var a=this._defaultHandlers;a||(a=this._defaultHandlers={_disabled_:{}});if(a[f]){var b=a[f],d=a._disabled_[f];
	d||(a._disabled_[f]=d=[]);d.push(b);b=d.indexOf(c);-1!=b&&d.splice(b,1)}a[f]=c};A.removeDefaultHandler=function(f,c){var a=this._defaultHandlers;if(a){var b=a._disabled_[f];a[f]==c?b&&this.setDefaultHandler(f,b.pop()):b&&(f=b.indexOf(c),-1!=f&&b.splice(f,1))}};A.on=A.addEventListener=function(f,c,a){this._eventRegistry=this._eventRegistry||{};var b=this._eventRegistry[f];b||(b=this._eventRegistry[f]=[]);if(-1==b.indexOf(c))b[a?"unshift":"push"](c);return c};A.off=A.removeListener=A.removeEventListener=
	function(f,c){this._eventRegistry=this._eventRegistry||{};if(f=this._eventRegistry[f])c=f.indexOf(c),-1!==c&&f.splice(c,1)};A.removeAllListeners=function(f){f||(this._eventRegistry=this._defaultHandlers=void 0);this._eventRegistry&&(this._eventRegistry[f]=void 0);this._defaultHandlers&&(this._defaultHandlers[f]=void 0)};C.EventEmitter=A});
	ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(A,C,J){function y(b){"undefined"!=typeof console&&console.warn&&console.warn.apply(console,arguments)}function q(b,d){var g=Error(b);g.data=d;"object"==typeof console&&console.error&&console.error(g);setTimeout(function(){throw g;})}"no use strict";var f=A("./oop"),c=A("./event_emitter").EventEmitter,a={setOptions:function(b){Object.keys(b).forEach(function(d){this.setOption(d,b[d])},this)},
	getOptions:function(b){var d={};if(b)Array.isArray(b)||(d=b,b=Object.keys(d));else{var g=this.$options;b=Object.keys(g).filter(function(l){return!g[l].hidden})}b.forEach(function(l){d[l]=this.getOption(l)},this);return d},setOption:function(b,d){if(this["$"+b]!==d){var g=this.$options[b];if(!g)return y('misspelled option "'+b+'"');if(g.forwardTo)return this[g.forwardTo]&&this[g.forwardTo].setOption(b,d);g.handlesSet||(this["$"+b]=d);g&&g.set&&g.set.call(this,d)}},getOption:function(b){var d=this.$options[b];
	return d?d.forwardTo?this[d.forwardTo]&&this[d.forwardTo].getOption(b):d&&d.get?d.get.call(this):this["$"+b]:y('misspelled option "'+b+'"')}};A=function(){this.$defaultOptions={}};(function(){f.implement(this,c);this.defineOptions=function(b,d,g){b.$options||(this.$defaultOptions[d]=b.$options={});Object.keys(g).forEach(function(l){var n=g[l];"string"==typeof n&&(n={forwardTo:n});n.name||(n.name=l);b.$options[n.name]=n;"initialValue"in n&&(b["$"+n.name]=n.initialValue)});f.implement(b,a);return this};
	this.resetOptions=function(b){Object.keys(b.$options).forEach(function(d){var g=b.$options[d];"value"in g&&b.setOption(d,g.value)})};this.setDefaultValue=function(b,d,g){if(!b){for(b in this.$defaultOptions)if(this.$defaultOptions[b][d])break;if(!this.$defaultOptions[b][d])return!1}b=this.$defaultOptions[b]||(this.$defaultOptions[b]={});b[d]&&(b.forwardTo?this.setDefaultValue(b.forwardTo,d,g):b[d].value=g)};this.setDefaultValues=function(b,d){Object.keys(d).forEach(function(g){this.setDefaultValue(b,
	g,d[g])},this)};this.warn=y;this.reportError=q}).call(A.prototype);C.AppConfig=A});
	ace.define("ace/config","require exports module ace/lib/lang ace/lib/oop ace/lib/net ace/lib/app_config".split(" "),function(A,C,J){function y(l){if(b&&b.document){d.packaged=l||A.packaged||J.packaged||b.define&&define.packaged;l={};var n="",h=document.currentScript||document._currentScript;h=(h&&h.ownerDocument||document).getElementsByTagName("script");for(var t=0;t<h.length;t++){var r=h[t],x=r.src||r.getAttribute("src");if(x){r=r.attributes;for(var k=0,e=r.length;k<e;k++){var p=r[k];0===p.name.indexOf("data-ace-")&&
	(l[q(p.name.replace(/^data-ace-/,""))]=p.value)}(x=x.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/))&&(n=x[1])}}n&&(l.base=l.base||n,l.packaged=!0);l.basePath=l.base;l.workerPath=l.workerPath||l.base;l.modePath=l.modePath||l.base;l.themePath=l.themePath||l.base;delete l.base;for(var v in l)"undefined"!==typeof l[v]&&C.set(v,l[v])}}function q(l){return l.replace(/-(.)/g,function(n,h){return h.toUpperCase()})}"no use strict";var f=A("./lib/lang");A("./lib/oop");var c=A("./lib/net"),a=A("./lib/app_config").AppConfig;
	J.exports=C=new a;var b=function(){return this||"undefined"!=typeof window&&window}(),d={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{},loadWorkerFromBlob:!0,sharedPopups:!1};C.get=function(l){if(!d.hasOwnProperty(l))throw Error("Unknown config key: "+l);return d[l]};C.set=function(l,n){if(d.hasOwnProperty(l))d[l]=n;else if(0==this.setDefaultValue("",l,n))throw Error("Unknown config key: "+l);};C.all=function(){return f.copyObject(d)};C.$modes={};
	C.moduleUrl=function(l,n){if(d.$moduleUrls[l])return d.$moduleUrls[l];var h=l.split("/");n=n||h[h.length-2]||"";l="snippets"==n?"/":"-";var t=h[h.length-1];"worker"==n&&"-"==l&&(t=t.replace(new RegExp("^"+n+"[\\-_]|[\\-_]"+n+"$","g"),""));(!t||t==n)&&1<h.length&&(t=h[h.length-2]);h=d[n+"Path"];null==h?h=d.basePath:"/"==l&&(n=l="");h&&"/"!=h.slice(-1)&&(h+="/");return h+n+l+t+this.get("suffix")};C.setModuleUrl=function(l,n){return d.$moduleUrls[l]=n};C.$loading={};C.loadModule=function(l,n){if(Array.isArray(l)){var h=
	l[0];l=l[1]}try{var t=A(l)}catch(r){}if(t&&!C.$loading[l])return n&&n(t);C.$loading[l]||(C.$loading[l]=[]);C.$loading[l].push(n);if(!(1<C.$loading[l].length)){n=function(){A([l],function(r){C._emit("load.module",{name:l,module:r});var x=C.$loading[l];C.$loading[l]=null;x.forEach(function(k){k&&k(r)})})};if(!C.get("packaged"))return n();c.loadScript(C.moduleUrl(l,h),n);g()}};var g=function(){d.basePath||d.workerPath||d.modePath||d.themePath||Object.keys(d.$moduleUrls).length||(console.error("Unable to infer path to ace from script src,",
	"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),g=function(){})};y(!0);C.init=y;C.version="1.4.12"});
	ace.define("ace/mouse/mouse_handler","require exports module ace/lib/event ace/lib/useragent ace/mouse/default_handlers ace/mouse/default_gutter_handler ace/mouse/mouse_event ace/mouse/dragdrop_handler ace/mouse/touch_handler ace/config".split(" "),function(A,C,J){var y=A("../lib/event"),q=A("../lib/useragent"),f=A("./default_handlers").DefaultHandlers,c=A("./default_gutter_handler").GutterHandler,a=A("./mouse_event").MouseEvent,b=A("./dragdrop_handler").DragdropHandler,d=A("./touch_handler").addTouchListeners;
	A=A("../config");J=function(g){var l=this;this.editor=g;new f(this);new c(this);new b(this);var n=function(r){document.hasFocus&&document.hasFocus()&&(g.isFocused()||document.activeElement!=(g.textInput&&g.textInput.getElement()))||window.focus();g.focus()},h=g.renderer.getMouseEventTarget();y.addListener(h,"click",this.onMouseEvent.bind(this,"click"),g);y.addListener(h,"mousemove",this.onMouseMove.bind(this,"mousemove"),g);y.addMultiMouseDownListener([h,g.renderer.scrollBarV&&g.renderer.scrollBarV.inner,
	g.renderer.scrollBarH&&g.renderer.scrollBarH.inner,g.textInput&&g.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent",g);y.addMouseWheelListener(g.container,this.onMouseWheel.bind(this,"mousewheel"),g);d(g.container,g);var t=g.renderer.$gutter;y.addListener(t,"mousedown",this.onMouseEvent.bind(this,"guttermousedown"),g);y.addListener(t,"click",this.onMouseEvent.bind(this,"gutterclick"),g);y.addListener(t,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick"),g);y.addListener(t,
	"mousemove",this.onMouseEvent.bind(this,"guttermousemove"),g);y.addListener(h,"mousedown",n,g);y.addListener(t,"mousedown",n,g);q.isIE&&g.renderer.scrollBarV&&(y.addListener(g.renderer.scrollBarV.element,"mousedown",n,g),y.addListener(g.renderer.scrollBarH.element,"mousedown",n,g));g.on("mousemove",function(r){if(!l.state&&!l.$dragDelay&&l.$dragEnabled){r=g.renderer.screenToTextCoordinates(r.x,r.y);var x=g.session.selection.getRange(),k=g.renderer;!x.isEmpty()&&x.insideStart(r.row,r.column)?k.setCursorStyle("default"):
	k.setCursorStyle("")}},g)};(function(){this.onMouseEvent=function(g,l){this.editor._emit(g,new a(l,this.editor))};this.onMouseMove=function(g,l){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;n&&n.length&&this.editor._emit(g,new a(l,this.editor))};this.onMouseWheel=function(g,l){var n=new a(l,this.editor);n.speed=2*this.$scrollSpeed;n.wheelX=l.wheelX;n.wheelY=l.wheelY;this.editor._emit(g,n)};this.setState=function(g){this.state=g};this.captureMouse=function(g,l){this.x=g.x;
	this.y=g.y;this.isMousePressed=!0;var n=this.editor,h=this.editor.renderer;h.$isMousePressed=!0;var t=this,r=function(v){if(v){if(q.isWebKit&&!v.which&&t.releaseMouse)return t.releaseMouse();t.x=v.clientX;t.y=v.clientY;l&&l(v);t.mouseEvent=new a(v,t.editor);t.$mouseMoved=!0}},x=function(v){n.off("beforeEndOperation",e);clearInterval(p);k();t[t.state+"End"]&&t[t.state+"End"](v);t.state="";t.isMousePressed=h.$isMousePressed=!1;h.$keepTextAreaAtCursor&&h.$moveTextAreaToCursor();t.$onCaptureMouseMove=
	t.releaseMouse=null;v&&t.onMouseEvent("mouseup",v);n.endOperation()},k=function(){t[t.state]&&t[t.state]();t.$mouseMoved=!1};if(q.isOldIE&&"dblclick"==g.domEvent.type)return setTimeout(function(){x(g)});var e=function(v){t.releaseMouse&&n.curOp.command.name&&n.curOp.selectionChanged&&(t[t.state+"End"]&&t[t.state+"End"](),t.state="",t.releaseMouse())};n.on("beforeEndOperation",e);n.startOperation({command:{name:"mouse"}});t.$onCaptureMouseMove=r;t.releaseMouse=y.capture(this.editor.container,r,x);
	var p=setInterval(k,20)};this.releaseMouse=null;this.cancelContextMenu=function(){var g=function(l){l&&l.domEvent&&"contextmenu"!=l.domEvent.type||(this.editor.off("nativecontextmenu",g),l&&l.domEvent&&y.stopEvent(l.domEvent))}.bind(this);setTimeout(g,10);this.editor.on("nativecontextmenu",g)};this.destroy=function(){this.releaseMouse&&this.releaseMouse()}}).call(J.prototype);A.defineOptions(J.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:q.isMac?150:0},dragEnabled:{initialValue:!0},
	focusTimeout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}});C.MouseHandler=J});
	ace.define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"],function(A,C,J){var y=A("../lib/dom");C.FoldHandler=function(q){q.on("click",function(f){var c=f.getDocumentPosition(),a=q.session;if(c=a.getFoldAt(c.row,c.column,1))f.getAccelKey()?a.removeFold(c):a.expandFold(c),f.stop();(f=f.domEvent&&f.domEvent.target)&&y.hasCssClass(f,"ace_inline_button")&&y.hasCssClass(f,"ace_toggle_wrap")&&(a.setOption("wrap",!a.getUseWrapMode()),q.renderer.scrollCursorIntoView())});q.on("gutterclick",
	function(f){if("foldWidgets"==q.renderer.$gutterLayer.getRegion(f)){var c=f.getDocumentPosition().row,a=q.session;if(a.foldWidgets&&a.foldWidgets[c])q.session.onFoldWidgetClick(c,f);q.isFocused()||q.focus();f.stop()}});q.on("gutterdblclick",function(f){if("foldWidgets"==q.renderer.$gutterLayer.getRegion(f)){var c=f.getDocumentPosition().row,a=q.session,b=a.getParentFoldRangeData(c,!0);if(b=b.range||b.firstRange)c=b.start.row,(c=a.getFoldAt(c,a.getLine(c).length,1))?a.removeFold(c):(a.addFold("...",
	b),q.renderer.scrollCursorIntoView({row:b.start.row,column:0}));f.stop()}})}});
	ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(A,C,J){var y=A("../lib/keys"),q=A("../lib/event");A=function(f){this.$editor=f;this.$data={editor:f};this.$handlers=[];this.setDefaultHandler(f.commands)};(function(){this.setDefaultHandler=function(f){this.removeKeyboardHandler(this.$defaultHandler);this.$defaultHandler=f;this.addKeyboardHandler(f,0)};this.setKeyboardHandler=function(f){var c=this.$handlers;if(c[c.length-1]!=f){for(;c[c.length-
	1]&&c[c.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(c[c.length-1]);this.addKeyboardHandler(f,1)}};this.addKeyboardHandler=function(f,c){if(f){"function"!=typeof f||f.handleKeyboard||(f.handleKeyboard=f);var a=this.$handlers.indexOf(f);-1!=a&&this.$handlers.splice(a,1);void 0==c?this.$handlers.push(f):this.$handlers.splice(c,0,f);-1==a&&f.attach&&f.attach(this.$editor)}};this.removeKeyboardHandler=function(f){var c=this.$handlers.indexOf(f);if(-1==c)return!1;this.$handlers.splice(c,
	1);f.detach&&f.detach(this.$editor);return!0};this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]};this.getStatusText=function(){var f=this.$data,c=f.editor;return this.$handlers.map(function(a){return a.getStatusText&&a.getStatusText(c,f)||""}).filter(Boolean).join(" ")};this.$callKeyboardHandlers=function(f,c,a,b){for(var d,g=!1,l=this.$editor.commands,n=this.$handlers.length;n--&&!((d=this.$handlers[n].handleKeyboard(this.$data,f,c,a,b))&&d.command&&((g="null"==d.command?
	!0:l.exec(d.command,this.$editor,d.args,b))&&b&&-1!=f&&1!=d.passEvent&&1!=d.command.passEvent&&q.stopEvent(b),g)););g||-1!=f||(d={command:"insertstring"},g=l.exec("insertstring",this.$editor,c));g&&this.$editor._signal&&this.$editor._signal("keyboardActivity",d);return g};this.onCommandKey=function(f,c,a){var b=y.keyCodeToString(a);return this.$callKeyboardHandlers(c,b,a,f)};this.onTextInput=function(f){return this.$callKeyboardHandlers(-1,f)}}).call(A.prototype);C.KeyBinding=A});
	ace.define("ace/lib/bidiutil",["require","exports","module"],function(A,C,J){function y(r,x,k){if(!(a<r))if(1!=r||1!=c||d)for(var e=k.length,p=0,v,w,m;p<e;){if(x[p]>=r){for(v=p+1;v<e&&x[v]>=r;)v++;for(w=v-1;p<w;p++,w--)m=k[p],k[p]=k[w],k[w]=m;p=v}p++}else k.reverse()}function q(r,x,k,e){var p=x[e],v,w;switch(p){case 0:case 1:b=!1;case 4:case 3:return p;case 2:return b?3:2;case 7:return b=!0,1;case 8:return 4;case 9:if(1>e||e+1>=x.length||2!=(v=k[e-1])&&3!=v||2!=(w=x[e+1])&&3!=w)return 4;b&&(w=3);
	return w==v?w:4;case 10:return v=0<e?k[e-1]:5,2==v&&e+1<x.length&&2==x[e+1]?2:4;case 11:if(0<e&&2==k[e-1])return 2;if(b)return 4;v=e+1;for(p=x.length;v<p&&11==x[v];)v++;return v<p&&2==x[v]?2:4;case 12:p=x.length;for(v=e+1;v<p&&12==x[v];)v++;return v<p&&(r=r[e],v=x[v],(1425<=r&&2303>=r||64286==r)&&(1==v||7==v))?1:1>e||5==x[e-1]?4:k[e-1];case 5:return b=!1,d=!0,c;case 6:return g=!0,4;case 13:case 14:case 16:case 17:case 15:b=!1;case 18:return 4}}function f(r){var x=r.charCodeAt(0),k=x>>8;return 0==
	k?191<x?0:h[x]:5==k?/[\u0591-\u05f4]/.test(r)?1:0:6==k?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(r)?12:/[\u0660-\u0669\u066b-\u066c]/.test(r)?3:1642==x?11:/[\u06f0-\u06f9]/.test(r)?2:7:32==k&&8287>=x?t[x&255]:254==k?65136<=x?7:4:4}var c=0,a=0,b=!1,d=!1,g=!1,l=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],n=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],h=[18,18,18,18,18,18,18,18,18,6,5,6,8,5,18,18,18,18,
	18,18,18,18,18,18,18,18,18,18,5,5,5,6,8,4,4,11,11,11,4,4,4,4,4,10,9,10,9,9,2,2,2,2,2,2,2,2,2,2,9,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,18,18,18,18,18,18,5,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,9,4,11,11,11,11,4,4,4,4,0,4,4,18,4,4,11,11,2,2,4,0,4,4,4,2,0,4,4,4,4,4],t=[8,8,8,8,8,8,8,8,8,8,8,18,18,18,0,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,5,13,14,15,
	16,17,9,11,11,11,11,11,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8];C.L=0;C.R=1;C.EN=2;C.ON_R=3;C.AN=4;C.R_H=5;C.B=6;C.RLE=7;C.DOT="\u00b7";C.doBidiReorder=function(r,x,k){if(2>r.length)return{};r=r.split("");var e=Array(r.length),p=Array(r.length),v=[];c=k?1:0;k=r.length;var w=x,m=c?n:l;var u=0;var z=-1,B,D=[];if(!w){var E=0;for(w=[];E<k;E++)w[E]=f(r[E])}a=c;g=d=b=!1;for(B=0;B<k;B++){var G=u;D[B]=u=q(r,w,D,B);u=m[G][u];E=u&240;u&=15;v[B]=G=m[u][5];if(0<E){if(16==
	E)for(E=z;E<B;E++)v[E]=1;z=-1}if(E=m[u][6])-1==z&&(z=B);else if(-1<z){for(E=z;E<B;E++)v[E]=G;z=-1}5==w[B]&&(v[B]=0);a|=G}if(g)for(E=0;E<k;E++)if(6==w[E])for(v[E]=c,m=E-1;0<=m;m--)if(8==w[m])v[m]=c;else break;for(k=0;k<e.length;e[k]=k,k++);y(2,v,e);y(1,v,e);for(k=0;k<e.length-1;k++)3===x[k]?v[k]=C.AN:1===v[k]&&(7<x[k]&&13>x[k]||4===x[k]||18===x[k])?v[k]=C.ON_R:0<k&&"\u0644"===r[k-1]&&/\u0622|\u0623|\u0625|\u0627/.test(r[k])&&(v[k-1]=v[k]=C.R_H,k++);r[r.length-1]===C.DOT&&(v[r.length-1]=C.B);"\u202b"===
	r[0]&&(v[0]=C.RLE);for(k=0;k<e.length;k++)p[k]=v[e[k]];return{logicalFromVisual:e,bidiLevels:p}};C.hasBidiCharacters=function(r,x){for(var k=!1,e=0;e<r.length;e++)x[e]=f(r.charAt(e)),k||1!=x[e]&&7!=x[e]&&3!=x[e]||(k=!0);return k};C.getVisualFromLogicalIdx=function(r,x){for(var k=0;k<x.logicalFromVisual.length;k++)if(x.logicalFromVisual[k]==r)return k;return 0}});
	ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"],function(A,C,J){var y=A("./lib/bidiutil"),q=A("./lib/lang"),f=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/;A=function(c){this.session=c;this.bidiMap={};this.currentRow=null;this.bidiUtil=y;this.charWidths=[];this.EOL="\u00ac";this.showInvisibles=!0;this.$isRtl=this.isRtlDir=!1;this.line="";this.wrapIndent=0;this.EOF="\u00b6";this.RLE="\u202b";this.contentWidth=0;this.fontMetrics=null;this.wrapOffset=
	this.rtlLineOffset=0;this.isMoveLeftOperation=!1;this.seenBidi=f.test(c.getValue())};(function(){this.isBidiRow=function(c,a,b){if(!this.seenBidi)return!1;c!==this.currentRow&&(this.currentRow=c,this.updateRowLine(a,b),this.updateBidiMap());return this.bidiMap.bidiLevels};this.onChange=function(c){this.seenBidi?this.currentRow=null:"insert"==c.action&&f.test(c.lines.join("\n"))&&(this.seenBidi=!0,this.currentRow=null)};this.getDocumentRow=function(){var c=0,a=this.session.$screenRowCache;a.length&&
	(a=this.session.$getRowCacheIndex(a,this.currentRow),0<=a&&(c=this.session.$docRowCache[a]));return c};this.getSplitIndex=function(){var c=0,a=this.session.$screenRowCache;if(a.length)for(var b,d=this.session.$getRowCacheIndex(a,this.currentRow);0<this.currentRow-c;){b=this.session.$getRowCacheIndex(a,this.currentRow-c-1);if(b!==d)break;d=b;c++}else c=this.currentRow;return c};this.updateRowLine=function(c,a){void 0===c&&(c=this.getDocumentRow());var b=c===this.session.getLength()-1?this.EOF:this.EOL;
	this.wrapIndent=0;this.line=this.session.getLine(c);this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE;if(this.session.$useWrapMode){if(c=this.session.$wrapData[c])void 0===a&&(a=this.getSplitIndex()),0<a&&c.length?(this.wrapIndent=c.indent,this.wrapOffset=this.wrapIndent*this.charWidths[y.L],this.line=a<c.length?this.line.substring(c[a-1],c[a]):this.line.substring(c[c.length-1])):this.line=this.line.substring(0,c[a]);a==c.length&&(this.line+=this.showInvisibles?b:y.DOT)}else this.line+=this.showInvisibles?
	b:y.DOT;var d=this.session,g=0,l;this.line=this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g,function(n,h){return"\t"===n||d.isFullWidth(n.charCodeAt(0))?(l="\t"===n?d.getScreenTabSize(h+g):2,g+=l-1,q.stringRepeat(y.DOT,l)):n});this.isRtlDir&&(this.fontMetrics.$main.textContent=this.line.charAt(this.line.length-1)==y.DOT?this.line.substr(0,this.line.length-1):this.line,this.rtlLineOffset=this.contentWidth-this.fontMetrics.$main.getBoundingClientRect().width)};this.updateBidiMap=function(){var c=
	[];y.hasBidiCharacters(this.line,c)||this.isRtlDir?this.bidiMap=y.doBidiReorder(this.line,c,this.isRtlDir):this.bidiMap={}};this.markAsDirty=function(){this.currentRow=null};this.updateCharacterWidths=function(c){if(this.characterWidth!==c.$characterSize.width){this.fontMetrics=c;var a=this.characterWidth=c.$characterSize.width;c=c.$measureCharWidth("\u05d4");this.charWidths[y.L]=this.charWidths[y.EN]=this.charWidths[y.ON_R]=a;this.charWidths[y.R]=this.charWidths[y.AN]=c;this.charWidths[y.R_H]=.45*
	c;this.charWidths[y.B]=this.charWidths[y.RLE]=0;this.currentRow=null}};this.setShowInvisibles=function(c){this.showInvisibles=c;this.currentRow=null};this.setEolChar=function(c){this.EOL=c};this.setContentWidth=function(c){this.contentWidth=c};this.isRtlLine=function(c){return this.$isRtl?!0:void 0!=c?this.session.getLine(c).charAt(0)==this.RLE:this.isRtlDir};this.setRtlDirection=function(c,a){for(var b=c.getCursorPosition(),d=c.selection.getSelectionAnchor().row;d<=b.row;d++)a||c.session.getLine(d).charAt(0)!==
	c.session.$bidiHandler.RLE?a&&c.session.getLine(d).charAt(0)!==c.session.$bidiHandler.RLE&&c.session.doc.insert({column:0,row:d},c.session.$bidiHandler.RLE):c.session.doc.removeInLine(d,0,1)};this.getPosLeft=function(c){c-=this.wrapIndent;var a=this.line.charAt(0)===this.RLE?1:0,b=c>a?this.session.getOverwrite()?c:c-1:a;b=y.getVisualFromLogicalIdx(b,this.bidiMap);var d=this.bidiMap.bidiLevels,g=0;!this.session.getOverwrite()&&c<=a&&0!==d[b]%2&&b++;for(var l=0;l<b;l++)g+=this.charWidths[d[l]];!this.session.getOverwrite()&&
	c>a&&0===d[b]%2&&(g+=this.charWidths[d[b]]);this.wrapIndent&&(g+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);this.isRtlDir&&(g+=this.rtlLineOffset);return g};this.getSelections=function(c,a){var b=this.bidiMap,d=b.bidiLevels,g=[],l=0,n=Math.min(c,a)-this.wrapIndent;a=Math.max(c,a)-this.wrapIndent;var h=!1,t=!1,r=0;this.wrapIndent&&(l+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var x=0;x<d.length;x++)h=b.logicalFromVisual[x],c=d[x],(h=h>=n&&h<a)&&!t?r=l:!h&&t&&g.push({left:r,width:l-
	r}),l+=this.charWidths[c],t=h;h&&x===d.length&&g.push({left:r,width:l-r});if(this.isRtlDir)for(b=0;b<g.length;b++)g[b].left+=this.rtlLineOffset;return g};this.offsetToCol=function(c){this.isRtlDir&&(c-=this.rtlLineOffset);c=Math.max(c,0);var a=0,b=0,d=this.bidiMap.bidiLevels,g=this.charWidths[d[b]];for(this.wrapIndent&&(c-=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);c>a+g/2;){a+=g;if(b===d.length-1){g=0;break}g=this.charWidths[d[++b]]}0<b&&0!==d[b-1]%2&&0===d[b]%2?(c<a&&b--,c=this.bidiMap.logicalFromVisual[b]):
	0<b&&0===d[b-1]%2&&0!==d[b]%2?c=1+(c>a?this.bidiMap.logicalFromVisual[b]:this.bidiMap.logicalFromVisual[b-1]):this.isRtlDir&&b===d.length-1&&0===g&&0===d[b-1]%2||!this.isRtlDir&&0===b&&0!==d[b]%2?c=1+this.bidiMap.logicalFromVisual[b]:(0<b&&0!==d[b-1]%2&&0!==g&&b--,c=this.bidiMap.logicalFromVisual[b]);0===c&&this.isRtlDir&&c++;return c+this.wrapIndent}}).call(A.prototype);C.BidiHandler=A});
	ace.define("ace/selection","require exports module ace/lib/oop ace/lib/lang ace/lib/event_emitter ace/range".split(" "),function(A,C,J){var y=A("./lib/oop"),q=A("./lib/lang"),f=A("./lib/event_emitter").EventEmitter,c=A("./range").Range;A=function(a){this.session=a;this.doc=a.getDocument();this.clearSelection();this.cursor=this.lead=this.doc.createAnchor(0,0);this.anchor=this.doc.createAnchor(0,0);this.$silent=!1;var b=this;this.cursor.on("change",function(d){b.$cursorChanged=!0;b.$silent||b._emit("changeCursor");
	b.$isEmpty||b.$silent||b._emit("changeSelection");b.$keepDesiredColumnOnChange||d.old.column==d.value.column||(b.$desiredColumn=null)});this.anchor.on("change",function(){b.$anchorChanged=!0;b.$isEmpty||b.$silent||b._emit("changeSelection")})};(function(){y.implement(this,f);this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column};this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row};this.getCursor=function(){return this.lead.getPosition()};
	this.setSelectionAnchor=function(a,b){this.$isEmpty=!1;this.anchor.setPosition(a,b)};this.getAnchor=this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()};this.getSelectionLead=function(){return this.lead.getPosition()};this.isBackwards=function(){var a=this.anchor,b=this.lead;return a.row>b.row||a.row==b.row&&a.column>b.column};this.getRange=function(){var a=this.anchor,b=this.lead;return this.$isEmpty?c.fromPoints(b,b):this.isBackwards()?c.fromPoints(b,
	a):c.fromPoints(a,b)};this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))};this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)};this.setRange=this.setSelectionRange=function(a,b){var d=b?a.end:a.start;a=b?a.start:a.end;this.$setSelection(d.row,d.column,a.row,a.column)};this.$setSelection=function(a,b,d,g){if(!this.$silent){var l=this.$isEmpty,n=this.inMultiSelectMode;this.$silent=!0;this.$cursorChanged=this.$anchorChanged=
	!1;this.anchor.setPosition(a,b);this.cursor.setPosition(d,g);this.$isEmpty=!c.comparePoints(this.anchor,this.cursor);this.$silent=!1;this.$cursorChanged&&this._emit("changeCursor");(this.$cursorChanged||this.$anchorChanged||l!=this.$isEmpty||n)&&this._emit("changeSelection")}};this.$moveSelection=function(a){var b=this.lead;this.$isEmpty&&this.setSelectionAnchor(b.row,b.column);a.call(this)};this.selectTo=function(a,b){this.$moveSelection(function(){this.moveCursorTo(a,b)})};this.selectToPosition=
	function(a){this.$moveSelection(function(){this.moveCursorToPosition(a)})};this.moveTo=function(a,b){this.clearSelection();this.moveCursorTo(a,b)};this.moveToPosition=function(a){this.clearSelection();this.moveCursorToPosition(a)};this.selectUp=function(){this.$moveSelection(this.moveCursorUp)};this.selectDown=function(){this.$moveSelection(this.moveCursorDown)};this.selectRight=function(){this.$moveSelection(this.moveCursorRight)};this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)};
	this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)};this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)};this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)};this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)};this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)};this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)};this.getWordRange=function(a,b){"undefined"==
	typeof b&&(b=a||this.lead,a=b.row,b=b.column);return this.session.getWordRange(a,b)};this.selectWord=function(){this.setSelectionRange(this.getWordRange())};this.selectAWord=function(){var a=this.getCursor();a=this.session.getAWordRange(a.row,a.column);this.setSelectionRange(a)};this.getLineRange=function(a,b){a="number"==typeof a?a:this.lead.row;var d;(d=this.session.getFoldLine(a))?(a=d.start.row,d=d.end.row):d=a;return!0===b?new c(a,0,d,this.session.getLine(d).length):new c(a,0,d+1,0)};this.selectLine=
	function(){this.setSelectionRange(this.getLineRange())};this.moveCursorUp=function(){this.moveCursorBy(-1,0)};this.moveCursorDown=function(){this.moveCursorBy(1,0)};this.wouldMoveIntoSoftTab=function(a,b,d){var g=a.column,l=a.column+b;0>d&&(g=a.column-b,l=a.column);return this.session.isTabStop(a)&&this.doc.getLine(a.row).slice(g,l).split(" ").length-1==b};this.moveCursorLeft=function(){var a=this.lead.getPosition(),b;(b=this.session.getFoldAt(a.row,a.column,-1))?this.moveCursorTo(b.start.row,b.start.column):
	0===a.column?0<a.row&&this.moveCursorTo(a.row-1,this.doc.getLine(a.row-1).length):(b=this.session.getTabSize(),this.wouldMoveIntoSoftTab(a,b,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-b):this.moveCursorBy(0,-1))};this.moveCursorRight=function(){var a=this.lead.getPosition();if(a=this.session.getFoldAt(a.row,a.column,1))this.moveCursorTo(a.end.row,a.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+
	1,0);else{var b=this.session.getTabSize();a=this.lead;this.wouldMoveIntoSoftTab(a,b,1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,b):this.moveCursorBy(0,1)}};this.moveCursorLineStart=function(){var a=this.lead.row,b=this.lead.column,d=this.session.documentToScreenRow(a,b);d=this.session.screenToDocumentPosition(d,0);a=this.session.getDisplayLine(a,null,d.row,d.column).match(/^\s*/);a[0].length==b||this.session.$useEmacsStyleLineStart||(d.column+=a[0].length);this.moveCursorToPosition(d)};
	this.moveCursorLineEnd=function(){var a=this.lead;a=this.session.getDocumentLastRowColumnPosition(a.row,a.column);if(this.lead.column==a.column){var b=this.session.getLine(a.row);a.column==b.length&&(b=b.search(/\s+$/),0<b&&(a.column=b))}this.moveCursorTo(a.row,a.column)};this.moveCursorFileEnd=function(){var a=this.doc.getLength()-1,b=this.doc.getLine(a).length;this.moveCursorTo(a,b)};this.moveCursorFileStart=function(){this.moveCursorTo(0,0)};this.moveCursorLongWordRight=function(){var a=this.lead.row,
	b=this.lead.column,d=this.doc.getLine(a),g=d.substring(b);this.session.nonTokenRe.lastIndex=0;this.session.tokenRe.lastIndex=0;var l=this.session.getFoldAt(a,b,1);l?this.moveCursorTo(l.end.row,l.end.column):(this.session.nonTokenRe.exec(g)&&(b+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,g=d.substring(b)),b>=d.length?(this.moveCursorTo(a,d.length),this.moveCursorRight(),a<this.doc.getLength()-1&&this.moveCursorWordRight()):(this.session.tokenRe.exec(g)&&(b+=this.session.tokenRe.lastIndex,
	this.session.tokenRe.lastIndex=0),this.moveCursorTo(a,b)))};this.moveCursorLongWordLeft=function(){var a=this.lead.row,b=this.lead.column,d;(d=this.session.getFoldAt(a,b,-1))?this.moveCursorTo(d.start.row,d.start.column):(d=this.session.getFoldStringAt(a,b,-1),null==d&&(d=this.doc.getLine(a).substring(0,b)),d=q.stringReverse(d),this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,this.session.nonTokenRe.exec(d)&&(b-=this.session.nonTokenRe.lastIndex,d=d.slice(this.session.nonTokenRe.lastIndex),
	this.session.nonTokenRe.lastIndex=0),0>=b?(this.moveCursorTo(a,0),this.moveCursorLeft(),0<a&&this.moveCursorWordLeft()):(this.session.tokenRe.exec(d)&&(b-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(a,b)))};this.$shortWordEndIndex=function(a){var b=0,d,g=/\s/,l=this.session.tokenRe;l.lastIndex=0;if(this.session.tokenRe.exec(a))b=this.session.tokenRe.lastIndex;else{for(;(d=a[b])&&g.test(d);)b++;if(1>b)for(l.lastIndex=0;(d=a[b])&&!l.test(d);)if(l.lastIndex=0,b++,
	g.test(d))if(2<b){b--;break}else{for(;(d=a[b])&&g.test(d);)b++;if(2<b)break}}l.lastIndex=0;return b};this.moveCursorShortWordRight=function(){var a=this.lead.row,b=this.lead.column,d=this.doc.getLine(a),g=d.substring(b),l=this.session.getFoldAt(a,b,1);if(l)return this.moveCursorTo(l.end.row,l.end.column);if(b==d.length){b=this.doc.getLength();do a++,g=this.doc.getLine(a);while(a<b&&/^\s*$/.test(g));/^\s+/.test(g)||(g="");b=0}g=this.$shortWordEndIndex(g);this.moveCursorTo(a,b+g)};this.moveCursorShortWordLeft=
	function(){var a=this.lead.row,b=this.lead.column,d;if(d=this.session.getFoldAt(a,b,-1))return this.moveCursorTo(d.start.row,d.start.column);d=this.session.getLine(a).substring(0,b);if(0===b){do a--,d=this.doc.getLine(a);while(0<a&&/^\s*$/.test(d));b=d.length;/\s+$/.test(d)||(d="")}d=q.stringReverse(d);d=this.$shortWordEndIndex(d);return this.moveCursorTo(a,b-d)};this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()};this.moveCursorWordLeft=
	function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()};this.moveCursorBy=function(a,b){var d=this.session.documentToScreenPosition(this.lead.row,this.lead.column);if(0===b){if(0!==a)if(this.session.$bidiHandler.isBidiRow(d.row,this.lead.row)){var g=this.session.$bidiHandler.getPosLeft(d.column);d.column=Math.round(g/this.session.$bidiHandler.charWidths[0])}else g=d.column*this.session.$bidiHandler.charWidths[0];this.$desiredColumn?d.column=this.$desiredColumn:
	this.$desiredColumn=d.column}if(0!=a&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var l=this.session.lineWidgets[this.lead.row];0>a?a-=l.rowsAbove||0:0<a&&(a+=l.rowCount-(l.rowsAbove||0))}a=this.session.screenToDocumentPosition(d.row+a,d.column,g);this.moveCursorTo(a.row,a.column+b,0===b)};this.moveCursorToPosition=function(a){this.moveCursorTo(a.row,a.column)};this.moveCursorTo=function(a,b,d){var g=this.session.getFoldAt(a,b,1);g&&(a=g.start.row,b=g.start.column);this.$keepDesiredColumnOnChange=
	!0;g=this.session.getLine(a);/[\uDC00-\uDFFF]/.test(g.charAt(b))&&g.charAt(b-1)&&(b=this.lead.row==a&&this.lead.column==b+1?b-1:b+1);this.lead.setPosition(a,b);this.$keepDesiredColumnOnChange=!1;d||(this.$desiredColumn=null)};this.moveCursorToScreen=function(a,b,d){a=this.session.screenToDocumentPosition(a,b);this.moveCursorTo(a.row,a.column,d)};this.detach=function(){this.lead.detach();this.anchor.detach();this.session=this.doc=null};this.fromOrientedRange=function(a){this.setSelectionRange(a,a.cursor==
	a.start);this.$desiredColumn=a.desiredColumn||this.$desiredColumn};this.toOrientedRange=function(a){var b=this.getRange();a?(a.start.column=b.start.column,a.start.row=b.start.row,a.end.column=b.end.column,a.end.row=b.end.row):a=b;a.cursor=this.isBackwards()?a.start:a.end;a.desiredColumn=this.$desiredColumn;return a};this.getRangeOfMovements=function(a){var b=this.getCursor();try{a(this);var d=this.getCursor();return c.fromPoints(b,d)}catch(g){return c.fromPoints(b,b)}finally{this.moveCursorToPosition(b)}};
	this.toJSON=function(){if(this.rangeCount)var a=this.ranges.map(function(b){var d=b.clone();d.isBackwards=b.cursor==b.start;return d});else a=this.getRange(),a.isBackwards=this.isBackwards();return a};this.fromJSON=function(a){if(void 0==a.start){if(this.rangeList&&1<a.length){this.toSingleRange(a[0]);for(var b=a.length;b--;){var d=c.fromPoints(a[b].start,a[b].end);a[b].isBackwards&&(d.cursor=d.start);this.addRange(d,!0)}return}a=a[0]}this.rangeList&&this.toSingleRange(a);this.setSelectionRange(a,
	a.isBackwards)};this.isEqual=function(a){if((a.length||this.rangeCount)&&a.length!=this.rangeCount)return!1;if(!a.length||!this.ranges)return this.getRange().isEqual(a);for(var b=this.ranges.length;b--;)if(!this.ranges[b].isEqual(a[b]))return!1;return!0}}).call(A.prototype);C.Selection=A});
	ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(A,C,J){var y=A("./config"),q=5E3;A=function(f){this.states=f;this.regExps={};this.matchMappings={};for(var c in this.states){f=this.states[c];for(var a=[],b=0,d=this.matchMappings[c]={defaultToken:"text"},g="g",l=[],n=0;n<f.length;n++){var h=f[n];h.defaultToken&&(d.defaultToken=h.defaultToken);h.caseInsensitive&&(g="gi");if(null!=h.regex){h.regex instanceof RegExp&&(h.regex=h.regex.toString().slice(1,-1));var t=h.regex,
	r=(new RegExp("(?:("+t+")|(.))")).exec("a").length-2;Array.isArray(h.token)?1==h.token.length||1==r?h.token=h.token[0]:r-1!=h.token.length?(this.reportError("number of classes and regexp groups doesn't match",{rule:h,groupCount:r-1}),h.token=h.token[0]):(h.tokenArray=h.token,h.token=null,h.onMatch=this.$arrayTokens):"function"!=typeof h.token||h.onMatch||(h.onMatch=1<r?this.$applyToken:h.token);1<r&&(/\\\d/.test(h.regex)?t=h.regex.replace(/\\([0-9]+)/g,function(x,k){return"\\"+(parseInt(k,10)+b+1)}):
	(r=1,t=this.removeCapturingGroups(h.regex)),h.splitRegex||"string"==typeof h.token||l.push(h));d[b]=n;b+=r;a.push(t);h.onMatch||(h.onMatch=null)}}a.length||(d[0]=0,a.push("$"));l.forEach(function(x){x.splitRegex=this.createSplitterRegexp(x.regex,g)},this);this.regExps[c]=new RegExp("("+a.join(")|(")+")|($)",g)}};(function(){this.$setMaxTokenCount=function(f){q=f|0};this.$applyToken=function(f){var c=this.splitRegex.exec(f).slice(1),a=this.token.apply(this,c);if("string"===typeof a)return[{type:a,
	value:f}];f=[];for(var b=0,d=a.length;b<d;b++)c[b]&&(f[f.length]={type:a[b],value:c[b]});return f};this.$arrayTokens=function(f){if(!f)return[];f=this.splitRegex.exec(f);if(!f)return"text";for(var c=[],a=this.tokenArray,b=0,d=a.length;b<d;b++)f[b+1]&&(c[c.length]={type:a[b],value:f[b+1]});return c};this.removeCapturingGroups=function(f){return f.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!]|(\()/g,function(c,a){return a?"(?:":c})};this.createSplitterRegexp=function(f,c){if(-1!=f.indexOf("(?=")){var a=
	0,b=!1,d={};f.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(g,l,n,h,t,r){b?b="]"!=t:t?b=!0:h?(a==d.stack&&(d.end=r+1,d.stack=-1),a--):n&&(a++,1!=n.length&&(d.stack=a,d.start=r));return g});null!=d.end&&/^\)*$/.test(f.substr(d.end))&&(f=f.substring(0,d.start)+f.substr(d.end))}"^"!=f.charAt(0)&&(f="^"+f);"$"!=f.charAt(f.length-1)&&(f+="$");return new RegExp(f,(c||"").replace("g",""))};this.getLineTokens=function(f,c){if(c&&"string"!=typeof c){var a=c.slice(0);c=a[0];"#tmp"===c&&(a.shift(),
	c=a.shift())}else a=[];var b=c||"start",d=this.states[b];d||(b="start",d=this.states[b]);var g=this.matchMappings[b],l=this.regExps[b];l.lastIndex=0;for(var n,h=[],t=0,r=0,x={type:null,value:""};n=l.exec(f);){var k=g.defaultToken,e=null,p=n[0],v=l.lastIndex;if(v-p.length>t){var w=f.substring(t,v-p.length);x.type==k?x.value+=w:(x.type&&h.push(x),x={type:k,value:w})}for(w=0;w<n.length-2;w++)if(void 0!==n[w+1]){e=d[g[w]];k=e.onMatch?e.onMatch(p,b,a,f):e.token;e.next&&(b="string"==typeof e.next?e.next:
	e.next(b,a),d=this.states[b],d||(this.reportError("state doesn't exist",b),b="start",d=this.states[b]),g=this.matchMappings[b],t=v,l=this.regExps[b],l.lastIndex=v);e.consumeLineEnd&&(t=v);break}if(p)if("string"===typeof k)e&&!1===e.merge||x.type!==k?(x.type&&h.push(x),x={type:k,value:p}):x.value+=p;else if(k)for(x.type&&h.push(x),x={type:null,value:""},w=0;w<k.length;w++)h.push(k[w]);if(t==f.length)break;t=v;if(r++>q){for(r>2*f.length&&this.reportError("infinite loop with in ace tokenizer",{startState:c,
	line:f});t<f.length;)x.type&&h.push(x),x={value:f.substring(t,t+=500),type:"overflow"};b="start";a=[];break}}x.type&&h.push(x);1<a.length&&a[0]!==b&&a.unshift("#tmp",b);return{tokens:h,state:a.length?a:b}};this.reportError=y.reportError}).call(A.prototype);C.Tokenizer=A});
	ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(A,C,J){var y=A("../lib/lang");A=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(c,a){if(a)for(l in c){for(var b=c[l],d=0;d<b.length;d++){var g=b[d];if(g.next||g.onMatch)"string"==typeof g.next&&0!==g.next.indexOf(a)&&(g.next=a+g.next),g.nextState&&0!==g.nextState.indexOf(a)&&(g.nextState=a+g.nextState)}this.$rules[a+l]=b}else for(var l in c)this.$rules[l]=
	c[l]};this.getRules=function(){return this.$rules};this.embedRules=function(c,a,b,d,g){c="function"==typeof c?(new c).getRules():c;if(d)for(var l=0;l<d.length;l++)d[l]=a+d[l];else for(l in d=[],c)d.push(a+l);this.addRules(c,a);if(b)for(g=Array.prototype[g?"push":"unshift"],l=0;l<d.length;l++)g.apply(this.$rules[d[l]],y.deepCopy(b));this.$embeds||(this.$embeds=[]);this.$embeds.push(a)};this.getEmbeds=function(){return this.$embeds};var q=function(c,a){("start"!=c||a.length)&&a.unshift(this.nextState,
	c);return this.nextState},f=function(c,a){a.shift();return a.shift()||"start"};this.normalizeRules=function(){function c(d){d=b[d];d.processed=!0;for(var g=0;g<d.length;g++){var l=d[g],n=null;Array.isArray(l)&&(n=l,l={});!l.regex&&l.start&&(l.regex=l.start,l.next||(l.next=[]),l.next.push({defaultToken:l.token},{token:l.token+".end",regex:l.end||l.start,next:"pop"}),l.token+=".start",l.push=!0);var h=l.next||l.push;if(h&&Array.isArray(h)){var t=l.stateName;t||(t=l.token,"string"!=typeof t&&(t=t[0]||
	""),b[t]&&(t+=a++));b[t]=h;l.next=t;c(t)}else"pop"==h&&(l.next=f);l.push&&(l.nextState=l.next||l.push,l.next=q,delete l.push);if(l.rules)for(var r in l.rules)b[r]?b[r].push&&b[r].push.apply(b[r],l.rules[r]):b[r]=l.rules[r];(h="string"==typeof l?l:l.include)&&(n=Array.isArray(h)?h.map(function(x){return b[x]}):b[h]);n&&(n=[g,1].concat(n),l.noEscape&&(n=n.filter(function(x){return!x.next})),d.splice.apply(d,n),g--);l.keywordMap&&(l.token=this.createKeywordMapper(l.keywordMap,l.defaultToken||"text",
	l.caseInsensitive),delete l.defaultToken)}}var a=0,b=this.$rules;Object.keys(b).forEach(c,this)};this.createKeywordMapper=function(c,a,b,d){var g=Object.create(null);this.$keywordList=[];Object.keys(c).forEach(function(l){for(var n=c[l].split(d||"|"),h=n.length;h--;){var t=n[h];this.$keywordList.push(t);b&&(t=t.toLowerCase());g[t]=l}},this);c=null;return b?function(l){return g[l.toLowerCase()]||a}:function(l){return g[l]||a}};this.getKeywords=function(){return this.$keywords}}).call(A.prototype);
	C.TextHighlightRules=A});
	ace.define("ace/mode/behaviour",["require","exports","module"],function(A,C,J){A=function(){this.$behaviours={}};(function(){this.add=function(y,q,f){switch(void 0){case this.$behaviours:this.$behaviours={};case this.$behaviours[y]:this.$behaviours[y]={}}this.$behaviours[y][q]=f};this.addBehaviours=function(y){for(var q in y)for(var f in y[q])this.add(q,f,y[q][f])};this.remove=function(y){this.$behaviours&&this.$behaviours[y]&&delete this.$behaviours[y]};this.inherit=function(y,q){y="function"===
	typeof y?(new y).getBehaviours(q):y.getBehaviours(q);this.addBehaviours(y)};this.getBehaviours=function(y){if(y){for(var q={},f=0;f<y.length;f++)this.$behaviours[y[f]]&&(q[y[f]]=this.$behaviours[y[f]]);return q}return this.$behaviours}}).call(A.prototype);C.Behaviour=A});
	ace.define("ace/token_iterator",["require","exports","module","ace/range"],function(A,C,J){var y=A("./range").Range;A=function(q,f,c){this.$session=q;this.$row=f;this.$rowTokens=q.getTokens(f);this.$tokenIndex=(q=q.getTokenAt(f,c))?q.index:-1};(function(){this.stepBackward=function(){for(--this.$tokenIndex;0>this.$tokenIndex;){--this.$row;if(0>this.$row)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row);this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]};
	this.stepForward=function(){this.$tokenIndex+=1;for(var q;this.$tokenIndex>=this.$rowTokens.length;){this.$row+=1;q||(q=this.$session.getLength());if(this.$row>=q)return this.$row=q-1,null;this.$rowTokens=this.$session.getTokens(this.$row);this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]};this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]};this.getCurrentTokenRow=function(){return this.$row};this.getCurrentTokenColumn=function(){var q=this.$rowTokens,f=this.$tokenIndex,
	c=q[f].start;if(void 0!==c)return c;for(c=0;0<f;)--f,c+=q[f].value.length;return c};this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}};this.getCurrentTokenRange=function(){var q=this.$rowTokens[this.$tokenIndex],f=this.getCurrentTokenColumn();return new y(this.$row,f,this.$row,f+q.value.length)}}).call(A.prototype);C.TokenIterator=A});
	ace.define("ace/mode/behaviour/cstyle","require exports module ace/lib/oop ace/mode/behaviour ace/token_iterator ace/lib/lang".split(" "),function(A,C,J){J=A("../../lib/oop");var y=A("../behaviour").Behaviour,q=A("../../token_iterator").TokenIterator,f=A("../../lib/lang"),c=["text","paren.rparen","rparen","paren","punctuation.operator"],a="text paren.rparen rparen paren punctuation.operator comment".split(" "),b,d={},g={'"':'"',"'":"'"},l=function(t){var r=-1;t.multiSelect&&(r=t.selection.index,d.rangeCount!=
	t.multiSelect.rangeCount&&(d={rangeCount:t.multiSelect.rangeCount}));if(d[r])return b=d[r];b=d[r]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},n=function(t,r,x,k){var e=t.end.row-t.start.row;return{text:x+r+k,selection:[0,t.start.column+1,e,t.end.column+(e?0:1)]}},h=function(t){this.add("braces","insertion",function(r,x,k,e,p){r=k.getCursorPosition();x=e.doc.getLine(r.row);if("{"==
	p){l(k);p=k.getSelectionRange();var v=e.doc.getTextRange(p);if(""!==v&&"{"!==v&&k.getWrapBehavioursEnabled())return n(p,v,"{","}");if(h.isSaneInsertion(k,e)){if(/[\]\}\)]/.test(x[r.column])||k.inMultiSelectMode||t&&t.braces)return h.recordAutoInsert(k,e,"}"),{text:"{}",selection:[1,1]};h.recordMaybeInsert(k,e,"{");return{text:"{",selection:[1,1]}}}else if("}"==p){if(l(k),v=x.substring(r.column,r.column+1),"}"==v&&null!==e.$findOpeningBracket("}",{column:r.column+1,row:r.row})&&h.isAutoInsertedClosing(r,
	x,p))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==p||"\r\n"==p){l(k);k="";h.isMaybeInsertedClosing(r,x)&&(k=f.stringRepeat("}",b.maybeInsertedBrackets),h.clearMaybeInsertedClosing());v=x.substring(r.column,r.column+1);if("}"===v){r=e.findMatchingBracket({row:r.row,column:r.column+1},"}");if(!r)return null;r=this.$getIndent(e.getLine(r.row))}else if(k)r=this.$getIndent(x);else{h.clearMaybeInsertedClosing();return}e=r+e.getTabString();return{text:"\n"+e+"\n"+r+k,selection:[1,
	e.length,1,e.length]}}h.clearMaybeInsertedClosing()}});this.add("braces","deletion",function(r,x,k,e,p){r=e.doc.getTextRange(p);if(!p.isMultiLine()&&"{"==r){l(k);if("}"==e.doc.getLine(p.start.row).substring(p.end.column,p.end.column+1))return p.end.column++,p;b.maybeInsertedBrackets--}});this.add("parens","insertion",function(r,x,k,e,p){if("("==p){l(k);p=k.getSelectionRange();r=e.doc.getTextRange(p);if(""!==r&&k.getWrapBehavioursEnabled())return n(p,r,"(",")");if(h.isSaneInsertion(k,e))return h.recordAutoInsert(k,
	e,")"),{text:"()",selection:[1,1]}}else if(")"==p&&(l(k),k=k.getCursorPosition(),r=e.doc.getLine(k.row),")"==r.substring(k.column,k.column+1)&&null!==e.$findOpeningBracket(")",{column:k.column+1,row:k.row})&&h.isAutoInsertedClosing(k,r,p)))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}});this.add("parens","deletion",function(r,x,k,e,p){r=e.doc.getTextRange(p);if(!p.isMultiLine()&&"("==r&&(l(k),")"==e.doc.getLine(p.start.row).substring(p.start.column+1,p.start.column+2)))return p.end.column++,
	p});this.add("brackets","insertion",function(r,x,k,e,p){if("["==p){l(k);p=k.getSelectionRange();r=e.doc.getTextRange(p);if(""!==r&&k.getWrapBehavioursEnabled())return n(p,r,"[","]");if(h.isSaneInsertion(k,e))return h.recordAutoInsert(k,e,"]"),{text:"[]",selection:[1,1]}}else if("]"==p&&(l(k),k=k.getCursorPosition(),r=e.doc.getLine(k.row),"]"==r.substring(k.column,k.column+1)&&null!==e.$findOpeningBracket("]",{column:k.column+1,row:k.row})&&h.isAutoInsertedClosing(k,r,p)))return h.popAutoInsertedClosing(),
	{text:"",selection:[1,1]}});this.add("brackets","deletion",function(r,x,k,e,p){r=e.doc.getTextRange(p);if(!p.isMultiLine()&&"["==r&&(l(k),"]"==e.doc.getLine(p.start.row).substring(p.start.column+1,p.start.column+2)))return p.end.column++,p});this.add("string_dquotes","insertion",function(r,x,k,e,p){r=e.$mode.$quotes||g;if(1==p.length&&r[p]&&(!this.lineCommentStart||-1==this.lineCommentStart.indexOf(p))){l(k);x=k.getSelectionRange();var v=e.doc.getTextRange(x);if(""!==v&&(1!=v.length||!r[v])&&k.getWrapBehavioursEnabled())return n(x,
	v,p,p);if(!v){r=k.getCursorPosition();x=e.doc.getLine(r.row);k=x.substring(r.column-1,r.column);v=x.substring(r.column,r.column+1);var w=e.getTokenAt(r.row,r.column),m=e.getTokenAt(r.row,r.column+1);if("\\"==k&&w&&/escape/.test(w.type))return null;w=w&&/string|escape/.test(w.type);var u=!m||/string|escape/.test(m.type);if(v==p)(e=w!==u)&&/string\.end/.test(m.type)&&(e=!1);else{if(w&&!u||w&&u)return null;e=e.$mode.tokenRe;e.lastIndex=0;m=e.test(k);e.lastIndex=0;w=e.test(k);if(m||w||v&&!/[\s;,.})\]\\]/.test(v))return null;
	r=x[r.column-2];if(k==p&&(r==p||e.test(r)))return null;e=!0}return{text:e?p+p:"",selection:[1,1]}}}});this.add("string_dquotes","deletion",function(r,x,k,e,p){r=e.$mode.$quotes||g;x=e.doc.getTextRange(p);if(!p.isMultiLine()&&r.hasOwnProperty(x)&&(l(k),e.doc.getLine(p.start.row).substring(p.start.column+1,p.start.column+2)==x))return p.end.column++,p})};h.isSaneInsertion=function(t,r){var x=t.getCursorPosition(),k=new q(r,x.row,x.column);if(!this.$matchTokenType(k.getCurrentToken()||"text",c)){if(/[)}\]]/.test(t.session.getLine(x.row)[x.column]))return!0;
	t=new q(r,x.row,x.column+1);if(!this.$matchTokenType(t.getCurrentToken()||"text",c))return!1}k.stepForward();return k.getCurrentTokenRow()!==x.row||this.$matchTokenType(k.getCurrentToken()||"text",a)};h.$matchTokenType=function(t,r){return-1<r.indexOf(t.type||t)};h.recordAutoInsert=function(t,r,x){t=t.getCursorPosition();r=r.doc.getLine(t.row);this.isAutoInsertedClosing(t,r,b.autoInsertedLineEnd[0])||(b.autoInsertedBrackets=0);b.autoInsertedRow=t.row;b.autoInsertedLineEnd=x+r.substr(t.column);b.autoInsertedBrackets++};
	h.recordMaybeInsert=function(t,r,x){t=t.getCursorPosition();r=r.doc.getLine(t.row);this.isMaybeInsertedClosing(t,r)||(b.maybeInsertedBrackets=0);b.maybeInsertedRow=t.row;b.maybeInsertedLineStart=r.substr(0,t.column)+x;b.maybeInsertedLineEnd=r.substr(t.column);b.maybeInsertedBrackets++};h.isAutoInsertedClosing=function(t,r,x){return 0<b.autoInsertedBrackets&&t.row===b.autoInsertedRow&&x===b.autoInsertedLineEnd[0]&&r.substr(t.column)===b.autoInsertedLineEnd};h.isMaybeInsertedClosing=function(t,r){return 0<
	b.maybeInsertedBrackets&&t.row===b.maybeInsertedRow&&r.substr(t.column)===b.maybeInsertedLineEnd&&r.substr(0,t.column)==b.maybeInsertedLineStart};h.popAutoInsertedClosing=function(){b.autoInsertedLineEnd=b.autoInsertedLineEnd.substr(1);b.autoInsertedBrackets--};h.clearMaybeInsertedClosing=function(){b&&(b.maybeInsertedBrackets=0,b.maybeInsertedRow=-1)};J.inherits(h,y);C.CstyleBehaviour=h});
	ace.define("ace/unicode",["require","exports","module"],function(A,C,J){A=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,
	2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,
	58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,
	0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,
	2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2];J=0;for(var y=[],q=0;q<A.length;q+=2)y.push(J+=A[q]),A[q+1]&&y.push(45,J+=A[q+1]);C.wordChars=String.fromCharCode.apply(null,y)});
	ace.define("ace/mode/text","require exports module ace/config ace/tokenizer ace/mode/text_highlight_rules ace/mode/behaviour/cstyle ace/unicode ace/lib/lang ace/token_iterator ace/range".split(" "),function(A,C,J){var y=A("../config"),q=A("../tokenizer").Tokenizer,f=A("./text_highlight_rules").TextHighlightRules,c=A("./behaviour/cstyle").CstyleBehaviour,a=A("../unicode"),b=A("../lib/lang"),d=A("../token_iterator").TokenIterator,g=A("../range").Range;A=function(){this.HighlightRules=f};(function(){this.$defaultBehaviour=
	new c;this.tokenRe=new RegExp("^["+a.wordChars+"\\$_]+","g");this.nonTokenRe=new RegExp("^(?:[^"+a.wordChars+"\\$_]|\\s])+","g");this.getTokenizer=function(){this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new q(this.$highlightRules.getRules()));return this.$tokenizer};this.blockComment=this.lineCommentStart="";this.toggleCommentLines=function(l,n,h,t){function r(F){for(var L=h;L<=t;L++)F(x.getLine(L),L)}var x=n.doc,k=
	!0,e=!0,p=Infinity,v=n.getTabSize();l=!1;if(this.lineCommentStart){Array.isArray(this.lineCommentStart)?(B=this.lineCommentStart.map(b.escapeRegExp).join("|"),u=this.lineCommentStart[0]):(B=b.escapeRegExp(this.lineCommentStart),u=this.lineCommentStart);B=new RegExp("^(\\s*)(?:"+B+") ?");l=n.getUseSoftTabs();G=function(F,L){var M=F.match(B);if(M){var N=M[1].length,P=M[0].length;m(F,N,P)||" "!=M[0][P-1]||P--;x.removeInLine(L,N,P)}};var w=u+" ";E=function(F,L){if(!k||/\S/.test(F))m(F,p,p)?x.insertInLine({row:L,
	column:p},w):x.insertInLine({row:L,column:p},u)};H=function(F,L){return B.test(F)};var m=function(F,L,M){for(var N=0;L--&&" "==F.charAt(L);)N++;if(0!=N%v)return!1;for(N=0;" "==F.charAt(M++);)N++;return 2<v?N%v!=v-1:0==N%v}}else{if(!this.blockComment)return!1;var u=this.blockComment.start,z=this.blockComment.end,B=new RegExp("^(\\s*)(?:"+b.escapeRegExp(u)+")"),D=new RegExp("(?:"+b.escapeRegExp(z)+")\\s*$"),E=function(F,L){H(F,L)||k&&!/\S/.test(F)||(x.insertInLine({row:L,column:F.length},z),x.insertInLine({row:L,
	column:p},u))},G=function(F,L){var M;(M=F.match(D))&&x.removeInLine(L,F.length-M[0].length,F.length);(M=F.match(B))&&x.removeInLine(L,M[1].length,M[0].length)},H=function(F,L){if(B.test(F))return!0;F=n.getTokens(L);for(L=0;L<F.length;L++)if("comment"===F[L].type)return!0}}var I=Infinity;r(function(F,L){var M=F.search(/\S/);-1!==M?(M<p&&(p=M),e&&!H(F,L)&&(e=!1)):I>F.length&&(I=F.length)});Infinity==p&&(p=I,e=k=!1);l&&0!=p%v&&(p=Math.floor(p/v)*v);r(e?G:E)};this.toggleBlockComment=function(l,n,h,t){if(l=
	this.blockComment){!l.start&&l[0]&&(l=l[0]);var r=new d(n,t.row,t.column),x=r.getCurrentToken(),k=n.selection.toOrientedRange();if(x&&/comment/.test(x.type)){for(var e,p;x&&/comment/.test(x.type);){x=x.value.indexOf(l.start);if(-1!=x){h=r.getCurrentTokenRow();r=r.getCurrentTokenColumn()+x;e=new g(h,r,h,r+l.start.length);break}x=r.stepBackward()}r=new d(n,t.row,t.column);for(x=r.getCurrentToken();x&&/comment/.test(x.type);){x=x.value.indexOf(l.end);if(-1!=x){h=r.getCurrentTokenRow();r=r.getCurrentTokenColumn()+
	x;p=new g(h,r,h,r+l.end.length);break}x=r.stepForward()}p&&n.remove(p);if(e){n.remove(e);var v=e.start.row;var w=-l.start.length}}else w=l.start.length,v=h.start.row,n.insert(h.end,l.end),n.insert(h.start,l.start);k.start.row==v&&(k.start.column+=w);k.end.row==v&&(k.end.column+=w);n.selection.fromOrientedRange(k)}};this.getNextLineIndent=function(l,n,h){return this.$getIndent(n)};this.checkOutdent=function(l,n,h){return!1};this.autoOutdent=function(l,n,h){};this.$getIndent=function(l){return l.match(/^\s*/)[0]};
	this.createWorker=function(l){return null};this.createModeDelegates=function(l){this.$embeds=[];this.$modes={};for(var n in l)if(l[n]){var h=l[n],t=h.prototype.$id,r=y.$modes[t];r||(y.$modes[t]=r=new h);y.$modes[n]||(y.$modes[n]=r);this.$embeds.push(n);this.$modes[n]=r}var x="toggleBlockComment toggleCommentLines getNextLineIndent checkOutdent autoOutdent transformAction getCompletions".split(" ");for(n=0;n<x.length;n++)(function(k){var e=x[n],p=k[e];k[x[n]]=function(){return this.$delegator(e,arguments,
	p)}})(this)};this.$delegator=function(l,n,h){var t=n[0]||"start";if("string"!=typeof t){if(Array.isArray(t[2])){var r=this.$modes[t[2][t[2].length-1]];if(r)return r[l].apply(r,[t[1]].concat([].slice.call(n,1)))}t=t[0]||"start"}for(r=0;r<this.$embeds.length;r++)if(this.$modes[this.$embeds[r]]){var x=t.split(this.$embeds[r]);if(!x[0]&&x[1])return n[0]=x[1],r=this.$modes[this.$embeds[r]],r[l].apply(r,n)}l=h.apply(this,n);return h?l:void 0};this.transformAction=function(l,n,h,t,r){if(this.$behaviour){var x=
	this.$behaviour.getBehaviours(),k;for(k in x)if(x[k][n]){var e=x[k][n].apply(this,arguments);if(e)return e}}};this.getKeywords=function(l){if(!this.completionKeywords){var n=this.$tokenizer.rules,h=[];for(p in n)for(var t=n[p],r=0,x=t.length;r<x;r++)if("string"===typeof t[r].token)/keyword|support|storage/.test(t[r].token)&&h.push(t[r].regex);else if("object"===typeof t[r].token)for(var k=0,e=t[r].token.length;k<e;k++)if(/keyword|support|storage/.test(t[r].token[k])){var p=t[r].regex.match(/\(.+?\)/g)[k];
	h.push(p.substr(1,p.length-2))}this.completionKeywords=h}return l?h.concat(this.$keywordList||[]):this.$keywordList};this.$createKeywordList=function(){this.$highlightRules||this.getTokenizer();return this.$keywordList=this.$highlightRules.$keywordList||[]};this.getCompletions=function(l,n,h,t){return(this.$keywordList||this.$createKeywordList()).map(function(r){return{name:r,value:r,score:0,meta:"keyword"}})};this.$id="ace/mode/text"}).call(A.prototype);C.Mode=A});
	ace.define("ace/apply_delta",["require","exports","module"],function(A,C,J){C.applyDelta=function(y,q,f){f=q.start.row;var c=q.start.column,a=y[f]||"";switch(q.action){case "insert":if(1===q.lines.length)y[f]=a.substring(0,c)+q.lines[0]+a.substring(c);else{var b=[f,1].concat(q.lines);y.splice.apply(y,b);y[f]=a.substring(0,c)+y[f];y[f+q.lines.length-1]+=a.substring(c)}break;case "remove":b=q.end.column,q=q.end.row,f===q?y[f]=a.substring(0,c)+a.substring(b):y.splice(f,q-f+1,a.substring(0,c)+y[q].substring(b))}}});
	ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(A,C,J){var y=A("./lib/oop"),q=A("./lib/event_emitter").EventEmitter;A=C.Anchor=function(f,c,a){this.$onChange=this.onChange.bind(this);this.attach(f);"undefined"==typeof a?this.setPosition(c.row,c.column):this.setPosition(c,a)};(function(){function f(c,a,b){b=b?c.column<=a.column:c.column<a.column;return c.row<a.row||c.row==a.row&&b}y.implement(this,q);this.getPosition=function(){return this.$clipPositionToDocument(this.row,
	this.column)};this.getDocument=function(){return this.document};this.$insertRight=!1;this.onChange=function(c){if(!(c.start.row==c.end.row&&c.start.row!=this.row||c.start.row>this.row)){var a={row:this.row,column:this.column};var b=this.$insertRight;var d="insert"==c.action,g=(d?1:-1)*(c.end.row-c.start.row),l=(d?1:-1)*(c.end.column-c.start.column),n=c.start;c=d?n:c.end;f(a,n,b)?(b=a.row,a=a.column):f(c,a,!b)?(b=a.row+g,a=a.column+(a.row==c.row?l:0)):(b=n.row,a=n.column);this.setPosition(b,a,!0)}};
	this.setPosition=function(c,a,b){c=b?{row:c,column:a}:this.$clipPositionToDocument(c,a);if(this.row!=c.row||this.column!=c.column)a={row:this.row,column:this.column},this.row=c.row,this.column=c.column,this._signal("change",{old:a,value:c})};this.detach=function(){this.document.off("change",this.$onChange)};this.attach=function(c){this.document=c||this.document;this.document.on("change",this.$onChange)};this.$clipPositionToDocument=function(c,a){var b={};c>=this.document.getLength()?(b.row=Math.max(0,
	this.document.getLength()-1),b.column=this.document.getLine(b.row).length):0>c?(b.row=0,b.column=0):(b.row=c,b.column=Math.min(this.document.getLine(b.row).length,Math.max(0,a)));0>a&&(b.column=0);return b}}).call(A.prototype)});
	ace.define("ace/document","require exports module ace/lib/oop ace/apply_delta ace/lib/event_emitter ace/range ace/anchor".split(" "),function(A,C,J){var y=A("./lib/oop"),q=A("./apply_delta").applyDelta,f=A("./lib/event_emitter").EventEmitter,c=A("./range").Range,a=A("./anchor").Anchor;A=function(b){this.$lines=[""];0===b.length?this.$lines=[""]:Array.isArray(b)?this.insertMergedLines({row:0,column:0},b):this.insert({row:0,column:0},b)};(function(){y.implement(this,f);this.setValue=function(b){var d=
	this.getLength()-1;this.remove(new c(0,0,d,this.getLine(d).length));this.insert({row:0,column:0},b)};this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())};this.createAnchor=function(b,d){return new a(this,b,d)};0==="aaa".split(/a/).length?this.$split=function(b){return b.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(b){return b.split(/\r\n|\r|\n/)};this.$detectNewLine=function(b){this.$autoNewLine=(b=b.match(/^.*?(\r\n|\r|\n)/m))?b[1]:"\n";this._signal("changeNewLineMode")};
	this.getNewLineCharacter=function(){switch(this.$newLineMode){case "windows":return"\r\n";case "unix":return"\n";default:return this.$autoNewLine||"\n"}};this.$autoNewLine="";this.$newLineMode="auto";this.setNewLineMode=function(b){this.$newLineMode!==b&&(this.$newLineMode=b,this._signal("changeNewLineMode"))};this.getNewLineMode=function(){return this.$newLineMode};this.isNewLine=function(b){return"\r\n"==b||"\r"==b||"\n"==b};this.getLine=function(b){return this.$lines[b]||""};this.getLines=function(b,
	d){return this.$lines.slice(b,d+1)};this.getAllLines=function(){return this.getLines(0,this.getLength())};this.getLength=function(){return this.$lines.length};this.getTextRange=function(b){return this.getLinesForRange(b).join(this.getNewLineCharacter())};this.getLinesForRange=function(b){if(b.start.row===b.end.row)var d=[this.getLine(b.start.row).substring(b.start.column,b.end.column)];else{d=this.getLines(b.start.row,b.end.row);d[0]=(d[0]||"").substring(b.start.column);var g=d.length-1;b.end.row-
	b.start.row==g&&(d[g]=d[g].substring(0,b.end.column))}return d};this.insertLines=function(b,d){console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");return this.insertFullLines(b,d)};this.removeLines=function(b,d){console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");return this.removeFullLines(b,d)};this.insertNewLine=function(b){console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.");
	return this.insertMergedLines(b,["",""])};this.insert=function(b,d){1>=this.getLength()&&this.$detectNewLine(d);return this.insertMergedLines(b,this.$split(d))};this.insertInLine=function(b,d){var g=this.clippedPos(b.row,b.column);b=this.pos(b.row,b.column+d.length);this.applyDelta({start:g,end:b,action:"insert",lines:[d]},!0);return this.clonePos(b)};this.clippedPos=function(b,d){var g=this.getLength();void 0===b?b=g:0>b?b=0:b>=g&&(b=g-1,d=void 0);g=this.getLine(b);void 0==d&&(d=g.length);d=Math.min(Math.max(d,
	0),g.length);return{row:b,column:d}};this.clonePos=function(b){return{row:b.row,column:b.column}};this.pos=function(b,d){return{row:b,column:d}};this.$clipPosition=function(b){var d=this.getLength();b.row>=d?(b.row=Math.max(0,d-1),b.column=this.getLine(d-1).length):(b.row=Math.max(0,b.row),b.column=Math.min(Math.max(b.column,0),this.getLine(b.row).length));return b};this.insertFullLines=function(b,d){b=Math.min(Math.max(b,0),this.getLength());if(b<this.getLength()){d=d.concat([""]);var g=0}else d=
	[""].concat(d),b--,g=this.$lines[b].length;this.insertMergedLines({row:b,column:g},d)};this.insertMergedLines=function(b,d){b=this.clippedPos(b.row,b.column);var g={row:b.row+d.length-1,column:(1==d.length?b.column:0)+d[d.length-1].length};this.applyDelta({start:b,end:g,action:"insert",lines:d});return this.clonePos(g)};this.remove=function(b){var d=this.clippedPos(b.start.row,b.start.column);b=this.clippedPos(b.end.row,b.end.column);this.applyDelta({start:d,end:b,action:"remove",lines:this.getLinesForRange({start:d,
	end:b})});return this.clonePos(d)};this.removeInLine=function(b,d,g){d=this.clippedPos(b,d);b=this.clippedPos(b,g);this.applyDelta({start:d,end:b,action:"remove",lines:this.getLinesForRange({start:d,end:b})},!0);return this.clonePos(d)};this.removeFullLines=function(b,d){b=Math.min(Math.max(0,b),this.getLength()-1);d=Math.min(Math.max(0,d),this.getLength()-1);var g=d==this.getLength()-1&&0<b,l=d<this.getLength()-1,n=g?b-1:b;g=g?this.getLine(n).length:0;var h=l?d+1:d;l=l?0:this.getLine(h).length;n=
	new c(n,g,h,l);b=this.$lines.slice(b,d+1);this.applyDelta({start:n.start,end:n.end,action:"remove",lines:this.getLinesForRange(n)});return b};this.removeNewLine=function(b){b<this.getLength()-1&&0<=b&&this.applyDelta({start:this.pos(b,this.getLine(b).length),end:this.pos(b+1,0),action:"remove",lines:["",""]})};this.replace=function(b,d){b instanceof c||(b=c.fromPoints(b.start,b.end));if(0===d.length&&b.isEmpty())return b.start;if(d==this.getTextRange(b))return b.end;this.remove(b);return d?this.insert(b.start,
	d):b.start};this.applyDeltas=function(b){for(var d=0;d<b.length;d++)this.applyDelta(b[d])};this.revertDeltas=function(b){for(var d=b.length-1;0<=d;d--)this.revertDelta(b[d])};this.applyDelta=function(b,d){var g="insert"==b.action;(g?1>=b.lines.length&&!b.lines[0]:!c.comparePoints(b.start,b.end))||(g&&2E4<b.lines.length?this.$splitAndapplyLargeDelta(b,2E4):(q(this.$lines,b,d),this._signal("change",b)))};this.$safeApplyDelta=function(b){var d=this.$lines.length;("remove"==b.action&&b.start.row<d&&b.end.row<
	d||"insert"==b.action&&b.start.row<=d)&&this.applyDelta(b)};this.$splitAndapplyLargeDelta=function(b,d){for(var g=b.lines,l=g.length-d+1,n=b.start.row,h=b.start.column,t=0,r=0;t<l;t=r){r+=d-1;var x=g.slice(t,r);x.push("");this.applyDelta({start:this.pos(n+t,h),end:this.pos(n+r,h=0),action:b.action,lines:x},!0)}b.lines=g.slice(t);b.start.row=n+t;b.start.column=h;this.applyDelta(b,!0)};this.revertDelta=function(b){this.$safeApplyDelta({start:this.clonePos(b.start),end:this.clonePos(b.end),action:"insert"==
	b.action?"remove":"insert",lines:b.lines.slice()})};this.indexToPosition=function(b,d){var g=this.$lines||this.getAllLines(),l=this.getNewLineCharacter().length;d=d||0;for(var n=g.length;d<n;d++)if(b-=g[d].length+l,0>b)return{row:d,column:b+g[d].length+l};return{row:n-1,column:b+g[n-1].length+l}};this.positionToIndex=function(b,d){var g=this.$lines||this.getAllLines(),l=this.getNewLineCharacter().length,n=0,h=Math.min(b.row,g.length);for(d=d||0;d<h;++d)n+=g[d].length+l;return n+b.column}}).call(A.prototype);
	C.Document=A});
	ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(A,C,J){var y=A("./lib/oop"),q=A("./lib/event_emitter").EventEmitter;A=function(f,c){this.running=!1;this.lines=[];this.states=[];this.currentLine=0;this.tokenizer=f;var a=this;this.$worker=function(){if(a.running){for(var b=new Date,d=a.currentLine,g=-1,l=a.doc,n=d;a.lines[d];)d++;l=l.getLength();var h=0;for(a.running=!1;d<l;){a.$tokenizeRow(d);g=d;do d++;while(a.lines[d]);h++;if(0===
	h%5&&20<new Date-b){a.running=setTimeout(a.$worker,20);break}}a.currentLine=d;-1==g&&(g=d);n<=g&&a.fireUpdateEvent(n,g)}}};(function(){y.implement(this,q);this.setTokenizer=function(f){this.tokenizer=f;this.lines=[];this.states=[];this.start(0)};this.setDocument=function(f){this.doc=f;this.lines=[];this.states=[];this.stop()};this.fireUpdateEvent=function(f,c){this._signal("update",{data:{first:f,last:c}})};this.start=function(f){this.currentLine=Math.min(f||0,this.currentLine,this.doc.getLength());
	this.lines.splice(this.currentLine,this.lines.length);this.states.splice(this.currentLine,this.states.length);this.stop();this.running=setTimeout(this.$worker,700)};this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))};this.$updateOnChange=function(f){var c=f.start.row,a=f.end.row-c;0===a?this.lines[c]=null:"remove"==f.action?(this.lines.splice(c,a+1,null),this.states.splice(c,a+1,null)):(f=Array(a+1),f.unshift(c,1),this.lines.splice.apply(this.lines,f),this.states.splice.apply(this.states,
	f));this.currentLine=Math.min(c,this.currentLine,this.doc.getLength());this.stop()};this.stop=function(){this.running&&clearTimeout(this.running);this.running=!1};this.getTokens=function(f){return this.lines[f]||this.$tokenizeRow(f)};this.getState=function(f){this.currentLine==f&&this.$tokenizeRow(f);return this.states[f]||"start"};this.$tokenizeRow=function(f){var c=this.doc.getLine(f);c=this.tokenizer.getLineTokens(c,this.states[f-1],f);this.states[f]+""!==c.state+""?(this.states[f]=c.state,this.lines[f+
	1]=null,this.currentLine>f+1&&(this.currentLine=f+1)):this.currentLine==f&&(this.currentLine=f+1);return this.lines[f]=c.tokens}}).call(A.prototype);C.BackgroundTokenizer=A});
	ace.define("ace/search_highlight","require exports module ace/lib/lang ace/lib/oop ace/range".split(" "),function(A,C,J){var y=A("./lib/lang");A("./lib/oop");var q=A("./range").Range;A=function(f,c,a){this.setRegexp(f);this.clazz=c;this.type=a||"text"};(function(){this.MAX_RANGES=500;this.setRegexp=function(f){this.regExp+""!=f+""&&(this.regExp=f,this.cache=[])};this.update=function(f,c,a,b){if(this.regExp)for(var d=b.lastRow,g=b.firstRow;g<=d;g++){var l=this.cache[g];null==l&&(l=y.getMatchOffsets(a.getLine(g),
	this.regExp),l.length>this.MAX_RANGES&&(l=l.slice(0,this.MAX_RANGES)),l=l.map(function(h){return new q(g,h.offset,g,h.offset+h.length)}),this.cache[g]=l.length?l:"");for(var n=l.length;n--;)c.drawSingleLineMarker(f,l[n].toScreenRange(a),this.clazz,b)}}}).call(A.prototype);C.SearchHighlight=A});
	ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(A,C,J){function y(f,c){this.foldData=f;Array.isArray(c)?this.folds=c:c=this.folds=[c];f=c[c.length-1];this.range=new q(c[0].start.row,c[0].start.column,f.end.row,f.end.column);this.start=this.range.start;this.end=this.range.end;this.folds.forEach(function(a){a.setFoldLine(this)},this)}var q=A("../range").Range;(function(){this.shiftRow=function(f){this.start.row+=f;this.end.row+=f;this.folds.forEach(function(c){c.start.row+=
	f;c.end.row+=f})};this.addFold=function(f){if(f.sameRow){if(f.start.row<this.startRow||f.endRow>this.endRow)throw Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(f);this.folds.sort(function(c,a){return-c.range.compareEnd(a.start.row,a.start.column)});0<this.range.compareEnd(f.start.row,f.start.column)?(this.end.row=f.end.row,this.end.column=f.end.column):0>this.range.compareStart(f.end.row,f.end.column)&&(this.start.row=f.start.row,this.start.column=f.start.column)}else if(f.start.row==
	this.end.row)this.folds.push(f),this.end.row=f.end.row,this.end.column=f.end.column;else if(f.end.row==this.start.row)this.folds.unshift(f),this.start.row=f.start.row,this.start.column=f.start.column;else throw Error("Trying to add fold to FoldRow that doesn't have a matching row");f.foldLine=this};this.containsRow=function(f){return f>=this.start.row&&f<=this.end.row};this.walk=function(f,c,a){var b=0,d=this.folds;var g=!0;null==c&&(c=this.end.row,a=this.end.column);for(var l=0;l<d.length;l++){var n=
	d[l];var h=n.range.compareStart(c,a);if(-1==h){f(null,c,a,b,g);return}g=f(null,n.start.row,n.start.column,b,g);if((g=!g&&f(n.placeholder,n.start.row,n.start.column,b))||0===h)return;g=!n.sameRow;b=n.end.column}f(null,c,a,b,g)};this.getNextFoldTo=function(f,c){for(var a,b,d=0;d<this.folds.length;d++){a=this.folds[d];b=a.range.compareEnd(f,c);if(-1==b)return{fold:a,kind:"after"};if(0===b)return{fold:a,kind:"inside"}}return null};this.addRemoveChars=function(f,c,a){var b=this.getNextFoldTo(f,c);if(b){var d=
	b.fold;if("inside"==b.kind&&d.start.column!=c&&d.start.row!=f)window.console&&window.console.log(f,c,d);else if(d.start.row==f){f=this.folds;c=f.indexOf(d);0===c&&(this.start.column+=a);for(c;c<f.length;c++){d=f[c];d.start.column+=a;if(!d.sameRow)return;d.end.column+=a}this.end.column+=a}}};this.split=function(f,c){var a=this.getNextFoldTo(f,c);if(!a||"inside"==a.kind)return null;c=this.folds;f=this.foldData;a=c.indexOf(a.fold);var b=c[a-1];this.end.row=b.end.row;this.end.column=b.end.column;c=c.splice(a,
	c.length-a);c=new y(f,c);f.splice(f.indexOf(this)+1,0,c);return c};this.merge=function(f){for(var c=f.folds,a=0;a<c.length;a++)this.addFold(c[a]);c=this.foldData;c.splice(c.indexOf(f),1)};this.toString=function(){var f=[this.range.toString()+": ["];this.folds.forEach(function(c){f.push("  "+c.toString())});f.push("]");return f.join("\n")};this.idxToPosition=function(f){for(var c=0,a=0;a<this.folds.length;a++){var b=this.folds[a];f-=b.start.column-c;if(0>f)return{row:b.start.row,column:b.start.column+
	f};f-=b.placeholder.length;if(0>f)return b.start;c=b.end.column}return{row:this.end.row,column:this.end.column+f}}}).call(y.prototype);C.FoldLine=y});
	ace.define("ace/range_list",["require","exports","module","ace/range"],function(A,C,J){var y=A("./range").Range.comparePoints;A=function(){this.ranges=[];this.$bias=1};(function(){this.comparePoints=y;this.pointIndex=function(q,f,c){var a=this.ranges;for(c=c||0;c<a.length;c++){var b=a[c],d=y(q,b.end);if(!(0<d)){q=y(q,b.start);if(0===d)return f&&0!==q?-c-2:c;if(0<q||0===q&&!f)return c;break}}return-c-1};this.add=function(q){var f=!q.isEmpty(),c=this.pointIndex(q.start,f);0>c&&(c=-c-1);f=this.pointIndex(q.end,
	f,c);0>f?f=-f-1:f++;return this.ranges.splice(c,f-c,q)};this.addList=function(q){for(var f=[],c=q.length;c--;)f.push.apply(f,this.add(q[c]));return f};this.substractPoint=function(q){q=this.pointIndex(q);if(0<=q)return this.ranges.splice(q,1)};this.merge=function(){var q=[],f=this.ranges;f=f.sort(function(g,l){return y(g.start,l.start)});for(var c=f[0],a,b=1;b<f.length;b++){a=c;c=f[b];var d=y(a.end,c.start);0>d||0==d&&!a.isEmpty()&&!c.isEmpty()||(0>y(a.end,c.end)&&(a.end.row=c.end.row,a.end.column=
	c.end.column),f.splice(b,1),q.push(c),c=a,b--)}this.ranges=f;return q};this.contains=function(q,f){return 0<=this.pointIndex({row:q,column:f})};this.containsPoint=function(q){return 0<=this.pointIndex(q)};this.rangeAtPoint=function(q){q=this.pointIndex(q);if(0<=q)return this.ranges[q]};this.clipRows=function(q,f){var c=this.ranges;if(c[0].start.row>f||c[c.length-1].start.row<q)return[];q=this.pointIndex({row:q,column:0});0>q&&(q=-q-1);f=this.pointIndex({row:f,column:0},q);0>f&&(f=-f-1);for(var a=
	[];q<f;q++)a.push(c[q]);return a};this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)};this.attach=function(q){this.session&&this.detach();this.session=q;this.onChange=this.$onChange.bind(this);this.session.on("change",this.onChange)};this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)};this.$onChange=function(q){for(var f=q.start,c=q.end,a=f.row,b=c.row,d=this.ranges,g=0,l=d.length;g<l;g++){var n=d[g];if(n.end.row>=a)break}if("insert"==
	q.action){q=b-a;for(var h=-f.column+c.column;g<l;g++){n=d[g];if(n.start.row>a)break;n.start.row==a&&n.start.column>=f.column&&!(n.start.column==f.column&&0>=this.$bias)&&(n.start.column+=h,n.start.row+=q);n.end.row==a&&n.end.column>=f.column&&!(n.end.column==f.column&&0>this.$bias)&&(n.end.column==f.column&&0<h&&g<l-1&&n.end.column>n.start.column&&n.end.column==d[g+1].start.column&&(n.end.column-=h),n.end.column+=h,n.end.row+=q)}}else for(q=a-b,h=f.column-c.column;g<l;g++){n=d[g];if(n.start.row>b)break;
	if(n.end.row<b&&(a<n.end.row||a==n.end.row&&f.column<n.end.column))n.end.row=a,n.end.column=f.column;else if(n.end.row==b)if(n.end.column<=c.column){if(q||n.end.column>f.column)n.end.column=f.column,n.end.row=f.row}else n.end.column+=h,n.end.row+=q;else n.end.row>b&&(n.end.row+=q);if(n.start.row<b&&(a<n.start.row||a==n.start.row&&f.column<n.start.column))n.start.row=a,n.start.column=f.column;else if(n.start.row==b)if(n.start.column<=c.column){if(q||n.start.column>f.column)n.start.column=f.column,
	n.start.row=f.row}else n.start.column+=h,n.start.row+=q;else n.start.row>b&&(n.start.row+=q)}if(0!=q&&g<l)for(;g<l;g++)n=d[g],n.start.row+=q,n.end.row+=q}}).call(A.prototype);C.RangeList=A});
	ace.define("ace/edit_session/fold",["require","exports","module","ace/range_list","ace/lib/oop"],function(A,C,J){function y(c,a){c.row-=a.row;0==c.row&&(c.column-=a.column)}function q(c,a){0==c.row&&(c.column+=a.column);c.row+=a.row}J=A("../range_list").RangeList;A=A("../lib/oop");var f=C.Fold=function(c,a){this.foldLine=null;this.placeholder=a;this.range=c;this.start=c.start;this.end=c.end;this.sameRow=c.start.row==c.end.row;this.subFolds=this.ranges=[]};A.inherits(f,J);(function(){this.toString=
	function(){return'"'+this.placeholder+'" '+this.range.toString()};this.setFoldLine=function(c){this.foldLine=c;this.subFolds.forEach(function(a){a.setFoldLine(c)})};this.clone=function(){var c=this.range.clone(),a=new f(c,this.placeholder);this.subFolds.forEach(function(b){a.subFolds.push(b.clone())});a.collapseChildren=this.collapseChildren;return a};this.addSubFold=function(c){if(!this.range.isEqual(c)){var a=this.start;y(c.start,a);y(c.end,a);for(var b=c.start.row,d=c.start.column,g=0,l=-1;g<this.subFolds.length&&
	(l=this.subFolds[g].range.compare(b,d),1==l);g++);b=this.subFolds[g];a=0;if(0==l){if(b.range.containsRange(c))return b.addSubFold(c);a=1}b=c.range.end.row;d=c.range.end.column;var n=g;for(l=-1;n<this.subFolds.length&&(l=this.subFolds[n].range.compare(b,d),1==l);n++);0==l&&n++;g=this.subFolds.splice(g,n-g,c);for(l=0==l?g.length-1:g.length;a<l;a++)c.addSubFold(g[a]);c.setFoldLine(this.foldLine);return c}};this.restoreRange=function(c){var a=this.start;q(c.start,a);q(c.end,a)}}).call(f.prototype)});
	ace.define("ace/edit_session/folding","require exports module ace/range ace/edit_session/fold_line ace/edit_session/fold ace/token_iterator".split(" "),function(A,C,J){var y=A("../range").Range,q=A("./fold_line").FoldLine,f=A("./fold").Fold,c=A("../token_iterator").TokenIterator;C.Folding=function(){this.getFoldAt=function(a,b,d){var g=this.getFoldLine(a);if(!g)return null;g=g.folds;for(var l=0;l<g.length;l++){var n=g[l].range;if(n.contains(a,b)&&(1!=d||!n.isEnd(a,b)||n.isEmpty())&&(-1!=d||!n.isStart(a,
	b)||n.isEmpty()))return g[l]}};this.getFoldsInRange=function(a){var b=a.start,d=a.end,g=this.$foldData,l=[];b.column+=1;--d.column;for(var n=0;n<g.length;n++){var h=g[n].range.compareRange(a);if(2!=h){if(-2==h)break;for(var t=g[n].folds,r=0;r<t.length;r++){var x=t[r];h=x.range.compareRange(a);if(-2==h)break;else if(2==h)continue;else if(42==h)break;l.push(x)}}}--b.column;d.column+=1;return l};this.getFoldsInRangeList=function(a){if(Array.isArray(a)){var b=[];a.forEach(function(d){b=b.concat(this.getFoldsInRange(d))},
	this)}else b=this.getFoldsInRange(a);return b};this.getAllFolds=function(){for(var a=[],b=this.$foldData,d=0;d<b.length;d++)for(var g=0;g<b[d].folds.length;g++)a.push(b[d].folds[g]);return a};this.getFoldStringAt=function(a,b,d,g){g=g||this.getFoldLine(a);if(!g)return null;for(var l={end:{column:0}},n,h,t=0;t<g.folds.length;t++){h=g.folds[t];var r=h.range.compareEnd(a,b);if(-1==r){n=this.getLine(h.start.row).substring(l.end.column,h.start.column);break}else if(0===r)return null;l=h}n||(n=this.getLine(h.start.row).substring(l.end.column));
	return-1==d?n.substring(0,b-l.end.column):1==d?n.substring(b-l.end.column):n};this.getFoldLine=function(a,b){var d=this.$foldData,g=0;b&&(g=d.indexOf(b));-1==g&&(g=0);for(g;g<d.length;g++){b=d[g];if(b.start.row<=a&&b.end.row>=a)return b;if(b.end.row>a)break}return null};this.getNextFoldLine=function(a,b){var d=this.$foldData,g=0;b&&(g=d.indexOf(b));-1==g&&(g=0);for(g;g<d.length;g++)if(b=d[g],b.end.row>=a)return b;return null};this.getFoldedRowCount=function(a,b){for(var d=this.$foldData,g=b-a+1,l=
	0;l<d.length;l++){var n=d[l],h=n.end.row;n=n.start.row;if(h>=b){n<b&&(g=n>=a?g-(b-n):0);break}else h>=a&&(g=n>=a?g-(h-n):g-(h-a+1))}return g};this.$addFoldLine=function(a){this.$foldData.push(a);this.$foldData.sort(function(b,d){return b.start.row-d.start.row});return a};this.addFold=function(a,b){var d=this.$foldData,g=!1;if(a instanceof f)var l=a;else l=new f(b,a),l.collapseChildren=b.collapseChildren;this.$clipRangeToDocument(l.range);b=l.start.row;var n=l.start.column;a=l.end.row;var h=l.end.column,
	t=this.getFoldAt(b,n,1),r=this.getFoldAt(a,h,-1);if(t&&r==t)return t.addSubFold(l);t&&!t.range.isStart(b,n)&&this.removeFold(t);r&&!r.range.isEnd(a,h)&&this.removeFold(r);n=this.getFoldsInRange(l.range);0<n.length&&(this.removeFolds(n),l.collapseChildren||n.forEach(function(k){l.addSubFold(k)}));for(n=0;n<d.length;n++){var x=d[n];if(a==x.start.row){x.addFold(l);g=!0;break}else if(b==x.end.row){x.addFold(l);g=!0;if(!l.sameRow&&(d=d[n+1])&&d.start.row==a){x.merge(d);break}break}else if(a<=x.start.row)break}g||
	(x=this.$addFoldLine(new q(this.$foldData,l)));this.$useWrapMode?this.$updateWrapData(x.start.row,x.start.row):this.$updateRowLengthCache(x.start.row,x.start.row);this.$modified=!0;this._signal("changeFold",{data:l,action:"add"});return l};this.addFolds=function(a){a.forEach(function(b){this.addFold(b)},this)};this.removeFold=function(a){var b=a.foldLine,d=b.start.row,g=b.end.row,l=this.$foldData,n=b.folds;1==n.length?l.splice(l.indexOf(b),1):b.range.isEnd(a.end.row,a.end.column)?(n.pop(),b.end.row=
	n[n.length-1].end.row,b.end.column=n[n.length-1].end.column):b.range.isStart(a.start.row,a.start.column)?(n.shift(),b.start.row=n[0].start.row,b.start.column=n[0].start.column):a.sameRow?n.splice(n.indexOf(a),1):(b=b.split(a.start.row,a.start.column),n=b.folds,n.shift(),b.start.row=n[0].start.row,b.start.column=n[0].start.column);this.$updating||(this.$useWrapMode?this.$updateWrapData(d,g):this.$updateRowLengthCache(d,g));this.$modified=!0;this._signal("changeFold",{data:a,action:"remove"})};this.removeFolds=
	function(a){for(var b=[],d=0;d<a.length;d++)b.push(a[d]);b.forEach(function(g){this.removeFold(g)},this);this.$modified=!0};this.expandFold=function(a){this.removeFold(a);a.subFolds.forEach(function(b){a.restoreRange(b);this.addFold(b)},this);0<a.collapseChildren&&this.foldAll(a.start.row+1,a.end.row,a.collapseChildren-1);a.subFolds=[]};this.expandFolds=function(a){a.forEach(function(b){this.expandFold(b)},this)};this.unfold=function(a,b){null==a?(a=new y(0,0,this.getLength(),0),null==b&&(b=!0)):
	a="number"==typeof a?new y(a,0,a,this.getLine(a).length):"row"in a?y.fromPoints(a,a):a;a=this.getFoldsInRangeList(a);0!=b?this.removeFolds(a):this.expandFolds(a);if(a.length)return a};this.isRowFolded=function(a,b){return!!this.getFoldLine(a,b)};this.getRowFoldEnd=function(a,b){return(b=this.getFoldLine(a,b))?b.end.row:a};this.getRowFoldStart=function(a,b){return(b=this.getFoldLine(a,b))?b.start.row:a};this.getFoldDisplayLine=function(a,b,d,g,l){null==g&&(g=a.start.row);null==l&&(l=0);null==b&&(b=
	a.end.row);null==d&&(d=this.getLine(b).length);var n=this.doc,h="";a.walk(function(t,r,x,k){if(!(r<g)){if(r==g){if(x<l)return;k=Math.max(l,k)}h=null!=t?h+t:h+n.getLine(r).substring(k,x)}},b,d);return h};this.getDisplayLine=function(a,b,d,g){var l=this.getFoldLine(a);if(l)return this.getFoldDisplayLine(l,a,b,d,g);a=this.doc.getLine(a);return a.substring(g||0,b||a.length)};this.$cloneFoldData=function(){var a=[];return a=this.$foldData.map(function(b){b=b.folds.map(function(d){return d.clone()});return new q(a,
	b)})};this.toggleFold=function(a){var b=this.selection.getRange(),d;if(b.isEmpty()){var g=b.start;if(d=this.getFoldAt(g.row,g.column)){this.expandFold(d);return}(a=this.findMatchingBracket(g))?1==b.comparePoint(a)?b.end=a:(b.start=a,b.start.column++,b.end.column--):(a=this.findMatchingBracket({row:g.row,column:g.column+1}))?(1==b.comparePoint(a)?b.end=a:b.start=a,b.start.column++):b=this.getCommentFoldRange(g.row,g.column)||b}else{g=this.getFoldsInRange(b);if(a&&g.length){this.expandFolds(g);return}1==
	g.length&&(d=g[0])}d||(d=this.getFoldAt(b.start.row,b.start.column));if(d&&d.range.toString()==b.toString())this.expandFold(d);else{d="...";if(!b.isMultiLine()){d=this.getTextRange(b);if(4>d.length)return;d=d.trim().substring(0,2)+".."}this.addFold(d,b)}};this.getCommentFoldRange=function(a,b,d){var g=new c(this,a,b),l=g.getCurrentToken(),n=l&&l.type;if(l&&/^comment|string/.test(n)){n=n.match(/comment|string/)[0];"comment"==n&&(n+="|doc-start");n=new RegExp(n);var h=new y;if(1!=d){do l=g.stepBackward();
	while(l&&n.test(l.type));g.stepForward()}h.start.row=g.getCurrentTokenRow();h.start.column=g.getCurrentTokenColumn()+2;g=new c(this,a,b);if(-1!=d){a=-1;do if(l=g.stepForward(),-1==a)b=this.getState(g.$row),n.test(b)||(a=g.$row);else if(g.$row>a)break;while(l&&n.test(l.type));l=g.stepBackward()}else l=g.getCurrentToken();h.end.row=g.getCurrentTokenRow();h.end.column=g.getCurrentTokenColumn()+l.value.length-2;return h}};this.foldAll=function(a,b,d,g){void 0==d&&(d=1E5);var l=this.foldWidgets;if(l){b=
	b||this.getLength();for(var n=a=a||0;n<b;n++)if(null==l[n]&&(l[n]=this.getFoldWidget(n)),"start"==l[n]&&(!g||g(n))){var h=this.getFoldWidgetRange(n);h&&h.isMultiLine()&&h.end.row<=b&&h.start.row>=a&&(n=h.end.row,h.collapseChildren=d,this.addFold("...",h))}}};this.foldToLevel=function(a){for(this.foldAll();0<a--;)this.unfold(null,!1)};this.foldAllComments=function(){var a=this;this.foldAll(null,null,null,function(b){b=a.getTokens(b);for(var d=0;d<b.length;d++){var g=b[d];if("text"!=g.type||!/^\s+$/.test(g.value))return/comment/.test(g.type)?
	!0:!1}})};this.$foldStyles={manual:1,markbegin:1,markbeginend:1};this.$foldStyle="markbegin";this.setFoldStyle=function(a){if(!this.$foldStyles[a])throw Error("invalid fold style: "+a+"["+Object.keys(this.$foldStyles).join(", ")+"]");this.$foldStyle!=a&&(this.$foldStyle=a,"manual"==a&&this.unfold(),a=this.$foldMode,this.$setFolding(null),this.$setFolding(a))};this.$setFolding=function(a){this.$foldMode!=a&&(this.$foldMode=a,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),
	this._signal("changeAnnotation"),a&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=a.getFoldWidget.bind(a,this,this.$foldStyle),this.getFoldWidgetRange=a.getFoldWidgetRange.bind(a,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)};this.getParentFoldRangeData=
	function(a,b){var d=this.foldWidgets;if(!d||b&&d[a])return{};b=a-1;for(var g;0<=b;){var l=d[b];null==l&&(l=d[b]=this.getFoldWidget(b));if("start"==l){var n=this.getFoldWidgetRange(b);g||(g=n);if(n&&n.end.row>=a)break}b--}return{range:-1!==b&&n,firstRange:g}};this.onFoldWidgetClick=function(a,b){b=b.domEvent;this.$toggleFoldWidget(a,{children:b.shiftKey,all:b.ctrlKey||b.metaKey,siblings:b.altKey})||(a=b.target||b.srcElement)&&/ace_fold-widget/.test(a.className)&&(a.className+=" ace_invalid")};this.$toggleFoldWidget=
	function(a,b){if(this.getFoldWidget){var d=this.getFoldWidget(a),g=this.getLine(a);d="end"===d?-1:1;if(d=this.getFoldAt(a,-1===d?0:g.length,d))return b.children||b.all?this.removeFold(d):this.expandFold(d),d;if((g=this.getFoldWidgetRange(a,!0))&&!g.isMultiLine()&&(d=this.getFoldAt(g.start.row,g.start.column,1))&&g.isEqual(d.range))return this.removeFold(d),d;if(b.siblings){a=this.getParentFoldRangeData(a);if(a.range)var l=a.range.start.row+1,n=a.range.end.row;this.foldAll(l,n,b.all?1E4:0)}else b.children?
	(n=g?g.end.row:this.getLength(),this.foldAll(a+1,n,b.all?1E4:0)):g&&(b.all&&(g.collapseChildren=1E4),this.addFold("...",g));return g}};this.toggleFoldWidget=function(a){var b=this.selection.getCursor().row;b=this.getRowFoldStart(b);a=this.$toggleFoldWidget(b,{});!a&&(a=this.getParentFoldRangeData(b,!0),a=a.range||a.firstRange)&&(b=a.start.row,(b=this.getFoldAt(b,this.getLine(b).length,1))?this.removeFold(b):this.addFold("...",a))};this.updateFoldWidgets=function(a){var b=a.start.row,d=a.end.row-b;
	0===d?this.foldWidgets[b]=null:"remove"==a.action?this.foldWidgets.splice(b,d+1,null):(a=Array(d+1),a.unshift(b,1),this.foldWidgets.splice.apply(this.foldWidgets,a))};this.tokenizerUpdateFoldWidgets=function(a){a=a.data;a.first!=a.last&&this.foldWidgets.length>a.first&&this.foldWidgets.splice(a.first,this.foldWidgets.length)}}});
	ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(A,C,J){var y=A("../token_iterator").TokenIterator,q=A("../range").Range;C.BracketMatch=function(){this.findMatchingBracket=function(f,c){if(0==f.column)return null;c=c||this.getLine(f.row).charAt(f.column-1);return""==c?null:(c=c.match(/([\(\[\{])|([\)\]\}])/))?c[1]?this.$findClosingBracket(c[1],f):this.$findOpeningBracket(c[2],f):null};this.getBracketRange=function(f){var c=this.getLine(f.row),
	a=!0,b=c.charAt(f.column-1);b=b&&b.match(/([\(\[\{])|([\)\]\}])/);b||(b=c.charAt(f.column),f={row:f.row,column:f.column+1},b=b&&b.match(/([\(\[\{])|([\)\]\}])/),a=!1);if(!b)return null;if(b[1]){c=this.$findClosingBracket(b[1],f);if(!c)return null;f=q.fromPoints(f,c);a||(f.end.column++,f.start.column--);f.cursor=f.end}else{c=this.$findOpeningBracket(b[2],f);if(!c)return null;f=q.fromPoints(c,f);a||(f.start.column++,f.end.column--);f.cursor=f.start}return f};this.getMatchingBracketRanges=function(f){var c=
	this.getLine(f.row),a=c.charAt(f.column-1);a=a&&a.match(/([\(\[\{])|([\)\]\}])/);a||(a=c.charAt(f.column),f={row:f.row,column:f.column+1},a=a&&a.match(/([\(\[\{])|([\)\]\}])/));if(!a)return null;c=new q(f.row,f.column-1,f.row,f.column);f=a[1]?this.$findClosingBracket(a[1],f):this.$findOpeningBracket(a[2],f);if(!f)return[c];f=new q(f.row,f.column,f.row,f.column+1);return[c,f]};this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"};this.$findOpeningBracket=function(f,c,a){var b=
	this.$brackets[f],d=1,g=new y(this,c.row,c.column),l=g.getCurrentToken();l||(l=g.stepForward());if(l){a||(a=new RegExp("(\\.?"+l.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));c=c.column-g.getCurrentTokenColumn()-2;for(l=l.value;;){for(;0<=c;){var n=l.charAt(c);if(n==b){if(--d,0==d)return{row:g.getCurrentTokenRow(),column:c+g.getCurrentTokenColumn()}}else n==f&&(d+=1);--c}do l=g.stepBackward();while(l&&!a.test(l.type));if(null==l)break;l=l.value;
	c=l.length-1}return null}};this.$findClosingBracket=function(f,c,a){var b=this.$brackets[f],d=1,g=new y(this,c.row,c.column),l=g.getCurrentToken();l||(l=g.stepForward());if(l){a||(a=new RegExp("(\\.?"+l.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(c=c.column-g.getCurrentTokenColumn();;){l=l.value;for(var n=l.length;c<n;){var h=l.charAt(c);if(h==b){if(--d,0==d)return{row:g.getCurrentTokenRow(),column:c+g.getCurrentTokenColumn()}}else h==
	f&&(d+=1);c+=1}do l=g.stepForward();while(l&&!a.test(l.type));if(null==l)break;c=0}return null}}}});
	ace.define("ace/edit_session","require exports module ace/lib/oop ace/lib/lang ace/bidihandler ace/config ace/lib/event_emitter ace/selection ace/mode/text ace/range ace/document ace/background_tokenizer ace/search_highlight ace/edit_session/folding ace/edit_session/bracket_match".split(" "),function(A,C,J){var y=A("./lib/oop"),q=A("./lib/lang"),f=A("./bidihandler").BidiHandler,c=A("./config"),a=A("./lib/event_emitter").EventEmitter,b=A("./selection").Selection,d=A("./mode/text").Mode,g=A("./range").Range,
	l=A("./document").Document,n=A("./background_tokenizer").BackgroundTokenizer,h=A("./search_highlight").SearchHighlight,t=function(r,x){this.$breakpoints=[];this.$decorations=[];this.$frontMarkers={};this.$backMarkers={};this.$markerId=1;this.$undoSelect=!0;this.$foldData=[];this.id="session"+ ++t.$uid;this.$foldData.toString=function(){return this.join("\n")};this.on("changeFold",this.onChangeFold.bind(this));this.$onChange=this.onChange.bind(this);"object"==typeof r&&r.getLine||(r=new l(r));this.setDocument(r);
	this.selection=new b(this);this.$bidiHandler=new f(this);c.resetOptions(this);this.setMode(x);c._signal("session",this)};t.$uid=0;(function(){function r(e){return 4352>e?!1:4352<=e&&4447>=e||4515<=e&&4519>=e||4602<=e&&4607>=e||9001<=e&&9002>=e||11904<=e&&11929>=e||11931<=e&&12019>=e||12032<=e&&12245>=e||12272<=e&&12283>=e||12288<=e&&12350>=e||12353<=e&&12438>=e||12441<=e&&12543>=e||12549<=e&&12589>=e||12593<=e&&12686>=e||12688<=e&&12730>=e||12736<=e&&12771>=e||12784<=e&&12830>=e||12832<=e&&12871>=
	e||12880<=e&&13054>=e||13056<=e&&19903>=e||19968<=e&&42124>=e||42128<=e&&42182>=e||43360<=e&&43388>=e||44032<=e&&55203>=e||55216<=e&&55238>=e||55243<=e&&55291>=e||63744<=e&&64255>=e||65040<=e&&65049>=e||65072<=e&&65106>=e||65108<=e&&65126>=e||65128<=e&&65131>=e||65281<=e&&65376>=e||65504<=e&&65510>=e}y.implement(this,a);this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange);this.doc=e;e.on("change",this.$onChange);this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument());
	this.resetCaches()};this.getDocument=function(){return this.doc};this.$resetRowCache=function(e){if(e){var p=this.$docRowCache.length;e=this.$getRowCacheIndex(this.$docRowCache,e)+1;p>e&&(this.$docRowCache.splice(e,p),this.$screenRowCache.splice(e,p))}else this.$docRowCache=[],this.$screenRowCache=[]};this.$getRowCacheIndex=function(e,p){for(var v=0,w=e.length-1;v<=w;){var m=v+w>>1,u=e[m];if(p>u)v=m+1;else if(p<u)w=m-1;else return m}return v-1};this.resetCaches=function(){this.$modified=!0;this.$wrapData=
	[];this.$rowLengthCache=[];this.$resetRowCache(0);this.bgTokenizer&&this.bgTokenizer.start(0)};this.onChangeFold=function(e){this.$resetRowCache(e.data.start.row)};this.onChange=function(e){this.$modified=!0;this.$bidiHandler.onChange(e);this.$resetRowCache(e.start.row);var p=this.$updateInternalDataOnChange(e);!this.$fromUndo&&this.$undoManager&&(p&&p.length&&(this.$undoManager.add({action:"removeFolds",folds:p},this.mergeUndoDeltas),this.mergeUndoDeltas=!0),this.$undoManager.add(e,this.mergeUndoDeltas),
	this.mergeUndoDeltas=!0,this.$informUndoManager.schedule());this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e);this._signal("change",e)};this.setValue=function(e){this.doc.setValue(e);this.selection.moveTo(0,0);this.$resetRowCache(0);this.setUndoManager(this.$undoManager);this.getUndoManager().reset()};this.getValue=this.toString=function(){return this.doc.getValue()};this.getSelection=function(){return this.selection};this.getState=function(e){return this.bgTokenizer.getState(e)};this.getTokens=
	function(e){return this.bgTokenizer.getTokens(e)};this.getTokenAt=function(e,p){var v=this.bgTokenizer.getTokens(e),w=0;if(null==p){var m=v.length-1;w=this.getLine(e).length}else for(m=0;m<v.length&&!(w+=v[m].value.length,w>=p);m++);e=v[m];if(!e)return null;e.index=m;e.start=w-e.value.length;return e};this.setUndoManager=function(e){this.$undoManager=e;this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var p=this;e.addSession(this);this.$syncInformUndoManager=function(){p.$informUndoManager.cancel();
	p.mergeUndoDeltas=!1};this.$informUndoManager=q.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}};this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()};this.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}};this.getUndoManager=function(){return this.$undoManager||
	this.$defaultUndoManager};this.getTabString=function(){return this.getUseSoftTabs()?q.stringRepeat(" ",this.getTabSize()):"\t"};this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)};this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs};this.setTabSize=function(e){this.setOption("tabSize",e)};this.getTabSize=function(){return this.$tabSize};this.isTabStop=function(e){return this.$useSoftTabs&&0===e.column%this.$tabSize};this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",
	e)};this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs};this.$overwrite=!1;this.setOverwrite=function(e){this.setOption("overwrite",e)};this.getOverwrite=function(){return this.$overwrite};this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)};this.addGutterDecoration=function(e,p){this.$decorations[e]||(this.$decorations[e]="");this.$decorations[e]+=" "+p;this._signal("changeBreakpoint",{})};this.removeGutterDecoration=function(e,p){this.$decorations[e]=(this.$decorations[e]||
	"").replace(" "+p,"");this._signal("changeBreakpoint",{})};this.getBreakpoints=function(){return this.$breakpoints};this.setBreakpoints=function(e){this.$breakpoints=[];for(var p=0;p<e.length;p++)this.$breakpoints[e[p]]="ace_breakpoint";this._signal("changeBreakpoint",{})};this.clearBreakpoints=function(){this.$breakpoints=[];this._signal("changeBreakpoint",{})};this.setBreakpoint=function(e,p){void 0===p&&(p="ace_breakpoint");p?this.$breakpoints[e]=p:delete this.$breakpoints[e];this._signal("changeBreakpoint",
	{})};this.clearBreakpoint=function(e){delete this.$breakpoints[e];this._signal("changeBreakpoint",{})};this.addMarker=function(e,p,v,w){var m=this.$markerId++;e={range:e,type:v||"line",renderer:"function"==typeof v?v:null,clazz:p,inFront:!!w,id:m};w?(this.$frontMarkers[m]=e,this._signal("changeFrontMarker")):(this.$backMarkers[m]=e,this._signal("changeBackMarker"));return m};this.addDynamicMarker=function(e,p){if(e.update){var v=this.$markerId++;e.id=v;e.inFront=!!p;p?(this.$frontMarkers[v]=e,this._signal("changeFrontMarker")):
	(this.$backMarkers[v]=e,this._signal("changeBackMarker"));return e}};this.removeMarker=function(e){var p=this.$frontMarkers[e]||this.$backMarkers[e];p&&(delete (p.inFront?this.$frontMarkers:this.$backMarkers)[e],this._signal(p.inFront?"changeFrontMarker":"changeBackMarker"))};this.getMarkers=function(e){return e?this.$frontMarkers:this.$backMarkers};this.highlight=function(e){if(!this.$searchHighlight){var p=new h(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(p)}this.$searchHighlight.setRegexp(e)};
	this.highlightLines=function(e,p,v,w){"number"!=typeof p&&(v=p,p=e);v||(v="ace_step");e=new g(e,0,p,Infinity);e.id=this.addMarker(e,v,"fullLine",w);return e};this.setAnnotations=function(e){this.$annotations=e;this._signal("changeAnnotation",{})};this.getAnnotations=function(){return this.$annotations||[]};this.clearAnnotations=function(){this.setAnnotations([])};this.$detectNewLine=function(e){this.$autoNewLine=(e=e.match(/^.*?(\r?\n)/m))?e[1]:"\n"};this.getWordRange=function(e,p){var v=this.getLine(e),
	w=!1;0<p&&(w=!!v.charAt(p-1).match(this.tokenRe));w||(w=!!v.charAt(p).match(this.tokenRe));w=w?this.tokenRe:/^\s+$/.test(v.slice(p-1,p+1))?/\s/:this.nonTokenRe;var m=p;if(0<m){do m--;while(0<=m&&v.charAt(m).match(w));m++}for(;p<v.length&&v.charAt(p).match(w);)p++;return new g(e,m,e,p)};this.getAWordRange=function(e,p){e=this.getWordRange(e,p);for(p=this.getLine(e.end.row);p.charAt(e.end.column).match(/[ \t]/);)e.end.column+=1;return e};this.setNewLineMode=function(e){this.doc.setNewLineMode(e)};this.getNewLineMode=
	function(){return this.doc.getNewLineMode()};this.setUseWorker=function(e){this.setOption("useWorker",e)};this.getUseWorker=function(){return this.$useWorker};this.onReloadTokenizer=function(e){this.bgTokenizer.start(e.data.first);this._signal("tokenizerUpdate",e)};this.$modes=c.$modes;this.$modeId=this.$mode=null;this.setMode=function(e,p){if(e&&"object"===typeof e){if(e.getTokenizer)return this.$onChangeMode(e);var v=e,w=v.path}else w=e||"ace/mode/text";this.$modes["ace/mode/text"]||(this.$modes["ace/mode/text"]=
	new d);this.$modes[w]&&!v?(this.$onChangeMode(this.$modes[w]),p&&p()):(this.$modeId=w,c.loadModule(["mode",w],function(m){if(this.$modeId!==w)return p&&p();this.$modes[w]&&!v?this.$onChangeMode(this.$modes[w]):m&&m.Mode&&(m=new m.Mode(v),v||(this.$modes[w]=m,m.$id=w),this.$onChangeMode(m));p&&p()}.bind(this)),this.$mode||this.$onChangeMode(this.$modes["ace/mode/text"],!0))};this.$onChangeMode=function(e,p){p||(this.$modeId=e.$id);if(this.$mode!==e){var v=this.$mode;this.$mode=e;this.$stopWorker();
	this.$useWorker&&this.$startWorker();var w=e.getTokenizer();if(void 0!==w.on){var m=this.onReloadTokenizer.bind(this);w.on("update",m)}if(this.bgTokenizer)this.bgTokenizer.setTokenizer(w);else{this.bgTokenizer=new n(w);var u=this;this.bgTokenizer.on("update",function(z){u._signal("tokenizerUpdate",z)})}this.bgTokenizer.setDocument(this.getDocument());this.tokenRe=e.tokenRe;this.nonTokenRe=e.nonTokenRe;p||(e.attachToSession&&e.attachToSession(this),this.$options.wrapMethod.set.call(this,this.$wrapMethod),
	this.$setFolding(e.foldingRules),this.bgTokenizer.start(0),this._emit("changeMode",{oldMode:v,mode:e}))}};this.$stopWorker=function(){this.$worker&&(this.$worker.terminate(),this.$worker=null)};this.$startWorker=function(){try{this.$worker=this.$mode.createWorker(this)}catch(e){c.warn("Could not load worker",e),this.$worker=null}};this.getMode=function(){return this.$mode};this.$scrollTop=0;this.setScrollTop=function(e){this.$scrollTop===e||isNaN(e)||(this.$scrollTop=e,this._signal("changeScrollTop",
	e))};this.getScrollTop=function(){return this.$scrollTop};this.$scrollLeft=0;this.setScrollLeft=function(e){this.$scrollLeft===e||isNaN(e)||(this.$scrollLeft=e,this._signal("changeScrollLeft",e))};this.getScrollLeft=function(){return this.$scrollLeft};this.getScreenWidth=function(){this.$computeWidth();return this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth};this.getLineWidgetMaxWidth=function(){if(null!=this.lineWidgetsWidth)return this.lineWidgetsWidth;var e=
	0;this.lineWidgets.forEach(function(p){p&&p.screenWidth>e&&(e=p.screenWidth)});return this.lineWidgetWidth=e};this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;e=this.doc.getAllLines();for(var p=this.$rowLengthCache,v=0,w=0,m=this.$foldData[w],u=m?m.start.row:Infinity,z=e.length,B=0;B<z;B++){if(B>u){B=m.end.row+1;if(B>=z)break;u=(m=this.$foldData[w++])?m.start.row:Infinity}null==p[B]&&(p[B]=this.$getStringScreenWidth(e[B])[0]);
	p[B]>v&&(v=p[B])}this.screenWidth=v}};this.getLine=function(e){return this.doc.getLine(e)};this.getLines=function(e,p){return this.doc.getLines(e,p)};this.getLength=function(){return this.doc.getLength()};this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())};this.insert=function(e,p){return this.doc.insert(e,p)};this.remove=function(e){return this.doc.remove(e)};this.removeFullLines=function(e,p){return this.doc.removeFullLines(e,p)};this.undoChanges=function(e,
	p){if(e.length){this.$fromUndo=!0;for(var v=e.length-1;-1!=v;v--){var w=e[v];"insert"==w.action||"remove"==w.action?this.doc.revertDelta(w):w.folds&&this.addFolds(w.folds)}!p&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0)));this.$fromUndo=!1}};this.redoChanges=function(e,p){if(e.length){this.$fromUndo=!0;for(var v=0;v<e.length;v++){var w=e[v];"insert"!=w.action&&"remove"!=w.action||this.doc.$safeApplyDelta(w)}!p&&
	this.$undoSelect&&(e.selectionAfter?this.selection.fromJSON(e.selectionAfter):this.selection.setRange(this.$getUndoSelection(e,!1)));this.$fromUndo=!1}};this.setUndoSelect=function(e){this.$undoSelect=e};this.$getUndoSelection=function(e,p){for(var v,w,m=0;m<e.length;m++){var u=e[m];u.start&&(v?(p?"insert"!==u.action:"insert"===u.action)?(w=u.start,-1==v.compare(w.row,w.column)&&v.setStart(w),w=u.end,1==v.compare(w.row,w.column)&&v.setEnd(w)):(w=u.start,-1==v.compare(w.row,w.column)&&(v=g.fromPoints(u.start,
	u.start))):v=(p?"insert"!==u.action:"insert"===u.action)?g.fromPoints(u.start,u.end):g.fromPoints(u.start,u.start))}return v};this.replace=function(e,p){return this.doc.replace(e,p)};this.moveText=function(e,p,v){var w=this.getTextRange(e),m=this.getFoldsInRange(e);p=g.fromPoints(p,p);if(!v){this.remove(e);var u=e.start.row-e.end.row,z=u?-e.end.column:e.start.column-e.end.column;z&&(p.start.row==e.end.row&&p.start.column>e.end.column&&(p.start.column+=z),p.end.row==e.end.row&&p.end.column>e.end.column&&
	(p.end.column+=z));u&&p.start.row>=e.end.row&&(p.start.row+=u,p.end.row+=u)}p.end=this.insert(p.start,w);if(m.length){var B=e.start;e=p.start;u=e.row-B.row;z=e.column-B.column;this.addFolds(m.map(function(D){D=D.clone();D.start.row==B.row&&(D.start.column+=z);D.end.row==B.row&&(D.end.column+=z);D.start.row+=u;D.end.row+=u;return D}))}return p};this.indentRows=function(e,p,v){for(v=v.replace(/\t/g,this.getTabString());e<=p;e++)this.doc.insertInLine({row:e,column:0},v)};this.outdentRows=function(e){e=
	e.collapseRows();for(var p=new g(0,0,0,0),v=this.getTabSize(),w=e.start.row;w<=e.end.row;++w){var m=this.getLine(w);p.start.row=w;p.end.row=w;for(var u=0;u<v&&" "==m.charAt(u);++u);u<v&&"\t"==m.charAt(u)?(p.start.column=u,p.end.column=u+1):(p.start.column=0,p.end.column=u);this.remove(p)}};this.$moveLines=function(e,p,v){e=this.getRowFoldStart(e);p=this.getRowFoldEnd(p);if(0>v){var w=this.getRowFoldStart(e+v);if(0>w)return 0;var m=w-e}else if(0<v){w=this.getRowFoldEnd(p+v);if(w>this.doc.getLength()-
	1)return 0;m=w-p}else e=this.$clipRowToDocument(e),p=this.$clipRowToDocument(p),m=p-e+1;w=new g(e,0,p,Number.MAX_VALUE);w=this.getFoldsInRange(w).map(function(u){u=u.clone();u.start.row+=m;u.end.row+=m;return u});p=0==v?this.doc.getLines(e,p):this.doc.removeFullLines(e,p);this.doc.insertFullLines(e+m,p);w.length&&this.addFolds(w);return m};this.moveLinesUp=function(e,p){return this.$moveLines(e,p,-1)};this.moveLinesDown=function(e,p){return this.$moveLines(e,p,1)};this.duplicateLines=function(e,p){return this.$moveLines(e,
	p,0)};this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))};this.$clipColumnToRow=function(e,p){return 0>p?0:Math.min(this.doc.getLine(e).length,p)};this.$clipPositionToDocument=function(e,p){p=Math.max(0,p);if(0>e)p=e=0;else{var v=this.doc.getLength();e>=v?(e=v-1,p=this.doc.getLine(v-1).length):p=Math.min(this.doc.getLine(e).length,p)}return{row:e,column:p}};this.$clipRangeToDocument=function(e){0>e.start.row?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,
	e.start.column);var p=this.doc.getLength()-1;e.end.row>p?(e.end.row=p,e.end.column=this.doc.getLine(p).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column);return e};this.$wrapLimit=80;this.$useWrapMode=!1;this.$wrapLimitRange={min:null,max:null};this.setUseWrapMode=function(e){e!=this.$useWrapMode&&(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e&&(e=this.getLength(),this.$wrapData=Array(e),this.$updateWrapData(0,e-1)),this._signal("changeWrapMode"))};this.getUseWrapMode=
	function(){return this.$useWrapMode};this.setWrapLimitRange=function(e,p){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==p)this.$wrapLimitRange={min:e,max:p},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode")};this.adjustWrapLimit=function(e,p){var v=this.$wrapLimitRange;0>v.max&&(v={min:p,max:p});e=this.$constrainWrapLimit(e,v.min,v.max);return e!=this.$wrapLimit&&1<e?(this.$wrapLimit=e,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,
	this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1};this.$constrainWrapLimit=function(e,p,v){p&&(e=Math.max(p,e));v&&(e=Math.min(v,e));return e};this.getWrapLimit=function(){return this.$wrapLimit};this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)};this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}};this.$updateInternalDataOnChange=function(e){var p=this.$useWrapMode,v=e.action,w=e.start,m=e.end,u=w.row,z=m.row,
	B=z-u,D=null;this.$updating=!0;if(0!=B)if("remove"===v){this[p?"$wrapData":"$rowLengthCache"].splice(u,B);v=this.$foldData;D=this.getFoldsInRange(e);this.removeFolds(D);e=this.getFoldLine(m.row);var E=0;e&&(e.addRemoveChars(m.row,m.column,w.column-m.column),e.shiftRow(-B),(w=this.getFoldLine(u))&&w!==e&&(w.merge(e),e=w),E=v.indexOf(e)+1);for(E;E<v.length;E++)e=v[E],e.start.row>=m.row&&e.shiftRow(-B);z=u}else{v=Array(B);v.unshift(u,0);e=p?this.$wrapData:this.$rowLengthCache;e.splice.apply(e,v);v=this.$foldData;
	e=this.getFoldLine(u);E=0;if(e){E=e.range.compareInside(w.row,w.column);if(0==E){if(e=e.split(w.row,w.column))e.shiftRow(B),e.addRemoveChars(z,0,m.column-w.column)}else-1==E&&(e.addRemoveChars(u,0,m.column-w.column),e.shiftRow(B));E=v.indexOf(e)+1}for(E;E<v.length;E++)e=v[E],e.start.row>=u&&e.shiftRow(B)}else B=Math.abs(e.start.column-e.end.column),"remove"===v&&(D=this.getFoldsInRange(e),this.removeFolds(D),B=-B),(e=this.getFoldLine(u))&&e.addRemoveChars(u,w.column,B);p&&this.$wrapData.length!=this.doc.getLength()&&
	console.error("doc.getLength() and $wrapData.length have to be the same!");this.$updating=!1;p?this.$updateWrapData(u,z):this.$updateRowLengthCache(u,z);return D};this.$updateRowLengthCache=function(e,p,v){this.$rowLengthCache[e]=null;this.$rowLengthCache[p]=null};this.$updateWrapData=function(e,p){var v=this.doc.getAllLines(),w=this.getTabSize(),m=this.$wrapData,u=this.$wrapLimit,z;for(p=Math.min(p,v.length-1);e<=p;)if(z=this.getFoldLine(e,z)){var B=[];z.walk(function(D,E,G,H){if(null!=D)for(D=this.$getDisplayTokens(D,
	B.length),D[0]=x,E=1;E<D.length;E++)D[E]=k;else D=this.$getDisplayTokens(v[E].substring(H,G),B.length);B=B.concat(D)}.bind(this),z.end.row,v[z.end.row].length+1);m[z.start.row]=this.$computeWrapSplits(B,u,w);e=z.end.row+1}else B=this.$getDisplayTokens(v[e]),m[e]=this.$computeWrapSplits(B,u,w),e++};var x=3,k=4;this.$computeWrapSplits=function(e,p,v){function w(M){for(var N=M-z,P=z;P<M;P++){var U=e[P];12!==U&&2!==U||--N}if(!m.length){P=0;if(0===G)H=P;else{if(E)for(U=0;U<e.length;U++){var Z=e[U];if(10==
	Z)P+=1;else if(11==Z)P+=v;else if(12!=Z)break}D&&!1!==E&&(P+=v);H=Math.min(P,G)}m.indent=H}B+=N;m.push(B);z=M}if(0==e.length)return[];for(var m=[],u=e.length,z=0,B=0,D=this.$wrapAsCode,E=this.$indentedSoftWrap,G=p<=Math.max(2*v,8)||!1===E?0:Math.floor(p/2),H=0,I=0;u-z>p-H;){var F=z+p-H;if(10<=e[F-1]&&10<=e[F])w(F);else if(e[F]==x||e[F]==k){for(F;F!=z-1&&e[F]!=x;F--);if(!(F>z)){F=z+p;for(F;F<e.length&&e[F]==k;F++);if(F==e.length)break}w(F)}else{for(var L=Math.max(F-(p-(p>>2)),z-1);F>L&&e[F]<x;)F--;
	if(D){for(;F>L&&e[F]<x;)F--;for(;F>L&&9==e[F];)F--}else for(;F>L&&10>e[F];)F--;if(F>L){if(I==u-z)break;I=u-z;2==e[F]||2==e[F-1]?w(F++):w(++F)}else F=z+p,2==e[F]&&F--,w(F-H)}}return m};this.$getDisplayTokens=function(e,p){var v=[];p=p||0;for(var w=0;w<e.length;w++){var m=e.charCodeAt(w);if(9==m){m=this.getScreenTabSize(v.length+p);v.push(11);for(var u=1;u<m;u++)v.push(12)}else 32==m?v.push(10):39<m&&48>m||57<m&&64>m?v.push(9):4352<=m&&r(m)?v.push(10,2):v.push(1)}return v};this.$getStringScreenWidth=
	function(e,p,v){if(0==p)return[0,0];null==p&&(p=Infinity);v=v||0;var w;for(w=0;w<e.length;w++){var m=e.charCodeAt(w);v=9==m?v+this.getScreenTabSize(v):4352<=m&&r(m)?v+2:v+1;if(v>p)break}return[v,w]};this.lineWidgets=null;this.getRowLength=function(e){var p=1;this.lineWidgets&&(p+=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0);return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+p:p};this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+
	1:1};this.getRowWrapIndent=function(e){if(this.$useWrapMode){e=this.screenToDocumentPosition(e,Number.MAX_VALUE);var p=this.$wrapData[e.row];return p.length&&p[0]<e.column?p.indent:0}return 0};this.getScreenLastRowColumn=function(e){e=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(e.row,e.column)};this.getDocumentLastRowColumn=function(e,p){e=this.documentToScreenRow(e,p);return this.getScreenLastRowColumn(e)};this.getDocumentLastRowColumnPosition=function(e,
	p){e=this.documentToScreenRow(e,p);return this.screenToDocumentPosition(e,Number.MAX_VALUE/10)};this.getRowSplitData=function(e){if(this.$useWrapMode)return this.$wrapData[e]};this.getScreenTabSize=function(e){return this.$tabSize-(e%this.$tabSize|0)};this.screenToDocumentRow=function(e,p){return this.screenToDocumentPosition(e,p).row};this.screenToDocumentColumn=function(e,p){return this.screenToDocumentPosition(e,p).column};this.screenToDocumentPosition=function(e,p,v){if(0>e)return{row:0,column:0};
	var w=0,m=0,u=0;var z=0;var B=this.$screenRowCache,D=this.$getRowCacheIndex(B,e),E=B.length;E&&0<=D?(u=B[D],w=this.$docRowCache[D],D=e>B[E-1]):D=!E;E=this.getLength()-1;for(var G=(B=this.getNextFoldLine(w))?B.start.row:Infinity;u<=e;){z=this.getRowLength(w);if(u+z>e||w>=E)break;else u+=z,w++,w>G&&(w=B.end.row+1,G=(B=this.getNextFoldLine(w,B))?B.start.row:Infinity);D&&(this.$docRowCache.push(w),this.$screenRowCache.push(u))}if(B&&B.start.row<=w)z=this.getFoldDisplayLine(B),w=B.start.row;else{if(u+
	z<=e||w>E)return{row:E,column:this.getLine(E).length};z=this.getLine(w);B=null}D=0;e=Math.floor(e-u);if(this.$useWrapMode&&(E=this.$wrapData[w])){var H=E[e];0<e&&E.length&&(D=E.indent,m=E[e-1]||E[E.length-1],z=z.substring(m))}void 0!==v&&this.$bidiHandler.isBidiRow(u+e,w,e)&&(p=this.$bidiHandler.offsetToCol(v));m+=this.$getStringScreenWidth(z,p-D)[1];this.$useWrapMode&&m>=H&&(m=H-1);return B?B.idxToPosition(m):{row:w,column:m}};this.documentToScreenPosition=function(e,p){var v="undefined"===typeof p?
	this.$clipPositionToDocument(e.row,e.column):this.$clipPositionToDocument(e,p);e=v.row;p=v.column;v=0;var w;if(w=this.getFoldAt(e,p,1))e=w.start.row,p=w.start.column;w=0;var m=this.$docRowCache;var u=this.$getRowCacheIndex(m,e);var z=m.length;z&&0<=u?(w=m[u],v=this.$screenRowCache[u],z=e>m[z-1]):z=!z;for(var B=(m=this.getNextFoldLine(w))?m.start.row:Infinity;w<e;){if(w>=B){u=m.end.row+1;if(u>e)break;B=(m=this.getNextFoldLine(u,m))?m.start.row:Infinity}else u=w+1;v+=this.getRowLength(w);w=u;z&&(this.$docRowCache.push(w),
	this.$screenRowCache.push(v))}m&&w>=B?(p=this.getFoldDisplayLine(m,e,p),m=m.start.row):(p=this.getLine(e).substring(0,p),m=e);e=0;if(this.$useWrapMode&&(m=this.$wrapData[m])){for(e=0;p.length>=m[e];)v++,e++;p=p.substring(m[e-1]||0,p.length);e=0<e?m.indent:0}this.lineWidgets&&this.lineWidgets[w]&&this.lineWidgets[w].rowsAbove&&(v+=this.lineWidgets[w].rowsAbove);return{row:v,column:e+this.$getStringScreenWidth(p)[0]}};this.documentToScreenColumn=function(e,p){return this.documentToScreenPosition(e,
	p).column};this.documentToScreenRow=function(e,p){return this.documentToScreenPosition(e,p).row};this.getScreenLength=function(){var e=0,p;if(this.$useWrapMode){var v=this.$wrapData.length,w=0;z=0;for(var m=(p=this.$foldData[z++])?p.start.row:Infinity;w<v;){var u=this.$wrapData[w];e+=u?u.length+1:1;w++;w>m&&(w=p.end.row+1,m=(p=this.$foldData[z++])?p.start.row:Infinity)}}else{e=this.getLength();v=this.$foldData;for(var z=0;z<v.length;z++)p=v[z],e-=p.end.row-p.start.row}this.lineWidgets&&(e+=this.$getWidgetScreenLength());
	return e};this.$setFontMetrics=function(e){this.$enableVarChar&&(this.$getStringScreenWidth=function(p,v,w){if(0===v)return[0,0];v||(v=Infinity);w=w||0;var m;for(m=0;m<p.length;m++){var u=p.charAt(m);w="\t"===u?w+this.getScreenTabSize(w):w+e.getCharacterWidth(u);if(w>v)break}return[w,m]})};this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null);this.$stopWorker();this.removeAllListeners();this.selection.detach()};this.isFullWidth=r}).call(t.prototype);
	A("./edit_session/folding").Folding.call(t.prototype);A("./edit_session/bracket_match").BracketMatch.call(t.prototype);c.defineOptions(t.prototype,"session",{wrap:{set:function(r){r&&"off"!=r?"free"==r?r=!0:"printMargin"==r?r=-1:"string"==typeof r&&(r=parseInt(r,10)||!1):r=!1;this.$wrap!=r&&((this.$wrap=r)?(r="number"==typeof r?r:null,this.setWrapLimitRange(r,r),this.setUseWrapMode(!0)):this.setUseWrapMode(!1))},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?
	this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(r){r="auto"==r?"text"!=this.$mode.type:"text"!=r;r!=this.$wrapAsCode&&(this.$wrapAsCode=r,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(r){this.$useWorker=r;this.$stopWorker();
	r&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(r){r=parseInt(r);0<r&&this.$tabSize!==r&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=r,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(r){this.setFoldStyle(r)},handlesSet:!0},overwrite:{set:function(r){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(r){this.doc.setNewLineMode(r)},get:function(){return this.doc.getNewLineMode()},
	handlesSet:!0},mode:{set:function(r){this.setMode(r)},get:function(){return this.$modeId},handlesSet:!0}});C.EditSession=t});
	ace.define("ace/search","require exports module ace/lib/lang ace/lib/oop ace/range".split(" "),function(A,C,J){var y=A("./lib/lang"),q=A("./lib/oop"),f=A("./range").Range;A=function(){this.$options={}};(function(){this.set=function(c){q.mixin(this.$options,c);return this};this.getOptions=function(){return y.copyObject(this.$options)};this.setOptions=function(c){this.$options=c};this.find=function(c){var a=this.$options;c=this.$matchIterator(c,a);if(!c)return!1;var b=null;c.forEach(function(d,g,l,
	n){b=new f(d,g,l,n);return g==n&&a.start&&a.start.start&&0!=a.skipCurrent&&b.isEqual(a.start)?(b=null,!1):!0});return b};this.findAll=function(c){var a=this.$options;if(!a.needle)return[];this.$assembleRegExp(a);var b=a.range,d=b?c.getLines(b.start.row,b.end.row):c.doc.getAllLines();c=[];var g=a.re;if(a.$isMultiLine){var l=g.length,n=d.length-l,h,t=g.offset||0;a:for(;t<=n;t++){for(a=0;a<l;a++)if(-1==d[t+a].search(g[a]))continue a;var r=d[t];a=d[t+l-1];r=r.length-r.match(g[0])[0].length;a=a.match(g[l-
	1])[0].length;h&&h.end.row===t&&h.end.column>r||(c.push(h=new f(t,r,t+l-1,a)),2<l&&(t=t+l-2))}}else for(h=0;h<d.length;h++)for(l=y.getMatchOffsets(d[h],g),a=0;a<l.length;a++)n=l[a],c.push(new f(h,n.offset,h,n.offset+n.length));if(b){g=d=b.start.column;h=0;for(a=c.length-1;h<a&&c[h].start.column<d&&c[h].start.row==b.start.row;)h++;for(;h<a&&c[a].end.column>g&&c[a].end.row==b.end.row;)a--;c=c.slice(h,a+1);h=0;for(a=c.length;h<a;h++)c[h].start.row+=b.start.row,c[h].end.row+=b.start.row}return c};this.replace=
	function(c,a){var b=this.$options,d=this.$assembleRegExp(b);if(b.$isMultiLine)return a;if(d){var g=d.exec(c);if(!g||g[0].length!=c.length)return null;a=c.replace(d,a);if(b.preserveCase){a=a.split("");for(b=Math.min(c.length,c.length);b--;)(d=c[b])&&d.toLowerCase()!=d?a[b]=a[b].toUpperCase():a[b]=a[b].toLowerCase();a=a.join("")}return a}};this.$assembleRegExp=function(c,a){if(c.needle instanceof RegExp)return c.re=c.needle;var b=c.needle;if(!c.needle)return c.re=!1;c.regExp||(b=y.escapeRegExp(b));
	c.wholeWord&&(b=(/\w/.test(b[0])||c.regExp?"\\b":"")+b+(/\w/.test(b[b.length-1])||c.regExp?"\\b":""));var d=c.caseSensitive?"gm":"gmi";c.$isMultiLine=!a&&/[\n\r]/.test(b);if(c.$isMultiLine)return c.re=this.$assembleMultilineRegExp(b,d);try{var g=new RegExp(b,d)}catch(l){g=!1}return c.re=g};this.$assembleMultilineRegExp=function(c,a){c=c.replace(/\r\n|\r|\n/g,"$\n^").split("\n");for(var b=[],d=0;d<c.length;d++)try{b.push(new RegExp(c[d],a))}catch(g){return!1}return b};this.$matchIterator=function(c,
	a){var b=this.$assembleRegExp(a);if(!b)return!1;var d=1==a.backwards,g=0!=a.skipCurrent,l=a.range,n=a.start;n||(n=l?l[d?"end":"start"]:c.selection.getRange());n.start&&(n=n[g!=d?"end":"start"]);var h=l?l.start.row:0,t=l?l.end.row:c.getLength()-1;g=d?function(k){var e=n.row;if(!x(e,n.column,k)){for(e--;e>=h;e--)if(x(e,Number.MAX_VALUE,k))return;if(0!=a.wrap)for(e=t,h=n.row;e>=h&&!x(e,Number.MAX_VALUE,k);e--);}}:function(k){var e=n.row;if(!x(e,n.column,k)){for(e+=1;e<=t;e++)if(x(e,0,k))return;if(0!=
	a.wrap)for(e=h,t=n.row;e<=t&&!x(e,0,k);e++);}};if(a.$isMultiLine)var r=b.length,x=function(k,e,p){k=d?k-r+1:k;if(!(0>k)){var v=c.getLine(k),w=v.search(b[0]);if(!(!d&&w<e||-1===w)){for(var m=1;m<r;m++)if(v=c.getLine(k+m),-1==v.search(b[m]))return;v=v.match(b[r-1])[0].length;if(!(d&&v>e)&&p(k,w,k+r-1,v))return!0}}};else x=d?function(k,e,p){var v=c.getLine(k),w=[],m;for(b.lastIndex=0;m=b.exec(v);){var u=m[0].length;var z=m.index;if(!u){if(z>=v.length)break;b.lastIndex=z+1}if(m.index+u>e)break;w.push(m.index,
	u)}for(e=w.length-1;0<=e;e-=2)if(v=w[e-1],u=w[e],p(k,v,k,v+u))return!0}:function(k,e,p){var v=c.getLine(k),w;for(b.lastIndex=e;w=b.exec(v);){e=w[0].length;w=w.index;if(p(k,w,k,w+e))return!0;if(!e&&(b.lastIndex=w+=1,w>=v.length))return!1}};return{forEach:g}}}).call(A.prototype);C.Search=A});
	ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(A,C,J){function y(b,d){this.platform=d||(c.isMac?"mac":"win");this.commands={};this.commandKeyBinding={};this.addCommands(b);this.$singleCommand=!0}function q(b,d){y.call(this,b,d);this.$singleCommand=!1}var f=A("../lib/keys"),c=A("../lib/useragent"),a=f.KEY_MODS;q.prototype=y.prototype;(function(){function b(d){return"object"==typeof d&&d.bindKey&&d.bindKey.position||(d.isDefault?-100:
	0)}this.addCommand=function(d){this.commands[d.name]&&this.removeCommand(d);this.commands[d.name]=d;d.bindKey&&this._buildKeyHash(d)};this.removeCommand=function(d,g){var l=d&&("string"===typeof d?d:d.name);d=this.commands[l];g||delete this.commands[l];g=this.commandKeyBinding;for(var n in g)if(l=g[n],l==d)delete g[n];else if(Array.isArray(l)){var h=l.indexOf(d);-1!=h&&(l.splice(h,1),1==l.length&&(g[n]=l[0]))}};this.bindKey=function(d,g,l){"object"==typeof d&&d&&(void 0==l&&(l=d.position),d=d[this.platform]);
	if(d){if("function"==typeof g)return this.addCommand({exec:g,bindKey:d,name:g.name||d});d.split("|").forEach(function(n){var h="";if(-1!=n.indexOf(" ")){var t=n.split(/\s+/);n=t.pop();t.forEach(function(r){r=this.parseKeys(r);h+=(h?" ":"")+(a[r.hashId]+r.key);this._addCommandToBinding(h,"chainKeys")},this);h+=" "}n=this.parseKeys(n);this._addCommandToBinding(h+(a[n.hashId]+n.key),g,l)},this)}};this._addCommandToBinding=function(d,g,l){var n=this.commandKeyBinding,h;if(g)if(!n[d]||this.$singleCommand)n[d]=
	g;else{Array.isArray(n[d])?-1!=(h=n[d].indexOf(g))&&n[d].splice(h,1):n[d]=[n[d]];"number"!=typeof l&&(l=b(g));d=n[d];for(h=0;h<d.length&&!(b(d[h])>l);h++);d.splice(h,0,g)}else delete n[d]};this.addCommands=function(d){d&&Object.keys(d).forEach(function(g){var l=d[g];if(l){if("string"===typeof l)return this.bindKey(l,g);"function"===typeof l&&(l={exec:l});"object"===typeof l&&(l.name||(l.name=g),this.addCommand(l))}},this)};this.removeCommands=function(d){Object.keys(d).forEach(function(g){this.removeCommand(d[g])},
	this)};this.bindKeys=function(d){Object.keys(d).forEach(function(g){this.bindKey(g,d[g])},this)};this._buildKeyHash=function(d){this.bindKey(d.bindKey,d)};this.parseKeys=function(d){var g=d.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(r){return r}),l=g.pop(),n=f[l];if(f.FUNCTION_KEYS[n])l=f.FUNCTION_KEYS[n].toLowerCase();else{if(!g.length)return{key:l,hashId:-1};if(1==g.length&&"shift"==g[0])return{key:l.toUpperCase(),hashId:-1}}n=0;for(var h=g.length;h--;){var t=f.KEY_MODS[g[h]];if(null==
	t)return"undefined"!=typeof console&&console.error("invalid modifier "+g[h]+" in "+d),!1;n|=t}return{key:l,hashId:n}};this.findKeyCommand=function(d,g){return this.commandKeyBinding[a[d]+g]};this.handleKeyboard=function(d,g,l,n){if(!(0>n)){var h=a[g]+l,t=this.commandKeyBinding[h];d.$keyChain&&(d.$keyChain+=" "+h,t=this.commandKeyBinding[d.$keyChain]||t);if(t&&("chainKeys"==t||"chainKeys"==t[t.length-1]))return d.$keyChain=d.$keyChain||h,{command:"null"};if(d.$keyChain)if((!g||4==g)&&1==l.length)d.$keyChain=
	d.$keyChain.slice(0,-h.length-1);else if(-1==g||0<n)d.$keyChain="";return{command:t}}};this.getStatusText=function(d,g){return g.$keyChain||""}}).call(y.prototype);C.HashHandler=y;C.MultiHashHandler=q});
	ace.define("ace/commands/command_manager","require exports module ace/lib/oop ace/keyboard/hash_handler ace/lib/event_emitter".split(" "),function(A,C,J){var y=A("../lib/oop"),q=A("../keyboard/hash_handler").MultiHashHandler,f=A("../lib/event_emitter").EventEmitter;A=function(c,a){q.call(this,a,c);this.byName=this.commands;this.setDefaultHandler("exec",function(b){return b.command.exec(b.editor,b.args||{})})};y.inherits(A,q);(function(){y.implement(this,f);this.exec=function(c,a,b){if(Array.isArray(c)){for(var d=
	c.length;d--;)if(this.exec(c[d],a,b))return!0;return!1}"string"===typeof c&&(c=this.commands[c]);if(!c||a&&a.$readOnly&&!c.readOnly||0!=this.$checkCommandState&&c.isAvailable&&!c.isAvailable(a))return!1;c={editor:a,command:c,args:b};c.returnValue=this._emit("exec",c);this._signal("afterExec",c);return!1===c.returnValue?!1:!0};this.toggleRecording=function(c){if(!this.$inReplay){c&&c._emit("changeStatus");if(this.recording)return this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||
	(this.macro=this.oldMacro),this.recording=!1;this.$addCommandToMacro||(this.$addCommandToMacro=function(a){this.macro.push([a.command,a.args])}.bind(this));this.oldMacro=this.macro;this.macro=[];this.on("exec",this.$addCommandToMacro);return this.recording=!0}};this.replay=function(c){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(c);try{this.$inReplay=!0,this.macro.forEach(function(a){"string"==typeof a?this.exec(a,c):this.exec(a[0],c,a[1])},this)}finally{this.$inReplay=
	!1}}};this.trimMacro=function(c){return c.map(function(a){"string"!=typeof a[0]&&(a[0]=a[0].name);a[1]||(a=a[0]);return a})}}).call(A.prototype);C.CommandManager=A});
	ace.define("ace/commands/default_commands","require exports module ace/lib/lang ace/config ace/range".split(" "),function(A,C,J){function y(a,b){return{win:a,mac:b}}var q=A("../lib/lang"),f=A("../config"),c=A("../range").Range;C.commands=[{name:"showSettingsMenu",bindKey:y("Ctrl-,","Command-,"),exec:function(a){f.loadModule("ace/ext/settings_menu",function(b){b.init(a);a.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:y("Alt-E","F4"),exec:function(a){f.loadModule("./ext/error_marker",
	function(b){b.showErrorMarker(a,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:y("Alt-Shift-E","Shift-F4"),exec:function(a){f.loadModule("./ext/error_marker",function(b){b.showErrorMarker(a,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:y("Ctrl-A","Command-A"),exec:function(a){a.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:y(null,"Ctrl-L"),exec:function(a){a.centerSelection()},
	readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:y("Ctrl-L","Command-L"),exec:function(a,b){"number"!==typeof b||isNaN(b)||a.gotoLine(b);a.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:y("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(a){a.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:y("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(a){a.session.toggleFold(!0)},
	multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:y("F2","F2"),exec:function(a){a.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:y("Alt-F2","Alt-F2"),exec:function(a){a.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:y(null,"Ctrl-Command-Option-0"),exec:function(a){a.session.foldAll()},
	scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:y(null,"Ctrl-Command-Option-0"),exec:function(a){a.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:y("Alt-0","Command-Option-0"),exec:function(a){a.session.foldAll();a.session.unfold(a.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:y("Alt-Shift-0","Command-Option-Shift-0"),
	exec:function(a){a.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:y("Ctrl-K","Command-G"),exec:function(a){a.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:y("Ctrl-Shift-K","Command-Shift-G"),exec:function(a){a.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:y("Alt-K",
	"Ctrl-G"),exec:function(a){a.selection.isEmpty()?a.selection.selectWord():a.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:y("Alt-Shift-K","Ctrl-Shift-G"),exec:function(a){a.selection.isEmpty()?a.selection.selectWord():a.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:y("Ctrl-F","Command-F"),exec:function(a){f.loadModule("ace/ext/searchbox",function(b){b.Search(a)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",
	exec:function(a){a.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:y("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(a){a.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:y("Ctrl-Home","Command-Home|Command-Up"),exec:function(a){a.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",
	aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:y("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(a){a.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:y("Up","Up|Ctrl-P"),exec:function(a,b){a.navigateUp(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:y("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),
	exec:function(a){a.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:y("Ctrl-End","Command-End|Command-Down"),exec:function(a){a.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:y("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(a){a.getSelection().selectDown()},
	multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:y("Down","Down|Ctrl-N"),exec:function(a,b){a.navigateDown(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:y("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(a){a.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",
	bindKey:y("Ctrl-Left","Option-Left"),exec:function(a){a.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:y("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(a){a.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:y("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(a){a.navigateLineStart()},
	multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:y("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(a){a.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:y("Left","Left|Ctrl-B"),exec:function(a,b){a.navigateLeft(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",
	bindKey:y("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(a){a.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:y("Ctrl-Right","Option-Right"),exec:function(a){a.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:y("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(a){a.getSelection().selectLineEnd()},
	multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:y("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(a){a.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:y("Shift-Right","Shift-Right"),exec:function(a){a.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",
	bindKey:y("Right","Right|Ctrl-F"),exec:function(a,b){a.navigateRight(b.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(a){a.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:y(null,"Option-PageDown"),exec:function(a){a.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:y("PageDown","PageDown|Ctrl-V"),exec:function(a){a.gotoPageDown()},
	readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(a){a.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:y(null,"Option-PageUp"),exec:function(a){a.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(a){a.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:y("Ctrl-Up",null),exec:function(a){a.renderer.scrollBy(0,-2*a.renderer.layerConfig.lineHeight)},
	readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:y("Ctrl-Down",null),exec:function(a){a.renderer.scrollBy(0,2*a.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(a){a.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(a){a.getSelection().selectLineEnd()},multiSelectAction:"forEach",
	scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:y("Ctrl-Alt-E","Command-Option-E"),exec:function(a){a.commands.toggleRecording(a)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:y("Ctrl-Shift-E","Command-Shift-E"),exec:function(a){a.commands.replay(a)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:y("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(a){a.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",
	readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:y("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(a){a.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:y("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(a){a.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",
	bindKey:y(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(a){},readOnly:!0},{name:"cut",description:"Cut",exec:function(a){var b=a.$copyWithEmptySelection&&a.selection.isEmpty()?a.selection.getLineRange():a.selection.getRange();a._emit("cut",b);b.isEmpty()||a.session.remove(b);a.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(a,b){a.$handlePaste(b)},scrollIntoView:"cursor"},
	{name:"removeline",description:"Remove line",bindKey:y("Ctrl-D","Command-D"),exec:function(a){a.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:y("Ctrl-Shift-D","Command-Shift-D"),exec:function(a){a.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:y("Ctrl-Alt-S","Command-Alt-S"),exec:function(a){a.sortLines()},scrollIntoView:"selection",
	multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:y("Ctrl-/","Command-/"),exec:function(a){a.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:y("Ctrl-Shift-/","Command-Shift-/"),exec:function(a){a.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:y("Ctrl-Shift-Up",
	"Alt-Shift-Up"),exec:function(a){a.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:y("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(a){a.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:y("Ctrl-H","Command-Option-F"),exec:function(a){f.loadModule("ace/ext/searchbox",function(b){b.Search(a,!0)})}},{name:"undo",description:"Undo",bindKey:y("Ctrl-Z",
	"Command-Z"),exec:function(a){a.undo()}},{name:"redo",description:"Redo",bindKey:y("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(a){a.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:y("Alt-Shift-Up","Command-Option-Up"),exec:function(a){a.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:y("Alt-Up","Option-Up"),exec:function(a){a.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",
	bindKey:y("Alt-Shift-Down","Command-Option-Down"),exec:function(a){a.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:y("Alt-Down","Option-Down"),exec:function(a){a.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:y("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(a){a.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:y("Shift-Backspace|Backspace",
	"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(a){a.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:y("Shift-Delete",null),exec:function(a){if(a.selection.isEmpty())a.remove("left");else return!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:y("Alt-Backspace","Command-Backspace"),exec:function(a){a.removeToLineStart()},multiSelectAction:"forEach",
	scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:y("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(a){a.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:y("Ctrl-Shift-Backspace",null),exec:function(a){var b=a.selection.getRange();b.start.column=0;a.session.remove(b)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",
	bindKey:y("Ctrl-Shift-Delete",null),exec:function(a){var b=a.selection.getRange();b.end.column=Number.MAX_VALUE;a.session.remove(b)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:y("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(a){a.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:y("Ctrl-Delete","Alt-Delete"),exec:function(a){a.removeWordRight()},
	multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:y("Shift-Tab","Shift-Tab"),exec:function(a){a.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:y("Tab","Tab"),exec:function(a){a.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:y("Ctrl-[","Ctrl-["),exec:function(a){a.blockOutdent()},multiSelectAction:"forEachLine",
	scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:y("Ctrl-]","Ctrl-]"),exec:function(a){a.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(a,b){a.insert(b)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(a,b){a.insert(q.stringRepeat(b.text||"",b.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},
	{name:"splitline",description:"Split line",bindKey:y(null,"Ctrl-O"),exec:function(a){a.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:y("Alt-Shift-X","Ctrl-T"),exec:function(a){a.transposeLetters()},multiSelectAction:function(a){a.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:y("Ctrl-U","Ctrl-U"),exec:function(a){a.toUpperCase()},multiSelectAction:"forEach",
	scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:y("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(a){a.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:y(null,null),exec:function(a){a.autoIndent()},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:y("Ctrl-Shift-L","Command-Shift-L"),exec:function(a){var b=a.selection.getRange();b.start.column=
	b.end.column=0;b.end.row++;a.selection.setRange(b,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",description:"Join lines",bindKey:y(null,null),exec:function(a){var b=a.selection.isBackwards(),d=b?a.selection.getSelectionLead():a.selection.getSelectionAnchor();b=b?a.selection.getSelectionAnchor():a.selection.getSelectionLead();for(var g=a.session.doc.getLine(d.row).length,l=a.session.doc.getTextRange(a.selection.getRange()).replace(/\n\s*/," ").length,n=a.session.doc.getLine(d.row),
	h=d.row+1;h<=b.row+1;h++){var t=q.stringTrimLeft(q.stringTrimRight(a.session.doc.getLine(h)));0!==t.length&&(t=" "+t);n+=t}b.row+1<a.session.doc.getLength()-1&&(n+=a.session.doc.getNewLineCharacter());a.clearSelection();a.session.doc.replace(new c(d.row,0,b.row+2,0),n);0<l?(a.selection.moveCursorTo(d.row,d.column),a.selection.selectTo(d.row,d.column+l)):(g=a.session.doc.getLine(d.row).length>g?g+1:g,a.selection.moveCursorTo(d.row,g))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",
	description:"Invert selection",bindKey:y(null,null),exec:function(a){var b=a.session.doc.getLength()-1,d=a.session.doc.getLine(b).length,g=a.selection.rangeList.ranges,l=[];1>g.length&&(g=[a.selection.getRange()]);for(var n=0;n<g.length;n++)n!=g.length-1||g[n].end.row===b&&g[n].end.column===d||l.push(new c(g[n].end.row,g[n].end.column,b,d)),0===n?(0!==g[n].start.row||0!==g[n].start.column)&&l.push(new c(0,0,g[n].start.row,g[n].start.column)):l.push(new c(g[n-1].end.row,g[n-1].end.column,g[n].start.row,
	g[n].start.column));a.exitMultiSelectMode();a.clearSelection();for(n=0;n<l.length;n++)a.selection.addRange(l[n],!1)},readOnly:!0,scrollIntoView:"none"},{name:"addLineAfter",exec:function(a){a.selection.clearSelection();a.navigateLineEnd();a.insert("\n")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"addLineBefore",exec:function(a){a.selection.clearSelection();var b=a.getCursorPosition();a.selection.moveTo(b.row-1,Number.MAX_VALUE);a.insert("\n");0===b.row&&a.navigateUp()},multiSelectAction:"forEach",
	scrollIntoView:"cursor"},{name:"openCommandPallete",description:"Open command pallete",bindKey:y("F1","F1"),exec:function(a){a.prompt({$type:"commands"})},readOnly:!0},{name:"modeSelect",description:"Change language mode...",bindKey:y(null,null),exec:function(a){a.prompt({$type:"modes"})},readOnly:!0}];for(A=1;9>A;A++)C.commands.push({name:"foldToLevel"+A,description:"Fold To Level "+A,level:A,exec:function(a){a.session.foldToLevel(this.level)},scrollIntoView:"center",readOnly:!0})});
	ace.define("ace/editor","require exports module ace/lib/fixoldbrowsers ace/lib/oop ace/lib/dom ace/lib/lang ace/lib/useragent ace/keyboard/textinput ace/mouse/mouse_handler ace/mouse/fold_handler ace/keyboard/keybinding ace/edit_session ace/search ace/range ace/lib/event_emitter ace/commands/command_manager ace/commands/default_commands ace/config ace/token_iterator ace/clipboard".split(" "),function(A,C,J){A("./lib/fixoldbrowsers");var y=A("./lib/oop"),q=A("./lib/dom"),f=A("./lib/lang"),c=A("./lib/useragent"),
	a=A("./keyboard/textinput").TextInput,b=A("./mouse/mouse_handler").MouseHandler,d=A("./mouse/fold_handler").FoldHandler,g=A("./keyboard/keybinding").KeyBinding,l=A("./edit_session").EditSession,n=A("./search").Search,h=A("./range").Range,t=A("./lib/event_emitter").EventEmitter,r=A("./commands/command_manager").CommandManager,x=A("./commands/default_commands").commands,k=A("./config"),e=A("./token_iterator").TokenIterator,p=A("./clipboard"),v=function(m,u,z){this.$toDestroy=[];this.container=m.getContainerElement();
	this.renderer=m;this.id="editor"+ ++v.$uid;this.commands=new r(c.isMac?"mac":"win",x);"object"==typeof document&&(this.textInput=new a(m.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new b(this),new d(this));this.keyBinding=new g(this);this.$search=(new n).set({wrap:!0});this.$historyTracker=this.$historyTracker.bind(this);this.commands.on("exec",this.$historyTracker);this.$initOperationListeners();this._$emitInputEvent=f.delayedCall(function(){this._signal("input",
	{});this.session&&this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this));this.on("change",function(B,D){D._$emitInputEvent.schedule(31)});this.setSession(u||z&&z.session||new l(""));k.resetOptions(this);z&&this.setOptions(z);k._signal("editor",this)};v.$uid=0;(function(){y.implement(this,t);this.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0);this.commands.on("afterExec",this.endOperation.bind(this),!0);this.$opResetTimer=f.delayedCall(this.endOperation.bind(this,
	!0));this.on("change",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel);this.curOp.docChanged=!0}.bind(this),!0);this.on("changeSelection",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel);this.curOp.selectionChanged=!0}.bind(this),!0)};this.curOp=null;this.prevOp={};this.startOperation=function(m){if(this.curOp){if(!m||this.curOp.command)return;this.prevOp=this.curOp}m||(this.previousCommand=null,m={});this.$opResetTimer.schedule();
	this.curOp=this.session.curOp={command:m.command||{},args:m.args,scrollTop:this.renderer.scrollTop};this.curOp.selectionBefore=this.selection.toJSON()};this.endOperation=function(m){if(this.curOp&&this.session){if(m&&!1===m.returnValue||!this.session)return this.curOp=null;if(1!=m||!this.curOp.command||"mouse"!=this.curOp.command.name)if(this._signal("beforeEndOperation"),this.curOp){if(m=(m=this.curOp.command)&&m.scrollIntoView){switch(m){case "center-animate":m="animate";case "center":this.renderer.scrollCursorIntoView(null,
	.5);break;case "animate":case "cursor":this.renderer.scrollCursorIntoView();break;case "selectionPart":var u=this.selection.getRange(),z=this.renderer.layerConfig;(u.start.row>=z.lastRow||u.end.row<=z.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==m&&this.renderer.animateScrolling(this.curOp.scrollTop)}m=this.selection.toJSON();this.curOp.selectionAfter=m;this.$lastSel=this.selection.toJSON();this.session.getUndoManager().addSelection(m);this.prevOp=
	this.curOp;this.curOp=null}}};this.$mergeableCommands=["backspace","del","insertstring"];this.$historyTracker=function(m){if(this.$mergeUndoDeltas){var u=this.prevOp,z=this.$mergeableCommands,B=u.command&&m.command.name==u.command.name;if("insertstring"==m.command.name){var D=m.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0);B=B&&this.mergeNextCommand&&(!/\s/.test(D)||/\s/.test(u.args));this.mergeNextCommand=!0}else B=B&&-1!==z.indexOf(m.command.name);"always"!=this.$mergeUndoDeltas&&
	2E3<Date.now()-this.sequenceStartTime&&(B=!1);B?this.session.mergeUndoDeltas=!0:-1!==z.indexOf(m.command.name)&&(this.sequenceStartTime=Date.now())}};this.setKeyboardHandler=function(m,u){if(m&&"string"===typeof m&&"ace"!=m){this.$keybindingId=m;var z=this;k.loadModule(["keybinding",m],function(B){z.$keybindingId==m&&z.keyBinding.setKeyboardHandler(B&&B.handler);u&&u()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(m),u&&u()};this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()};
	this.setSession=function(m){if(this.session!=m){this.curOp&&this.endOperation();this.curOp={};var u=this.session;if(u){this.session.off("change",this.$onDocumentChange);this.session.off("changeMode",this.$onChangeMode);this.session.off("tokenizerUpdate",this.$onTokenizerUpdate);this.session.off("changeTabSize",this.$onChangeTabSize);this.session.off("changeWrapLimit",this.$onChangeWrapLimit);this.session.off("changeWrapMode",this.$onChangeWrapMode);this.session.off("changeFold",this.$onChangeFold);
	this.session.off("changeFrontMarker",this.$onChangeFrontMarker);this.session.off("changeBackMarker",this.$onChangeBackMarker);this.session.off("changeBreakpoint",this.$onChangeBreakpoint);this.session.off("changeAnnotation",this.$onChangeAnnotation);this.session.off("changeOverwrite",this.$onCursorChange);this.session.off("changeScrollTop",this.$onScrollTopChange);this.session.off("changeScrollLeft",this.$onScrollLeftChange);var z=this.session.getSelection();z.off("changeCursor",this.$onCursorChange);
	z.off("changeSelection",this.$onSelectionChange)}(this.session=m)?(this.$onDocumentChange=this.onDocumentChange.bind(this),m.on("change",this.$onDocumentChange),this.renderer.setSession(m),this.$onChangeMode=this.onChangeMode.bind(this),m.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),m.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),m.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=
	this.onChangeWrapLimit.bind(this),m.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),m.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),m.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),
	this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),
	this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=m.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&
	this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(m));this._signal("changeSession",{session:m,oldSession:u});this.curOp=null;u&&u._signal("changeEditor",{oldEditor:this});m&&m._signal("changeEditor",{editor:this});m&&m.bgTokenizer&&m.bgTokenizer.scheduleStart()}};this.getSession=function(){return this.session};this.setValue=function(m,u){this.session.doc.setValue(m);u?1==u?this.navigateFileEnd():-1==u&&this.navigateFileStart():this.selectAll();
	return m};this.getValue=function(){return this.session.getValue()};this.getSelection=function(){return this.selection};this.resize=function(m){this.renderer.onResize(m)};this.setTheme=function(m,u){this.renderer.setTheme(m,u)};this.getTheme=function(){return this.renderer.getTheme()};this.setStyle=function(m){this.renderer.setStyle(m)};this.unsetStyle=function(m){this.renderer.unsetStyle(m)};this.getFontSize=function(){return this.getOption("fontSize")||q.computedStyle(this.container).fontSize};this.setFontSize=
	function(m){this.setOption("fontSize",m)};this.$highlightBrackets=function(){if(!this.$highlightPending){var m=this;this.$highlightPending=!0;setTimeout(function(){m.$highlightPending=!1;var u=m.session;if(u&&u.bgTokenizer){u.$bracketHighlight&&(u.$bracketHighlight.markerIds.forEach(function(D){u.removeMarker(D)}),u.$bracketHighlight=null);var z=u.getMatchingBracketRanges(m.getCursorPosition());!z&&u.$mode.getMatching&&(z=u.$mode.getMatching(m.session));if(z){var B="ace_bracket";Array.isArray(z)?
	1==z.length&&(B="ace_error_bracket"):z=[z];2==z.length&&(0==h.comparePoints(z[0].end,z[1].start)?z=[h.fromPoints(z[0].start,z[1].end)]:0==h.comparePoints(z[0].start,z[1].end)&&(z=[h.fromPoints(z[1].start,z[0].end)]));u.$bracketHighlight={ranges:z,markerIds:z.map(function(D){return u.addMarker(D,B,"text")})}}}},50)}};this.$highlightTags=function(){if(!this.$highlightTagPending){var m=this;this.$highlightTagPending=!0;setTimeout(function(){m.$highlightTagPending=!1;var u=m.session;if(u&&u.bgTokenizer){var z=
	m.getCursorPosition(),B=new e(m.session,z.row,z.column);if((z=B.getCurrentToken())&&/\b(?:tag-open|tag-name)/.test(z.type)){if(-1!==z.type.indexOf("tag-open")&&(z=B.stepForward(),!z))return;var D=z.value,E=z.value,G=0,H=B.stepBackward();if("<"===H.value){do if(H=z,z=B.stepForward())-1!==z.type.indexOf("tag-name")?(E=z.value,D===E&&("<"===H.value?G++:"</"===H.value&&G--)):D===E&&"/>"===z.value&&G--;while(z&&0<=G)}else{do if(z=H,H=B.stepBackward(),z)if(-1!==z.type.indexOf("tag-name"))D===z.value&&("<"===
	H.value?G++:"</"===H.value&&G--);else if("/>"===z.value){E=0;for(var I=H;I;){if(-1!==I.type.indexOf("tag-name")&&I.value===D){G--;break}else if("<"===I.value)break;I=B.stepBackward();E++}for(I=0;I<E;I++)B.stepForward()}while(H&&0>=G);B.stepForward()}z?(D=B.getCurrentTokenRow(),B=B.getCurrentTokenColumn(),z=new h(D,B,D,B+z.value.length),B=u.$backMarkers[u.$tagHighlight],u.$tagHighlight&&void 0!=B&&0!==z.compareRange(B.range)&&(u.removeMarker(u.$tagHighlight),u.$tagHighlight=null),u.$tagHighlight||
	(u.$tagHighlight=u.addMarker(z,"ace_bracket","text"))):(u.removeMarker(u.$tagHighlight),u.$tagHighlight=null)}else u.removeMarker(u.$tagHighlight),u.$tagHighlight=null}},50)}};this.focus=function(){var m=this;setTimeout(function(){m.isFocused()||m.textInput.focus()});this.textInput.focus()};this.isFocused=function(){return this.textInput.isFocused()};this.blur=function(){this.textInput.blur()};this.onFocus=function(m){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),
	this._emit("focus",m))};this.onBlur=function(m){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",m))};this.$cursorChange=function(){this.renderer.updateCursor();this.$highlightBrackets();this.$highlightTags();this.$updateHighlightActiveLine()};this.onDocumentChange=function(m){this.renderer.updateLines(m.start.row,m.start.row==m.end.row?m.end.row:Infinity,this.session.$useWrapMode);this._signal("change",m);this.$cursorChange()};this.onTokenizerUpdate=
	function(m){m=m.data;this.renderer.updateLines(m.first,m.last)};this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())};this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())};this.onCursorChange=function(){this.$cursorChange();this._signal("changeSelection")};this.$updateHighlightActiveLine=function(){var m=this.getSession(),u;this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(u=this.getCursorPosition()),
	this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(u=!1),!this.renderer.$maxLines||1!==this.session.getLength()||1<this.renderer.$minLines||(u=!1));m.$highlightLineMarker&&!u?(m.removeMarker(m.$highlightLineMarker.id),m.$highlightLineMarker=null):!m.$highlightLineMarker&&u?(u=new h(u.row,u.column,u.row,Infinity),u.id=m.addMarker(u,"ace_active-line","screenLine"),m.$highlightLineMarker=u):u&&(m.$highlightLineMarker.start.row=u.row,m.$highlightLineMarker.end.row=
	u.row,m.$highlightLineMarker.start.column=u.column,m._signal("changeBackMarker"))};this.onSelectionChange=function(m){m=this.session;m.$selectionMarker&&m.removeMarker(m.$selectionMarker);m.$selectionMarker=null;if(this.selection.isEmpty())this.$updateHighlightActiveLine();else{var u=this.selection.getRange(),z=this.getSelectionStyle();m.$selectionMarker=m.addMarker(u,"ace_selection",z)}m=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(m);this._signal("changeSelection")};
	this.$getSelectionHighLightRegexp=function(){var m=this.session,u=this.getSelectionRange();if(!u.isEmpty()&&!u.isMultiLine()){var z=u.start.column,B=u.end.column;m=m.getLine(u.start.row);u=m.substring(z,B);if(!(5E3<u.length)&&/[\w\d]/.test(u)&&(u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:u}),z=m.substring(z-1,B+1),u.test(z)))return u}};this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()};this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()};
	this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()};this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())};this.onChangeMode=function(m){this.renderer.updateText();this._emit("changeMode",m)};this.onChangeWrapLimit=function(){this.renderer.updateFull()};this.onChangeWrapMode=function(){this.renderer.onResize(!0)};this.onChangeFold=function(){this.$updateHighlightActiveLine();this.renderer.updateFull()};this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())};
	this.getCopyText=function(){var m=this.getSelectedText(),u=this.session.doc.getNewLineCharacter(),z=!1;if(!m&&this.$copyWithEmptySelection){z=!0;for(var B=this.selection.getAllRanges(),D=0;D<B.length;D++){var E=B[D];D&&B[D-1].start.row==E.start.row||(m+=this.session.getLine(E.start.row)+u)}}m={text:m};this._signal("copy",m);p.lineMode=z?m.text:"";return m.text};this.onCopy=function(){this.commands.exec("copy",this)};this.onCut=function(){this.commands.exec("cut",this)};this.onPaste=function(m,u){this.commands.exec("paste",
	this,{text:m,event:u})};this.$handlePaste=function(m){"string"==typeof m&&(m={text:m});this._signal("paste",m);var u=m.text;m=u==p.lineMode;var z=this.session;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)m?z.insert({row:this.selection.lead.row,column:0},u):this.insert(u);else if(m)this.selection.rangeList.ranges.forEach(function(G){z.insert({row:G.start.row,column:0},u)});else{m=u.split(/\r\n|\r|\n/);var B=this.selection.rangeList.ranges,D=2==m.length&&(!m[0]||!m[1]);if(m.length!=B.length||
	D)return this.commands.exec("insertstring",this,u);for(D=B.length;D--;){var E=B[D];E.isEmpty()||z.remove(E);z.insert(E.start,m[D])}}};this.execCommand=function(m,u){return this.commands.exec(m,this,u)};this.insert=function(m,u){var z=this.session,B=z.getMode(),D=this.getCursorPosition();if(this.getBehavioursEnabled()&&!u){var E=B.transformAction(z.getState(D.row),"insertion",this,z,m);E&&(m===E.text||this.inVirtualSelectionMode||(this.mergeNextCommand=this.session.mergeUndoDeltas=!1),m=E.text)}"\t"==
	m&&(m=this.session.getTabString());this.selection.isEmpty()?this.session.getOverwrite()&&-1==m.indexOf("\n")&&(u=new h.fromPoints(D,D),u.end.column+=m.length,this.session.remove(u)):(u=this.getSelectionRange(),D=this.session.remove(u),this.clearSelection());if("\n"==m||"\r\n"==m){var G=z.getLine(D.row);D.column>G.search(/\S|$/)&&(u=G.substr(D.column).search(/\S|$/),z.doc.removeInLine(D.row,D.column,D.column+u))}this.clearSelection();var H=D.column;u=z.getState(D.row);G=z.getLine(D.row);var I=B.checkOutdent(u,
	G,m);z.insert(D,m);E&&E.selection&&(2==E.selection.length?this.selection.setSelectionRange(new h(D.row,H+E.selection[0],D.row,H+E.selection[1])):this.selection.setSelectionRange(new h(D.row+E.selection[0],E.selection[1],D.row+E.selection[2],E.selection[3])));this.$enableAutoIndent&&(z.getDocument().isNewLine(m)&&(m=B.getNextLineIndent(u,G.slice(0,D.column),z.getTabString()),z.insert({row:D.row+1,column:0},m)),I&&B.autoOutdent(u,z,D.row))};this.autoIndent=function(){var m=this.session,u=m.getMode();
	if(this.selection.isEmpty()){var z=0;var B=m.doc.getLength()-1}else B=this.getSelectionRange(),z=B.start.row,B=B.end.row;var D="";var E="";for(var G,H=m.getTabString();z<=B;z++)0<z&&(D=m.getState(z-1),E=m.getLine(z-1),E=u.getNextLineIndent(D,E,H)),G=m.getLine(z),G=u.$getIndent(G),E!==G&&(0<G.length&&(G=new h(z,0,z,G.length),m.remove(G)),0<E.length&&m.insert({row:z,column:0},E)),u.autoOutdent(D,m,z)};this.onTextInput=function(m,u){if(!u)return this.keyBinding.onTextInput(m);this.startOperation({command:{name:"insertstring"}});
	m=this.applyComposition.bind(this,m,u);this.selection.rangeCount?this.forEachSelection(m):m();this.endOperation()};this.applyComposition=function(m,u){if(u.extendLeft||u.extendRight){var z=this.selection.getRange();z.start.column-=u.extendLeft;z.end.column+=u.extendRight;0>z.start.column&&(z.start.row--,z.start.column+=this.session.getLine(z.start.row).length+1);this.selection.setRange(z);m||z.isEmpty()||this.remove()}!m&&this.selection.isEmpty()||this.insert(m,!0);if(u.restoreStart||u.restoreEnd)z=
	this.selection.getRange(),z.start.column-=u.restoreStart,z.end.column-=u.restoreEnd,this.selection.setRange(z)};this.onCommandKey=function(m,u,z){return this.keyBinding.onCommandKey(m,u,z)};this.setOverwrite=function(m){this.session.setOverwrite(m)};this.getOverwrite=function(){return this.session.getOverwrite()};this.toggleOverwrite=function(){this.session.toggleOverwrite()};this.setScrollSpeed=function(m){this.setOption("scrollSpeed",m)};this.getScrollSpeed=function(){return this.getOption("scrollSpeed")};
	this.setDragDelay=function(m){this.setOption("dragDelay",m)};this.getDragDelay=function(){return this.getOption("dragDelay")};this.setSelectionStyle=function(m){this.setOption("selectionStyle",m)};this.getSelectionStyle=function(){return this.getOption("selectionStyle")};this.setHighlightActiveLine=function(m){this.setOption("highlightActiveLine",m)};this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")};this.setHighlightGutterLine=function(m){this.setOption("highlightGutterLine",
	m)};this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")};this.setHighlightSelectedWord=function(m){this.setOption("highlightSelectedWord",m)};this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord};this.setAnimatedScroll=function(m){this.renderer.setAnimatedScroll(m)};this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()};this.setShowInvisibles=function(m){this.renderer.setShowInvisibles(m)};this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()};
	this.setDisplayIndentGuides=function(m){this.renderer.setDisplayIndentGuides(m)};this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()};this.setShowPrintMargin=function(m){this.renderer.setShowPrintMargin(m)};this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()};this.setPrintMarginColumn=function(m){this.renderer.setPrintMarginColumn(m)};this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()};this.setReadOnly=function(m){this.setOption("readOnly",
	m)};this.getReadOnly=function(){return this.getOption("readOnly")};this.setBehavioursEnabled=function(m){this.setOption("behavioursEnabled",m)};this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")};this.setWrapBehavioursEnabled=function(m){this.setOption("wrapBehavioursEnabled",m)};this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")};this.setShowFoldWidgets=function(m){this.setOption("showFoldWidgets",m)};this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")};
	this.setFadeFoldWidgets=function(m){this.setOption("fadeFoldWidgets",m)};this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")};this.remove=function(m){this.selection.isEmpty()&&("left"==m?this.selection.selectLeft():this.selection.selectRight());m=this.getSelectionRange();if(this.getBehavioursEnabled()){var u=this.session,z=u.getState(m.start.row);z=u.getMode().transformAction(z,"deletion",this,u,m);if(0===m.end.column){var B=u.getTextRange(m);"\n"==B[B.length-1]&&(u=u.getLine(m.end.row),
	/^\s+$/.test(u)&&(m.end.column=u.length))}z&&(m=z)}this.session.remove(m);this.clearSelection()};this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight();this.session.remove(this.getSelectionRange());this.clearSelection()};this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft();this.session.remove(this.getSelectionRange());this.clearSelection()};this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart();
	this.selection.isEmpty()&&this.selection.selectLeft();this.session.remove(this.getSelectionRange());this.clearSelection()};this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var m=this.getSelectionRange();m.start.column==m.end.column&&m.start.row==m.end.row&&(m.end.column=0,m.end.row++);this.session.remove(m);this.clearSelection()};this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var m=this.getCursorPosition();
	this.insert("\n");this.moveCursorToPosition(m)};this.transposeLetters=function(){if(this.selection.isEmpty()){var m=this.getCursorPosition(),u=m.column;if(0!==u){var z=this.session.getLine(m.row);u<z.length?(z=z.charAt(u)+z.charAt(u-1),m=new h(m.row,u-1,m.row,u+1)):(z=z.charAt(u-1)+z.charAt(u-2),m=new h(m.row,u-2,m.row,u));this.session.replace(m,z);this.session.selection.moveToPosition(m.end)}}};this.toLowerCase=function(){var m=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();
	var u=this.getSelectionRange(),z=this.session.getTextRange(u);this.session.replace(u,z.toLowerCase());this.selection.setSelectionRange(m)};this.toUpperCase=function(){var m=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var u=this.getSelectionRange(),z=this.session.getTextRange(u);this.session.replace(u,z.toUpperCase());this.selection.setSelectionRange(m)};this.indent=function(){var m=this.session,u=this.getSelectionRange();if(u.start.row<u.end.row)u=this.$getSelectedRows(),
	m.indentRows(u.first,u.last,"\t");else{if(u.start.column<u.end.column){var z=m.getTextRange(u);if(!/^\s+$/.test(z)){u=this.$getSelectedRows();m.indentRows(u.first,u.last,"\t");return}}z=m.getLine(u.start.row);var B=u.start,D=m.getTabSize();m=m.documentToScreenColumn(B.row,B.column);if(this.session.getUseSoftTabs())u=f.stringRepeat(" ",D-m%D);else{for(m%=D;" "==z[u.start.column-1]&&m;)u.start.column--,m--;this.selection.setSelectionRange(u);u="\t"}return this.insert(u)}};this.blockIndent=function(){var m=
	this.$getSelectedRows();this.session.indentRows(m.first,m.last,"\t")};this.blockOutdent=function(){var m=this.session.getSelection();this.session.outdentRows(m.getRange())};this.sortLines=function(){for(var m=this.$getSelectedRows(),u=this.session,z=[],B=m.first;B<=m.last;B++)z.push(u.getLine(B));z.sort(function(G,H){return G.toLowerCase()<H.toLowerCase()?-1:G.toLowerCase()>H.toLowerCase()?1:0});var D=new h(0,0,0,0);for(B=m.first;B<=m.last;B++){var E=u.getLine(B);D.start.row=B;D.end.row=B;D.end.column=
	E.length;u.replace(D,z[B-m.first])}};this.toggleCommentLines=function(){var m=this.session.getState(this.getCursorPosition().row),u=this.$getSelectedRows();this.session.getMode().toggleCommentLines(m,this.session,u.first,u.last)};this.toggleBlockComment=function(){var m=this.getCursorPosition(),u=this.session.getState(m.row),z=this.getSelectionRange();this.session.getMode().toggleBlockComment(u,this.session,z,m)};this.getNumberAt=function(m,u){var z=/[\-]?[0-9]+(?:\.[0-9]+)?/g;z.lastIndex=0;for(m=
	this.session.getLine(m);z.lastIndex<u;){var B=z.exec(m);if(B.index<=u&&B.index+B[0].length>=u)return{value:B[0],start:B.index,end:B.index+B[0].length}}return null};this.modifyNumber=function(m){var u=this.selection.getCursor().row,z=this.selection.getCursor().column,B=new h(u,z-1,u,z);B=this.session.getTextRange(B);if(!isNaN(parseFloat(B))&&isFinite(B)){if(B=this.getNumberAt(u,z)){var D=0<=B.value.indexOf(".")?B.start+B.value.indexOf(".")+1:B.end,E=B.start+B.value.length-D,G=parseFloat(B.value);G*=
	Math.pow(10,E);m=D!==B.end&&z<D?m*Math.pow(10,B.end-z-1):m*Math.pow(10,B.end-z);G=(G+m)/Math.pow(10,E);m=G.toFixed(E);D=new h(u,B.start,u,B.end);this.session.replace(D,m);this.moveCursorTo(u,Math.max(B.start+1,z+m.length-B.value.length))}}else this.toggleWord()};this.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up",
	"down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]];this.toggleWord=function(){var m=this.selection.getCursor().row,u=this.selection.getCursor().column;this.selection.selectWord();var z=this.getSelectedText(),B=this.selection.getWordRange().start.column,D=z.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g,"$1 ").split(/\s/),E=u-B-1;0>E&&(E=0);var G=0,H=0,I=this;z.match(/[A-Za-z0-9_]+/)&&D.forEach(function(P,
	U){H=G+P.length;E>=G&&E<=H&&(z=P,I.selection.clearSelection(),I.moveCursorTo(m,G+B),I.selection.selectTo(m,H+B));G=H});u=this.$toggleWordPairs;var F;for(D=0;D<u.length;D++)for(var L=u[D],M=0;1>=M;M++){var N=+!M;(F=z.match(new RegExp("^\\s?_?("+f.escapeRegExp(L[M])+")\\s?$","i")))&&z.match(new RegExp("([_]|^|\\s)("+f.escapeRegExp(F[1])+")($|\\s)","g"))&&(F=z.replace(new RegExp(f.escapeRegExp(L[M]),"i"),function(P){var U=L[N];P.toUpperCase()==P?U=U.toUpperCase():P.charAt(0).toUpperCase()==P.charAt(0)&&
	(U=U.substr(0,0)+L[N].charAt(0).toUpperCase()+U.substr(1));return U}),this.insert(F),F="")}};this.removeLines=function(){var m=this.$getSelectedRows();this.session.removeFullLines(m.first,m.last);this.clearSelection()};this.duplicateSelection=function(){var m=this.selection,u=this.session,z=m.getRange(),B=m.isBackwards();if(z.isEmpty())m=z.start.row,u.duplicateLines(m,m);else{var D=B?z.start:z.end;u=u.insert(D,u.getTextRange(z),!1);z.start=D;z.end=u;m.setSelectionRange(z,B)}};this.moveLinesDown=function(){this.$moveLines(1,
	!1)};this.moveLinesUp=function(){this.$moveLines(-1,!1)};this.moveText=function(m,u,z){return this.session.moveText(m,u,z)};this.copyLinesUp=function(){this.$moveLines(-1,!0)};this.copyLinesDown=function(){this.$moveLines(1,!0)};this.$moveLines=function(m,u){var z=this.selection;if(!z.inMultiSelectMode||this.inVirtualSelectionMode){var B=z.toOrientedRange();var D=this.$getSelectedRows(B);var E=this.session.$moveLines(D.first,D.last,u?0:m);u&&-1==m&&(E=0);B.moveBy(E,0);z.fromOrientedRange(B)}else{B=
	z.rangeList.ranges;z.rangeList.detach(this.session);this.inVirtualSelectionMode=!0;var G=0;E=0;for(var H=B.length,I=0;I<H;I++){var F=I;B[I].moveBy(G,0);D=this.$getSelectedRows(B[I]);G=D.first;for(D=D.last;++I<H;){E&&B[I].moveBy(E,0);var L=this.$getSelectedRows(B[I]);if(u&&L.first!=D)break;else if(!u&&L.first>D+1)break;D=L.last}I--;G=this.session.$moveLines(G,D,u?0:m);for(u&&-1==m&&(F=I+1);F<=I;)B[F].moveBy(G,0),F++;u||(G=0);E+=G}z.fromOrientedRange(z.ranges[0]);z.rangeList.attach(this.session);this.inVirtualSelectionMode=
	!1}};this.$getSelectedRows=function(m){m=(m||this.getSelectionRange()).collapseRows();return{first:this.session.getRowFoldStart(m.start.row),last:this.session.getRowFoldEnd(m.end.row)}};this.onCompositionStart=function(m){this.renderer.showComposition(m)};this.onCompositionUpdate=function(m){this.renderer.setCompositionText(m)};this.onCompositionEnd=function(){this.renderer.hideComposition()};this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()};this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()};
	this.isRowVisible=function(m){return m>=this.getFirstVisibleRow()&&m<=this.getLastVisibleRow()};this.isRowFullyVisible=function(m){return m>=this.renderer.getFirstFullyVisibleRow()&&m<=this.renderer.getLastFullyVisibleRow()};this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1};this.$moveByPage=function(m,u){var z=this.renderer,B=this.renderer.layerConfig,D=m*Math.floor(B.height/B.lineHeight);!0===u?this.selection.$moveSelection(function(){this.moveCursorBy(D,
	0)}):!1===u&&(this.selection.moveCursorBy(D,0),this.selection.clearSelection());m=z.scrollTop;z.scrollBy(0,D*B.lineHeight);null!=u&&z.scrollCursorIntoView(null,.5);z.animateScrolling(m)};this.selectPageDown=function(){this.$moveByPage(1,!0)};this.selectPageUp=function(){this.$moveByPage(-1,!0)};this.gotoPageDown=function(){this.$moveByPage(1,!1)};this.gotoPageUp=function(){this.$moveByPage(-1,!1)};this.scrollPageDown=function(){this.$moveByPage(1)};this.scrollPageUp=function(){this.$moveByPage(-1)};
	this.scrollToRow=function(m){this.renderer.scrollToRow(m)};this.scrollToLine=function(m,u,z,B){this.renderer.scrollToLine(m,u,z,B)};this.centerSelection=function(){var m=this.getSelectionRange();this.renderer.alignCursor({row:Math.floor(m.start.row+(m.end.row-m.start.row)/2),column:Math.floor(m.start.column+(m.end.column-m.start.column)/2)},.5)};this.getCursorPosition=function(){return this.selection.getCursor()};this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())};
	this.getSelectionRange=function(){return this.selection.getRange()};this.selectAll=function(){this.selection.selectAll()};this.clearSelection=function(){this.selection.clearSelection()};this.moveCursorTo=function(m,u){this.selection.moveCursorTo(m,u)};this.moveCursorToPosition=function(m){this.selection.moveCursorToPosition(m)};this.jumpToMatching=function(m,u){var z=this.getCursorPosition(),B=new e(this.session,z.row,z.column),D=B.getCurrentToken(),E=D||B.stepForward();if(E){var G=!1,H={},I=z.column-
	E.start,F={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(E.value.match(/[{}()\[\]]/g))for(;I<E.value.length&&!G;I++){if(F[E.value[I]]){var L=F[E.value[I]]+"."+E.type.replace("rparen","lparen");isNaN(H[L])&&(H[L]=0);switch(E.value[I]){case "(":case "[":case "{":H[L]++;break;case ")":case "]":case "}":if(H[L]--,-1===H[L]){var M="bracket";G=!0}}}}else-1!==E.type.indexOf("tag-name")&&(isNaN(H[E.value])&&(H[E.value]=0),"<"===D.value?H[E.value]++:"</"===D.value&&H[E.value]--,-1===H[E.value]&&(M=
	"tag",G=!0));G||(D=E,E=B.stepForward(),I=0)}while(E&&!G);if(M){if("bracket"===M){var N=this.session.getBracketRange(z);if(!N){N=new h(B.getCurrentTokenRow(),B.getCurrentTokenColumn()+I-1,B.getCurrentTokenRow(),B.getCurrentTokenColumn()+I-1);var P=N.start;if(u||P.row===z.row&&2>Math.abs(P.column-z.column))N=this.session.getBracketRange(P)}}else if("tag"===M){if(E&&-1!==E.type.indexOf("tag-name"))M=E.value;else return;N=new h(B.getCurrentTokenRow(),B.getCurrentTokenColumn()-2,B.getCurrentTokenRow(),
	B.getCurrentTokenColumn()-2);if(0===N.compare(z.row,z.column)){G=!1;do if(E=D,D=B.stepBackward())-1!==D.type.indexOf("tag-close")&&N.setEnd(B.getCurrentTokenRow(),B.getCurrentTokenColumn()+1),E.value===M&&-1!==E.type.indexOf("tag-name")&&("<"===D.value?H[M]++:"</"===D.value&&H[M]--,0===H[M]&&(G=!0));while(D&&!G)}E&&E.type.indexOf("tag-name")&&(P=N.start,P.row==z.row&&2>Math.abs(P.column-z.column)&&(P=N.end))}(P=N&&N.cursor||P)&&(m?N&&u?this.selection.setRange(N):N&&N.isEqual(this.getSelectionRange())?
	this.clearSelection():this.selection.selectTo(P.row,P.column):this.selection.moveTo(P.row,P.column))}}};this.gotoLine=function(m,u,z){this.selection.clearSelection();this.session.unfold({row:m-1,column:u||0});this.exitMultiSelectMode&&this.exitMultiSelectMode();this.moveCursorTo(m-1,u||0);this.isRowFullyVisible(m-1)||this.scrollToLine(m-1,!0,z)};this.navigateTo=function(m,u){this.selection.moveTo(m,u)};this.navigateUp=function(m){if(this.selection.isMultiLine()&&!this.selection.isBackwards())return m=
	this.selection.anchor.getPosition(),this.moveCursorToPosition(m);this.selection.clearSelection();this.selection.moveCursorBy(-m||-1,0)};this.navigateDown=function(m){if(this.selection.isMultiLine()&&this.selection.isBackwards())return m=this.selection.anchor.getPosition(),this.moveCursorToPosition(m);this.selection.clearSelection();this.selection.moveCursorBy(m||1,0)};this.navigateLeft=function(m){if(this.selection.isEmpty())for(m=m||1;m--;)this.selection.moveCursorLeft();else m=this.getSelectionRange().start,
	this.moveCursorToPosition(m);this.clearSelection()};this.navigateRight=function(m){if(this.selection.isEmpty())for(m=m||1;m--;)this.selection.moveCursorRight();else m=this.getSelectionRange().end,this.moveCursorToPosition(m);this.clearSelection()};this.navigateLineStart=function(){this.selection.moveCursorLineStart();this.clearSelection()};this.navigateLineEnd=function(){this.selection.moveCursorLineEnd();this.clearSelection()};this.navigateFileEnd=function(){this.selection.moveCursorFileEnd();this.clearSelection()};
	this.navigateFileStart=function(){this.selection.moveCursorFileStart();this.clearSelection()};this.navigateWordRight=function(){this.selection.moveCursorWordRight();this.clearSelection()};this.navigateWordLeft=function(){this.selection.moveCursorWordLeft();this.clearSelection()};this.replace=function(m,u){u&&this.$search.set(u);u=this.$search.find(this.session);var z=0;if(!u)return z;this.$tryReplace(u,m)&&(z=1);this.selection.setSelectionRange(u);this.renderer.scrollSelectionIntoView(u.start,u.end);
	return z};this.replaceAll=function(m,u){u&&this.$search.set(u);u=this.$search.findAll(this.session);var z=0;if(!u.length)return z;var B=this.getSelectionRange();this.selection.moveTo(0,0);for(var D=u.length-1;0<=D;--D)this.$tryReplace(u[D],m)&&z++;this.selection.setSelectionRange(B);return z};this.$tryReplace=function(m,u){var z=this.session.getTextRange(m);u=this.$search.replace(z,u);return null!==u?(m.end=this.session.replace(m,u),m):null};this.getLastSearchOptions=function(){return this.$search.getOptions()};
	this.find=function(m,u,z){u||(u={});"string"==typeof m||m instanceof RegExp?u.needle=m:"object"==typeof m&&y.mixin(u,m);var B=this.selection.getRange();null==u.needle&&(m=this.session.getTextRange(B)||this.$search.$options.needle,m||(B=this.session.getWordRange(B.start.row,B.start.column),m=this.session.getTextRange(B)),this.$search.set({needle:m}));this.$search.set(u);u.start||this.$search.set({start:B});m=this.$search.find(this.session);if(u.preventScroll)return m;if(m)return this.revealRange(m,
	z),m;u.backwards?B.start=B.end:B.end=B.start;this.selection.setRange(B)};this.findNext=function(m,u){this.find({skipCurrent:!0,backwards:!1},m,u)};this.findPrevious=function(m,u){this.find(m,{skipCurrent:!0,backwards:!0},u)};this.revealRange=function(m,u){this.session.unfold(m);this.selection.setSelectionRange(m);var z=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(m.start,m.end,.5);!1!==u&&this.renderer.animateScrolling(z)};this.undo=function(){this.session.getUndoManager().undo(this.session);
	this.renderer.scrollCursorIntoView(null,.5)};this.redo=function(){this.session.getUndoManager().redo(this.session);this.renderer.scrollCursorIntoView(null,.5)};this.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach(function(m){m.destroy()}),this.$toDestroy=null);this.$mouseHandler&&this.$mouseHandler.destroy();this.renderer.destroy();this._signal("destroy",this);this.session&&this.session.destroy();this._$emitInputEvent&&this._$emitInputEvent.cancel();this.removeAllListeners()};this.setAutoScrollEditorIntoView=
	function(m){if(m){var u,z=this,B=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var D=this.$scrollAnchor;D.style.cssText="position:absolute";this.container.insertBefore(D,this.container.firstChild);var E=this.on("changeSelection",function(){B=!0}),G=this.renderer.on("beforeRender",function(){B&&(u=z.renderer.container.getBoundingClientRect())}),H=this.renderer.on("afterRender",function(){if(B&&u&&(z.isFocused()||z.searchBox&&z.searchBox.isFocused())){var I=z.renderer,F=
	I.$cursorLayer.$pixelPos;I=I.layerConfig;var L=F.top-I.offset;B=0<=F.top&&0>L+u.top?!0:F.top<I.height&&F.top+u.top+I.lineHeight>window.innerHeight?!1:null;null!=B&&(D.style.top=L+"px",D.style.left=F.left+"px",D.style.height=I.lineHeight+"px",D.scrollIntoView(B));B=u=null}});this.setAutoScrollEditorIntoView=function(I){I||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",E),this.renderer.off("afterRender",H),this.renderer.off("beforeRender",G))}}};this.$resetCursorStyle=function(){var m=
	this.$cursorStyle||"ace",u=this.renderer.$cursorLayer;u&&(u.setSmoothBlinking(/smooth/.test(m)),u.isBlinking=!this.$readOnly&&"wide"!=m,q.setCssClass(u.element,"ace_slim-cursors",/slim/.test(m)))};this.prompt=function(m,u,z){var B=this;k.loadModule("./ext/prompt",function(D){D.prompt(B,m,u,z)})}}).call(v.prototype);k.defineOptions(v.prototype,"editor",{selectionStyle:{set:function(m){this.onSelectionChange();this._signal("changeSelectionStyle",{data:m})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},
	initialValue:!0},highlightSelectedWord:{set:function(m){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(m){this.textInput.setReadOnly(m);this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(m){this.textInput.setCopyWithEmptySelection(m)},initialValue:!1},cursorStyle:{set:function(m){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},
	wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(m){this.setAutoScrollEditorIntoView(m)}},keyboardHandler:{set:function(m){this.setKeyboardHandler(m)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(m){this.session.setValue(m)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(m){this.setSession(m)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(m){this.renderer.$gutterLayer.setShowLineNumbers(m);
	this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);m&&this.$relativeLineNumbers?w.attach(this):w.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(m){this.$showLineNumbers&&m?w.attach(this):w.detach(this)}},placeholder:{set:function(m){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var u=this.session&&(this.renderer.$composition||this.getValue());u&&this.renderer.placeholderNode?(this.renderer.off("afterRender",this.$updatePlaceholder),q.removeCssClass(this.container,
	"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null):u||this.renderer.placeholderNode?!u&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||""):(this.renderer.on("afterRender",this.$updatePlaceholder),q.addCssClass(this.container,"ace_hasPlaceholder"),u=q.createElement("div"),u.className="ace_placeholder",u.textContent=this.$placeholder||"",this.renderer.placeholderNode=u,this.renderer.content.appendChild(this.renderer.placeholderNode))}.bind(this),
	this.on("input",this.$updatePlaceholder));this.$updatePlaceholder()}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",
	fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});
	var w={getText:function(m,u){return(Math.abs(m.selection.lead.row-u)||u+1+(9>u?"\u00b7":""))+""},getWidth:function(m,u,z){return Math.max(u.toString().length,(z.lastRow+1).toString().length,2)*z.characterWidth},update:function(m,u){u.renderer.$loop.schedule(u.renderer.CHANGE_GUTTER)},attach:function(m){m.renderer.$gutterLayer.$renderer=this;m.on("changeSelection",this.update);this.update(null,m)},detach:function(m){m.renderer.$gutterLayer.$renderer==this&&(m.renderer.$gutterLayer.$renderer=null);
	m.off("changeSelection",this.update);this.update(null,m)}};C.Editor=v});
	ace.define("ace/undomanager",["require","exports","module","ace/range"],function(A,C,J){function y(h){return{row:h.row,column:h.column}}function q(h){h=h||this;if(Array.isArray(h))return h.map(q).join("\n");var t="";h.action?(t="insert"==h.action?"+":"-",t+="["+h.lines+"]"):h.value&&(t=Array.isArray(h.value)?h.value.map(f).join("\n"):f(h.value));h.start&&(t+=f(h));if(h.id||h.rev)t+="\t("+(h.id||h.rev)+")";return t}function f(h){return h.start.row+":"+h.start.column+"=>"+h.end.row+":"+h.end.column}
	function c(h,t){var r="insert"==h.action,x="insert"==t.action;if(r&&x)if(0<=n(t.start,h.end))a(t,h,-1);else if(0>=n(t.start,h.start))a(h,t,1);else return null;else if(r&&!x)if(0<=n(t.start,h.end))a(t,h,-1);else if(0>=n(t.end,h.start))a(h,t,-1);else return null;else if(!r&&x)if(0<=n(t.start,h.start))a(t,h,1);else if(0>=n(t.start,h.start))a(h,t,1);else return null;else if(!r&&!x)if(0<=n(t.start,h.start))a(t,h,1);else if(0>=n(t.end,h.start))a(h,t,-1);else return null;return[t,h]}function a(h,t,r){b(h.start,
	t.start,t.end,r);b(h.end,t.start,t.end,r)}function b(h,t,r,x){h.row==(1==x?t:r).row&&(h.column+=x*(r.column-t.column));h.row+=x*(r.row-t.row)}function d(h,t){var r=h.lines,x=h.end;h.end=y(t);var k=h.end.row-h.start.row,e=r.splice(k,r.length);k=k?t.column:t.column-h.start.column;r.push(e[0].substring(0,k));e[0]=e[0].substr(k);return{start:y(t),end:x,lines:e,action:h.action}}function g(h,t){for(var r=0;r<t.length;r++)for(var x=t[r],k=0;k<x.length;k++){var e=h,p=x[k],v=p;p={start:y(v.start),end:y(v.end),
	action:v.action,lines:v.lines.slice()};for(v=e.length;v--;){for(var w=e[v],m=0;m<w.length;m++){var u;a:{var z=u=void 0,B=w[m],D="insert"==B.action,E="insert"==p.action;if(D&&E)0>n(B.start,p.start)?a(p,B,1):a(B,p,1);else if(D&&!E)0<=n(B.start,p.end)?a(B,p,-1):(0>=n(B.start,p.start)||a(B,l.fromPoints(p.start,B.start),-1),a(p,B,1));else if(!D&&E)0<=n(p.start,B.end)?a(p,B,-1):(0>=n(p.start,B.start)||a(p,l.fromPoints(B.start,p.start),-1),a(B,p,1));else if(!D&&!E)if(0<=n(p.start,B.end))a(p,B,-1);else if(0>=
	n(p.end,B.start))a(B,p,-1);else{0>n(B.start,p.start)&&(z=B,B=d(B,p.start));0<n(B.end,p.end)&&(u=d(B,p.end));b(p.end,B.start,B.end,-1);u&&!z&&(B.lines=u.lines,B.start=u.start,B.end=u.end,u=B);u=[p,z,u].filter(Boolean);break a}u=[p,B]}p=u[0];2!=u.length&&(u[2]?(w.splice(m+1,1,u[1],u[2]),m++):u[1]||(w.splice(m,1),m--))}w.length||e.splice(v,1)}}}J=function(){this.$maxRev=0;this.$fromUndo=!1;this.reset()};(function(){this.addSession=function(h){this.$session=h};this.add=function(h,t,r){if(!this.$fromUndo&&
	h!=this.$lastDelta){this.$keepRedoStack||(this.$redoStack.length=0);!1!==t&&this.lastDeltas||(this.lastDeltas=[],this.$undoStack.push(this.lastDeltas),h.id=this.$rev=++this.$maxRev);if("remove"==h.action||"insert"==h.action)this.$lastDelta=h;this.lastDeltas.push(h)}};this.addSelection=function(h,t){this.selections.push({value:h,rev:t||this.$rev})};this.startNewGroup=function(){this.lastDeltas=null;return this.$rev};this.markIgnored=function(h,t){null==t&&(t=this.$rev+1);for(var r=this.$undoStack,
	x=r.length;x--;){var k=r[x][0];if(k.id<=h)break;k.id<t&&(k.ignore=!0)}this.lastDeltas=null};this.getSelection=function(h,t){for(var r=this.selections,x=r.length;x--;){var k=r[x];if(k.rev<h)return t&&(k=r[x+1]),k}};this.getRevision=function(){return this.$rev};this.getDeltas=function(h,t){null==t&&(t=this.$rev+1);for(var r=this.$undoStack,x=null,k=0,e=r.length;e--;){var p=r[e][0];p.id<t&&!x&&(x=e+1);if(p.id<=h){k=e+1;break}}return r.slice(k,x)};this.getChangedRanges=function(h,t){};this.getChangedLines=
	function(h,t){};this.undo=function(h,t){this.lastDeltas=null;var r=this.$undoStack,x;a:{for(var k=x=r.length;k--;){var e=r[k];if(e&&!e[0].ignore){for(;k<x-1;){b:{e=r[k];for(var p=r[k+1],v=e.length;v--;)for(var w=0;w<p.length;w++)if(!c(e[v],p[w])){for(;v<e.length;){for(;w--;)c(p[w],e[v]);w=p.length;v++}e=[e,p];break b}e.selectionBefore=p.selectionBefore=e.selectionAfter=p.selectionAfter=null;e=[p,e]}r[k]=e[0];r[k+1]=e[1];k++}x=!0;break a}}x=void 0}if(x)return h||(h=this.$session),this.$redoStackBaseRev!==
	this.$rev&&this.$redoStack.length&&(this.$redoStack=[]),this.$fromUndo=!0,r=r.pop(),x=null,r&&(x=h.undoChanges(r,t),this.$redoStack.push(r),this.$syncRev()),this.$fromUndo=!1,x};this.redo=function(h,t){this.lastDeltas=null;h||(h=this.$session);this.$fromUndo=!0;if(this.$redoStackBaseRev!=this.$rev){var r=this.getDeltas(this.$redoStackBaseRev,this.$rev+1);g(this.$redoStack,r);this.$redoStackBaseRev=this.$rev;this.$redoStack.forEach(function(k){k[0].id=++this.$maxRev},this)}r=this.$redoStack.pop();
	var x=null;r&&(x=h.redoChanges(r,t),this.$undoStack.push(r),this.$syncRev());this.$fromUndo=!1;return x};this.$syncRev=function(){var h=this.$undoStack;this.$rev=this.$redoStackBaseRev=h=(h=h[h.length-1])&&h[0].id||0};this.reset=function(){this.$lastDelta=this.lastDeltas=null;this.$undoStack=[];this.$redoStack=[];this.$redoStackBaseRev=this.mark=this.$rev=0;this.selections=[]};this.canUndo=function(){return 0<this.$undoStack.length};this.canRedo=function(){return 0<this.$redoStack.length};this.bookmark=
	function(h){void 0==h&&(h=this.$rev);this.mark=h};this.isAtBookmark=function(){return this.$rev===this.mark};this.toJSON=function(){};this.fromJSON=function(){};this.hasUndo=this.canUndo;this.hasRedo=this.canRedo;this.isClean=this.isAtBookmark;this.markClean=this.bookmark;this.$prettyPrint=function(h){return h?q(h):q(this.$undoStack)+"\n---\n"+q(this.$redoStack)}}).call(J.prototype);var l=A("./range").Range,n=l.comparePoints;C.UndoManager=J});
	ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(A,C,J){var y=A("../lib/dom");A=function(q,f){this.element=q;this.canvasHeight=f||5E5;this.element.style.height=2*this.canvasHeight+"px";this.cells=[];this.cellCache=[];this.$offsetCoefficient=0};(function(){this.moveContainer=function(q){y.translate(this.element,0,-(q.firstRowScreen*q.lineHeight%this.canvasHeight)-q.offset*this.$offsetCoefficient)};this.pageChanged=function(q,f){return Math.floor(q.firstRowScreen*q.lineHeight/
	this.canvasHeight)!==Math.floor(f.firstRowScreen*f.lineHeight/this.canvasHeight)};this.computeLineTop=function(q,f,c){var a=Math.floor(f.firstRowScreen*f.lineHeight/this.canvasHeight);return c.documentToScreenRow(q,0)*f.lineHeight-a*this.canvasHeight};this.computeLineHeight=function(q,f,c){return f.lineHeight*c.getRowLineCount(q)};this.getLength=function(){return this.cells.length};this.get=function(q){return this.cells[q]};this.shift=function(){this.$cacheCell(this.cells.shift())};this.pop=function(){this.$cacheCell(this.cells.pop())};
	this.push=function(q){if(Array.isArray(q)){this.cells.push.apply(this.cells,q);for(var f=y.createFragment(this.element),c=0;c<q.length;c++)f.appendChild(q[c].element);this.element.appendChild(f)}else this.cells.push(q),this.element.appendChild(q.element)};this.unshift=function(q){if(Array.isArray(q)){this.cells.unshift.apply(this.cells,q);for(var f=y.createFragment(this.element),c=0;c<q.length;c++)f.appendChild(q[c].element);this.element.firstChild?this.element.insertBefore(f,this.element.firstChild):
	this.element.appendChild(f)}else this.cells.unshift(q),this.element.insertAdjacentElement("afterbegin",q.element)};this.last=function(){return this.cells.length?this.cells[this.cells.length-1]:null};this.$cacheCell=function(q){q&&(q.element.remove(),this.cellCache.push(q))};this.createCell=function(q,f,c,a){f=this.cellCache.pop();f||(f=y.createElement("div"),a&&a(f),this.element.appendChild(f),f={element:f,text:"",row:q});f.row=q;return f}}).call(A.prototype);C.Lines=A});
	ace.define("ace/layer/gutter","require exports module ace/lib/dom ace/lib/oop ace/lib/lang ace/lib/event_emitter ace/layer/lines".split(" "),function(A,C,J){function y(d){var g=document.createTextNode("");d.appendChild(g);g=q.createElement("span");d.appendChild(g);return d}var q=A("../lib/dom"),f=A("../lib/oop"),c=A("../lib/lang"),a=A("../lib/event_emitter").EventEmitter,b=A("./lines").Lines;A=function(d){this.element=q.createElement("div");this.element.className="ace_layer ace_gutter-layer";d.appendChild(this.element);
	this.setShowFoldWidgets(this.$showFoldWidgets);this.gutterWidth=0;this.$annotations=[];this.$updateAnnotations=this.$updateAnnotations.bind(this);this.$lines=new b(this.element);this.$lines.$offsetCoefficient=1};(function(){f.implement(this,a);this.setSession=function(d){this.session&&this.session.off("change",this.$updateAnnotations);if(this.session=d)d.on("change",this.$updateAnnotations)};this.addGutterDecoration=function(d,g){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration");
	this.session.addGutterDecoration(d,g)};this.removeGutterDecoration=function(d,g){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration");this.session.removeGutterDecoration(d,g)};this.setAnnotations=function(d){this.$annotations=[];for(var g=0;g<d.length;g++){var l=d[g],n=l.row,h=this.$annotations[n];h||(h=this.$annotations[n]={text:[]});n=(n=l.text)?c.escapeHTML(n):l.html||"";-1===h.text.indexOf(n)&&h.text.push(n);l=l.type;"error"==l?h.className=" ace_error":"warning"==
	l&&" ace_error"!=h.className?h.className=" ace_warning":"info"!=l||h.className||(h.className=" ace_info")}};this.$updateAnnotations=function(d){if(this.$annotations.length){var g=d.start.row,l=d.end.row-g;0!==l&&("remove"==d.action?this.$annotations.splice(g,l+1,null):(d=Array(l+1),d.unshift(g,1),this.$annotations.splice.apply(this.$annotations,d)))}};this.update=function(d){this.config=d;var g=this.session,l=d.firstRow,n=Math.min(d.lastRow+d.gutterOffset,g.getLength()-1);this.oldLastRow=n;this.config=
	d;this.$lines.moveContainer(d);this.$updateCursorRow();for(var h=g.getNextFoldLine(l),t=h?h.start.row:Infinity,r=-1,x=l;;){x>t&&(x=h.end.row+1,t=(h=g.getNextFoldLine(x,h))?h.start.row:Infinity);if(x>n){for(;this.$lines.getLength()>r+1;)this.$lines.pop();break}(l=this.$lines.get(++r))?l.row=x:(l=this.$lines.createCell(x,d,this.session,y),this.$lines.push(l));this.$renderCell(l,d,h,x);x++}this._signal("afterRender");this.$updateGutterWidth(d)};this.$updateGutterWidth=function(d){var g=this.session,
	l=g.gutterRenderer||this.$renderer,n=g.$firstLineNumber,h=this.$lines.last()?this.$lines.last().text:"";if(this.$fixedWidth||g.$useWrapMode)h=g.getLength()+n-1;d=l?l.getWidth(g,h,d):h.toString().length*d.characterWidth;g=this.$padding||this.$computePadding();d+=g.left+g.right;d===this.gutterWidth||isNaN(d)||(this.gutterWidth=d,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",d))};this.$updateCursorRow=function(){if(this.$highlightGutterLine){var d=
	this.session.selection.getCursor();this.$cursorRow!==d.row&&(this.$cursorRow=d.row)}};this.updateLineHighlight=function(){if(this.$highlightGutterLine){var d=this.session.selection.cursor.row;this.$cursorRow=d;if(!this.$cursorCell||this.$cursorCell.row!=d){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));d=this.$lines.cells;this.$cursorCell=null;for(var g=0;g<d.length;g++){var l=d[g];if(l.row>=this.$cursorRow){if(l.row>
	this.$cursorRow)if(l=this.session.getFoldLine(this.$cursorRow),0<g&&l&&l.start.row==d[g-1].row)l=d[g-1];else break;l.element.className="ace_gutter-active-line "+l.element.className;this.$cursorCell=l;break}}}}};this.scrollLines=function(d){var g=this.config;this.config=d;this.$updateCursorRow();if(this.$lines.pageChanged(g,d))return this.update(d);this.$lines.moveContainer(d);var l=Math.min(d.lastRow+d.gutterOffset,this.session.getLength()-1),n=this.oldLastRow;this.oldLastRow=l;if(!g||n<d.firstRow||
	l<g.firstRow)return this.update(d);if(g.firstRow<d.firstRow)for(var h=this.session.getFoldedRowCount(g.firstRow,d.firstRow-1);0<h;h--)this.$lines.shift();if(n>l)for(h=this.session.getFoldedRowCount(l+1,n);0<h;h--)this.$lines.pop();d.firstRow<g.firstRow&&this.$lines.unshift(this.$renderLines(d,d.firstRow,g.firstRow-1));l>n&&this.$lines.push(this.$renderLines(d,n+1,l));this.updateLineHighlight();this._signal("afterRender");this.$updateGutterWidth(d)};this.$renderLines=function(d,g,l){for(var n=[],h=
	this.session.getNextFoldLine(g),t=h?h.start.row:Infinity;;){g>t&&(g=h.end.row+1,t=(h=this.session.getNextFoldLine(g,h))?h.start.row:Infinity);if(g>l)break;var r=this.$lines.createCell(g,d,this.session,y);this.$renderCell(r,d,h,g);n.push(r);g++}return n};this.$renderCell=function(d,g,l,n){var h=d.element,t=this.session,r=h.childNodes[0],x=h.childNodes[1],k=t.$firstLineNumber,e=t.$breakpoints,p=t.$decorations,v=t.gutterRenderer||this.$renderer,w=this.$showFoldWidgets&&t.foldWidgets,m=l?l.start.row:
	Number.MAX_VALUE,u="ace_gutter-cell ";this.$highlightGutterLine&&(n==this.$cursorRow||l&&n<this.$cursorRow&&n>=m&&this.$cursorRow<=l.end.row)&&(u+="ace_gutter-active-line ",this.$cursorCell!=d&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=d));e[n]&&(u+=e[n]);p[n]&&(u+=p[n]);this.$annotations[n]&&(u+=this.$annotations[n].className);h.className!=u&&(h.className=u);if(w){var z=w[n];null==z&&(z=w[n]=t.getFoldWidget(n))}z?
	(u="ace_fold-widget ace_"+z,u="start"==z&&n==m&&n<l.end.row?u+" ace_closed":u+" ace_open",x.className!=u&&(x.className=u),q.setStyle(x.style,"height",g.lineHeight+"px"),q.setStyle(x.style,"display","inline-block")):x&&q.setStyle(x.style,"display","none");l=(v?v.getText(t,n):n+k).toString();l!==r.data&&(r.data=l);q.setStyle(d.element.style,"height",this.$lines.computeLineHeight(n,g,t)+"px");q.setStyle(d.element.style,"top",this.$lines.computeLineTop(n,g,t)+"px");d.text=l;return d};this.$fixedWidth=
	!1;this.$highlightGutterLine=!0;this.$renderer="";this.setHighlightGutterLine=function(d){this.$highlightGutterLine=d};this.$showLineNumbers=!0;this.$renderer="";this.setShowLineNumbers=function(d){this.$renderer=!d&&{getWidth:function(){return 0},getText:function(){return""}}};this.getShowLineNumbers=function(){return this.$showLineNumbers};this.$showFoldWidgets=!0;this.setShowFoldWidgets=function(d){d?q.addCssClass(this.element,"ace_folding-enabled"):q.removeCssClass(this.element,"ace_folding-enabled");
	this.$showFoldWidgets=d;this.$padding=null};this.getShowFoldWidgets=function(){return this.$showFoldWidgets};this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var d=q.computedStyle(this.element.firstChild);this.$padding={};this.$padding.left=(parseInt(d.borderLeftWidth)||0)+(parseInt(d.paddingLeft)||0)+1;this.$padding.right=(parseInt(d.borderRightWidth)||0)+(parseInt(d.paddingRight)||0);return this.$padding};this.getRegion=function(d){var g=this.$padding||this.$computePadding(),
	l=this.element.getBoundingClientRect();if(d.x<g.left+l.left)return"markers";if(this.$showFoldWidgets&&d.x>l.right-g.right)return"foldWidgets"}}).call(A.prototype);C.Gutter=A});
	ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(A,C,J){var y=A("../range").Range,q=A("../lib/dom");A=function(f){this.element=q.createElement("div");this.element.className="ace_layer ace_marker-layer";f.appendChild(this.element)};(function(){this.$padding=0;this.setPadding=function(f){this.$padding=f};this.setSession=function(f){this.session=f};this.setMarkers=function(f){this.markers=f};this.elt=function(f,c){var a=-1!=this.i&&this.element.childNodes[this.i];
	a?this.i++:(a=document.createElement("div"),this.element.appendChild(a),this.i=-1);a.style.cssText=c;a.className=f};this.update=function(f){if(f){this.config=f;this.i=0;for(var c in this.markers){var a=this.markers[c];if(a.range){var b=a.range.clipRows(f.firstRow,f.lastRow);if(!b.isEmpty())if(b=b.toScreenRange(this.session),a.renderer){var d=this.$getTop(b.start.row,f);a.renderer(void 0,b,this.$padding+b.start.column*f.characterWidth,d,f)}else"fullLine"==a.type?this.drawFullLineMarker(void 0,b,a.clazz,
	f):"screenLine"==a.type?this.drawScreenLineMarker(void 0,b,a.clazz,f):b.isMultiLine()?"text"==a.type?this.drawTextMarker(void 0,b,a.clazz,f):this.drawMultiLineMarker(void 0,b,a.clazz,f):this.drawSingleLineMarker(void 0,b,a.clazz+" ace_start ace_br15",f)}else a.update(void 0,this,this.session,f)}if(-1!=this.i)for(;this.i<this.element.childElementCount;)this.element.removeChild(this.element.lastChild)}};this.$getTop=function(f,c){return(f-c.firstRowScreen)*c.lineHeight};this.drawTextMarker=function(f,
	c,a,b,d){for(var g=this.session,l=c.start.row,n=c.end.row,h=l,t,r=0,x=g.getScreenLastRowColumn(h),k=new y(h,c.start.column,h,r);h<=n;h++)k.start.row=k.end.row=h,k.start.column=h==l?c.start.column:g.getRowWrapIndent(h),k.end.column=x,t=r,r=x,x=h+1<n?g.getScreenLastRowColumn(h+1):h==n?0:c.end.column,this.drawSingleLineMarker(f,k,a+(h==l?" ace_start":"")+" ace_br"+((h==l||h==l+1&&c.start.column?1:0)|(t<r?2:0)|(r>x?4:0)|(h==n?8:0)),b,h==n?0:1,d)};this.drawMultiLineMarker=function(f,c,a,b,d){var g=this.$padding,
	l=b.lineHeight,n=this.$getTop(c.start.row,b),h=g+c.start.column*b.characterWidth;d=d||"";this.session.$bidiHandler.isBidiRow(c.start.row)?(n=c.clone(),n.end.row=n.start.row,n.end.column=this.session.getLine(n.start.row).length,this.drawBidiSingleLineMarker(f,n,a+" ace_br1 ace_start",b,null,d)):this.elt(a+" ace_br1 ace_start","height:"+l+"px;right:0;top:"+n+"px;left:"+h+"px;"+(d||""));this.session.$bidiHandler.isBidiRow(c.end.row)?(n=c.clone(),n.start.row=n.end.row,n.start.column=0,this.drawBidiSingleLineMarker(f,
	n,a+" ace_br12",b,null,d)):(n=this.$getTop(c.end.row,b),this.elt(a+" ace_br12","height:"+l+"px;width:"+c.end.column*b.characterWidth+"px;top:"+n+"px;left:"+g+"px;"+(d||"")));l=(c.end.row-c.start.row-1)*b.lineHeight;0>=l||(n=this.$getTop(c.start.row+1,b),f=(c.start.column?1:0)|(c.end.column?0:8),this.elt(a+(f?" ace_br"+f:""),"height:"+l+"px;right:0;top:"+n+"px;left:"+g+"px;"+(d||"")))};this.drawSingleLineMarker=function(f,c,a,b,d,g){if(this.session.$bidiHandler.isBidiRow(c.start.row))return this.drawBidiSingleLineMarker(f,
	c,a,b,d,g);f=b.lineHeight;d=(c.end.column+(d||0)-c.start.column)*b.characterWidth;var l=this.$getTop(c.start.row,b);this.elt(a,"height:"+f+"px;width:"+d+"px;top:"+l+"px;left:"+(this.$padding+c.start.column*b.characterWidth)+"px;"+(g||""))};this.drawBidiSingleLineMarker=function(f,c,a,b,d,g){var l=b.lineHeight,n=this.$getTop(c.start.row,b),h=this.$padding;this.session.$bidiHandler.getSelections(c.start.column,c.end.column).forEach(function(t){this.elt(a,"height:"+l+"px;width:"+t.width+(d||0)+"px;top:"+
	n+"px;left:"+(h+t.left)+"px;"+(g||""))},this)};this.drawFullLineMarker=function(f,c,a,b,d){f=this.$getTop(c.start.row,b);var g=b.lineHeight;c.start.row!=c.end.row&&(g+=this.$getTop(c.end.row,b)-f);this.elt(a,"height:"+g+"px;top:"+f+"px;left:0;right:0;"+(d||""))};this.drawScreenLineMarker=function(f,c,a,b,d){f=this.$getTop(c.start.row,b);this.elt(a,"height:"+b.lineHeight+"px;top:"+f+"px;left:0;right:0;"+(d||""))}}).call(A.prototype);C.Marker=A});
	ace.define("ace/layer/text","require exports module ace/lib/oop ace/lib/dom ace/lib/lang ace/layer/lines ace/lib/event_emitter".split(" "),function(A,C,J){var y=A("../lib/oop"),q=A("../lib/dom"),f=A("../lib/lang"),c=A("./lines").Lines,a=A("../lib/event_emitter").EventEmitter;A=function(b){this.dom=q;this.element=this.dom.createElement("div");this.element.className="ace_layer ace_text-layer";b.appendChild(this.element);this.$updateEolChar=this.$updateEolChar.bind(this);this.$lines=new c(this.element)};
	(function(){y.implement(this,a);this.EOF_CHAR="\u00b6";this.EOL_CHAR_LF="\u00ac";this.EOL_CHAR_CRLF="\u00a4";this.EOL_CHAR=this.EOL_CHAR_LF;this.TAB_CHAR="\u2014";this.SPACE_CHAR="\u00b7";this.$padding=0;this.MAX_LINE_LENGTH=1E4;this.$updateEolChar=function(){var b=this.session.doc;b="\n"==b.getNewLineCharacter()&&"windows"!=b.getNewLineMode()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=b)return this.EOL_CHAR=b,!0};this.setPadding=function(b){this.$padding=b;this.element.style.margin="0 "+
	b+"px"};this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0};this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0};this.$setFontMetrics=function(b){this.$fontMetrics=b;this.$fontMetrics.on("changeCharacterSize",function(d){this._signal("changeCharacterSize",d)}.bind(this));this.$pollSizeChanges()};this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()};this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=
	this.$fontMetrics.$pollSizeChanges()};this.setSession=function(b){(this.session=b)&&this.$computeTabString()};this.showEOL=this.showTabs=this.showSpaces=this.showInvisibles=!1;this.setShowInvisibles=function(b){if(this.showInvisibles==b)return!1;this.showInvisibles=b;"string"==typeof b?(this.showSpaces=/tab/i.test(b),this.showTabs=/space/i.test(b),this.showEOL=/eol/i.test(b)):this.showSpaces=this.showTabs=this.showEOL=b;this.$computeTabString();return!0};this.displayIndentGuides=!0;this.setDisplayIndentGuides=
	function(b){if(this.displayIndentGuides==b)return!1;this.displayIndentGuides=b;this.$computeTabString();return!0};this.$tabStrings=[];this.onChangeTabSize=this.$computeTabString=function(){var b=this.session.getTabSize();this.tabSize=b;for(var d=this.$tabStrings=[0],g=1;g<b+1;g++)if(this.showTabs){var l=this.dom.createElement("span");l.className="ace_invisible ace_invisible_tab";l.textContent=f.stringRepeat(this.TAB_CHAR,g);d.push(l)}else d.push(this.dom.createTextNode(f.stringRepeat(" ",g),this.element));
	if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;b=this.showSpaces?" ace_invisible ace_invisible_space":"";d=this.showSpaces?f.stringRepeat(this.SPACE_CHAR,this.tabSize):f.stringRepeat(" ",this.tabSize);g=this.showTabs?" ace_invisible ace_invisible_tab":"";var n=this.showTabs?f.stringRepeat(this.TAB_CHAR,this.tabSize):d;l=this.dom.createElement("span");l.className="ace_indent-guide"+b;l.textContent=d;this.$tabStrings[" "]=l;l=this.dom.createElement("span");l.className="ace_indent-guide"+
	g;l.textContent=n;this.$tabStrings["\t"]=l}};this.updateLines=function(b,d,g){if(this.config.lastRow!=b.lastRow||this.config.firstRow!=b.firstRow)return this.update(b);this.config=b;var l=Math.max(d,b.firstRow);d=Math.min(g,b.lastRow);var n=this.element.childNodes;g=0;for(var h=b.firstRow;h<l;h++){var t=this.session.getFoldLine(h);if(t)if(t.containsRow(l)){l=t.start.row;break}else h=t.end.row;g++}var r=!1;h=l;for(l=(t=this.session.getNextFoldLine(h))?t.start.row:Infinity;;){h>l&&(h=t.end.row+1,l=
	(t=this.session.getNextFoldLine(h,t))?t.start.row:Infinity);if(h>d)break;var x=n[g++];if(x){this.dom.removeChildren(x);this.$renderLine(x,h,h==l?t:!1);r&&(x.style.top=this.$lines.computeLineTop(h,b,this.session)+"px");var k=b.lineHeight*this.session.getRowLength(h)+"px";x.style.height!=k&&(r=!0,x.style.height=k)}h++}if(r)for(;g<this.$lines.cells.length;)d=this.$lines.cells[g++],d.element.style.top=this.$lines.computeLineTop(d.row,b,this.session)+"px"};this.scrollLines=function(b){var d=this.config;
	this.config=b;if(this.$lines.pageChanged(d,b))return this.update(b);this.$lines.moveContainer(b);var g=b.lastRow,l=d?d.lastRow:-1;if(!d||l<b.firstRow||g<d.firstRow||!d||d.lastRow<b.firstRow||b.lastRow<d.firstRow)return this.update(b);if(d.firstRow<b.firstRow)for(g=this.session.getFoldedRowCount(d.firstRow,b.firstRow-1);0<g;g--)this.$lines.shift();if(d.lastRow>b.lastRow)for(g=this.session.getFoldedRowCount(b.lastRow+1,d.lastRow);0<g;g--)this.$lines.pop();b.firstRow<d.firstRow&&this.$lines.unshift(this.$renderLinesFragment(b,
	b.firstRow,d.firstRow-1));b.lastRow>d.lastRow&&this.$lines.push(this.$renderLinesFragment(b,d.lastRow+1,b.lastRow))};this.$renderLinesFragment=function(b,d,g){for(var l=[],n=this.session.getNextFoldLine(d),h=n?n.start.row:Infinity;;){d>h&&(d=n.end.row+1,h=(n=this.session.getNextFoldLine(d,n))?n.start.row:Infinity);if(d>g)break;var t=this.$lines.createCell(d,b,this.session),r=t.element;this.dom.removeChildren(r);q.setStyle(r.style,"height",this.$lines.computeLineHeight(d,b,this.session)+"px");q.setStyle(r.style,
	"top",this.$lines.computeLineTop(d,b,this.session)+"px");this.$renderLine(r,d,d==h?n:!1);this.$useLineGroups()?r.className="ace_line_group":r.className="ace_line";l.push(t);d++}return l};this.update=function(b){this.$lines.moveContainer(b);this.config=b;for(var d=b.firstRow,g=b.lastRow,l=this.$lines;l.getLength();)l.pop();l.push(this.$renderLinesFragment(b,d,g))};this.$textToken={text:!0,rparen:!0,lparen:!0};this.$renderToken=function(b,d,g,l){var n=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,
	h=n;n=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u1100-\uFFFF])/g;
	for(var t=this.dom.createFragment(this.element),r,x=0;r=n.exec(l);){var k=r[1],e=r[2],p=r[3],v=r[4],w=r[5];if(this.showSpaces||!e){var m=x!=r.index?l.slice(x,r.index):"";x=r.index+r[0].length;m&&t.appendChild(this.dom.createTextNode(m,this.element));k?(w=this.session.getScreenTabSize(d+r.index),t.appendChild(this.$tabStrings[w].cloneNode(!0)),d+=w-1):e?this.showSpaces?(r=this.dom.createElement("span"),r.className="ace_invisible ace_invisible_space",r.textContent=f.stringRepeat(this.SPACE_CHAR,e.length),
	t.appendChild(r)):t.appendChild(this.com.createTextNode(e,this.element)):p?(r=this.dom.createElement("span"),r.className="ace_invisible ace_invisible_space ace_invalid",r.textContent=f.stringRepeat(this.SPACE_CHAR,p.length),t.appendChild(r)):v?(d+=1,r=this.dom.createElement("span"),r.style.width=2*this.config.characterWidth+"px",r.className=this.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",r.textContent=this.showSpaces?this.SPACE_CHAR:v,t.appendChild(r)):w&&(d+=1,r=this.dom.createElement("span"),
	e=2,w.match(h)||(e=1),r.style.width=this.config.characterWidth*e+"px",r.className="ace_cjk",r.textContent=w,t.appendChild(r))}}t.appendChild(this.dom.createTextNode(x?l.slice(x):l,this.element));this.$textToken[g.type]?b.appendChild(t):(n="ace_"+g.type.replace(/\./g," ace_"),r=this.dom.createElement("span"),"fold"==g.type&&(r.style.width=g.value.length*this.config.characterWidth+"px"),r.className=n,r.appendChild(t),b.appendChild(r));return d+l.length};this.renderIndentGuide=function(b,d,g){var l=
	d.search(this.$indentGuideRe);if(0>=l||l>=g)return d;if(" "==d[0]){l-=l%this.tabSize;g=l/this.tabSize;for(var n=0;n<g;n++)b.appendChild(this.$tabStrings[" "].cloneNode(!0));return d.substr(l)}if("\t"==d[0]){for(n=0;n<l;n++)b.appendChild(this.$tabStrings["\t"].cloneNode(!0));return d.substr(l)}return d};this.$createLineElement=function(b){b=this.dom.createElement("div");b.className="ace_line";b.style.height=this.config.lineHeight+"px";return b};this.$renderWrappedLine=function(b,d,g){var l=0,n=0,h=
	g[0],t=0,r=this.$createLineElement();b.appendChild(r);for(var x=0;x<d.length;x++){var k=d[x],e=k.value;if(0==x&&this.displayIndentGuides){l=e.length;e=this.renderIndentGuide(r,e,h);if(!e)continue;l-=e.length}if(l+e.length<h)t=this.$renderToken(r,t,k,e),l+=e.length;else{for(;l+e.length>=h;)this.$renderToken(r,t,k,e.substring(0,h-l)),e=e.substring(h-l),l=h,r=this.$createLineElement(),b.appendChild(r),r.appendChild(this.dom.createTextNode(f.stringRepeat("\u00a0",g.indent),this.element)),n++,t=0,h=g[n]||
	Number.MAX_VALUE;0!=e.length&&(l+=e.length,t=this.$renderToken(r,t,k,e))}}g[g.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(r,t,null,"",!0)};this.$renderSimpleLine=function(b,d){var g=0,l=d[0],n=l.value;this.displayIndentGuides&&(n=this.renderIndentGuide(b,n));n&&(g=this.$renderToken(b,g,l,n));for(var h=1;h<d.length;h++){l=d[h];n=l.value;if(g+n.length>this.MAX_LINE_LENGTH)return this.$renderOverflowMessage(b,g,l,n);g=this.$renderToken(b,g,l,n)}};this.$renderOverflowMessage=function(b,
	d,g,l,n){g&&this.$renderToken(b,d,g,l.slice(0,this.MAX_LINE_LENGTH-d));d=this.dom.createElement("span");d.className="ace_inline_button ace_keyword ace_toggle_wrap";d.textContent=n?"<hide>":"<click to see more...>";b.appendChild(d)};this.$renderLine=function(b,d,g){g||0==g||(g=this.session.getFoldLine(d));var l=g?this.$getFoldLineTokens(d,g):this.session.getTokens(d),n=b;l.length?(n=this.session.getRowSplitData(d))&&n.length?(this.$renderWrappedLine(b,l,n),n=b.lastChild):(n=b,this.$useLineGroups()&&
	(n=this.$createLineElement(),b.appendChild(n)),this.$renderSimpleLine(n,l)):this.$useLineGroups()&&(n=this.$createLineElement(),b.appendChild(n));this.showEOL&&n&&(g&&(d=g.end.row),b=this.dom.createElement("span"),b.className="ace_invisible ace_invisible_eol",b.textContent=d==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,n.appendChild(b))};this.$getFoldLineTokens=function(b,d){var g=this.session,l=[],n=g.getTokens(b);d.walk(function(h,t,r,x,k){if(null!=h)l.push({type:"fold",value:h});else if(k&&
	(n=g.getTokens(t)),n.length)a:{h=n;for(k=t=0;k+h[t].value.length<x;)if(k+=h[t].value.length,t++,t==h.length)break a;if(k!=x){var e=h[t].value.substring(x-k);e.length>r-x&&(e=e.substring(0,r-x));l.push({type:h[t].type,value:e});k=x+e.length;t+=1}for(;k<r&&t<h.length;)e=h[t].value,e.length+k>r?l.push({type:h[t].type,value:e.substring(0,r-k)}):l.push(h[t]),k+=e.length,t+=1}},d.end.row,this.session.getLine(d.end.row).length);return l};this.$useLineGroups=function(){return this.session.getUseWrapMode()};
	this.destroy=function(){}}).call(A.prototype);C.Text=A});
	ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(A,C,J){var y=A("../lib/dom");A=function(q){this.element=y.createElement("div");this.element.className="ace_layer ace_cursor-layer";q.appendChild(this.element);this.isVisible=!1;this.isBlinking=!0;this.blinkInterval=1E3;this.smoothBlinking=!1;this.cursors=[];this.cursor=this.addCursor();y.addCssClass(this.element,"ace_hidden-cursors");this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=
	function(q){for(var f=this.cursors,c=f.length;c--;)y.setStyle(f[c].style,"opacity",q?"":"0")};this.$startCssAnimation=function(){for(var q=this.cursors,f=q.length;f--;)q[f].style.animationDuration=this.blinkInterval+"ms";setTimeout(function(){y.addCssClass(this.element,"ace_animate-blinking")}.bind(this))};this.$stopCssAnimation=function(){y.removeCssClass(this.element,"ace_animate-blinking")};this.$padding=0;this.setPadding=function(q){this.$padding=q};this.setSession=function(q){this.session=q};
	this.setBlinking=function(q){q!=this.isBlinking&&(this.isBlinking=q,this.restartTimer())};this.setBlinkInterval=function(q){q!=this.blinkInterval&&(this.blinkInterval=q,this.restartTimer())};this.setSmoothBlinking=function(q){q!=this.smoothBlinking&&(this.smoothBlinking=q,y.setCssClass(this.element,"ace_smooth-blinking",q),this.$updateCursors(!0),this.restartTimer())};this.addCursor=function(){var q=y.createElement("div");q.className="ace_cursor";this.element.appendChild(q);this.cursors.push(q);return q};
	this.removeCursor=function(){if(1<this.cursors.length){var q=this.cursors.pop();q.parentNode.removeChild(q);return q}};this.hideCursor=function(){this.isVisible=!1;y.addCssClass(this.element,"ace_hidden-cursors");this.restartTimer()};this.showCursor=function(){this.isVisible=!0;y.removeCssClass(this.element,"ace_hidden-cursors");this.restartTimer()};this.restartTimer=function(){var q=this.$updateCursors;clearInterval(this.intervalId);clearTimeout(this.timeoutId);this.$stopCssAnimation();this.smoothBlinking&&
	y.removeCssClass(this.element,"ace_smooth-blinking");q(!0);if(this.isBlinking&&this.blinkInterval&&this.isVisible)if(this.smoothBlinking&&setTimeout(function(){y.addCssClass(this.element,"ace_smooth-blinking")}.bind(this)),y.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var f=function(){this.timeoutId=setTimeout(function(){q(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){q(!0);f()},this.blinkInterval);f()}else this.$stopCssAnimation()};this.getPixelPosition=function(q,
	f){if(!this.config||!this.session)return{left:0,top:0};q||(q=this.session.selection.getCursor());var c=this.session.documentToScreenPosition(q);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(c.row,q.row)?this.session.$bidiHandler.getPosLeft(c.column):c.column*this.config.characterWidth),top:(c.row-(f?this.config.firstRowScreen:0))*this.config.lineHeight}};this.isCursorInView=function(q,f){return 0<=q.top&&q.top<f.maxHeight};this.update=function(q){this.config=q;var f=this.session.$selectionMarkers,
	c=0;if(void 0===f||0===f.length)f=[{cursor:null}];var a=0;for(var b=f.length;a<b;a++){var d=this.getPixelPosition(f[a].cursor,!0);if(!((d.top>q.height+q.offset||0>d.top)&&1<a)){var g=this.cursors[c++]||this.addCursor(),l=g.style;this.drawCursor?this.drawCursor(g,d,q,f[a],this.session):this.isCursorInView(d,q)?(y.setStyle(l,"display","block"),y.translate(g,d.left,d.top),y.setStyle(l,"width",Math.round(q.characterWidth)+"px"),y.setStyle(l,"height",q.lineHeight+"px")):y.setStyle(l,"display","none")}}for(;this.cursors.length>
	c;)this.removeCursor();q=this.session.getOverwrite();this.$setOverwrite(q);this.$pixelPos=d;this.restartTimer()};this.drawCursor=null;this.$setOverwrite=function(q){q!=this.overwrite&&((this.overwrite=q)?y.addCssClass(this.element,"ace_overwrite-cursors"):y.removeCssClass(this.element,"ace_overwrite-cursors"))};this.destroy=function(){clearInterval(this.intervalId);clearTimeout(this.timeoutId)}}).call(A.prototype);C.Cursor=A});
	ace.define("ace/scrollbar","require exports module ace/lib/oop ace/lib/dom ace/lib/event ace/lib/event_emitter".split(" "),function(A,C,J){var y=A("./lib/oop"),q=A("./lib/dom"),f=A("./lib/event"),c=A("./lib/event_emitter").EventEmitter,a=function(b){this.element=q.createElement("div");this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix;this.inner=q.createElement("div");this.inner.className="ace_scrollbar-inner";this.inner.textContent="\u00a0";this.element.appendChild(this.inner);
	b.appendChild(this.element);this.setVisible(!1);this.skipEvent=!1;f.addListener(this.element,"scroll",this.onScroll.bind(this));f.addListener(this.element,"mousedown",f.preventDefault)};(function(){y.implement(this,c);this.setVisible=function(b){this.element.style.display=b?"":"none";this.isVisible=b;this.coeff=1}}).call(a.prototype);A=function(b,d){a.call(this,b);this.scrollHeight=this.scrollTop=0;d.$scrollbarWidth=this.width=q.scrollbarWidth(b.ownerDocument);this.inner.style.width=this.element.style.width=
	(this.width||15)+5+"px";this.$minWidth=0};y.inherits(A,a);(function(){this.classSuffix="-v";this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(1!=this.coeff){var b=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-b)/(this.coeff-b)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1};this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)};this.setHeight=function(b){this.element.style.height=b+"px"};
	this.setInnerHeight=this.setScrollHeight=function(b){this.scrollHeight=b;32768<b?(this.coeff=32768/b,b=32768):1!=this.coeff&&(this.coeff=1);this.inner.style.height=b+"px"};this.setScrollTop=function(b){this.scrollTop!=b&&(this.skipEvent=!0,this.scrollTop=b,this.element.scrollTop=b*this.coeff)}}).call(A.prototype);J=function(b,d){a.call(this,b);this.scrollLeft=0;this.height=d.$scrollbarWidth;this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};y.inherits(J,a);(function(){this.classSuffix=
	"-h";this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft}));this.skipEvent=!1};this.getHeight=function(){return this.isVisible?this.height:0};this.setWidth=function(b){this.element.style.width=b+"px"};this.setInnerWidth=function(b){this.inner.style.width=b+"px"};this.setScrollWidth=function(b){this.inner.style.width=b+"px"};this.setScrollLeft=function(b){this.scrollLeft!=b&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=
	b)}}).call(J.prototype);C.ScrollBar=A;C.ScrollBarV=A;C.ScrollBarH=J;C.VScrollBar=A;C.HScrollBar=J});
	ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(A,C,J){var y=A("./lib/event");A=function(q,f){this.onRender=q;this.pending=!1;this.changes=0;this.$recursionLimit=2;this.window=f||window;var c=this;this._flush=function(a){c.pending=!1;if(a=c.changes)y.blockIdle(100),c.changes=0,c.onRender(a);c.changes?0>c.$recursionLimit--||c.schedule():c.$recursionLimit=2}};(function(){this.schedule=function(q){(this.changes|=q)&&!this.pending&&(y.nextFrame(this._flush),this.pending=
	!0)};this.clear=function(q){q=this.changes;this.changes=0;return q}}).call(A.prototype);C.RenderLoop=A});
	ace.define("ace/layer/font_metrics","require exports module ace/lib/oop ace/lib/dom ace/lib/lang ace/lib/event ace/lib/useragent ace/lib/event_emitter".split(" "),function(A,C,J){var y=A("../lib/oop"),q=A("../lib/dom"),f=A("../lib/lang"),c=A("../lib/event"),a=A("../lib/useragent"),b=A("../lib/event_emitter").EventEmitter,d="function"==typeof ResizeObserver;A=C.FontMetrics=function(g){this.el=q.createElement("div");this.$setMeasureNodeStyles(this.el.style,!0);this.$main=q.createElement("div");this.$setMeasureNodeStyles(this.$main.style);
	this.$measureNode=q.createElement("div");this.$setMeasureNodeStyles(this.$measureNode.style);this.el.appendChild(this.$main);this.el.appendChild(this.$measureNode);g.appendChild(this.el);this.$measureNode.textContent=f.stringRepeat("X",256);this.$characterSize={width:0,height:0};d?this.$addObserver():this.checkForSizeChanges()};(function(){y.implement(this,b);this.$characterSize={width:0,height:0};this.$setMeasureNodeStyles=function(g,l){g.width=g.height="auto";g.left=g.top="0px";g.visibility="hidden";
	g.position="absolute";g.whiteSpace="pre";8>a.isIE?g["font-family"]="inherit":g.font="inherit";g.overflow=l?"hidden":"visible"};this.checkForSizeChanges=function(g){void 0===g&&(g=this.$measureSizes());if(g&&(this.$characterSize.width!==g.width||this.$characterSize.height!==g.height)){this.$measureNode.style.fontWeight="bold";var l=this.$measureSizes();this.$measureNode.style.fontWeight="";this.$characterSize=g;this.charSizes=Object.create(null);this.allowBoldFonts=l&&l.width===g.width&&l.height===
	g.height;this._emit("changeCharacterSize",{data:g})}};this.$addObserver=function(){var g=this;this.$observer=new window.ResizeObserver(function(l){g.checkForSizeChanges()});this.$observer.observe(this.$measureNode)};this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var g=this;return this.$pollSizeChangesTimer=c.onIdle(function n(){g.checkForSizeChanges();c.onIdle(n,500)},500)};this.setPolling=function(g){g?this.$pollSizeChanges():this.$pollSizeChangesTimer&&
	(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)};this.$measureSizes=function(g){g={height:(g||this.$measureNode).clientHeight,width:(g||this.$measureNode).clientWidth/256};return 0===g.width||0===g.height?null:g};this.$measureCharWidth=function(g){this.$main.textContent=f.stringRepeat(g,256);return this.$main.getBoundingClientRect().width/256};this.getCharacterWidth=function(g){var l=this.charSizes[g];void 0===l&&(l=this.charSizes[g]=this.$measureCharWidth(g)/this.$characterSize.width);
	return l};this.destroy=function(){clearInterval(this.$pollSizeChangesTimer);this.$observer&&this.$observer.disconnect();this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)};this.$getZoom=function n(l){return l&&l.parentElement?(window.getComputedStyle(l).zoom||1)*n(l.parentElement):1};this.$initTransformMeasureNodes=function(){var l=function(n,h){return["div",{style:"position: absolute;top:"+n+"px;left:"+h+"px;"}]};this.els=q.buildDom([l(0,0),l(200,0),l(0,200),l(200,200)],this.el)};
	this.transformCoordinates=function(l,n){function h(m,u,z){var B=m[1]*u[0]-m[0]*u[1];return[(-u[1]*z[0]+u[0]*z[1])/B,(+m[1]*z[0]-m[0]*z[1])/B]}function t(m,u){return[m[0]-u[0],m[1]-u[1]]}function r(m,u){return[m[0]+u[0],m[1]+u[1]]}function x(m,u){return[m*u[0],m*u[1]]}function k(m){m=m.getBoundingClientRect();return[m.left,m.top]}if(l){var e=this.$getZoom(this.el);l=x(1/e,l)}this.els||this.$initTransformMeasureNodes();e=k(this.els[0]);var p=k(this.els[1]),v=k(this.els[2]),w=k(this.els[3]);w=h(t(w,
	p),t(w,v),t(r(p,v),r(w,e)));p=x(1+w[0],t(p,e));v=x(1+w[1],t(v,e));if(n)return l=w[0]*n[0]/200+w[1]*n[1]/200+1,n=r(x(n[0],p),x(n[1],v)),r(x(1/l/200,n),e);n=t(l,e);n=h(t(p,x(w[0],n)),t(v,x(w[1],n)),n);return x(200,n)}}).call(A.prototype)});
	ace.define("ace/virtual_renderer","require exports module ace/lib/oop ace/lib/dom ace/config ace/layer/gutter ace/layer/marker ace/layer/text ace/layer/cursor ace/scrollbar ace/scrollbar ace/renderloop ace/layer/font_metrics ace/lib/event_emitter ace/lib/useragent".split(" "),function(A,C,J){var y=A("./lib/oop"),q=A("./lib/dom"),f=A("./config"),c=A("./layer/gutter").Gutter,a=A("./layer/marker").Marker,b=A("./layer/text").Text,d=A("./layer/cursor").Cursor,g=A("./scrollbar").HScrollBar,l=A("./scrollbar").VScrollBar,
	n=A("./renderloop").RenderLoop,h=A("./layer/font_metrics").FontMetrics,t=A("./lib/event_emitter").EventEmitter,r=A("./lib/useragent"),x=r.isIE;q.importCssString('.ace_br1 {border-top-left-radius    : 3px;}.ace_br2 {border-top-right-radius   : 3px;}.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;padding: 0;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;font-variant-ligatures: no-common-ligatures;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {opacity: 0;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_error_bracket {position: absolute;border-bottom: 1px solid #DE5555;border-radius: 0;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_mobile-menu {position: absolute;line-height: 1.5;border-radius: 4px;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;background: white;box-shadow: 1px 3px 2px grey;border: 1px solid #dcdcdc;color: black;}.ace_dark > .ace_mobile-menu {background: #333;color: #ccc;box-shadow: 1px 3px 2px grey;border: 1px solid #444;}.ace_mobile-button {padding: 2px;cursor: pointer;overflow: hidden;}.ace_mobile-button:hover {background-color: #eee;opacity:1;}.ace_mobile-button:active {background-color: #ddd;}.ace_placeholder {font-family: arial;transform: scale(0.9);transform-origin: left;white-space: pre;opacity: 0.7;margin: 0 10px;}',
	"ace_editor.css");A=function(k,e){var p=this;this.container=k||q.createElement("div");q.addCssClass(this.container,"ace_editor");q.HI_DPI&&q.addCssClass(this.container,"ace_hidpi");this.setTheme(e);this.$gutter=q.createElement("div");this.$gutter.className="ace_gutter";this.container.appendChild(this.$gutter);this.$gutter.setAttribute("aria-hidden",!0);this.scroller=q.createElement("div");this.scroller.className="ace_scroller";this.container.appendChild(this.scroller);this.content=q.createElement("div");
	this.content.className="ace_content";this.scroller.appendChild(this.content);this.$gutterLayer=new c(this.$gutter);this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this));this.$markerBack=new a(this.content);this.canvas=(this.$textLayer=new b(this.content)).element;this.$markerFront=new a(this.content);this.$cursorLayer=new d(this.content);this.$vScroll=this.$horizScroll=!1;this.scrollBar=this.scrollBarV=new l(this.container,this);this.scrollBarH=new g(this.container,this);this.scrollBarV.on("scroll",
	function(v){p.$scrollAnimation||p.session.setScrollTop(v.data-p.scrollMargin.top)});this.scrollBarH.on("scroll",function(v){p.$scrollAnimation||p.session.setScrollLeft(v.data-p.scrollMargin.left)});this.scrollLeft=this.scrollTop=0;this.cursorPos={row:0,column:0};this.$fontMetrics=new h(this.container);this.$textLayer.$setFontMetrics(this.$fontMetrics);this.$textLayer.on("changeCharacterSize",function(v){p.updateCharacterSize();p.onResize(!0,p.gutterWidth,p.$size.width,p.$size.height);p._signal("changeCharacterSize",
	v)});this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0};this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1};this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0};this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0};this.$keepTextAreaAtCursor=!r.isIOS;this.$loop=new n(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView);this.$loop.schedule(this.CHANGE_FULL);
	this.updateCharacterSize();this.setPadding(4);f.resetOptions(this);f._signal("renderer",this)};(function(){this.CHANGE_CURSOR=1;this.CHANGE_MARKER=2;this.CHANGE_GUTTER=4;this.CHANGE_SCROLL=8;this.CHANGE_LINES=16;this.CHANGE_TEXT=32;this.CHANGE_SIZE=64;this.CHANGE_MARKER_BACK=128;this.CHANGE_MARKER_FRONT=256;this.CHANGE_FULL=512;this.CHANGE_H_SCROLL=1024;y.implement(this,t);this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,
	this.setStyle("ace_nobold",!this.$allowBoldFonts));this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth();this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight();this.$updatePrintMargin();q.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")};this.setSession=function(k){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode);(this.session=k)&&this.scrollMargin.top&&0>=k.getScrollTop()&&k.setScrollTop(-this.scrollMargin.top);
	this.$cursorLayer.setSession(k);this.$markerBack.setSession(k);this.$markerFront.setSession(k);this.$gutterLayer.setSession(k);this.$textLayer.setSession(k);k&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))};this.updateLines=function(k,e,p){void 0===
	e&&(e=Infinity);this.$changedLines?(this.$changedLines.firstRow>k&&(this.$changedLines.firstRow=k),this.$changedLines.lastRow<e&&(this.$changedLines.lastRow=e)):this.$changedLines={firstRow:k,lastRow:e};if(this.$changedLines.lastRow<this.layerConfig.firstRow)if(p)this.$changedLines.lastRow=this.layerConfig.lastRow;else return;this.$changedLines.firstRow>this.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)};this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT);this.$textLayer.$updateEolChar();
	this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)};this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER);this.$textLayer.onChangeTabSize()};this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)};this.updateFull=function(k){k?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)};this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()};this.$changes=0;this.$updateSizeAsync=function(){if(this.$loop.pending)this.$size.$dirty=
	!0;else this.onResize()};this.onResize=function(k,e,p,v){if(!(2<this.resizing)){0<this.resizing?this.resizing++:this.resizing=k?1:0;var w=this.container;v||(v=w.clientHeight||w.scrollHeight);p||(p=w.clientWidth||w.scrollWidth);e=this.$updateCachedSize(k,e,p,v);if(!this.$size.scrollerHeight||!p&&!v)return this.resizing=0;k&&(this.$gutterLayer.$padding=null);k?this.$renderChanges(e|this.$changes,!0):this.$loop.schedule(e|this.$changes);this.resizing&&(this.resizing=0);this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=
	null}};this.$updateCachedSize=function(k,e,p,v){v-=this.$extraHeight||0;var w=0,m=this.$size,u={width:m.width,height:m.height,scrollerHeight:m.scrollerHeight,scrollerWidth:m.scrollerWidth};v&&(k||m.height!=v)&&(m.height=v,w|=this.CHANGE_SIZE,m.scrollerHeight=m.height,this.$horizScroll&&(m.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",w|=this.CHANGE_SCROLL);p&&(k||m.width!=p)&&(w|=this.CHANGE_SIZE,m.width=p,null==e&&(e=this.$showGutter?
	this.$gutter.offsetWidth:0),this.gutterWidth=e,q.setStyle(this.scrollBarH.element.style,"left",e+"px"),q.setStyle(this.scroller.style,"left",e+this.margin.left+"px"),m.scrollerWidth=Math.max(0,p-e-this.scrollBarV.getWidth()-this.margin.h),q.setStyle(this.$gutter.style,"left",this.margin.left+"px"),e=this.scrollBarV.getWidth()+"px",q.setStyle(this.scrollBarH.element.style,"right",e),q.setStyle(this.scroller.style,"right",e),q.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.session&&
	this.session.getUseWrapMode()&&this.adjustWrapLimit()||k)&&(w|=this.CHANGE_FULL);m.$dirty=!p||!v;w&&this._signal("resize",u);return w};this.onGutterResize=function(k){k=this.$showGutter?k:0;k!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,k,this.$size.width,this.$size.height));this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()};this.adjustWrapLimit=function(){return this.session.adjustWrapLimit(Math.floor((this.$size.scrollerWidth-
	2*this.$padding)/this.characterWidth),this.$showPrintMargin&&this.$printMarginColumn)};this.setAnimatedScroll=function(k){this.setOption("animatedScroll",k)};this.getAnimatedScroll=function(){return this.$animatedScroll};this.setShowInvisibles=function(k){this.setOption("showInvisibles",k);this.session.$bidiHandler.setShowInvisibles(k)};this.getShowInvisibles=function(){return this.getOption("showInvisibles")};this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")};this.setDisplayIndentGuides=
	function(k){this.setOption("displayIndentGuides",k)};this.setShowPrintMargin=function(k){this.setOption("showPrintMargin",k)};this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")};this.setPrintMarginColumn=function(k){this.setOption("printMarginColumn",k)};this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")};this.getShowGutter=function(){return this.getOption("showGutter")};this.setShowGutter=function(k){return this.setOption("showGutter",k)};this.getFadeFoldWidgets=
	function(){return this.getOption("fadeFoldWidgets")};this.setFadeFoldWidgets=function(k){this.setOption("fadeFoldWidgets",k)};this.setHighlightGutterLine=function(k){this.setOption("highlightGutterLine",k)};this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")};this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var k=q.createElement("div");k.className="ace_layer ace_print-margin-layer";this.$printMarginEl=q.createElement("div");
	this.$printMarginEl.className="ace_print-margin";k.appendChild(this.$printMarginEl);this.content.insertBefore(k,this.content.firstChild)}k=this.$printMarginEl.style;k.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px";k.visibility=this.$showPrintMargin?"visible":"hidden";this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}};this.getContainerElement=function(){return this.container};this.getMouseEventTarget=function(){return this.scroller};this.getTextAreaContainer=
	function(){return this.container};this.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var k=this.textarea.style,e=this.$composition;if(this.$keepTextAreaAtCursor||e){var p=this.$cursorLayer.$pixelPos;if(p){e&&e.markerRange&&(p=this.$cursorLayer.getPixelPosition(e.markerRange.start,!0));var v=this.layerConfig,w=p.top;p=p.left;w-=v.offset;var m=e&&e.useTextareaForIME?this.lineHeight:x?0:1;if(0>w||w>v.height-m)q.translate(this.textarea,0,0);else{v=1;var u=this.$size.height-m;e?e.useTextareaForIME?
	v=this.characterWidth*this.session.$getStringScreenWidth(this.textarea.value)[0]:w+=this.lineHeight+2:w+=this.lineHeight;p-=this.scrollLeft;p>this.$size.scrollerWidth-v&&(p=this.$size.scrollerWidth-v);p+=this.gutterWidth+this.margin.left;q.setStyle(k,"height",m+"px");q.setStyle(k,"width",v+"px");q.translate(this.textarea,Math.min(p,this.$size.scrollerWidth-v),Math.min(w,u))}}}else q.translate(this.textarea,-100,0)}};this.getFirstVisibleRow=function(){return this.layerConfig.firstRow};this.getFirstFullyVisibleRow=
	function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)};this.getLastFullyVisibleRow=function(){var k=this.layerConfig,e=k.lastRow;return this.session.documentToScreenRow(e,0)*k.lineHeight-this.session.getScrollTop()>k.height-k.lineHeight?e-1:e};this.getLastVisibleRow=function(){return this.layerConfig.lastRow};this.$padding=null;this.setPadding=function(k){this.$padding=k;this.$textLayer.setPadding(k);this.$cursorLayer.setPadding(k);this.$markerFront.setPadding(k);this.$markerBack.setPadding(k);
	this.$loop.schedule(this.CHANGE_FULL);this.$updatePrintMargin()};this.setScrollMargin=function(k,e,p,v){var w=this.scrollMargin;w.top=k|0;w.bottom=e|0;w.right=v|0;w.left=p|0;w.v=w.top+w.bottom;w.h=w.left+w.right;w.top&&0>=this.scrollTop&&this.session&&this.session.setScrollTop(-w.top);this.updateFull()};this.setMargin=function(k,e,p,v){var w=this.margin;w.top=k|0;w.bottom=e|0;w.right=v|0;w.left=p|0;w.v=w.top+w.bottom;w.h=w.left+w.right;this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height);
	this.updateFull()};this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible};this.setHScrollBarAlwaysVisible=function(k){this.setOption("hScrollBarAlwaysVisible",k)};this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible};this.setVScrollBarAlwaysVisible=function(k){this.setOption("vScrollBarAlwaysVisible",k)};this.$updateScrollBarV=function(){var k=this.layerConfig.maxHeight,e=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(k-=(e-this.lineHeight)*
	this.$scrollPastEnd,this.scrollTop>k-e&&(k=this.scrollTop+e,this.scrollBarV.scrollTop=null));this.scrollBarV.setScrollHeight(k+this.scrollMargin.v);this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)};this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h);this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)};this.$frozen=!1;this.freeze=function(){this.$frozen=!0};this.unfreeze=function(){this.$frozen=
	!1};this.$renderChanges=function(k,e){this.$changes&&(k|=this.$changes,this.$changes=0);if(this.session&&this.container.offsetWidth&&!this.$frozen&&(k||e)){if(this.$size.$dirty)return this.$changes|=k,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges();this._signal("beforeRender",k);this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);e=this.layerConfig;if(k&this.CHANGE_FULL||k&this.CHANGE_SIZE||k&this.CHANGE_TEXT||k&this.CHANGE_LINES||
	k&this.CHANGE_SCROLL||k&this.CHANGE_H_SCROLL){k|=this.$computeLayerConfig()|this.$loop.clear();e.firstRow!=this.layerConfig.firstRow&&e.firstRowScreen==this.layerConfig.firstRowScreen&&(e=this.scrollTop+(e.firstRow-this.layerConfig.firstRow)*this.lineHeight,0<e&&(this.scrollTop=e,k|=this.CHANGE_SCROLL,k|=this.$computeLayerConfig()|this.$loop.clear()));e=this.layerConfig;this.$updateScrollBarV();k&this.CHANGE_H_SCROLL&&this.$updateScrollBarH();q.translate(this.content,-this.scrollLeft,-e.offset);var p=
	e.minHeight+"px";q.setStyle(this.content.style,"width",e.width+2*this.$padding+"px");q.setStyle(this.content.style,"height",p)}k&this.CHANGE_H_SCROLL&&(q.translate(this.content,-this.scrollLeft,-e.offset),this.scroller.className=0>=this.scrollLeft?"ace_scroller":"ace_scroller ace_scroll-left");k&this.CHANGE_FULL?(this.$changedLines=null,this.$textLayer.update(e),this.$showGutter&&this.$gutterLayer.update(e),this.$markerBack.update(e),this.$markerFront.update(e),this.$cursorLayer.update(e),this.$moveTextAreaToCursor()):
	k&this.CHANGE_SCROLL?(this.$changedLines=null,k&this.CHANGE_TEXT||k&this.CHANGE_LINES?this.$textLayer.update(e):this.$textLayer.scrollLines(e),this.$showGutter&&(k&this.CHANGE_GUTTER||k&this.CHANGE_LINES?this.$gutterLayer.update(e):this.$gutterLayer.scrollLines(e)),this.$markerBack.update(e),this.$markerFront.update(e),this.$cursorLayer.update(e),this.$moveTextAreaToCursor()):(k&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(e),this.$showGutter&&this.$gutterLayer.update(e)):k&this.CHANGE_LINES?
	(this.$updateLines()||k&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(e):k&this.CHANGE_TEXT||k&this.CHANGE_GUTTER?this.$showGutter&&this.$gutterLayer.update(e):k&this.CHANGE_CURSOR&&this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(e),k&this.CHANGE_CURSOR&&(this.$cursorLayer.update(e),this.$moveTextAreaToCursor()),k&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(e),k&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(e));
	this._signal("afterRender",k)}else this.$changes|=k};this.$autosize=function(){var k=this.session.getScreenLength()*this.lineHeight,e=this.$maxLines*this.lineHeight,p=Math.min(e,Math.max((this.$minLines||1)*this.lineHeight,k))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(p+=this.scrollBarH.getHeight());this.$maxPixelHeight&&p>this.$maxPixelHeight&&(p=this.$maxPixelHeight);k=!(p<=2*this.lineHeight)&&k>e;if(p!=this.desiredHeight||this.$size.height!=this.desiredHeight||k!=this.$vScroll)k!=
	this.$vScroll&&(this.$vScroll=k,this.scrollBarV.setVisible(k)),k=this.container.clientWidth,this.container.style.height=p+"px",this.$updateCachedSize(!0,this.$gutterWidth,k,p),this.desiredHeight=p,this._signal("autosize")};this.$computeLayerConfig=function(){var k=this.session,e=this.$size,p=e.height<=2*this.lineHeight,v=this.session.getScreenLength()*this.lineHeight,w=this.$getLongestLine(),m=!p&&(this.$hScrollBarAlwaysVisible||0>e.scrollerWidth-w-2*this.$padding),u=this.$horizScroll!==m;u&&(this.$horizScroll=
	m,this.scrollBarH.setVisible(m));var z=this.$vScroll;this.$maxLines&&1<this.lineHeight&&this.$autosize();m=e.scrollerHeight+this.lineHeight;var B=!this.$maxLines&&this.$scrollPastEnd?(e.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;v+=B;var D=this.scrollMargin;this.session.setScrollTop(Math.max(-D.top,Math.min(this.scrollTop,v-e.scrollerHeight+D.bottom)));this.session.setScrollLeft(Math.max(-D.left,Math.min(this.scrollLeft,w+2*this.$padding-e.scrollerWidth+D.right)));B=!p&&(this.$vScrollBarAlwaysVisible||
	0>e.scrollerHeight-v+B||this.scrollTop>D.top);if(p=z!==B)this.$vScroll=B,this.scrollBarV.setVisible(B);var E=this.scrollTop%this.lineHeight;z=Math.max(0,Math.round((this.scrollTop-E)/this.lineHeight));B=z+(Math.ceil(m/this.lineHeight)-1);D=this.lineHeight;z=k.screenToDocumentRow(z,0);if(m=k.getFoldLine(z))z=m.start.row;var G=k.documentToScreenRow(z,0);m=k.getRowLength(z)*D;B=Math.min(k.screenToDocumentRow(B,0),k.getLength()-1);m=e.scrollerHeight+k.getRowLength(B)*D+m;E=this.scrollTop-G*D;k=0;if(this.layerConfig.width!=
	w||u)k=this.CHANGE_H_SCROLL;if(u||p)k|=this.$updateCachedSize(!0,this.gutterWidth,e.width,e.height),this._signal("scrollbarVisibilityChanged"),p&&(w=this.$getLongestLine());this.layerConfig={width:w,padding:this.$padding,firstRow:z,firstRowScreen:G,lastRow:B,lineHeight:D,characterWidth:this.characterWidth,minHeight:m,maxHeight:v,offset:E,gutterOffset:D?Math.max(0,Math.ceil((E+e.height-e.scrollerHeight)/D)):0,height:this.$size.scrollerHeight};this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(w-
	this.$padding);return k};this.$updateLines=function(){if(this.$changedLines){var k=this.$changedLines.firstRow,e=this.$changedLines.lastRow;this.$changedLines=null;var p=this.layerConfig;if(!(k>p.lastRow+1||e<p.firstRow))if(Infinity===e)this.$showGutter&&this.$gutterLayer.update(p),this.$textLayer.update(p);else return this.$textLayer.updateLines(p,k,e),!0}};this.$getLongestLine=function(){var k=this.session.getScreenWidth();this.showInvisibles&&!this.session.$useWrapMode&&(k+=1);this.$textLayer&&
	k>this.$textLayer.MAX_LINE_LENGTH&&(k=this.$textLayer.MAX_LINE_LENGTH+30);return Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(k*this.characterWidth))};this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0));this.$loop.schedule(this.CHANGE_MARKER_FRONT)};this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers());this.$loop.schedule(this.CHANGE_MARKER_BACK)};this.addGutterDecoration=function(k,e){this.$gutterLayer.addGutterDecoration(k,
	e)};this.removeGutterDecoration=function(k,e){this.$gutterLayer.removeGutterDecoration(k,e)};this.updateBreakpoints=function(k){this.$loop.schedule(this.CHANGE_GUTTER)};this.setAnnotations=function(k){this.$gutterLayer.setAnnotations(k);this.$loop.schedule(this.CHANGE_GUTTER)};this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)};this.hideCursor=function(){this.$cursorLayer.hideCursor()};this.showCursor=function(){this.$cursorLayer.showCursor()};this.scrollSelectionIntoView=function(k,
	e,p){this.scrollCursorIntoView(k,p);this.scrollCursorIntoView(e,p)};this.scrollCursorIntoView=function(k,e,p){if(0!==this.$size.scrollerHeight){var v=this.$cursorLayer.getPixelPosition(k);k=v.left;v=v.top;var w=p&&p.top||0;p=p&&p.bottom||0;var m=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;m+w>v?(e&&m+w>v+this.lineHeight&&(v-=e*this.$size.scrollerHeight),0===v&&(v=-this.scrollMargin.top),this.session.setScrollTop(v)):m+this.$size.scrollerHeight-p<v+this.lineHeight&&(e&&m+this.$size.scrollerHeight-
	p<v-this.lineHeight&&(v+=e*this.$size.scrollerHeight),this.session.setScrollTop(v+this.lineHeight+p-this.$size.scrollerHeight));e=this.scrollLeft;e>k?(k<this.$padding+2*this.layerConfig.characterWidth&&(k=-this.scrollMargin.left),this.session.setScrollLeft(k)):e+this.$size.scrollerWidth<k+this.characterWidth?this.session.setScrollLeft(Math.round(k+this.characterWidth-this.$size.scrollerWidth)):e<=this.$padding&&k-e<this.characterWidth&&this.session.setScrollLeft(0)}};this.getScrollTop=function(){return this.session.getScrollTop()};
	this.getScrollLeft=function(){return this.session.getScrollLeft()};this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight};this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)};this.scrollToRow=function(k){this.session.setScrollTop(k*this.lineHeight)};this.alignCursor=function(k,e){"number"==typeof k&&(k={row:k,column:0});k=this.$cursorLayer.getPixelPosition(k).top-(this.$size.scrollerHeight-this.lineHeight)*
	(e||0);this.session.setScrollTop(k);return k};this.STEPS=8;this.$calcSteps=function(k,e){var p,v=this.STEPS,w=[];for(p=0;p<v;++p)w.push((e-k)*(Math.pow(p/this.STEPS-1,3)+1)+k);return w};this.scrollToLine=function(k,e,p,v){k=this.$cursorLayer.getPixelPosition({row:k,column:0}).top;e&&(k-=this.$size.scrollerHeight/2);e=this.scrollTop;this.session.setScrollTop(k);!1!==p&&this.animateScrolling(e,v)};this.animateScrolling=function(k,e){var p=this.scrollTop;if(this.$animatedScroll){var v=this;if(k!=p){if(this.$scrollAnimation){var w=
	this.$scrollAnimation.steps;if(w.length&&(k=w[0],k==p))return}var m=v.$calcSteps(k,p);this.$scrollAnimation={from:k,to:p,steps:m};clearInterval(this.$timer);v.session.setScrollTop(m.shift());v.session.$scrollTop=p;this.$timer=setInterval(function(){if(!v.session)return clearInterval(v.$timer);m.length?(v.session.setScrollTop(m.shift()),v.session.$scrollTop=p):null!=p?(v.session.$scrollTop=-1,v.session.setScrollTop(p),p=null):(v.$timer=clearInterval(v.$timer),v.$scrollAnimation=null,e&&e())},10)}}};
	this.scrollToY=function(k){this.scrollTop!==k&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=k)};this.scrollToX=function(k){this.scrollLeft!==k&&(this.scrollLeft=k);this.$loop.schedule(this.CHANGE_H_SCROLL)};this.scrollTo=function(k,e){this.session.setScrollTop(e);this.session.setScrollLeft(e)};this.scrollBy=function(k,e){e&&this.session.setScrollTop(this.session.getScrollTop()+e);k&&this.session.setScrollLeft(this.session.getScrollLeft()+k)};this.isScrollableBy=function(k,e){if(0>e&&this.session.getScrollTop()>=
	1-this.scrollMargin.top||0<e&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||0>k&&this.session.getScrollLeft()>=1-this.scrollMargin.left||0<k&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0};this.pixelToScreenCoordinates=function(k,e){if(this.$hasCssTransforms){var p={top:0,left:0};e=this.$fontMetrics.transformCoordinates([k,e]);k=e[1]-this.gutterWidth-this.margin.left;
	e=e[0]}else p=this.scroller.getBoundingClientRect();k=k+this.scrollLeft-p.left-this.$padding;var v=k/this.characterWidth,w=this.$blockCursor?Math.floor(v):Math.round(v);return{row:Math.floor((e+this.scrollTop-p.top)/this.lineHeight),column:w,side:0<v-w?1:-1,offsetX:k}};this.screenToTextCoordinates=function(k,e){if(this.$hasCssTransforms){var p={top:0,left:0};e=this.$fontMetrics.transformCoordinates([k,e]);k=e[1]-this.gutterWidth-this.margin.left;e=e[0]}else p=this.scroller.getBoundingClientRect();
	k=k+this.scrollLeft-p.left-this.$padding;var v=k/this.characterWidth;return this.session.screenToDocumentPosition(Math.floor((e+this.scrollTop-p.top)/this.lineHeight),Math.max(this.$blockCursor?Math.floor(v):Math.round(v),0),k)};this.textToScreenCoordinates=function(k,e){var p=this.scroller.getBoundingClientRect();e=this.session.documentToScreenPosition(k,e);k=this.$padding+(this.session.$bidiHandler.isBidiRow(e.row,k)?this.session.$bidiHandler.getPosLeft(e.column):Math.round(e.column*this.characterWidth));
	return{pageX:p.left+k-this.scrollLeft,pageY:p.top+e.row*this.lineHeight-this.scrollTop}};this.visualizeFocus=function(){q.addCssClass(this.container,"ace_focus")};this.visualizeBlur=function(){q.removeCssClass(this.container,"ace_focus")};this.showComposition=function(k){this.$composition=k;k.cssText||(k.cssText=this.textarea.style.cssText);void 0==k.useTextareaForIME&&(k.useTextareaForIME=this.$useTextareaForIME);this.$useTextareaForIME?(q.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=
	"",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):k.markerId=this.session.addMarker(k.markerRange,"ace_composition_marker","text")};this.setCompositionText=function(k){var e=this.session.selection.cursor;this.addToken(k,"composition_placeholder",e.row,e.column);this.$moveTextAreaToCursor()};this.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId);q.removeCssClass(this.textarea,"ace_composition");
	this.textarea.style.cssText=this.$composition.cssText;var k=this.session.selection.cursor;this.removeExtraToken(k.row,k.column);this.$composition=null;this.$cursorLayer.element.style.display=""}};this.addToken=function(k,e,p,v){var w=this.session;w.bgTokenizer.lines[p]=null;k={type:e,value:k};w=w.getTokens(p);if(null==v)w.push(k);else{var m=0;for(e=0;e<w.length;e++){var u=w[e];m+=u.value.length;if(v<=m){m=u.value.length-(m-v);v=u.value.slice(0,m);m=u.value.slice(m);w.splice(e,1,{type:u.type,value:v},
	k,{type:u.type,value:m});break}}}this.updateLines(p,p)};this.removeExtraToken=function(k,e){this.updateLines(k,k)};this.setTheme=function(k,e){function p(w){if(v.$themeId!=k)return e&&e();if(!w||!w.cssClass)throw Error("couldn't load module "+k+" or it didn't call define");w.$id&&(v.$themeId=w.$id);q.importCssString(w.cssText,w.cssClass,v.container);v.theme&&q.removeCssClass(v.container,v.theme.cssClass);var m="padding"in w?w.padding:"padding"in(v.theme||{})?4:v.$padding;v.$padding&&m!=v.$padding&&
	v.setPadding(m);v.$theme=w.cssClass;v.theme=w;q.addCssClass(v.container,w.cssClass);q.setCssClass(v.container,"ace_dark",w.isDark);v.$size&&(v.$size.width=0,v.$updateSizeAsync());v._dispatchEvent("themeLoaded",{theme:w});e&&e()}var v=this;this.$themeId=k;v._dispatchEvent("themeChange",{theme:k});k&&"string"!=typeof k?p(k):f.loadModule(["theme",k||this.$options.theme.initialValue],p)};this.getTheme=function(){return this.$themeId};this.setStyle=function(k,e){q.setCssClass(this.container,k,!1!==e)};
	this.unsetStyle=function(k){q.removeCssClass(this.container,k)};this.setCursorStyle=function(k){q.setStyle(this.scroller.style,"cursor",k)};this.setMouseCursor=function(k){q.setStyle(this.scroller.style,"cursor",k)};this.attachToShadowRoot=function(){q.importCssString('.ace_br1 {border-top-left-radius    : 3px;}.ace_br2 {border-top-right-radius   : 3px;}.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;padding: 0;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;font-variant-ligatures: no-common-ligatures;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {opacity: 0;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_error_bracket {position: absolute;border-bottom: 1px solid #DE5555;border-radius: 0;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_mobile-menu {position: absolute;line-height: 1.5;border-radius: 4px;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;background: white;box-shadow: 1px 3px 2px grey;border: 1px solid #dcdcdc;color: black;}.ace_dark > .ace_mobile-menu {background: #333;color: #ccc;box-shadow: 1px 3px 2px grey;border: 1px solid #444;}.ace_mobile-button {padding: 2px;cursor: pointer;overflow: hidden;}.ace_mobile-button:hover {background-color: #eee;opacity:1;}.ace_mobile-button:active {background-color: #ddd;}.ace_placeholder {font-family: arial;transform: scale(0.9);transform-origin: left;white-space: pre;opacity: 0.7;margin: 0 10px;}',
	"ace_editor.css",this.container)};this.destroy=function(){this.freeze();this.$fontMetrics.destroy();this.$cursorLayer.destroy();this.removeAllListeners();this.container.textContent=""}}).call(A.prototype);f.defineOptions(A.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(k){this.$textLayer.setShowInvisibles(k)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},
	initialValue:80},printMargin:{set:function(k){"number"==typeof k&&(this.$printMarginColumn=k);this.$showPrintMargin=!!k;this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(k){this.$gutter.style.display=k?"block":"none";this.$loop.schedule(this.CHANGE_FULL);this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(k){q.setCssClass(this.$gutter,"ace_fade-fold-widgets",k)},initialValue:!1},showFoldWidgets:{set:function(k){this.$gutterLayer.setShowFoldWidgets(k);
	this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(k){this.$textLayer.setDisplayIndentGuides(k)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(k){this.$gutterLayer.setHighlightGutterLine(k);this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(k){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(k){this.$vScrollBarAlwaysVisible&&
	this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(k){"number"==typeof k&&(k+="px");this.container.style.fontSize=k;this.updateFontSize()},initialValue:12},fontFamily:{set:function(k){this.container.style.fontFamily=k;this.updateFontSize()}},maxLines:{set:function(k){this.updateFull()}},minLines:{set:function(k){562949953421311>this.$minLines||(this.$minLines=0);this.updateFull()}},maxPixelHeight:{set:function(k){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(k){k=
	+k||0;this.$scrollPastEnd!=k&&(this.$scrollPastEnd=k,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(k){this.$gutterLayer.$fixedWidth=!!k;this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(k){this.setTheme(k)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!r.isMobile&&!r.isIE}});C.VirtualRenderer=A});
	ace.define("ace/worker/worker_client","require exports module ace/lib/oop ace/lib/net ace/lib/event_emitter ace/config".split(" "),function(A,C,J){function y(g){g="importScripts('"+c.qualifyURL(g)+"');";try{return new Blob([g],{type:"application/javascript"})}catch(n){var l=new (window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);l.append(g);return l.getBlob("application/javascript")}}function q(g){return"undefined"==typeof Worker?{postMessage:function(){},terminate:function(){}}:
	b.get("loadWorkerFromBlob")?(g=y(g),g=(window.URL||window.webkitURL).createObjectURL(g),new Worker(g)):new Worker(g)}var f=A("../lib/oop"),c=A("../lib/net"),a=A("../lib/event_emitter").EventEmitter,b=A("../config"),d=function(g){g.postMessage||(g=this.$createWorkerFromOldConfig.apply(this,arguments));this.$worker=g;this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this);this.changeListener=this.changeListener.bind(this);this.onMessage=this.onMessage.bind(this);this.callbackId=1;this.callbacks={};this.$worker.onmessage=
	this.onMessage};(function(){f.implement(this,a);this.$createWorkerFromOldConfig=function(g,l,n,h,t){A.nameToUrl&&!A.toUrl&&(A.toUrl=A.nameToUrl);if(b.get("packaged")||!A.toUrl)h=h||b.moduleUrl(l,"worker");else{var r=this.$normalizePath;h=h||r(A.toUrl("ace/worker/worker.js",null,"_"));var x={};g.forEach(function(k){x[k]=r(A.toUrl(k,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=q(h);t&&this.send("importScripts",t);this.$worker.postMessage({init:!0,tlns:x,module:l,classname:n});return this.$worker};
	this.onMessage=function(g){g=g.data;switch(g.type){case "event":this._signal(g.name,{data:g.data});break;case "call":var l=this.callbacks[g.id];l&&(l(g.data),delete this.callbacks[g.id]);break;case "error":this.reportError(g.data);break;case "log":window.console&&console.log&&console.log.apply(console,g.data)}};this.reportError=function(g){window.console&&console.error&&console.error(g)};this.$normalizePath=function(g){return c.qualifyURL(g)};this.terminate=function(){this._signal("terminate",{});
	this.deltaQueue=null;this.$worker.terminate();this.$worker=null;this.$doc&&this.$doc.off("change",this.changeListener);this.$doc=null};this.send=function(g,l){this.$worker.postMessage({command:g,args:l})};this.call=function(g,l,n){if(n){var h=this.callbackId++;this.callbacks[h]=n;l.push(h)}this.send(g,l)};this.emit=function(g,l){try{l.data&&l.data.err&&(l.data.err={message:l.data.err.message,stack:l.data.err.stack,code:l.data.err.code}),this.$worker.postMessage({event:g,data:{data:l.data}})}catch(n){console.error(n.stack)}};
	this.attachToDocument=function(g){this.$doc&&this.terminate();this.$doc=g;this.call("setValue",[g.getValue()]);g.on("change",this.changeListener)};this.changeListener=function(g){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0));"insert"==g.action?this.deltaQueue.push(g.start,g.lines):this.deltaQueue.push(g.start,g.end)};this.$sendDeltaQueue=function(){var g=this.deltaQueue;g&&(this.deltaQueue=null,50<g.length&&g.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):
	this.emit("change",{data:g}))}}).call(d.prototype);C.UIWorkerClient=function(g,l,n){var h=null,t=!1,r=Object.create(a),x=[],k=new d({messageBuffer:x,terminate:function(){},postMessage:function(p){x.push(p);h&&(t?setTimeout(e):e())}});k.setEmitSync=function(p){t=p};var e=function(){var p=x.shift();p.command?h[p.command].apply(h,p.args):p.event&&r._signal(p.event,p.data)};r.postMessage=function(p){k.onMessage({data:p})};r.callback=function(p,v){this.postMessage({type:"call",id:v,data:p})};r.emit=function(p,
	v){this.postMessage({type:"event",name:p,data:v})};b.loadModule(["worker",l],function(p){for(h=new p[n](r);x.length;)e()});return k};C.WorkerClient=d;C.createWorker=q});
	ace.define("ace/placeholder","require exports module ace/range ace/lib/event_emitter ace/lib/oop".split(" "),function(A,C,J){var y=A("./range").Range,q=A("./lib/event_emitter").EventEmitter,f=A("./lib/oop");A=function(c,a,b,d,g,l){var n=this;this.length=a;this.session=c;this.doc=c.getDocument();this.mainClass=g;this.othersClass=l;this.$onUpdate=this.onUpdate.bind(this);this.doc.on("change",this.$onUpdate);this.$others=d;this.$onCursorChange=function(){setTimeout(function(){n.onCursorChange()})};this.$pos=
	b;this.$undoStackDepth=(c.getUndoManager().$undoStack||c.getUndoManager().$undostack||{length:-1}).length;this.setup();c.selection.on("changeCursor",this.$onCursorChange)};(function(){f.implement(this,q);this.setup=function(){var c=this,a=this.doc,b=this.session;this.selectionBefore=b.selection.toJSON();b.selection.inMultiSelectMode&&b.selection.toSingleRange();var d=this.pos=a.createAnchor(this.$pos.row,this.$pos.column);d.$insertRight=!0;d.detach();d.markerId=b.addMarker(new y(d.row,d.column,d.row,
	d.column+this.length),this.mainClass,null,!1);this.others=[];this.$others.forEach(function(g){g=a.createAnchor(g.row,g.column);g.$insertRight=!0;g.detach();c.others.push(g)});b.setUndoSelect(!1)};this.showOtherMarkers=function(){if(!this.othersActive){var c=this.session,a=this;this.othersActive=!0;this.others.forEach(function(b){b.markerId=c.addMarker(new y(b.row,b.column,b.row,b.column+a.length),a.othersClass,null,!1)})}};this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;
	for(var c=0;c<this.others.length;c++)this.session.removeMarker(this.others[c].markerId)}};this.onUpdate=function(c){if(this.$updating)return this.updateAnchors(c);if(c.start.row===c.end.row&&c.start.row===this.pos.row){this.$updating=!0;var a="insert"===c.action?c.end.column-c.start.column:c.start.column-c.end.column,b=c.start.column>=this.pos.column&&c.start.column<=this.pos.column+this.length+1,d=c.start.column-this.pos.column;this.updateAnchors(c);b&&(this.length+=a);if(b&&!this.session.$fromUndo)if("insert"===
	c.action)for(b=this.others.length-1;0<=b;b--){var g=this.others[b];g={row:g.row,column:g.column+d};this.doc.insertMergedLines(g,c.lines)}else if("remove"===c.action)for(b=this.others.length-1;0<=b;b--)g=this.others[b],g={row:g.row,column:g.column+d},this.doc.remove(new y(g.row,g.column,g.row,g.column-a));this.$updating=!1;this.updateMarkers()}};this.updateAnchors=function(c){this.pos.onChange(c);for(var a=this.others.length;a--;)this.others[a].onChange(c);this.updateMarkers()};this.updateMarkers=
	function(){if(!this.$updating){var c=this,a=this.session,b=function(g,l){a.removeMarker(g.markerId);g.markerId=a.addMarker(new y(g.row,g.column,g.row,g.column+c.length),l,null,!1)};b(this.pos,this.mainClass);for(var d=this.others.length;d--;)b(this.others[d],this.othersClass)}};this.onCursorChange=function(c){if(!this.$updating&&this.session){var a=this.session.selection.getCursor();a.row===this.pos.row&&a.column>=this.pos.column&&a.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",
	c)):(this.hideOtherMarkers(),this._emit("cursorLeave",c))}};this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId);this.hideOtherMarkers();this.doc.off("change",this.$onUpdate);this.session.selection.off("changeCursor",this.$onCursorChange);this.session.setUndoSelect(!0);this.session=null};this.cancel=function(){if(-1!==this.$undoStackDepth){for(var c=this.session.getUndoManager(),a=(c.$undoStack||c.$undostack).length-this.$undoStackDepth,b=0;b<a;b++)c.undo(this.session,!0);
	this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(A.prototype);C.PlaceHolder=A});
	ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(A,C,J){function y(c,a){return c.row==a.row&&c.column==a.column}var q=A("../lib/event"),f=A("../lib/useragent");C.onMouseDown=function(c){var a=c.domEvent,b=a.altKey,d=a.shiftKey,g=a.ctrlKey,l=c.getAccelKey(),n=c.getButton();if(1==n||c.altKey)b=!0,n=0;g&&f.isMac&&(n=a.button);if(c.editor.inMultiSelectMode&&2==n)c.editor.textInput.onContextMenu(c.domEvent);else if(!g&&!b&&!l)0===n&&
	c.editor.inMultiSelectMode&&c.editor.exitMultiSelectMode();else if(0===n){var h=c.editor,t=h.selection;n=h.inMultiSelectMode;var r=c.getDocumentPosition(),x=t.getCursor();x=c.inSelection()||t.isEmpty()&&y(r,x);var k=c.x,e=c.y,p=function(I){k=I.clientX;e=I.clientY},v=h.session,w=h.renderer.pixelToScreenCoordinates(k,e),m=w,u;if(h.$mouseHandler.$enableJumpToDef)g&&b||l&&b?u=d?"block":"add":b&&h.$blockSelectEnabled&&(u="block");else if(l&&!b){if(u="add",!n&&d)return}else b&&h.$blockSelectEnabled&&(u=
	"block");u&&f.isMac&&a.ctrlKey&&h.$mouseHandler.cancelContextMenu();if("add"==u){if(n||!x){if(!n){var z=t.toOrientedRange();h.addSelectionMarker(z)}var B=t.rangeList.rangeAtPoint(r);h.inVirtualSelectionMode=!0;d&&(B=null,z=t.ranges[0]||z,h.removeSelectionMarker(z));h.once("mouseup",function(){var I=t.toOrientedRange();B&&I.isEmpty()&&y(B.cursor,I.cursor)?t.substractPoint(I.cursor):(d?t.substractPoint(z.cursor):z&&(h.removeSelectionMarker(z),t.addRange(z)),t.addRange(I));h.inVirtualSelectionMode=!1})}}else if("block"==
	u){c.stop();h.inVirtualSelectionMode=!0;var D=[],E=function(){var I=h.renderer.pixelToScreenCoordinates(k,e),F=v.screenToDocumentPosition(I.row,I.column,I.offsetX);y(m,I)&&y(F,t.lead)||(m=I,h.selection.moveToPosition(F),h.renderer.scrollCursorIntoView(),h.removeSelectionMarkers(D),D=t.rectangularRangeBlock(m,w),h.$mouseHandler.$clickSelection&&1==D.length&&D[0].isEmpty()&&(D[0]=h.$mouseHandler.$clickSelection.clone()),D.forEach(h.addSelectionMarker,h),h.updateSelectionMarkers())};if(n&&!l)t.toSingleRange();
	else if(!n&&l){var G=t.toOrientedRange();h.addSelectionMarker(G)}d?w=v.documentToScreenPosition(t.lead):t.moveToPosition(r);m={row:-1,column:-1};q.capture(h.container,p,function(I){E();clearInterval(H);h.removeSelectionMarkers(D);D.length||(D=[t.toOrientedRange()]);G&&(h.removeSelectionMarker(G),t.toSingleRange(G));for(I=0;I<D.length;I++)t.addRange(D[I]);h.inVirtualSelectionMode=!1;h.$mouseHandler.$clickSelection=null});var H=setInterval(function(){E()},20);return c.preventDefault()}}}});
	ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(A,C,J){C.defaultCommands=[{name:"addCursorAbove",description:"Add cursor above",exec:function(y){y.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorBelow",description:"Add cursor below",exec:function(y){y.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorAboveSkipCurrent",
	description:"Add cursor above (skip current)",exec:function(y){y.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorBelowSkipCurrent",description:"Add cursor below (skip current)",exec:function(y){y.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readOnly:!0},{name:"selectMoreBefore",description:"Select more before",exec:function(y){y.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",
	mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readOnly:!0},{name:"selectMoreAfter",description:"Select more after",exec:function(y){y.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readOnly:!0},{name:"selectNextBefore",description:"Select next before",exec:function(y){y.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readOnly:!0},{name:"selectNextAfter",description:"Select next after",exec:function(y){y.selectMore(1,
	!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",readOnly:!0},{name:"toggleSplitSelectionIntoLines",description:"Split into lines",exec:function(y){1<y.multiSelect.rangeCount?y.multiSelect.joinSelections():y.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(y){y.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",
	exec:function(y){y.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(y){y.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}];C.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(y){y.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(y){return y&&y.inMultiSelectMode}}];A=A("../keyboard/hash_handler").HashHandler;
	C.keyboardHandler=new A(C.multiSelectCommands)});
	ace.define("ace/multi_select","require exports module ace/range_list ace/range ace/selection ace/mouse/multi_select_handler ace/lib/event ace/lib/lang ace/commands/multi_select_commands ace/search ace/edit_session ace/editor ace/config".split(" "),function(A,C,J){function y(h){h.$multiselectOnSessionChange||(h.$onAddRange=h.$onAddRange.bind(h),h.$onRemoveRange=h.$onRemoveRange.bind(h),h.$onMultiSelect=h.$onMultiSelect.bind(h),h.$onSingleSelect=h.$onSingleSelect.bind(h),h.$multiselectOnSessionChange=
	C.onSessionChange.bind(h),h.$checkMultiselectChange=h.$checkMultiselectChange.bind(h),h.$multiselectOnSessionChange(h),h.on("changeSession",h.$multiselectOnSessionChange),h.on("mousedown",b),h.commands.addCommands(l.defaultCommands),q(h))}function q(h){function t(k){x&&(h.renderer.setMouseCursor(""),x=!1)}if(h.textInput){var r=h.textInput.getElement(),x=!1;d.addListener(r,"keydown",function(k){k=18==k.keyCode&&!(k.ctrlKey||k.shiftKey||k.metaKey);h.$blockSelectEnabled&&k?x||(h.renderer.setMouseCursor("crosshair"),
	x=!0):x&&t()},h);d.addListener(r,"keyup",t,h);d.addListener(r,"blur",t,h)}}var f=A("./range_list").RangeList,c=A("./range").Range,a=A("./selection").Selection,b=A("./mouse/multi_select_handler").onMouseDown,d=A("./lib/event"),g=A("./lib/lang"),l=A("./commands/multi_select_commands");C.commands=l.defaultCommands.concat(l.multiSelectCommands);var n=new (A("./search").Search);J=A("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(J.prototype);
	(function(){this.rangeList=this.ranges=null;this.addRange=function(h,t){if(h){if(!this.inMultiSelectMode&&0===this.rangeCount){var r=this.toOrientedRange();this.rangeList.add(r);this.rangeList.add(h);if(2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),t||this.fromOrientedRange(h);this.rangeList.removeAll();this.rangeList.add(r);this.$onAddRange(r)}h.cursor||(h.cursor=h.end);r=this.rangeList.add(h);this.$onAddRange(h);r.length&&this.$onRemoveRange(r);1<this.rangeCount&&!this.inMultiSelectMode&&
	(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session));return t||this.fromOrientedRange(h)}};this.toSingleRange=function(h){h=h||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t);h&&this.fromOrientedRange(h)};this.substractPoint=function(h){if(h=this.rangeList.substractPoint(h))return this.$onRemoveRange(h),h[0]};this.mergeOverlappingRanges=function(){var h=this.rangeList.merge();h.length&&this.$onRemoveRange(h)};
	this.$onAddRange=function(h){this.rangeCount=this.rangeList.ranges.length;this.ranges.unshift(h);this._signal("addRange",{range:h})};this.$onRemoveRange=function(h){this.rangeCount=this.rangeList.ranges.length;if(1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();h.push(t);this.rangeCount=0}for(var r=h.length;r--;){var x=this.ranges.indexOf(h[r]);this.ranges.splice(x,1)}this._signal("removeRange",{ranges:h});0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=
	!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session));(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)};this.$initRangeList=function(){this.rangeList||(this.rangeList=new f,this.ranges=[],this.rangeCount=0)};this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]};this.splitIntoLines=function(){for(var h=this.ranges.length?this.ranges:[this.getRange()],t=[],r=0;r<h.length;r++){var x=
	h[r],k=x.start.row,e=x.end.row;if(k===e)t.push(x.clone());else{for(t.push(new c(k,x.start.column,k,this.session.getLine(k).length));++k<e;)t.push(this.getLineRange(k,!0));t.push(new c(e,0,e,x.end.column))}0!=r||this.isBackwards()||(t=t.reverse())}this.toSingleRange();for(r=t.length;r--;)this.addRange(t[r])};this.joinSelections=function(){var h=this.rangeList.ranges,t=h[h.length-1];h=c.fromPoints(h[0].start,t.end);this.toSingleRange();this.setSelectionRange(h,t.cursor==t.start)};this.toggleBlockSelection=
	function(){if(1<this.rangeCount){var h=this.rangeList.ranges,t=h[h.length-1];h=c.fromPoints(h[0].start,t.end);this.toSingleRange();this.setSelectionRange(h,t.cursor==t.start)}else t=this.session.documentToScreenPosition(this.cursor),h=this.session.documentToScreenPosition(this.anchor),this.rectangularRangeBlock(t,h).forEach(this.addRange,this)};this.rectangularRangeBlock=function(h,t,r){var x=[],k=h.column<t.column;if(k)var e=h.column,p=t.column,v=h.offsetX,w=t.offsetX;else e=t.column,p=h.column,
	v=t.offsetX,w=h.offsetX;var m=h.row<t.row;if(m){var u=h.row;h=t.row}else u=t.row,h=h.row;0>e&&(e=0);0>u&&(u=0);u==h&&(r=!0);for(var z;u<=h;u++){t=c.fromPoints(this.session.screenToDocumentPosition(u,e,v),this.session.screenToDocumentPosition(u,p,w));if(t.isEmpty()){var B;if(B=z)B=t.end,B=B.row==z.row&&B.column==z.column;if(B)break;z=t.end}t.cursor=k?t.start:t.end;x.push(t)}m&&x.reverse();if(!r){for(r=x.length-1;x[r].isEmpty()&&0<r;)r--;if(0<r)for(var D=0;x[D].isEmpty();)D++;for(;r>=D;r--)x[r].isEmpty()&&
	x.splice(r,1)}return x}}).call(a.prototype);J=A("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.addSelectionMarker=function(h){h.cursor||(h.cursor=h.end);var t=this.getSelectionStyle();h.marker=this.session.addMarker(h,"ace_selection",t);this.session.$selectionMarkers.push(h);this.session.selectionMarkerCount=this.session.$selectionMarkers.length;return h};this.removeSelectionMarker=function(h){h.marker&&(this.session.removeMarker(h.marker),
	h=this.session.$selectionMarkers.indexOf(h),-1!=h&&this.session.$selectionMarkers.splice(h,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length)};this.removeSelectionMarkers=function(h){for(var t=this.session.$selectionMarkers,r=h.length;r--;){var x=h[r];x.marker&&(this.session.removeMarker(x.marker),x=t.indexOf(x),-1!=x&&t.splice(x,1))}this.session.selectionMarkerCount=t.length};this.$onAddRange=function(h){this.addSelectionMarker(h.range);this.renderer.updateCursor();this.renderer.updateBackMarkers()};
	this.$onRemoveRange=function(h){this.removeSelectionMarkers(h.ranges);this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.$onMultiSelect=function(h){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(l.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())};this.$onSingleSelect=function(h){this.session.multiSelect.inVirtualMode||
	(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(l.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))};this.$onMultiSelectExec=function(h){var t=h.command,r=h.editor;if(r.multiSelect)return t.multiSelectAction?"forEach"==t.multiSelectAction?h=r.forEachSelection(t,h.args):"forEachLine"==t.multiSelectAction?h=r.forEachSelection(t,
	h.args,!0):"single"==t.multiSelectAction?(r.exitMultiSelectMode(),h=t.exec(r,h.args||{})):h=t.multiSelectAction(r,h.args||{}):(h=t.exec(r,h.args||{}),r.multiSelect.addRange(r.multiSelect.toOrientedRange()),r.multiSelect.mergeOverlappingRanges()),h};this.forEachSelection=function(h,t,r){if(!this.inVirtualSelectionMode){var x=1==r||r&&r.$byLines,k=this.session,e=this.selection,p=e.rangeList;r=(r&&r.keepOrder?e:p).ranges;var v;if(!r.length)return h.exec?h.exec(this,t||{}):h(this,t||{});p=e._eventRegistry;
	e._eventRegistry={};var w=new a(k);this.inVirtualSelectionMode=!0;for(var m=r.length;m--;){if(x)for(;0<m&&r[m].start.row==r[m-1].end.row;)m--;w.fromOrientedRange(r[m]);w.index=m;this.selection=k.selection=w;var u=h.exec?h.exec(this,t||{}):h(this,t||{});v||void 0===u||(v=u);w.toOrientedRange(r[m])}w.detach();this.selection=k.selection=e;this.inVirtualSelectionMode=!1;e._eventRegistry=p;e.mergeOverlappingRanges();e.ranges[0]&&e.fromOrientedRange(e.ranges[0]);h=this.renderer.$scrollAnimation;this.onCursorChange();
	this.onSelectionChange();h&&h.from==h.to&&this.renderer.animateScrolling(h.from);return v}};this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()};this.getSelectedText=function(){var h="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){h=this.multiSelect.rangeList.ranges;for(var t=[],r=0;r<h.length;r++)t.push(this.session.getTextRange(h[r]));r=this.session.getDocument().getNewLineCharacter();h=t.join(r);h.length==(t.length-
	1)*r.length&&(h="")}else this.selection.isEmpty()||(h=this.session.getTextRange(this.getSelectionRange()));return h};this.$checkMultiselectChange=function(h,t){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&(h=this.multiSelect.ranges[0],this.multiSelect.isEmpty()&&t==this.multiSelect.anchor||(h=t==this.multiSelect.anchor?h.cursor==h.start?h.end:h.start:h.cursor,h.row!=t.row||this.session.$clipPositionToDocument(h.row,h.column).column!=t.column?this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()):
	this.multiSelect.mergeOverlappingRanges()))};this.findAll=function(h,t,r){t=t||{};t.needle=h||t.needle;if(void 0==t.needle){var x=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(x)}this.$search.set(t);h=this.$search.findAll(this.session);if(!h.length)return 0;t=this.multiSelect;r||t.toSingleRange(h[0]);for(r=h.length;r--;)t.addRange(h[r],!0);x&&t.rangeList.rangeAtPoint(x.start)&&t.addRange(x,!0);return h.length};this.selectMoreLines=
	function(h,t){var r=this.selection.toOrientedRange(),x=r.cursor==r.end,k=this.session.documentToScreenPosition(r.cursor);this.selection.$desiredColumn&&(k.column=this.selection.$desiredColumn);var e=this.session.screenToDocumentPosition(k.row+h,k.column);if(r.isEmpty())h=e;else{var p=this.session.documentToScreenPosition(x?r.end:r.start);h=this.session.screenToDocumentPosition(p.row+h,p.column)}x?(x=c.fromPoints(e,h),x.cursor=x.start):(x=c.fromPoints(h,e),x.cursor=x.end);x.desiredColumn=k.column;
	if(!this.selection.inMultiSelectMode)this.selection.addRange(r);else if(t)var v=r.cursor;this.selection.addRange(x);v&&this.selection.substractPoint(v)};this.transposeSelections=function(h){for(var t=this.session,r=t.multiSelect,x=r.ranges,k=x.length;k--;){var e=x[k];if(e.isEmpty()){var p=t.getWordRange(e.start.row,e.start.column);e.start.row=p.start.row;e.start.column=p.start.column;e.end.row=p.end.row;e.end.column=p.end.column}}r.mergeOverlappingRanges();var v=[];for(k=x.length;k--;)e=x[k],v.unshift(t.getTextRange(e));
	0>h?v.unshift(v.pop()):v.push(v.shift());for(k=x.length;k--;)e=x[k],p=e.clone(),t.replace(e,v[k]),e.start.row=p.start.row,e.start.column=p.start.column;r.fromOrientedRange(r.ranges[0])};this.selectMore=function(h,t,r){var x=this.session,k=x.multiSelect.toOrientedRange();if(k.isEmpty()&&(k=x.getWordRange(k.start.row,k.start.column),k.cursor=-1==h?k.start:k.end,this.multiSelect.addRange(k),r))return;r=x.getTextRange(k);n.$options.wrap=!0;n.$options.needle=r;n.$options.backwards=-1==h;if(x=n.find(x))x.cursor=
	-1==h?x.start:x.end,this.session.unfold(x),this.multiSelect.addRange(x),this.renderer.scrollCursorIntoView(null,.5);t&&this.multiSelect.substractPoint(k.cursor)};this.alignCursors=function(){var h=this.session,t=h.multiSelect,r=t.ranges,x=-1,k=r.filter(function(B){if(B.cursor.row==x)return!0;x=B.cursor.row});if(r.length&&k.length!=r.length-1){k.forEach(function(B){t.substractPoint(B.cursor)});var e=0,p=Infinity,v=r.map(function(B){B=B.cursor;var D=h.getLine(B.row).substr(B.column).search(/\S/g);-1==
	D&&(D=0);B.column>e&&(e=B.column);D<p&&(p=D);return D});r.forEach(function(B,D){var E=B.cursor,G=e-E.column;D=v[D]-p;G>D?h.insert(E,g.stringRepeat(" ",G-D)):h.remove(new c(E.row,E.column,E.row,E.column-G+D));B.start.column=B.end.column=e;B.start.row=B.end.row=E.row;B.cursor=B.end});t.fromOrientedRange(r[0]);this.renderer.updateCursor();this.renderer.updateBackMarkers()}else{r=this.selection.getRange();k=r.start.row;var w=r.end.row,m=k==w;if(m){var u=this.session.getLength();do var z=this.session.getLine(w);
	while(/[=:]/.test(z)&&++w<u);do z=this.session.getLine(k);while(/[=:]/.test(z)&&0<--k);0>k&&(k=0);w>=u&&(w=u-1)}w=this.session.removeFullLines(k,w);w=this.$reAlignText(w,m);this.session.insert({row:k,column:0},w.join("\n")+"\n");m||(r.start.column=0,r.end.column=w[w.length-1].length);this.selection.setRange(r)}};this.$reAlignText=function(h,t){function r(z){return g.stringRepeat(" ",z)}function x(z){return z[2]?r(w)+z[2]+r(m-z[2].length+u)+z[4].replace(/^([=:])\s+/,"$1 "):z[0]}function k(z){return z[2]?
	r(w+m-z[2].length)+z[2]+r(u)+z[4].replace(/^([=:])\s+/,"$1 "):z[0]}function e(z){return z[2]?r(w)+z[2]+r(u)+z[4].replace(/^([=:])\s+/,"$1 "):z[0]}var p=!0,v=!0,w,m,u;return h.map(function(z){var B=z.match(/(\s*)(.*?)(\s*)([=:].*)/);if(!B)return[z];if(null==w)return w=B[1].length,m=B[2].length,u=B[3].length,B;w+m+u!=B[1].length+B[2].length+B[3].length&&(v=!1);w!=B[1].length&&(p=!1);w>B[1].length&&(w=B[1].length);m<B[2].length&&(m=B[2].length);u>B[3].length&&(u=B[3].length);return B}).map(t?x:p?v?k:
	x:e)}}).call(J.prototype);C.onSessionChange=function(h){var t=h.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection);this.multiSelect=t&&t.multiSelect;if(h=h.oldSession)h.multiSelect.off("addRange",this.$onAddRange),h.multiSelect.off("removeRange",this.$onRemoveRange),h.multiSelect.off("multiSelect",this.$onMultiSelect),h.multiSelect.off("singleSelect",this.$onSingleSelect),h.multiSelect.lead.off("change",this.$checkMultiselectChange),h.multiSelect.anchor.off("change",
	this.$checkMultiselectChange);t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange));t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};C.MultiSelect=
	y;A("./config").defineOptions(J.prototype,"editor",{enableMultiselect:{set:function(h){y(this);h?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",b)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",b))},value:!0},enableBlockSelect:{set:function(h){this.$blockSelectEnabled=h},value:!0}})});
	ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(A,C,J){var y=A("../../range").Range;A=C.FoldMode=function(){};(function(){this.foldingStopMarker=this.foldingStartMarker=null;this.getFoldWidget=function(q,f,c){q=q.getLine(c);return this.foldingStartMarker.test(q)?"start":"markbeginend"==f&&this.foldingStopMarker&&this.foldingStopMarker.test(q)?"end":""};this.getFoldWidgetRange=function(q,f,c){return null};this.indentationBlock=function(q,f,c){var a=/\S/,
	b=q.getLine(f),d=b.search(a);if(-1!=d){c=c||b.length;for(var g=q.getLength(),l=b=f;++f<g;){var n=q.getLine(f).search(a);if(-1!=n){if(n<=d&&(n=q.getTokenAt(f,0),!n||"string"!==n.type))break;l=f}}if(l>b)return q=q.getLine(l).length,new y(b,c,l,q)}};this.openingBracketBlock=function(q,f,c,a,b){c={row:c,column:a+1};if(f=q.$findClosingBracket(f,c,b))return b=q.foldWidgets[f.row],null==b&&(b=q.getFoldWidget(f.row)),"start"==b&&f.row>c.row&&(f.row--,f.column=q.getLine(f.row).length),y.fromPoints(c,f)};this.closingBracketBlock=
	function(q,f,c,a,b){c={row:c,column:a};if(q=q.$findOpeningBracket(f,c))return q.column++,c.column--,y.fromPoints(q,c)}}).call(A.prototype)});
	ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(A,C,J){C.isDark=!1;C.cssClass="ace-tm";C.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';C.$id=
	"ace/theme/textmate";A("../lib/dom").importCssString(C.cssText,C.cssClass)});
	ace.define("ace/line_widgets",["require","exports","module","ace/lib/dom"],function(A,C,J){function y(f){this.session=f;this.session.widgetManager=this;this.session.getRowLength=this.getRowLength;this.session.$getWidgetScreenLength=this.$getWidgetScreenLength;this.updateOnChange=this.updateOnChange.bind(this);this.renderWidgets=this.renderWidgets.bind(this);this.measureWidgets=this.measureWidgets.bind(this);this.session._changedWidgets=[];this.$onChangeEditor=this.$onChangeEditor.bind(this);this.session.on("change",
	this.updateOnChange);this.session.on("changeFold",this.updateOnFold);this.session.on("changeEditor",this.$onChangeEditor)}var q=A("./lib/dom");(function(){this.getRowLength=function(f){var c=this.lineWidgets?this.lineWidgets[f]&&this.lineWidgets[f].rowCount||0:0;return this.$useWrapMode&&this.$wrapData[f]?this.$wrapData[f].length+1+c:1+c};this.$getWidgetScreenLength=function(){var f=0;this.lineWidgets.forEach(function(c){c&&c.rowCount&&!c.hidden&&(f+=c.rowCount)});return f};this.$onChangeEditor=function(f){this.attach(f.editor)};
	this.attach=function(f){f&&f.widgetManager&&f.widgetManager!=this&&f.widgetManager.detach();this.editor!=f&&(this.detach(),this.editor=f)&&(f.widgetManager=this,f.renderer.on("beforeRender",this.measureWidgets),f.renderer.on("afterRender",this.renderWidgets))};this.detach=function(f){if(f=this.editor)this.editor=null,f.widgetManager=null,f.renderer.off("beforeRender",this.measureWidgets),f.renderer.off("afterRender",this.renderWidgets),(f=this.session.lineWidgets)&&f.forEach(function(c){c&&c.el&&
	c.el.parentNode&&(c._inDocument=!1,c.el.parentNode.removeChild(c.el))})};this.updateOnFold=function(f,c){if((c=c.lineWidgets)&&f.action){var a=f.data,b=a.start.row;a=a.end.row;f="add"==f.action;for(var d=b+1;d<a;d++)c[d]&&(c[d].hidden=f);c[a]&&(f?c[b]?c[a].hidden=f:c[b]=c[a]:(c[b]==c[a]&&(c[b]=void 0),c[a].hidden=f))}};this.updateOnChange=function(f){var c=this.session.lineWidgets;if(c){var a=f.start.row,b=f.end.row-a;0!==b&&("remove"==f.action?(f=c.splice(a+1,b),!c[a]&&f[f.length-1]&&(c[a]=f.pop()),
	f.forEach(function(d){d&&this.removeLineWidget(d)},this)):(b=Array(b),c[a]&&null!=c[a].column&&f.start.column>c[a].column&&a++,b.unshift(a,0),c.splice.apply(c,b)),this.$updateRows())}};this.$updateRows=function(){var f=this.session.lineWidgets;if(f){var c=!0;f.forEach(function(a,b){if(a)for(c=!1,a.row=b;a.$oldWidget;)a.$oldWidget.row=b,a=a.$oldWidget});c&&(this.session.lineWidgets=null)}};this.$registerLineWidget=function(f){this.session.lineWidgets||(this.session.lineWidgets=Array(this.session.getLength()));
	var c=this.session.lineWidgets[f.row];c&&(f.$oldWidget=c,c.el&&c.el.parentNode&&(c.el.parentNode.removeChild(c.el),c._inDocument=!1));return this.session.lineWidgets[f.row]=f};this.addLineWidget=function(f){this.$registerLineWidget(f);f.session=this.session;if(!this.editor)return f;var c=this.editor.renderer;f.html&&!f.el&&(f.el=q.createElement("div"),f.el.innerHTML=f.html);f.el&&(q.addCssClass(f.el,"ace_lineWidgetContainer"),f.el.style.position="absolute",f.el.style.zIndex=5,c.container.appendChild(f.el),
	f._inDocument=!0,f.coverGutter||(f.el.style.zIndex=3),null==f.pixelHeight&&(f.pixelHeight=f.el.offsetHeight));null==f.rowCount&&(f.rowCount=f.pixelHeight/c.layerConfig.lineHeight);var a=this.session.getFoldAt(f.row,0);if(f.$fold=a){var b=this.session.lineWidgets;f.row!=a.end.row||b[a.start.row]?f.hidden=!0:b[a.start.row]=f}this.session._emit("changeFold",{data:{start:{row:f.row}}});this.$updateRows();this.renderWidgets(null,c);this.onWidgetChanged(f);return f};this.removeLineWidget=function(f){f._inDocument=
	!1;f.session=null;f.el&&f.el.parentNode&&f.el.parentNode.removeChild(f.el);if(f.editor&&f.editor.destroy)try{f.editor.destroy()}catch(a){}if(this.session.lineWidgets){var c=this.session.lineWidgets[f.row];if(c==f){if(this.session.lineWidgets[f.row]=f.$oldWidget)this.onWidgetChanged(f.$oldWidget)}else for(;c;){if(c.$oldWidget==f){c.$oldWidget=f.$oldWidget;break}c=c.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:f.row}}});this.$updateRows()};this.getWidgetsAtRow=function(f){var c=this.session.lineWidgets;
	f=c&&c[f];for(c=[];f;)c.push(f),f=f.$oldWidget;return c};this.onWidgetChanged=function(f){this.session._changedWidgets.push(f);this.editor&&this.editor.renderer.updateFull()};this.measureWidgets=function(f,c){f=this.session._changedWidgets;var a=c.layerConfig;if(f&&f.length){for(var b=Infinity,d=0;d<f.length;d++){var g=f[d];if(g&&g.el&&g.session==this.session){if(!g._inDocument){if(this.session.lineWidgets[g.row]!=g)continue;g._inDocument=!0;c.container.appendChild(g.el)}g.h=g.el.offsetHeight;g.fixedWidth||
	(g.w=g.el.offsetWidth,g.screenWidth=Math.ceil(g.w/a.characterWidth));var l=g.h/a.lineHeight;g.coverLine&&(l-=this.session.getRowLineCount(g.row),0>l&&(l=0));g.rowCount!=l&&(g.rowCount=l,g.row<b&&(b=g.row))}}Infinity!=b&&(this.session._emit("changeFold",{data:{start:{row:b}}}),this.session.lineWidgetWidth=null);this.session._changedWidgets=[]}};this.renderWidgets=function(f,c){f=c.layerConfig;var a=this.session.lineWidgets;if(a){for(var b=Math.min(this.firstRow,f.firstRow),d=Math.max(this.lastRow,
	f.lastRow,a.length);0<b&&!a[b];)b--;this.firstRow=f.firstRow;this.lastRow=f.lastRow;for(c.$cursorLayer.config=f;b<=d;b++){var g=a[b];if(g&&g.el)if(g.hidden)g.el.style.top=-100-(g.pixelHeight||0)+"px";else{g._inDocument||(g._inDocument=!0,c.container.appendChild(g.el));var l=c.$cursorLayer.getPixelPosition({row:b,column:0},!0).top;g.coverLine||(l+=f.lineHeight*this.session.getRowLineCount(g.row));g.el.style.top=l-f.offset+"px";l=g.coverGutter?0:c.gutterWidth;g.fixedWidth||(l-=c.scrollLeft);g.el.style.left=
	l+"px";g.fullWidth&&g.screenWidth&&(g.el.style.minWidth=f.width+2*f.padding+"px");g.el.style.right=g.fixedWidth?c.scrollBar.getWidth()+"px":""}}}}}).call(y.prototype);C.LineWidgets=y});
	ace.define("ace/ext/error_marker","require exports module ace/line_widgets ace/lib/dom ace/range".split(" "),function(A,C,J){function y(a,b,d){a=a.getAnnotations().sort(c.comparePoints);if(a.length){a:{var g={row:b,column:-1};for(var l=c.comparePoints,n=0,h=a.length-1;n<=h;){var t=n+h>>1,r=l(g,a[t]);if(0<r)n=t+1;else if(0>r)h=t-1;else{g=t;break a}}g=-(n+1)}0>g&&(g=-g-1);g>=a.length?g=0<d?0:a.length-1:0===g&&0>d&&(g=a.length-1);if((l=a[g])&&d){if(l.row===b){do l=a[g+=d];while(l&&l.row===b);if(!l)return a.slice()}n=
	[];b=l.row;do n[0>d?"unshift":"push"](l),l=a[g+=d];while(l&&l.row==b);return n.length&&n}}}var q=A("../line_widgets").LineWidgets,f=A("../lib/dom"),c=A("../range").Range;C.showErrorMarker=function(a,b){var d=a.session;d.widgetManager||(d.widgetManager=new q(d),d.widgetManager.attach(a));var g=a.getCursorPosition(),l=g.row,n=d.widgetManager.getWidgetsAtRow(l).filter(function(r){return"errorMarker"==r.type})[0];n?n.destroy():l-=b;if(b=y(d,l,b))n=b[0],g.column=(n.pos&&"number"!=typeof n.column?n.pos.sc:
	n.column)||0,g.row=n.row,n=a.renderer.$gutterLayer.$annotations[g.row];else{if(n)return;n={text:["Looks good!"],className:"ace_ok"}}a.session.unfold(g.row);a.selection.moveToPosition(g);var h={row:g.row,fixedWidth:!0,coverGutter:!0,el:f.createElement("div"),type:"errorMarker"};b=h.el.appendChild(f.createElement("div"));l=h.el.appendChild(f.createElement("div"));l.className="error_widget_arrow "+n.className;g=a.renderer.$cursorLayer.getPixelPosition(g).left;l.style.left=g+a.renderer.gutterWidth-5+
	"px";h.el.className="error_widget_wrapper";b.className="error_widget "+n.className;b.innerHTML=n.text.join("<br>");b.appendChild(f.createElement("div"));var t=function(r,x,k){if(0===x&&("esc"===k||"return"===k))return h.destroy(),{command:"null"}};h.destroy=function(){a.$mouseHandler.isMousePressed||(a.keyBinding.removeKeyboardHandler(t),d.widgetManager.removeLineWidget(h),a.off("changeSelection",h.destroy),a.off("changeSession",h.destroy),a.off("mouseup",h.destroy),a.off("change",h.destroy))};a.keyBinding.addKeyboardHandler(t);
	a.on("changeSelection",h.destroy);a.on("changeSession",h.destroy);a.on("mouseup",h.destroy);a.on("change",h.destroy);a.session.widgetManager.addLineWidget(h);h.el.onmousedown=a.focus.bind(a);a.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})};f.importCssString("    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }",
	"")});
	ace.define("ace/ace","require exports module ace/lib/fixoldbrowsers ace/lib/dom ace/lib/event ace/range ace/editor ace/edit_session ace/undomanager ace/virtual_renderer ace/worker/worker_client ace/keyboard/hash_handler ace/placeholder ace/multi_select ace/mode/folding/fold_mode ace/theme/textmate ace/ext/error_marker ace/config".split(" "),function(A,C,J){A("./lib/fixoldbrowsers");var y=A("./lib/dom"),q=A("./lib/event");J=A("./range").Range;var f=A("./editor").Editor,c=A("./edit_session").EditSession,a=
	A("./undomanager").UndoManager,b=A("./virtual_renderer").VirtualRenderer;A("./worker/worker_client");A("./keyboard/hash_handler");A("./placeholder");A("./multi_select");A("./mode/folding/fold_mode");A("./theme/textmate");A("./ext/error_marker");C.config=A("./config");C.require=A;"function"===typeof define&&(C.define=define);C.edit=function(d,g){if("string"==typeof d){var l=d;d=document.getElementById(l);if(!d)throw Error("ace.edit can't find div #"+l);}if(d&&d.env&&d.env.editor instanceof f)return d.env.editor;
	l="";if(d&&/input|textarea/i.test(d.tagName)){var n=d;l=n.value;d=y.createElement("pre");n.parentNode.replaceChild(d,n)}else d&&(l=d.textContent,d.innerHTML="");l=C.createEditSession(l);d=new f(new b(d),l,g);var h={document:l,editor:d,onResize:d.resize.bind(d,null)};n&&(h.textarea=n);q.addListener(window,"resize",h.onResize);d.on("destroy",function(){q.removeListener(window,"resize",h.onResize);h.editor.container.env=null});d.container.env=d.env=h;return d};C.createEditSession=function(d,g){d=new c(d,
	g);d.setUndoManager(new a);return d};C.Range=J;C.Editor=f;C.EditSession=c;C.UndoManager=a;C.VirtualRenderer=b;C.version=C.config.version});(function(){ace.require(["ace/ace"],function(A){A&&(A.config.init(!0),A.define=ace.define);window.ace||(window.ace=A);for(var C in A)A.hasOwnProperty(C)&&(window.ace[C]=A[C]);window.ace["default"]=window.ace;"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=window.ace)})})();