-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path6716.b788e662d5e7cfc7f175.js
1 lines (1 loc) · 372 KB
/
6716.b788e662d5e7cfc7f175.js
1
(self.webpackChunkchekt_web_wcs=self.webpackChunkchekt_web_wcs||[]).push([[6716],{42725:(se,re,ne)=>{(function(){var y=function(){return this}();!y&&"undefined"!=typeof window&&(y=window);var U=function(t,e,r){"string"==typeof t?(2==arguments.length&&(r=e),U.modules[t]||(U.payloads[t]=r,U.modules[t]=null)):U.original?U.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};U.modules={},U.payloads={};var t,e,$=function(t,e,r){if("string"==typeof e){var i=l(t,e);if(null!=i)return r&&r(),i}else if("[object Array]"===Object.prototype.toString.call(e)){for(var o=[],n=0,h=e.length;n<h;++n){var c=l(t,e[n]);if(null==c&&A.original)return;o.push(c)}return r&&r.apply(null,o)||!0}},A=function(t,e){var r=$("",t,e);return null==r&&A.original?A.original.apply(this,arguments):r},m=function(t,e){if(-1!==e.indexOf("!")){var r=e.split("!");return m(t,r[0])+"!"+m(t,r[1])}if("."==e.charAt(0))for(e=t.split("/").slice(0,-1).join("/")+"/"+e;-1!==e.indexOf(".")&&o!=e;){var o=e;e=e.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}return e},l=function(t,e){e=m(t,e);var r=U.modules[e];if(!r){if("function"==typeof(r=U.payloads[e])){var i={},o={id:e,uri:"",exports:i,packaged:!0},h=r(function(c,F){return $(e,c,F)},i,o);U.modules[e]=i=h||o.exports,delete U.payloads[e]}r=U.modules[e]=i||r}return r};e=y,(t="ace")&&(y[t]||(y[t]={}),e=y[t]),(!e.define||!e.define.packaged)&&(U.original=e.define,e.define=U,e.define.packaged=!0),(!e.acequire||!e.acequire.packaged)&&(A.original=e.acequire,e.acequire=A,e.acequire.packaged=!0)})(),ace.define("ace/lib/regexp",["require","exports","module"],function(w,y,U){"use strict";var t,$={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},A=void 0===$.exec.call(/()??/,"")[1],m=($.test.call(t=/^/g,""),!t.lastIndex);function l(t){return(t.global?"g":"")+(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.extended?"x":"")+(t.sticky?"y":"")}function s(t,e,r){if(Array.prototype.indexOf)return t.indexOf(e,r);for(var i=r||0;i<t.length;i++)if(t[i]===e)return i;return-1}m&&A||(RegExp.prototype.exec=function(t){var r,i,e=$.exec.apply(this,arguments);if("string"==typeof t&&e){if(!A&&e.length>1&&s(e,"")>-1&&(i=RegExp(this.source,$.replace.call(l(this),"g","")),$.replace.call(t.slice(e.index),i,function(){for(var n=1;n<arguments.length-2;n++)void 0===arguments[n]&&(e[n]=void 0)})),this._xregexp&&this._xregexp.captureNames)for(var o=1;o<e.length;o++)(r=this._xregexp.captureNames[o-1])&&(e[r]=e[o]);!m&&this.global&&!e[0].length&&this.lastIndex>e.index&&this.lastIndex--}return e},m||(RegExp.prototype.test=function(t){var e=$.exec.call(this,t);return e&&this.global&&!e[0].length&&this.lastIndex>e.index&&this.lastIndex--,!!e}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(w,y,U){function $(){}Function.prototype.bind||(Function.prototype.bind=function(L){var P=this;if("function"!=typeof P)throw new TypeError("Function.prototype.bind called on incompatible "+P);var I=s.call(arguments,1),N=function(){if(this instanceof N){var _=P.apply(this,I.concat(s.call(arguments)));return Object(_)===_?_:this}return P.apply(L,I.concat(s.call(arguments)))};return P.prototype&&($.prototype=P.prototype,N.prototype=new $,$.prototype=null),N});var r,i,o,n,h,A=Function.prototype.call,l=Object.prototype,s=Array.prototype.slice,t=A.bind(l.toString),e=A.bind(l.hasOwnProperty);if((h=e(l,"__defineGetter__"))&&(r=A.bind(l.__defineGetter__),i=A.bind(l.__defineSetter__),o=A.bind(l.__lookupGetter__),n=A.bind(l.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function x(I){var N=new Array(I+2);return N[0]=N[1]=0,N}var P,L=[];if(L.splice.apply(L,x(20)),L.splice.apply(L,x(26)),P=L.length,L.splice(5,0,"XXX"),P+1==L.length)return!0}()){var c=Array.prototype.splice;Array.prototype.splice=function(x,L){return arguments.length?c.apply(this,[void 0===x?0:x,void 0===L?this.length-x:L].concat(s.call(arguments,2))):[]}}else Array.prototype.splice=function(x,L){var P=this.length;x>0?x>P&&(x=P):null==x?x=0:x<0&&(x=Math.max(P+x,0)),x+L<P||(L=P-x);var I=this.slice(x,x+L),N=s.call(arguments,2),_=N.length;if(x===P)_&&this.push.apply(this,N);else{var W=Math.min(L,P-x),Y=x+W,j=Y+_-W,Q=P-Y,J=P-W;if(j<Y)for(var H=0;H<Q;++H)this[j+H]=this[Y+H];else if(j>Y)for(H=Q;H--;)this[j+H]=this[Y+H];if(_&&x===J)this.length=J,this.push.apply(this,N);else for(this.length=J+_,H=0;H<_;++H)this[x+H]=N[H]}return I};Array.isArray||(Array.isArray=function(L){return"[object Array]"==t(L)});var g,P,F=Object("a"),C="a"!=F[0]||!(0 in F);function a(x){try{return Object.defineProperty(x,"sentinel",{}),"sentinel"in x}catch(L){}}if(Array.prototype.forEach||(Array.prototype.forEach=function(L){var P=T(this),I=C&&"[object String]"==t(this)?this.split(""):P,N=arguments[1],_=-1,W=I.length>>>0;if("[object Function]"!=t(L))throw new TypeError;for(;++_<W;)_ in I&&L.call(N,I[_],_,P)}),Array.prototype.map||(Array.prototype.map=function(L){var P=T(this),I=C&&"[object String]"==t(this)?this.split(""):P,N=I.length>>>0,_=Array(N),W=arguments[1];if("[object Function]"!=t(L))throw new TypeError(L+" is not a function");for(var Y=0;Y<N;Y++)Y in I&&(_[Y]=L.call(W,I[Y],Y,P));return _}),Array.prototype.filter||(Array.prototype.filter=function(L){var W,P=T(this),I=C&&"[object String]"==t(this)?this.split(""):P,N=I.length>>>0,_=[],Y=arguments[1];if("[object Function]"!=t(L))throw new TypeError(L+" is not a function");for(var j=0;j<N;j++)j in I&&L.call(Y,W=I[j],j,P)&&_.push(W);return _}),Array.prototype.every||(Array.prototype.every=function(L){var P=T(this),I=C&&"[object String]"==t(this)?this.split(""):P,N=I.length>>>0,_=arguments[1];if("[object Function]"!=t(L))throw new TypeError(L+" is not a function");for(var W=0;W<N;W++)if(W in I&&!L.call(_,I[W],W,P))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(L){var P=T(this),I=C&&"[object String]"==t(this)?this.split(""):P,N=I.length>>>0,_=arguments[1];if("[object Function]"!=t(L))throw new TypeError(L+" is not a function");for(var W=0;W<N;W++)if(W in I&&L.call(_,I[W],W,P))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(L){var P=T(this),I=C&&"[object String]"==t(this)?this.split(""):P,N=I.length>>>0;if("[object Function]"!=t(L))throw new TypeError(L+" is not a function");if(!N&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var W,_=0;if(arguments.length>=2)W=arguments[1];else for(;;){if(_ in I){W=I[_++];break}if(++_>=N)throw new TypeError("reduce of empty array with no initial value")}for(;_<N;_++)_ in I&&(W=L.call(void 0,W,I[_],_,P));return W}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(L){var P=T(this),I=C&&"[object String]"==t(this)?this.split(""):P,N=I.length>>>0;if("[object Function]"!=t(L))throw new TypeError(L+" is not a function");if(!N&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var _,W=N-1;if(arguments.length>=2)_=arguments[1];else for(;;){if(W in I){_=I[W--];break}if(--W<0)throw new TypeError("reduceRight of empty array with no initial value")}do{W in this&&(_=L.call(void 0,_,I[W],W,P))}while(W--);return _}),(!Array.prototype.indexOf||-1!=[0,1].indexOf(1,2))&&(Array.prototype.indexOf=function(L){var P=C&&"[object String]"==t(this)?this.split(""):T(this),I=P.length>>>0;if(!I)return-1;var N=0;for(arguments.length>1&&(N=V(arguments[1])),N=N>=0?N:Math.max(0,I+N);N<I;N++)if(N in P&&P[N]===L)return N;return-1}),(!Array.prototype.lastIndexOf||-1!=[0,1].lastIndexOf(0,-3))&&(Array.prototype.lastIndexOf=function(L){var P=C&&"[object String]"==t(this)?this.split(""):T(this),I=P.length>>>0;if(!I)return-1;var N=I-1;for(arguments.length>1&&(N=Math.min(N,V(arguments[1]))),N=N>=0?N:I-Math.abs(N);N>=0;N--)if(N in P&&L===P[N])return N;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(L){return L.__proto__||(L.constructor?L.constructor.prototype:l)}),Object.getOwnPropertyDescriptor||(Object.getOwnPropertyDescriptor=function(L,P){if("object"!=typeof L&&"function"!=typeof L||null===L)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+L);if(e(L,P)){var I;if(I={enumerable:!0,configurable:!0},h){var W=L.__proto__;L.__proto__=l;var N=o(L,P),_=n(L,P);if(L.__proto__=W,N||_)return N&&(I.get=N),_&&(I.set=_),I}return I.value=L[P],I}}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(L){return Object.keys(L)}),Object.create||(g=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var x={};for(var L in x)x[L]=null;return x.constructor=x.hasOwnProperty=x.propertyIsEnumerable=x.isPrototypeOf=x.toLocaleString=x.toString=x.valueOf=x.__proto__=null,x},Object.create=function(L,P){var I;if(null===L)I=g();else{if("object"!=typeof L)throw new TypeError("typeof prototype["+typeof L+"] != 'object'");var N=function(){};N.prototype=L,(I=new N).__proto__=L}return void 0!==P&&Object.defineProperties(I,P),I}),Object.defineProperty){var f=a({}),p="undefined"==typeof document||a(document.createElement("div"));if(!f||!p)var E=Object.defineProperty}Object.defineProperty&&!E||(Object.defineProperty=function(L,P,I){if("object"!=typeof L&&"function"!=typeof L||null===L)throw new TypeError("Object.defineProperty called on non-object: "+L);if("object"!=typeof I&&"function"!=typeof I||null===I)throw new TypeError("Property description must be an object: "+I);if(E)try{return E.call(Object,L,P,I)}catch(_){}if(e(I,"value"))if(h&&(o(L,P)||n(L,P))){var N=L.__proto__;L.__proto__=l,delete L[P],L[P]=I.value,L.__proto__=N}else L[P]=I.value;else{if(!h)throw new TypeError("getters & setters can not be defined on this javascript engine");e(I,"get")&&r(L,P,I.get),e(I,"set")&&i(L,P,I.set)}return L}),Object.defineProperties||(Object.defineProperties=function(L,P){for(var I in P)e(P,I)&&Object.defineProperty(L,I,P[I]);return L}),Object.seal||(Object.seal=function(L){return L}),Object.freeze||(Object.freeze=function(L){return L});try{Object.freeze(function(){})}catch(x){Object.freeze=(P=Object.freeze,function(N){return"function"==typeof N?N:P(N)})}if(Object.preventExtensions||(Object.preventExtensions=function(L){return L}),Object.isSealed||(Object.isSealed=function(L){return!1}),Object.isFrozen||(Object.isFrozen=function(L){return!1}),Object.isExtensible||(Object.isExtensible=function(L){if(Object(L)===L)throw new TypeError;for(var P="";e(L,P);)P+="?";L[P]=!0;var I=e(L,P);return delete L[P],I}),!Object.keys){var B=!0,S=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=S.length;for(var k in{toString:null})B=!1;Object.keys=function(L){if("object"!=typeof L&&"function"!=typeof L||null===L)throw new TypeError("Object.keys called on a non-object");var P=[];for(var I in L)e(L,I)&&P.push(I);if(B)for(var N=0,_=D;N<_;N++){var W=S[N];e(L,W)&&P.push(W)}return P}}Date.now||(Date.now=function(){return(new Date).getTime()});var M="\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||M.trim()){M="["+M+"]";var O=new RegExp("^"+M+M+"*"),z=new RegExp(M+M+"*$");String.prototype.trim=function(){return String(this).replace(O,"").replace(z,"")}}function V(x){return(x=+x)!=x?x=0:0!==x&&x!==1/0&&x!==-1/0&&(x=(x>0||-1)*Math.floor(Math.abs(x))),x}var T=function(x){if(null==x)throw new TypeError("can't convert "+x+" to object");return Object(x)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(w,y,U){"use strict";w("./regexp"),w("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(w,y,U){"use strict";y.getDocumentHead=function(A){return A||(A=document),A.head||A.getElementsByTagName("head")[0]||A.documentElement},y.createElement=function(A,m){return document.createElementNS?document.createElementNS(m||"http://www.w3.org/1999/xhtml",A):document.createElement(A)},y.hasCssClass=function(A,m){return-1!==(A.className+"").split(/\s+/g).indexOf(m)},y.addCssClass=function(A,m){y.hasCssClass(A,m)||(A.className+=" "+m)},y.removeCssClass=function(A,m){for(var l=A.className.split(/\s+/g);;){var s=l.indexOf(m);if(-1==s)break;l.splice(s,1)}A.className=l.join(" ")},y.toggleCssClass=function(A,m){for(var l=A.className.split(/\s+/g),s=!0;;){var t=l.indexOf(m);if(-1==t)break;s=!1,l.splice(t,1)}return s&&l.push(m),A.className=l.join(" "),s},y.setCssClass=function(A,m,l){l?y.addCssClass(A,m):y.removeCssClass(A,m)},y.hasCssString=function(A,m){var s,l=0;if((m=m||document).createStyleSheet&&(s=m.styleSheets)){for(;l<s.length;)if(s[l++].owningElement.id===A)return!0}else if(s=m.getElementsByTagName("style"))for(;l<s.length;)if(s[l++].id===A)return!0;return!1},y.importCssString=function(m,l,s){if(s=s||document,l&&y.hasCssString(l,s))return null;var t;l&&(m+="\n/*# sourceURL=ace/css/"+l+" */"),s.createStyleSheet?((t=s.createStyleSheet()).cssText=m,l&&(t.owningElement.id=l)):((t=y.createElement("style")).appendChild(s.createTextNode(m)),l&&(t.id=l),y.getDocumentHead(s).appendChild(t))},y.importCssStylsheet=function(A,m){if(m.createStyleSheet)m.createStyleSheet(A);else{var l=y.createElement("link");l.rel="stylesheet",l.href=A,y.getDocumentHead(m).appendChild(l)}},y.getInnerWidth=function(A){return parseInt(y.computedStyle(A,"paddingLeft"),10)+parseInt(y.computedStyle(A,"paddingRight"),10)+A.clientWidth},y.getInnerHeight=function(A){return parseInt(y.computedStyle(A,"paddingTop"),10)+parseInt(y.computedStyle(A,"paddingBottom"),10)+A.clientHeight},y.scrollbarWidth=function(A){var m=y.createElement("ace_inner");m.style.width="100%",m.style.minWidth="0px",m.style.height="200px",m.style.display="block";var l=y.createElement("ace_outer"),s=l.style;s.position="absolute",s.left="-10000px",s.overflow="hidden",s.width="200px",s.minWidth="0px",s.height="150px",s.display="block",l.appendChild(m);var t=A.documentElement;t.appendChild(l);var e=m.offsetWidth;s.overflow="scroll";var r=m.offsetWidth;return e==r&&(r=l.clientWidth),t.removeChild(l),e-r},"undefined"!=typeof document?(void 0!==window.pageYOffset?(y.getPageScrollTop=function(){return window.pageYOffset},y.getPageScrollLeft=function(){return window.pageXOffset}):(y.getPageScrollTop=function(){return document.body.scrollTop},y.getPageScrollLeft=function(){return document.body.scrollLeft}),y.computedStyle=window.getComputedStyle?function(A,m){return m?(window.getComputedStyle(A,"")||{})[m]||"":window.getComputedStyle(A,"")||{}}:function(A,m){return m?A.currentStyle[m]:A.currentStyle},y.setInnerHtml=function(A,m){var l=A.cloneNode(!1);return l.innerHTML=m,A.parentNode.replaceChild(l,A),l},"textContent"in document.documentElement?(y.setInnerText=function(A,m){A.textContent=m},y.getInnerText=function(A){return A.textContent}):(y.setInnerText=function(A,m){A.innerText=m},y.getInnerText=function(A){return A.innerText}),y.getParentWindow=function(A){return A.defaultView||A.parentWindow}):y.importCssString=function(){}}),ace.define("ace/lib/oop",["require","exports","module"],function(w,y,U){"use strict";y.inherits=function($,A){$.super_=A,$.prototype=Object.create(A.prototype,{constructor:{value:$,enumerable:!1,writable:!0,configurable:!0}})},y.mixin=function($,A){for(var m in A)$[m]=A[m];return $},y.implement=function($,A){y.mixin($,A)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop"],function(w,y,U){"use strict";w("./fixoldbrowsers");var $=w("./oop"),A=function(){var l,s,m={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,super:8,meta:8,command:8,cmd:8},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:"*"}};for(s in m.FUNCTION_KEYS)l=m.FUNCTION_KEYS[s].toLowerCase(),m[l]=parseInt(s,10);for(s in m.PRINTABLE_KEYS)l=m.PRINTABLE_KEYS[s].toLowerCase(),m[l]=parseInt(s,10);return $.mixin(m,m.MODIFIER_KEYS),$.mixin(m,m.PRINTABLE_KEYS),$.mixin(m,m.FUNCTION_KEYS),m.enter=m.return,m.escape=m.esc,m.del=m.delete,m[173]="-",function(){for(var t=["cmd","ctrl","alt","shift"],e=Math.pow(2,t.length);e--;)m.KEY_MODS[e]=t.filter(function(r){return e&m.KEY_MODS[r]}).join("-")+"-"}(),m.KEY_MODS[0]="",m.KEY_MODS[-1]="input-",m}();$.mixin(y,A),y.keyCodeToString=function(m){var l=A[m];return"string"!=typeof l&&(l=String.fromCharCode(m)),l.toLowerCase()}}),ace.define("ace/lib/useragent",["require","exports","module"],function(w,y,U){"use strict";if(y.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},y.getOS=function(){return y.isMac?y.OS.MAC:y.isLinux?y.OS.LINUX:y.OS.WINDOWS},"object"==typeof navigator){var $=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),A=navigator.userAgent;y.isWin="win"==$,y.isMac="mac"==$,y.isLinux="linux"==$,y.isIE="Microsoft Internet Explorer"==navigator.appName||navigator.appName.indexOf("MSAppHost")>=0?parseFloat((A.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((A.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),y.isOldIE=y.isIE&&y.isIE<9,y.isGecko=y.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,y.isOldGecko=y.isGecko&&parseInt((A.match(/rv:(\d+)/)||[])[1],10)<4,y.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),y.isWebKit=parseFloat(A.split("WebKit/")[1])||void 0,y.isChrome=parseFloat(A.split(" Chrome/")[1])||void 0,y.isAIR=A.indexOf("AdobeAIR")>=0,y.isIPad=A.indexOf("iPad")>=0,y.isChromeOS=A.indexOf(" CrOS ")>=0,y.isIOS=/iPad|iPhone|iPod/.test(A)&&!window.MSStream,y.isIOS&&(y.isMac=!0)}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(w,y,U){"use strict";var $=w("./keys"),A=w("./useragent"),m=null,l=0;y.addListener=function(i,o,n){if(i.addEventListener)return i.addEventListener(o,n,!1);if(i.attachEvent){var h=function(){n.call(i,window.event)};n._wrapper=h,i.attachEvent("on"+o,h)}},y.removeListener=function(i,o,n){if(i.removeEventListener)return i.removeEventListener(o,n,!1);i.detachEvent&&i.detachEvent("on"+o,n._wrapper||n)},y.stopEvent=function(i){return y.stopPropagation(i),y.preventDefault(i),!1},y.stopPropagation=function(i){i.stopPropagation?i.stopPropagation():i.cancelBubble=!0},y.preventDefault=function(i){i.preventDefault?i.preventDefault():i.returnValue=!1},y.getButton=function(i){return"dblclick"==i.type?0:"contextmenu"==i.type||A.isMac&&i.ctrlKey&&!i.altKey&&!i.shiftKey?2:i.preventDefault?i.button:{1:0,2:2,4:1}[i.button]},y.capture=function(i,o,n){function h(c){o&&o(c),n&&n(c),y.removeListener(document,"mousemove",o,!0),y.removeListener(document,"mouseup",h,!0),y.removeListener(document,"dragstart",h,!0)}return y.addListener(document,"mousemove",o,!0),y.addListener(document,"mouseup",h,!0),y.addListener(document,"dragstart",h,!0),h},y.addTouchMoveListener=function(i,o){var n,h;y.addListener(i,"touchstart",function(c){var C=c.touches[0];n=C.clientX,h=C.clientY}),y.addListener(i,"touchmove",function(c){var F=c.touches;if(!(F.length>1)){var C=F[0];c.wheelX=n-C.clientX,c.wheelY=h-C.clientY,n=C.clientX,h=C.clientY,o(c)}})},y.addMouseWheelListener=function(i,o){"onmousewheel"in i?y.addListener(i,"mousewheel",function(n){void 0!==n.wheelDeltaX?(n.wheelX=-n.wheelDeltaX/8,n.wheelY=-n.wheelDeltaY/8):(n.wheelX=0,n.wheelY=-n.wheelDelta/8),o(n)}):"onwheel"in i?y.addListener(i,"wheel",function(n){switch(n.deltaMode){case n.DOM_DELTA_PIXEL:n.wheelX=.35*n.deltaX||0,n.wheelY=.35*n.deltaY||0;break;case n.DOM_DELTA_LINE:case n.DOM_DELTA_PAGE:n.wheelX=5*(n.deltaX||0),n.wheelY=5*(n.deltaY||0)}o(n)}):y.addListener(i,"DOMMouseScroll",function(n){n.axis&&n.axis==n.HORIZONTAL_AXIS?(n.wheelX=5*(n.detail||0),n.wheelY=0):(n.wheelX=0,n.wheelY=5*(n.detail||0)),o(n)})},y.addMultiMouseDownListener=function(i,o,n,h){var F,C,u,c=0,g={2:"dblclick",3:"tripleclick",4:"quadclick"};function a(p){if(0!==y.getButton(p)?c=0:p.detail>1?++c>4&&(c=1):c=1,A.isIE){var E=Math.abs(p.clientX-F)>5||Math.abs(p.clientY-C)>5;(!u||E)&&(c=1),u&&clearTimeout(u),u=setTimeout(function(){u=null},o[c-1]||600),1==c&&(F=p.clientX,C=p.clientY)}if(p._clicks=c,n[h]("mousedown",p),c>4)c=0;else if(c>1)return n[h](g[c],p)}function f(p){c=2,u&&clearTimeout(u),u=setTimeout(function(){u=null},o[c-1]||600),n[h]("mousedown",p),n[h](g[c],p)}Array.isArray(i)||(i=[i]),i.forEach(function(p){y.addListener(p,"mousedown",a),A.isOldIE&&y.addListener(p,"dblclick",f)})};var s=A.isMac&&A.isOpera&&!("KeyboardEvent"in window)?function(i){return 0|(i.metaKey?1:0)|(i.altKey?2:0)|(i.shiftKey?4:0)|(i.ctrlKey?8:0)}:function(i){return 0|(i.ctrlKey?1:0)|(i.altKey?2:0)|(i.shiftKey?4:0)|(i.metaKey?8:0)};function t(i,o,n){var h=s(o);if(!A.isMac&&m){if(o.getModifierState&&(o.getModifierState("OS")||o.getModifierState("Win"))&&(h|=8),m.altGr){if(3==(3&h))return;m.altGr=0}if(18===n||17===n){var c="location"in o?o.location:o.keyLocation;17===n&&1===c?1==m[n]&&(l=o.timeStamp):18===n&&3===h&&2===c&&o.timeStamp-l<50&&(m.altGr=!0)}}if(n in $.MODIFIER_KEYS&&(n=-1),8&h&&n>=91&&n<=93&&(n=-1),h||13!==n||3!==(c="location"in o?o.location:o.keyLocation)||(i(o,h,-n),!o.defaultPrevented)){if(A.isChromeOS&&8&h){if(i(o,h,n),o.defaultPrevented)return;h&=-9}return!!(h||n in $.FUNCTION_KEYS||n in $.PRINTABLE_KEYS)&&i(o,h,n)}}function e(){m=Object.create(null)}y.getModifierString=function(i){return $.KEY_MODS[s(i)]},y.addCommandKeyListener=function(i,o){var n=y.addListener;if(A.isOldGecko||A.isOpera&&!("KeyboardEvent"in window)){var h=null;n(i,"keydown",function(F){h=F.keyCode}),n(i,"keypress",function(F){return t(o,F,h)})}else{var c=null;n(i,"keydown",function(F){m[F.keyCode]=(m[F.keyCode]||0)+1;var C=t(o,F,F.keyCode);return c=F.defaultPrevented,C}),n(i,"keypress",function(F){c&&(F.ctrlKey||F.altKey||F.shiftKey||F.metaKey)&&(y.stopEvent(F),c=null)}),n(i,"keyup",function(F){m[F.keyCode]=null}),m||(e(),n(window,"focus",e))}},"object"==typeof window&&window.postMessage&&!A.isOldIE&&(y.nextTick=function(i,o){o=o||window;var n="zero-timeout-message-1";y.addListener(o,"message",function h(c){c.data==n&&(y.stopPropagation(c),y.removeListener(o,"message",h),i())}),o.postMessage(n,"*")}),y.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),y.nextFrame=y.nextFrame?y.nextFrame.bind(window):function(i){setTimeout(i,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(w,y,U){"use strict";y.last=function(m){return m[m.length-1]},y.stringReverse=function(m){return m.split("").reverse().join("")},y.stringRepeat=function(m,l){for(var s="";l>0;)1&l&&(s+=m),(l>>=1)&&(m+=m);return s};var $=/^\s\s*/,A=/\s\s*$/;y.stringTrimLeft=function(m){return m.replace($,"")},y.stringTrimRight=function(m){return m.replace(A,"")},y.copyObject=function(m){var l={};for(var s in m)l[s]=m[s];return l},y.copyArray=function(m){for(var l=[],s=0,t=m.length;s<t;s++)l[s]=m[s]&&"object"==typeof m[s]?this.copyObject(m[s]):m[s];return l},y.deepCopy=function m(l){if("object"!=typeof l||!l)return l;var s;if(Array.isArray(l)){s=[];for(var t=0;t<l.length;t++)s[t]=m(l[t]);return s}if("[object Object]"!==Object.prototype.toString.call(l))return l;for(var t in s={},l)s[t]=m(l[t]);return s},y.arrayToMap=function(m){for(var l={},s=0;s<m.length;s++)l[m[s]]=1;return l},y.createMap=function(m){var l=Object.create(null);for(var s in m)l[s]=m[s];return l},y.arrayRemove=function(m,l){for(var s=0;s<=m.length;s++)l===m[s]&&m.splice(s,1)},y.escapeRegExp=function(m){return m.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},y.escapeHTML=function(m){return m.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<")},y.getMatchOffsets=function(m,l){var s=[];return m.replace(l,function(t){s.push({offset:arguments[arguments.length-2],length:t.length})}),s},y.deferredCall=function(m){var l=null,s=function(){l=null,m()},t=function(e){return t.cancel(),l=setTimeout(s,e||0),t};return t.schedule=t,t.call=function(){return this.cancel(),m(),t},t.cancel=function(){return clearTimeout(l),l=null,t},t.isPending=function(){return l},t},y.delayedCall=function(m,l){var s=null,t=function(){s=null,m()},e=function(r){null==s&&(s=setTimeout(t,r||l))};return e.delay=function(r){s&&clearTimeout(s),s=setTimeout(t,r||l)},e.schedule=e,e.call=function(){this.cancel(),m()},e.cancel=function(){s&&clearTimeout(s),s=null},e.isPending=function(){return s},e}}),ace.define("ace/keyboard/textinput_ios",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/lib/keys"],function(w,y,U){"use strict";var $=w("../lib/event"),A=w("../lib/useragent"),m=w("../lib/dom"),l=w("../lib/lang"),s=w("../lib/keys"),t=s.KEY_MODS,e=A.isChrome<18,r=A.isIE;y.TextInput=function(o,n){var c=m.createElement("textarea");c.className=A.isIOS?"ace_text-input ace_text-input-ios":"ace_text-input",A.isTouchPad&&c.setAttribute("x-palm-disable-auto-cap",!0),c.setAttribute("wrap","off"),c.setAttribute("autocorrect","off"),c.setAttribute("autocapitalize","off"),c.setAttribute("spellcheck",!1),c.style.opacity="0",o.insertBefore(c,o.firstChild);var F="\n aaaa a\n",C=!1,u=!1,g=!1,a=!1,f="",p=!0;try{var E=document.activeElement===c}catch(H){}$.addListener(c,"blur",function(H){n.onBlur(H),E=!1}),$.addListener(c,"focus",function(H){E=!0,n.onFocus(H),b()}),this.focus=function(){if(f)return c.focus();c.style.position="fixed",c.focus()},this.blur=function(){c.blur()},this.isFocused=function(){return E};var d=l.delayedCall(function(){E&&b(p)}),v=l.delayedCall(function(){a||(c.value=F,E&&b())});function b(H){if(!a){if(a=!0,k)G=0,X=H?0:c.value.length-1;else var G=4,X=5;try{c.setSelectionRange(G,X)}catch(ee){}a=!1}}function B(){a||(c.value=F,A.isWebKit&&v.schedule())}A.isWebKit||n.addEventListener("changeSelection",function(){n.selection.isEmpty()!=p&&(p=!p,d.schedule())}),B(),E&&n.onFocus();var k=null;this.setInputHandler=function(H){k=H},this.getInputHandler=function(){return k};var M=!1,O=function(H){4===c.selectionStart&&5===c.selectionEnd||(k&&(H=k(H),k=null),g?(b(),H&&n.onPaste(H),g=!1):H==F.substr(0)&&4===c.selectionStart?n.execCommand(M?"del":"backspace",{source:"ace"}):C||(H.substring(0,9)==F&&H.length>F.length?H=H.substr(9):H.substr(0,4)==F.substr(0,4)?H=H.substr(4,H.length-F.length+1):H.charAt(H.length-1)==F.charAt(0)&&(H=H.slice(0,-1)),H==F.charAt(0)||H.charAt(H.length-1)==F.charAt(0)&&(H=H.slice(0,-1)),H&&n.onTextInput(H)),C&&(C=!1),M&&(M=!1))},z=function(H){a||(O(c.value),B())},V=function(H,G,X){var ee=H.clipboardData||window.clipboardData;if(ee&&!e){var te=r||X?"Text":"text/plain";try{return G?!1!==ee.setData(te,G):ee.getData(te)}catch(q){if(!X)return V(q,G,!0)}}},R=function(H,G){var X=n.getCopyText();if(!X)return $.preventDefault(H);V(H,X)?(A.isIOS&&(u=G,c.value="\n aa"+X+"a a\n",c.setSelectionRange(4,4+X.length),C={value:X}),G?n.onCut():n.onCopy(),A.isIOS||$.preventDefault(H)):(C=!0,c.value=X,c.select(),setTimeout(function(){C=!1,B(),b(),G?n.onCut():n.onCopy()}))};$.addCommandKeyListener(c,n.onCommandKey.bind(n)),$.addListener(c,"select",function(H){!function(H){return 0===H.selectionStart&&H.selectionEnd===H.value.length}(c)?k&&b(n.selection.isEmpty()):(n.selectAll(),b())}),$.addListener(c,"input",z),$.addListener(c,"cut",function(H){R(H,!0)}),$.addListener(c,"copy",function(H){R(H,!1)}),$.addListener(c,"paste",function(H){var G=V(H);"string"==typeof G?(G&&n.onPaste(G,H),A.isIE&&setTimeout(b),$.preventDefault(H)):(c.value="",g=!0)});var _,P=function(){if(a&&n.onCompositionUpdate&&!n.$readOnly){var H=c.value.replace(/\x01/g,"");if(a.lastValue!==H&&(n.onCompositionUpdate(H),a.lastValue&&n.undo(),a.canUndo&&(a.lastValue=H),a.lastValue)){var G=n.selection.getRange();n.insert(a.lastValue),n.session.markUndoGroup(),a.range=n.selection.getRange(),n.selection.setRange(G),n.selection.clearSelection()}}},I=function(H){if(n.onCompositionEnd&&!n.$readOnly){var G=a;a=!1;var X=setTimeout(function(){X=null;var te=c.value.replace(/\x01/g,"");a||(te==G.lastValue?B():!G.lastValue&&te&&(B(),O(te)))});k=function(q){return X&&clearTimeout(X),(q=q.replace(/\x01/g,""))==G.lastValue?"":(G.lastValue&&X&&n.undo(),q)},n.onCompositionEnd(),n.removeListener("mousedown",I),"compositionend"==H.type&&G.range&&n.selection.setRange(G.range),(A.isChrome&&A.isChrome>=53||A.isWebKit&&A.isWebKit>=603)&&z()}},N=l.delayedCall(P,50);function W(){clearTimeout(_),_=setTimeout(function(){f&&(c.style.cssText=f,f=""),null==n.renderer.$keepTextAreaAtCursor&&(n.renderer.$keepTextAreaAtCursor=!0,n.renderer.$moveTextAreaToCursor())},0)}$.addListener(c,"compositionstart",function(H){a||!n.onCompositionStart||n.$readOnly||((a={}).canUndo=n.session.$undoManager,n.onCompositionStart(),setTimeout(P,0),n.on("mousedown",I),a.canUndo&&!n.selection.isEmpty()&&(n.insert(""),n.session.markUndoGroup(),n.selection.clearSelection()),n.session.markUndoGroup())}),A.isGecko?$.addListener(c,"text",function(){N.schedule()}):($.addListener(c,"keyup",function(){N.schedule()}),$.addListener(c,"keydown",function(){N.schedule()})),$.addListener(c,"compositionend",I),this.getElement=function(){return c},this.setReadOnly=function(H){c.readOnly=H},this.onContextMenu=function(H){M=!0,b(n.selection.isEmpty()),n._emit("nativecontextmenu",{target:n,domEvent:H}),this.moveToMouse(H,!0)},this.moveToMouse=function(H,G){f||(f=c.style.cssText),c.style.cssText=(G?"z-index:100000;":"")+"height:"+c.style.height+";"+(A.isIE?"opacity:0.1;":"");var X=n.container.getBoundingClientRect(),ee=m.computedStyle(n.container),te=X.top+(parseInt(ee.borderTopWidth)||0),q=X.left+(parseInt(X.borderLeftWidth)||0),Z=X.bottom-te-c.clientHeight-2,ie=function(oe){c.style.left=oe.clientX-q-2+"px",c.style.top=Math.min(oe.clientY-te-2,Z)+"px"};ie(H),"mousedown"==H.type&&(n.renderer.$keepTextAreaAtCursor&&(n.renderer.$keepTextAreaAtCursor=null),clearTimeout(_),A.isWin&&$.capture(n.container,ie,W))},this.onContextMenuClose=W;var Y=function(H){n.textInput.onContextMenu(H),W()};if($.addListener(c,"mouseup",Y),$.addListener(c,"mousedown",function(H){H.preventDefault(),W()}),$.addListener(n.renderer.scroller,"contextmenu",Y),$.addListener(c,"contextmenu",Y),A.isIOS){var j=null,Q=!1;o.addEventListener("keydown",function(H){j&&clearTimeout(j),Q=!0}),o.addEventListener("keyup",function(H){j=setTimeout(function(){Q=!1},100)});var J=function(H){if(document.activeElement===c&&!Q){if(u)return setTimeout(function(){u=!1},100);var G=c.selectionStart,X=c.selectionEnd;if(c.setSelectionRange(4,5),G==X)switch(G){case 0:n.onCommandKey(null,0,s.up);break;case 1:n.onCommandKey(null,0,s.home);break;case 2:n.onCommandKey(null,t.option,s.left);break;case 4:n.onCommandKey(null,0,s.left);break;case 5:n.onCommandKey(null,0,s.right);break;case 7:n.onCommandKey(null,t.option,s.right);break;case 8:n.onCommandKey(null,0,s.end);break;case 9:n.onCommandKey(null,0,s.down)}else{switch(X){case 6:n.onCommandKey(null,t.shift,s.right);break;case 7:n.onCommandKey(null,t.shift|t.option,s.right);break;case 8:n.onCommandKey(null,t.shift,s.end);break;case 9:n.onCommandKey(null,t.shift,s.down)}switch(G){case 0:n.onCommandKey(null,t.shift,s.up);break;case 1:n.onCommandKey(null,t.shift,s.home);break;case 2:n.onCommandKey(null,t.shift|t.option,s.left);break;case 3:n.onCommandKey(null,t.shift,s.left)}}}};document.addEventListener("selectionchange",J),n.on("destroy",function(){document.removeEventListener("selectionchange",J)})}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/keyboard/textinput_ios"],function(w,y,U){"use strict";var $=w("../lib/event"),A=w("../lib/useragent"),m=w("../lib/dom"),l=w("../lib/lang"),s=A.isChrome<18,t=A.isIE,e=w("./textinput_ios").TextInput;y.TextInput=function(i,o){if(A.isIOS)return e.call(this,i,o);var n=m.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",i.insertBefore(n,i.firstChild);var h="\u2028\u2028",c=!1,F=!1,C=!1,u="",g=!0;try{var a=document.activeElement===n}catch(_){}$.addListener(n,"blur",function(_){o.onBlur(_),a=!1}),$.addListener(n,"focus",function(_){a=!0,o.onFocus(_),E()}),this.focus=function(){if(u)return n.focus();var _=n.style.top;n.style.position="fixed",n.style.top="0px",n.focus(),setTimeout(function(){n.style.position="","0px"==n.style.top&&(n.style.top=_)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return a};var f=l.delayedCall(function(){a&&E(g)}),p=l.delayedCall(function(){C||(n.value=h,a&&E())});function E(_){if(!C){if(C=!0,B)var W=0,Y=_?0:n.value.length-1;else W=_?2:1,Y=2;try{n.setSelectionRange(W,Y)}catch(j){}C=!1}}function d(){C||(n.value=h,A.isWebKit&&p.schedule())}A.isWebKit||o.addEventListener("changeSelection",function(){o.selection.isEmpty()!=g&&(g=!g,f.schedule())}),d(),a&&o.onFocus();var B=null;this.setInputHandler=function(_){B=_},this.getInputHandler=function(){return B};var S=!1,D=function(_){B&&(_=B(_),B=null),F?(E(),_&&o.onPaste(_),F=!1):_==h.charAt(0)?o.execCommand(S?"del":"backspace",{source:"ace"}):(_.substring(0,2)==h?_=_.substr(2):_.charAt(0)==h.charAt(0)?_=_.substr(1):_.charAt(_.length-1)==h.charAt(0)&&(_=_.slice(0,-1)),_.charAt(_.length-1)==h.charAt(0)&&(_=_.slice(0,-1)),_&&o.onTextInput(_)),S&&(S=!1)},k=function(_){C||(D(n.value),d())},M=function(_,W,Y){var j=_.clipboardData||window.clipboardData;if(j&&!s){var Q=t||Y?"Text":"text/plain";try{return W?!1!==j.setData(Q,W):j.getData(Q)}catch(J){if(!Y)return M(J,W,!0)}}},O=function(_,W){var Y=o.getCopyText();if(!Y)return $.preventDefault(_);M(_,Y)?(W?o.onCut():o.onCopy(),$.preventDefault(_)):(c=!0,n.value=Y,n.select(),setTimeout(function(){c=!1,d(),E(),W?o.onCut():o.onCopy()}))},z=function(_){O(_,!0)},V=function(_){O(_,!1)},R=function(_){var W=M(_);"string"==typeof W?(W&&o.onPaste(W,_),A.isIE&&setTimeout(E),$.preventDefault(_)):(n.value="",F=!0)};$.addCommandKeyListener(n,o.onCommandKey.bind(o)),$.addListener(n,"select",function(_){c?c=!1:function(_){return 0===_.selectionStart&&_.selectionEnd===_.value.length}(n)?(o.selectAll(),E()):B&&E(o.selection.isEmpty())}),$.addListener(n,"input",k),$.addListener(n,"cut",z),$.addListener(n,"copy",V),$.addListener(n,"paste",R),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&$.addListener(i,"keydown",function(_){if((!A.isMac||_.metaKey)&&_.ctrlKey)switch(_.keyCode){case 67:V(_);break;case 86:R(_);break;case 88:z(_)}});var P,T=function(){if(C&&o.onCompositionUpdate&&!o.$readOnly){var _=n.value.replace(/\u2028/g,"");if(C.lastValue!==_&&(o.onCompositionUpdate(_),C.lastValue&&o.undo(),C.canUndo&&(C.lastValue=_),C.lastValue)){var W=o.selection.getRange();o.insert(C.lastValue),o.session.markUndoGroup(),C.range=o.selection.getRange(),o.selection.setRange(W),o.selection.clearSelection()}}},x=function(_){if(o.onCompositionEnd&&!o.$readOnly){var W=C;C=!1;var Y=setTimeout(function(){Y=null;var Q=n.value.replace(/\u2028/g,"");C||(Q==W.lastValue?d():!W.lastValue&&Q&&(d(),D(Q)))});B=function(J){return Y&&clearTimeout(Y),(J=J.replace(/\u2028/g,""))==W.lastValue?"":(W.lastValue&&Y&&o.undo(),J)},o.onCompositionEnd(),o.removeListener("mousedown",x),"compositionend"==_.type&&W.range&&o.selection.setRange(W.range),(A.isChrome&&A.isChrome>=53||A.isWebKit&&A.isWebKit>=603)&&k()}},L=l.delayedCall(T,50);function I(){clearTimeout(P),P=setTimeout(function(){u&&(n.style.cssText=u,u=""),null==o.renderer.$keepTextAreaAtCursor&&(o.renderer.$keepTextAreaAtCursor=!0,o.renderer.$moveTextAreaToCursor())},0)}$.addListener(n,"compositionstart",function(_){C||!o.onCompositionStart||o.$readOnly||((C={}).canUndo=o.session.$undoManager,o.onCompositionStart(),setTimeout(T,0),o.on("mousedown",x),C.canUndo&&!o.selection.isEmpty()&&(o.insert(""),o.session.markUndoGroup(),o.selection.clearSelection()),o.session.markUndoGroup())}),A.isGecko?$.addListener(n,"text",function(){L.schedule()}):($.addListener(n,"keyup",function(){L.schedule()}),$.addListener(n,"keydown",function(){L.schedule()})),$.addListener(n,"compositionend",x),this.getElement=function(){return n},this.setReadOnly=function(_){n.readOnly=_},this.onContextMenu=function(_){S=!0,E(o.selection.isEmpty()),o._emit("nativecontextmenu",{target:o,domEvent:_}),this.moveToMouse(_,!0)},this.moveToMouse=function(_,W){u||(u=n.style.cssText),n.style.cssText=(W?"z-index:100000;":"")+"height:"+n.style.height+";"+(A.isIE?"opacity:0.1;":"");var Y=o.container.getBoundingClientRect(),j=m.computedStyle(o.container),Q=Y.top+(parseInt(j.borderTopWidth)||0),J=Y.left+(parseInt(Y.borderLeftWidth)||0),H=Y.bottom-Q-n.clientHeight-2,G=function(X){n.style.left=X.clientX-J-2+"px",n.style.top=Math.min(X.clientY-Q-2,H)+"px"};G(_),"mousedown"==_.type&&(o.renderer.$keepTextAreaAtCursor&&(o.renderer.$keepTextAreaAtCursor=null),clearTimeout(P),A.isWin&&$.capture(o.container,G,I))},this.onContextMenuClose=I;var N=function(_){o.textInput.onContextMenu(_),I()};$.addListener(n,"mouseup",N),$.addListener(n,"mousedown",function(_){_.preventDefault(),I()}),$.addListener(o.renderer.scroller,"contextmenu",N),$.addListener(n,"contextmenu",N)}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(w,y,U){"use strict";w("../lib/dom"),w("../lib/event");var m=w("../lib/useragent");function t(i){i.$clickSelection=null;var o=i.editor;o.setDefaultHandler("mousedown",this.onMouseDown.bind(i)),o.setDefaultHandler("dblclick",this.onDoubleClick.bind(i)),o.setDefaultHandler("tripleclick",this.onTripleClick.bind(i)),o.setDefaultHandler("quadclick",this.onQuadClick.bind(i)),o.setDefaultHandler("mousewheel",this.onMouseWheel.bind(i)),o.setDefaultHandler("touchmove",this.onTouchMove.bind(i)),["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(h){i[h]=this[h]},this),i.selectByLines=this.extendSelectionBy.bind(i,"getLineRange"),i.selectByWords=this.extendSelectionBy.bind(i,"getWordRange")}function r(i,o){if(i.start.row==i.end.row)var n=2*o.column-i.start.column-i.end.column;else if(i.start.row!=i.end.row-1||i.start.column||i.end.column)n=2*o.row-i.start.row-i.end.row;else n=o.column-4;return n<0?{cursor:i.start,anchor:i.end}:{cursor:i.end,anchor:i.start}}(function(){this.onMouseDown=function(i){var o=i.inSelection(),n=i.getDocumentPosition();this.mousedownEvent=i;var h=this.editor,c=i.getButton();if(0!==c){var C=h.getSelectionRange().isEmpty();return h.$blockScrolling++,(C||1==c)&&h.selection.moveToPosition(n),h.$blockScrolling--,void(2==c&&(h.textInput.onContextMenu(i.domEvent),m.isMozilla||i.preventDefault()))}return this.mousedownEvent.time=Date.now(),!o||h.isFocused()||(h.focus(),!this.$focusTimout||this.$clickSelection||h.inMultiSelectMode)?(this.captureMouse(i),this.startSelect(n,i.domEvent._clicks>1),i.preventDefault()):(this.setState("focusWait"),void this.captureMouse(i))},this.startSelect=function(i,o){i=i||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(i):o||n.selection.moveToPosition(i),o||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var i,o=this.editor,n=o.renderer.screenToTextCoordinates(this.x,this.y);if(o.$blockScrolling++,this.$clickSelection){var h=this.$clickSelection.comparePoint(n);if(-1==h)i=this.$clickSelection.end;else if(1==h)i=this.$clickSelection.start;else{var c=r(this.$clickSelection,n);n=c.cursor,i=c.anchor}o.selection.setSelectionAnchor(i.row,i.column)}o.selection.selectToPosition(n),o.$blockScrolling--,o.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(i){var o,n=this.editor,h=n.renderer.screenToTextCoordinates(this.x,this.y),c=n.selection[i](h.row,h.column);if(n.$blockScrolling++,this.$clickSelection){var F=this.$clickSelection.comparePoint(c.start),C=this.$clickSelection.comparePoint(c.end);if(-1==F&&C<=0)o=this.$clickSelection.end,(c.end.row!=h.row||c.end.column!=h.column)&&(h=c.start);else if(1==C&&F>=0)o=this.$clickSelection.start,(c.start.row!=h.row||c.start.column!=h.column)&&(h=c.end);else if(-1==F&&1==C)h=c.end,o=c.start;else{var u=r(this.$clickSelection,h);h=u.cursor,o=u.anchor}n.selection.setSelectionAnchor(o.row,o.column)}n.selection.selectToPosition(h),n.$blockScrolling--,n.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 i=function(i,o,n,h){return Math.sqrt(Math.pow(n-i,2)+Math.pow(h-o,2))}(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),o=Date.now();(i>0||o-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(i){var o=i.getDocumentPosition(),n=this.editor,c=n.session.getBracketRange(o);c?(c.isEmpty()&&(c.start.column--,c.end.column++),this.setState("select")):(c=n.selection.getWordRange(o.row,o.column),this.setState("selectByWords")),this.$clickSelection=c,this.select()},this.onTripleClick=function(i){var o=i.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var h=n.getSelectionRange();h.isMultiLine()&&h.contains(o.row,o.column)?(this.$clickSelection=n.selection.getLineRange(h.start.row),this.$clickSelection.end=n.selection.getLineRange(h.end.row).end):this.$clickSelection=n.selection.getLineRange(o.row),this.select()},this.onQuadClick=function(i){var o=this.editor;o.selectAll(),this.$clickSelection=o.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(i){if(!i.getAccelKey()){i.getShiftKey()&&i.wheelY&&!i.wheelX&&(i.wheelX=i.wheelY,i.wheelY=0);var o=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,h=i.domEvent.timeStamp,c=h-n.t,F=i.wheelX/c,C=i.wheelY/c;c<250&&(F=(F+n.vx)/2,C=(C+n.vy)/2);var u=Math.abs(F/C),g=!1;if(u>=1&&o.renderer.isScrollableBy(i.wheelX*i.speed,0)&&(g=!0),u<=1&&o.renderer.isScrollableBy(0,i.wheelY*i.speed)&&(g=!0),g?n.allowed=h:h-n.allowed<250&&(Math.abs(F)<=1.1*Math.abs(n.vx)&&Math.abs(C)<=1.1*Math.abs(n.vy)?(g=!0,n.allowed=h):n.allowed=0),n.t=h,n.vx=F,n.vy=C,g)return o.renderer.scrollBy(i.wheelX*i.speed,i.wheelY*i.speed),i.stop()}},this.onTouchMove=function(i){this.editor._emit("mousewheel",i)}}).call(t.prototype),y.DefaultHandlers=t}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(w,y,U){"use strict";w("./lib/oop");var A=w("./lib/dom");function m(l){this.isOpen=!1,this.$element=null,this.$parentNode=l}(function(){this.$init=function(){return this.$element=A.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(l){A.setInnerText(this.getElement(),l)},this.setHtml=function(l){this.getElement().innerHTML=l},this.setPosition=function(l,s){this.getElement().style.left=l+"px",this.getElement().style.top=s+"px"},this.setClassName=function(l){A.addCssClass(this.getElement(),l)},this.show=function(l,s,t){null!=l&&this.setText(l),null!=s&&null!=t&&this.setPosition(s,t),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(m.prototype),y.Tooltip=m}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(w,y,U){"use strict";var $=w("../lib/dom"),A=w("../lib/oop"),m=w("../lib/event"),l=w("../tooltip").Tooltip;function t(e){l.call(this,e)}A.inherits(t,l),function(){this.setPosition=function(e,r){var i=window.innerWidth||document.documentElement.clientWidth,o=window.innerHeight||document.documentElement.clientHeight,n=this.getWidth(),h=this.getHeight();(e+=15)+n>i&&(e-=e+n-i),(r+=15)+h>o&&(r-=20+h),l.prototype.setPosition.call(this,e,r)}}.call(t.prototype),y.GutterHandler=function(e){var n,h,c,r=e.editor,i=r.renderer.$gutterLayer,o=new t(r.container);function C(){n&&(n=clearTimeout(n)),c&&(o.hide(),c=null,r._signal("hideGutterTooltip",o),r.removeEventListener("mousewheel",C))}function u(g){o.setPosition(g.x,g.y)}e.editor.setDefaultHandler("guttermousedown",function(g){if(r.isFocused()&&0==g.getButton()&&"foldWidgets"!=i.getRegion(g)){var f=g.getDocumentPosition().row,p=r.session.selection;if(g.getShiftKey())p.selectTo(f,0);else{if(2==g.domEvent.detail)return r.selectAll(),g.preventDefault();e.$clickSelection=r.selection.getLineRange(f)}return e.setState("selectByLines"),e.captureMouse(g),g.preventDefault()}}),e.editor.setDefaultHandler("guttermousemove",function(g){if($.hasCssClass(g.domEvent.target||g.domEvent.srcElement,"ace_fold-widget"))return C();c&&e.$tooltipFollowsMouse&&u(g),h=g,!n&&(n=setTimeout(function(){n=null,h&&!e.isMousePressed?function(){var g=h.getDocumentPosition().row,a=i.$annotations[g];if(!a)return C();if(g==r.session.getLength()){var p=r.renderer.pixelToScreenCoordinates(0,h.y).row,E=h.$pos;if(p>r.session.documentToScreenRow(E.row,E.column))return C()}if(c!=a)if(c=a.text.join("<br/>"),o.setHtml(c),o.show(),r._signal("showGutterTooltip",o),r.on("mousewheel",C),e.$tooltipFollowsMouse)u(h);else{var v=h.domEvent.target.getBoundingClientRect(),b=o.getElement().style;b.left=v.right+"px",b.top=v.bottom+"px"}}():C()},50))}),m.addListener(r.renderer.$gutter,"mouseout",function(g){h=null,c&&!n&&(n=setTimeout(function(){n=null,C()},50))}),r.on("changeSession",C)}}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(w,y,U){"use strict";var $=w("../lib/event"),A=w("../lib/useragent"),m=y.MouseEvent=function(l,s){this.domEvent=l,this.editor=s,this.x=this.clientX=l.clientX,this.y=this.clientY=l.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){$.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){$.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var s=this.editor.getSelectionRange();if(s.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=s.contains(t.row,t.column)}return this.$inSelection},this.getButton=function(){return $.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=A.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(m.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(w,y,U){"use strict";var $=w("../lib/dom"),A=w("../lib/event"),m=w("../lib/useragent");function e(i){var o=i.editor,n=$.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",m.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(T){i[T]=this[T]},this),o.addEventListener("mousedown",this.onMouseDown.bind(i));var F,C,u,g,a,f,E,d,v,b,B,c=o.container,p=0;function k(){var T=f;(function(T,x){var L=Date.now();b&&x&&T.row==x.row&&x&&T.column==x.column?r(B.x,B.y,C,u)>5?b=null:L-b>=200&&(o.renderer.scrollCursorIntoView(),b=null):(o.$blockScrolling+=1,o.moveCursorToPosition(T),o.$blockScrolling-=1,b=L,B={x:C,y:u})})(f=o.renderer.screenToTextCoordinates(C,u),T),function(T,x){var L=Date.now(),P=o.renderer.layerConfig.lineHeight,I=o.renderer.layerConfig.characterWidth,N=o.renderer.scroller.getBoundingClientRect(),_={x:{left:C-N.left,right:N.right-C},y:{top:u-N.top,bottom:N.bottom-u}},W=Math.min(_.x.left,_.x.right),Y=Math.min(_.y.top,_.y.bottom),j={row:T.row,column:T.column};W/I<=2&&(j.column+=_.x.left<_.x.right?-3:2),Y/P<=1&&(j.row+=_.y.top<_.y.bottom?-1:1),T.row!=j.row||T.column!=j.column&&x&&T.row==x.row?v?L-v>=200&&o.renderer.scrollCursorIntoView(j):v=L:v=null}(f,T)}function M(){a=o.selection.toOrientedRange(),F=o.session.addMarker(a,"ace_selection",o.getSelectionStyle()),o.clearSelection(),o.isFocused()&&o.renderer.$cursorLayer.setBlinking(!1),clearInterval(g),k(),g=setInterval(k,20),p=0,A.addListener(document,"mousemove",V)}function O(){clearInterval(g),o.session.removeMarker(F),F=null,o.$blockScrolling+=1,o.selection.fromOrientedRange(a),o.$blockScrolling-=1,o.isFocused()&&!d&&o.renderer.$cursorLayer.setBlinking(!o.getReadOnly()),a=null,f=null,p=0,v=null,b=null,A.removeListener(document,"mousemove",V)}this.onDragStart=function(T){if(this.cancelDrag||!c.draggable){var x=this;return setTimeout(function(){x.startSelect(),x.captureMouse(T)},0),T.preventDefault()}a=o.getSelectionRange();var L=T.dataTransfer;L.effectAllowed=o.getReadOnly()?"copy":"copyMove",m.isOpera&&(o.container.appendChild(n),n.scrollTop=0),L.setDragImage&&L.setDragImage(n,0,0),m.isOpera&&o.container.removeChild(n),L.clearData(),L.setData("Text",o.session.getTextRange()),d=!0,this.setState("drag")},this.onDragEnd=function(T){c.draggable=!1,d=!1,this.setState(null),o.getReadOnly()||(!E&&"move"==T.dataTransfer.dropEffect&&o.session.remove(o.getSelectionRange()),o.renderer.$cursorLayer.setBlinking(!0)),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(T){if(!o.getReadOnly()&&R(T.dataTransfer))return C=T.clientX,u=T.clientY,F||M(),p++,T.dataTransfer.dropEffect=E=K(T),A.preventDefault(T)},this.onDragOver=function(T){if(!o.getReadOnly()&&R(T.dataTransfer))return C=T.clientX,u=T.clientY,F||(M(),p++),null!==z&&(z=null),T.dataTransfer.dropEffect=E=K(T),A.preventDefault(T)},this.onDragLeave=function(T){if(--p<=0&&F)return O(),E=null,A.preventDefault(T)},this.onDrop=function(T){if(f){var x=T.dataTransfer;if(d)switch(E){case"move":a=a.contains(f.row,f.column)?{start:f,end:f}:o.moveText(a,f);break;case"copy":a=o.moveText(a,f,!0)}else{var L=x.getData("Text");a={start:f,end:o.session.insert(f,L)},o.focus(),E=null}return O(),A.preventDefault(T)}},A.addListener(c,"dragstart",this.onDragStart.bind(i)),A.addListener(c,"dragend",this.onDragEnd.bind(i)),A.addListener(c,"dragenter",this.onDragEnter.bind(i)),A.addListener(c,"dragover",this.onDragOver.bind(i)),A.addListener(c,"dragleave",this.onDragLeave.bind(i)),A.addListener(c,"drop",this.onDrop.bind(i));var z=null;function V(){null==z&&(z=setTimeout(function(){null!=z&&F&&O()},20))}function R(T){var x=T.types;return!x||Array.prototype.some.call(x,function(L){return"text/plain"==L||"Text"==L})}function K(T){var x=["copy","copymove","all","uninitialized"],P=m.isMac?T.altKey:T.ctrlKey,I="uninitialized";try{I=T.dataTransfer.effectAllowed.toLowerCase()}catch(_){}var N="none";return P&&x.indexOf(I)>=0?N="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(I)>=0?N="move":x.indexOf(I)>=0&&(N="copy"),N}}function r(i,o,n,h){return Math.sqrt(Math.pow(n-i,2)+Math.pow(h-o,2))}(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(i){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var i=this.editor;i.container.draggable=!0,i.renderer.$cursorLayer.setBlinking(!1),i.setStyle("ace_dragging"),i.renderer.setCursorStyle(m.isWin?"default":"move"),this.setState("dragReady")},this.onMouseDrag=function(i){var o=this.editor.container;m.isIE&&"dragReady"==this.state&&r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&o.dragDrop(),"dragWait"===this.state&&r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(o.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))},this.onMouseDown=function(i){if(this.$dragEnabled){this.mousedownEvent=i;var o=this.editor,n=i.inSelection(),h=i.getButton();if(1===(i.domEvent.detail||1)&&0===h&&n){if(i.editor.inMultiSelectMode&&(i.getAccelKey()||i.getShiftKey()))return;this.mousedownEvent.time=Date.now();var F=i.domEvent.target||i.domEvent.srcElement;"unselectable"in F&&(F.unselectable="on"),o.getDragDelay()?(m.isWebKit&&(this.cancelDrag=!0,o.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(i,this.onMouseDrag.bind(this)),i.defaultPrevented=!0}}}}).call(e.prototype),y.DragdropHandler=e}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(w,y,U){"use strict";var $=w("./dom");y.get=function(A,m){var l=new XMLHttpRequest;l.open("GET",A,!0),l.onreadystatechange=function(){4===l.readyState&&m(l.responseText)},l.send(null)},y.loadScript=function(A,m){var l=$.getDocumentHead(),s=document.createElement("script");s.src=A,l.appendChild(s),s.onload=s.onreadystatechange=function(t,e){(e||!s.readyState||"loaded"==s.readyState||"complete"==s.readyState)&&(s=s.onload=s.onreadystatechange=null,e||m())}},y.qualifyURL=function(A){var m=document.createElement("a");return m.href=A,m.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(w,y,U){"use strict";var $={},A=function(){this.propagationStopped=!0},m=function(){this.defaultPrevented=!0};$._emit=$._dispatchEvent=function(l,s){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var t=this._eventRegistry[l]||[],e=this._defaultHandlers[l];if(t.length||e){("object"!=typeof s||!s)&&(s={}),s.type||(s.type=l),s.stopPropagation||(s.stopPropagation=A),s.preventDefault||(s.preventDefault=m),t=t.slice();for(var r=0;r<t.length&&(t[r](s,this),!s.propagationStopped);r++);if(e&&!s.defaultPrevented)return e(s,this)}},$._signal=function(l,s){var t=(this._eventRegistry||{})[l];if(t){t=t.slice();for(var e=0;e<t.length;e++)t[e](s,this)}},$.once=function(l,s){var t=this;s&&this.addEventListener(l,function e(){t.removeEventListener(l,e),s.apply(null,arguments)})},$.setDefaultHandler=function(l,s){var t=this._defaultHandlers;if(t||(t=this._defaultHandlers={_disabled_:{}}),t[l]){var e=t[l],r=t._disabled_[l];r||(t._disabled_[l]=r=[]),r.push(e);var i=r.indexOf(s);-1!=i&&r.splice(i,1)}t[l]=s},$.removeDefaultHandler=function(l,s){var t=this._defaultHandlers;if(t){var e=t._disabled_[l];if(t[l]==s)e&&this.setDefaultHandler(l,e.pop());else if(e){var i=e.indexOf(s);-1!=i&&e.splice(i,1)}}},$.on=$.addEventListener=function(l,s,t){this._eventRegistry=this._eventRegistry||{};var e=this._eventRegistry[l];return e||(e=this._eventRegistry[l]=[]),-1==e.indexOf(s)&&e[t?"unshift":"push"](s),s},$.off=$.removeListener=$.removeEventListener=function(l,s){this._eventRegistry=this._eventRegistry||{};var t=this._eventRegistry[l];if(t){var e=t.indexOf(s);-1!==e&&t.splice(e,1)}},$.removeAllListeners=function(l){this._eventRegistry&&(this._eventRegistry[l]=[])},y.EventEmitter=$}),ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(w,y,U){var $=w("./oop"),A=w("./event_emitter").EventEmitter,m={setOptions:function(e){Object.keys(e).forEach(function(r){this.setOption(r,e[r])},this)},getOptions:function(e){var r={};return e?Array.isArray(e)||(r=e,e=Object.keys(r)):e=Object.keys(this.$options),e.forEach(function(i){r[i]=this.getOption(i)},this),r},setOption:function(e,r){if(this["$"+e]!==r){var i=this.$options[e];if(!i)return l('misspelled option "'+e+'"');if(i.forwardTo)return this[i.forwardTo]&&this[i.forwardTo].setOption(e,r);i.handlesSet||(this["$"+e]=r),i&&i.set&&i.set.call(this,r)}},getOption:function(e){var r=this.$options[e];return r?r.forwardTo?this[r.forwardTo]&&this[r.forwardTo].getOption(e):r&&r.get?r.get.call(this):this["$"+e]:l('misspelled option "'+e+'"')}};function l(e){"undefined"!=typeof console&&console.warn&&console.warn.apply(console,arguments)}function s(e,r){var i=new Error(e);i.data=r,"object"==typeof console&&console.error&&console.error(i),setTimeout(function(){throw i})}var t=function(){this.$defaultOptions={}};(function(){$.implement(this,A),this.defineOptions=function(e,r,i){return e.$options||(this.$defaultOptions[r]=e.$options={}),Object.keys(i).forEach(function(o){var n=i[o];"string"==typeof n&&(n={forwardTo:n}),n.name||(n.name=o),e.$options[n.name]=n,"initialValue"in n&&(e["$"+n.name]=n.initialValue)}),$.implement(e,m),this},this.resetOptions=function(e){Object.keys(e.$options).forEach(function(r){var i=e.$options[r];"value"in i&&e.setOption(r,i.value)})},this.setDefaultValue=function(e,r,i){var o=this.$defaultOptions[e]||(this.$defaultOptions[e]={});o[r]&&(o.forwardTo?this.setDefaultValue(o.forwardTo,r,i):o[r].value=i)},this.setDefaultValues=function(e,r){Object.keys(r).forEach(function(i){this.setDefaultValue(e,i,r[i])},this)},this.warn=l,this.reportError=s}).call(t.prototype),y.AppConfig=t}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"],function(w,y,U){var $=w("./lib/lang"),m=(w("./lib/oop"),w("./lib/net")),l=w("./lib/app_config").AppConfig;U.exports=y=new l;var s=function(){return this||"undefined"!=typeof window&&window}(),t={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};function e(i){if(s&&s.document){t.packaged=i||w.packaged||U.packaged||s.define&&ne.amdD.packaged;for(var o={},n="",h=document.currentScript||document._currentScript,F=(h&&h.ownerDocument||document).getElementsByTagName("script"),C=0;C<F.length;C++){var u=F[C],g=u.src||u.getAttribute("src");if(g){for(var a=u.attributes,f=0,p=a.length;f<p;f++){var E=a[f];0===E.name.indexOf("data-ace-")&&(o[r(E.name.replace(/^data-ace-/,""))]=E.value)}var d=g.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);d&&(n=d[1])}}for(var v in n&&(o.base=o.base||n,o.packaged=!0),o.basePath=o.base,o.workerPath=o.workerPath||o.base,o.modePath=o.modePath||o.base,o.themePath=o.themePath||o.base,delete o.base,o)void 0!==o[v]&&y.set(v,o[v])}}function r(i){return i.replace(/-(.)/g,function(o,n){return n.toUpperCase()})}y.get=function(i){if(!t.hasOwnProperty(i))throw new Error("Unknown config key: "+i);return t[i]},y.set=function(i,o){if(!t.hasOwnProperty(i))throw new Error("Unknown config key: "+i);t[i]=o},y.all=function(){return $.copyObject(t)},y.moduleUrl=function(i,o){if(t.$moduleUrls[i])return t.$moduleUrls[i];var n=i.split("/"),h="snippets"==(o=o||n[n.length-2]||"")?"/":"-",c=n[n.length-1];if("worker"==o&&"-"==h){var F=new RegExp("^"+o+"[\\-_]|[\\-_]"+o+"$","g");c=c.replace(F,"")}(!c||c==o)&&n.length>1&&(c=n[n.length-2]);var C=t[o+"Path"];return null==C?C=t.basePath:"/"==h&&(o=h=""),C&&"/"!=C.slice(-1)&&(C+="/"),C+o+h+c+this.get("suffix")},y.setModuleUrl=function(i,o){return t.$moduleUrls[i]=o},y.$loading={},y.loadModule=function(i,o){var n,h;Array.isArray(i)&&(h=i[0],i=i[1]);try{n=w(i)}catch(F){}if(n&&!y.$loading[i])return o&&o(n);if(y.$loading[i]||(y.$loading[i]=[]),y.$loading[i].push(o),!(y.$loading[i].length>1)){var c=function(){w([i],function(F){y._emit("load.module",{name:i,module:F});var C=y.$loading[i];y.$loading[i]=null,C.forEach(function(u){u&&u(F)})})};if(!y.get("packaged"))return c();m.loadScript(y.moduleUrl(i,h),c)}},e(!0),y.init=e}),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/config"],function(w,y,U){"use strict";var $=w("../lib/event"),A=w("../lib/useragent"),m=w("./default_handlers").DefaultHandlers,l=w("./default_gutter_handler").GutterHandler,s=w("./mouse_event").MouseEvent,t=w("./dragdrop_handler").DragdropHandler,e=w("../config"),r=function(i){var o=this;this.editor=i,new m(this),new l(this),new t(this);var n=function(F){(!document.hasFocus||!document.hasFocus()||!i.isFocused()&&document.activeElement==(i.textInput&&i.textInput.getElement()))&&window.focus(),i.focus()},h=i.renderer.getMouseEventTarget();$.addListener(h,"click",this.onMouseEvent.bind(this,"click")),$.addListener(h,"mousemove",this.onMouseMove.bind(this,"mousemove")),$.addMultiMouseDownListener([h,i.renderer.scrollBarV&&i.renderer.scrollBarV.inner,i.renderer.scrollBarH&&i.renderer.scrollBarH.inner,i.textInput&&i.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),$.addMouseWheelListener(i.container,this.onMouseWheel.bind(this,"mousewheel")),$.addTouchMoveListener(i.container,this.onTouchMove.bind(this,"touchmove"));var c=i.renderer.$gutter;$.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),$.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),$.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),$.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),$.addListener(h,"mousedown",n),$.addListener(c,"mousedown",n),A.isIE&&i.renderer.scrollBarV&&($.addListener(i.renderer.scrollBarV.element,"mousedown",n),$.addListener(i.renderer.scrollBarH.element,"mousedown",n)),i.on("mousemove",function(F){if(!o.state&&!o.$dragDelay&&o.$dragEnabled){var C=i.renderer.screenToTextCoordinates(F.x,F.y),u=i.session.selection.getRange(),g=i.renderer;!u.isEmpty()&&u.insideStart(C.row,C.column)?g.setCursorStyle("default"):g.setCursorStyle("")}})};(function(){this.onMouseEvent=function(i,o){this.editor._emit(i,new s(o,this.editor))},this.onMouseMove=function(i,o){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;!n||!n.length||this.editor._emit(i,new s(o,this.editor))},this.onMouseWheel=function(i,o){var n=new s(o,this.editor);n.speed=2*this.$scrollSpeed,n.wheelX=o.wheelX,n.wheelY=o.wheelY,this.editor._emit(i,n)},this.onTouchMove=function(i,o){var n=new s(o,this.editor);n.speed=1,n.wheelX=o.wheelX,n.wheelY=o.wheelY,this.editor._emit(i,n)},this.setState=function(i){this.state=i},this.captureMouse=function(i,o){this.x=i.x,this.y=i.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var h=this,c=function(g){if(g){if(A.isWebKit&&!g.which&&h.releaseMouse)return h.releaseMouse();h.x=g.clientX,h.y=g.clientY,o&&o(g),h.mouseEvent=new s(g,h.editor),h.$mouseMoved=!0}},F=function(g){clearInterval(u),C(),h[h.state+"End"]&&h[h.state+"End"](g),h.state="",null==n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),h.isMousePressed=!1,h.$onCaptureMouseMove=h.releaseMouse=null,g&&h.onMouseEvent("mouseup",g)},C=function(){h[h.state]&&h[h.state](),h.$mouseMoved=!1};if(A.isOldIE&&"dblclick"==i.domEvent.type)return setTimeout(function(){F(i)});h.$onCaptureMouseMove=c,h.releaseMouse=$.capture(this.editor.container,c,F);var u=setInterval(C,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var i=function(o){o&&o.domEvent&&"contextmenu"!=o.domEvent.type||(this.editor.off("nativecontextmenu",i),o&&o.domEvent&&$.stopEvent(o.domEvent))}.bind(this);setTimeout(i,10),this.editor.on("nativecontextmenu",i)}}).call(r.prototype),e.defineOptions(r.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:A.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),y.MouseHandler=r}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(w,y,U){"use strict";y.FoldHandler=function(A){A.on("click",function(m){var l=m.getDocumentPosition(),s=A.session,t=s.getFoldAt(l.row,l.column,1);t&&(m.getAccelKey()?s.removeFold(t):s.expandFold(t),m.stop())}),A.on("gutterclick",function(m){if("foldWidgets"==A.renderer.$gutterLayer.getRegion(m)){var s=m.getDocumentPosition().row,t=A.session;t.foldWidgets&&t.foldWidgets[s]&&A.session.onFoldWidgetClick(s,m),A.isFocused()||A.focus(),m.stop()}}),A.on("gutterdblclick",function(m){if("foldWidgets"==A.renderer.$gutterLayer.getRegion(m)){var s=m.getDocumentPosition().row,t=A.session,e=t.getParentFoldRangeData(s,!0),r=e.range||e.firstRange;if(r){var i=t.getFoldAt(s=r.start.row,t.getLine(s).length,1);i?t.removeFold(i):(t.addFold("...",r),A.renderer.scrollCursorIntoView({row:r.start.row,column:0}))}m.stop()}})}}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(w,y,U){"use strict";var $=w("../lib/keys"),A=w("../lib/event"),m=function(l){this.$editor=l,this.$data={editor:l},this.$handlers=[],this.setDefaultHandler(l.commands)};(function(){this.setDefaultHandler=function(l){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=l,this.addKeyboardHandler(l,0)},this.setKeyboardHandler=function(l){var s=this.$handlers;if(s[s.length-1]!=l){for(;s[s.length-1]&&s[s.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(s[s.length-1]);this.addKeyboardHandler(l,1)}},this.addKeyboardHandler=function(l,s){if(l){"function"==typeof l&&!l.handleKeyboard&&(l.handleKeyboard=l);var t=this.$handlers.indexOf(l);-1!=t&&this.$handlers.splice(t,1),null==s?this.$handlers.push(l):this.$handlers.splice(s,0,l),-1==t&&l.attach&&l.attach(this.$editor)}},this.removeKeyboardHandler=function(l){var s=this.$handlers.indexOf(l);return-1!=s&&(this.$handlers.splice(s,1),l.detach&&l.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var l=this.$data,s=l.editor;return this.$handlers.map(function(t){return t.getStatusText&&t.getStatusText(s,l)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(l,s,t,e){for(var r,i=!1,o=this.$editor.commands,n=this.$handlers.length;n--&&!((r=this.$handlers[n].handleKeyboard(this.$data,l,s,t,e))&&r.command&&(i="null"==r.command||o.exec(r.command,this.$editor,r.args,e),i&&e&&-1!=l&&1!=r.passEvent&&1!=r.command.passEvent&&A.stopEvent(e),i)););return!i&&-1==l&&(r={command:"insertstring"},i=o.exec("insertstring",this.$editor,s)),i&&this.$editor._signal&&this.$editor._signal("keyboardActivity",r),i},this.onCommandKey=function(l,s,t){var e=$.keyCodeToString(t);this.$callKeyboardHandlers(s,e,t,l)},this.onTextInput=function(l){this.$callKeyboardHandlers(-1,l)}}).call(m.prototype),y.KeyBinding=m}),ace.define("ace/lib/bidiutil",["require","exports","module"],function(w,y,U){"use strict";var m=0,l=0,s=!1,e=!1,r=!1,n=[[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]],h=[[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]],S=11,R=18,K=[R,R,R,R,R,R,R,R,R,6,5,6,8,5,R,R,R,R,R,R,R,R,R,R,R,R,R,R,5,5,5,6,8,4,4,S,S,S,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,R,R,R,R,R,R,5,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,9,4,S,S,S,S,4,4,4,4,0,4,4,R,4,4,S,S,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,R,R,R,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,S,S,S,S,S,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];function L(_,W,Y){if(!(l<_)){if(1==_&&1==m&&!e)return void Y.reverse();for(var J,H,G,X,j=Y.length,Q=0;Q<j;){if(W[Q]>=_){for(J=Q+1;J<j&&W[J]>=_;)J++;for(H=Q,G=J-1;H<G;H++,G--)X=Y[H],Y[H]=Y[G],Y[G]=X;Q=J}Q++}}}function P(_,W,Y,j){var J,H,G,X,Q=W[j];switch(Q){case 0:case 1:s=!1;case 4:case 3:return Q;case 2:return s?3:2;case 7:return s=!0,1;case 8:return 4;case 9:return j<1||j+1>=W.length||2!=(J=Y[j-1])&&3!=J||2!=(H=W[j+1])&&3!=H?4:(s&&(H=3),H==J?H:4);case 10:return 2==(J=j>0?Y[j-1]:5)&&j+1<W.length&&2==W[j+1]?2:4;case S:if(j>0&&2==Y[j-1])return 2;if(s)return 4;for(X=j+1,G=W.length;X<G&&W[X]==S;)X++;return X<G&&2==W[X]?2:4;case 12:for(G=W.length,X=j+1;X<G&&12==W[X];)X++;if(X<G){var ee=_[j];if(J=W[X],(ee>=1425&&ee<=2303||64286==ee)&&(1==J||7==J))return 1}return j<1||5==(J=W[j-1])?4:Y[j-1];case 5:return s=!1,e=!0,m;case 6:return r=!0,4;case 13:case 14:case 16:case 17:case 15:s=!1;case R:return 4}}function I(_){var W=_.charCodeAt(0),Y=W>>8;return 0==Y?W>191?0:K[W]:5==Y?/[\u0591-\u05f4]/.test(_)?1:0:6==Y?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(_)?12:/[\u0660-\u0669\u066b-\u066c]/.test(_)?3:1642==W?S:/[\u06f0-\u06f9]/.test(_)?2:7:32==Y&&W<=8287?T[255&W]:254==Y&&W>=65136?7:4}y.L=0,y.R=1,y.EN=2,y.ON_R=3,y.AN=4,y.R_H=5,y.B=6,y.DOT="\xb7",y.doBidiReorder=function(_,W,Y){if(_.length<2)return{};var j=_.split(""),Q=new Array(j.length),J=new Array(j.length),H=[];m=Y?1:0,function(_,W,Y,j){var Q=m?h:n,J=null,H=null,G=null,X=0,ee=null,q=-1,Z=null,ie=null,oe=[];if(!j)for(Z=0,j=[];Z<Y;Z++)j[Z]=I(_[Z]);for(l=m,s=!1,e=!1,r=!1,ie=0;ie<Y;ie++){if(J=X,oe[ie]=H=P(_,j,oe,ie),ee=240&(X=Q[J][H]),W[ie]=G=Q[X&=15][5],ee>0)if(16==ee){for(Z=q;Z<ie;Z++)W[Z]=1;q=-1}else q=-1;if(Q[X][6])-1==q&&(q=ie);else if(q>-1){for(Z=q;Z<ie;Z++)W[Z]=G;q=-1}5==j[ie]&&(W[ie]=0),l|=G}if(r)for(Z=0;Z<Y;Z++)if(6==j[Z]){W[Z]=m;for(var ae=Z-1;ae>=0&&8==j[ae];ae--)W[ae]=m}}(j,H,j.length,W);for(var G=0;G<Q.length;Q[G]=G,G++);for(L(2,H,Q),L(1,H,Q),G=0;G<Q.length-1;G++)3===W[G]?H[G]=y.AN:1===H[G]&&(W[G]>7&&W[G]<13||4===W[G]||W[G]===R)?H[G]=y.ON_R:G>0&&"\u0644"===j[G-1]&&/\u0622|\u0623|\u0625|\u0627/.test(j[G])&&(H[G-1]=H[G]=y.R_H,G++);for(j[j.length-1]===y.DOT&&(H[j.length-1]=y.B),G=0;G<Q.length;G++)J[G]=H[Q[G]];return{logicalFromVisual:Q,bidiLevels:J}},y.hasBidiCharacters=function(_,W){for(var Y=!1,j=0;j<_.length;j++)W[j]=I(_.charAt(j)),!Y&&(1==W[j]||7==W[j])&&(Y=!0);return Y},y.getVisualFromLogicalIdx=function(_,W){for(var Y=0;Y<W.logicalFromVisual.length;Y++)if(W.logicalFromVisual[Y]==_)return Y;return 0}}),ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang","ace/lib/useragent"],function(w,y,U){"use strict";var $=w("./lib/bidiutil"),A=w("./lib/lang"),m=w("./lib/useragent"),l=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,s=function(t){this.session=t,this.bidiMap={},this.currentRow=null,this.bidiUtil=$,this.charWidths=[],this.EOL="\xac",this.showInvisibles=!0,this.isRtlDir=!1,this.line="",this.wrapIndent=0,this.isLastRow=!1,this.EOF="\xb6",this.seenBidi=!1};(function(){this.isBidiRow=function(t,e,r){return!!this.seenBidi&&(t!==this.currentRow&&(this.currentRow=t,this.updateRowLine(e,r),this.updateBidiMap()),this.bidiMap.bidiLevels)},this.onChange=function(t){this.seenBidi?this.currentRow=null:"insert"==t.action&&l.test(t.lines.join("\n"))&&(this.seenBidi=!0,this.currentRow=null)},this.getDocumentRow=function(){var t=0,e=this.session.$screenRowCache;if(e.length){var r=this.session.$getRowCacheIndex(e,this.currentRow);r>=0&&(t=this.session.$docRowCache[r])}return t},this.getSplitIndex=function(){var t=0,e=this.session.$screenRowCache;if(e.length)for(var r,i=this.session.$getRowCacheIndex(e,this.currentRow);this.currentRow-t>0&&(r=this.session.$getRowCacheIndex(e,this.currentRow-t-1))===i;)i=r,t++;return t},this.updateRowLine=function(t,e){if(void 0===t&&(t=this.getDocumentRow()),this.wrapIndent=0,this.isLastRow=t===this.session.getLength()-1,this.line=this.session.getLine(t),this.session.$useWrapMode){var r=this.session.$wrapData[t];r&&(void 0===e&&(e=this.getSplitIndex()),e>0&&r.length?(this.wrapIndent=r.indent,this.line=e<r.length?this.line.substring(r[e-1],r[r.length-1]):this.line.substring(r[r.length-1])):this.line=this.line.substring(0,r[e]))}var n,i=this.session,o=0;this.line=this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g,function(h,c){return"\t"===h||i.isFullWidth(h.charCodeAt(0))?(n="\t"===h?i.getScreenTabSize(c+o):2,o+=n-1,A.stringRepeat($.DOT,n)):h})},this.updateBidiMap=function(){var t=[],r=this.line+(this.showInvisibles?this.isLastRow?this.EOF:this.EOL:$.DOT);this.bidiMap=$.hasBidiCharacters(r,t)?$.doBidiReorder(r,t,this.isRtlDir):{}},this.markAsDirty=function(){this.currentRow=null},this.updateCharacterWidths=function(t){if(this.seenBidi&&this.characterWidth!==t.$characterSize.width){var e=this.characterWidth=t.$characterSize.width,r=t.$measureCharWidth("\u05d4");this.charWidths[$.L]=this.charWidths[$.EN]=this.charWidths[$.ON_R]=e,this.charWidths[$.R]=this.charWidths[$.AN]=r,this.charWidths[$.R_H]=m.isChrome?r:.45*r,this.charWidths[$.B]=0,this.currentRow=null}},this.getShowInvisibles=function(){return this.showInvisibles},this.setShowInvisibles=function(t){this.showInvisibles=t,this.currentRow=null},this.setEolChar=function(t){this.EOL=t},this.setTextDir=function(t){this.isRtlDir=t},this.getPosLeft=function(t){var e=$.getVisualFromLogicalIdx((t-=this.wrapIndent)>0?t-1:0,this.bidiMap),r=this.bidiMap.bidiLevels,i=0;0===t&&r[e]%2!=0&&e++;for(var o=0;o<e;o++)i+=this.charWidths[r[o]];return 0!==t&&r[e]%2==0&&(i+=this.charWidths[r[e]]),this.wrapIndent&&(i+=this.wrapIndent*this.charWidths[$.L]),i},this.getSelections=function(t,e){for(var o,a,r=this.bidiMap,i=r.bidiLevels,n=this.wrapIndent*this.charWidths[$.L],h=[],c=Math.min(t,e)-this.wrapIndent,F=Math.max(t,e)-this.wrapIndent,C=!1,u=!1,g=0,f=0;f<i.length;f++)o=i[f],(C=(a=r.logicalFromVisual[f])>=c&&a<F)&&!u?g=n:!C&&u&&h.push({left:g,width:n-g}),n+=this.charWidths[o],u=C;return C&&f===i.length&&h.push({left:g,width:n-g}),h},this.offsetToCol=function(t){var e=0,r=(t=Math.max(t,0),0),i=0,o=this.bidiMap.bidiLevels,n=this.charWidths[o[i]];for(this.wrapIndent&&(t-=this.wrapIndent*this.charWidths[$.L]);t>r+n/2;){if(r+=n,i===o.length-1){n=0;break}n=this.charWidths[o[++i]]}return i>0&&o[i-1]%2!=0&&o[i]%2==0?(t<r&&i--,e=this.bidiMap.logicalFromVisual[i]):i>0&&o[i-1]%2==0&&o[i]%2!=0?e=1+(t>r?this.bidiMap.logicalFromVisual[i]:this.bidiMap.logicalFromVisual[i-1]):this.isRtlDir&&i===o.length-1&&0===n&&o[i-1]%2==0||!this.isRtlDir&&0===i&&o[i]%2!=0?e=1+this.bidiMap.logicalFromVisual[i]:(i>0&&o[i-1]%2!=0&&0!==n&&i--,e=this.bidiMap.logicalFromVisual[i]),e+this.wrapIndent}}).call(s.prototype),y.BidiHandler=s}),ace.define("ace/range",["require","exports","module"],function(w,y,U){"use strict";var A=function(m,l,s,t){this.start={row:m,column:l},this.end={row:s,column:t}};(function(){this.isEqual=function(m){return this.start.row===m.start.row&&this.end.row===m.end.row&&this.start.column===m.start.column&&this.end.column===m.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(m,l){return 0==this.compare(m,l)},this.compareRange=function(m){var l,s=m.end,t=m.start;return 1==(l=this.compare(s.row,s.column))?1==(l=this.compare(t.row,t.column))?2:0==l?1:0:-1==l?-2:-1==(l=this.compare(t.row,t.column))?-1:1==l?42:0},this.comparePoint=function(m){return this.compare(m.row,m.column)},this.containsRange=function(m){return 0==this.comparePoint(m.start)&&0==this.comparePoint(m.end)},this.intersects=function(m){var l=this.compareRange(m);return-1==l||0==l||1==l},this.isEnd=function(m,l){return this.end.row==m&&this.end.column==l},this.isStart=function(m,l){return this.start.row==m&&this.start.column==l},this.setStart=function(m,l){"object"==typeof m?(this.start.column=m.column,this.start.row=m.row):(this.start.row=m,this.start.column=l)},this.setEnd=function(m,l){"object"==typeof m?(this.end.column=m.column,this.end.row=m.row):(this.end.row=m,this.end.column=l)},this.inside=function(m,l){return 0==this.compare(m,l)&&!(this.isEnd(m,l)||this.isStart(m,l))},this.insideStart=function(m,l){return 0==this.compare(m,l)&&!this.isEnd(m,l)},this.insideEnd=function(m,l){return 0==this.compare(m,l)&&!this.isStart(m,l)},this.compare=function(m,l){return this.isMultiLine()||m!==this.start.row?m<this.start.row?-1:m>this.end.row?1:this.start.row===m?l>=this.start.column?0:-1:this.end.row===m?l<=this.end.column?0:1:0:l<this.start.column?-1:l>this.end.column?1:0},this.compareStart=function(m,l){return this.start.row==m&&this.start.column==l?-1:this.compare(m,l)},this.compareEnd=function(m,l){return this.end.row==m&&this.end.column==l?1:this.compare(m,l)},this.compareInside=function(m,l){return this.end.row==m&&this.end.column==l?1:this.start.row==m&&this.start.column==l?-1:this.compare(m,l)},this.clipRows=function(m,l){if(this.end.row>l)var s={row:l+1,column:0};else this.end.row<m&&(s={row:m,column:0});if(this.start.row>l)var t={row:l+1,column:0};else this.start.row<m&&(t={row:m,column:0});return A.fromPoints(t||this.start,s||this.end)},this.extend=function(m,l){var s=this.compare(m,l);if(0==s)return this;if(-1==s)var t={row:m,column:l};else var e={row:m,column:l};return A.fromPoints(t||this.start,e||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 A.fromPoints(this.start,this.end)},this.collapseRows=function(){return new A(this.start.row,0,0==this.end.column?Math.max(this.start.row,this.end.row-1):this.end.row,0)},this.toScreenRange=function(m){var l=m.documentToScreenPosition(this.start),s=m.documentToScreenPosition(this.end);return new A(l.row,l.column,s.row,s.column)},this.moveBy=function(m,l){this.start.row+=m,this.start.column+=l,this.end.row+=m,this.end.column+=l}}).call(A.prototype),A.fromPoints=function(m,l){return new A(m.row,m.column,l.row,l.column)},A.comparePoints=function(m,l){return m.row-l.row||m.column-l.column},A.comparePoints=function(m,l){return m.row-l.row||m.column-l.column},y.Range=A}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(w,y,U){"use strict";var $=w("./lib/oop"),A=w("./lib/lang"),m=w("./lib/event_emitter").EventEmitter,l=w("./range").Range,s=function(t){this.session=t,this.doc=t.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var e=this;this.lead.on("change",function(r){e._emit("changeCursor"),e.$isEmpty||e._emit("changeSelection"),!e.$keepDesiredColumnOnChange&&r.old.column!=r.value.column&&(e.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){e.$isEmpty||e._emit("changeSelection")})};(function(){$.implement(this,m),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.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(t,e){this.anchor.setPosition(t,e),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(t){if(this.$isEmpty)this.moveCursorTo(this.lead.row,this.lead.column+t);else{var e=this.getSelectionAnchor(),r=this.getSelectionLead(),i=this.isBackwards();(!i||0!==e.column)&&this.setSelectionAnchor(e.row,e.column+t),(i||0!==r.column)&&this.$moveSelection(function(){this.moveCursorTo(r.row,r.column+t)})}},this.isBackwards=function(){var t=this.anchor,e=this.lead;return t.row>e.row||t.row==e.row&&t.column>e.column},this.getRange=function(){var t=this.anchor,e=this.lead;return this.isEmpty()?l.fromPoints(e,e):this.isBackwards()?l.fromPoints(e,t):l.fromPoints(t,e)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var t=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(t,this.doc.getLine(t).length)},this.setRange=this.setSelectionRange=function(t,e){e?(this.setSelectionAnchor(t.end.row,t.end.column),this.selectTo(t.start.row,t.start.column)):(this.setSelectionAnchor(t.start.row,t.start.column),this.selectTo(t.end.row,t.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(t){var e=this.lead;this.$isEmpty&&this.setSelectionAnchor(e.row,e.column),t.call(this)},this.selectTo=function(t,e){this.$moveSelection(function(){this.moveCursorTo(t,e)})},this.selectToPosition=function(t){this.$moveSelection(function(){this.moveCursorToPosition(t)})},this.moveTo=function(t,e){this.clearSelection(),this.moveCursorTo(t,e)},this.moveToPosition=function(t){this.clearSelection(),this.moveCursorToPosition(t)},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(t,e){if(void 0===e){var r=t||this.lead;t=r.row,e=r.column}return this.session.getWordRange(t,e)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var t=this.getCursor(),e=this.session.getAWordRange(t.row,t.column);this.setSelectionRange(e)},this.getLineRange=function(t,e){var i,r="number"==typeof t?t:this.lead.row,o=this.session.getFoldLine(r);return o?(r=o.start.row,i=o.end.row):i=r,!0===e?new l(r,0,i,this.session.getLine(i).length):new l(r,0,i+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(t,e,r){var i=t.column,o=t.column+e;return r<0&&(i=t.column-e,o=t.column),this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(i,o).split(" ").length-1==e},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var r=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,r,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-r):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.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 r=this.session.getTabSize();this.wouldMoveIntoSoftTab(t=this.lead,r,1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,r):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var t=this.lead.row,e=this.lead.column,r=this.session.documentToScreenRow(t,e),i=this.session.screenToDocumentPosition(r,0),n=this.session.getDisplayLine(t,null,i.row,i.column).match(/^\s*/);n[0].length!=e&&!this.session.$useEmacsStyleLineStart&&(i.column+=n[0].length),this.moveCursorToPosition(i)},this.moveCursorLineEnd=function(){var t=this.lead,e=this.session.getDocumentLastRowColumnPosition(t.row,t.column);if(this.lead.column==e.column){var r=this.session.getLine(e.row);if(e.column==r.length){var i=r.search(/\s+$/);i>0&&(e.column=i)}}this.moveCursorTo(e.row,e.column)},this.moveCursorFileEnd=function(){var t=this.doc.getLength()-1,e=this.doc.getLine(t).length;this.moveCursorTo(t,e)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var t=this.lead.row,e=this.lead.column,r=this.doc.getLine(t),i=r.substring(e);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var n=this.session.getFoldAt(t,e,1);if(!n)return this.session.nonTokenRe.exec(i)&&(e+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=r.substring(e)),e>=r.length?(this.moveCursorTo(t,r.length),this.moveCursorRight(),void(t<this.doc.getLength()-1&&this.moveCursorWordRight())):(this.session.tokenRe.exec(i)&&(e+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,e));this.moveCursorTo(n.end.row,n.end.column)},this.moveCursorLongWordLeft=function(){var r,t=this.lead.row,e=this.lead.column;if(r=this.session.getFoldAt(t,e,-1))this.moveCursorTo(r.start.row,r.start.column);else{var i=this.session.getFoldStringAt(t,e,-1);null==i&&(i=this.doc.getLine(t).substring(0,e));var o=A.stringReverse(i);if(this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,this.session.nonTokenRe.exec(o)&&(e-=this.session.nonTokenRe.lastIndex,o=o.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0),e<=0)return this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft());this.session.tokenRe.exec(o)&&(e-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,e)}},this.$shortWordEndIndex=function(t){var i,r=0,o=/\s/,n=this.session.tokenRe;if(n.lastIndex=0,this.session.tokenRe.exec(t))r=this.session.tokenRe.lastIndex;else{for(;(i=t[r])&&o.test(i);)r++;if(r<1)for(n.lastIndex=0;(i=t[r])&&!n.test(i);)if(n.lastIndex=0,r++,o.test(i)){if(r>2){r--;break}for(;(i=t[r])&&o.test(i);)r++;if(r>2)break}}return n.lastIndex=0,r},this.moveCursorShortWordRight=function(){var t=this.lead.row,e=this.lead.column,r=this.doc.getLine(t),i=r.substring(e),o=this.session.getFoldAt(t,e,1);if(o)return this.moveCursorTo(o.end.row,o.end.column);if(e==r.length){var n=this.doc.getLength();do{t++,i=this.doc.getLine(t)}while(t<n&&/^\s*$/.test(i));/^\s+/.test(i)||(i=""),e=0}var h=this.$shortWordEndIndex(i);this.moveCursorTo(t,e+h)},this.moveCursorShortWordLeft=function(){var r,t=this.lead.row,e=this.lead.column;if(r=this.session.getFoldAt(t,e,-1))return this.moveCursorTo(r.start.row,r.start.column);var i=this.session.getLine(t).substring(0,e);if(0===e){do{t--,i=this.doc.getLine(t)}while(t>0&&/^\s*$/.test(i));e=i.length,/\s+$/.test(i)||(i="")}var o=A.stringReverse(i),n=this.$shortWordEndIndex(o);return this.moveCursorTo(t,e-n)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(t,e){var i,r=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===e&&(0!==t&&(this.session.$bidiHandler.isBidiRow(r.row,this.lead.row)?(i=this.session.$bidiHandler.getPosLeft(r.column),r.column=Math.round(i/this.session.$bidiHandler.charWidths[0])):i=r.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?r.column=this.$desiredColumn:this.$desiredColumn=r.column);var o=this.session.screenToDocumentPosition(r.row+t,r.column,i);0!==t&&0===e&&o.row===this.lead.row&&o.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[o.row]&&(o.row>0||t>0)&&o.row++,this.moveCursorTo(o.row,o.column+e,0===e)},this.moveCursorToPosition=function(t){this.moveCursorTo(t.row,t.column)},this.moveCursorTo=function(t,e,r){var i=this.session.getFoldAt(t,e,1);i&&(t=i.start.row,e=i.start.column),this.$keepDesiredColumnOnChange=!0;var o=this.session.getLine(t);/[\uDC00-\uDFFF]/.test(o.charAt(e))&&o.charAt(e-1)&&(this.lead.row==t&&this.lead.column==e+1?e-=1:e+=1),this.lead.setPosition(t,e),this.$keepDesiredColumnOnChange=!1,r||(this.$desiredColumn=null)},this.moveCursorToScreen=function(t,e,r){var i=this.session.screenToDocumentPosition(t,e);this.moveCursorTo(i.row,i.column,r)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(t){this.setSelectionRange(t,t.cursor==t.start),this.$desiredColumn=t.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(t){var e=this.getRange();return t?(t.start.column=e.start.column,t.start.row=e.start.row,t.end.column=e.end.column,t.end.row=e.end.row):t=e,t.cursor=this.isBackwards()?t.start:t.end,t.desiredColumn=this.$desiredColumn,t},this.getRangeOfMovements=function(t){var e=this.getCursor();try{t(this);var r=this.getCursor();return l.fromPoints(e,r)}catch(i){return l.fromPoints(e,e)}finally{this.moveCursorToPosition(e)}},this.toJSON=function(){if(this.rangeCount)var t=this.ranges.map(function(e){var r=e.clone();return r.isBackwards=e.cursor==e.start,r});else(t=this.getRange()).isBackwards=this.isBackwards();return t},this.fromJSON=function(t){if(null==t.start){if(this.rangeList){this.toSingleRange(t[0]);for(var e=t.length;e--;){var r=l.fromPoints(t[e].start,t[e].end);t[e].isBackwards&&(r.cursor=r.start),this.addRange(r,!0)}return}t=t[0]}this.rangeList&&this.toSingleRange(t),this.setSelectionRange(t,t.isBackwards)},this.isEqual=function(t){if((t.length||this.rangeCount)&&t.length!=this.rangeCount)return!1;if(!t.length||!this.ranges)return this.getRange().isEqual(t);for(var e=this.ranges.length;e--;)if(!this.ranges[e].isEqual(t[e]))return!1;return!0}}).call(s.prototype),y.Selection=s}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(w,y,U){"use strict";var $=w("./config"),A=2e3,m=function(l){for(var s in this.states=l,this.regExps={},this.matchMappings={},this.states){for(var t=this.states[s],e=[],r=0,i=this.matchMappings[s]={defaultToken:"text"},o="g",n=[],h=0;h<t.length;h++){var c=t[h];if(c.defaultToken&&(i.defaultToken=c.defaultToken),c.caseInsensitive&&(o="gi"),null!=c.regex){c.regex instanceof RegExp&&(c.regex=c.regex.toString().slice(1,-1));var F=c.regex,C=new RegExp("(?:("+F+")|(.))").exec("a").length-2;Array.isArray(c.token)?1==c.token.length||1==C?c.token=c.token[0]:C-1!=c.token.length?(this.reportError("number of classes and regexp groups doesn't match",{rule:c,groupCount:C-1}),c.token=c.token[0]):(c.tokenArray=c.token,c.token=null,c.onMatch=this.$arrayTokens):"function"==typeof c.token&&!c.onMatch&&(c.onMatch=C>1?this.$applyToken:c.token),C>1&&(/\\\d/.test(c.regex)?F=c.regex.replace(/\\([0-9]+)/g,function(u,g){return"\\"+(parseInt(g,10)+r+1)}):(C=1,F=this.removeCapturingGroups(c.regex)),!c.splitRegex&&"string"!=typeof c.token&&n.push(c)),i[r]=h,r+=C,e.push(F),c.onMatch||(c.onMatch=null)}}e.length||(i[0]=0,e.push("$")),n.forEach(function(u){u.splitRegex=this.createSplitterRegexp(u.regex,o)},this),this.regExps[s]=new RegExp("("+e.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(l){A=0|l},this.$applyToken=function(l){var s=this.splitRegex.exec(l).slice(1),t=this.token.apply(this,s);if("string"==typeof t)return[{type:t,value:l}];for(var e=[],r=0,i=t.length;r<i;r++)s[r]&&(e[e.length]={type:t[r],value:s[r]});return e},this.$arrayTokens=function(l){if(!l)return[];var s=this.splitRegex.exec(l);if(!s)return"text";for(var t=[],e=this.tokenArray,r=0,i=e.length;r<i;r++)s[r+1]&&(t[t.length]={type:e[r],value:s[r+1]});return t},this.removeCapturingGroups=function(l){return l.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(t,e){return e?"(?:":t})},this.createSplitterRegexp=function(l,s){if(-1!=l.indexOf("(?=")){var t=0,e=!1,r={};l.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(i,o,n,h,c,F){return e?e="]"!=c:c?e=!0:h?(t==r.stack&&(r.end=F+1,r.stack=-1),t--):n&&(t++,1!=n.length&&(r.stack=t,r.start=F)),i}),null!=r.end&&/^\)*$/.test(l.substr(r.end))&&(l=l.substring(0,r.start)+l.substr(r.end))}return"^"!=l.charAt(0)&&(l="^"+l),"$"!=l.charAt(l.length-1)&&(l+="$"),new RegExp(l,(s||"").replace("g",""))},this.getLineTokens=function(l,s){if(s&&"string"!=typeof s){var t=s.slice(0);"#tmp"===(s=t[0])&&(t.shift(),s=t.shift())}else t=[];var e=s||"start",r=this.states[e];r||(r=this.states[e="start"]);var i=this.matchMappings[e],o=this.regExps[e];o.lastIndex=0;for(var n,h=[],c=0,F=0,C={type:null,value:""};n=o.exec(l);){var u=i.defaultToken,g=null,a=n[0],f=o.lastIndex;if(f-a.length>c){var p=l.substring(c,f-a.length);C.type==u?C.value+=p:(C.type&&h.push(C),C={type:u,value:p})}for(var E=0;E<n.length-2;E++)if(void 0!==n[E+1]){u=(g=r[i[E]]).onMatch?g.onMatch(a,e,t,l):g.token,g.next&&(e="string"==typeof g.next?g.next:g.next(e,t),(r=this.states[e])||(this.reportError("state doesn't exist",e),r=this.states[e="start"]),i=this.matchMappings[e],c=f,(o=this.regExps[e]).lastIndex=f),g.consumeLineEnd&&(c=f);break}if(a)if("string"==typeof u)g&&!1===g.merge||C.type!==u?(C.type&&h.push(C),C={type:u,value:a}):C.value+=a;else if(u)for(C.type&&h.push(C),C={type:null,value:""},E=0;E<u.length;E++)h.push(u[E]);if(c==l.length)break;if(c=f,F++>A){for(F>2*l.length&&this.reportError("infinite loop with in ace tokenizer",{startState:s,line:l});c<l.length;)C.type&&h.push(C),C={value:l.substring(c,c+=2e3),type:"overflow"};e="start",t=[];break}}return C.type&&h.push(C),t.length>1&&t[0]!==e&&t.unshift("#tmp",e),{tokens:h,state:t.length?t:e}},this.reportError=$.reportError}).call(m.prototype),y.Tokenizer=m}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(w,y,U){"use strict";var $=w("../lib/lang"),A=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(s,t){if(t)for(var e in s){for(var r=s[e],i=0;i<r.length;i++){var o=r[i];(o.next||o.onMatch)&&("string"==typeof o.next&&0!==o.next.indexOf(t)&&(o.next=t+o.next),o.nextState&&0!==o.nextState.indexOf(t)&&(o.nextState=t+o.nextState))}this.$rules[t+e]=r}else for(var e in s)this.$rules[e]=s[e]},this.getRules=function(){return this.$rules},this.embedRules=function(s,t,e,r,i){var o="function"==typeof s?(new s).getRules():s;if(r)for(var n=0;n<r.length;n++)r[n]=t+r[n];else for(var h in r=[],o)r.push(t+h);if(this.addRules(o,t),e){var c=Array.prototype[i?"push":"unshift"];for(n=0;n<r.length;n++)c.apply(this.$rules[r[n]],$.deepCopy(e))}this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds};var m=function(s,t){return("start"!=s||t.length)&&t.unshift(this.nextState,s),this.nextState},l=function(s,t){return t.shift(),t.shift()||"start"};this.normalizeRules=function(){var s=0,t=this.$rules;Object.keys(t).forEach(function e(r){var i=t[r];i.processed=!0;for(var o=0;o<i.length;o++){var n=i[o],h=null;Array.isArray(n)&&(h=n,n={}),!n.regex&&n.start&&(n.regex=n.start,n.next||(n.next=[]),n.next.push({defaultToken:n.token},{token:n.token+".end",regex:n.end||n.start,next:"pop"}),n.token=n.token+".start",n.push=!0);var c=n.next||n.push;if(c&&Array.isArray(c)){var F=n.stateName;F||("string"!=typeof(F=n.token)&&(F=F[0]||""),t[F]&&(F+=s++)),t[F]=c,n.next=F,e(F)}else"pop"==c&&(n.next=l);if(n.push&&(n.nextState=n.next||n.push,n.next=m,delete n.push),n.rules)for(var C in n.rules)t[C]?t[C].push&&t[C].push.apply(t[C],n.rules[C]):t[C]=n.rules[C];var u="string"==typeof n?n:n.include;if(u&&(h=Array.isArray(u)?u.map(function(a){return t[a]}):t[u]),h){var g=[o,1].concat(h);n.noEscape&&(g=g.filter(function(a){return!a.next})),i.splice.apply(i,g),o--}n.keywordMap&&(n.token=this.createKeywordMapper(n.keywordMap,n.defaultToken||"text",n.caseInsensitive),delete n.defaultToken)}},this)},this.createKeywordMapper=function(s,t,e,r){var i=Object.create(null);return Object.keys(s).forEach(function(o){var n=s[o];e&&(n=n.toLowerCase());for(var h=n.split(r||"|"),c=h.length;c--;)i[h[c]]=o}),Object.getPrototypeOf(i)&&(i.__proto__=null),this.$keywordList=Object.keys(i),s=null,e?function(o){return i[o.toLowerCase()]||t}:function(o){return i[o]||t}},this.getKeywords=function(){return this.$keywords}}).call(A.prototype),y.TextHighlightRules=A}),ace.define("ace/mode/behaviour",["require","exports","module"],function(w,y,U){"use strict";var $=function(){this.$behaviours={}};(function(){this.add=function(A,m,l){switch(void 0){case this.$behaviours:this.$behaviours={};case this.$behaviours[A]:this.$behaviours[A]={}}this.$behaviours[A][m]=l},this.addBehaviours=function(A){for(var m in A)for(var l in A[m])this.add(m,l,A[m][l])},this.remove=function(A){this.$behaviours&&this.$behaviours[A]&&delete this.$behaviours[A]},this.inherit=function(A,m){if("function"==typeof A)var l=(new A).getBehaviours(m);else l=A.getBehaviours(m);this.addBehaviours(l)},this.getBehaviours=function(A){if(A){for(var m={},l=0;l<A.length;l++)this.$behaviours[A[l]]&&(m[A[l]]=this.$behaviours[A[l]]);return m}return this.$behaviours}}).call($.prototype),y.Behaviour=$}),ace.define("ace/token_iterator",["require","exports","module","ace/range"],function(w,y,U){"use strict";var $=w("./range").Range,A=function(m,l,s){this.$session=m,this.$row=l,this.$rowTokens=m.getTokens(l);var t=m.getTokenAt(l,s);this.$tokenIndex=t?t.index:-1};(function(){this.stepBackward=function(){for(this.$tokenIndex-=1;this.$tokenIndex<0;){if(this.$row-=1,this.$row<0)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 m;this.$tokenIndex>=this.$rowTokens.length;){if(this.$row+=1,m||(m=this.$session.getLength()),this.$row>=m)return this.$row=m-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 m=this.$rowTokens,l=this.$tokenIndex,s=m[l].start;if(void 0!==s)return s;for(s=0;l>0;)s+=m[l-=1].value.length;return s},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var m=this.$rowTokens[this.$tokenIndex],l=this.getCurrentTokenColumn();return new $(this.$row,l,this.$row,l+m.value.length)}}).call(A.prototype),y.TokenIterator=A}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(w,y,U){"use strict";var e,$=w("../../lib/oop"),A=w("../behaviour").Behaviour,m=w("../../token_iterator").TokenIterator,l=w("../../lib/lang"),s=["text","paren.rparen","punctuation.operator"],t=["text","paren.rparen","punctuation.operator","comment"],r={},i={'"':'"',"'":"'"},o=function(c){var F=-1;if(c.multiSelect&&(F=c.selection.index,r.rangeCount!=c.multiSelect.rangeCount&&(r={rangeCount:c.multiSelect.rangeCount})),r[F])return e=r[F];e=r[F]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},n=function(c,F,C,u){var g=c.end.row-c.start.row;return{text:C+F+u,selection:[0,c.start.column+1,g,c.end.column+(g?0:1)]}},h=function(c){this.add("braces","insertion",function(F,C,u,g,a){var f=u.getCursorPosition(),p=g.doc.getLine(f.row);if("{"==a){o(u);var E=u.getSelectionRange(),d=g.doc.getTextRange(E);if(""!==d&&"{"!==d&&u.getWrapBehavioursEnabled())return n(E,d,"{","}");if(h.isSaneInsertion(u,g))return/[\]\}\)]/.test(p[f.column])||u.inMultiSelectMode||c&&c.braces?(h.recordAutoInsert(u,g,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(u,g,"{"),{text:"{",selection:[1,1]})}else if("}"==a){if(o(u),"}"==p.substring(f.column,f.column+1)&&null!==g.$findOpeningBracket("}",{column:f.column+1,row:f.row})&&h.isAutoInsertedClosing(f,p,a))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==a||"\r\n"==a){o(u);var B="";if(h.isMaybeInsertedClosing(f,p)&&(B=l.stringRepeat("}",e.maybeInsertedBrackets),h.clearMaybeInsertedClosing()),"}"===p.substring(f.column,f.column+1)){var S=g.findMatchingBracket({row:f.row,column:f.column+1},"}");if(!S)return null;var D=this.$getIndent(g.getLine(S.row))}else{if(!B)return void h.clearMaybeInsertedClosing();D=this.$getIndent(p)}var k=D+g.getTabString();return{text:"\n"+k+"\n"+D+B,selection:[1,k.length,1,k.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(F,C,u,g,a){var f=g.doc.getTextRange(a);if(!a.isMultiLine()&&"{"==f){if(o(u),"}"==g.doc.getLine(a.start.row).substring(a.end.column,a.end.column+1))return a.end.column++,a;e.maybeInsertedBrackets--}}),this.add("parens","insertion",function(F,C,u,g,a){if("("==a){o(u);var f=u.getSelectionRange(),p=g.doc.getTextRange(f);if(""!==p&&u.getWrapBehavioursEnabled())return n(f,p,"(",")");if(h.isSaneInsertion(u,g))return h.recordAutoInsert(u,g,")"),{text:"()",selection:[1,1]}}else if(")"==a){o(u);var E=u.getCursorPosition(),d=g.doc.getLine(E.row);if(")"==d.substring(E.column,E.column+1)&&null!==g.$findOpeningBracket(")",{column:E.column+1,row:E.row})&&h.isAutoInsertedClosing(E,d,a))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("parens","deletion",function(F,C,u,g,a){var f=g.doc.getTextRange(a);if(!a.isMultiLine()&&"("==f&&(o(u),")"==g.doc.getLine(a.start.row).substring(a.start.column+1,a.start.column+2)))return a.end.column++,a}),this.add("brackets","insertion",function(F,C,u,g,a){if("["==a){o(u);var f=u.getSelectionRange(),p=g.doc.getTextRange(f);if(""!==p&&u.getWrapBehavioursEnabled())return n(f,p,"[","]");if(h.isSaneInsertion(u,g))return h.recordAutoInsert(u,g,"]"),{text:"[]",selection:[1,1]}}else if("]"==a){o(u);var E=u.getCursorPosition(),d=g.doc.getLine(E.row);if("]"==d.substring(E.column,E.column+1)&&null!==g.$findOpeningBracket("]",{column:E.column+1,row:E.row})&&h.isAutoInsertedClosing(E,d,a))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("brackets","deletion",function(F,C,u,g,a){var f=g.doc.getTextRange(a);if(!a.isMultiLine()&&"["==f&&(o(u),"]"==g.doc.getLine(a.start.row).substring(a.start.column+1,a.start.column+2)))return a.end.column++,a}),this.add("string_dquotes","insertion",function(F,C,u,g,a){var f=g.$mode.$quotes||i;if(1==a.length&&f[a]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(a))return;o(u);var p=a,E=u.getSelectionRange(),d=g.doc.getTextRange(E);if(""!==d&&(1!=d.length||!f[d])&&u.getWrapBehavioursEnabled())return n(E,d,p,p);if(!d){var v=u.getCursorPosition(),b=g.doc.getLine(v.row),B=b.substring(v.column-1,v.column),S=b.substring(v.column,v.column+1),D=g.getTokenAt(v.row,v.column),k=g.getTokenAt(v.row,v.column+1);if("\\"==B&&D&&/escape/.test(D.type))return null;var z,M=D&&/string|escape/.test(D.type),O=!k||/string|escape/.test(k.type);if(S==p)(z=M!==O)&&/string\.end/.test(k.type)&&(z=!1);else{if(M&&!O||M&&O)return null;var V=g.$mode.tokenRe;V.lastIndex=0;var R=V.test(B);V.lastIndex=0;var K=V.test(B);if(R||K||S&&!/[\s;,.})\]\\]/.test(S))return null;z=!0}return{text:z?p+p:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(F,C,u,g,a){var f=g.doc.getTextRange(a);if(!a.isMultiLine()&&('"'==f||"'"==f)&&(o(u),g.doc.getLine(a.start.row).substring(a.start.column+1,a.start.column+2)==f))return a.end.column++,a})};h.isSaneInsertion=function(c,F){var C=c.getCursorPosition(),u=new m(F,C.row,C.column);if(!this.$matchTokenType(u.getCurrentToken()||"text",s)){var g=new m(F,C.row,C.column+1);if(!this.$matchTokenType(g.getCurrentToken()||"text",s))return!1}return u.stepForward(),u.getCurrentTokenRow()!==C.row||this.$matchTokenType(u.getCurrentToken()||"text",t)},h.$matchTokenType=function(c,F){return F.indexOf(c.type||c)>-1},h.recordAutoInsert=function(c,F,C){var u=c.getCursorPosition(),g=F.doc.getLine(u.row);this.isAutoInsertedClosing(u,g,e.autoInsertedLineEnd[0])||(e.autoInsertedBrackets=0),e.autoInsertedRow=u.row,e.autoInsertedLineEnd=C+g.substr(u.column),e.autoInsertedBrackets++},h.recordMaybeInsert=function(c,F,C){var u=c.getCursorPosition(),g=F.doc.getLine(u.row);this.isMaybeInsertedClosing(u,g)||(e.maybeInsertedBrackets=0),e.maybeInsertedRow=u.row,e.maybeInsertedLineStart=g.substr(0,u.column)+C,e.maybeInsertedLineEnd=g.substr(u.column),e.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(c,F,C){return e.autoInsertedBrackets>0&&c.row===e.autoInsertedRow&&C===e.autoInsertedLineEnd[0]&&F.substr(c.column)===e.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(c,F){return e.maybeInsertedBrackets>0&&c.row===e.maybeInsertedRow&&F.substr(c.column)===e.maybeInsertedLineEnd&&F.substr(0,c.column)==e.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){e.autoInsertedLineEnd=e.autoInsertedLineEnd.substr(1),e.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){e&&(e.maybeInsertedBrackets=0,e.maybeInsertedRow=-1)},$.inherits(h,A),y.CstyleBehaviour=h}),ace.define("ace/unicode",["require","exports","module"],function(w,y,U){"use strict";y.packages={},function(A){var m=/\w{4}/g;for(var l in A)y.packages[l]=A[l].replace(m,"\\u$&")}({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(w,y,U){"use strict";var $=w("../tokenizer").Tokenizer,A=w("./text_highlight_rules").TextHighlightRules,m=w("./behaviour/cstyle").CstyleBehaviour,l=w("../unicode"),s=w("../lib/lang"),t=w("../token_iterator").TokenIterator,e=w("../range").Range,r=function(){this.HighlightRules=A};(function(){this.$defaultBehaviour=new m,this.tokenRe=new RegExp("^["+l.packages.L+l.packages.Mn+l.packages.Mc+l.packages.Nd+l.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+l.packages.L+l.packages.Mn+l.packages.Mc+l.packages.Nd+l.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new $(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(i,o,n,h){var c=o.doc,F=!0,C=!0,u=1/0,g=o.getTabSize(),a=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var E=this.lineCommentStart.map(s.escapeRegExp).join("|"),f=this.lineCommentStart[0];else E=s.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;E=new RegExp("^(\\s*)(?:"+E+") ?"),a=o.getUseSoftTabs();var b=function(R,K){var T=R.match(E);if(T){var x=T[1].length,L=T[0].length;!D(R,x,L)&&" "==T[0][L-1]&&L--,c.removeInLine(K,x,L)}},S=f+" ",v=function(R,K){(!F||/\S/.test(R))&&(D(R,u,u)?c.insertInLine({row:K,column:u},S):c.insertInLine({row:K,column:u},f))},B=function(R,K){return E.test(R)},D=function(R,K,T){for(var x=0;K--&&" "==R.charAt(K);)x++;if(x%g!=0)return!1;for(x=0;" "==R.charAt(T++);)x++;return g>2?x%g!=g-1:x%g==0}}else{if(!this.blockComment)return!1;f=this.blockComment.start;var p=this.blockComment.end,d=(E=new RegExp("^(\\s*)(?:"+s.escapeRegExp(f)+")"),new RegExp("(?:"+s.escapeRegExp(p)+")\\s*$"));v=function(O,z){B(O,z)||(!F||/\S/.test(O))&&(c.insertInLine({row:z,column:O.length},p),c.insertInLine({row:z,column:u},f))},b=function(O,z){var V;(V=O.match(d))&&c.removeInLine(z,O.length-V[0].length,O.length),(V=O.match(E))&&c.removeInLine(z,V[1].length,V[0].length)},B=function(O,z){if(E.test(O))return!0;for(var V=o.getTokens(z),R=0;R<V.length;R++)if("comment"===V[R].type)return!0}}function k(O){for(var z=n;z<=h;z++)O(c.getLine(z),z)}var M=1/0;k(function(O,z){var V=O.search(/\S/);-1!==V?(V<u&&(u=V),C&&!B(O,z)&&(C=!1)):M>O.length&&(M=O.length)}),u==1/0&&(u=M,F=!1,C=!1),a&&u%g!=0&&(u=Math.floor(u/g)*g),k(C?b:v)},this.toggleBlockComment=function(i,o,n,h){var c=this.blockComment;if(c){!c.start&&c[0]&&(c=c[0]);var a,f,C=(F=new t(o,h.row,h.column)).getCurrentToken(),g=o.selection.toOrientedRange();if(C&&/comment/.test(C.type)){for(var p,E;C&&/comment/.test(C.type);){if(-1!=(d=C.value.indexOf(c.start))){var v=F.getCurrentTokenRow(),b=F.getCurrentTokenColumn()+d;p=new e(v,b,v,b+c.start.length);break}C=F.stepBackward()}var F;for(C=(F=new t(o,h.row,h.column)).getCurrentToken();C&&/comment/.test(C.type);){var d;if(-1!=(d=C.value.indexOf(c.end))){v=F.getCurrentTokenRow(),b=F.getCurrentTokenColumn()+d,E=new e(v,b,v,b+c.end.length);break}C=F.stepForward()}E&&o.remove(E),p&&(o.remove(p),a=p.start.row,f=-c.start.length)}else f=c.start.length,a=n.start.row,o.insert(n.end,c.end),o.insert(n.start,c.start);g.start.row==a&&(g.start.column+=f),g.end.row==a&&(g.end.column+=f),o.selection.fromOrientedRange(g)}},this.getNextLineIndent=function(i,o,n){return this.$getIndent(o)},this.checkOutdent=function(i,o,n){return!1},this.autoOutdent=function(i,o,n){},this.$getIndent=function(i){return i.match(/^\s*/)[0]},this.createWorker=function(i){return null},this.createModeDelegates=function(i){for(var o in this.$embeds=[],this.$modes={},i)i[o]&&(this.$embeds.push(o),this.$modes[o]=new i[o]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(o=0;o<n.length;o++)!function(c){var F=n[o],C=c[F];c[n[o]]=function(){return this.$delegator(F,arguments,C)}}(this)},this.$delegator=function(i,o,n){var h=o[0];"string"!=typeof h&&(h=h[0]);for(var c=0;c<this.$embeds.length;c++)if(this.$modes[this.$embeds[c]]){var F=h.split(this.$embeds[c]);if(!F[0]&&F[1]){o[0]=F[1];var C=this.$modes[this.$embeds[c]];return C[i].apply(C,o)}}var u=n.apply(this,o);return n?u:void 0},this.transformAction=function(i,o,n,h,c){if(this.$behaviour){var F=this.$behaviour.getBehaviours();for(var C in F)if(F[C][o]){var u=F[C][o].apply(this,arguments);if(u)return u}}},this.getKeywords=function(i){if(!this.completionKeywords){var o=this.$tokenizer.rules,n=[];for(var h in o)for(var c=o[h],F=0,C=c.length;F<C;F++)if("string"==typeof c[F].token)/keyword|support|storage/.test(c[F].token)&&n.push(c[F].regex);else if("object"==typeof c[F].token)for(var u=0,g=c[F].token.length;u<g;u++)/keyword|support|storage/.test(c[F].token[u])&&(h=c[F].regex.match(/\(.+?\)/g)[u],n.push(h.substr(1,h.length-2)));this.completionKeywords=n}return i?n.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(i,o,n,h){return(this.$keywordList||this.$createKeywordList()).map(function(F){return{name:F,value:F,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(r.prototype),y.Mode=r}),ace.define("ace/apply_delta",["require","exports","module"],function(w,y,U){"use strict";y.applyDelta=function(l,s,t){var e=s.start.row,r=s.start.column,i=l[e]||"";switch(s.action){case"insert":if(1===s.lines.length)l[e]=i.substring(0,r)+s.lines[0]+i.substring(r);else{var n=[e,1].concat(s.lines);l.splice.apply(l,n),l[e]=i.substring(0,r)+l[e],l[e+s.lines.length-1]+=i.substring(r)}break;case"remove":var h=s.end.column,c=s.end.row;e===c?l[e]=i.substring(0,r)+i.substring(h):l.splice(e,c-e+1,i.substring(0,r)+l[c].substring(h))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(w,y,U){"use strict";var $=w("./lib/oop"),A=w("./lib/event_emitter").EventEmitter,m=y.Anchor=function(l,s,t){this.$onChange=this.onChange.bind(this),this.attach(l),void 0===t?this.setPosition(s.row,s.column):this.setPosition(s,t)};(function(){function l(t,e,r){return t.row<e.row||t.row==e.row&&(r?t.column<=e.column:t.column<e.column)}$.implement(this,A),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(t){if(!(t.start.row==t.end.row&&t.start.row!=this.row||t.start.row>this.row)){var e=function(t,e,r){var i="insert"==t.action,o=(i?1:-1)*(t.end.row-t.start.row),n=(i?1:-1)*(t.end.column-t.start.column),h=t.start,c=i?h:t.end;return l(e,h,r)?{row:e.row,column:e.column}:l(c,e,!r)?{row:e.row+o,column:e.column+(e.row==c.row?n:0)}:{row:h.row,column:h.column}}(t,{row:this.row,column:this.column},this.$insertRight);this.setPosition(e.row,e.column,!0)}},this.setPosition=function(t,e,r){var i;if(i=r?{row:t,column:e}:this.$clipPositionToDocument(t,e),this.row!=i.row||this.column!=i.column){var o={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:o,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(t){this.document=t||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(t,e){var r={};return t>=this.document.getLength()?(r.row=Math.max(0,this.document.getLength()-1),r.column=this.document.getLine(r.row).length):t<0?(r.row=0,r.column=0):(r.row=t,r.column=Math.min(this.document.getLine(r.row).length,Math.max(0,e))),e<0&&(r.column=0),r}}).call(m.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(w,y,U){"use strict";var $=w("./lib/oop"),A=w("./apply_delta").applyDelta,m=w("./lib/event_emitter").EventEmitter,l=w("./range").Range,s=w("./anchor").Anchor,t=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){$.implement(this,m),this.setValue=function(e){var r=this.getLength()-1;this.remove(new l(0,0,r,this.getLine(r).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,r){return new s(this,e,r)},this.$split=0==="aaa".split(/a/).length?function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var r=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=r?r[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(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,r){return this.$lines.slice(e,r+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var r;if(e.start.row===e.end.row)r=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{(r=this.getLines(e.start.row,e.end.row))[0]=(r[0]||"").substring(e.start.column);var i=r.length-1;e.end.row-e.start.row==i&&(r[i]=r[i].substring(0,e.end.column))}return r},this.insertLines=function(e,r){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,r)},this.removeLines=function(e,r){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,r)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,r){return this.getLength()<=1&&this.$detectNewLine(r),this.insertMergedLines(e,this.$split(r))},this.insertInLine=function(e,r){var i=this.clippedPos(e.row,e.column),o=this.pos(e.row,e.column+r.length);return this.applyDelta({start:i,end:o,action:"insert",lines:[r]},!0),this.clonePos(o)},this.clippedPos=function(e,r){var i=this.getLength();void 0===e?e=i:e<0?e=0:e>=i&&(e=i-1,r=void 0);var o=this.getLine(e);return null==r&&(r=o.length),{row:e,column:r=Math.min(Math.max(r,0),o.length)}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,r){return{row:e,column:r}},this.$clipPosition=function(e){var r=this.getLength();return e.row>=r?(e.row=Math.max(0,r-1),e.column=this.getLine(r-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,r){var i=0;(e=Math.min(Math.max(e,0),this.getLength()))<this.getLength()?(r=r.concat([""]),i=0):(r=[""].concat(r),e--,i=this.$lines[e].length),this.insertMergedLines({row:e,column:i},r)},this.insertMergedLines=function(e,r){var i=this.clippedPos(e.row,e.column),o={row:i.row+r.length-1,column:(1==r.length?i.column:0)+r[r.length-1].length};return this.applyDelta({start:i,end:o,action:"insert",lines:r}),this.clonePos(o)},this.remove=function(e){var r=this.clippedPos(e.start.row,e.start.column),i=this.clippedPos(e.end.row,e.end.column);return this.applyDelta({start:r,end:i,action:"remove",lines:this.getLinesForRange({start:r,end:i})}),this.clonePos(r)},this.removeInLine=function(e,r,i){var o=this.clippedPos(e,r),n=this.clippedPos(e,i);return this.applyDelta({start:o,end:n,action:"remove",lines:this.getLinesForRange({start:o,end:n})},!0),this.clonePos(o)},this.removeFullLines=function(e,r){e=Math.min(Math.max(0,e),this.getLength()-1);var i=(r=Math.min(Math.max(0,r),this.getLength()-1))==this.getLength()-1&&e>0,o=r<this.getLength()-1,n=i?e-1:e,h=i?this.getLine(n).length:0,c=o?r+1:r,F=o?0:this.getLine(c).length,C=new l(n,h,c,F),u=this.$lines.slice(e,r+1);return this.applyDelta({start:C.start,end:C.end,action:"remove",lines:this.getLinesForRange(C)}),u},this.removeNewLine=function(e){e<this.getLength()-1&&e>=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,r){return e instanceof l||(e=l.fromPoints(e.start,e.end)),0===r.length&&e.isEmpty()?e.start:r==this.getTextRange(e)?e.end:(this.remove(e),r?this.insert(e.start,r):e.start)},this.applyDeltas=function(e){for(var r=0;r<e.length;r++)this.applyDelta(e[r])},this.revertDeltas=function(e){for(var r=e.length-1;r>=0;r--)this.revertDelta(e[r])},this.applyDelta=function(e,r){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!l.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),A(this.$lines,e,r),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,r){for(var i=e.lines,o=i.length,n=e.start.row,h=e.start.column,c=0,F=0;;){var C=i.slice(c=F,F+=r-1);if(F>o){e.lines=C,e.start.row=n+c,e.start.column=h;break}C.push(""),this.applyDelta({start:this.pos(n+c,h),end:this.pos(n+F,h=0),action:e.action,lines:C},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,r){for(var i=this.$lines||this.getAllLines(),o=this.getNewLineCharacter().length,n=r||0,h=i.length;n<h;n++)if((e-=i[n].length+o)<0)return{row:n,column:e+i[n].length+o};return{row:h-1,column:i[h-1].length}},this.positionToIndex=function(e,r){for(var i=this.$lines||this.getAllLines(),o=this.getNewLineCharacter().length,n=0,h=Math.min(e.row,i.length),c=r||0;c<h;++c)n+=i[c].length+o;return n+e.column}}).call(t.prototype),y.Document=t}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(w,y,U){"use strict";var $=w("./lib/oop"),A=w("./lib/event_emitter").EventEmitter,m=function(l,s){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=l;var t=this;this.$worker=function(){if(t.running){for(var e=new Date,r=t.currentLine,i=-1,o=t.doc,n=r;t.lines[r];)r++;var h=o.getLength(),c=0;for(t.running=!1;r<h;){t.$tokenizeRow(r),i=r;do{r++}while(t.lines[r]);if(++c%5==0&&new Date-e>20){t.running=setTimeout(t.$worker,20);break}}t.currentLine=r,-1==i&&(i=r),n<=i&&t.fireUpdateEvent(n,i)}}};(function(){$.implement(this,A),this.setTokenizer=function(l){this.tokenizer=l,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(l){this.doc=l,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(l,s){this._signal("update",{data:{first:l,last:s}})},this.start=function(l){this.currentLine=Math.min(l||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(l){var s=l.start.row,t=l.end.row-s;if(0===t)this.lines[s]=null;else if("remove"==l.action)this.lines.splice(s,t+1,null),this.states.splice(s,t+1,null);else{var e=Array(t+1);e.unshift(s,1),this.lines.splice.apply(this.lines,e),this.states.splice.apply(this.states,e)}this.currentLine=Math.min(s,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(l){return this.lines[l]||this.$tokenizeRow(l)},this.getState=function(l){return this.currentLine==l&&this.$tokenizeRow(l),this.states[l]||"start"},this.$tokenizeRow=function(l){var s=this.doc.getLine(l),e=this.tokenizer.getLineTokens(s,this.states[l-1],l);return this.states[l]+""!=e.state+""?(this.states[l]=e.state,this.lines[l+1]=null,this.currentLine>l+1&&(this.currentLine=l+1)):this.currentLine==l&&(this.currentLine=l+1),this.lines[l]=e.tokens}}).call(m.prototype),y.BackgroundTokenizer=m}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(w,y,U){"use strict";var $=w("./lib/lang"),m=(w("./lib/oop"),w("./range").Range),l=function(s,t,e){this.setRegexp(s),this.clazz=t,this.type=e||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(s){this.regExp+""!=s+""&&(this.regExp=s,this.cache=[])},this.update=function(s,t,e,r){if(this.regExp)for(var o=r.lastRow,n=r.firstRow;n<=o;n++){var h=this.cache[n];null==h&&((h=$.getMatchOffsets(e.getLine(n),this.regExp)).length>this.MAX_RANGES&&(h=h.slice(0,this.MAX_RANGES)),h=h.map(function(F){return new m(n,F.offset,n,F.offset+F.length)}),this.cache[n]=h.length?h:"");for(var c=h.length;c--;)t.drawSingleLineMarker(s,h[c].toScreenRange(e),this.clazz,r)}}}).call(l.prototype),y.SearchHighlight=l}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(w,y,U){"use strict";var $=w("../range").Range;function A(m,l){this.foldData=m,Array.isArray(l)?this.folds=l:l=this.folds=[l];var s=l[l.length-1];this.range=new $(l[0].start.row,l[0].start.column,s.end.row,s.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(t){t.setFoldLine(this)},this)}(function(){this.shiftRow=function(m){this.start.row+=m,this.end.row+=m,this.folds.forEach(function(l){l.start.row+=m,l.end.row+=m})},this.addFold=function(m){if(m.sameRow){if(m.start.row<this.startRow||m.endRow>this.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(m),this.folds.sort(function(l,s){return-l.range.compareEnd(s.start.row,s.start.column)}),this.range.compareEnd(m.start.row,m.start.column)>0?(this.end.row=m.end.row,this.end.column=m.end.column):this.range.compareStart(m.end.row,m.end.column)<0&&(this.start.row=m.start.row,this.start.column=m.start.column)}else if(m.start.row==this.end.row)this.folds.push(m),this.end.row=m.end.row,this.end.column=m.end.column;else{if(m.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(m),this.start.row=m.start.row,this.start.column=m.start.column}m.foldLine=this},this.containsRow=function(m){return m>=this.start.row&&m<=this.end.row},this.walk=function(m,l,s){var r,i,t=0,e=this.folds,n=!0;null==l&&(l=this.end.row,s=this.end.column);for(var h=0;h<e.length;h++){if(-1==(i=(r=e[h]).range.compareStart(l,s)))return void m(null,l,s,t,n);if(!m(null,r.start.row,r.start.column,t,n)&&m(r.placeholder,r.start.row,r.start.column,t)||0===i)return;n=!r.sameRow,t=r.end.column}m(null,l,s,t,n)},this.getNextFoldTo=function(m,l){for(var s,t,e=0;e<this.folds.length;e++){if(-1==(t=(s=this.folds[e]).range.compareEnd(m,l)))return{fold:s,kind:"after"};if(0===t)return{fold:s,kind:"inside"}}return null},this.addRemoveChars=function(m,l,s){var e,r,t=this.getNextFoldTo(m,l);if(t)if(e=t.fold,"inside"==t.kind&&e.start.column!=l&&e.start.row!=m)window.console&&window.console.log(m,l,e);else if(e.start.row==m){var i=(r=this.folds).indexOf(e);for(0===i&&(this.start.column+=s);i<r.length;i++){if((e=r[i]).start.column+=s,!e.sameRow)return;e.end.column+=s}this.end.column+=s}},this.split=function(m,l){var s=this.getNextFoldTo(m,l);if(!s||"inside"==s.kind)return null;var e=this.folds,r=this.foldData,i=e.indexOf(s.fold),o=e[i-1];this.end.row=o.end.row,this.end.column=o.end.column;var n=new A(r,e=e.splice(i,e.length-i));return r.splice(r.indexOf(this)+1,0,n),n},this.merge=function(m){for(var l=m.folds,s=0;s<l.length;s++)this.addFold(l[s]);var t=this.foldData;t.splice(t.indexOf(m),1)},this.toString=function(){var m=[this.range.toString()+": ["];return this.folds.forEach(function(l){m.push(" "+l.toString())}),m.push("]"),m.join("\n")},this.idxToPosition=function(m){for(var l=0,s=0;s<this.folds.length;s++){var t=this.folds[s];if((m-=t.start.column-l)<0)return{row:t.start.row,column:t.start.column+m};if((m-=t.placeholder.length)<0)return t.start;l=t.end.column}return{row:this.end.row,column:this.end.column+m}}}).call(A.prototype),y.FoldLine=A}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(w,y,U){"use strict";var A=w("./range").Range.comparePoints,m=function(){this.ranges=[]};(function(){this.comparePoints=A,this.pointIndex=function(l,s,t){for(var e=this.ranges,r=t||0;r<e.length;r++){var i=e[r],o=A(l,i.end);if(!(o>0)){var n=A(l,i.start);return 0===o?s&&0!==n?-r-2:r:n>0||0===n&&!s?r:-r-1}}return-r-1},this.add=function(l){var s=!l.isEmpty(),t=this.pointIndex(l.start,s);t<0&&(t=-t-1);var e=this.pointIndex(l.end,s,t);return e<0?e=-e-1:e++,this.ranges.splice(t,e-t,l)},this.addList=function(l){for(var s=[],t=l.length;t--;)s.push.apply(s,this.add(l[t]));return s},this.substractPoint=function(l){var s=this.pointIndex(l);if(s>=0)return this.ranges.splice(s,1)},this.merge=function(){for(var e,l=[],s=this.ranges,t=(s=s.sort(function(o,n){return A(o.start,n.start)}))[0],r=1;r<s.length;r++){var i=A((e=t).end,(t=s[r]).start);i<0||0==i&&!e.isEmpty()&&!t.isEmpty()||(A(e.end,t.end)<0&&(e.end.row=t.end.row,e.end.column=t.end.column),s.splice(r,1),l.push(t),t=e,r--)}return this.ranges=s,l},this.contains=function(l,s){return this.pointIndex({row:l,column:s})>=0},this.containsPoint=function(l){return this.pointIndex(l)>=0},this.rangeAtPoint=function(l){var s=this.pointIndex(l);if(s>=0)return this.ranges[s]},this.clipRows=function(l,s){var t=this.ranges;if(t[0].start.row>s||t[t.length-1].start.row<l)return[];var e=this.pointIndex({row:l,column:0});e<0&&(e=-e-1);var r=this.pointIndex({row:s,column:0},e);r<0&&(r=-r-1);for(var i=[],o=e;o<r;o++)i.push(t[o]);return i},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(l){this.session&&this.detach(),this.session=l,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(l){if("insert"==l.action)var s=l.start,t=l.end;else t=l.start,s=l.end;for(var e=s.row,i=t.row-e,o=-s.column+t.column,n=this.ranges,h=0,c=n.length;h<c;h++)if(!((F=n[h]).end.row<e)){if(F.start.row>e)break;if(F.start.row==e&&F.start.column>=s.column&&(F.start.column==s.column&&this.$insertRight||(F.start.column+=o,F.start.row+=i)),F.end.row==e&&F.end.column>=s.column){if(F.end.column==s.column&&this.$insertRight)continue;F.end.column==s.column&&o>0&&h<c-1&&F.end.column>F.start.column&&F.end.column==n[h+1].start.column&&(F.end.column-=o),F.end.column+=o,F.end.row+=i}}if(0!=i&&h<c)for(;h<c;h++){var F;(F=n[h]).start.row+=i,F.end.row+=i}}}).call(m.prototype),y.RangeList=m}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(w,y,U){"use strict";w("../range");var A=w("../range_list").RangeList,m=w("../lib/oop"),l=y.Fold=function(i,o){this.foldLine=null,this.placeholder=o,this.range=i,this.start=i.start,this.end=i.end,this.sameRow=i.start.row==i.end.row,this.subFolds=this.ranges=[]};function s(i,o){i.row-=o.row,0==i.row&&(i.column-=o.column)}function e(i,o){0==i.row&&(i.column+=o.column),i.row+=o.row}m.inherits(l,A),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(i){this.foldLine=i,this.subFolds.forEach(function(o){o.setFoldLine(i)})},this.clone=function(){var i=this.range.clone(),o=new l(i,this.placeholder);return this.subFolds.forEach(function(n){o.subFolds.push(n.clone())}),o.collapseChildren=this.collapseChildren,o},this.addSubFold=function(i){if(!this.range.isEqual(i)){if(!this.range.containsRange(i))throw new Error("A fold can't intersect already existing fold"+i.range+this.range);!function(i,o){s(i.start,o),s(i.end,o)}(i,this.start);for(var o=i.start.row,n=i.start.column,h=0,c=-1;h<this.subFolds.length&&1==(c=this.subFolds[h].range.compare(o,n));h++);if(0==c)return this.subFolds[h].addSubFold(i);o=i.range.end.row,n=i.range.end.column;var C=h;for(c=-1;C<this.subFolds.length&&1==(c=this.subFolds[C].range.compare(o,n));C++);if(0==c)throw new Error("A fold can't intersect already existing fold"+i.range+this.range);return this.subFolds.splice(h,C-h,i),i.setFoldLine(this.foldLine),i}},this.restoreRange=function(i){return function(i,o){e(i.start,o),e(i.end,o)}(i,this.start)}}.call(l.prototype)}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(w,y,U){"use strict";var $=w("../range").Range,A=w("./fold_line").FoldLine,m=w("./fold").Fold,l=w("../token_iterator").TokenIterator;y.Folding=function(){this.getFoldAt=function(t,e,r){var i=this.getFoldLine(t);if(!i)return null;for(var o=i.folds,n=0;n<o.length;n++){var h=o[n];if(h.range.contains(t,e)){if(1==r&&h.range.isEnd(t,e))continue;if(-1==r&&h.range.isStart(t,e))continue;return h}}},this.getFoldsInRange=function(t){var e=t.start,r=t.end,i=this.$foldData,o=[];e.column+=1,r.column-=1;for(var n=0;n<i.length;n++){var h=i[n].range.compareRange(t);if(2!=h){if(-2==h)break;for(var c=i[n].folds,F=0;F<c.length;F++){var C=c[F];if(-2==(h=C.range.compareRange(t)))break;if(2!=h){if(42==h)break;o.push(C)}}}}return e.column-=1,r.column+=1,o},this.getFoldsInRangeList=function(t){if(Array.isArray(t)){var e=[];t.forEach(function(r){e=e.concat(this.getFoldsInRange(r))},this)}else e=this.getFoldsInRange(t);return e},this.getAllFolds=function(){for(var t=[],e=this.$foldData,r=0;r<e.length;r++)for(var i=0;i<e[r].folds.length;i++)t.push(e[r].folds[i]);return t},this.getFoldStringAt=function(t,e,r,i){if(!(i=i||this.getFoldLine(t)))return null;for(var n,h,o={end:{column:0}},c=0;c<i.folds.length;c++){var F=(h=i.folds[c]).range.compareEnd(t,e);if(-1==F){n=this.getLine(h.start.row).substring(o.end.column,h.start.column);break}if(0===F)return null;o=h}return n||(n=this.getLine(h.start.row).substring(o.end.column)),-1==r?n.substring(0,e-o.end.column):1==r?n.substring(e-o.end.column):n},this.getFoldLine=function(t,e){var r=this.$foldData,i=0;for(e&&(i=r.indexOf(e)),-1==i&&(i=0);i<r.length;i++){var o=r[i];if(o.start.row<=t&&o.end.row>=t)return o;if(o.end.row>t)return null}return null},this.getNextFoldLine=function(t,e){var r=this.$foldData,i=0;for(e&&(i=r.indexOf(e)),-1==i&&(i=0);i<r.length;i++){var o=r[i];if(o.end.row>=t)return o}return null},this.getFoldedRowCount=function(t,e){for(var r=this.$foldData,i=e-t+1,o=0;o<r.length;o++){var n=r[o],h=n.end.row,c=n.start.row;if(h>=e){c<e&&(c>=t?i-=e-c:i=0);break}h>=t&&(i-=c>=t?h-c:h-t+1)}return i},this.$addFoldLine=function(t){return this.$foldData.push(t),this.$foldData.sort(function(e,r){return e.start.row-r.start.row}),t},this.addFold=function(t,e){var o,r=this.$foldData,i=!1;t instanceof m?o=t:(o=new m(e,t)).collapseChildren=e.collapseChildren,this.$clipRangeToDocument(o.range);var n=o.start.row,h=o.start.column,c=o.end.row,F=o.end.column;if(!(n<c||n==c&&h<=F-2))throw new Error("The range has to be at least 2 characters width");var C=this.getFoldAt(n,h,1),u=this.getFoldAt(c,F,-1);if(C&&u==C)return C.addSubFold(o);C&&!C.range.isStart(n,h)&&this.removeFold(C),u&&!u.range.isEnd(c,F)&&this.removeFold(u);var g=this.getFoldsInRange(o.range);g.length>0&&(this.removeFolds(g),g.forEach(function(E){o.addSubFold(E)}));for(var a=0;a<r.length;a++){var f=r[a];if(c==f.start.row){f.addFold(o),i=!0;break}if(n==f.end.row){if(f.addFold(o),i=!0,!o.sameRow){var p=r[a+1];if(p&&p.start.row==c){f.merge(p);break}}break}if(c<=f.start.row)break}return i||(f=this.$addFoldLine(new A(this.$foldData,o))),this.$useWrapMode?this.$updateWrapData(f.start.row,f.start.row):this.$updateRowLengthCache(f.start.row,f.start.row),this.$modified=!0,this._signal("changeFold",{data:o,action:"add"}),o},this.addFolds=function(t){t.forEach(function(e){this.addFold(e)},this)},this.removeFold=function(t){var e=t.foldLine,r=e.start.row,i=e.end.row,o=this.$foldData,n=e.folds;if(1==n.length)o.splice(o.indexOf(e),1);else if(e.range.isEnd(t.end.row,t.end.column))n.pop(),e.end.row=n[n.length-1].end.row,e.end.column=n[n.length-1].end.column;else if(e.range.isStart(t.start.row,t.start.column))n.shift(),e.start.row=n[0].start.row,e.start.column=n[0].start.column;else if(t.sameRow)n.splice(n.indexOf(t),1);else{var h=e.split(t.start.row,t.start.column);(n=h.folds).shift(),h.start.row=n[0].start.row,h.start.column=n[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(r,i):this.$updateRowLengthCache(r,i)),this.$modified=!0,this._signal("changeFold",{data:t,action:"remove"})},this.removeFolds=function(t){for(var e=[],r=0;r<t.length;r++)e.push(t[r]);e.forEach(function(i){this.removeFold(i)},this),this.$modified=!0},this.expandFold=function(t){this.removeFold(t),t.subFolds.forEach(function(e){t.restoreRange(e),this.addFold(e)},this),t.collapseChildren>0&&this.foldAll(t.start.row+1,t.end.row,t.collapseChildren-1),t.subFolds=[]},this.expandFolds=function(t){t.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(t,e){var r,i;if(null==t?(r=new $(0,0,this.getLength(),0),e=!0):r="number"==typeof t?new $(t,0,t,this.getLine(t).length):"row"in t?$.fromPoints(t,t):t,i=this.getFoldsInRangeList(r),e)this.removeFolds(i);else for(var o=i;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(r);if(i.length)return i},this.isRowFolded=function(t,e){return!!this.getFoldLine(t,e)},this.getRowFoldEnd=function(t,e){var r=this.getFoldLine(t,e);return r?r.end.row:t},this.getRowFoldStart=function(t,e){var r=this.getFoldLine(t,e);return r?r.start.row:t},this.getFoldDisplayLine=function(t,e,r,i,o){null==i&&(i=t.start.row),null==o&&(o=0),null==e&&(e=t.end.row),null==r&&(r=this.getLine(e).length);var n=this.doc,h="";return t.walk(function(c,F,C,u){if(!(F<i)){if(F==i){if(C<o)return;u=Math.max(o,u)}h+=null!=c?c:n.getLine(F).substring(u,C)}},e,r),h},this.getDisplayLine=function(t,e,r,i){var n,o=this.getFoldLine(t);return o?this.getFoldDisplayLine(o,t,e,r,i):(n=this.doc.getLine(t)).substring(i||0,e||n.length)},this.$cloneFoldData=function(){var t=[];return t=this.$foldData.map(function(e){var r=e.folds.map(function(i){return i.clone()});return new A(t,r)})},this.toggleFold=function(t){var i,o,r=this.selection.getRange();if(r.isEmpty()){var n=r.start;if(i=this.getFoldAt(n.row,n.column))return void this.expandFold(i);(o=this.findMatchingBracket(n))?1==r.comparePoint(o)?r.end=o:(r.start=o,r.start.column++,r.end.column--):(o=this.findMatchingBracket({row:n.row,column:n.column+1}))?(1==r.comparePoint(o)?r.end=o:r.start=o,r.start.column++):r=this.getCommentFoldRange(n.row,n.column)||r}else{var h=this.getFoldsInRange(r);if(t&&h.length)return void this.expandFolds(h);1==h.length&&(i=h[0])}if(i||(i=this.getFoldAt(r.start.row,r.start.column)),i&&i.range.toString()==r.toString())this.expandFold(i);else{var c="...";if(!r.isMultiLine()){if((c=this.getTextRange(r)).length<4)return;c=c.trim().substring(0,2)+".."}this.addFold(c,r)}},this.getCommentFoldRange=function(t,e,r){var i=new l(this,t,e),o=i.getCurrentToken(),n=o.type;if(o&&/^comment|string/.test(n)){"comment"==(n=n.match(/comment|string/)[0])&&(n+="|doc-start");var h=new RegExp(n),c=new $;if(1!=r){do{o=i.stepBackward()}while(o&&h.test(o.type));i.stepForward()}if(c.start.row=i.getCurrentTokenRow(),c.start.column=i.getCurrentTokenColumn()+2,i=new l(this,t,e),-1!=r){var F=-1;do{if(o=i.stepForward(),-1==F){var C=this.getState(i.$row);h.test(C)||(F=i.$row)}else if(i.$row>F)break}while(o&&h.test(o.type));o=i.stepBackward()}else o=i.getCurrentToken();return c.end.row=i.getCurrentTokenRow(),c.end.column=i.getCurrentTokenColumn()+o.value.length-2,c}},this.foldAll=function(t,e,r){null==r&&(r=1e5);var i=this.foldWidgets;if(i){e=e||this.getLength();for(var o=t=t||0;o<e;o++)if(null==i[o]&&(i[o]=this.getFoldWidget(o)),"start"==i[o]){var n=this.getFoldWidgetRange(o);if(n&&n.isMultiLine()&&n.end.row<=e&&n.start.row>=t){o=n.end.row;try{var h=this.addFold("...",n);h&&(h.collapseChildren=r)}catch(c){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(t){if(!this.$foldStyles[t])throw new Error("invalid fold style: "+t+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=t){this.$foldStyle=t,"manual"==t&&this.unfold();var e=this.$foldMode;this.$setFolding(null),this.$setFolding(e)}},this.$setFolding=function(t){if(this.$foldMode!=t){if(this.$foldMode=t,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!t||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=t.getFoldWidget.bind(t,this,this.$foldStyle),this.getFoldWidgetRange=t.getFoldWidgetRange.bind(t,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.getParentFoldRangeData=function(t,e){var r=this.foldWidgets;if(!r||e&&r[t])return{};for(var o,i=t-1;i>=0;){var n=r[i];if(null==n&&(n=r[i]=this.getFoldWidget(i)),"start"==n){var h=this.getFoldWidgetRange(i);if(o||(o=h),h&&h.end.row>=t)break}i--}return{range:-1!==i&&h,firstRange:o}},this.onFoldWidgetClick=function(t,e){if(!this.$toggleFoldWidget(t,{children:(e=e.domEvent).shiftKey,all:e.ctrlKey||e.metaKey,siblings:e.altKey})){var o=e.target||e.srcElement;o&&/ace_fold-widget/.test(o.className)&&(o.className+=" ace_invalid")}},this.$toggleFoldWidget=function(t,e){if(this.getFoldWidget){var r=this.getFoldWidget(t),i=this.getLine(t),o="end"===r?-1:1,n=this.getFoldAt(t,-1===o?0:i.length,o);if(n)return e.children||e.all?this.removeFold(n):this.expandFold(n),n;var h=this.getFoldWidgetRange(t,!0);if(h&&!h.isMultiLine()&&(n=this.getFoldAt(h.start.row,h.start.column,1))&&h.isEqual(n.range))return this.removeFold(n),n;if(e.siblings){var c=this.getParentFoldRangeData(t);if(c.range)var F=c.range.start.row+1,C=c.range.end.row;this.foldAll(F,C,e.all?1e4:0)}else e.children?(C=h?h.end.row:this.getLength(),this.foldAll(t+1,C,e.all?1e4:0)):h&&(e.all&&(h.collapseChildren=1e4),this.addFold("...",h));return h}},this.toggleFoldWidget=function(t){var e=this.selection.getCursor().row;e=this.getRowFoldStart(e);var r=this.$toggleFoldWidget(e,{});if(!r){var i=this.getParentFoldRangeData(e,!0);if(r=i.range||i.firstRange){var o=this.getFoldAt(e=r.start.row,this.getLine(e).length,1);o?this.removeFold(o):this.addFold("...",r)}}},this.updateFoldWidgets=function(t){var e=t.start.row,r=t.end.row-e;if(0===r)this.foldWidgets[e]=null;else if("remove"==t.action)this.foldWidgets.splice(e,r+1,null);else{var i=Array(r+1);i.unshift(e,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(t){var e=t.data;e.first!=e.last&&this.foldWidgets.length>e.first&&this.foldWidgets.splice(e.first,this.foldWidgets.length)}}}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(w,y,U){"use strict";var $=w("../token_iterator").TokenIterator,A=w("../range").Range;y.BracketMatch=function(){this.findMatchingBracket=function(l,s){if(0==l.column)return null;var t=s||this.getLine(l.row).charAt(l.column-1);if(""==t)return null;var e=t.match(/([\(\[\{])|([\)\]\}])/);return e?e[1]?this.$findClosingBracket(e[1],l):this.$findOpeningBracket(e[2],l):null},this.getBracketRange=function(l){var e,s=this.getLine(l.row),t=!0,r=s.charAt(l.column-1),i=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(i||(r=s.charAt(l.column),l={row:l.row,column:l.column+1},i=r&&r.match(/([\(\[\{])|([\)\]\}])/),t=!1),!i)return null;if(i[1]){if(!(o=this.$findClosingBracket(i[1],l)))return null;e=A.fromPoints(l,o),t||(e.end.column++,e.start.column--),e.cursor=e.end}else{var o;if(!(o=this.$findOpeningBracket(i[2],l)))return null;e=A.fromPoints(o,l),t||(e.start.column++,e.end.column--),e.cursor=e.start}return e},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(l,s,t){var e=this.$brackets[l],r=1,i=new $(this,s.row,s.column),o=i.getCurrentToken();if(o||(o=i.stepForward()),o){t||(t=new RegExp("(\\.?"+o.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var n=s.column-i.getCurrentTokenColumn()-2,h=o.value;;){for(;n>=0;){var c=h.charAt(n);if(c==e){if(0==(r-=1))return{row:i.getCurrentTokenRow(),column:n+i.getCurrentTokenColumn()}}else c==l&&(r+=1);n-=1}do{o=i.stepBackward()}while(o&&!t.test(o.type));if(null==o)break;n=(h=o.value).length-1}return null}},this.$findClosingBracket=function(l,s,t){var e=this.$brackets[l],r=1,i=new $(this,s.row,s.column),o=i.getCurrentToken();if(o||(o=i.stepForward()),o){t||(t=new RegExp("(\\.?"+o.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var n=s.column-i.getCurrentTokenColumn();;){for(var h=o.value,c=h.length;n<c;){var F=h.charAt(n);if(F==e){if(0==(r-=1))return{row:i.getCurrentTokenRow(),column:n+i.getCurrentTokenColumn()}}else F==l&&(r+=1);n+=1}do{o=i.stepForward()}while(o&&!t.test(o.type));if(null==o)break;n=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"],function(w,y,U){"use strict";var $=w("./lib/oop"),A=w("./lib/lang"),m=w("./bidihandler").BidiHandler,l=w("./config"),s=w("./lib/event_emitter").EventEmitter,t=w("./selection").Selection,e=w("./mode/text").Mode,r=w("./range").Range,i=w("./document").Document,o=w("./background_tokenizer").BackgroundTokenizer,n=w("./search_highlight").SearchHighlight,h=function(c,F){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.id="session"+ ++h.$uid,this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),("object"!=typeof c||!c.getLine)&&(c=new i(c)),this.$bidiHandler=new m(this),this.setDocument(c),this.selection=new t(this),l.resetOptions(this),this.setMode(F),l._signal("session",this)};h.$uid=0,function(){$.implement(this,s),this.setDocument=function(d){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=d,d.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(d){if(!d)return this.$docRowCache=[],void(this.$screenRowCache=[]);var v=this.$docRowCache.length,b=this.$getRowCacheIndex(this.$docRowCache,d)+1;v>b&&(this.$docRowCache.splice(b,v),this.$screenRowCache.splice(b,v))},this.$getRowCacheIndex=function(d,v){for(var b=0,B=d.length-1;b<=B;){var S=b+B>>1,D=d[S];if(v>D)b=S+1;else{if(!(v<D))return S;B=S-1}}return b-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(d){this.$resetRowCache(d.data.start.row)},this.onChange=function(d){this.$modified=!0,this.$bidiHandler.onChange(d),this.$resetRowCache(d.start.row);var v=this.$updateInternalDataOnChange(d);!this.$fromUndo&&this.$undoManager&&!d.ignore&&(this.$deltasDoc.push(d),v&&0!=v.length&&this.$deltasFold.push({action:"removeFolds",folds:v}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(d),this._signal("change",d)},this.setValue=function(d){this.doc.setValue(d),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],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(d){return this.bgTokenizer.getState(d)},this.getTokens=function(d){return this.bgTokenizer.getTokens(d)},this.getTokenAt=function(d,v){var B,b=this.bgTokenizer.getTokens(d),S=0;if(null==v){var D=b.length-1;S=this.getLine(d).length}else for(D=0;D<b.length&&!((S+=b[D].value.length)>=v);D++);return(B=b[D])?(B.index=D,B.start=S-B.value.length,B):null},this.setUndoManager=function(d){if(this.$undoManager=d,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),d){var v=this;this.$syncInformUndoManager=function(){v.$informUndoManager.cancel(),v.$deltasFold.length&&(v.$deltas.push({group:"fold",deltas:v.$deltasFold}),v.$deltasFold=[]),v.$deltasDoc.length&&(v.$deltas.push({group:"doc",deltas:v.$deltasDoc}),v.$deltasDoc=[]),v.$deltas.length>0&&d.execute({action:"aceupdate",args:[v.$deltas,v],merge:v.mergeUndoDeltas}),v.mergeUndoDeltas=!1,v.$deltas=[]},this.$informUndoManager=A.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?A.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(d){this.setOption("useSoftTabs",d)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(d){this.setOption("tabSize",d)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(d){return this.$useSoftTabs&&d.column%this.$tabSize==0},this.setNavigateWithinSoftTabs=function(d){this.setOption("navigateWithinSoftTabs",d)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(d){this.setOption("overwrite",d)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(d,v){this.$decorations[d]||(this.$decorations[d]=""),this.$decorations[d]+=" "+v,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(d,v){this.$decorations[d]=(this.$decorations[d]||"").replace(" "+v,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(d){this.$breakpoints=[];for(var v=0;v<d.length;v++)this.$breakpoints[d[v]]="ace_breakpoint";this._signal("changeBreakpoint",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._signal("changeBreakpoint",{})},this.setBreakpoint=function(d,v){void 0===v&&(v="ace_breakpoint"),v?this.$breakpoints[d]=v:delete this.$breakpoints[d],this._signal("changeBreakpoint",{})},this.clearBreakpoint=function(d){delete this.$breakpoints[d],this._signal("changeBreakpoint",{})},this.addMarker=function(d,v,b,B){var S=this.$markerId++,D={range:d,type:b||"line",renderer:"function"==typeof b?b:null,clazz:v,inFront:!!B,id:S};return B?(this.$frontMarkers[S]=D,this._signal("changeFrontMarker")):(this.$backMarkers[S]=D,this._signal("changeBackMarker")),S},this.addDynamicMarker=function(d,v){if(d.update){var b=this.$markerId++;return d.id=b,d.inFront=!!v,v?(this.$frontMarkers[b]=d,this._signal("changeFrontMarker")):(this.$backMarkers[b]=d,this._signal("changeBackMarker")),d}},this.removeMarker=function(d){var v=this.$frontMarkers[d]||this.$backMarkers[d];v&&v&&(delete(v.inFront?this.$frontMarkers:this.$backMarkers)[d],this._signal(v.inFront?"changeFrontMarker":"changeBackMarker"))},this.getMarkers=function(d){return d?this.$frontMarkers:this.$backMarkers},this.highlight=function(d){if(!this.$searchHighlight){var v=new n(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(v)}this.$searchHighlight.setRegexp(d)},this.highlightLines=function(d,v,b,B){"number"!=typeof v&&(b=v,v=d),b||(b="ace_step");var S=new r(d,0,v,1/0);return S.id=this.addMarker(S,b,"fullLine",B),S},this.setAnnotations=function(d){this.$annotations=d,this._signal("changeAnnotation",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(d){var v=d.match(/^.*?(\r?\n)/m);this.$autoNewLine=v?v[1]:"\n"},this.getWordRange=function(d,v){var b=this.getLine(d),B=!1;if(v>0&&(B=!!b.charAt(v-1).match(this.tokenRe)),B||(B=!!b.charAt(v).match(this.tokenRe)),B)var S=this.tokenRe;else S=/^\s+$/.test(b.slice(v-1,v+1))?/\s/:this.nonTokenRe;var D=v;if(D>0){do{D--}while(D>=0&&b.charAt(D).match(S));D++}for(var k=v;k<b.length&&b.charAt(k).match(S);)k++;return new r(d,D,d,k)},this.getAWordRange=function(d,v){for(var b=this.getWordRange(d,v),B=this.getLine(b.end.row);B.charAt(b.end.column).match(/[ \t]/);)b.end.column+=1;return b},this.setNewLineMode=function(d){this.doc.setNewLineMode(d)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(d){this.setOption("useWorker",d)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(d){this.bgTokenizer.start(d.data.first),this._signal("tokenizerUpdate",d)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(d,v){if(d&&"object"==typeof d){if(d.getTokenizer)return this.$onChangeMode(d);var b=d,B=d.path}else B=d||"ace/mode/text";if(this.$modes["ace/mode/text"]||(this.$modes["ace/mode/text"]=new e),this.$modes[B]&&!b)return this.$onChangeMode(this.$modes[B]),void(v&&v());this.$modeId=B,l.loadModule(["mode",B],function(S){if(this.$modeId!==B)return v&&v();this.$modes[B]&&!b?this.$onChangeMode(this.$modes[B]):S&&S.Mode&&(S=new S.Mode(b),b||(this.$modes[B]=S,S.$id=B),this.$onChangeMode(S)),v&&v()}.bind(this)),this.$mode||this.$onChangeMode(this.$modes["ace/mode/text"],!0)},this.$onChangeMode=function(d,v){if(v||(this.$modeId=d.$id),this.$mode!==d){this.$mode=d,this.$stopWorker(),this.$useWorker&&this.$startWorker();var b=d.getTokenizer();if(void 0!==b.addEventListener){var B=this.onReloadTokenizer.bind(this);b.addEventListener("update",B)}if(this.bgTokenizer)this.bgTokenizer.setTokenizer(b);else{this.bgTokenizer=new o(b);var S=this;this.bgTokenizer.addEventListener("update",function(D){S._signal("tokenizerUpdate",D)})}this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=d.tokenRe,this.nonTokenRe=d.nonTokenRe,v||(d.attachToSession&&d.attachToSession(this),this.$options.wrapMethod.set.call(this,this.$wrapMethod),this.$setFolding(d.foldingRules),this.bgTokenizer.start(0),this._emit("changeMode"))}},this.$stopWorker=function(){this.$worker&&(this.$worker.terminate(),this.$worker=null)},this.$startWorker=function(){try{this.$worker=this.$mode.createWorker(this)}catch(d){l.warn("Could not load worker",d),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(d){this.$scrollTop===d||isNaN(d)||(this.$scrollTop=d,this._signal("changeScrollTop",d))},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(d){this.$scrollLeft===d||isNaN(d)||(this.$scrollLeft=d,this._signal("changeScrollLeft",d))},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth},this.getLineWidgetMaxWidth=function(){if(null!=this.lineWidgetsWidth)return this.lineWidgetsWidth;var d=0;return this.lineWidgets.forEach(function(v){v&&v.screenWidth>d&&(d=v.screenWidth)}),this.lineWidgetWidth=d},this.$computeWidth=function(d){if(this.$modified||d){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var v=this.doc.getAllLines(),b=this.$rowLengthCache,B=0,S=0,D=this.$foldData[S],k=D?D.start.row:1/0,M=v.length,O=0;O<M;O++){if(O>k){if((O=D.end.row+1)>=M)break;k=(D=this.$foldData[S++])?D.start.row:1/0}null==b[O]&&(b[O]=this.$getStringScreenWidth(v[O])[0]),b[O]>B&&(B=b[O])}this.screenWidth=B}},this.getLine=function(d){return this.doc.getLine(d)},this.getLines=function(d,v){return this.doc.getLines(d,v)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(d){return this.doc.getTextRange(d||this.selection.getRange())},this.insert=function(d,v){return this.doc.insert(d,v)},this.remove=function(d){return this.doc.remove(d)},this.removeFullLines=function(d,v){return this.doc.removeFullLines(d,v)},this.undoChanges=function(d,v){if(d.length){this.$fromUndo=!0;for(var b=null,B=d.length-1;-1!=B;B--){var S=d[B];"doc"==S.group?(this.doc.revertDeltas(S.deltas),b=this.$getUndoSelection(S.deltas,!0,b)):S.deltas.forEach(function(D){this.addFolds(D.folds)},this)}return this.$fromUndo=!1,b&&this.$undoSelect&&!v&&this.selection.setSelectionRange(b),b}},this.redoChanges=function(d,v){if(d.length){this.$fromUndo=!0;for(var b=null,B=0;B<d.length;B++){var S=d[B];"doc"==S.group&&(this.doc.applyDeltas(S.deltas),b=this.$getUndoSelection(S.deltas,!1,b))}return this.$fromUndo=!1,b&&this.$undoSelect&&!v&&this.selection.setSelectionRange(b),b}},this.setUndoSelect=function(d){this.$undoSelect=d},this.$getUndoSelection=function(d,v,b){function B(V){return v?"insert"!==V.action:"insert"===V.action}var D,k,S=d[0];D=B(S)?r.fromPoints(S.start,S.end):r.fromPoints(S.start,S.start);for(var O=1;O<d.length;O++)B(S=d[O])?(-1==D.compare((k=S.start).row,k.column)&&D.setStart(k),1==D.compare((k=S.end).row,k.column)&&D.setEnd(k)):-1==D.compare((k=S.start).row,k.column)&&(D=r.fromPoints(S.start,S.start));if(null!=b){0===r.comparePoints(b.start,D.start)&&(b.start.column+=D.end.column-D.start.column,b.end.column+=D.end.column-D.start.column);var z=b.compareRange(D);1==z?D.setStart(b.start):-1==z&&D.setEnd(b.end)}return D},this.replace=function(d,v){return this.doc.replace(d,v)},this.moveText=function(d,v,b){var B=this.getTextRange(d),S=this.getFoldsInRange(d),D=r.fromPoints(v,v);if(b||(this.remove(d),(M=(k=d.start.row-d.end.row)?-d.end.column:d.start.column-d.end.column)&&(D.start.row==d.end.row&&D.start.column>d.end.column&&(D.start.column+=M),D.end.row==d.end.row&&D.end.column>d.end.column&&(D.end.column+=M)),k&&D.start.row>=d.end.row&&(D.start.row+=k,D.end.row+=k)),D.end=this.insert(D.start,B),S.length){var O=d.start,z=D.start,k=z.row-O.row,M=z.column-O.column;this.addFolds(S.map(function(K){return(K=K.clone()).start.row==O.row&&(K.start.column+=M),K.end.row==O.row&&(K.end.column+=M),K.start.row+=k,K.end.row+=k,K}))}return D},this.indentRows=function(d,v,b){b=b.replace(/\t/g,this.getTabString());for(var B=d;B<=v;B++)this.doc.insertInLine({row:B,column:0},b)},this.outdentRows=function(d){for(var v=d.collapseRows(),b=new r(0,0,0,0),B=this.getTabSize(),S=v.start.row;S<=v.end.row;++S){var D=this.getLine(S);b.start.row=S,b.end.row=S;for(var k=0;k<B&&" "==D.charAt(k);++k);k<B&&"\t"==D.charAt(k)?(b.start.column=k,b.end.column=k+1):(b.start.column=0,b.end.column=k),this.remove(b)}},this.$moveLines=function(d,v,b){if(d=this.getRowFoldStart(d),v=this.getRowFoldEnd(v),b<0){if((B=this.getRowFoldStart(d+b))<0)return 0;var S=B-d}else if(b>0){var B;if((B=this.getRowFoldEnd(v+b))>this.doc.getLength()-1)return 0;S=B-v}else d=this.$clipRowToDocument(d),S=(v=this.$clipRowToDocument(v))-d+1;var D=new r(d,0,v,Number.MAX_VALUE),k=this.getFoldsInRange(D).map(function(O){return(O=O.clone()).start.row+=S,O.end.row+=S,O}),M=0==b?this.doc.getLines(d,v):this.doc.removeFullLines(d,v);return this.doc.insertFullLines(d+S,M),k.length&&this.addFolds(k),S},this.moveLinesUp=function(d,v){return this.$moveLines(d,v,-1)},this.moveLinesDown=function(d,v){return this.$moveLines(d,v,1)},this.duplicateLines=function(d,v){return this.$moveLines(d,v,0)},this.$clipRowToDocument=function(d){return Math.max(0,Math.min(d,this.doc.getLength()-1))},this.$clipColumnToRow=function(d,v){return v<0?0:Math.min(this.doc.getLine(d).length,v)},this.$clipPositionToDocument=function(d,v){if(v=Math.max(0,v),d<0)d=0,v=0;else{var b=this.doc.getLength();d>=b?(d=b-1,v=this.doc.getLine(b-1).length):v=Math.min(this.doc.getLine(d).length,v)}return{row:d,column:v}},this.$clipRangeToDocument=function(d){d.start.row<0?(d.start.row=0,d.start.column=0):d.start.column=this.$clipColumnToRow(d.start.row,d.start.column);var v=this.doc.getLength()-1;return d.end.row>v?(d.end.row=v,d.end.column=this.doc.getLine(v).length):d.end.column=this.$clipColumnToRow(d.end.row,d.end.column),d},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(d){if(d!=this.$useWrapMode){if(this.$useWrapMode=d,this.$modified=!0,this.$resetRowCache(0),d){var v=this.getLength();this.$wrapData=Array(v),this.$updateWrapData(0,v-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(d,v){(this.$wrapLimitRange.min!==d||this.$wrapLimitRange.max!==v)&&(this.$wrapLimitRange={min:d,max:v},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(d,v){var b=this.$wrapLimitRange;b.max<0&&(b={min:v,max:v});var B=this.$constrainWrapLimit(d,b.min,b.max);return B!=this.$wrapLimit&&B>1&&(this.$wrapLimit=B,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(d,v,b){return v&&(d=Math.max(v,d)),b&&(d=Math.min(b,d)),d},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(d){this.setWrapLimitRange(d,d)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(d){var v=this.$useWrapMode,b=d.action,B=d.start,S=d.end,D=B.row,k=S.row,M=k-D,O=null;if(this.$updating=!0,0!=M)if("remove"===b){this[v?"$wrapData":"$rowLengthCache"].splice(D,M);var z=this.$foldData;O=this.getFoldsInRange(d),this.removeFolds(O);var R=0;if(V=this.getFoldLine(S.row)){V.addRemoveChars(S.row,S.column,B.column-S.column),V.shiftRow(-M);var K=this.getFoldLine(D);K&&K!==V&&(K.merge(V),V=K),R=z.indexOf(V)+1}for(;R<z.length;R++)(V=z[R]).start.row>=S.row&&V.shiftRow(-M);k=D}else{var T=Array(M);T.unshift(D,0);var x=v?this.$wrapData:this.$rowLengthCache;if(x.splice.apply(x,T),z=this.$foldData,R=0,V=this.getFoldLine(D)){var L=V.range.compareInside(B.row,B.column);0==L?(V=V.split(B.row,B.column))&&(V.shiftRow(M),V.addRemoveChars(k,0,S.column-B.column)):-1==L&&(V.addRemoveChars(D,0,S.column-B.column),V.shiftRow(M)),R=z.indexOf(V)+1}for(;R<z.length;R++){var V;(V=z[R]).start.row>=D&&V.shiftRow(M)}}else M=Math.abs(d.start.column-d.end.column),"remove"===b&&(O=this.getFoldsInRange(d),this.removeFolds(O),M=-M),(V=this.getFoldLine(D))&&V.addRemoveChars(D,B.column,M);return v&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,v?this.$updateWrapData(D,k):this.$updateRowLengthCache(D,k),O},this.$updateRowLengthCache=function(d,v,b){this.$rowLengthCache[d]=null,this.$rowLengthCache[v]=null},this.$updateWrapData=function(d,v){var k,M,b=this.doc.getAllLines(),B=this.getTabSize(),S=this.$wrapData,D=this.$wrapLimit,O=d;for(v=Math.min(v,b.length-1);O<=v;)(M=this.getFoldLine(O,M))?(k=[],M.walk(function(z,V,R,K){var T;if(null!=z){(T=this.$getDisplayTokens(z,k.length))[0]=C;for(var x=1;x<T.length;x++)T[x]=u}else T=this.$getDisplayTokens(b[V].substring(K,R),k.length);k=k.concat(T)}.bind(this),M.end.row,b[M.end.row].length+1),S[M.start.row]=this.$computeWrapSplits(k,D,B),O=M.end.row+1):(k=this.$getDisplayTokens(b[O]),S[O]=this.$computeWrapSplits(k,D,B),O++)};var C=3,u=4;function E(d){return!(d<4352)&&(d>=4352&&d<=4447||d>=4515&&d<=4519||d>=4602&&d<=4607||d>=9001&&d<=9002||d>=11904&&d<=11929||d>=11931&&d<=12019||d>=12032&&d<=12245||d>=12272&&d<=12283||d>=12288&&d<=12350||d>=12353&&d<=12438||d>=12441&&d<=12543||d>=12549&&d<=12589||d>=12593&&d<=12686||d>=12688&&d<=12730||d>=12736&&d<=12771||d>=12784&&d<=12830||d>=12832&&d<=12871||d>=12880&&d<=13054||d>=13056&&d<=19903||d>=19968&&d<=42124||d>=42128&&d<=42182||d>=43360&&d<=43388||d>=44032&&d<=55203||d>=55216&&d<=55238||d>=55243&&d<=55291||d>=63744&&d<=64255||d>=65040&&d<=65049||d>=65072&&d<=65106||d>=65108&&d<=65126||d>=65128&&d<=65131||d>=65281&&d<=65376||d>=65504&&d<=65510)}this.$computeWrapSplits=function(d,v,b){if(0==d.length)return[];var B=[],S=d.length,D=0,k=0,M=this.$wrapAsCode,O=this.$indentedSoftWrap,z=v<=Math.max(2*b,8)||!1===O?0:Math.floor(v/2);function R(L){var P=d.slice(D,L),I=P.length;P.join("").replace(/12/g,function(){I-=1}).replace(/2/g,function(){I-=1}),B.length||(K=function(){var L=0;if(0===z)return L;if(O)for(var P=0;P<d.length;P++){var I=d[P];if(10==I)L+=1;else{if(11!=I){if(12==I)continue;break}L+=b}}return M&&!1!==O&&(L+=b),Math.min(L,z)}(),B.indent=K),B.push(k+=I),D=L}for(var K=0;S-D>v-K;){var T=D+v-K;if(d[T-1]>=10&&d[T]>=10)R(T);else if(d[T]!=C&&d[T]!=u){for(var x=Math.max(T-(v-(v>>2)),D-1);T>x&&d[T]<C;)T--;if(M){for(;T>x&&d[T]<C;)T--;for(;T>x&&9==d[T];)T--}else for(;T>x&&d[T]<10;)T--;T>x?R(++T):(2==d[T=D+v]&&T--,R(T-K))}else{for(;T!=D-1&&d[T]!=C;T--);if(T>D){R(T);continue}for(T=D+v;T<d.length&&d[T]==u;T++);if(T==d.length)break;R(T)}}return B},this.$getDisplayTokens=function(d,v){var B,b=[];v=v||0;for(var S=0;S<d.length;S++){var D=d.charCodeAt(S);if(9==D){B=this.getScreenTabSize(b.length+v),b.push(11);for(var k=1;k<B;k++)b.push(12)}else 32==D?b.push(10):D>39&&D<48||D>57&&D<64?b.push(9):D>=4352&&E(D)?b.push(1,2):b.push(1)}return b},this.$getStringScreenWidth=function(d,v,b){if(0==v)return[0,0];var B,S;for(null==v&&(v=1/0),b=b||0,S=0;S<d.length&&(9==(B=d.charCodeAt(S))?b+=this.getScreenTabSize(b):B>=4352&&E(B)?b+=2:b+=1,!(b>v));S++);return[b,S]},this.lineWidgets=null,this.getRowLength=function(d){if(this.lineWidgets)var v=this.lineWidgets[d]&&this.lineWidgets[d].rowCount||0;else v=0;return this.$useWrapMode&&this.$wrapData[d]?this.$wrapData[d].length+1+v:1+v},this.getRowLineCount=function(d){return this.$useWrapMode&&this.$wrapData[d]?this.$wrapData[d].length+1:1},this.getRowWrapIndent=function(d){if(this.$useWrapMode){var v=this.screenToDocumentPosition(d,Number.MAX_VALUE),b=this.$wrapData[v.row];return b.length&&b[0]<v.column?b.indent:0}return 0},this.getScreenLastRowColumn=function(d){var v=this.screenToDocumentPosition(d,Number.MAX_VALUE);return this.documentToScreenColumn(v.row,v.column)},this.getDocumentLastRowColumn=function(d,v){var b=this.documentToScreenRow(d,v);return this.getScreenLastRowColumn(b)},this.getDocumentLastRowColumnPosition=function(d,v){var b=this.documentToScreenRow(d,v);return this.screenToDocumentPosition(b,Number.MAX_VALUE/10)},this.getRowSplitData=function(d){if(this.$useWrapMode)return this.$wrapData[d]},this.getScreenTabSize=function(d){return this.$tabSize-d%this.$tabSize},this.screenToDocumentRow=function(d,v){return this.screenToDocumentPosition(d,v).row},this.screenToDocumentColumn=function(d,v){return this.screenToDocumentPosition(d,v).column},this.screenToDocumentPosition=function(d,v,b){if(d<0)return{row:0,column:0};var B,k,S=0,D=0,M=0,O=0,z=this.$screenRowCache,V=this.$getRowCacheIndex(z,d),R=z.length;if(R&&V>=0){M=z[V],S=this.$docRowCache[V];var K=d>z[R-1]}else K=!R;for(var T=this.getLength()-1,x=this.getNextFoldLine(S),L=x?x.start.row:1/0;M<=d&&!(M+(O=this.getRowLength(S))>d||S>=T);)M+=O,++S>L&&(L=(x=this.getNextFoldLine(S=x.end.row+1,x))?x.start.row:1/0),K&&(this.$docRowCache.push(S),this.$screenRowCache.push(M));if(x&&x.start.row<=S)B=this.getFoldDisplayLine(x),S=x.start.row;else{if(M+O<=d||S>T)return{row:T,column:this.getLine(T).length};B=this.getLine(S),x=null}var P=0,I=Math.floor(d-M);if(this.$useWrapMode){var N=this.$wrapData[S];N&&(k=N[I],I>0&&N.length&&(P=N.indent,B=B.substring(D=N[I-1]||N[N.length-1])))}return void 0!==b&&this.$bidiHandler.isBidiRow(M+I,S,I)&&(v=this.$bidiHandler.offsetToCol(b)),D+=this.$getStringScreenWidth(B,v-P)[1],this.$useWrapMode&&D>=k&&(D=k-1),x?x.idxToPosition(D):{row:S,column:D}},this.documentToScreenPosition=function(d,v){if(void 0===v)var b=this.$clipPositionToDocument(d.row,d.column);else b=this.$clipPositionToDocument(d,v);var D,B=0,S=null;(D=this.getFoldAt(d=b.row,v=b.column,1))&&(d=D.start.row,v=D.start.column);var k,M=0,O=this.$docRowCache,z=this.$getRowCacheIndex(O,d),V=O.length;if(V&&z>=0){M=O[z],B=this.$screenRowCache[z];var R=d>O[V-1]}else R=!V;for(var K=this.getNextFoldLine(M),T=K?K.start.row:1/0;M<d;){if(M>=T){if((k=K.end.row+1)>d)break;T=(K=this.getNextFoldLine(k,K))?K.start.row:1/0}else k=M+1;B+=this.getRowLength(M),M=k,R&&(this.$docRowCache.push(M),this.$screenRowCache.push(B))}var x="";K&&M>=T?(x=this.getFoldDisplayLine(K,d,v),S=K.start.row):(x=this.getLine(d).substring(0,v),S=d);var L=0;if(this.$useWrapMode){var P=this.$wrapData[S];if(P){for(var I=0;x.length>=P[I];)B++,I++;x=x.substring(P[I-1]||0,x.length),L=I>0?P.indent:0}}return{row:B,column:L+this.$getStringScreenWidth(x)[0]}},this.documentToScreenColumn=function(d,v){return this.documentToScreenPosition(d,v).column},this.documentToScreenRow=function(d,v){return this.documentToScreenPosition(d,v).row},this.getScreenLength=function(){var d=0,v=null;if(this.$useWrapMode)for(var S=this.$wrapData.length,D=0,B=0,k=(v=this.$foldData[B++])?v.start.row:1/0;D<S;){var M=this.$wrapData[D];d+=M?M.length+1:1,++D>k&&(D=v.end.row+1,k=(v=this.$foldData[B++])?v.start.row:1/0)}else{d=this.getLength();var b=this.$foldData;for(B=0;B<b.length;B++)d-=(v=b[B]).end.row-v.start.row}return this.lineWidgets&&(d+=this.$getWidgetScreenLength()),d},this.$setFontMetrics=function(d){!this.$enableVarChar||(this.$getStringScreenWidth=function(v,b,B){if(0===b)return[0,0];var S,D;for(b||(b=1/0),B=B||0,D=0;D<v.length&&!((B+="\t"===(S=v.charAt(D))?this.getScreenTabSize(B):d.getCharacterWidth(S))>b);D++);return[B,D]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=E}.call(h.prototype),w("./edit_session/folding").Folding.call(h.prototype),w("./edit_session/bracket_match").BracketMatch.call(h.prototype),l.defineOptions(h.prototype,"session",{wrap:{set:function(c){if(c&&"off"!=c?"free"==c?c=!0:"printMargin"==c?c=-1:"string"==typeof c&&(c=parseInt(c,10)||!1):c=!1,this.$wrap!=c)if(this.$wrap=c,c){var F="number"==typeof c?c:null;this.setWrapLimitRange(F,F),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(c){(c="auto"==c?"text"!=this.$mode.type:"text"!=c)!=this.$wrapAsCode&&(this.$wrapAsCode=c,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(c){this.$useWorker=c,this.$stopWorker(),c&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(c){isNaN(c)||this.$tabSize===c||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=c,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},overwrite:{set:function(c){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(c){this.doc.setNewLineMode(c)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(c){this.setMode(c)},get:function(){return this.$modeId}}}),y.EditSession=h}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(w,y,U){"use strict";var $=w("./lib/lang"),A=w("./lib/oop"),m=w("./range").Range,l=function(){this.$options={}};(function(){this.set=function(t){return A.mixin(this.$options,t),this},this.getOptions=function(){return $.copyObject(this.$options)},this.setOptions=function(t){this.$options=t},this.find=function(t){var e=this.$options,r=this.$matchIterator(t,e);if(!r)return!1;var i=null;return r.forEach(function(o,n,h,c){return i=new m(o,n,h,c),!(n==c&&e.start&&e.start.start&&0!=e.skipCurrent&&i.isEqual(e.start)&&(i=null,1))}),i},this.findAll=function(t){var e=this.$options;if(!e.needle)return[];this.$assembleRegExp(e);var r=e.range,i=r?t.getLines(r.start.row,r.end.row):t.doc.getAllLines(),o=[],n=e.re;if(e.$isMultiLine){var F,h=n.length,c=i.length-h;e:for(var C=n.offset||0;C<=c;C++){for(var u=0;u<h;u++)if(-1==i[C+u].search(n[u]))continue e;var g=i[C],a=i[C+h-1],f=g.length-g.match(n[0])[0].length,p=a.match(n[h-1])[0].length;F&&F.end.row===C&&F.end.column>f||(o.push(F=new m(C,f,C+h-1,p)),h>2&&(C=C+h-2))}}else for(var E=0;E<i.length;E++){var d=$.getMatchOffsets(i[E],n);for(u=0;u<d.length;u++){var v=d[u];o.push(new m(E,v.offset,E,v.offset+v.length))}}if(r){var b=r.start.column,B=r.start.column;for(E=0,u=o.length-1;E<u&&o[E].start.column<b&&o[E].start.row==r.start.row;)E++;for(;E<u&&o[u].end.column>B&&o[u].end.row==r.end.row;)u--;for(o=o.slice(E,u+1),E=0,u=o.length;E<u;E++)o[E].start.row+=r.start.row,o[E].end.row+=r.start.row}return o},this.replace=function(t,e){var r=this.$options,i=this.$assembleRegExp(r);if(r.$isMultiLine)return e;if(i){var o=i.exec(t);if(!o||o[0].length!=t.length)return null;if(e=t.replace(i,e),r.preserveCase){e=e.split("");for(var n=Math.min(t.length,t.length);n--;){var h=t[n];e[n]=h&&h.toLowerCase()!=h?e[n].toUpperCase():e[n].toLowerCase()}e=e.join("")}return e}},this.$assembleRegExp=function(t,e){if(t.needle instanceof RegExp)return t.re=t.needle;var r=t.needle;if(!t.needle)return t.re=!1;t.regExp||(r=$.escapeRegExp(r)),t.wholeWord&&(r=function(t,e){function r(i){return/\w/.test(i)||e.regExp?"\\b":""}return r(t[0])+t+r(t[t.length-1])}(r,t));var i=t.caseSensitive?"gm":"gmi";if(t.$isMultiLine=!e&&/[\n\r]/.test(r),t.$isMultiLine)return t.re=this.$assembleMultilineRegExp(r,i);try{var o=new RegExp(r,i)}catch(n){o=!1}return t.re=o},this.$assembleMultilineRegExp=function(t,e){for(var r=t.replace(/\r\n|\r|\n/g,"$\n^").split("\n"),i=[],o=0;o<r.length;o++)try{i.push(new RegExp(r[o],e))}catch(n){return!1}return i},this.$matchIterator=function(t,e){var r=this.$assembleRegExp(e);if(!r)return!1;var i=1==e.backwards,o=0!=e.skipCurrent,n=e.range,h=e.start;h||(h=n?n[i?"end":"start"]:t.selection.getRange()),h.start&&(h=h[o!=i?"end":"start"]);var c=n?n.start.row:0,F=n?n.end.row:t.getLength()-1;if(i)var C=function(a){var f=h.row;if(!g(f,h.column,a)){for(f--;f>=c;f--)if(g(f,Number.MAX_VALUE,a))return;if(0!=e.wrap)for(f=F,c=h.row;f>=c;f--)if(g(f,Number.MAX_VALUE,a))return}};else C=function(f){var p=h.row;if(!g(p,h.column,f)){for(p+=1;p<=F;p++)if(g(p,0,f))return;if(0!=e.wrap)for(p=c,F=h.row;p<=F;p++)if(g(p,0,f))return}};if(e.$isMultiLine)var u=r.length,g=function(a,f,p){var E=i?a-u+1:a;if(!(E<0)){var d=t.getLine(E),v=d.search(r[0]);if(!(!i&&v<f||-1===v)){for(var b=1;b<u;b++)if(-1==(d=t.getLine(E+b)).search(r[b]))return;var B=d.match(r[u-1])[0].length;if(!(i&&B>f)&&p(E,v,E+u-1,B))return!0}}};else g=i?function(f,p,E){var b,d=t.getLine(f),v=[],B=0;for(r.lastIndex=0;b=r.exec(d);){if(B=b.index,!(S=b[0].length)){if(B>=d.length)break;r.lastIndex=B+=1}if(b.index+S>p)break;v.push(b.index,S)}for(var D=v.length-1;D>=0;D-=2){var S,k=v[D-1];if(E(f,k,f,k+(S=v[D])))return!0}}:function(f,p,E){var v,d=t.getLine(f),b=p;for(r.lastIndex=p;v=r.exec(d);){var B=v[0].length;if(E(f,b=v.index,f,b+B))return!0;if(!B&&(r.lastIndex=b+=1,b>=d.length))return!1}};return{forEach:C}}}).call(l.prototype),y.Search=l}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(w,y,U){"use strict";var $=w("../lib/keys"),A=w("../lib/useragent"),m=$.KEY_MODS;function l(t,e){this.platform=e||(A.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(t),this.$singleCommand=!0}function s(t,e){l.call(this,t,e),this.$singleCommand=!1}s.prototype=l.prototype,function(){function t(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,r){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],r||delete this.commands[i];var o=this.commandKeyBinding;for(var n in o){var h=o[n];if(h==e)delete o[n];else if(Array.isArray(h)){var c=h.indexOf(e);-1!=c&&(h.splice(c,1),1==h.length&&(o[n]=h[0]))}}},this.bindKey=function(e,r,i){if("object"==typeof e&&e&&(null==i&&(i=e.position),e=e[this.platform]),e){if("function"==typeof r)return this.addCommand({exec:r,bindKey:e,name:r.name||e});e.split("|").forEach(function(o){var n="";if(-1!=o.indexOf(" ")){var h=o.split(/\s+/);o=h.pop(),h.forEach(function(C){var u=this.parseKeys(C);this._addCommandToBinding(n+=(n?" ":"")+(m[u.hashId]+u.key),"chainKeys")},this),n+=" "}var c=this.parseKeys(o);this._addCommandToBinding(n+(m[c.hashId]+c.key),r,i)},this)}},this._addCommandToBinding=function(e,r,i){var n,o=this.commandKeyBinding;if(r)if(!o[e]||this.$singleCommand)o[e]=r;else{Array.isArray(o[e])?-1!=(n=o[e].indexOf(r))&&o[e].splice(n,1):o[e]=[o[e]],"number"!=typeof i&&(i=t(r));var h=o[e];for(n=0;n<h.length&&!(t(h[n])>i);n++);h.splice(n,0,r)}else delete o[e]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(r){var i=e[r];if(i){if("string"==typeof i)return this.bindKey(i,r);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=r),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(r){this.removeCommand(e[r])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(r){this.bindKey(r,e[r])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var r=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(F){return F}),i=r.pop(),o=$[i];if($.FUNCTION_KEYS[o])i=$.FUNCTION_KEYS[o].toLowerCase();else{if(!r.length)return{key:i,hashId:-1};if(1==r.length&&"shift"==r[0])return{key:i.toUpperCase(),hashId:-1}}for(var n=0,h=r.length;h--;){var c=$.KEY_MODS[r[h]];if(null==c)return"undefined"!=typeof console&&console.error("invalid modifier "+r[h]+" in "+e),!1;n|=c}return{key:i,hashId:n}},this.findKeyCommand=function(r,i){return this.commandKeyBinding[m[r]+i]},this.handleKeyboard=function(e,r,i,o){if(!(o<0)){var n=m[r]+i,h=this.commandKeyBinding[n];return e.$keyChain&&(e.$keyChain+=" "+n,h=this.commandKeyBinding[e.$keyChain]||h),!h||"chainKeys"!=h&&"chainKeys"!=h[h.length-1]?(e.$keyChain&&(r&&4!=r||1!=i.length?(-1==r||o>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-n.length-1)),{command:h}):(e.$keyChain=e.$keyChain||n,{command:"null"})}},this.getStatusText=function(e,r){return r.$keyChain||""}}.call(l.prototype),y.HashHandler=l,y.MultiHashHandler=s}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(w,y,U){"use strict";var $=w("../lib/oop"),A=w("../keyboard/hash_handler").MultiHashHandler,m=w("../lib/event_emitter").EventEmitter,l=function(s,t){A.call(this,t,s),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};$.inherits(l,A),function(){$.implement(this,m),this.exec=function(s,t,e){if(Array.isArray(s)){for(var r=s.length;r--;)if(this.exec(s[r],t,e))return!0;return!1}if("string"==typeof s&&(s=this.commands[s]),!s||t&&t.$readOnly&&!s.readOnly||s.isAvailable&&!s.isAvailable(t))return!1;var i={editor:t,command:s,args:e};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),!1!==i.returnValue},this.toggleRecording=function(s){if(!this.$inReplay)return s&&s._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(t){this.macro.push([t.command,t.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(s){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(s);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,s):this.exec(t[0],s,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(s){return s.map(function(t){return"string"!=typeof t[0]&&(t[0]=t[0].name),t[1]||(t=t[0]),t})}}.call(l.prototype),y.CommandManager=l}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(w,y,U){"use strict";var $=w("../lib/lang"),A=w("../config"),m=w("../range").Range;function l(s,t){return{win:s,mac:t}}y.commands=[{name:"showSettingsMenu",bindKey:l("Ctrl-,","Command-,"),exec:function(s){A.loadModule("ace/ext/settings_menu",function(t){t.init(s),s.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:l("Alt-E","F4"),exec:function(s){A.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(s,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:l("Alt-Shift-E","Shift-F4"),exec:function(s){A.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(s,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:l("Ctrl-A","Command-A"),exec:function(s){s.selectAll()},readOnly:!0},{name:"centerselection",bindKey:l(null,"Ctrl-L"),exec:function(s){s.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:l("Ctrl-L","Command-L"),exec:function(s){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||s.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:l("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(s){s.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:l("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(s){s.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:l("F2","F2"),exec:function(s){s.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:l("Alt-F2","Alt-F2"),exec:function(s){s.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:l(null,"Ctrl-Command-Option-0"),exec:function(s){s.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:l("Alt-0","Command-Option-0"),exec:function(s){s.session.foldAll(),s.session.unfold(s.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:l("Alt-Shift-0","Command-Option-Shift-0"),exec:function(s){s.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:l("Ctrl-K","Command-G"),exec:function(s){s.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:l("Ctrl-Shift-K","Command-Shift-G"),exec:function(s){s.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:l("Alt-K","Ctrl-G"),exec:function(s){s.selection.isEmpty()?s.selection.selectWord():s.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:l("Alt-Shift-K","Ctrl-Shift-G"),exec:function(s){s.selection.isEmpty()?s.selection.selectWord():s.findPrevious()},readOnly:!0},{name:"find",bindKey:l("Ctrl-F","Command-F"),exec:function(s){A.loadModule("ace/ext/searchbox",function(t){t.Search(s)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(s){s.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:l("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(s){s.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:l("Ctrl-Home","Command-Home|Command-Up"),exec:function(s){s.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:l("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(s){s.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:l("Up","Up|Ctrl-P"),exec:function(s,t){s.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:l("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(s){s.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:l("Ctrl-End","Command-End|Command-Down"),exec:function(s){s.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:l("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(s){s.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:l("Down","Down|Ctrl-N"),exec:function(s,t){s.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:l("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(s){s.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:l("Ctrl-Left","Option-Left"),exec:function(s){s.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:l("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(s){s.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:l("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(s){s.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:l("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(s){s.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:l("Left","Left|Ctrl-B"),exec:function(s,t){s.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:l("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(s){s.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:l("Ctrl-Right","Option-Right"),exec:function(s){s.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:l("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(s){s.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:l("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(s){s.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:l("Shift-Right","Shift-Right"),exec:function(s){s.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:l("Right","Right|Ctrl-F"),exec:function(s,t){s.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(s){s.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:l(null,"Option-PageDown"),exec:function(s){s.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:l("PageDown","PageDown|Ctrl-V"),exec:function(s){s.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(s){s.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:l(null,"Option-PageUp"),exec:function(s){s.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(s){s.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:l("Ctrl-Up",null),exec:function(s){s.renderer.scrollBy(0,-2*s.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:l("Ctrl-Down",null),exec:function(s){s.renderer.scrollBy(0,2*s.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(s){s.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(s){s.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:l("Ctrl-Alt-E","Command-Option-E"),exec:function(s){s.commands.toggleRecording(s)},readOnly:!0},{name:"replaymacro",bindKey:l("Ctrl-Shift-E","Command-Shift-E"),exec:function(s){s.commands.replay(s)},readOnly:!0},{name:"jumptomatching",bindKey:l("Ctrl-P","Ctrl-P"),exec:function(s){s.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:l("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(s){s.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:l("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(s){s.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:l(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(s){},readOnly:!0},{name:"cut",exec:function(s){var t=s.getSelectionRange();s._emit("cut",t),s.selection.isEmpty()||(s.session.remove(t),s.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(s,t){s.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:l("Ctrl-D","Command-D"),exec:function(s){s.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:l("Ctrl-Shift-D","Command-Shift-D"),exec:function(s){s.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:l("Ctrl-Alt-S","Command-Alt-S"),exec:function(s){s.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:l("Ctrl-/","Command-/"),exec:function(s){s.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:l("Ctrl-Shift-/","Command-Shift-/"),exec:function(s){s.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:l("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(s){s.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:l("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(s){s.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:l("Ctrl-H","Command-Option-F"),exec:function(s){A.loadModule("ace/ext/searchbox",function(t){t.Search(s,!0)})}},{name:"undo",bindKey:l("Ctrl-Z","Command-Z"),exec:function(s){s.undo()}},{name:"redo",bindKey:l("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(s){s.redo()}},{name:"copylinesup",bindKey:l("Alt-Shift-Up","Command-Option-Up"),exec:function(s){s.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:l("Alt-Up","Option-Up"),exec:function(s){s.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:l("Alt-Shift-Down","Command-Option-Down"),exec:function(s){s.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:l("Alt-Down","Option-Down"),exec:function(s){s.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:l("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(s){s.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:l("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(s){s.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:l("Shift-Delete",null),exec:function(s){if(!s.selection.isEmpty())return!1;s.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:l("Alt-Backspace","Command-Backspace"),exec:function(s){s.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:l("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(s){s.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:l("Ctrl-Shift-Backspace",null),exec:function(s){var t=s.selection.getRange();t.start.column=0,s.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:l("Ctrl-Shift-Delete",null),exec:function(s){var t=s.selection.getRange();t.end.column=Number.MAX_VALUE,s.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:l("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(s){s.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:l("Ctrl-Delete","Alt-Delete"),exec:function(s){s.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:l("Shift-Tab","Shift-Tab"),exec:function(s){s.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:l("Tab","Tab"),exec:function(s){s.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:l("Ctrl-[","Ctrl-["),exec:function(s){s.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:l("Ctrl-]","Ctrl-]"),exec:function(s){s.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(s,t){s.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(s,t){s.insert($.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:l(null,"Ctrl-O"),exec:function(s){s.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:l("Alt-Shift-X","Ctrl-T"),exec:function(s){s.transposeLetters()},multiSelectAction:function(s){s.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:l("Ctrl-U","Ctrl-U"),exec:function(s){s.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:l("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(s){s.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:l("Ctrl-Shift-L","Command-Shift-L"),exec:function(s){var t=s.selection.getRange();t.start.column=t.end.column=0,t.end.row++,s.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:l(null,null),exec:function(s){for(var t=s.selection.isBackwards(),e=t?s.selection.getSelectionLead():s.selection.getSelectionAnchor(),r=t?s.selection.getSelectionAnchor():s.selection.getSelectionLead(),i=s.session.doc.getLine(e.row).length,n=s.session.doc.getTextRange(s.selection.getRange()).replace(/\n\s*/," ").length,h=s.session.doc.getLine(e.row),c=e.row+1;c<=r.row+1;c++){var F=$.stringTrimLeft($.stringTrimRight(s.session.doc.getLine(c)));0!==F.length&&(F=" "+F),h+=F}r.row+1<s.session.doc.getLength()-1&&(h+=s.session.doc.getNewLineCharacter()),s.clearSelection(),s.session.doc.replace(new m(e.row,0,r.row+2,0),h),n>0?(s.selection.moveCursorTo(e.row,e.column),s.selection.selectTo(e.row,e.column+n)):(i=s.session.doc.getLine(e.row).length>i?i+1:i,s.selection.moveCursorTo(e.row,i))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:l(null,null),exec:function(s){var t=s.session.doc.getLength()-1,e=s.session.doc.getLine(t).length,r=s.selection.rangeList.ranges,i=[];r.length<1&&(r=[s.selection.getRange()]);for(var o=0;o<r.length;o++)o==r.length-1&&(r[o].end.row===t&&r[o].end.column===e||i.push(new m(r[o].end.row,r[o].end.column,t,e))),0===o?0===r[o].start.row&&0===r[o].start.column||i.push(new m(0,0,r[o].start.row,r[o].start.column)):i.push(new m(r[o-1].end.row,r[o-1].end.column,r[o].start.row,r[o].start.column));for(s.exitMultiSelectMode(),s.clearSelection(),o=0;o<i.length;o++)s.selection.addRange(i[o],!1)},readOnly:!0,scrollIntoView:"none"}]}),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"],function(w,y,U){"use strict";w("./lib/fixoldbrowsers");var $=w("./lib/oop"),A=w("./lib/dom"),m=w("./lib/lang"),l=w("./lib/useragent"),s=w("./keyboard/textinput").TextInput,t=w("./mouse/mouse_handler").MouseHandler,e=w("./mouse/fold_handler").FoldHandler,r=w("./keyboard/keybinding").KeyBinding,i=w("./edit_session").EditSession,o=w("./search").Search,n=w("./range").Range,h=w("./lib/event_emitter").EventEmitter,c=w("./commands/command_manager").CommandManager,F=w("./commands/default_commands").commands,C=w("./config"),u=w("./token_iterator").TokenIterator,g=function(a,f){var p=a.getContainerElement();this.container=p,this.renderer=a,this.id="editor"+ ++g.$uid,this.commands=new c(l.isMac?"mac":"win",F),"object"==typeof document&&(this.textInput=new s(a.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new t(this),new e(this)),this.keyBinding=new r(this),this.$blockScrolling=0,this.$search=(new o).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=m.delayedCall(function(){this._signal("input",{}),this.session&&this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(E,d){d._$emitInputEvent.schedule(31)}),this.setSession(f||new i("")),C.resetOptions(this),C._signal("editor",this)};g.$uid=0,function(){$.implement(this,h),this.$initOperationListeners=function(){this.selections=[],this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=m.delayedCall(this.endOperation.bind(this)),this.on("change",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(a){if(this.curOp){if(!a||this.curOp.command)return;this.prevOp=this.curOp}a||(this.previousCommand=null,a={}),this.$opResetTimer.schedule(),this.curOp={command:a.command||{},args:a.args,scrollTop:this.renderer.scrollTop},this.curOp.command.name&&void 0!==this.curOp.command.scrollIntoView&&this.$blockScrolling++},this.endOperation=function(a){if(this.curOp){if(a&&!1===a.returnValue)return this.curOp=null;this._signal("beforeEndOperation");var f=this.curOp.command;f.name&&this.$blockScrolling>0&&this.$blockScrolling--;var p=f&&f.scrollIntoView;if(p){switch(p){case"center-animate":p="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var E=this.selection.getRange(),d=this.renderer.layerConfig;(E.start.row>=d.lastRow||E.end.row<=d.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==p&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(a){if(this.$mergeUndoDeltas){var f=this.prevOp,p=this.$mergeableCommands,E=f.command&&a.command.name==f.command.name;if("insertstring"==a.command.name){var d=a.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),E=E&&this.mergeNextCommand&&(!/\s/.test(d)||/\s/.test(f.args)),this.mergeNextCommand=!0}else E=E&&-1!==p.indexOf(a.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(E=!1),E?this.session.mergeUndoDeltas=!0:-1!==p.indexOf(a.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(a,f){if(a&&"string"==typeof a){this.$keybindingId=a;var p=this;C.loadModule(["keybinding",a],function(E){p.$keybindingId==a&&p.keyBinding.setKeyboardHandler(E&&E.handler),f&&f()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(a),f&&f()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(a){if(this.session!=a){this.curOp&&this.endOperation(),this.curOp={};var f=this.session;if(f){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 p=this.session.getSelection();p.off("changeCursor",this.$onCursorChange),p.off("changeSelection",this.$onSelectionChange)}this.session=a,a?(this.$onDocumentChange=this.onDocumentChange.bind(this),a.on("change",this.$onDocumentChange),this.renderer.setSession(a),this.$onChangeMode=this.onChangeMode.bind(this),a.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),a.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),a.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),a.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),a.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),a.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=a.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,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(a)),this._signal("changeSession",{session:a,oldSession:f}),this.curOp=null,f&&f._signal("changeEditor",{oldEditor:this}),a&&a._signal("changeEditor",{editor:this}),a&&a.bgTokenizer&&a.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(a,f){return this.session.doc.setValue(a),f?1==f?this.navigateFileEnd():-1==f&&this.navigateFileStart():this.selectAll(),a},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(a){this.renderer.onResize(a)},this.setTheme=function(a,f){this.renderer.setTheme(a,f)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(a){this.renderer.setStyle(a)},this.unsetStyle=function(a){this.renderer.unsetStyle(a)},this.getFontSize=function(){return this.getOption("fontSize")||A.computedStyle(this.container,"fontSize")},this.setFontSize=function(a){this.setOption("fontSize",a)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var a=this;this.$highlightPending=!0,setTimeout(function(){a.$highlightPending=!1;var f=a.session;if(f&&f.bgTokenizer){var p=f.findMatchingBracket(a.getCursorPosition());if(p)var E=new n(p.row,p.column,p.row,p.column+1);else f.$mode.getMatching&&(E=f.$mode.getMatching(a.session));E&&(f.$bracketHighlight=f.addMarker(E,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var a=this;this.$highlightTagPending=!0,setTimeout(function(){a.$highlightTagPending=!1;var f=a.session;if(f&&f.bgTokenizer){var p=a.getCursorPosition(),E=new u(a.session,p.row,p.column),d=E.getCurrentToken();if(!d||!/\b(?:tag-open|tag-name)/.test(d.type))return f.removeMarker(f.$tagHighlight),void(f.$tagHighlight=null);if(-1==d.type.indexOf("tag-open")||(d=E.stepForward())){var v=d.value,b=0,B=E.stepBackward();if("<"==B.value)do{B=d,(d=E.stepForward())&&d.value===v&&-1!==d.type.indexOf("tag-name")&&("<"===B.value?b++:"</"===B.value&&b--)}while(d&&b>=0);else{do{d=B,B=E.stepBackward(),d&&d.value===v&&-1!==d.type.indexOf("tag-name")&&("<"===B.value?b++:"</"===B.value&&b--)}while(B&&b<=0);E.stepForward()}if(!d)return f.removeMarker(f.$tagHighlight),void(f.$tagHighlight=null);var S=E.getCurrentTokenRow(),D=E.getCurrentTokenColumn(),k=new n(S,D,S,D+d.value.length),M=f.$backMarkers[f.$tagHighlight];f.$tagHighlight&&null!=M&&0!==k.compareRange(M.range)&&(f.removeMarker(f.$tagHighlight),f.$tagHighlight=null),k&&!f.$tagHighlight&&(f.$tagHighlight=f.addMarker(k,"ace_bracket","text"))}}},50)}},this.focus=function(){var a=this;setTimeout(function(){a.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(a){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",a))},this.onBlur=function(a){!this.$isFocused||(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",a))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(a){this.renderer.updateLines(a.start.row,a.start.row==a.end.row?a.end.row:1/0,this.session.$useWrapMode),this._signal("change",a),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(a){var f=a.data;this.renderer.updateLines(f.first,f.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.$blockScrolling||(C.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var f,a=this.getSession();if(this.$highlightActiveLine&&(("line"!=this.$selectionStyle||!this.selection.isMultiLine())&&(f=this.getCursorPosition()),this.renderer.$maxLines&&1===this.session.getLength()&&!(this.renderer.$minLines>1)&&(f=!1)),a.$highlightLineMarker&&!f)a.removeMarker(a.$highlightLineMarker.id),a.$highlightLineMarker=null;else if(!a.$highlightLineMarker&&f){var p=new n(f.row,f.column,f.row,1/0);p.id=a.addMarker(p,"ace_active-line","screenLine"),a.$highlightLineMarker=p}else f&&(a.$highlightLineMarker.start.row=f.row,a.$highlightLineMarker.end.row=f.row,a.$highlightLineMarker.start.column=f.column,a._signal("changeBackMarker"))},this.onSelectionChange=function(a){var f=this.session;if(f.$selectionMarker&&f.removeMarker(f.$selectionMarker),f.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var p=this.selection.getRange(),E=this.getSelectionStyle();f.$selectionMarker=f.addMarker(p,"ace_selection",E)}var d=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(d),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var a=this.session,f=this.getSelectionRange();if(!f.isEmpty()&&!f.isMultiLine()){var p=f.start.column-1,E=f.end.column+1,d=a.getLine(f.start.row),v=d.length,b=d.substring(Math.max(p,0),Math.min(E,v));if(!(p>=0&&/^[\w\d]/.test(b)||E<=v&&/[\w\d]$/.test(b))&&(b=d.substring(f.start.column,f.end.column),/^[\w\d]+$/.test(b)))return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:b})}},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(a){this.renderer.updateText(),this._emit("changeMode",a)},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 a=this.getSelectedText();return this._signal("copy",a),a},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(a,f){this.commands.exec("paste",this,{text:a,event:f})},this.$handlePaste=function(a){"string"==typeof a&&(a={text:a}),this._signal("paste",a);var f=a.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(f);else{var p=f.split(/\r\n|\r|\n/),E=this.selection.rangeList.ranges;if(p.length>E.length||p.length<2||!p[1])return this.commands.exec("insertstring",this,f);for(var d=E.length;d--;){var v=E[d];v.isEmpty()||this.session.remove(v),this.session.insert(v.start,p[d])}}},this.execCommand=function(a,f){return this.commands.exec(a,this,f)},this.insert=function(a,f){var p=this.session,E=p.getMode(),d=this.getCursorPosition();if(this.getBehavioursEnabled()&&!f){var v=E.transformAction(p.getState(d.row),"insertion",this,p,a);v&&(a!==v.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),a=v.text)}if("\t"==a&&(a=this.session.getTabString()),this.selection.isEmpty())this.session.getOverwrite()&&-1==a.indexOf("\n")&&((b=new n.fromPoints(d,d)).end.column+=a.length,this.session.remove(b));else{var b=this.getSelectionRange();d=this.session.remove(b),this.clearSelection()}if("\n"==a||"\r\n"==a){var k=p.getLine(d.row);if(d.column>k.search(/\S|$/)){var B=k.substr(d.column).search(/\S|$/);p.doc.removeInLine(d.row,d.column,d.column+B)}}this.clearSelection();var S=d.column,D=p.getState(d.row),M=(k=p.getLine(d.row),E.checkOutdent(D,k,a));if(p.insert(d,a),v&&v.selection&&this.selection.setSelectionRange(2==v.selection.length?new n(d.row,S+v.selection[0],d.row,S+v.selection[1]):new n(d.row+v.selection[0],v.selection[1],d.row+v.selection[2],v.selection[3])),p.getDocument().isNewLine(a)){var z=E.getNextLineIndent(D,k.slice(0,d.column),p.getTabString());p.insert({row:d.row+1,column:0},z)}M&&E.autoOutdent(D,p,d.row)},this.onTextInput=function(a){this.keyBinding.onTextInput(a)},this.onCommandKey=function(a,f,p){this.keyBinding.onCommandKey(a,f,p)},this.setOverwrite=function(a){this.session.setOverwrite(a)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(a){this.setOption("scrollSpeed",a)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(a){this.setOption("dragDelay",a)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(a){this.setOption("selectionStyle",a)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(a){this.setOption("highlightActiveLine",a)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(a){this.setOption("highlightGutterLine",a)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(a){this.setOption("highlightSelectedWord",a)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(a){this.renderer.setAnimatedScroll(a)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(a){this.renderer.setShowInvisibles(a)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(a){this.renderer.setDisplayIndentGuides(a)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(a){this.renderer.setShowPrintMargin(a)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(a){this.renderer.setPrintMarginColumn(a)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(a){this.setOption("readOnly",a)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(a){this.setOption("behavioursEnabled",a)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(a){this.setOption("wrapBehavioursEnabled",a)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(a){this.setOption("showFoldWidgets",a)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(a){this.setOption("fadeFoldWidgets",a)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(a){this.selection.isEmpty()&&("left"==a?this.selection.selectLeft():this.selection.selectRight());var f=this.getSelectionRange();if(this.getBehavioursEnabled()){var p=this.session,E=p.getState(f.start.row),d=p.getMode().transformAction(E,"deletion",this,p,f);if(0===f.end.column){var v=p.getTextRange(f);if("\n"==v[v.length-1]){var b=p.getLine(f.end.row);/^\s+$/.test(b)&&(f.end.column=b.length)}}d&&(f=d)}this.session.remove(f),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.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var a=this.getSelectionRange();a.start.column==a.end.column&&a.start.row==a.end.row&&(a.end.column=0,a.end.row++),this.session.remove(a),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var a=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(a)},this.transposeLetters=function(){if(this.selection.isEmpty()){var a=this.getCursorPosition(),f=a.column;if(0!==f){var E,d,p=this.session.getLine(a.row);f<p.length?(E=p.charAt(f)+p.charAt(f-1),d=new n(a.row,f-1,a.row,f+1)):(E=p.charAt(f-1)+p.charAt(f-2),d=new n(a.row,f-2,a.row,f)),this.session.replace(d,E),this.session.selection.moveToPosition(d.end)}}},this.toLowerCase=function(){var a=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var f=this.getSelectionRange(),p=this.session.getTextRange(f);this.session.replace(f,p.toLowerCase()),this.selection.setSelectionRange(a)},this.toUpperCase=function(){var a=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var f=this.getSelectionRange(),p=this.session.getTextRange(f);this.session.replace(f,p.toUpperCase()),this.selection.setSelectionRange(a)},this.indent=function(){var a=this.session,f=this.getSelectionRange();if(!(f.start.row<f.end.row)){if(f.start.column<f.end.column){var E=a.getTextRange(f);if(!/^\s+$/.test(E))return p=this.$getSelectedRows(),void a.indentRows(p.first,p.last,"\t")}var d=a.getLine(f.start.row),v=f.start,b=a.getTabSize(),B=a.documentToScreenColumn(v.row,v.column);if(this.session.getUseSoftTabs())var D=m.stringRepeat(" ",S=b-B%b);else{for(var S=B%b;" "==d[f.start.column-1]&&S;)f.start.column--,S--;this.selection.setSelectionRange(f),D="\t"}return this.insert(D)}var p=this.$getSelectedRows();a.indentRows(p.first,p.last,"\t")},this.blockIndent=function(){var a=this.$getSelectedRows();this.session.indentRows(a.first,a.last,"\t")},this.blockOutdent=function(){var a=this.session.getSelection();this.session.outdentRows(a.getRange())},this.sortLines=function(){for(var a=this.$getSelectedRows(),f=this.session,p=[],E=a.first;E<=a.last;E++)p.push(f.getLine(E));p.sort(function(b,B){return b.toLowerCase()<B.toLowerCase()?-1:b.toLowerCase()>B.toLowerCase()?1:0});var d=new n(0,0,0,0);for(E=a.first;E<=a.last;E++){var v=f.getLine(E);d.start.row=E,d.end.row=E,d.end.column=v.length,f.replace(d,p[E-a.first])}},this.toggleCommentLines=function(){var a=this.session.getState(this.getCursorPosition().row),f=this.$getSelectedRows();this.session.getMode().toggleCommentLines(a,this.session,f.first,f.last)},this.toggleBlockComment=function(){var a=this.getCursorPosition(),f=this.session.getState(a.row),p=this.getSelectionRange();this.session.getMode().toggleBlockComment(f,this.session,p,a)},this.getNumberAt=function(a,f){var p=/[\-]?[0-9]+(?:\.[0-9]+)?/g;p.lastIndex=0;for(var E=this.session.getLine(a);p.lastIndex<f;){var d=p.exec(E);if(d.index<=f&&d.index+d[0].length>=f)return{value:d[0],start:d.index,end:d.index+d[0].length}}return null},this.modifyNumber=function(a){var f=this.selection.getCursor().row,p=this.selection.getCursor().column,E=new n(f,p-1,f,p),d=this.session.getTextRange(E);if(!isNaN(parseFloat(d))&&isFinite(d)){var v=this.getNumberAt(f,p);if(v){var b=v.value.indexOf(".")>=0?v.start+v.value.indexOf(".")+1:v.end,B=v.start+v.value.length-b,S=parseFloat(v.value);S*=Math.pow(10,B),S+=a*=b!==v.end&&p<b?Math.pow(10,v.end-p-1):Math.pow(10,v.end-p);var D=(S/=Math.pow(10,B)).toFixed(B),k=new n(f,v.start,f,v.end);this.session.replace(k,D),this.moveCursorTo(f,Math.max(v.start+1,p+D.length-v.value.length))}}},this.removeLines=function(){var a=this.$getSelectedRows();this.session.removeFullLines(a.first,a.last),this.clearSelection()},this.duplicateSelection=function(){var a=this.selection,f=this.session,p=a.getRange(),E=a.isBackwards();if(p.isEmpty()){var d=p.start.row;f.duplicateLines(d,d)}else{var v=E?p.start:p.end,b=f.insert(v,f.getTextRange(p),!1);p.start=v,p.end=b,a.setSelectionRange(p,E)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(a,f,p){return this.session.moveText(a,f,p)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(a,f){var p,E,d=this.selection;if(!d.inMultiSelectMode||this.inVirtualSelectionMode){var v=d.toOrientedRange();p=this.$getSelectedRows(v),E=this.session.$moveLines(p.first,p.last,f?0:a),f&&-1==a&&(E=0),v.moveBy(E,0),d.fromOrientedRange(v)}else{var b=d.rangeList.ranges;d.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var B=0,S=0,D=b.length,k=0;k<D;k++){var M=k;b[k].moveBy(B,0);for(var O=(p=this.$getSelectedRows(b[k])).first,z=p.last;++k<D;){S&&b[k].moveBy(S,0);var V=this.$getSelectedRows(b[k]);if(f&&V.first!=z)break;if(!f&&V.first>z+1)break;z=V.last}for(k--,B=this.session.$moveLines(O,z,f?0:a),f&&-1==a&&(M=k+1);M<=k;)b[M].moveBy(B,0),M++;f||(B=0),S+=B}d.fromOrientedRange(d.ranges[0]),d.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(a){return a=(a||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(a.start.row),last:this.session.getRowFoldEnd(a.end.row)}},this.onCompositionStart=function(a){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(a){this.renderer.setCompositionText(a)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(a){return a>=this.getFirstVisibleRow()&&a<=this.getLastVisibleRow()},this.isRowFullyVisible=function(a){return a>=this.renderer.getFirstFullyVisibleRow()&&a<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(a,f){var p=this.renderer,E=this.renderer.layerConfig,d=a*Math.floor(E.height/E.lineHeight);this.$blockScrolling++,!0===f?this.selection.$moveSelection(function(){this.moveCursorBy(d,0)}):!1===f&&(this.selection.moveCursorBy(d,0),this.selection.clearSelection()),this.$blockScrolling--;var v=p.scrollTop;p.scrollBy(0,d*E.lineHeight),null!=f&&p.scrollCursorIntoView(null,.5),p.animateScrolling(v)},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(a){this.renderer.scrollToRow(a)},this.scrollToLine=function(a,f,p,E){this.renderer.scrollToLine(a,f,p,E)},this.centerSelection=function(){var a=this.getSelectionRange(),f={row:Math.floor(a.start.row+(a.end.row-a.start.row)/2),column:Math.floor(a.start.column+(a.end.column-a.start.column)/2)};this.renderer.alignCursor(f,.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.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(a,f){this.selection.moveCursorTo(a,f)},this.moveCursorToPosition=function(a){this.selection.moveCursorToPosition(a)},this.jumpToMatching=function(a,f){var p=this.getCursorPosition(),E=new u(this.session,p.row,p.column),d=E.getCurrentToken(),v=d||E.stepForward();if(v){var b,k,B=!1,S={},D=p.column-v.start,M={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(v.value.match(/[{}()\[\]]/g)){for(;D<v.value.length&&!B;D++)if(M[v.value[D]])switch(k=M[v.value[D]]+"."+v.type.replace("rparen","lparen"),isNaN(S[k])&&(S[k]=0),v.value[D]){case"(":case"[":case"{":S[k]++;break;case")":case"]":case"}":S[k]--,-1===S[k]&&(b="bracket",B=!0)}}else v&&-1!==v.type.indexOf("tag-name")&&(isNaN(S[v.value])&&(S[v.value]=0),"<"===d.value?S[v.value]++:"</"===d.value&&S[v.value]--,-1===S[v.value]&&(b="tag",B=!0));B||(d=v,v=E.stepForward(),D=0)}while(v&&!B);if(b){var O,z;if("bracket"===b)(O=this.session.getBracketRange(p))||(z=(O=new n(E.getCurrentTokenRow(),E.getCurrentTokenColumn()+D-1,E.getCurrentTokenRow(),E.getCurrentTokenColumn()+D-1)).start,(f||z.row===p.row&&Math.abs(z.column-p.column)<2)&&(O=this.session.getBracketRange(z)));else if("tag"===b){if(!v||-1===v.type.indexOf("tag-name"))return;var V=v.value;if(0===(O=new n(E.getCurrentTokenRow(),E.getCurrentTokenColumn()-2,E.getCurrentTokenRow(),E.getCurrentTokenColumn()-2)).compare(p.row,p.column)){B=!1;do{v=d,(d=E.stepBackward())&&(-1!==d.type.indexOf("tag-close")&&O.setEnd(E.getCurrentTokenRow(),E.getCurrentTokenColumn()+1),v.value===V&&-1!==v.type.indexOf("tag-name")&&("<"===d.value?S[V]++:"</"===d.value&&S[V]--,0===S[V]&&(B=!0)))}while(d&&!B)}v&&v.type.indexOf("tag-name")&&(z=O.start).row==p.row&&Math.abs(z.column-p.column)<2&&(z=O.end)}(z=O&&O.cursor||z)&&(a?O&&f?this.selection.setRange(O):O&&O.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(z.row,z.column):this.selection.moveTo(z.row,z.column))}}},this.gotoLine=function(a,f,p){this.selection.clearSelection(),this.session.unfold({row:a-1,column:f||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(a-1,f||0),this.$blockScrolling-=1,this.isRowFullyVisible(a-1)||this.scrollToLine(a-1,!0,p)},this.navigateTo=function(a,f){this.selection.moveTo(a,f)},this.navigateUp=function(a){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var f=this.selection.anchor.getPosition();return this.moveCursorToPosition(f)}this.selection.clearSelection(),this.selection.moveCursorBy(-a||-1,0)},this.navigateDown=function(a){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var f=this.selection.anchor.getPosition();return this.moveCursorToPosition(f)}this.selection.clearSelection(),this.selection.moveCursorBy(a||1,0)},this.navigateLeft=function(a){if(this.selection.isEmpty())for(a=a||1;a--;)this.selection.moveCursorLeft();else{var f=this.getSelectionRange().start;this.moveCursorToPosition(f)}this.clearSelection()},this.navigateRight=function(a){if(this.selection.isEmpty())for(a=a||1;a--;)this.selection.moveCursorRight();else{var f=this.getSelectionRange().end;this.moveCursorToPosition(f)}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(a,f){f&&this.$search.set(f);var p=this.$search.find(this.session),E=0;return p&&(this.$tryReplace(p,a)&&(E=1),null!==p&&(this.selection.setSelectionRange(p),this.renderer.scrollSelectionIntoView(p.start,p.end))),E},this.replaceAll=function(a,f){f&&this.$search.set(f);var p=this.$search.findAll(this.session),E=0;if(!p.length)return E;this.$blockScrolling+=1;var d=this.getSelectionRange();this.selection.moveTo(0,0);for(var v=p.length-1;v>=0;--v)this.$tryReplace(p[v],a)&&E++;return this.selection.setSelectionRange(d),this.$blockScrolling-=1,E},this.$tryReplace=function(a,f){var p=this.session.getTextRange(a);return null!==(f=this.$search.replace(p,f))?(a.end=this.session.replace(a,f),a):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(a,f,p){f||(f={}),"string"==typeof a||a instanceof RegExp?f.needle=a:"object"==typeof a&&$.mixin(f,a);var E=this.selection.getRange();null==f.needle&&((a=this.session.getTextRange(E)||this.$search.$options.needle)||(E=this.session.getWordRange(E.start.row,E.start.column),a=this.session.getTextRange(E)),this.$search.set({needle:a})),this.$search.set(f),f.start||this.$search.set({start:E});var d=this.$search.find(this.session);return f.preventScroll?d:d?(this.revealRange(d,p),d):(f.backwards?E.start=E.end:E.end=E.start,void this.selection.setRange(E))},this.findNext=function(a,f){this.find({skipCurrent:!0,backwards:!1},a,f)},this.findPrevious=function(a,f){this.find(a,{skipCurrent:!0,backwards:!0},f)},this.revealRange=function(a,f){this.$blockScrolling+=1,this.session.unfold(a),this.selection.setSelectionRange(a),this.$blockScrolling-=1;var p=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(a.start,a.end,.5),!1!==f&&this.renderer.animateScrolling(p)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(a){if(a){var f,p=this,E=!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 v=this.on("changeSelection",function(){E=!0}),b=this.renderer.on("beforeRender",function(){E&&(f=p.renderer.container.getBoundingClientRect())}),B=this.renderer.on("afterRender",function(){if(E&&f&&(p.isFocused()||p.searchBox&&p.searchBox.isFocused())){var S=p.renderer,D=S.$cursorLayer.$pixelPos,k=S.layerConfig,M=D.top-k.offset;null!=(E=D.top>=0&&M+f.top<0||!(D.top<k.height&&D.top+f.top+k.lineHeight>window.innerHeight)&&null)&&(d.style.top=M+"px",d.style.left=D.left+"px",d.style.height=k.lineHeight+"px",d.scrollIntoView(E)),E=f=null}});this.setAutoScrollEditorIntoView=function(S){S||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",v),this.renderer.off("afterRender",B),this.renderer.off("beforeRender",b))}}},this.$resetCursorStyle=function(){var a=this.$cursorStyle||"ace",f=this.renderer.$cursorLayer;!f||(f.setSmoothBlinking(/smooth/.test(a)),f.isBlinking=!this.$readOnly&&"wide"!=a,A.setCssClass(f.element,"ace_slim-cursors",/slim/.test(a)))}}.call(g.prototype),C.defineOptions(g.prototype,"editor",{selectionStyle:{set:function(a){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:a})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(a){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(a){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(a){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(a){this.setAutoScrollEditorIntoView(a)}},keyboardHandler:{set:function(a){this.setKeyboardHandler(a)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),y.Editor=g}),ace.define("ace/undomanager",["require","exports","module"],function(w,y,U){"use strict";var $=function(){this.reset()};(function(){function A(s){return{action:s.action,start:s.start,end:s.end,lines:1==s.lines.length?null:s.lines,text:1==s.lines.length?s.lines[0]:null}}function m(s){return{action:s.action,start:s.start,end:s.end,lines:s.lines||[s.text]}}function l(s,t){for(var e=new Array(s.length),r=0;r<s.length;r++){for(var i=s[r],o={group:i.group,deltas:new Array(i.length)},n=0;n<i.deltas.length;n++)o.deltas[n]=t(i.deltas[n]);e[r]=o}return e}this.execute=function(s){var t=s.args[0];this.$doc=s.args[1],s.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(s){var t=this.$undoStack.pop(),e=null;return t&&(e=this.$doc.undoChanges(t,s),this.$redoStack.push(t),this.dirtyCounter--),e},this.redo=function(s){var t=this.$redoStack.pop(),e=null;return t&&(e=this.$doc.redoChanges(this.$deserializeDeltas(t),s),this.$undoStack.push(t),this.dirtyCounter++),e},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(s){return l(s,A)},this.$deserializeDeltas=function(s){return l(s,m)}}).call($.prototype),y.UndoManager=$}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(w,y,U){"use strict";var $=w("../lib/dom"),A=w("../lib/oop"),m=w("../lib/lang"),l=w("../lib/event_emitter").EventEmitter,s=function(t){this.element=$.createElement("div"),this.element.className="ace_layer ace_gutter-layer",t.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){A.implement(this,l),this.setSession=function(t){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=t,t&&t.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(t,e){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(t,e)},this.removeGutterDecoration=function(t,e){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(t,e)},this.setAnnotations=function(t){this.$annotations=[];for(var e=0;e<t.length;e++){var r=t[e],i=r.row,o=this.$annotations[i];o||(o=this.$annotations[i]={text:[]});var n=r.text;n=n?m.escapeHTML(n):r.html||"",-1===o.text.indexOf(n)&&o.text.push(n);var h=r.type;"error"==h?o.className=" ace_error":"warning"==h&&" ace_error"!=o.className?o.className=" ace_warning":"info"==h&&!o.className&&(o.className=" ace_info")}},this.$updateAnnotations=function(t){if(this.$annotations.length){var e=t.start.row,r=t.end.row-e;if(0!==r)if("remove"==t.action)this.$annotations.splice(e,r+1,null);else{var i=new Array(r+1);i.unshift(e,1),this.$annotations.splice.apply(this.$annotations,i)}}},this.update=function(t){for(var e=this.session,r=t.firstRow,i=Math.min(t.lastRow+t.gutterOffset,e.getLength()-1),o=e.getNextFoldLine(r),n=o?o.start.row:1/0,h=this.$showFoldWidgets&&e.foldWidgets,c=e.$breakpoints,F=e.$decorations,C=e.$firstLineNumber,u=0,g=e.gutterRenderer||this.$renderer,a=null,f=-1,p=r;;){if(p>n&&(n=(o=e.getNextFoldLine(p=o.end.row+1,o))?o.start.row:1/0),p>i){for(;this.$cells.length>f+1;)a=this.$cells.pop(),this.element.removeChild(a.element);break}(a=this.$cells[++f])||((a={element:null,textNode:null,foldWidget:null}).element=$.createElement("div"),a.textNode=document.createTextNode(""),a.element.appendChild(a.textNode),this.element.appendChild(a.element),this.$cells[f]=a);var d,E="ace_gutter-cell ";if(c[p]&&(E+=c[p]),F[p]&&(E+=F[p]),this.$annotations[p]&&(E+=this.$annotations[p].className),a.element.className!=E&&(a.element.className=E),(d=e.getRowLength(p)*t.lineHeight+"px")!=a.element.style.height&&(a.element.style.height=d),h){var v=h[p];null==v&&(v=h[p]=e.getFoldWidget(p))}if(v)a.foldWidget||(a.foldWidget=$.createElement("span"),a.element.appendChild(a.foldWidget)),E="ace_fold-widget ace_"+v,a.foldWidget.className!=(E+="start"==v&&p==n&&p<o.end.row?" ace_closed":" ace_open")&&(a.foldWidget.className=E),a.foldWidget.style.height!=(d=t.lineHeight+"px")&&(a.foldWidget.style.height=d);else a.foldWidget&&(a.element.removeChild(a.foldWidget),a.foldWidget=null);var b=u=g?g.getText(e,p):p+C;b!==a.textNode.data&&(a.textNode.data=b),p++}this.element.style.height=t.minHeight+"px",(this.$fixedWidth||e.$useWrapMode)&&(u=e.getLength()+C);var B=g?g.getWidth(e,u,t):u.toString().length*t.characterWidth,S=this.$padding||this.$computePadding();(B+=S.left+S.right)!==this.gutterWidth&&!isNaN(B)&&(this.gutterWidth=B,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",B))},this.$fixedWidth=!1,this.$showLineNumbers=!0,this.$renderer="",this.setShowLineNumbers=function(t){this.$renderer=!t&&{getWidth:function(){return""},getText:function(){return""}}},this.getShowLineNumbers=function(){return this.$showLineNumbers},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(t){t?$.addCssClass(this.element,"ace_folding-enabled"):$.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=t,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var t=$.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(t.paddingLeft)+1||0,this.$padding.right=parseInt(t.paddingRight)||0,this.$padding},this.getRegion=function(t){var e=this.$padding||this.$computePadding(),r=this.element.getBoundingClientRect();return t.x<e.left+r.left?"markers":this.$showFoldWidgets&&t.x>r.right-e.right?"foldWidgets":void 0}}).call(s.prototype),y.Gutter=s}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(w,y,U){"use strict";var $=w("../range").Range,A=w("../lib/dom"),m=function(l){this.element=A.createElement("div"),this.element.className="ace_layer ace_marker-layer",l.appendChild(this.element)};(function(){function l(s,t,e,r){return(s?1:0)|(t?2:0)|(e?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(s){this.$padding=s},this.setSession=function(s){this.session=s},this.setMarkers=function(s){this.markers=s},this.update=function(s){if(s){this.config=s;var t=[];for(var e in this.markers){var r=this.markers[e];if(r.range){var i=r.range.clipRows(s.firstRow,s.lastRow);if(!i.isEmpty())if(i=i.toScreenRange(this.session),r.renderer){var o=this.$getTop(i.start.row,s),n=this.$padding+(this.session.$bidiHandler.isBidiRow(i.start.row)?this.session.$bidiHandler.getPosLeft(i.start.column):i.start.column*s.characterWidth);r.renderer(t,i,n,o,s)}else"fullLine"==r.type?this.drawFullLineMarker(t,i,r.clazz,s):"screenLine"==r.type?this.drawScreenLineMarker(t,i,r.clazz,s):i.isMultiLine()?"text"==r.type?this.drawTextMarker(t,i,r.clazz,s):this.drawMultiLineMarker(t,i,r.clazz,s):this.session.$bidiHandler.isBidiRow(i.start.row)?this.drawBidiSingleLineMarker(t,i,r.clazz+" ace_start ace_br15",s):this.drawSingleLineMarker(t,i,r.clazz+" ace_start ace_br15",s)}else r.update(t,this,this.session,s)}this.element.innerHTML=t.join("")}},this.$getTop=function(s,t){return(s-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(s,t,e,r,i){for(var o=this.session,n=t.start.row,h=t.end.row,c=n,F=0,C=0,u=o.getScreenLastRowColumn(c),g=null,a=new $(c,t.start.column,c,C);c<=h;c++)a.start.row=a.end.row=c,a.start.column=c==n?t.start.column:o.getRowWrapIndent(c),a.end.column=u,F=C,C=u,u=c+1<h?o.getScreenLastRowColumn(c+1):c==h?0:t.end.column,g=e+(c==n?" ace_start":"")+" ace_br"+l(c==n||c==n+1&&t.start.column,F<C,C>u,c==h),this.session.$bidiHandler.isBidiRow(c)?this.drawBidiSingleLineMarker(s,a,g,r,c==h?0:1,i):this.drawSingleLineMarker(s,a,g,r,c==h?0:1,i)},this.drawMultiLineMarker=function(s,t,e,r,i){var n,h,o=this.$padding;if(i=i||"",this.session.$bidiHandler.isBidiRow(t.start.row)?((F=t.clone()).end.row=F.start.row,F.end.column=this.session.getLine(F.start.row).length,this.drawBidiSingleLineMarker(s,F,e+" ace_br1 ace_start",r,null,i)):(n=r.lineHeight,h=this.$getTop(t.start.row,r),s.push("<div class='",e," ace_br1 ace_start' style='","height:",n,"px;","right:0;","top:",h,"px;","left:",o+t.start.column*r.characterWidth,"px;",i,"'></div>")),this.session.$bidiHandler.isBidiRow(t.end.row)){var F;(F=t.clone()).start.row=F.end.row,F.start.column=0,this.drawBidiSingleLineMarker(s,F,e+" ace_br12",r,null,i)}else{var C=t.end.column*r.characterWidth;n=r.lineHeight,h=this.$getTop(t.end.row,r),s.push("<div class='",e," ace_br12' style='","height:",n,"px;","width:",C,"px;","top:",h,"px;","left:",o,"px;",i,"'></div>")}if(!((n=(t.end.row-t.start.row-1)*r.lineHeight)<=0)){h=this.$getTop(t.start.row+1,r);var u=(t.start.column?1:0)|(t.end.column?0:8);s.push("<div class='",e,u?" ace_br"+u:"","' style='","height:",n,"px;","right:0;","top:",h,"px;","left:",o,"px;",i,"'></div>")}},this.drawSingleLineMarker=function(s,t,e,r,i,o){var n=r.lineHeight,h=(t.end.column+(i||0)-t.start.column)*r.characterWidth,c=this.$getTop(t.start.row,r);s.push("<div class='",e,"' style='","height:",n,"px;","width:",h,"px;","top:",c,"px;","left:",this.$padding+t.start.column*r.characterWidth,"px;",o||"","'></div>")},this.drawBidiSingleLineMarker=function(s,t,e,r,i,o){var n=r.lineHeight,h=this.$getTop(t.start.row,r),c=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach(function(C){s.push("<div class='",e,"' style='","height:",n,"px;","width:",C.width+(i||0),"px;","top:",h,"px;","left:",c+C.left,"px;",o||"","'></div>")})},this.drawFullLineMarker=function(s,t,e,r,i){var o=this.$getTop(t.start.row,r),n=r.lineHeight;t.start.row!=t.end.row&&(n+=this.$getTop(t.end.row,r)-o),s.push("<div class='",e,"' style='","height:",n,"px;","top:",o,"px;","left:0;right:0;",i||"","'></div>")},this.drawScreenLineMarker=function(s,t,e,r,i){var o=this.$getTop(t.start.row,r);s.push("<div class='",e,"' style='","height:",r.lineHeight,"px;","top:",o,"px;","left:0;right:0;",i||"","'></div>")}}).call(m.prototype),y.Marker=m}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(w,y,U){"use strict";var $=w("../lib/oop"),A=w("../lib/dom"),m=w("../lib/lang"),s=(w("../lib/useragent"),w("../lib/event_emitter").EventEmitter),t=function(e){this.element=A.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){$.implement(this,s),this.EOF_CHAR="\xb6",this.EOL_CHAR_LF="\xac",this.EOL_CHAR_CRLF="\xa4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\xb7",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(r){this._signal("changeCharacterSize",r)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var r=this.$tabStrings=[0],i=1;i<e+1;i++)r.push(this.showInvisibles?"<span class='ace_invisible ace_invisible_tab'>"+m.stringRepeat(this.TAB_CHAR,i)+"</span>":m.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var o="ace_indent-guide",n="",h="";if(this.showInvisibles){o+=" ace_invisible",n=" ace_invisible_space",h=" ace_invisible_tab";var c=m.stringRepeat(this.SPACE_CHAR,this.tabSize),F=m.stringRepeat(this.TAB_CHAR,this.tabSize)}else F=c=m.stringRepeat(" ",this.tabSize);this.$tabStrings[" "]="<span class='"+o+n+"'>"+c+"</span>",this.$tabStrings["\t"]="<span class='"+o+h+"'>"+F+"</span>"}},this.updateLines=function(e,r,i){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;for(var o=Math.max(r,e.firstRow),n=Math.min(i,e.lastRow),h=this.element.childNodes,c=0,F=e.firstRow;F<o;F++){if(C=this.session.getFoldLine(F)){if(C.containsRow(o)){o=C.start.row;break}F=C.end.row}c++}for(var C,u=(C=this.session.getNextFoldLine(F=o))?C.start.row:1/0;F>u&&(u=(C=this.session.getNextFoldLine(F=C.end.row+1,C))?C.start.row:1/0),!(F>n);){var g=h[c++];if(g){var a=[];this.$renderLine(a,F,!this.$useLineGroups(),F==u&&C),g.style.height=e.lineHeight*this.session.getRowLength(F)+"px",g.innerHTML=a.join("")}F++}},this.scrollLines=function(e){var r=this.config;if(this.config=e,!r||r.lastRow<e.firstRow)return this.update(e);if(e.lastRow<r.firstRow)return this.update(e);var i=this.element;if(r.firstRow<e.firstRow)for(var o=this.session.getFoldedRowCount(r.firstRow,e.firstRow-1);o>0;o--)i.removeChild(i.firstChild);if(r.lastRow>e.lastRow)for(o=this.session.getFoldedRowCount(e.lastRow+1,r.lastRow);o>0;o--)i.removeChild(i.lastChild);if(e.firstRow<r.firstRow){var n=this.$renderLinesFragment(e,e.firstRow,r.firstRow-1);i.firstChild?i.insertBefore(n,i.firstChild):i.appendChild(n)}e.lastRow>r.lastRow&&(n=this.$renderLinesFragment(e,r.lastRow+1,e.lastRow),i.appendChild(n))},this.$renderLinesFragment=function(e,r,i){for(var o=this.element.ownerDocument.createDocumentFragment(),n=r,h=this.session.getNextFoldLine(n),c=h?h.start.row:1/0;n>c&&(c=(h=this.session.getNextFoldLine(n=h.end.row+1,h))?h.start.row:1/0),!(n>i);){var F=A.createElement("div"),C=[];if(this.$renderLine(C,n,!1,n==c&&h),F.innerHTML=C.join(""),this.$useLineGroups())F.className="ace_line_group",o.appendChild(F),F.style.height=e.lineHeight*this.session.getRowLength(n)+"px";else for(;F.firstChild;)o.appendChild(F.firstChild);n++}return o},this.update=function(e){this.config=e;for(var r=[],o=e.lastRow,n=e.firstRow,h=this.session.getNextFoldLine(n),c=h?h.start.row:1/0;n>c&&(c=(h=this.session.getNextFoldLine(n=h.end.row+1,h))?h.start.row:1/0),!(n>o);)this.$useLineGroups()&&r.push("<div class='ace_line_group' style='height:",e.lineHeight*this.session.getRowLength(n),"px'>"),this.$renderLine(r,n,!1,n==c&&h),this.$useLineGroups()&&r.push("</div>"),n++;this.element.innerHTML=r.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,r,i,o){var n=this,F=o.replace(/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\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,function(g,a,f,p,E){if(a)return n.showInvisibles?"<span class='ace_invisible ace_invisible_space'>"+m.stringRepeat(n.SPACE_CHAR,g.length)+"</span>":g;if("&"==g)return"&";if("<"==g)return"<";if(">"==g)return">";if("\t"==g){var d=n.session.getScreenTabSize(r+p);return r+=d-1,n.$tabStrings[d]}return"\u3000"==g?(r+=1,"<span class='"+(n.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk")+"' style='width:"+2*n.config.characterWidth+"px'>"+(n.showInvisibles?n.SPACE_CHAR:"")+"</span>"):f?"<span class='ace_invisible ace_invisible_space ace_invalid'>"+n.SPACE_CHAR+"</span>":(r+=1,"<span class='ace_cjk' style='width:"+2*n.config.characterWidth+"px'>"+g+"</span>")});if(this.$textToken[i.type])e.push(F);else{var C="ace_"+i.type.replace(/\./g," ace_"),u="";"fold"==i.type&&(u=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("<span class='",C,"'",u,">",F,"</span>")}return r+o.length},this.renderIndentGuide=function(e,r,i){var o=r.search(this.$indentGuideRe);return o<=0||o>=i?r:" "==r[0]?(e.push(m.stringRepeat(this.$tabStrings[" "],(o-=o%this.tabSize)/this.tabSize)),r.substr(o)):"\t"==r[0]?(e.push(m.stringRepeat(this.$tabStrings["\t"],o)),r.substr(o)):r},this.$renderWrappedLine=function(e,r,i,o){for(var n=0,h=0,c=i[0],F=0,C=0;C<r.length;C++){var u=r[C],g=u.value;if(0==C&&this.displayIndentGuides){if(n=g.length,!(g=this.renderIndentGuide(e,g,c)))continue;n-=g.length}if(n+g.length<c)F=this.$renderToken(e,F,u,g),n+=g.length;else{for(;n+g.length>=c;)F=this.$renderToken(e,F,u,g.substring(0,c-n)),g=g.substring(c-n),n=c,o||e.push("</div>","<div class='ace_line' style='height:",this.config.lineHeight,"px'>"),e.push(m.stringRepeat("\xa0",i.indent)),F=0,c=i[++h]||Number.MAX_VALUE;0!=g.length&&(n+=g.length,F=this.$renderToken(e,F,u,g))}}},this.$renderSimpleLine=function(e,r){var i=0,o=r[0],n=o.value;this.displayIndentGuides&&(n=this.renderIndentGuide(e,n)),n&&(i=this.$renderToken(e,i,o,n));for(var h=1;h<r.length;h++)i=this.$renderToken(e,i,o=r[h],n=o.value)},this.$renderLine=function(e,r,i,o){if(!o&&0!=o&&(o=this.session.getFoldLine(r)),o)var n=this.$getFoldLineTokens(r,o);else n=this.session.getTokens(r);if(i||e.push("<div class='ace_line' style='height:",this.config.lineHeight*(this.$useLineGroups()?1:this.session.getRowLength(r)),"px'>"),n.length){var h=this.session.getRowSplitData(r);h&&h.length?this.$renderWrappedLine(e,n,h,i):this.$renderSimpleLine(e,n)}this.showInvisibles&&(o&&(r=o.end.row),e.push("<span class='ace_invisible ace_invisible_eol'>",r==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"</span>")),i||e.push("</div>")},this.$getFoldLineTokens=function(e,r){var i=this.session,o=[],h=i.getTokens(e);return r.walk(function(c,F,C,u,g){null!=c?o.push({type:"fold",value:c}):(g&&(h=i.getTokens(F)),h.length&&function(c,F,C){for(var u=0,g=0;g+c[u].value.length<F;)if(g+=c[u].value.length,++u==c.length)return;for(g!=F&&((a=c[u].value.substring(F-g)).length>C-F&&(a=a.substring(0,C-F)),o.push({type:c[u].type,value:a}),g=F+a.length,u+=1);g<C&&u<c.length;){var a;o.push((a=c[u].value).length+g>C?{type:c[u].type,value:a.substring(0,C-g)}:c[u]),g+=a.length,u+=1}}(h,u,C))},r.end.row,this.session.getLine(r.end.row).length),o},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(t.prototype),y.Text=t}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(w,y,U){"use strict";var A,$=w("../lib/dom"),m=function(l){this.element=$.createElement("div"),this.element.className="ace_layer ace_cursor-layer",l.appendChild(this.element),void 0===A&&(A=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),$.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(A?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(l){for(var s=this.cursors,t=s.length;t--;)s[t].style.visibility=l?"":"hidden"},this.$updateOpacity=function(l){for(var s=this.cursors,t=s.length;t--;)s[t].style.opacity=l?"":"0"},this.$padding=0,this.setPadding=function(l){this.$padding=l},this.setSession=function(l){this.session=l},this.setBlinking=function(l){l!=this.isBlinking&&(this.isBlinking=l,this.restartTimer())},this.setBlinkInterval=function(l){l!=this.blinkInterval&&(this.blinkInterval=l,this.restartTimer())},this.setSmoothBlinking=function(l){l!=this.smoothBlinking&&!A&&(this.smoothBlinking=l,$.setCssClass(this.element,"ace_smooth-blinking",l),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var l=$.createElement("div");return l.className="ace_cursor",this.element.appendChild(l),this.cursors.push(l),l},this.removeCursor=function(){if(this.cursors.length>1){var l=this.cursors.pop();return l.parentNode.removeChild(l),l}},this.hideCursor=function(){this.isVisible=!1,$.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,$.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var l=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&$.removeCssClass(this.element,"ace_smooth-blinking"),l(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){$.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var s=function(){this.timeoutId=setTimeout(function(){l(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){l(!0),s()},this.blinkInterval),s()}},this.getPixelPosition=function(l,s){if(!this.config||!this.session)return{left:0,top:0};l||(l=this.session.selection.getCursor());var t=this.session.documentToScreenPosition(l);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(t.row,l.row)?this.session.$bidiHandler.getPosLeft(t.column):t.column*this.config.characterWidth),top:(t.row-(s?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(l){this.config=l;var s=this.session.$selectionMarkers,t=0,e=0;(void 0===s||0===s.length)&&(s=[{cursor:null}]),t=0;for(var r=s.length;t<r;t++){var i=this.getPixelPosition(s[t].cursor,!0);if(!((i.top>l.height+l.offset||i.top<0)&&t>1)){var o=(this.cursors[e++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,i,l,s[t],this.session):(o.left=i.left+"px",o.top=i.top+"px",o.width=l.characterWidth+"px",o.height=l.lineHeight+"px")}}for(;this.cursors.length>e;)this.removeCursor();var n=this.session.getOverwrite();this.$setOverwrite(n),this.$pixelPos=i,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(l){l!=this.overwrite&&(this.overwrite=l,l?$.addCssClass(this.element,"ace_overwrite-cursors"):$.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(m.prototype),y.Cursor=m}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(w,y,U){"use strict";var $=w("./lib/oop"),A=w("./lib/dom"),m=w("./lib/event"),l=w("./lib/event_emitter").EventEmitter,s=32768,t=function(i){this.element=A.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=A.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),i.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,m.addListener(this.element,"scroll",this.onScroll.bind(this)),m.addListener(this.element,"mousedown",m.preventDefault)};(function(){$.implement(this,l),this.setVisible=function(i){this.element.style.display=i?"":"none",this.isVisible=i,this.coeff=1}}).call(t.prototype);var e=function(i,o){t.call(this,i),this.scrollTop=0,this.scrollHeight=0,o.$scrollbarWidth=this.width=A.scrollbarWidth(i.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};$.inherits(e,t),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var i=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-i)/(this.coeff-i)}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(i){this.element.style.height=i+"px"},this.setInnerHeight=this.setScrollHeight=function(i){this.scrollHeight=i,i>s?(this.coeff=s/i,i=s):1!=this.coeff&&(this.coeff=1),this.inner.style.height=i+"px"},this.setScrollTop=function(i){this.scrollTop!=i&&(this.skipEvent=!0,this.scrollTop=i,this.element.scrollTop=i*this.coeff)}}.call(e.prototype);var r=function(i,o){t.call(this,i),this.scrollLeft=0,this.height=o.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};$.inherits(r,t),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(i){this.element.style.width=i+"px"},this.setInnerWidth=function(i){this.inner.style.width=i+"px"},this.setScrollWidth=function(i){this.inner.style.width=i+"px"},this.setScrollLeft=function(i){this.scrollLeft!=i&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=i)}}.call(r.prototype),y.ScrollBar=e,y.ScrollBarV=e,y.ScrollBarH=r,y.VScrollBar=e,y.HScrollBar=r}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(w,y,U){"use strict";var $=w("./lib/event"),A=function(m,l){this.onRender=m,this.pending=!1,this.changes=0,this.window=l||window};(function(){this.schedule=function(m){if(this.changes=this.changes|m,!this.pending&&this.changes){this.pending=!0;var l=this;$.nextFrame(function(){l.pending=!1;for(var s;s=l.changes;)l.changes=0,l.onRender(s)},this.window)}}}).call(A.prototype),y.RenderLoop=A}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(w,y,U){var $=w("../lib/oop"),A=w("../lib/dom"),m=w("../lib/lang"),l=w("../lib/useragent"),s=w("../lib/event_emitter").EventEmitter,t=0,e=y.FontMetrics=function(r){this.el=A.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=A.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=A.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),r.appendChild(this.el),t||this.$testFractionalRect(),this.$measureNode.innerHTML=m.stringRepeat("X",t),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){$.implement(this,s),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var r=A.createElement("div");this.$setMeasureNodeStyles(r.style),r.style.width="0.2px",document.documentElement.appendChild(r);var i=r.getBoundingClientRect().width;t=i>0&&i<1?50:100,r.parentNode.removeChild(r)},this.$setMeasureNodeStyles=function(r,i){r.width=r.height="auto",r.left=r.top="0px",r.visibility="hidden",r.position="absolute",r.whiteSpace="pre",l.isIE<8?r["font-family"]="inherit":r.font="inherit",r.overflow=i?"hidden":"visible"},this.checkForSizeChanges=function(){var r=this.$measureSizes();if(r&&(this.$characterSize.width!==r.width||this.$characterSize.height!==r.height)){this.$measureNode.style.fontWeight="bold";var i=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=r,this.charSizes=Object.create(null),this.allowBoldFonts=i&&i.width===r.width&&i.height===r.height,this._emit("changeCharacterSize",{data:r})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var r=this;return this.$pollSizeChangesTimer=setInterval(function(){r.checkForSizeChanges()},500)},this.setPolling=function(r){r?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===t){var r=null;try{r=this.$measureNode.getBoundingClientRect()}catch(o){r={width:0,height:0}}var i={height:r.height,width:r.width/t}}else i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/t};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(r){return this.$main.innerHTML=m.stringRepeat(r,t),this.$main.getBoundingClientRect().width/t},this.getCharacterWidth=function(r){var i=this.charSizes[r];return void 0===i&&(i=this.charSizes[r]=this.$measureCharWidth(r)/this.$characterSize.width),i},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(e.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","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"],function(w,y,U){"use strict";var $=w("./lib/oop"),A=w("./lib/dom"),m=w("./config"),l=w("./lib/useragent"),s=w("./layer/gutter").Gutter,t=w("./layer/marker").Marker,e=w("./layer/text").Text,r=w("./layer/cursor").Cursor,i=w("./scrollbar").HScrollBar,o=w("./scrollbar").VScrollBar,n=w("./renderloop").RenderLoop,h=w("./layer/font_metrics").FontMetrics,c=w("./lib/event_emitter").EventEmitter;A.importCssString('.ace_editor {position: relative;overflow: hidden;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;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.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;}.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 {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 {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;text-indent: -1em;-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: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.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_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));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;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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 {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;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_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;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_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_text-input-ios {position: absolute !important;top: -100000px !important;left: -100000px !important;}',"ace_editor.css");var C=function(u,g){var a=this;this.container=u||A.createElement("div"),this.$keepTextAreaAtCursor=!l.isOldIE,A.addCssClass(this.container,"ace_editor"),this.setTheme(g),this.$gutter=A.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=A.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=A.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new s(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new t(this.content);var f=this.$textLayer=new e(this.content);this.canvas=f.element,this.$markerFront=new t(this.content),this.$cursorLayer=new r(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new o(this.container,this),this.scrollBarH=new i(this.container,this),this.scrollBarV.addEventListener("scroll",function(p){a.$scrollAnimation||a.session.setScrollTop(p.data-a.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(p){a.$scrollAnimation||a.session.setScrollLeft(p.data-a.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new h(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(p){a.updateCharacterSize(),a.onResize(!0,a.gutterWidth,a.$size.width,a.$size.height),a._signal("changeCharacterSize",p)}),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.$loop=new n(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),m.resetOptions(this),m._emit("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,$.implement(this,c),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()},this.setSession=function(u){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=u,u&&this.scrollMargin.top&&u.getScrollTop()<=0&&u.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(u),this.$markerBack.setSession(u),this.$markerFront.setSession(u),this.$gutterLayer.setSession(u),this.$textLayer.setSession(u),u&&(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(u,g,a){if(void 0===g&&(g=1/0),this.$changedLines?(this.$changedLines.firstRow>u&&(this.$changedLines.firstRow=u),this.$changedLines.lastRow<g&&(this.$changedLines.lastRow=g)):this.$changedLines={firstRow:u,lastRow:g},this.$changedLines.lastRow<this.layerConfig.firstRow){if(!a)return;this.$changedLines.lastRow=this.layerConfig.lastRow}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(u){u?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(u,g,a,f){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=u?1:0;var p=this.container;f||(f=p.clientHeight||p.scrollHeight),a||(a=p.clientWidth||p.scrollWidth);var E=this.$updateCachedSize(u,g,a,f);if(!this.$size.scrollerHeight||!a&&!f)return this.resizing=0;u&&(this.$gutterLayer.$padding=null),u?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(u,g,a,f){var p=0,E=this.$size,d={width:E.width,height:E.height,scrollerHeight:E.scrollerHeight,scrollerWidth:E.scrollerWidth};return(f-=this.$extraHeight||0)&&(u||E.height!=f)&&(E.height=f,p|=this.CHANGE_SIZE,E.scrollerHeight=E.height,this.$horizScroll&&(E.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",p|=this.CHANGE_SCROLL),a&&(u||E.width!=a)&&(p|=this.CHANGE_SIZE,E.width=a,null==g&&(g=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=g,this.scrollBarH.element.style.left=this.scroller.style.left=g+"px",E.scrollerWidth=Math.max(0,a-g-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||u)&&(p|=this.CHANGE_FULL)),E.$dirty=!a||!f,p&&this._signal("resize",d),p},this.onGutterResize=function(){var u=this.$showGutter?this.$gutter.offsetWidth:0;u!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,u,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var g=Math.floor((this.$size.scrollerWidth-2*this.$padding)/this.characterWidth);return this.session.adjustWrapLimit(g,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(u){this.setOption("animatedScroll",u)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(u){this.setOption("showInvisibles",u),this.session.$bidiHandler.setShowInvisibles(u)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(u){this.setOption("displayIndentGuides",u)},this.setShowPrintMargin=function(u){this.setOption("showPrintMargin",u)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(u){this.setOption("printMarginColumn",u)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(u){return this.setOption("showGutter",u)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(u){this.setOption("fadeFoldWidgets",u)},this.setHighlightGutterLine=function(u){this.setOption("highlightGutterLine",u)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var u=this.$cursorLayer.$pixelPos,g=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var a=this.session.selection.getCursor();a.column=0,u=this.$cursorLayer.getPixelPosition(a,!0),g*=this.session.getRowLength(a.row)}this.$gutterLineHighlight.style.top=u.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=g+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var u=A.createElement("div");u.className="ace_layer ace_print-margin-layer",this.$printMarginEl=A.createElement("div"),this.$printMarginEl.className="ace_print-margin",u.appendChild(this.$printMarginEl),this.content.insertBefore(u,this.content.firstChild)}var g=this.$printMarginEl.style;g.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",g.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.$keepTextAreaAtCursor){var u=this.layerConfig,g=this.$cursorLayer.$pixelPos.top,a=this.$cursorLayer.$pixelPos.left,f=this.textarea.style,p=this.lineHeight;if((g-=u.offset)<0||g>u.height-p)return void(f.top=f.left="0");var E=this.characterWidth;if(this.$composition){var d=this.textarea.value.replace(/^\x01+/,"");E*=this.session.$getStringScreenWidth(d)[0]+2,p+=2}(a-=this.scrollLeft)>this.$size.scrollerWidth-E&&(a=this.$size.scrollerWidth-E),a+=this.gutterWidth,f.height=p+"px",f.width=E+"px",f.left=Math.min(a,this.$size.scrollerWidth-E)+"px",f.top=Math.min(g,this.$size.height-p)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var u=this.layerConfig,g=u.lastRow;return this.session.documentToScreenRow(g,0)*u.lineHeight-this.session.getScrollTop()>u.height-u.lineHeight?g-1:g},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(u){this.$padding=u,this.$textLayer.setPadding(u),this.$cursorLayer.setPadding(u),this.$markerFront.setPadding(u),this.$markerBack.setPadding(u),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(u,g,a,f){var p=this.scrollMargin;p.top=0|u,p.bottom=0|g,p.right=0|f,p.left=0|a,p.v=p.top+p.bottom,p.h=p.left+p.right,p.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-p.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(u){this.setOption("hScrollBarAlwaysVisible",u)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(u){this.setOption("vScrollBarAlwaysVisible",u)},this.$updateScrollBarV=function(){var u=this.layerConfig.maxHeight,g=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&this.scrollTop>(u-=(g-this.lineHeight)*this.$scrollPastEnd)-g&&(u=this.scrollTop+g,this.scrollBarV.scrollTop=null),this.scrollBarV.setScrollHeight(u+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(u,g){if(this.$changes&&(u|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(u||g)){if(this.$size.$dirty)return this.$changes|=u,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var a=this.layerConfig;if(u&this.CHANGE_FULL||u&this.CHANGE_SIZE||u&this.CHANGE_TEXT||u&this.CHANGE_LINES||u&this.CHANGE_SCROLL||u&this.CHANGE_H_SCROLL){if(u|=this.$computeLayerConfig(),a.firstRow!=this.layerConfig.firstRow&&a.firstRowScreen==this.layerConfig.firstRowScreen){var f=this.scrollTop+(a.firstRow-this.layerConfig.firstRow)*this.lineHeight;f>0&&(this.scrollTop=f,u|=this.CHANGE_SCROLL,u|=this.$computeLayerConfig())}a=this.layerConfig,this.$updateScrollBarV(),u&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-a.offset+"px",this.content.style.marginTop=-a.offset+"px",this.content.style.width=a.width+2*this.$padding+"px",this.content.style.height=a.minHeight+"px"}return u&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),u&this.CHANGE_FULL?(this.$textLayer.update(a),this.$showGutter&&this.$gutterLayer.update(a),this.$markerBack.update(a),this.$markerFront.update(a),this.$cursorLayer.update(a),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):u&this.CHANGE_SCROLL?(u&this.CHANGE_TEXT||u&this.CHANGE_LINES?this.$textLayer.update(a):this.$textLayer.scrollLines(a),this.$showGutter&&this.$gutterLayer.update(a),this.$markerBack.update(a),this.$markerFront.update(a),this.$cursorLayer.update(a),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(u&this.CHANGE_TEXT?(this.$textLayer.update(a),this.$showGutter&&this.$gutterLayer.update(a)):u&this.CHANGE_LINES?(this.$updateLines()||u&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(a):(u&this.CHANGE_TEXT||u&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(a),u&this.CHANGE_CURSOR&&(this.$cursorLayer.update(a),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),u&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(a),u&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(a),void this._signal("afterRender"))}this.$changes|=u},this.$autosize=function(){var u=this.session.getScreenLength()*this.lineHeight,g=this.$maxLines*this.lineHeight,a=Math.min(g,Math.max((this.$minLines||1)*this.lineHeight,u))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(a+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&a>this.$maxPixelHeight&&(a=this.$maxPixelHeight);var f=u>g;if(a!=this.desiredHeight||this.$size.height!=this.desiredHeight||f!=this.$vScroll){f!=this.$vScroll&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var p=this.container.clientWidth;this.container.style.height=a+"px",this.$updateCachedSize(!0,this.$gutterWidth,p,a),this.desiredHeight=a,this._signal("autosize")}},this.$computeLayerConfig=function(){var u=this.session,g=this.$size,a=g.height<=2*this.lineHeight,p=this.session.getScreenLength()*this.lineHeight,E=this.$getLongestLine(),d=!a&&(this.$hScrollBarAlwaysVisible||g.scrollerWidth-E-2*this.$padding<0),v=this.$horizScroll!==d;v&&(this.$horizScroll=d,this.scrollBarH.setVisible(d));var b=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var B=this.scrollTop%this.lineHeight,S=g.scrollerHeight+this.lineHeight,D=!this.$maxLines&&this.$scrollPastEnd?(g.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;p+=D;var k=this.scrollMargin;this.session.setScrollTop(Math.max(-k.top,Math.min(this.scrollTop,p-g.scrollerHeight+k.bottom))),this.session.setScrollLeft(Math.max(-k.left,Math.min(this.scrollLeft,E+2*this.$padding-g.scrollerWidth+k.right)));var M=!a&&(this.$vScrollBarAlwaysVisible||g.scrollerHeight-p+D<0||this.scrollTop>k.top),O=b!==M;O&&(this.$vScroll=M,this.scrollBarV.setVisible(M));var K,T,z=Math.ceil(S/this.lineHeight)-1,V=Math.max(0,Math.round((this.scrollTop-B)/this.lineHeight)),R=V+z,x=this.lineHeight;V=u.screenToDocumentRow(V,0);var L=u.getFoldLine(V);L&&(V=L.start.row),K=u.documentToScreenRow(V,0),T=u.getRowLength(V)*x,R=Math.min(u.screenToDocumentRow(R,0),u.getLength()-1),S=g.scrollerHeight+u.getRowLength(R)*x+T,B=this.scrollTop-K*x;var P=0;return this.layerConfig.width!=E&&(P=this.CHANGE_H_SCROLL),(v||O)&&(P=this.$updateCachedSize(!0,this.gutterWidth,g.width,g.height),this._signal("scrollbarVisibilityChanged"),O&&(E=this.$getLongestLine())),this.layerConfig={width:E,padding:this.$padding,firstRow:V,firstRowScreen:K,lastRow:R,lineHeight:x,characterWidth:this.characterWidth,minHeight:S,maxHeight:p,offset:B,gutterOffset:x?Math.max(0,Math.ceil((B+g.height-g.scrollerHeight)/x)):0,height:this.$size.scrollerHeight},P},this.$updateLines=function(){if(this.$changedLines){var u=this.$changedLines.firstRow,g=this.$changedLines.lastRow;this.$changedLines=null;var a=this.layerConfig;if(!(u>a.lastRow+1||g<a.firstRow))return g===1/0?(this.$showGutter&&this.$gutterLayer.update(a),void this.$textLayer.update(a)):(this.$textLayer.updateLines(a,u,g),!0)}},this.$getLongestLine=function(){var u=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(u+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(u*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(u,g){this.$gutterLayer.addGutterDecoration(u,g)},this.removeGutterDecoration=function(u,g){this.$gutterLayer.removeGutterDecoration(u,g)},this.updateBreakpoints=function(u){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(u){this.$gutterLayer.setAnnotations(u),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(u,g,a){this.scrollCursorIntoView(u,a),this.scrollCursorIntoView(g,a)},this.scrollCursorIntoView=function(u,g,a){if(0!==this.$size.scrollerHeight){var f=this.$cursorLayer.getPixelPosition(u),p=f.left,E=f.top,d=a&&a.top||0,v=a&&a.bottom||0,b=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;b+d>E?(g&&b+d>E+this.lineHeight&&(E-=g*this.$size.scrollerHeight),0===E&&(E=-this.scrollMargin.top),this.session.setScrollTop(E)):b+this.$size.scrollerHeight-v<E+this.lineHeight&&(g&&b+this.$size.scrollerHeight-v<E-this.lineHeight&&(E+=g*this.$size.scrollerHeight),this.session.setScrollTop(E+this.lineHeight-this.$size.scrollerHeight));var B=this.scrollLeft;B>p?(p<this.$padding+2*this.layerConfig.characterWidth&&(p=-this.scrollMargin.left),this.session.setScrollLeft(p)):B+this.$size.scrollerWidth<p+this.characterWidth?this.session.setScrollLeft(Math.round(p+this.characterWidth-this.$size.scrollerWidth)):B<=this.$padding&&p-B<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(u){this.session.setScrollTop(u*this.lineHeight)},this.alignCursor=function(u,g){"number"==typeof u&&(u={row:u,column:0});var p=this.$cursorLayer.getPixelPosition(u).top-(this.$size.scrollerHeight-this.lineHeight)*(g||0);return this.session.setScrollTop(p),p},this.STEPS=8,this.$calcSteps=function(u,g){var v,a=0,f=this.STEPS,p=[];for(a=0;a<f;++a)p.push((v=u,(g-u)*(Math.pow(a/this.STEPS-1,3)+1)+v));return p},this.scrollToLine=function(u,g,a,f){var E=this.$cursorLayer.getPixelPosition({row:u,column:0}).top;g&&(E-=this.$size.scrollerHeight/2);var d=this.scrollTop;this.session.setScrollTop(E),!1!==a&&this.animateScrolling(d,f)},this.animateScrolling=function(u,g){var a=this.scrollTop;if(this.$animatedScroll){var f=this;if(u!=a){if(this.$scrollAnimation){var p=this.$scrollAnimation.steps;if(p.length&&(u=p[0])==a)return}var E=f.$calcSteps(u,a);this.$scrollAnimation={from:u,to:a,steps:E},clearInterval(this.$timer),f.session.setScrollTop(E.shift()),f.session.$scrollTop=a,this.$timer=setInterval(function(){E.length?(f.session.setScrollTop(E.shift()),f.session.$scrollTop=a):null!=a?(f.session.$scrollTop=-1,f.session.setScrollTop(a),a=null):(f.$timer=clearInterval(f.$timer),f.$scrollAnimation=null,g&&g())},10)}}},this.scrollToY=function(u){this.scrollTop!==u&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=u)},this.scrollToX=function(u){this.scrollLeft!==u&&(this.scrollLeft=u),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(u,g){this.session.setScrollTop(g),this.session.setScrollLeft(g)},this.scrollBy=function(u,g){g&&this.session.setScrollTop(this.session.getScrollTop()+g),u&&this.session.setScrollLeft(this.session.getScrollLeft()+u)},this.isScrollableBy=function(u,g){if(g<0&&this.session.getScrollTop()>=1-this.scrollMargin.top||g>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||u<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||u>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(u,g){var a=this.scroller.getBoundingClientRect(),f=u+this.scrollLeft-a.left-this.$padding,p=f/this.characterWidth,E=Math.floor((g+this.scrollTop-a.top)/this.lineHeight),d=Math.round(p);return{row:E,column:d,side:p-d>0?1:-1,offsetX:f}},this.screenToTextCoordinates=function(u,g){var a=this.scroller.getBoundingClientRect(),f=u+this.scrollLeft-a.left-this.$padding,p=Math.round(f/this.characterWidth);return this.session.screenToDocumentPosition((g+this.scrollTop-a.top)/this.lineHeight,Math.max(p,0),f)},this.textToScreenCoordinates=function(u,g){var a=this.scroller.getBoundingClientRect(),f=this.session.documentToScreenPosition(u,g),p=this.$padding+(this.session.$bidiHandler.isBidiRow(f.row,u)?this.session.$bidiHandler.getPosLeft(f.column):Math.round(f.column*this.characterWidth));return{pageX:a.left+p-this.scrollLeft,pageY:a.top+f.row*this.lineHeight-this.scrollTop}},this.visualizeFocus=function(){A.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){A.removeCssClass(this.container,"ace_focus")},this.showComposition=function(u){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,A.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(u){this.$moveTextAreaToCursor()},this.hideComposition=function(){!this.$composition||(A.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(u,g){var a=this;function p(E){if(a.$themeId!=u)return g&&g();if(!E||!E.cssClass)throw new Error("couldn't load module "+u+" or it didn't call define");A.importCssString(E.cssText,E.cssClass,a.container.ownerDocument),a.theme&&A.removeCssClass(a.container,a.theme.cssClass);var d="padding"in E?E.padding:"padding"in(a.theme||{})?4:a.$padding;a.$padding&&d!=a.$padding&&a.setPadding(d),a.$theme=E.cssClass,a.theme=E,A.addCssClass(a.container,E.cssClass),A.setCssClass(a.container,"ace_dark",E.isDark),a.$size&&(a.$size.width=0,a.$updateSizeAsync()),a._dispatchEvent("themeLoaded",{theme:E}),g&&g()}this.$themeId=u,a._dispatchEvent("themeChange",{theme:u}),u&&"string"!=typeof u?p(u):m.loadModule(["theme",u||this.$options.theme.initialValue],p)},this.getTheme=function(){return this.$themeId},this.setStyle=function(u,g){A.setCssClass(this.container,u,!1!==g)},this.unsetStyle=function(u){A.removeCssClass(this.container,u)},this.setCursorStyle=function(u){this.scroller.style.cursor!=u&&(this.scroller.style.cursor=u)},this.setMouseCursor=function(u){this.scroller.style.cursor=u},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(C.prototype),m.defineOptions(C.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(u){this.$textLayer.setShowInvisibles(u)&&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(u){"number"==typeof u&&(this.$printMarginColumn=u),this.$showPrintMargin=!!u,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(u){this.$gutter.style.display=u?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(u){A.setCssClass(this.$gutter,"ace_fade-fold-widgets",u)},initialValue:!1},showFoldWidgets:{set:function(u){this.$gutterLayer.setShowFoldWidgets(u)},initialValue:!0},showLineNumbers:{set:function(u){this.$gutterLayer.setShowLineNumbers(u),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(u){this.$textLayer.setDisplayIndentGuides(u)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(u){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=A.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=u?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(u){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(u){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(u){"number"==typeof u&&(u+="px"),this.container.style.fontSize=u,this.updateFontSize()},initialValue:12},fontFamily:{set:function(u){this.container.style.fontFamily=u,this.updateFontSize()}},maxLines:{set:function(u){this.updateFull()}},minLines:{set:function(u){this.updateFull()}},maxPixelHeight:{set:function(u){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(u){this.$scrollPastEnd!=(u=+u||0)&&(this.$scrollPastEnd=u,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(u){this.$gutterLayer.$fixedWidth=!!u,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(u){this.setTheme(u)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),y.VirtualRenderer=C}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(w,y,U){"use strict";var $=w("../lib/oop"),A=w("../lib/net"),m=w("../lib/event_emitter").EventEmitter,l=w("../config");function t(i,o){var n=function(i,o){var n=o.src;A.qualifyURL(i);try{return new Blob([n],{type:"application/javascript"})}catch(F){var c=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return c.append(n),c.getBlob("application/javascript")}}(i,o),c=(window.URL||window.webkitURL).createObjectURL(n);return new Worker(c)}var e=function(i,o,n,h,c){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),w.nameToUrl&&!w.toUrl&&(w.toUrl=w.nameToUrl),l.get("packaged")||!w.toUrl)h=h||l.moduleUrl(o.id,"worker");else{var F=this.$normalizePath;h=h||F(w.toUrl("ace/worker/worker.js",null,"_"));var C={};i.forEach(function(u){C[u]=F(w.toUrl(u,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=t(h,o),c&&this.send("importScripts",c),this.$worker.postMessage({init:!0,tlns:C,module:o.id,classname:n}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){$.implement(this,m),this.onMessage=function(i){var o=i.data;switch(o.type){case"event":this._signal(o.name,{data:o.data});break;case"call":var n=this.callbacks[o.id];n&&(n(o.data),delete this.callbacks[o.id]);break;case"error":this.reportError(o.data);break;case"log":window.console&&console.log&&console.log.apply(console,o.data)}},this.reportError=function(i){window.console&&console.error&&console.error(i)},this.$normalizePath=function(i){return A.qualifyURL(i)},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(i,o){this.$worker.postMessage({command:i,args:o})},this.call=function(i,o,n){if(n){var h=this.callbackId++;this.callbacks[h]=n,o.push(h)}this.send(i,o)},this.emit=function(i,o){try{this.$worker.postMessage({event:i,data:{data:o.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(i){this.$doc&&this.terminate(),this.$doc=i,this.call("setValue",[i.getValue()]),i.on("change",this.changeListener)},this.changeListener=function(i){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),this.deltaQueue.push(i.start,"insert"==i.action?i.lines:i.end)},this.$sendDeltaQueue=function(){var i=this.deltaQueue;!i||(this.deltaQueue=null,i.length>50&&i.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:i}))}}).call(e.prototype);var r=function(i,o,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var h=null,c=!1,F=Object.create(m),C=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(g){C.messageBuffer.push(g),h&&(c?setTimeout(u):u())},this.setEmitSync=function(g){c=g};var u=function(){var g=C.messageBuffer.shift();g.command?h[g.command].apply(h,g.args):g.event&&F._signal(g.event,g.data)};F.postMessage=function(g){C.onMessage({data:g})},F.callback=function(g,a){this.postMessage({type:"call",id:a,data:g})},F.emit=function(g,a){this.postMessage({type:"event",name:g,data:a})},l.loadModule(["worker",o],function(g){for(h=new g[n](F);C.messageBuffer.length;)u()})};r.prototype=e.prototype,y.UIWorkerClient=r,y.WorkerClient=e,y.createWorker=t}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(w,y,U){"use strict";var $=w("./range").Range,A=w("./lib/event_emitter").EventEmitter,m=w("./lib/oop"),l=function(s,t,e,r,i,o){var n=this;this.length=t,this.session=s,this.doc=s.getDocument(),this.mainClass=i,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){n.onCursorChange()})},this.$pos=e;var h=s.getUndoManager().$undoStack||s.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=h.length,this.setup(),s.selection.on("changeCursor",this.$onCursorChange)};(function(){m.implement(this,A),this.setup=function(){var s=this,t=this.doc,e=this.session;this.selectionBefore=e.selection.toJSON(),e.selection.inMultiSelectMode&&e.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=e.addMarker(new $(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var o=t.createAnchor(i.row,i.column);o.$insertRight=!0,o.detach(),s.others.push(o)}),e.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var s=this.session,t=this;this.othersActive=!0,this.others.forEach(function(e){e.markerId=s.addMarker(new $(e.row,e.column,e.row,e.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var s=0;s<this.others.length;s++)this.session.removeMarker(this.others[s].markerId)}},this.onUpdate=function(s){if(this.$updating)return this.updateAnchors(s);var t=s;if(t.start.row===t.end.row&&t.start.row===this.pos.row){this.$updating=!0;var e="insert"===s.action?t.end.column-t.start.column:t.start.column-t.end.column,r=t.start.column>=this.pos.column&&t.start.column<=this.pos.column+this.length+1,i=t.start.column-this.pos.column;if(this.updateAnchors(s),r&&(this.length+=e),r&&!this.session.$fromUndo)if("insert"===s.action)for(var o=this.others.length-1;o>=0;o--)this.doc.insertMergedLines(h={row:(n=this.others[o]).row,column:n.column+i},s.lines);else if("remove"===s.action)for(o=this.others.length-1;o>=0;o--){var n,h;this.doc.remove(new $((h={row:(n=this.others[o]).row,column:n.column+i}).row,h.column,h.row,h.column-e))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(s){this.pos.onChange(s);for(var t=this.others.length;t--;)this.others[t].onChange(s);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var s=this,t=this.session,e=function(i,o){t.removeMarker(i.markerId),i.markerId=t.addMarker(new $(i.row,i.column,i.row,i.column+s.length),o,null,!1)};e(this.pos,this.mainClass);for(var r=this.others.length;r--;)e(this.others[r],this.othersClass)}},this.onCursorChange=function(s){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",s)):(this.hideOtherMarkers(),this._emit("cursorLeave",s))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var s=this.session.getUndoManager(),t=(s.$undoStack||s.$undostack).length-this.$undoStackDepth,e=0;e<t;e++)s.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(l.prototype),y.PlaceHolder=l}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(w,y,U){var $=w("../lib/event"),A=w("../lib/useragent");function m(s,t){return s.row==t.row&&s.column==t.column}y.onMouseDown=function(s){var t=s.domEvent,e=t.altKey,r=t.shiftKey,i=t.ctrlKey,o=s.getAccelKey(),n=s.getButton();if(i&&A.isMac&&(n=t.button),s.editor.inMultiSelectMode&&2==n)s.editor.textInput.onContextMenu(s.domEvent);else if(i||e||o){if(0===n){var b,h=s.editor,c=h.selection,F=h.inMultiSelectMode,C=s.getDocumentPosition(),u=c.getCursor(),g=s.inSelection()||c.isEmpty()&&m(C,u),a=s.x,f=s.y,E=h.session,d=h.renderer.pixelToScreenCoordinates(a,f),v=d;if(h.$mouseHandler.$enableJumpToDef)i&&e||o&&e?b=r?"block":"add":e&&h.$blockSelectEnabled&&(b="block");else if(o&&!e){if(b="add",!F&&r)return}else e&&h.$blockSelectEnabled&&(b="block");if(b&&A.isMac&&t.ctrlKey&&h.$mouseHandler.cancelContextMenu(),"add"==b){if(!F&&g)return;if(!F){var B=c.toOrientedRange();h.addSelectionMarker(B)}var S=c.rangeList.rangeAtPoint(C);h.$blockScrolling++,h.inVirtualSelectionMode=!0,r&&(S=null,h.removeSelectionMarker(B=c.ranges[0]||B)),h.once("mouseup",function(){var R=c.toOrientedRange();S&&R.isEmpty()&&m(S.cursor,R.cursor)?c.substractPoint(R.cursor):(r?c.substractPoint(B.cursor):B&&(h.removeSelectionMarker(B),c.addRange(B)),c.addRange(R)),h.$blockScrolling--,h.inVirtualSelectionMode=!1})}else if("block"==b){s.stop(),h.inVirtualSelectionMode=!0;var D,k=[];h.$blockScrolling++,F&&!o?c.toSingleRange():!F&&o&&(D=c.toOrientedRange(),h.addSelectionMarker(D)),r?d=E.documentToScreenPosition(c.lead):c.moveToPosition(C),h.$blockScrolling--,v={row:-1,column:-1};$.capture(h.container,function(R){a=R.clientX,f=R.clientY},function(R){clearInterval(V),h.removeSelectionMarkers(k),k.length||(k=[c.toOrientedRange()]),h.$blockScrolling++,D&&(h.removeSelectionMarker(D),c.toSingleRange(D));for(var K=0;K<k.length;K++)c.addRange(k[K]);h.inVirtualSelectionMode=!1,h.$mouseHandler.$clickSelection=null,h.$blockScrolling--});var V=setInterval(function(){var R,K;R=h.renderer.pixelToScreenCoordinates(a,f),K=E.screenToDocumentPosition(R.row,R.column,R.offsetX),m(v,R)&&m(K,c.lead)||(v=R,h.$blockScrolling++,h.selection.moveToPosition(K),h.renderer.scrollCursorIntoView(),h.removeSelectionMarkers(k),k=c.rectangularRangeBlock(v,d),h.$mouseHandler.$clickSelection&&1==k.length&&k[0].isEmpty()&&(k[0]=h.$mouseHandler.$clickSelection.clone()),k.forEach(h.addSelectionMarker,h),h.updateSelectionMarkers(),h.$blockScrolling--)},20);return s.preventDefault()}}}else 0===n&&s.editor.inMultiSelectMode&&s.editor.exitMultiSelectMode()}}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(w,y,U){y.defaultCommands=[{name:"addCursorAbove",exec:function(A){A.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorBelow",exec:function(A){A.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorAboveSkipCurrent",exec:function(A){A.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readOnly:!0},{name:"addCursorBelowSkipCurrent",exec:function(A){A.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readOnly:!0},{name:"selectMoreBefore",exec:function(A){A.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readOnly:!0},{name:"selectMoreAfter",exec:function(A){A.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readOnly:!0},{name:"selectNextBefore",exec:function(A){A.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readOnly:!0},{name:"selectNextAfter",exec:function(A){A.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",readOnly:!0},{name:"splitIntoLines",exec:function(A){A.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"alignCursors",exec:function(A){A.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",exec:function(A){A.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],y.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(A){A.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(A){return A&&A.inMultiSelectMode}}];var $=w("../keyboard/hash_handler").HashHandler;y.keyboardHandler=new $(y.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"],function(w,y,U){var $=w("./range_list").RangeList,A=w("./range").Range,m=w("./selection").Selection,l=w("./mouse/multi_select_handler").onMouseDown,s=w("./lib/event"),t=w("./lib/lang"),e=w("./commands/multi_select_commands");y.commands=e.defaultCommands.concat(e.multiSelectCommands);var i=new(0,w("./search").Search),n=w("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(n.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(u,g){if(u){if(!this.inMultiSelectMode&&0===this.rangeCount){var a=this.toOrientedRange();if(this.rangeList.add(a),this.rangeList.add(u),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),g||this.fromOrientedRange(u);this.rangeList.removeAll(),this.rangeList.add(a),this.$onAddRange(a)}u.cursor||(u.cursor=u.end);var f=this.rangeList.add(u);return this.$onAddRange(u),f.length&&this.$onRemoveRange(f),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),g||this.fromOrientedRange(u)}},this.toSingleRange=function(u){u=u||this.ranges[0];var g=this.rangeList.removeAll();g.length&&this.$onRemoveRange(g),u&&this.fromOrientedRange(u)},this.substractPoint=function(u){var g=this.rangeList.substractPoint(u);if(g)return this.$onRemoveRange(g),g[0]},this.mergeOverlappingRanges=function(){var u=this.rangeList.merge();u.length?this.$onRemoveRange(u):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(u){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(u),this._signal("addRange",{range:u})},this.$onRemoveRange=function(u){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var g=this.rangeList.ranges.pop();u.push(g),this.rangeCount=0}for(var a=u.length;a--;){var f=this.ranges.indexOf(u[a]);this.ranges.splice(f,1)}this._signal("removeRange",{ranges:u}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(g=g||this.ranges[0])&&!g.isEqual(this.getRange())&&this.fromOrientedRange(g)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new $,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var u=this.rangeList.ranges,g=u[u.length-1],a=A.fromPoints(u[0].start,g.end);this.toSingleRange(),this.setSelectionRange(a,g.cursor==g.start)}else{a=this.getRange();var f=this.isBackwards(),p=a.start.row,E=a.end.row;if(p==E){if(f)var d=a.end,v=a.start;else d=a.start,v=a.end;return this.addRange(A.fromPoints(v,v)),void this.addRange(A.fromPoints(d,d))}var b=[],B=this.getLineRange(p,!0);B.start.column=a.start.column,b.push(B);for(var S=p+1;S<E;S++)b.push(this.getLineRange(S,!0));(B=this.getLineRange(E,!0)).end.column=a.end.column,b.push(B),b.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var u=this.rangeList.ranges,g=u[u.length-1],a=A.fromPoints(u[0].start,g.end);this.toSingleRange(),this.setSelectionRange(a,g.cursor==g.start)}else{var f=this.session.documentToScreenPosition(this.selectionLead),p=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(f,p).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(u,g,a){var f=[],p=u.column<g.column;if(p)var E=u.column,d=g.column,v=u.offsetX,b=g.offsetX;else E=g.column,d=u.column,v=g.offsetX,b=u.offsetX;var B=u.row<g.row;if(B)var S=u.row,D=g.row;else S=g.row,D=u.row;E<0&&(E=0),S<0&&(S=0),S==D&&(a=!0);for(var k=S;k<=D;k++){var M=A.fromPoints(this.session.screenToDocumentPosition(k,E,v),this.session.screenToDocumentPosition(k,d,b));if(M.isEmpty()){if(O&&c(M.end,O))break;var O=M.end}M.cursor=p?M.start:M.end,f.push(M)}if(B&&f.reverse(),!a){for(var z=f.length-1;f[z].isEmpty()&&z>0;)z--;if(z>0)for(var V=0;f[V].isEmpty();)V++;for(var R=z;R>=V;R--)f[R].isEmpty()&&f.splice(R,1)}return f}}.call(m.prototype);var h=w("./editor").Editor;function c(u,g){return u.row==g.row&&u.column==g.column}function F(u){u.$multiselectOnSessionChange||(u.$onAddRange=u.$onAddRange.bind(u),u.$onRemoveRange=u.$onRemoveRange.bind(u),u.$onMultiSelect=u.$onMultiSelect.bind(u),u.$onSingleSelect=u.$onSingleSelect.bind(u),u.$multiselectOnSessionChange=y.onSessionChange.bind(u),u.$checkMultiselectChange=u.$checkMultiselectChange.bind(u),u.$multiselectOnSessionChange(u),u.on("changeSession",u.$multiselectOnSessionChange),u.on("mousedown",l),u.commands.addCommands(e.defaultCommands),function(u){var g=u.textInput.getElement(),a=!1;function f(p){a&&(u.renderer.setMouseCursor(""),a=!1)}s.addListener(g,"keydown",function(p){u.$blockSelectEnabled&&18==p.keyCode&&!(p.ctrlKey||p.shiftKey||p.metaKey)?a||(u.renderer.setMouseCursor("crosshair"),a=!0):a&&f()}),s.addListener(g,"keyup",f),s.addListener(g,"blur",f)}(u))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(u){u.cursor||(u.cursor=u.end);var g=this.getSelectionStyle();return u.marker=this.session.addMarker(u,"ace_selection",g),this.session.$selectionMarkers.push(u),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,u},this.removeSelectionMarker=function(u){if(u.marker){this.session.removeMarker(u.marker);var g=this.session.$selectionMarkers.indexOf(u);-1!=g&&this.session.$selectionMarkers.splice(g,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(u){for(var g=this.session.$selectionMarkers,a=u.length;a--;){var f=u[a];if(f.marker){this.session.removeMarker(f.marker);var p=g.indexOf(f);-1!=p&&g.splice(p,1)}}this.session.selectionMarkerCount=g.length},this.$onAddRange=function(u){this.addSelectionMarker(u.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(u){this.removeSelectionMarkers(u.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(u){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(e.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(u){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(e.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(u){var g=u.command,a=u.editor;if(a.multiSelect){if(g.multiSelectAction)"forEach"==g.multiSelectAction?f=a.forEachSelection(g,u.args):"forEachLine"==g.multiSelectAction?f=a.forEachSelection(g,u.args,!0):"single"==g.multiSelectAction?(a.exitMultiSelectMode(),f=g.exec(a,u.args||{})):f=g.multiSelectAction(a,u.args||{});else{var f=g.exec(a,u.args||{});a.multiSelect.addRange(a.multiSelect.toOrientedRange()),a.multiSelect.mergeOverlappingRanges()}return f}},this.forEachSelection=function(u,g,a){if(!this.inVirtualSelectionMode){var B,p=1==a||a&&a.$byLines,E=this.session,d=this.selection,b=(a&&a.keepOrder?d:d.rangeList).ranges;if(!b.length)return u.exec?u.exec(this,g||{}):u(this,g||{});var S=d._eventRegistry;d._eventRegistry={};var D=new m(E);this.inVirtualSelectionMode=!0;for(var k=b.length;k--;){if(p)for(;k>0&&b[k].start.row==b[k-1].end.row;)k--;D.fromOrientedRange(b[k]),D.index=k,this.selection=E.selection=D;var M=u.exec?u.exec(this,g||{}):u(this,g||{});!B&&void 0!==M&&(B=M),D.toOrientedRange(b[k])}D.detach(),this.selection=E.selection=d,this.inVirtualSelectionMode=!1,d._eventRegistry=S,d.mergeOverlappingRanges();var O=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),O&&O.from==O.to&&this.renderer.animateScrolling(O.from),B}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var u="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var g=this.multiSelect.rangeList.ranges,a=[],f=0;f<g.length;f++)a.push(this.session.getTextRange(g[f]));var p=this.session.getDocument().getNewLineCharacter();(u=a.join(p)).length==(a.length-1)*p.length&&(u="")}else this.selection.isEmpty()||(u=this.session.getTextRange(this.getSelectionRange()));return u},this.$checkMultiselectChange=function(u,g){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var a=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&g==this.multiSelect.anchor)return;var f=g==this.multiSelect.anchor?a.cursor==a.start?a.end:a.start:a.cursor;(f.row!=g.row||this.session.$clipPositionToDocument(f.row,f.column).column!=g.column)&&this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange())}},this.findAll=function(u,g,a){if((g=g||{}).needle=u||g.needle,null==g.needle){var f=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();g.needle=this.session.getTextRange(f)}this.$search.set(g);var p=this.$search.findAll(this.session);if(!p.length)return 0;this.$blockScrolling+=1;var E=this.multiSelect;a||E.toSingleRange(p[0]);for(var d=p.length;d--;)E.addRange(p[d],!0);return f&&E.rangeList.rangeAtPoint(f.start)&&E.addRange(f,!0),this.$blockScrolling-=1,p.length},this.selectMoreLines=function(u,g){var a=this.selection.toOrientedRange(),f=a.cursor==a.end,p=this.session.documentToScreenPosition(a.cursor);this.selection.$desiredColumn&&(p.column=this.selection.$desiredColumn);var b,E=this.session.screenToDocumentPosition(p.row+u,p.column);if(a.isEmpty())var v=E;else{var d=this.session.documentToScreenPosition(f?a.end:a.start);v=this.session.screenToDocumentPosition(d.row+u,d.column)}if(f?(b=A.fromPoints(E,v)).cursor=b.start:(b=A.fromPoints(v,E)).cursor=b.end,b.desiredColumn=p.column,this.selection.inMultiSelectMode){if(g)var B=a.cursor}else this.selection.addRange(a);this.selection.addRange(b),B&&this.selection.substractPoint(B)},this.transposeSelections=function(u){for(var g=this.session,a=g.multiSelect,f=a.ranges,p=f.length;p--;)if((E=f[p]).isEmpty()){var d=g.getWordRange(E.start.row,E.start.column);E.start.row=d.start.row,E.start.column=d.start.column,E.end.row=d.end.row,E.end.column=d.end.column}a.mergeOverlappingRanges();var v=[];for(p=f.length;p--;)v.unshift(g.getTextRange(E=f[p]));for(u<0?v.unshift(v.pop()):v.push(v.shift()),p=f.length;p--;){var E;d=(E=f[p]).clone(),g.replace(E,v[p]),E.start.row=d.start.row,E.start.column=d.start.column}},this.selectMore=function(u,g,a){var f=this.session,E=f.multiSelect.toOrientedRange();if(!E.isEmpty()||((E=f.getWordRange(E.start.row,E.start.column)).cursor=-1==u?E.start:E.end,this.multiSelect.addRange(E),!a)){var d=f.getTextRange(E),v=function(u,g,a){return i.$options.wrap=!0,i.$options.needle=g,i.$options.backwards=-1==a,i.find(u)}(f,d,u);v&&(v.cursor=-1==u?v.start:v.end,this.$blockScrolling+=1,this.session.unfold(v),this.multiSelect.addRange(v),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),g&&this.multiSelect.substractPoint(E.cursor)}},this.alignCursors=function(){var u=this.session,g=u.multiSelect,a=g.ranges,f=-1,p=a.filter(function(z){if(z.cursor.row==f)return!0;f=z.cursor.row});if(a.length&&p.length!=a.length-1){p.forEach(function(z){g.substractPoint(z.cursor)});var k=0,M=1/0,O=a.map(function(z){var V=z.cursor,K=u.getLine(V.row).substr(V.column).search(/\S/g);return-1==K&&(K=0),V.column>k&&(k=V.column),K<M&&(M=K),K});a.forEach(function(z,V){var R=z.cursor,K=k-R.column,T=O[V]-M;K>T?u.insert(R,t.stringRepeat(" ",K-T)):u.remove(new A(R.row,R.column,R.row,R.column-K+T)),z.start.column=z.end.column=k,z.start.row=z.end.row=R.row,z.cursor=z.end}),g.fromOrientedRange(a[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var E=this.selection.getRange(),d=E.start.row,v=E.end.row,b=d==v;if(b){var S,B=this.session.getLength();do{S=this.session.getLine(v)}while(/[=:]/.test(S)&&++v<B);do{S=this.session.getLine(d)}while(/[=:]/.test(S)&&--d>0);d<0&&(d=0),v>=B&&(v=B-1)}var D=this.session.removeFullLines(d,v);D=this.$reAlignText(D,b),this.session.insert({row:d,column:0},D.join("\n")+"\n"),b||(E.start.column=0,E.end.column=D[D.length-1].length),this.selection.setRange(E)}},this.$reAlignText=function(u,g){var p,E,d,a=!0,f=!0;return u.map(function(D){var k=D.match(/(\s*)(.*?)(\s*)([=:].*)/);return k?null==p?(p=k[1].length,E=k[2].length,d=k[3].length,k):(p+E+d!=k[1].length+k[2].length+k[3].length&&(f=!1),p!=k[1].length&&(a=!1),p>k[1].length&&(p=k[1].length),E<k[2].length&&(E=k[2].length),d>k[3].length&&(d=k[3].length),k):[D]}).map(g?b:a?f?function(D){return D[2]?v(p+E-D[2].length)+D[2]+v(d)+D[4].replace(/^([=:])\s+/,"$1 "):D[0]}:b:function(D){return D[2]?v(p)+D[2]+v(d)+D[4].replace(/^([=:])\s+/,"$1 "):D[0]});function v(D){return t.stringRepeat(" ",D)}function b(D){return D[2]?v(p)+D[2]+v(E-D[2].length+d)+D[4].replace(/^([=:])\s+/,"$1 "):D[0]}}}).call(h.prototype),y.onSessionChange=function(u){var g=u.session;g&&!g.multiSelect&&(g.$selectionMarkers=[],g.selection.$initRangeList(),g.multiSelect=g.selection),this.multiSelect=g&&g.multiSelect;var a=u.oldSession;a&&(a.multiSelect.off("addRange",this.$onAddRange),a.multiSelect.off("removeRange",this.$onRemoveRange),a.multiSelect.off("multiSelect",this.$onMultiSelect),a.multiSelect.off("singleSelect",this.$onSingleSelect),a.multiSelect.lead.off("change",this.$checkMultiselectChange),a.multiSelect.anchor.off("change",this.$checkMultiselectChange)),g&&(g.multiSelect.on("addRange",this.$onAddRange),g.multiSelect.on("removeRange",this.$onRemoveRange),g.multiSelect.on("multiSelect",this.$onMultiSelect),g.multiSelect.on("singleSelect",this.$onSingleSelect),g.multiSelect.lead.on("change",this.$checkMultiselectChange),g.multiSelect.anchor.on("change",this.$checkMultiselectChange)),g&&this.inMultiSelectMode!=g.selection.inMultiSelectMode&&(g.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},y.MultiSelect=F,w("./config").defineOptions(h.prototype,"editor",{enableMultiselect:{set:function(u){F(this),u?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",l)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",l))},value:!0},enableBlockSelect:{set:function(u){this.$blockSelectEnabled=u},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(w,y,U){"use strict";var $=w("../../range").Range,A=y.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(m,l,s){var t=m.getLine(s);return this.foldingStartMarker.test(t)?"start":"markbeginend"==l&&this.foldingStopMarker&&this.foldingStopMarker.test(t)?"end":""},this.getFoldWidgetRange=function(m,l,s){return null},this.indentationBlock=function(m,l,s){var t=/\S/,e=m.getLine(l),r=e.search(t);if(-1!=r){for(var i=s||e.length,o=m.getLength(),n=l,h=l;++l<o;){var c=m.getLine(l).search(t);if(-1!=c){if(c<=r)break;h=l}}if(h>n){var F=m.getLine(h).length;return new $(n,i,h,F)}}},this.openingBracketBlock=function(m,l,s,t,e){var r={row:s,column:t+1},i=m.$findClosingBracket(l,r,e);if(i){var o=m.foldWidgets[i.row];return null==o&&(o=m.getFoldWidget(i.row)),"start"==o&&i.row>r.row&&(i.row--,i.column=m.getLine(i.row).length),$.fromPoints(r,i)}},this.closingBracketBlock=function(m,l,s,t,e){var r={row:s,column:t},i=m.$findOpeningBracket(l,r);if(i)return i.column++,r.column--,$.fromPoints(i,r)}}).call(A.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(w,y,U){"use strict";y.isDark=!1,y.cssClass="ace-tm",y.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;}',w("../lib/dom").importCssString(y.cssText,y.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(w,y,U){"use strict";w("./lib/oop");var A=w("./lib/dom");function l(s){this.session=s,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)}w("./range"),function(){this.getRowLength=function(s){var t;return t=this.lineWidgets&&this.lineWidgets[s]&&this.lineWidgets[s].rowCount||0,this.$useWrapMode&&this.$wrapData[s]?this.$wrapData[s].length+1+t:1+t},this.$getWidgetScreenLength=function(){var s=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(s+=t.rowCount)}),s},this.$onChangeEditor=function(s){this.attach(s.editor)},this.attach=function(s){s&&s.widgetManager&&s.widgetManager!=this&&s.widgetManager.detach(),this.editor!=s&&(this.detach(),this.editor=s,s&&(s.widgetManager=this,s.renderer.on("beforeRender",this.measureWidgets),s.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(s){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var e=this.session.lineWidgets;e&&e.forEach(function(r){r&&r.el&&r.el.parentNode&&(r._inDocument=!1,r.el.parentNode.removeChild(r.el))})}},this.updateOnFold=function(s,t){var e=t.lineWidgets;if(e&&s.action){for(var r=s.data,i=r.start.row,o=r.end.row,n="add"==s.action,h=i+1;h<o;h++)e[h]&&(e[h].hidden=n);e[o]&&(n?e[i]?e[o].hidden=n:e[i]=e[o]:(e[i]==e[o]&&(e[i]=void 0),e[o].hidden=n))}},this.updateOnChange=function(s){var t=this.session.lineWidgets;if(t){var e=s.start.row,r=s.end.row-e;if(0!==r)if("remove"==s.action)t.splice(e+1,r).forEach(function(n){n&&this.removeLineWidget(n)},this),this.$updateRows();else{var o=new Array(r);o.unshift(e,0),t.splice.apply(t,o),this.$updateRows()}}},this.$updateRows=function(){var s=this.session.lineWidgets;if(s){var t=!0;s.forEach(function(e,r){if(e)for(t=!1,e.row=r;e.$oldWidget;)e.$oldWidget.row=r,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(s){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[s.row];t&&(s.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[s.row]=s,s.session=this.session;var e=this.editor.renderer;s.html&&!s.el&&(s.el=A.createElement("div"),s.el.innerHTML=s.html),s.el&&(A.addCssClass(s.el,"ace_lineWidgetContainer"),s.el.style.position="absolute",s.el.style.zIndex=5,e.container.appendChild(s.el),s._inDocument=!0),s.coverGutter||(s.el.style.zIndex=3),null==s.pixelHeight&&(s.pixelHeight=s.el.offsetHeight),null==s.rowCount&&(s.rowCount=s.pixelHeight/e.layerConfig.lineHeight);var r=this.session.getFoldAt(s.row,0);if(s.$fold=r,r){var i=this.session.lineWidgets;s.row!=r.end.row||i[r.start.row]?s.hidden=!0:i[r.start.row]=s}return this.session._emit("changeFold",{data:{start:{row:s.row}}}),this.$updateRows(),this.renderWidgets(null,e),this.onWidgetChanged(s),s},this.removeLineWidget=function(s){if(s._inDocument=!1,s.session=null,s.el&&s.el.parentNode&&s.el.parentNode.removeChild(s.el),s.editor&&s.editor.destroy)try{s.editor.destroy()}catch(e){}if(this.session.lineWidgets){var t=this.session.lineWidgets[s.row];if(t==s)this.session.lineWidgets[s.row]=s.$oldWidget,s.$oldWidget&&this.onWidgetChanged(s.$oldWidget);else for(;t;){if(t.$oldWidget==s){t.$oldWidget=s.$oldWidget;break}t=t.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:s.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(s){for(var t=this.session.lineWidgets,e=t&&t[s],r=[];e;)r.push(e),e=e.$oldWidget;return r},this.onWidgetChanged=function(s){this.session._changedWidgets.push(s),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(s,t){var e=this.session._changedWidgets,r=t.layerConfig;if(e&&e.length){for(var i=1/0,o=0;o<e.length;o++){var n=e[o];if(n&&n.el&&n.session==this.session){if(!n._inDocument){if(this.session.lineWidgets[n.row]!=n)continue;n._inDocument=!0,t.container.appendChild(n.el)}n.h=n.el.offsetHeight,n.fixedWidth||(n.w=n.el.offsetWidth,n.screenWidth=Math.ceil(n.w/r.characterWidth));var h=n.h/r.lineHeight;n.coverLine&&(h-=this.session.getRowLineCount(n.row))<0&&(h=0),n.rowCount!=h&&(n.rowCount=h,n.row<i&&(i=n.row))}}i!=1/0&&(this.session._emit("changeFold",{data:{start:{row:i}}}),this.session.lineWidgetWidth=null),this.session._changedWidgets=[]}},this.renderWidgets=function(s,t){var e=t.layerConfig,r=this.session.lineWidgets;if(r){for(var i=Math.min(this.firstRow,e.firstRow),o=Math.max(this.lastRow,e.lastRow,r.length);i>0&&!r[i];)i--;this.firstRow=e.firstRow,this.lastRow=e.lastRow,t.$cursorLayer.config=e;for(var n=i;n<=o;n++){var h=r[n];if(h&&h.el){if(h.hidden){h.el.style.top=-100-(h.pixelHeight||0)+"px";continue}h._inDocument||(h._inDocument=!0,t.container.appendChild(h.el));var c=t.$cursorLayer.getPixelPosition({row:n,column:0},!0).top;h.coverLine||(c+=e.lineHeight*this.session.getRowLineCount(h.row)),h.el.style.top=c-e.offset+"px";var F=h.coverGutter?0:t.gutterWidth;h.fixedWidth||(F-=t.scrollLeft),h.el.style.left=F+"px",h.fullWidth&&h.screenWidth&&(h.el.style.minWidth=e.width+2*e.padding+"px"),h.el.style.right=h.fixedWidth?t.scrollBar.getWidth()+"px":""}}}}}.call(l.prototype),y.LineWidgets=l}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(w,y,U){"use strict";var $=w("../line_widgets").LineWidgets,A=w("../lib/dom"),m=w("../range").Range;y.showErrorMarker=function(t,e){var r=t.session;r.widgetManager||(r.widgetManager=new $(r),r.widgetManager.attach(t));var i=t.getCursorPosition(),o=i.row,n=r.widgetManager.getWidgetsAtRow(o).filter(function(p){return"errorMarker"==p.type})[0];n?n.destroy():o-=e;var c,h=function(t,e,r){var i=t.getAnnotations().sort(m.comparePoints);if(i.length){var o=function(t,e,r){for(var i=0,o=t.length-1;i<=o;){var n=i+o>>1,h=r(e,t[n]);if(h>0)i=n+1;else{if(!(h<0))return n;o=n-1}}return-(i+1)}(i,{row:e,column:-1},m.comparePoints);o<0&&(o=-o-1),o>=i.length?o=r>0?0:i.length-1:0===o&&r<0&&(o=i.length-1);var n=i[o];if(n&&r){if(n.row===e){do{n=i[o+=r]}while(n&&n.row===e);if(!n)return i.slice()}var h=[];e=n.row;do{h[r<0?"unshift":"push"](n),n=i[o+=r]}while(n&&n.row==e);return h.length&&h}}}(r,o,e);if(h){var F=h[0];i.column=(F.pos&&"number"!=typeof F.column?F.pos.sc:F.column)||0,i.row=F.row,c=t.renderer.$gutterLayer.$annotations[i.row]}else{if(n)return;c={text:["Looks good!"],className:"ace_ok"}}t.session.unfold(i.row),t.selection.moveToPosition(i);var C={row:i.row,fixedWidth:!0,coverGutter:!0,el:A.createElement("div"),type:"errorMarker"},u=C.el.appendChild(A.createElement("div")),g=C.el.appendChild(A.createElement("div"));g.className="error_widget_arrow "+c.className;var a=t.renderer.$cursorLayer.getPixelPosition(i).left;g.style.left=a+t.renderer.gutterWidth-5+"px",C.el.className="error_widget_wrapper",u.className="error_widget "+c.className,u.innerHTML=c.text.join("<br>"),u.appendChild(A.createElement("div"));var f=function(p,E,d){if(0===E&&("esc"===d||"return"===d))return C.destroy(),{command:"null"}};C.destroy=function(){t.$mouseHandler.isMousePressed||(t.keyBinding.removeKeyboardHandler(f),r.widgetManager.removeLineWidget(C),t.off("changeSelection",C.destroy),t.off("changeSession",C.destroy),t.off("mouseup",C.destroy),t.off("change",C.destroy))},t.keyBinding.addKeyboardHandler(f),t.on("changeSelection",C.destroy),t.on("changeSession",C.destroy),t.on("mouseup",C.destroy),t.on("change",C.destroy),t.session.widgetManager.addLineWidget(C),C.el.onmousedown=t.focus.bind(t),t.renderer.scrollCursorIntoView(null,.5,{bottom:C.el.offsetHeight})},A.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/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"],function(w,y,U){"use strict";w("./lib/fixoldbrowsers");var $=w("./lib/dom"),A=w("./lib/event"),m=w("./editor").Editor,l=w("./edit_session").EditSession,s=w("./undomanager").UndoManager,t=w("./virtual_renderer").VirtualRenderer;w("./worker/worker_client"),w("./keyboard/hash_handler"),w("./placeholder"),w("./multi_select"),w("./mode/folding/fold_mode"),w("./theme/textmate"),w("./ext/error_marker"),y.config=w("./config"),y.acequire=w,y.define=ne.amdD,y.edit=function(e){if("string"==typeof e){var r=e;if(!(e=document.getElementById(r)))throw new Error("ace.edit can't find div #"+r)}if(e&&e.env&&e.env.editor instanceof m)return e.env.editor;var i="";if(e&&/input|textarea/i.test(e.tagName)){var o=e;i=o.value,e=$.createElement("pre"),o.parentNode.replaceChild(e,o)}else e&&(i=$.getInnerText(e),e.innerHTML="");var n=y.createEditSession(i),h=new m(new t(e));h.setSession(n);var c={document:n,editor:h,onResize:h.resize.bind(h,null)};return o&&(c.textarea=o),A.addListener(window,"resize",c.onResize),h.on("destroy",function(){A.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),h.container.env=h.env=c,h},y.createEditSession=function(e,r){var i=new l(e,r);return i.setUndoManager(new s),i},y.EditSession=l,y.UndoManager=s,y.version="1.2.9"}),ace.acequire(["ace/ace"],function(w){for(var y in w&&(w.config.init(!0),w.define=ace.define),window.ace||(window.ace=w),w)w.hasOwnProperty(y)&&(window.ace[y]=w[y])}),se.exports=window.ace.acequire("ace/ace")},83977:()=>{ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(se,re,ne){re.isDark=!0,re.cssClass="ace-monokai",re.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}",se("../lib/dom").importCssString(re.cssText,re.cssClass)})},57847:(se,re,ne)=>{"use strict";ne.d(re,{sN:()=>m,Hi:()=>o});var w=ne(42741),$=(ne(42725),ne(83977),function(n,h,c,F){var g,C=arguments.length,u=C<3?h:null===F?F=Object.getOwnPropertyDescriptor(h,c):F;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(n,h,c,F);else for(var a=n.length-1;a>=0;a--)(g=n[a])&&(u=(C<3?g(u):C>3?g(h,c,u):g(h,c))||u);return C>3&&u&&Object.defineProperty(h,c,u),u}),A=function(n,h){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(n,h)},m=function(){function n(h,c){var F=this;this.zone=c,this.textChanged=new w.vpe,this.textChange=new w.vpe,this._options={},this._readOnly=!1,this._theme="monokai",this._mode="html",this._autoUpdateContent=!0,this._durationBeforeCallback=0,this._text="";var C=h.nativeElement;this.zone.runOutsideAngular(function(){F.editor=ace.edit(C)}),this.editor.$blockScrolling=1/0}return n.prototype.ngOnInit=function(){this.init(),this.initEvents()},n.prototype.ngOnDestroy=function(){this.editor.destroy()},n.prototype.init=function(){this.editor.setOptions(this._options||{}),this.editor.setTheme("ace/theme/"+this._theme),this.setMode(this._mode),this.editor.setReadOnly(this._readOnly)},n.prototype.initEvents=function(){var h=this;this.editor.on("change",function(){return h.updateText()}),this.editor.on("paste",function(){return h.updateText()})},n.prototype.updateText=function(){var h=this,c=this.editor.getValue();c!==this.oldText&&(this._durationBeforeCallback?(null!=this.timeoutSaving&&clearTimeout(this.timeoutSaving),this.timeoutSaving=setTimeout(function(){h._text=c,h.zone.run(function(){h.textChange.emit(c),h.textChanged.emit(c)}),h.timeoutSaving=null},this._durationBeforeCallback)):(this._text=c,this.zone.run(function(){h.textChange.emit(c),h.textChanged.emit(c)})),this.oldText=c)},Object.defineProperty(n.prototype,"options",{set:function(h){this._options=h,this.editor.setOptions(h||{})},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"readOnly",{set:function(h){this._readOnly=h,this.editor.setReadOnly(h)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"theme",{set:function(h){this._theme=h,this.editor.setTheme("ace/theme/"+h)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"mode",{set:function(h){this.setMode(h)},enumerable:!0,configurable:!0}),n.prototype.setMode=function(h){this._mode=h,"object"==typeof this._mode?this.editor.getSession().setMode(this._mode):this.editor.getSession().setMode("ace/mode/"+this._mode)},Object.defineProperty(n.prototype,"text",{get:function(){return this._text},set:function(h){this.setText(h)},enumerable:!0,configurable:!0}),n.prototype.setText=function(h){this._text!==h&&(null==h&&(h=""),!0===this._autoUpdateContent&&(this._text=h,this.editor.setValue(h),this.editor.clearSelection()))},Object.defineProperty(n.prototype,"autoUpdateContent",{set:function(h){this._autoUpdateContent=h},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"durationBeforeCallback",{set:function(h){this.setDurationBeforeCallback(h)},enumerable:!0,configurable:!0}),n.prototype.setDurationBeforeCallback=function(h){this._durationBeforeCallback=h},Object.defineProperty(n.prototype,"aceEditor",{get:function(){return this.editor},enumerable:!0,configurable:!0}),$([(0,w.r_U)(),A("design:type",Object)],n.prototype,"textChanged",void 0),$([(0,w.r_U)(),A("design:type",Object)],n.prototype,"textChange",void 0),$([(0,w.IIB)(),A("design:type",Object),A("design:paramtypes",[Object])],n.prototype,"options",null),$([(0,w.IIB)(),A("design:type",Object),A("design:paramtypes",[Object])],n.prototype,"readOnly",null),$([(0,w.IIB)(),A("design:type",Object),A("design:paramtypes",[Object])],n.prototype,"theme",null),$([(0,w.IIB)(),A("design:type",Object),A("design:paramtypes",[Object])],n.prototype,"mode",null),$([(0,w.IIB)(),A("design:type",String),A("design:paramtypes",[String])],n.prototype,"text",null),$([(0,w.IIB)(),A("design:type",Object),A("design:paramtypes",[Object])],n.prototype,"autoUpdateContent",null),$([(0,w.IIB)(),A("design:type",Number),A("design:paramtypes",[Number])],n.prototype,"durationBeforeCallback",null),(n=$([A("design:paramtypes",[w.SBq,w.R0b])],n)).\u0275fac=function(c){return new(c||n)(w.Y36(w.SBq),w.Y36(w.R0b))},n.\u0275dir=w.lG2({type:n,selectors:[["","ace-editor",""]],inputs:{options:"options",readOnly:"readOnly",theme:"theme",mode:"mode",text:"text",autoUpdateContent:"autoUpdateContent",durationBeforeCallback:"durationBeforeCallback"},outputs:{textChanged:"textChanged",textChange:"textChange"}}),n}(),l=ne(93324),s=function(n,h,c,F){var g,C=arguments.length,u=C<3?h:null===F?F=Object.getOwnPropertyDescriptor(h,c):F;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(n,h,c,F);else for(var a=n.length-1;a>=0;a--)(g=n[a])&&(u=(C<3?g(u):C>3?g(h,c,u):g(h,c))||u);return C>3&&u&&Object.defineProperty(h,c,u),u},t=function(n,h){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(n,h)},o=(function(){function n(c,F){var C=this;this.zone=F,this.textChanged=new w.vpe,this.textChange=new w.vpe,this.style={},this._options={},this._readOnly=!1,this._theme="monokai",this._mode="html",this._autoUpdateContent=!0,this._durationBeforeCallback=0,this._text="",this._onChange=function(g){},this._onTouched=function(){};var u=c.nativeElement;this.zone.runOutsideAngular(function(){C._editor=ace.edit(u)}),this._editor.$blockScrolling=1/0}var h;n.prototype.ngOnInit=function(){this.init(),this.initEvents()},n.prototype.ngOnDestroy=function(){this._editor.destroy()},n.prototype.init=function(){this.setOptions(this._options||{}),this.setTheme(this._theme),this.setMode(this._mode),this.setReadOnly(this._readOnly)},n.prototype.initEvents=function(){var c=this;this._editor.on("change",function(){return c.updateText()}),this._editor.on("paste",function(){return c.updateText()})},n.prototype.updateText=function(){var c=this,F=this._editor.getValue();F!==this.oldText&&(this._durationBeforeCallback?(this.timeoutSaving&&clearTimeout(this.timeoutSaving),this.timeoutSaving=setTimeout(function(){c._text=F,c.zone.run(function(){c.textChange.emit(F),c.textChanged.emit(F)}),c.timeoutSaving=null},this._durationBeforeCallback)):(this._text=F,this.zone.run(function(){c.textChange.emit(F),c.textChanged.emit(F)}),this._onChange(F)),this.oldText=F)},Object.defineProperty(n.prototype,"options",{set:function(c){this.setOptions(c)},enumerable:!0,configurable:!0}),n.prototype.setOptions=function(c){this._options=c,this._editor.setOptions(c||{})},Object.defineProperty(n.prototype,"readOnly",{set:function(c){this.setReadOnly(c)},enumerable:!0,configurable:!0}),n.prototype.setReadOnly=function(c){this._readOnly=c,this._editor.setReadOnly(c)},Object.defineProperty(n.prototype,"theme",{set:function(c){this.setTheme(c)},enumerable:!0,configurable:!0}),n.prototype.setTheme=function(c){this._theme=c,this._editor.setTheme("ace/theme/"+c)},Object.defineProperty(n.prototype,"mode",{set:function(c){this.setMode(c)},enumerable:!0,configurable:!0}),n.prototype.setMode=function(c){this._mode=c,"object"==typeof this._mode?this._editor.getSession().setMode(this._mode):this._editor.getSession().setMode("ace/mode/"+this._mode)},Object.defineProperty(n.prototype,"value",{get:function(){return this.text},set:function(c){this.setText(c)},enumerable:!0,configurable:!0}),n.prototype.writeValue=function(c){this.setText(c)},n.prototype.registerOnChange=function(c){this._onChange=c},n.prototype.registerOnTouched=function(c){this._onTouched=c},Object.defineProperty(n.prototype,"text",{get:function(){return this._text},set:function(c){this.setText(c)},enumerable:!0,configurable:!0}),n.prototype.setText=function(c){null==c&&(c=""),this._text!==c&&!0===this._autoUpdateContent&&(this._text=c,this._editor.setValue(c),this._onChange(c),this._editor.clearSelection())},Object.defineProperty(n.prototype,"autoUpdateContent",{set:function(c){this.setAutoUpdateContent(c)},enumerable:!0,configurable:!0}),n.prototype.setAutoUpdateContent=function(c){this._autoUpdateContent=c},Object.defineProperty(n.prototype,"durationBeforeCallback",{set:function(c){this.setDurationBeforeCallback(c)},enumerable:!0,configurable:!0}),n.prototype.setDurationBeforeCallback=function(c){this._durationBeforeCallback=c},n.prototype.getEditor=function(){return this._editor},s([(0,w.r_U)(),t("design:type",Object)],n.prototype,"textChanged",void 0),s([(0,w.r_U)(),t("design:type",Object)],n.prototype,"textChange",void 0),s([(0,w.IIB)(),t("design:type",Object)],n.prototype,"style",void 0),s([(0,w.IIB)(),t("design:type",Object),t("design:paramtypes",[Object])],n.prototype,"options",null),s([(0,w.IIB)(),t("design:type",Object),t("design:paramtypes",[Object])],n.prototype,"readOnly",null),s([(0,w.IIB)(),t("design:type",Object),t("design:paramtypes",[Object])],n.prototype,"theme",null),s([(0,w.IIB)(),t("design:type",Object),t("design:paramtypes",[Object])],n.prototype,"mode",null),s([(0,w.IIB)(),t("design:type",String),t("design:paramtypes",[String])],n.prototype,"value",null),s([(0,w.IIB)(),t("design:type",String),t("design:paramtypes",[String])],n.prototype,"text",null),s([(0,w.IIB)(),t("design:type",Object),t("design:paramtypes",[Object])],n.prototype,"autoUpdateContent",null),s([(0,w.IIB)(),t("design:type",Number),t("design:paramtypes",[Number])],n.prototype,"durationBeforeCallback",null),(n=h=s([t("design:paramtypes",[w.SBq,w.R0b])],n)).\u0275fac=function(F){return new(F||n)(w.Y36(w.SBq),w.Y36(w.R0b))},n.\u0275cmp=w.Xpm({type:n,selectors:[["ace-editor"]],inputs:{style:"style",options:"options",readOnly:"readOnly",theme:"theme",mode:"mode",value:"value",text:"text",autoUpdateContent:"autoUpdateContent",durationBeforeCallback:"durationBeforeCallback"},outputs:{textChanged:"textChanged",textChange:"textChange"},features:[w._Bn([{provide:l.JU,useExisting:(0,w.Gpc)(function(){return h}),multi:!0}])],decls:0,vars:0,template:function(F,C){},styles:["[_nghost-%COMP%] { display:block;width:100%; }"]})}(),function(){function n(){}return n.\u0275fac=function(c){return new(c||n)},n.\u0275mod=w.oAB({type:n}),n.\u0275inj=w.cJS({providers:[],imports:[[]]}),n}())},70334:(se,re,ne)=>{"use strict";ne.d(re,{T:()=>w});class w{constructor(){this.page_size=25,this.page_index=0,this.page_list=[],this.data_size=0,this.page_offset=0,this.cur_list_size=0}setPageSize(U){this.page_size=U}paging(U,$){this.page_index=$,this.page_offset=5*parseInt($/5+"",10),this.cur_list_size=U.length-this.page_offset*this.page_size;let A=parseInt(this.cur_list_size/this.page_size+"",10);A>4&&(A=4),this.cur_list_size%this.page_size!=0&&A++,this.page_list=new Array(A);for(let m=0;m<A;m++)this.page_list[m]=this.page_offset+m+1;return this.data_size=U.length,U.slice(this.page_index*this.page_size,this.page_index*this.page_size+this.page_size)}prev_page(){return this.page_offset<=0?this.page_index:this.page_offset-5}next_page(){return this.cur_list_size<5*this.page_size?this.page_index:this.page_offset+5}check_curpage(U){return this.page_index===U+this.page_offset}}}}]);