src/myams/resources/js/ext/ace/keybinding-vim.min.js
changeset 0 f05d7aea098a
child 5 c9c69b13d884
equal deleted inserted replaced
-1:000000000000 0:f05d7aea098a
       
     1 ace.define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/multi_select"],function(e,t,n){"use strict";function s(e){return{row:e.line,column:e.ch}}function l(e){return new $e(e.row,e.column)}function r(e,t){var n;this==He.keyMap.vim&&He.rmClass(e.getWrapperElement(),"cm-fat-cursor"),(!t||t.attach!=o)&&((n=e).setOption("disableInput",!1),n.off("cursorActivity",ve),He.off(n.getInputField(),"paste",a(n)),n.state.vim=null)}function o(e,t){var n;this==He.keyMap.vim&&He.addClass(e.getWrapperElement(),"cm-fat-cursor"),(!t||t.attach!=o)&&((n=e).setOption("disableInput",!0),n.setOption("showCursorWhenSelecting",!1),He.signal(n,"vim-mode-change",{mode:"normal"}),n.on("cursorActivity",ve),y(n),He.on(n.getInputField(),"paste",a(n)))}function i(e,t){if(t){if(this[e])return this[e];var n=function(e){if("'"==e.charAt(0))return e.charAt(1);var t=e.split(/-(?!$)/),n=t[t.length-1];if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==n.length)return!1;for(var r=!1,o=0;o<t.length;o++){var i=t[o];i in We?t[o]=We[i]:r=!0,i in De&&(t[o]=De[i])}return!!r&&(p(n)&&(t[t.length-1]=n.toLowerCase()),"<"+t.join("-")+">")}(e);if(!n)return!1;var r=He.Vim.findKey(t,n);return"function"==typeof r&&He.signal(t,"vim-keypress",n),r}}function a(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(b(e.getCursor(),0,1)),st.enterInsertMode(e,{},t))}),t.onPasteFn}function c(e,t){for(var n=[],r=e;r<e+t;r++)n.push(String.fromCharCode(r));return n}function m(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function d(e){return/^[a-z]$/.test(e)}function p(e){return/^[A-Z]$/.test(e)}function B(e){return/^\s*$/.test(e)}function g(e,t){for(var n=0;n<t.length;n++)if(t[n]==e)return!0;return!1}function u(e,t,n,r,o){if(void 0===t&&!o)throw Error("defaultValue is required unless callback is provided");if(n||(n="string"),Ye[e]={type:n,defaultValue:t,callback:o},r)for(var i=0;i<r.length;i++)Ye[r[i]]=Ye[e];t&&h(e,t)}function h(e,t,n,r){var o=Ye[e],i=(r=r||{}).scope;if(!o)return new Error("Unknown option: "+e);if("boolean"==o.type){if(t&&!0!==t)return new Error("Invalid argument: "+e+"="+t);!1!==t&&(t=!0)}o.callback?("local"!==i&&o.callback(t,void 0),"global"!==i&&n&&o.callback(t,n)):("local"!==i&&(o.value="boolean"==o.type?!!t:t),"global"!==i&&n&&(n.state.vim.options[e]={value:t}))}function v(e,t,n){var r=Ye[e],o=(n=n||{}).scope;if(!r)return new Error("Unknown option: "+e);if(r.callback){var i=t&&r.callback(void 0,t);return"global"!==o&&void 0!==i?i:"local"!==o?r.callback():void 0}return((i="global"!==o&&t&&t.state.vim.options[e])||"local"!==o&&r||{}).value}function f(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=nt()}function y(e){return e.state.vim||(e.state.vim={inputState:new k,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function C(){for(var e in Ze={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:tt(),macroModeState:new f,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new M({}),searchHistoryController:new S,exCommandHistoryController:new S},Ye){var t=Ye[e];t.value=t.defaultValue}}function k(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function I(e,t){e.state.vim.inputState=new k,He.signal(e,"vim-command-done",t)}function w(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!n}function M(e){this.registers=e,this.unnamedRegister=e['"']=new w,e["."]=new w,e[":"]=new w,e["/"]=new w}function S(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}function x(e,t){for(var n=[],r=0;r<t;r++)n.push(e);return n}function K(e,t,n){var r=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),o=V(e,r)-1;o=n?o+1:o;var i=Math.min(Math.max(0,t.ch),o);return $e(r,i)}function A(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function b(e,t,n){return"object"==typeof t&&(n=t.ch,t=t.line),$e(e.line+t,e.ch+n)}function L(e,t){if("<character>"==t.slice(-11)){var n=t.length-11,r=e.slice(0,n),o=t.slice(0,n);return r==o&&e.length>n?"full":0==o.indexOf(r)&&"partial"}return e==t?"full":0==t.indexOf(e)&&"partial"}function O(t,n,r){return function(){for(var e=0;e<r;e++)n(t)}}function H(e){return $e(e.line,e.ch)}function T(e,t){return e.ch==t.ch&&e.line==t.line}function _(e,t){return e.line<t.line||e.line==t.line&&e.ch<t.ch}function P(e,t){return 2<arguments.length&&(t=P.apply(void 0,Array.prototype.slice.call(arguments,1))),_(e,t)?e:t}function N(e,t){return 2<arguments.length&&(t=N.apply(void 0,Array.prototype.slice.call(arguments,1))),_(e,t)?t:e}function E(e,t,n){var r=_(e,t),o=_(t,n);return r&&o}function V(e,t){return e.getLine(t).length}function R(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function $(e,t){var n=[],r=e.listSelections(),o=H(e.clipPos(t)),i=!T(t,o),a=function(e,t,n){for(var r=0;r<e.length;r++){var o="head"!=n&&T(e[r].anchor,t),i="anchor"!=n&&T(e[r].head,t);if(o||i)return r}return-1}(r,e.getCursor("head")),s=T(r[a].head,r[a].anchor),c=r.length-1,l=a<c-a?c:0,u=r[l].anchor,h=Math.min(u.line,o.line),d=Math.max(u.line,o.line),p=u.ch,f=o.ch,m=r[l].head.ch-p,g=f-p;0<m&&g<=0?(p++,i||f--):m<0&&0<=g?(p--,s||f++):m<0&&-1==g&&(p--,f++);for(var v=h;v<=d;v++){var y={anchor:new $e(v,p),head:new $e(v,f)};n.push(y)}return e.setSelections(n),t.ch=f,u.ch=p,u}function j(e,t,n){for(var r=[],o=0;o<n;o++){var i=b(t,o,0);r.push({anchor:i,head:i})}e.setSelections(r,0)}function W(e,t){var n=t.sel.anchor,r=t.sel.head;t.lastPastedText&&(r=e.posFromIndex(e.indexFromPos(n)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(n),headMark:e.setBookmark(r),anchor:H(n),head:H(r),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function D(e,t,n){var r=e.state.vim,o=F(e,t=t||r.sel,n=n||r.visualLine?"line":r.visualBlock?"block":"char");e.setSelections(o.ranges,o.primary),ye(e)}function F(e,t,n,r){var o=H(t.head),i=H(t.anchor);if("char"==n){var a=r||_(t.head,t.anchor)?0:1,s=_(t.head,t.anchor)?1:0;return o=b(t.head,0,a),{ranges:[{anchor:i=b(t.anchor,0,s),head:o}],primary:0}}if("line"==n){if(_(t.head,t.anchor))o.ch=0,i.ch=V(e,i.line);else{i.ch=0;var c=e.lastLine();o.line>c&&(o.line=c),o.ch=V(e,o.line)}return{ranges:[{anchor:i,head:o}],primary:0}}if("block"==n){for(var l=Math.min(i.line,o.line),u=Math.min(i.ch,o.ch),h=Math.max(i.line,o.line),d=Math.max(i.ch,o.ch)+1,p=h-l+1,f=o.line==l?0:p-1,m=[],g=0;g<p;g++)m.push({anchor:$e(l+g,u),head:$e(l+g,d)});return{ranges:m,primary:f}}}function U(e,t){var n=e.state.vim;!1!==t&&e.setCursor(K(e,n.sel.head)),W(e,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,He.signal(e,"vim-mode-change",{mode:"normal"}),n.fakeCursor&&n.fakeCursor.clear()}function z(e){if(!e)return 0;var t=e.search(/\S/);return-1==t?e.length:t}function J(e,t,n,r,o){for(var i,a,s=(a=(i=e).getCursor("head"),1==i.getSelection().length&&(a=P(a,i.getCursor("anchor"))),a),c=e.getLine(s.line),l=s.ch,u=o?Ue[0]:ze[0];!u(c.charAt(l));)if(++l>=c.length)return null;r?u=ze[0]:(u=Ue[0])(c.charAt(l))||(u=Ue[1]);for(var h=l,d=l;u(c.charAt(h))&&h<c.length;)h++;for(;u(c.charAt(d))&&0<=d;)d--;if(d++,t){for(var p=h;/\s/.test(c.charAt(h))&&h<c.length;)h++;if(p==h){for(var f=d;/\s/.test(c.charAt(d-1))&&0<d;)d--;d||(d=f)}}return{start:$e(s.line,d),end:$e(s.line,h)}}function q(e,t,n){T(t,n)||Ze.jumpList.add(e,t,n)}function Q(e,t){Ze.lastCharacterSearch.increment=e,Ze.lastCharacterSearch.forward=t.forward,Ze.lastCharacterSearch.selectedCharacter=t.selectedCharacter}function G(e,t,n,r,o){var i=t.line,a=t.ch,s=e.getLine(i),c=n?1:-1,l=r?ze:Ue;if(o&&""==s){if(i+=c,s=e.getLine(i),!m(e,i))return null;a=n?0:s.length}for(;;){if(o&&""==s)return{from:0,to:0,line:i};for(var u=0<c?s.length:-1,h=u,d=u;a!=u;){for(var p=!1,f=0;f<l.length&&!p;++f)if(l[f](s.charAt(a))){for(h=a;a!=u&&l[f](s.charAt(a));)a+=c;if(p=h!=(d=a),h==t.ch&&i==t.line&&d==h+c)continue;return{from:Math.min(h,d+1),to:Math.max(h,d),line:i}}p||(a+=c)}if(!m(e,i+=c))return null;s=e.getLine(i),a=0<c?0:s.length}}function X(e,t,n,r){for(var o,i,a,s,c,l,u=e.getCursor(),h=u.ch,d=0;d<t;d++){var p=e.getLine(u.line);if(i=h,a=p,s=r,c=!0,l=void 0,n?-1!=(l=a.indexOf(s,i+1))&&!c&&(l-=1):-1!=(l=a.lastIndexOf(s,i-1))&&!c&&(l+=1),-1==(o=l))return null;h=o}return $e(e.getCursor().line,o)}function Y(e,t,n,r){g(n,Ge)&&(t.marks[n]&&t.marks[n].clear(),t.marks[n]=e.setBookmark(r))}function Z(n,e,t,r,o){function i(e){return!/\S/.test(n.getLine(e))}function a(e,t,n){return n?i(e)!=i(e+t):!i(e)&&i(e+t)}function s(e){r=0<r?1:-1;var t=n.ace.session.getFoldLine(e);t&&e+r>t.start.row&&e+r<t.end.row&&(r=(0<r?t.end.row:t.start.row)-e)}var c,l=e.line,u=n.firstLine(),h=n.lastLine(),d=l;if(r){for(;u<=d&&d<=h&&0<t;)s(d),a(d,r)&&t--,d+=r;return new $e(d,0)}var p=n.state.vim;if(p.visualLine&&a(l,1,!0)){var f=p.sel.anchor;a(f.line,-1,!0)&&(!o||f.line!=l)&&(l+=1)}var m=i(l);for(d=l;d<=h&&t;d++)a(d,1,!0)&&(!o||i(d)!=m)&&t--;for(c=new $e(d,0),h<d&&!m?m=!0:o=!1,d=l;u<d&&(o&&i(d)!=m&&d!=l||!a(d,-1,!0));d--);return{start:new $e(d,0),end:c}}function ee(){}function te(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new ee)}function ne(e,t){var n=re(e,t)||[];if(!n.length)return[];var r=[];if(0===n[0]){for(var o=0;o<n.length;o++)"number"==typeof n[o]&&r.push(e.substring(n[o]+1,n[o+1]));return r}}function re(e,t){t||(t="/");for(var n=!1,r=[],o=0;o<e.length;o++){var i=e.charAt(o);!n&&i==t&&r.push(o),n=!n&&"\\"==i}return r}function oe(e,t,n){if(Ze.registerController.getRegister("/").setText(e),e instanceof RegExp)return e;var r,o,i=re(e,"/");i.length?(r=e.substring(0,i[0]),o=-1!=e.substring(i[0]).indexOf("i")):r=e;return r?(v("pcre")||(r=function(e){for(var t=!1,n=[],r=-1;r<e.length;r++){var o=e.charAt(r)||"",i=e.charAt(r+1)||"",a=i&&-1!="|(){".indexOf(i);t?(("\\"!==o||!a)&&n.push(o),t=!1):"\\"===o?(t=!0,i&&-1!="}".indexOf(i)&&(a=!0),(!a||"\\"===i)&&n.push(o)):(n.push(o),a&&"\\"!==i&&n.push("\\"))}return n.join("")}(r)),n&&(t=/^[^A-Z]*$/.test(r)),new RegExp(r,t||o?"i":void 0)):null}function ie(e,t){e.openNotification?e.openNotification('<span style="color: red">'+t+"</span>",{bottom:!0,duration:5e3}):alert(t)}function ae(e,t){var n,r,o,i,a,s,c,l,u=(t.prefix||"")+" "+(t.desc||""),h=(n=t.prefix,r=t.desc,o='<span style="font-family: monospace; white-space: pre">'+(n||"")+'<input type="text"></span>',r&&(o+=' <span style="color: #888">'+r+"</span>"),o);i=e,a=h,s=u,c=t.onClose,l=t,i.openDialog?i.openDialog(a,c,{bottom:!0,value:l.value,onKeyDown:l.onKeyDown,onKeyUp:l.onKeyUp,selectValueOnOpen:!1,onClose:function(){i.state.vim&&(i.state.vim.status="",i.ace.renderer.$loop.schedule(i.ace.renderer.CHANGE_CURSOR))}}):c(prompt(s,""))}function se(e,t,n,r){if(t){var o=te(e),i=oe(t,!!n,!!r);if(i)return ce(e,i),function(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var n=["global","multiline","ignoreCase","source"],r=0;r<n.length;r++){var o=n[r];if(e[o]!==t[o])return!1}return!0}return!1}(i,o.getQuery())||o.setQuery(i),i}}function ce(e,t){var n=te(e),r=n.getOverlay();r&&t==r.query||(r&&e.removeOverlay(r),r=function(n){if("^"==n.source.charAt(0))var r=!0;return{token:function(e){if(!r||e.sol()){var t=e.match(n,!1);if(t)return 0==t[0].length?(e.next(),"searching"):e.sol()||(e.backUp(1),n.exec(e.next()+t[0]))?(e.match(n),"searching"):(e.next(),null);for(;!e.eol()&&(e.next(),!e.match(n,!1)););}else e.skipToEnd()},query:n}}(t),e.addOverlay(r),e.showMatchesOnScrollbar&&(n.getScrollbarAnnotate()&&n.getScrollbarAnnotate().clear(),n.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),n.setOverlay(r))}function le(o,i,a,s){return void 0===s&&(s=1),o.operation(function(){for(var e=o.getCursor(),t=o.getSearchCursor(a,e),n=0;n<s;n++){var r=t.find(i);if(0==n&&r&&T(t.from(),e)&&(r=t.find(i)),!r&&!(t=o.getSearchCursor(a,i?$e(o.lastLine()):$e(o.firstLine(),0))).find(i))return}return t.from()})}function ue(e){var t=te(e);e.removeOverlay(te(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function he(e){var t=e.ace.renderer;return{top:t.getFirstFullyVisibleRow(),bottom:t.getLastFullyVisibleRow()}}function de(e,t,n){var r=t.marks[n];return r&&r.find()}function pe(e){var t=e.state.vim,n=Ze.macroModeState,r=Ze.registerController.getRegister("."),o=n.isPlaying,i=n.lastInsertModeChanges;o||(e.off("change",ge),He.off(e.getInputField(),"keydown",we)),!o&&1<t.insertModeRepeat&&(Me(e,t,t.insertModeRepeat-1,!0),t.lastEditInputState.repeatOverride=t.insertModeRepeat),delete t.insertModeRepeat,t.insertMode=!1,e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),r.setText(i.changes.join("")),He.signal(e,"vim-mode-change",{mode:"normal"}),n.isRecording&&function(e){if(e.isPlaying)return;var t=e.latestRegister,n=Ze.registerController.getRegister(t);n&&n.pushInsertModeChanges&&n.pushInsertModeChanges(e.lastInsertModeChanges)}(n)}function fe(e){_e.unshift(e)}function me(e,t,n,r){var o=Ze.registerController.getRegister(r);if(":"==r)return o.keyBuffer[0]&&mt.processCommand(e,o.keyBuffer[0]),void(n.isPlaying=!1);var i=o.keyBuffer,a=0;n.isPlaying=!0,n.replaySearchQueries=o.searchQueries.slice(0);for(var s=0;s<i.length;s++)for(var c,l,u=i[s];u;)if(l=(c=/<\w+-.+?>|<\w+>|./.exec(u))[0],u=u.substring(c.index+l.length),He.Vim.handleKey(e,l,"macro"),t.insertMode){var h=o.insertModeChanges[a++].changes;Se(e,Ze.macroModeState.lastInsertModeChanges.changes=h,1),pe(e)}n.isPlaying=!1}function ge(e,t){var n=Ze.macroModeState,r=n.lastInsertModeChanges;if(!n.isPlaying)for(;t;){if(r.expectCursorActivityForChange=!0,1<r.ignoreCount)r.ignoreCount--;else if("+input"==t.origin||"paste"==t.origin||void 0===t.origin){var o=e.listSelections().length;1<o&&(r.ignoreCount=o);var i=t.text.join("\n");r.maybeReset&&(r.changes=[],r.maybeReset=!1),e.state.overwrite&&!/\n/.test(i)?r.changes.push([i]):r.changes.push(i)}t=t.next}}function ve(e){var t=e.state.vim;if(t.insertMode){var n=Ze.macroModeState;if(n.isPlaying)return;var r=n.lastInsertModeChanges;r.expectCursorActivityForChange?r.expectCursorActivityForChange=!1:r.maybeReset=!0}else e.curOp.isVimOp||Ce(e,t);t.visualMode&&ye(e)}function ye(e){var t=e.state.vim,n=K(e,H(t.sel.head)),r=b(n,0,1);t.fakeCursor&&t.fakeCursor.clear(),t.fakeCursor=e.markText(n,r,{className:"cm-animate-fat-cursor"})}function Ce(e,t){var n=e.getCursor("anchor"),r=e.getCursor("head");if(t.visualMode&&!e.somethingSelected()?U(e,!1):!t.visualMode&&!t.insertMode&&e.somethingSelected()&&(t.visualMode=!0,t.visualLine=!1,He.signal(e,"vim-mode-change",{mode:"visual"})),t.visualMode){var o=_(r,n)?0:-1,i=_(r,n)?-1:0;r=b(r,0,o),n=b(n,0,i),t.sel={anchor:n,head:r},Y(e,t,"<",P(r,n)),Y(e,t,">",N(r,n))}else t.insertMode||(t.lastHPos=e.getCursor().ch)}function ke(e){this.keyName=e}function we(e){var t=Ze.macroModeState.lastInsertModeChanges,n=He.keyName(e);n&&(-1!=n.indexOf("Delete")||-1!=n.indexOf("Backspace"))&&He.lookupKey(n,"vim-insert",function(){return t.maybeReset&&(t.changes=[],t.maybeReset=!1),t.changes.push(new ke(n)),!0})}function Me(n,r,e,t){function o(){s?ot.processAction(n,r,r.lastEditActionCommand):ot.evalInput(n,r)}function i(e){if(0<a.lastInsertModeChanges.changes.length){e=r.lastEditActionCommand?e:1;var t=a.lastInsertModeChanges;Se(n,t.changes,e)}}var a=Ze.macroModeState;a.isPlaying=!0;var s=!!r.lastEditActionCommand,c=r.inputState;if(r.inputState=r.lastEditInputState,s&&r.lastEditActionCommand.interlaceInsertRepeat)for(var l=0;l<e;l++)o(),i(1);else t||o(),i(e);r.inputState=c,r.insertMode&&!t&&pe(n),a.isPlaying=!1}function Se(t,e,n){function r(e){return"string"==typeof e?He.commands[e](t):e(t),!0}var o,i,a=t.getCursor("head"),s=Ze.macroModeState.lastInsertModeChanges.inVisualBlock;if(s){var c=t.state.vim.lastSelection,l=(o=c.anchor,{line:(i=c.head).line-o.line,ch:i.line-o.line});j(t,a,l.line+1),n=t.listSelections().length,t.setCursor(a)}for(var u=0;u<n;u++){s&&t.setCursor(b(a,u,0));for(var h=0;h<e.length;h++){var d=e[h];if(d instanceof ke)He.lookupKey(d.keyName,"vim-insert",r);else if("string"==typeof d){var p=t.getCursor();t.replaceRange(d,p,p)}else{var f=t.getCursor(),m=b(f,0,d[0].length);t.replaceRange(d[0],f,m)}}}s&&t.setCursor(b(a,0,1))}function xe(n){var r=new n.constructor;return Object.keys(n).forEach(function(e){var t=n[e];Array.isArray(t)?t=t.slice():t&&"object"==typeof t&&t.constructor!=Object&&(t=xe(t)),r[e]=t}),n.sel&&(r.sel={head:n.sel.head&&H(n.sel.head),anchor:n.sel.anchor&&H(n.sel.anchor)}),r}function Ae(e,t){t.off("beforeEndOperation",Ae);var n=t.state.cm.vimCmd;n&&t.execCommand(n.exec?n:n.name,n.args),t.curOp=t.prevOp}var be=e("../range").Range,Le=e("../lib/event_emitter").EventEmitter,Oe=e("../lib/dom"),Te=e("../lib/oop"),Ee=e("../lib/keys"),Re=e("../lib/event"),Be=e("../search").Search,Ie=e("../lib/useragent"),Ke=e("../search_highlight").SearchHighlight,Pe=e("../commands/multi_select_commands"),Ne=e("../mode/text").Mode.prototype.tokenRe;e("../multi_select");var He=function(e){this.ace=e,this.state={},this.marks={},this.$uid=0,this.onChange=this.onChange.bind(this),this.onSelectionChange=this.onSelectionChange.bind(this),this.onBeforeEndOperation=this.onBeforeEndOperation.bind(this),this.ace.on("change",this.onChange),this.ace.on("changeSelection",this.onSelectionChange),this.ace.on("beforeEndOperation",this.onBeforeEndOperation)};He.Pos=function(e,t){if(!(this instanceof $e))return new $e(e,t);this.line=e,this.ch=t},He.defineOption=function(e,t,n){},He.commands={redo:function(e){e.ace.redo()},undo:function(e){e.ace.undo()},newlineAndIndent:function(e){e.ace.insert("\n")}},He.keyMap={},He.addClass=He.rmClass=function(){},He.e_stop=He.e_preventDefault=Re.stopEvent,He.keyName=function(e){var t=Ee[e.keyCode]||e.key||"";return 1==t.length&&(t=t.toUpperCase()),t=Re.getModifierString(e).replace(/(^|-)\w/g,function(e){return e.toUpperCase()})+t},He.keyMap.default=function(n){return function(e){var t=e.ace.commands.commandKeyBinding[n.toLowerCase()];return t&&!1!==e.ace.execCommand(t)}},He.lookupKey=function e(t,n,r){"string"==typeof n&&(n=He.keyMap[n]);var o="function"==typeof n?n(t):n[t];if(!1===o)return"nothing";if("..."===o)return"multi";if(null!=o&&r(o))return"handled";if(n.fallthrough){if(!Array.isArray(n.fallthrough))return e(t,n.fallthrough,r);for(var i=0;i<n.fallthrough.length;i++){var a=e(t,n.fallthrough[i],r);if(a)return a}}},He.signal=function(e,t,n){return e._signal(t,n)},He.on=Re.addListener,He.off=Re.removeListener,He.isWordChar=function(e){return e<""?/^\w$/.test(e):(Ne.lastIndex=0,Ne.test(e))},function(){Te.implement(He.prototype,Le),this.destroy=function(){this.ace.off("change",this.onChange),this.ace.off("changeSelection",this.onSelectionChange),this.ace.off("beforeEndOperation",this.onBeforeEndOperation),this.removeOverlay()},this.virtualSelectionMode=function(){return this.ace.inVirtualSelectionMode&&this.ace.selection.index},this.onChange=function(e){var t={text:"i"==e.action[0]?e.lines:[]},n=this.curOp=this.curOp||{};n.changeHandlers||(n.changeHandlers=this._eventRegistry.change&&this._eventRegistry.change.slice()),n.lastChange?n.lastChange.next=n.lastChange=t:n.lastChange=n.change=t,this.$updateMarkers(e)},this.onSelectionChange=function(){var e=this.curOp=this.curOp||{};e.cursorActivityHandlers||(e.cursorActivityHandlers=this._eventRegistry.cursorActivity&&this._eventRegistry.cursorActivity.slice()),this.curOp.cursorActivity=!0,this.ace.inMultiSelectMode&&this.ace.keyBinding.removeKeyboardHandler(Pe.keyboardHandler)},this.operation=function(e,t){if(!t&&this.curOp||t&&this.curOp&&this.curOp.force)return e();if((t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation(),!this.ace.curOp){var n=this.ace.prevOp;this.ace.startOperation({command:{name:"vim",scrollIntoView:"cursor"}})}var r=this.curOp=this.curOp||{};this.curOp.force=t;var o=e();return this.ace.curOp&&"vim"==this.ace.curOp.command.name&&(this.state.dialog&&(this.ace.curOp.command.scrollIntoView=!1),this.ace.endOperation(),!r.cursorActivity&&!r.lastChange&&n&&(this.ace.prevOp=n)),(t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation(),o},this.onBeforeEndOperation=function(){var e=this.curOp;e&&(e.change&&this.signal("change",e.change,e),e&&e.cursorActivity&&this.signal("cursorActivity",null,e),this.curOp=null)},this.signal=function(e,t,n){var r=n?n[e+"Handlers"]:(this._eventRegistry||{})[e];if(r){r=r.slice();for(var o=0;o<r.length;o++)r[o](this,t)}},this.firstLine=function(){return 0},this.lastLine=function(){return this.ace.session.getLength()-1},this.lineCount=function(){return this.ace.session.getLength()},this.setCursor=function(e,t){"object"==typeof e&&(t=e.ch,e=e.line),this.ace.inVirtualSelectionMode||this.ace.exitMultiSelectMode(),this.ace.session.unfold({row:e,column:t}),this.ace.selection.moveTo(e,t)},this.getCursor=function(e){var t=this.ace.selection;return l("anchor"==e?t.isEmpty()?t.lead:t.anchor:"head"!=e&&e?t.getRange()[e]:t.lead)},this.listSelections=function(e){var t=this.ace.multiSelect.rangeList.ranges;return!t.length||this.ace.inVirtualSelectionMode?[{anchor:this.getCursor("anchor"),head:this.getCursor("head")}]:t.map(function(e){return{anchor:this.clipPos(l(e.cursor==e.end?e.start:e.end)),head:this.clipPos(l(e.cursor))}},this)},this.setSelections=function(e,t){var n=this.ace.multiSelect,r=e.map(function(e){var t=s(e.anchor),n=s(e.head),r=be.comparePoints(t,n)<0?new be.fromPoints(t,n):new be.fromPoints(n,t);return r.cursor=be.comparePoints(r.start,n)?r.end:r.start,r});if(this.ace.inVirtualSelectionMode)this.ace.selection.fromOrientedRange(r[0]);else{t?r[t]&&r.push(r.splice(t,1)[0]):r=r.reverse(),n.toSingleRange(r[0].clone());for(var o=this.ace.session,i=0;i<r.length;i++){var a=o.$clipRangeToDocument(r[i]);n.addRange(a)}}},this.setSelection=function(e,t,n){var r=this.ace.selection;r.moveTo(e.line,e.ch),r.selectTo(t.line,t.ch),n&&"*mouse"==n.origin&&this.onBeforeEndOperation()},this.somethingSelected=function(e){return!this.ace.selection.isEmpty()},this.clipPos=function(e){return l(this.ace.session.$clipPositionToDocument(e.line,e.ch))},this.markText=function(e){return{clear:function(){},find:function(){}}},this.$updateMarkers=function(e){var t="insert"==e.action,n=e.start,r=e.end,o=(r.row-n.row)*(t?1:-1),i=(r.column-n.column)*(t?1:-1);for(var a in t&&(r=n),this.marks){var s=this.marks[a],c=be.comparePoints(s,n);if(!(c<0)){if(0===c&&t){if(1!=s.bias){s.bias=-1;continue}c=1}var l=t?c:be.comparePoints(s,r);0<l?(s.row+=o,s.column+=s.row==r.row?i:0):!t&&l<=0&&(s.row=n.row,s.column=n.column,0===l&&(s.bias=1))}}};var r=function(e,t,n,r){this.cm=e,this.id=t,this.row=n,this.column=r,e.marks[this.id]=this};r.prototype.clear=function(){delete this.cm.marks[this.id]},r.prototype.find=function(){return l(this)},this.setBookmark=function(e,t){var n=new r(this,this.$uid++,e.line,e.ch);return t&&t.insertLeft||(n.$insertRight=!0),this.marks[n.id]=n},this.moveH=function(e,t){if("char"==t){var n=this.ace.selection;n.clearSelection(),n.moveCursorBy(0,e)}},this.findPosV=function(e,t,n,r){if("page"==n){var o=this.ace.renderer.layerConfig;t*=Math.floor(o.height/o.lineHeight),n="line"}if("line"==n){var i=this.ace.session.documentToScreenPosition(e.line,e.ch);return null!=r&&(i.column=r),i.row+=t,i.row=Math.min(Math.max(0,i.row),this.ace.session.getScreenLength()-1),l(this.ace.session.screenToDocumentPosition(i.row,i.column))}},this.charCoords=function(e,t){if("div"==t||!t)return{left:(r=this.ace.session.documentToScreenPosition(e.line,e.ch)).column,top:r.row};if("local"==t){var n=this.ace.renderer,r=this.ace.session.documentToScreenPosition(e.line,e.ch),o=n.layerConfig.lineHeight,i=n.layerConfig.characterWidth,a=o*r.row;return{left:r.column*i,top:a,bottom:a+o}}},this.coordsChar=function(e,t){var n=this.ace.renderer;if("local"==t){var r=Math.max(0,Math.floor(e.top/n.lineHeight)),o=Math.max(0,Math.floor(e.left/n.characterWidth));return l(n.session.screenToDocumentPosition(r,o))}if("div"==t)throw"not implemented"},this.getSearchCursor=function(n,e,t){var r=!1,o=!1;n instanceof RegExp&&!n.global&&(r=!n.ignoreCase,n=n.source,o=!0);var i=new Be;null==e.ch&&(e.ch=Number.MAX_VALUE);var a={row:e.line,column:e.ch},s=this,c=null;return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){i.setOptions({needle:n,caseSensitive:r,wrap:!1,backwards:e,regExp:o,start:c||a});var t=i.find(s.ace.session);return t&&t.isEmpty()&&s.getLine(t.start.row).length==t.start.column&&(i.$options.start=t,t=i.find(s.ace.session)),c=t},from:function(){return c&&l(c.start)},to:function(){return c&&l(c.end)},replace:function(e){c&&(c.end=s.ace.session.doc.replace(c,e))}}},this.scrollTo=function(e,t){var n=this.ace.renderer,r=n.layerConfig,o=r.maxHeight;o-=(n.$size.scrollerHeight-n.lineHeight)*n.$scrollPastEnd,null!=t&&this.ace.session.setScrollTop(Math.max(0,Math.min(t,o))),null!=e&&this.ace.session.setScrollLeft(Math.max(0,Math.min(e,r.width)))},this.scrollInfo=function(){return 0},this.scrollIntoView=function(e,t){if(e){var n=this.ace.renderer,r={top:0,bottom:t};n.scrollCursorIntoView(s(e),2*n.lineHeight/n.$size.scrollerHeight,r)}},this.getLine=function(e){return this.ace.session.getLine(e)},this.getRange=function(e,t){return this.ace.session.getTextRange(new be(e.line,e.ch,t.line,t.ch))},this.replaceRange=function(e,t,n){return n||(n=t),this.ace.session.replace(new be(t.line,t.ch,n.line,n.ch),e)},this.replaceSelections=function(e){var t=this.ace.selection;if(this.ace.inVirtualSelectionMode)this.ace.session.replace(t.getRange(),e[0]||"");else{t.inVirtualSelectionMode=!0;var n=t.rangeList.ranges;n.length||(n=[this.ace.multiSelect.getRange()]);for(var r=n.length;r--;)this.ace.session.replace(n[r],e[r]||"");t.inVirtualSelectionMode=!1}},this.getSelection=function(){return this.ace.getSelectedText()},this.getSelections=function(){return this.listSelections().map(function(e){return this.getRange(e.anchor,e.head)},this)},this.getInputField=function(){return this.ace.textInput.getElement()},this.getWrapperElement=function(){return this.ace.containter};var o={indentWithTabs:"useSoftTabs",indentUnit:"tabSize",tabSize:"tabSize",firstLineNumber:"firstLineNumber",readOnly:"readOnly"};this.setOption=function(e,t){switch(this.state[e]=t,e){case"indentWithTabs":e=o[e],t=!t;break;default:e=o[e]}e&&this.ace.setOption(e,t)},this.getOption=function(e,t){var n=o[e];switch(n&&(t=this.ace.getOption(n)),e){case"indentWithTabs":return e=o[e],!t}return n?t:this.state[e]},this.toggleOverwrite=function(e){return this.state.overwrite=e,this.ace.setOverwrite(e)},this.addOverlay=function(e){if(!this.$searchHighlight||!this.$searchHighlight.session){var n=new Ke(null,"ace_highlight-marker","text"),t=this.ace.session.addDynamicMarker(n);n.id=t.id,n.session=this.ace.session,n.destroy=function(e){n.session.off("change",n.updateOnChange),n.session.off("changeEditor",n.destroy),n.session.removeMarker(n.id),n.session=null},n.updateOnChange=function(e){var t=e.start.row;t==e.end.row?n.cache[t]=void 0:n.cache.splice(t,n.cache.length)},n.session.on("changeEditor",n.destroy),n.session.on("change",n.updateOnChange)}var r=new RegExp(e.query.source,"gmi");this.$searchHighlight=e.highlight=n,this.$searchHighlight.setRegexp(r),this.ace.renderer.updateBackMarkers()},this.removeOverlay=function(e){this.$searchHighlight&&this.$searchHighlight.session&&this.$searchHighlight.destroy()},this.getScrollInfo=function(){var e=this.ace.renderer,t=e.layerConfig;return{left:e.scrollLeft,top:e.scrollTop,height:t.maxHeight,width:t.width,clientHeight:t.height,clientWidth:t.width}},this.getValue=function(){return this.ace.getValue()},this.setValue=function(e){return this.ace.setValue(e)},this.getTokenTypeAt=function(e){var t=this.ace.session.getTokenAt(e.line,e.ch);return t&&/comment|string/.test(t.type)?"string":""},this.findMatchingBracket=function(e){var t=this.ace.session.findMatchingBracket(s(e));return{to:t&&l(t)}},this.indentLine=function(e,t){!0===t?this.ace.session.indentRows(e,e,"\t"):!1===t&&this.ace.session.outdentRows(new be(e,0,e,0))},this.indexFromPos=function(e){return this.ace.session.doc.positionToIndex(s(e))},this.posFromIndex=function(e){return l(this.ace.session.doc.indexToPosition(e))},this.focus=function(e){return this.ace.textInput.focus()},this.blur=function(e){return this.ace.blur()},this.defaultTextHeight=function(e){return this.ace.renderer.layerConfig.lineHeight},this.scanForBracket=function(e,t,n,r){var o=r.bracketRegex.source;if(1==t)var i=this.ace.session.$findClosingBracket(o.slice(1,2),s(e),/paren|text/);else i=this.ace.session.$findOpeningBracket(o.slice(-2,-1),{row:e.line,column:e.ch+1},/paren|text/);return i&&{pos:l(i)}},this.refresh=function(){return this.ace.resize(!0)},this.getMode=function(){return{name:this.getOption("mode")}}}.call(He.prototype),(He.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0}).prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if("string"==typeof e)var n=t==e;else n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){for(var t=this.pos;this.eat(e););return this.pos>t},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(-1<t)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(e,t,n){if("string"!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&0<r.index?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var o=function(e){return n?e.toLowerCase():e};if(o(this.string.substr(this.pos,e.length))==o(e))return!1!==t&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}},He.defineExtension=function(e,t){He.prototype[e]=t},Oe.importCssString(".normal-mode .ace_cursor{    border: none;    background-color: rgba(255,0,0,0.5);}.normal-mode .ace_hidden-cursors .ace_cursor{  background-color: transparent;  border: 1px solid red;  opacity: 0.7}.ace_dialog {  position: absolute;  left: 0; right: 0;  background: inherit;  z-index: 15;  padding: .1em .8em;  overflow: hidden;  color: inherit;}.ace_dialog-top {  border-bottom: 1px solid #444;  top: 0;}.ace_dialog-bottom {  border-top: 1px solid #444;  bottom: 0;}.ace_dialog input {  border: none;  outline: none;  background: transparent;  width: 20em;  color: inherit;  font-family: monospace;}","vimMode"),function(){function l(e,t,n){var r;return(r=e.ace.container.appendChild(document.createElement("div"))).className=n?"ace_dialog ace_dialog-bottom":"ace_dialog ace_dialog-top","string"==typeof t?r.innerHTML=t:r.appendChild(t),r}function u(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}He.defineExtension("openDialog",function(e,t,n){function r(e){if("string"==typeof e)c.value=e;else{if(a)return;if(e&&"blur"==e.type&&document.activeElement===c)return;s.state.dialog=null,a=!0,i.parentNode.removeChild(i),s.focus(),n.onClose&&n.onClose(i)}}if(!this.virtualSelectionMode()){n||(n={}),u(this,null);var o,i=l(this,e,n.bottom),a=!1,s=this,c=(this.state.dialog=i).getElementsByTagName("input")[0];return c?(n.value&&(c.value=n.value,!1!==n.selectValueOnOpen&&c.select()),n.onInput&&He.on(c,"input",function(e){n.onInput(e,c.value,r)}),n.onKeyUp&&He.on(c,"keyup",function(e){n.onKeyUp(e,c.value,r)}),He.on(c,"keydown",function(e){n&&n.onKeyDown&&n.onKeyDown(e,c.value,r)||(13==e.keyCode&&t(c.value),(27==e.keyCode||!1!==n.closeOnEnter&&13==e.keyCode)&&(c.blur(),He.e_stop(e),r()))}),!1!==n.closeOnBlur&&He.on(c,"blur",r),c.focus()):(o=i.getElementsByTagName("button")[0])&&(He.on(o,"click",function(){r(),s.focus()}),!1!==n.closeOnBlur&&He.on(o,"blur",r),o.focus()),r}}),He.defineExtension("openNotification",function(e,t){function n(){i||(i=!0,clearTimeout(r),o.parentNode.removeChild(o))}if(!this.virtualSelectionMode()){u(this,n);var r,o=l(this,e,t&&t.bottom),i=!1,a=t&&void 0!==t.duration?t.duration:5e3;return He.on(o,"click",function(e){He.e_preventDefault(e),n()}),a&&(r=setTimeout(n,a)),n}})}();var _e=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],Ve=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],$e=He.Pos,je=function(){return rt};He.defineOption("vimMode",!1,function(e,t,n){t&&"vim"!=e.getOption("keyMap")?e.setOption("keyMap","vim"):!t&&n!=He.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")});var We={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A"},De={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"},Fe=/[\d]/,Ue=[He.isWordChar,function(e){return e&&!He.isWordChar(e)&&!/\s/.test(e)}],ze=[function(e){return/\S/.test(e)}],Je=c(65,26),qe=c(97,26),Qe=c(48,10),Ge=[].concat(Je,qe,Qe,["<",">"]),Xe=[].concat(Je,qe,Qe,["-",'"',".",":","/"]),Ye={};u("filetype",void 0,"string",["ft"],function(e,t){if(void 0!==t){if(void 0===e)return"null"==(n=t.getOption("mode"))?"":n;var n=""==e?"null":e;t.setOption("mode",n)}});var Ze,et,tt=function(){var a=100,s=-1,c=0,l=0,u=new Array(a);return{cachedCursor:void 0,add:function(r,e,t){function n(e){var t=++s%a,n=u[t];n&&n.clear(),u[t]=r.setBookmark(e)}var o=u[s%a];if(o){var i=o.find();i&&!T(i,e)&&n(e)}else n(e);n(t),(l=(c=s)-a+1)<0&&(l=0)},move:function(e,t){c<(s+=t)?s=c:s<l&&(s=l);var n=u[(a+s)%a];if(n&&!n.find()){var r,o=0<t?1:-1,i=e.getCursor();do{if((n=u[(a+(s+=o))%a])&&(r=n.find())&&!T(i,r))break}while(s<c&&l<s)}return n}}},nt=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}},rt={buildKeyMap:function(){},getRegisterController:function(){return Ze.registerController},resetVimGlobalState_:C,getVimGlobalState_:function(){return Ze},maybeInitVimState_:y,suppressErrorLogging:!(f.prototype={exitMacroRecordMode:function(){var e=Ze.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var n=Ze.registerController.getRegister(t);n&&(n.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}}),InsertModeKey:ke,map:function(e,t,n){mt.map(e,t,n)},unmap:function(e,t){mt.unmap(e,t)},setOption:h,getOption:v,defineOption:u,defineEx:function(e,t,n){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered')}else t=e;ft[e]=n,mt.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,n){var r=this.findKey(e,t,n);if("function"==typeof r)return r()},findKey:function(s,c,t){function o(){var e=Ze.macroModeState;if(e.isRecording){if("q"==c)return e.exitMacroRecordMode(),I(s),!0;"mapping"!=t&&function(e,t){if(!e.isPlaying){var n=e.latestRegister,r=Ze.registerController.getRegister(n);r&&r.pushText(t)}}(e,c)}}function l(){if("<Esc>"==c)return I(s),u.visualMode?U(s):u.insertMode&&pe(s),!0}var e,u=y(s);return!1===(e=u.insertMode?function(){if(l())return!0;for(var e=u.inputState.keyBuffer=u.inputState.keyBuffer+c,t=1==c.length,n=ot.matchCommand(e,_e,u.inputState,"insert");1<e.length&&"full"!=n.type;){e=u.inputState.keyBuffer=e.slice(1);var r=ot.matchCommand(e,_e,u.inputState,"insert");"none"!=r.type&&(n=r)}if("none"==n.type)return I(s),!1;if("partial"==n.type)return et&&window.clearTimeout(et),et=window.setTimeout(function(){u.insertMode&&u.inputState.keyBuffer&&I(s)},v("insertModeEscKeysTimeout")),!t;if(et&&window.clearTimeout(et),t){for(var o=s.listSelections(),i=0;i<o.length;i++){var a=o[i].head;s.replaceRange("",b(a,0,-(e.length-1)),a,"+input")}Ze.macroModeState.lastInsertModeChanges.changes.pop()}return I(s),n.command}():function(){if(o()||l())return!0;var e=u.inputState.keyBuffer=u.inputState.keyBuffer+c;if(/^[1-9]\d*$/.test(e))return!0;if(!(t=/^(\d*)(.*)$/.exec(e)))return I(s),!1;var t,n=u.visualMode?"visual":"normal",r=ot.matchCommand(t[2]||t[1],_e,u.inputState,n);return"none"==r.type?(I(s),!1):"partial"==r.type||(u.inputState.keyBuffer="",(t=/^(\d*)(.*)$/.exec(e))[1]&&"0"!=t[1]&&u.inputState.pushRepeatDigit(t[1]),r.command)}())?void 0:!0===e?function(){return!0}:function(){if(!e.operator&&!e.isEdit||!s.getOption("readOnly"))return s.operation(function(){s.curOp.isVimOp=!0;try{"keyToKey"==e.type?function(e){for(var t;e;)t=/<\w+-.+?>|<\w+>|./.exec(e),c=t[0],e=e.substring(t.index+c.length),He.Vim.handleKey(s,c,"mapping")}(e.toKeys):ot.processCommand(s,u,e)}catch(e){throw s.state.vim=void 0,y(s),He.Vim.suppressErrorLogging||console.log(e),e}return!0})}},handleEx:function(e,t){mt.processCommand(e,t)},defineMotion:function(e,t){it[e]=t},defineAction:function(e,t){st[e]=t},defineOperator:function(e,t){at[e]=t},mapCommand:function(e,t,n,r,o){var i={keys:e,type:t};for(var a in i[t]=n,i[t+"Args"]=r,o)i[a]=o[a];fe(i)},_mapCommand:fe,defineRegister:function(e,t){var n=Ze.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");n[e]=t,Xe.push(e)},exitVisualMode:U,exitInsertMode:pe};k.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},k.prototype.getRepeat=function(){var e=0;return(0<this.prefixRepeat.length||0<this.motionRepeat.length)&&(e=1,0<this.prefixRepeat.length&&(e*=parseInt(this.prefixRepeat.join(""),10)),0<this.motionRepeat.length&&(e*=parseInt(this.motionRepeat.join(""),10))),e},w.prototype={setText:function(e,t,n){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!n},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(nt(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},M.prototype={pushText:function(e,t,n,r,o){r&&"\n"!==n.charAt(n.length-1)&&(n+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(i){p(e)?i.pushText(n,r):i.setText(n,r,o),this.unnamedRegister.setText(i.toString(),r)}else{switch(t){case"yank":this.registers[0]=new w(n,r,o);break;case"delete":case"change":-1==n.indexOf("\n")?this.registers["-"]=new w(n,r):(this.shiftNumericRegisters_(),this.registers[1]=new w(n,r))}this.unnamedRegister.setText(n,r,o)}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new w),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&g(e,Xe)},shiftNumericRegisters_:function(){for(var e=9;2<=e;e--)this.registers[e]=this.getRegister(""+(e-1))}},S.prototype={nextMatch:function(e,t){var n=this.historyBuffer,r=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+r;t?0<=o:o<n.length;o+=r)for(var i=n[o],a=0;a<=i.length;a++)if(this.initialPrefix==i.substring(0,a))return this.iterator=o,i;return o>=n.length?(this.iterator=n.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);-1<t&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var ot={matchCommand:function(e,t,n,r){var o,i=function(e,t,n,r){for(var o,i=[],a=[],s=0;s<t.length;s++){var c=t[s];"insert"==n&&"insert"!=c.context||c.context&&c.context!=n||r.operator&&"action"==c.type||!(o=L(e,c.keys))||("partial"==o&&i.push(c),"full"==o&&a.push(c))}return{partial:i.length&&i,full:a.length&&a}}(e,t,r,n);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};for(var a=0;a<i.full.length;a++){var s=i.full[a];o||(o=s)}if("<character>"==o.keys.slice(-11)){var c=function(e){var t=/^.*(<[^>]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(1<n.length)switch(n){case"<CR>":n="\n";break;case"<Space>":n=" ";break;default:n=""}return n}(e);if(/<C-.>/.test(c))return{type:"none"};n.selectedCharacter=c}return{type:"full",command:o}},processCommand:function(e,t,n){switch(t.inputState.repeatOverride=n.repeatOverride,n.type){case"motion":this.processMotion(e,t,n);break;case"operator":this.processOperator(e,t,n);break;case"operatorMotion":this.processOperatorMotion(e,t,n);break;case"action":this.processAction(e,t,n);break;case"search":this.processSearch(e,t,n);break;case"ex":case"keyToEx":this.processEx(e,t,n)}},processMotion:function(e,t,n){t.inputState.motion=n.motion,t.inputState.motionArgs=A(n.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,n){var r=t.inputState;if(r.operator){if(r.operator==n.operator)return r.motion="expandToLine",r.motionArgs={linewise:!0},void this.evalInput(e,t);I(e)}r.operator=n.operator,r.operatorArgs=A(n.operatorArgs),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,n){var r=t.visualMode,o=A(n.operatorMotionArgs);o&&r&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,n),r||this.processMotion(e,t,n)},processAction:function(e,t,n){var r=t.inputState,o=r.getRepeat(),i=!!o,a=A(n.actionArgs)||{};r.selectedCharacter&&(a.selectedCharacter=r.selectedCharacter),n.operator&&this.processOperator(e,t,n),n.motion&&this.processMotion(e,t,n),(n.motion||n.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=r.registerName,I(e),t.lastMotion=null,n.isEdit&&this.recordLastEdit(t,r,n),st[n.action](e,a,t)},processSearch:function(s,r,o){function n(t,e,n){Ze.searchHistoryController.pushInput(t),Ze.searchHistoryController.reset();try{se(s,t,e,n)}catch(e){return ie(s,"Invalid regex: "+t),void I(s)}ot.processMotion(s,r,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:o.searchArgs.toJumplist}})}if(s.getSearchCursor){var c=o.searchArgs.forward,e=o.searchArgs.wholeWordOnly;te(s).setReversed(!c);var t=c?"/":"?",i=te(s).getQuery(),l=s.getScrollInfo();switch(o.searchArgs.querySrc){case"prompt":var a=Ze.macroModeState;if(a.isPlaying)n(d=a.replaySearchQueries.shift(),!0,!1);else ae(s,{onClose:function(e){n(e,!0,!0);var t=Ze.macroModeState;t.isRecording&&function(e,t){if(!e.isPlaying){var n=e.latestRegister,r=Ze.registerController.getRegister(n);r&&r.pushSearchQuery&&r.pushSearchQuery(t)}}(t,e)},prefix:t,desc:dt,onKeyUp:function(e,t,n){var r,o,i,a=He.keyName(e);"Up"==a||"Down"==a?(r="Up"==a,o=e.target?e.target.selectionEnd:0,n(t=Ze.searchHistoryController.nextMatch(t,r)||""),o&&e.target&&(e.target.selectionEnd=e.target.selectionStart=Math.min(o,e.target.value.length))):"Left"!=a&&"Right"!=a&&"Ctrl"!=a&&"Alt"!=a&&"Shift"!=a&&Ze.searchHistoryController.reset();try{i=se(s,t,!0,!0)}catch(e){}i?s.scrollIntoView(le(s,!c,i),30):(ue(s),s.scrollTo(l.left,l.top))},onKeyDown:function(e,t,n){var r=He.keyName(e);"Esc"==r||"Ctrl-C"==r||"Ctrl-["==r||"Backspace"==r&&""==t?(Ze.searchHistoryController.pushInput(t),Ze.searchHistoryController.reset(),se(s,i),ue(s),s.scrollTo(l.left,l.top),He.e_stop(e),I(s),n(),s.focus()):"Up"==r||"Down"==r?He.e_stop(e):"Ctrl-U"==r&&(He.e_stop(e),n(""))}});break;case"wordUnderCursor":var u=J(s,!1,0,!1,!0),h=!0;if(u||(u=J(s,!1,0,!1,!1),h=!1),!u)return;var d=s.getLine(u.start.line).substring(u.start.ch,u.end.ch);h&&e?d="\\b"+d+"\\b":d=d.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1"),Ze.jumpList.cachedCursor=s.getCursor(),s.setCursor(u.start),n(d,!0,!1)}}},processEx:function(a,e,t){function n(e){Ze.exCommandHistoryController.pushInput(e),Ze.exCommandHistoryController.reset(),mt.processCommand(a,e)}function r(e,t,n){var r,o,i=He.keyName(e);("Esc"==i||"Ctrl-C"==i||"Ctrl-["==i||"Backspace"==i&&""==t)&&(Ze.exCommandHistoryController.pushInput(t),Ze.exCommandHistoryController.reset(),He.e_stop(e),I(a),n(),a.focus()),"Up"==i||"Down"==i?(He.e_stop(e),r="Up"==i,o=e.target?e.target.selectionEnd:0,n(t=Ze.exCommandHistoryController.nextMatch(t,r)||""),o&&e.target&&(e.target.selectionEnd=e.target.selectionStart=Math.min(o,e.target.value.length))):"Ctrl-U"==i?(He.e_stop(e),n("")):"Left"!=i&&"Right"!=i&&"Ctrl"!=i&&"Alt"!=i&&"Shift"!=i&&Ze.exCommandHistoryController.reset()}"keyToEx"==t.type?mt.processCommand(a,t.exArgs.input):e.visualMode?ae(a,{onClose:n,prefix:":",value:"'<,'>",onKeyDown:r,selectValueOnOpen:!1}):ae(a,{onClose:n,prefix:":",onKeyDown:r})},evalInput:function(e,t){var n,r,o,i,a=t.inputState,s=a.motion,c=a.motionArgs||{},l=a.operator,u=a.operatorArgs||{},h=a.registerName,d=t.sel,p=H(t.visualMode?K(e,d.head):e.getCursor("head")),f=H(t.visualMode?K(e,d.anchor):e.getCursor("anchor")),m=H(p),g=H(f);if(l&&this.recordLastEdit(t,a),0<(o=void 0!==a.repeatOverride?a.repeatOverride:a.getRepeat())&&c.explicitRepeat?c.repeatIsExplicit=!0:(c.noRepeat||!c.explicitRepeat&&0===o)&&(o=1,c.repeatIsExplicit=!1),a.selectedCharacter&&(c.selectedCharacter=u.selectedCharacter=a.selectedCharacter),c.repeat=o,I(e),s){var v=it[s](e,p,c,t);if(t.lastMotion=it[s],!v)return;if(c.toJumplist){!l&&null!=e.ace.curOp&&(e.ace.curOp.command.scrollIntoView="center-animate");var y=Ze.jumpList,C=y.cachedCursor;C?(q(e,C,v),delete y.cachedCursor):q(e,p,v)}v instanceof Array?(r=v[0],n=v[1]):n=v,n||(n=H(p)),t.visualMode?(t.visualBlock&&n.ch===1/0||(n=K(e,n,t.visualBlock)),r&&(r=K(e,r,!0)),r=r||g,d.anchor=r,d.head=n,D(e),Y(e,t,"<",_(r,n)?r:n),Y(e,t,">",_(r,n)?n:r)):l||(n=K(e,n),e.setCursor(n.line,n.ch))}if(l){if(u.lastSel){r=g;var k=u.lastSel,w=Math.abs(k.head.line-k.anchor.line),M=Math.abs(k.head.ch-k.anchor.ch);n=k.visualLine?$e(g.line+w,g.ch):k.visualBlock?$e(g.line+w,g.ch+M):k.head.line==k.anchor.line?$e(g.line,g.ch+M):$e(g.line+w,g.ch),t.visualMode=!0,t.visualLine=k.visualLine,t.visualBlock=k.visualBlock,d=t.sel={anchor:r,head:n},D(e)}else t.visualMode&&(u.lastSel={anchor:H(d.anchor),head:H(d.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var S,x,A,b,L;if(t.visualMode){if(S=P(d.head,d.anchor),x=N(d.head,d.anchor),A=t.visualLine||u.linewise,L=F(e,{anchor:S,head:x},b=t.visualBlock?"block":A?"line":"char"),A){var O=L.ranges;if("block"==b)for(var T=0;T<O.length;T++)O[T].head.ch=V(e,O[T].head.line);else"line"==b&&(O[0].head=$e(O[0].head.line+1,0))}}else{if(S=H(r||g),_(x=H(n||m),S)){var E=S;S=x,x=E}(A=c.linewise||u.linewise)?(i=x,S.ch=0,i.ch=0,i.line++):c.forward&&function(e,t,n){var r=e.getRange(t,n);if(/\n\s*$/.test(r)){var o=r.split("\n");o.pop();for(var i=o.pop();0<o.length&&i&&B(i);i=o.pop())n.line--,n.ch=0;i?(n.line--,n.ch=V(e,n.line)):n.ch=0}}(e,S,x),L=F(e,{anchor:S,head:x},b="char",!c.inclusive||A)}e.setSelections(L.ranges,L.primary),t.lastMotion=null,u.repeat=o,u.registerName=h,u.linewise=A;var R=at[l](e,u,L.ranges,g,n);t.visualMode&&U(e,null!=R),R&&e.setCursor(R)}},recordLastEdit:function(e,t,n){var r=Ze.macroModeState;r.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=n,r.lastInsertModeChanges.changes=[],r.lastInsertModeChanges.expectCursorActivityForChange=!1)}},it={moveToTopLine:function(e,t,n){var r=he(e).top+n.repeat-1;return $e(r,z(e.getLine(r)))},moveToMiddleLine:function(e){var t=he(e),n=Math.floor(.5*(t.top+t.bottom));return $e(n,z(e.getLine(n)))},moveToBottomLine:function(e,t,n){var r=he(e).bottom-n.repeat+1;return $e(r,z(e.getLine(r)))},expandToLine:function(e,t,n){return $e(t.line+n.repeat-1,1/0)},findNext:function(e,t,n){var r=te(e),o=r.getQuery();if(o){var i=!n.forward;return i=r.isReversed()?!i:i,ce(e,o),le(e,i,o,n.repeat)}},goToMark:function(e,t,n,r){var o=de(0,r,n.selectedCharacter);return o?n.linewise?{line:o.line,ch:z(e.getLine(o.line))}:o:null},moveToOtherHighlightedEnd:function(e,t,n,r){if(r.visualBlock&&n.sameLine){var o=r.sel;return[K(e,$e(o.anchor.line,o.head.ch)),K(e,$e(o.head.line,o.anchor.ch))]}return[r.sel.head,r.sel.anchor]},jumpToMark:function(e,t,n,r){for(var o=t,i=0;i<n.repeat;i++){var a=o;for(var s in r.marks)if(d(s)){var c=r.marks[s].find();if(!((n.forward?_(c,a):_(a,c))||n.linewise&&c.line==a.line)){var l=T(a,o),u=n.forward?E(a,c,o):E(o,c,a);(l||u)&&(o=c)}}}return n.linewise&&(o=$e(o.line,z(e.getLine(o.line)))),o},moveByCharacters:function(e,t,n){var r=t,o=n.repeat,i=n.forward?r.ch+o:r.ch-o;return $e(r.line,i)},moveByLines:function(e,t,n,r){var o=t,i=o.ch;switch(r.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:i=r.lastHPos;break;default:r.lastHPos=i}var a=n.repeat+(n.repeatOffset||0),s=n.forward?o.line+a:o.line-a,c=e.firstLine(),l=e.lastLine();if(s<c&&o.line==c)return this.moveToStartOfLine(e,t,n,r);if(l<s&&o.line==l)return this.moveToEol(e,t,n,r);var u=e.ace.session.getFoldLine(s);return u&&(n.forward?s>u.start.row&&(s=u.end.row+1):s=u.start.row),n.toFirstChar&&(i=z(e.getLine(s)),r.lastHPos=i),r.lastHSPos=e.charCoords($e(s,i),"div").left,$e(s,i)},moveByDisplayLines:function(e,t,n,r){var o=t;switch(r.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:r.lastHSPos=e.charCoords(o,"div").left}var i=n.repeat;if((s=e.findPosV(o,n.forward?i:-i,"line",r.lastHSPos)).hitSide)if(n.forward)var a={top:e.charCoords(s,"div").top+8,left:r.lastHSPos},s=e.coordsChar(a,"div");else{var c=e.charCoords($e(e.firstLine(),0),"div");c.left=r.lastHSPos,s=e.coordsChar(c,"div")}return r.lastHPos=s.ch,s},moveByPage:function(e,t,n){var r=t,o=n.repeat;return e.findPosV(r,n.forward?o:-o,"page")},moveByParagraph:function(e,t,n){var r=n.forward?1:-1;return Z(e,t,n.repeat,r)},moveByScroll:function(e,t,n,r){var o=e.getScrollInfo(),i=null,a=n.repeat;a||(a=o.clientHeight/(2*e.defaultTextHeight()));var s=e.charCoords(t,"local");if(n.repeat=a,!(i=it.moveByDisplayLines(e,t,n,r)))return null;var c=e.charCoords(i,"local");return e.scrollTo(null,o.top+c.top-s.top),i},moveByWords:function(e,t,n){return function(e,t,n,r,o,i){var a=H(t),s=[];(r&&!o||!r&&o)&&n++;for(var c=!r||!o,l=0;l<n;l++){var u=G(e,t,r,i,c);if(!u){var h=V(e,e.lastLine());s.push(r?{line:e.lastLine(),from:h,to:h}:{line:0,from:0,to:0});break}s.push(u),t=$e(u.line,r?u.to-1:u.from)}var d=s.length!=n,p=s[0],f=s.pop();return r&&!o?(!d&&(p.from!=a.ch||p.line!=a.line)&&(f=s.pop()),$e(f.line,f.from)):r&&o?$e(f.line,f.to-1):!r&&o?(!d&&(p.to!=a.ch||p.line!=a.line)&&(f=s.pop()),$e(f.line,f.to)):$e(f.line,f.from)}(e,t,n.repeat,!!n.forward,!!n.wordEnd,!!n.bigWord)},moveTillCharacter:function(e,t,n){var r=X(e,n.repeat,n.forward,n.selectedCharacter),o=n.forward?-1:1;return Q(o,n),r?(r.ch+=o,r):null},moveToCharacter:function(e,t,n){var r=n.repeat;return Q(0,n),X(e,r,n.forward,n.selectedCharacter)||t},moveToSymbol:function(e,t,n){return function(e,t,n,r){var o=H(e.getCursor()),i=n?1:-1,a=n?e.lineCount():-1,s=o.ch,c=o.line,l=e.getLine(c),u={lineText:l,nextCh:l.charAt(s),lastCh:null,index:s,symb:r,reverseSymb:(n?{")":"(","}":"{"}:{"(":")","{":"}"})[r],forward:n,depth:0,curMoveThrough:!1},h=ct[r];if(!h)return o;var d=lt[h].init,p=lt[h].isComplete;for(d&&d(u);c!==a&&t;){if(u.index+=i,u.nextCh=u.lineText.charAt(u.index),!u.nextCh){if(c+=i,u.lineText=e.getLine(c)||"",0<i)u.index=0;else{var f=u.lineText.length;u.index=0<f?f-1:0}u.nextCh=u.lineText.charAt(u.index)}p(u)&&(o.line=c,o.ch=u.index,t--)}return u.nextCh||u.curMoveThrough?$e(c,u.index):o}(e,n.repeat,n.forward,n.selectedCharacter)||t},moveToColumn:function(e,t,n,r){var o,i,a,s=n.repeat;return r.lastHPos=s-1,r.lastHSPos=e.charCoords(t,"div").left,i=s,a=(o=e).getCursor().line,K(o,$e(a,i-1))},moveToEol:function(e,t,n,r){var o=t;r.lastHPos=1/0;var i=$e(o.line+n.repeat-1,1/0),a=e.clipPos(i);return a.ch--,r.lastHSPos=e.charCoords(a,"div").left,i},moveToFirstNonWhiteSpaceCharacter:function(e,t){var n=t;return $e(n.line,z(e.getLine(n.line)))},moveToMatchedSymbol:function(e,t){var n,r=t,o=r.line,i=r.ch,a=e.getLine(o);do{if((n=a.charAt(i++))&&-1!="()[]{}".indexOf(n)){var s=e.getTokenTypeAt($e(o,i));if("string"!==s&&"comment"!==s)break}}while(n);return n?e.findMatchingBracket($e(o,i)).to:r},moveToStartOfLine:function(e,t){return $e(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var r=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(r=n.repeat-e.getOption("firstLineNumber")),$e(r,z(e.getLine(r)))},textObjectManipulation:function(e,t,n,r){var o=n.selectedCharacter;"b"==o?o="(":"B"==o&&(o="{");var i,a,s,c,l,u,h,d,p=!n.textObjectInner;if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"["}[o])i=function(e,t,n,r){var o,i,a=t,s={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[n],c={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[n],l=e.getLine(a.line).charAt(a.ch)===c?1:0;if(o=e.scanForBracket($e(a.line,a.ch+l),-1,null,{bracketRegex:s}),i=e.scanForBracket($e(a.line,a.ch+l),1,null,{bracketRegex:s}),!o||!i)return{start:a,end:a};if(o=o.pos,i=i.pos,o.line==i.line&&o.ch>i.ch||o.line>i.line){var u=o;o=i,i=u}return r?i.ch+=1:o.ch+=1,{start:o,end:i}}(e,t,o,p);else if({"'":!0,'"':!0}[o])i=function(e,t,n,r){var o,i,a,s,c=H(t),l=e.getLine(c.line).split(""),u=l.indexOf(n);if(c.ch<u?c.ch=u:u<c.ch&&l[c.ch]==n&&(i=c.ch,--c.ch),l[c.ch]!=n||i)for(a=c.ch;-1<a&&!o;a--)l[a]==n&&(o=a+1);else o=c.ch+1;if(o&&!i)for(a=o,s=l.length;a<s&&!i;a++)l[a]==n&&(i=a);return o&&i?(r&&(--o,++i),{start:$e(c.line,o),end:$e(c.line,i)}):{start:c,end:c}}(e,t,o,p);else if("W"===o)i=J(e,p,0,!0);else if("w"===o)i=J(e,p,0,!1);else{if("p"!==o)return null;if(i=Z(e,t,n.repeat,0,p),n.linewise=!0,r.visualMode)r.visualLine||(r.visualLine=!0);else{var f=r.inputState.operatorArgs;f&&(f.linewise=!0),i.end.line--}}return e.state.vim.visualMode?(a=e,s=i.start,c=i.end,u=a.state.vim.sel,h=u.head,d=u.anchor,_(c,s)&&(l=c,c=s,s=l),_(h,d)?(h=P(s,h),d=N(d,c)):(d=P(s,d),-1==(h=b(h=N(h,c),0,-1)).ch&&h.line!=a.firstLine()&&(h=$e(h.line-1,V(a,h.line-1)))),[d,h]):[i.start,i.end]},repeatLastCharacterSearch:function(e,t,n){var r=Ze.lastCharacterSearch,o=n.repeat,i=n.forward===r.forward,a=(r.increment?1:0)*(i?-1:1);e.moveH(-a,"char"),n.inclusive=!!i;var s=X(e,o,i,r.selectedCharacter);return s?(s.ch+=a,s):(e.moveH(a,"char"),t)}},at={change:function(e,t,n){var r,o,i=e.state.vim;if(Ze.macroModeState.lastInsertModeChanges.inVisualBlock=i.visualBlock,i.visualMode){o=e.getSelection();var a=x("",n.length);e.replaceSelections(a),r=P(n[0].head,n[0].anchor)}else{var s=n[0].anchor,c=n[0].head;o=e.getRange(s,c);var l=i.lastEditInputState||{};if("moveByWords"==l.motion&&!B(o)){var u=/\s+$/.exec(o);u&&l.motionArgs&&l.motionArgs.forward&&(c=b(c,0,-u[0].length),o=o.slice(0,-u[0].length))}var h=new $e(s.line-1,Number.MAX_VALUE),d=e.firstLine()==e.lastLine();c.line>e.lastLine()&&t.linewise&&!d?e.replaceRange("",h,c):e.replaceRange("",s,c),t.linewise&&(d||(e.setCursor(h),He.commands.newlineAndIndent(e)),s.ch=Number.MAX_VALUE),r=s}Ze.registerController.pushText(t.registerName,"change",o,t.linewise,1<n.length),st.enterInsertMode(e,{head:r},e.state.vim)},delete:function(e,t,n){var r,o,i=e.state.vim;if(i.visualBlock){o=e.getSelection();var a=x("",n.length);e.replaceSelections(a),r=n[0].anchor}else{var s=n[0].anchor,c=n[0].head;t.linewise&&c.line!=e.firstLine()&&s.line==e.lastLine()&&s.line==c.line-1&&(s.line==e.firstLine()?s.ch=0:s=$e(s.line-1,V(e,s.line-1))),o=e.getRange(s,c),e.replaceRange("",s,c),r=s,t.linewise&&(r=it.moveToFirstNonWhiteSpaceCharacter(e,s))}return Ze.registerController.pushText(t.registerName,"delete",o,t.linewise,i.visualBlock),K(e,r,i.insertMode)},indent:function(e,t,n){var r=e.state.vim,o=n[0].anchor.line,i=r.visualBlock?n[n.length-1].anchor.line:n[0].head.line,a=r.visualMode?t.repeat:1;t.linewise&&i--;for(var s=o;s<=i;s++)for(var c=0;c<a;c++)e.indentLine(s,t.indentRight);return it.moveToFirstNonWhiteSpaceCharacter(e,n[0].anchor)},changeCase:function(e,t,n,r,o){for(var i=e.getSelections(),a=[],s=t.toLower,c=0;c<i.length;c++){var l=i[c],u="";if(!0===s)u=l.toLowerCase();else if(!1===s)u=l.toUpperCase();else for(var h=0;h<l.length;h++){var d=l.charAt(h);u+=p(d)?d.toLowerCase():d.toUpperCase()}a.push(u)}return e.replaceSelections(a),t.shouldMoveCursor?o:!e.state.vim.visualMode&&t.linewise&&n[0].anchor.line+1==n[0].head.line?it.moveToFirstNonWhiteSpaceCharacter(e,r):t.linewise?r:P(n[0].anchor,n[0].head)},yank:function(e,t,n,r){var o=e.state.vim,i=e.getSelection(),a=o.visualMode?P(o.sel.anchor,o.sel.head,n[0].head,n[0].anchor):r;return Ze.registerController.pushText(t.registerName,"yank",i,t.linewise,o.visualBlock),a}},st={jumpListWalk:function(e,t,n){if(!n.visualMode){var r=t.repeat,o=t.forward,i=Ze.jumpList.move(e,o?r:-r),a=i?i.find():void 0;a=a||e.getCursor(),e.setCursor(a),e.ace.curOp.command.scrollIntoView="center-animate"}},scroll:function(e,t,n){if(!n.visualMode){var r=t.repeat||1,o=e.defaultTextHeight(),i=e.getScrollInfo().top,a=o*r,s=t.forward?i+a:i-a,c=H(e.getCursor()),l=e.charCoords(c,"local");if(t.forward)s>l.top?(c.line+=(s-l.top)/o,c.line=Math.ceil(c.line),e.setCursor(c),l=e.charCoords(c,"local"),e.scrollTo(null,l.top)):e.scrollTo(null,s);else{var u=s+e.getScrollInfo().clientHeight;u<l.bottom?(c.line-=(l.bottom-u)/o,c.line=Math.floor(c.line),e.setCursor(c),l=e.charCoords(c,"local"),e.scrollTo(null,l.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,s)}}},scrollToCursor:function(e,t){var n=e.getCursor().line,r=e.charCoords($e(n,0),"local"),o=e.getScrollInfo().clientHeight,i=r.top,a=r.bottom-i;switch(t.position){case"center":i=i-o/2+a;break;case"bottom":i=i-o+1.4*a;break;case"top":i+=.4*a}e.scrollTo(null,i)},replayMacro:function(e,t,n){var r=t.selectedCharacter,o=t.repeat,i=Ze.macroModeState;for("@"==r&&(r=i.latestRegister);o--;)me(e,n,i,r)},enterMacroRecordMode:function(e,t){var n=Ze.macroModeState,r=t.selectedCharacter;Ze.registerController.isValidRegister(r)&&n.enterMacroRecordMode(e,r)},toggleOverwrite:function(e){e.state.overwrite?(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),He.signal(e,"vim-mode-change",{mode:"insert"})):(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),He.signal(e,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(e,t,n){if(!e.getOption("readOnly")){n.insertMode=!0,n.insertModeRepeat=t&&t.repeat||1;var r=t?t.insertAt:null,o=n.sel,i=t.head||e.getCursor("head"),a=e.listSelections().length;if("eol"==r)i=$e(i.line,V(e,i.line));else if("charAfter"==r)i=b(i,0,1);else if("firstNonBlank"==r)i=it.moveToFirstNonWhiteSpaceCharacter(e,i);else if("startOfSelectedArea"==r)n.visualBlock?(i=$e(Math.min(o.head.line,o.anchor.line),Math.min(o.head.ch,o.anchor.ch)),a=Math.abs(o.head.line-o.anchor.line)+1):i=o.head.line<o.anchor.line?o.head:$e(o.anchor.line,0);else if("endOfSelectedArea"==r)n.visualBlock?(i=$e(Math.min(o.head.line,o.anchor.line),Math.max(o.head.ch+1,o.anchor.ch)),a=Math.abs(o.head.line-o.anchor.line)+1):i=o.head.line>=o.anchor.line?b(o.head,0,1):$e(o.anchor.line,0);else if("inplace"==r&&n.visualMode)return;e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),He.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),He.signal(e,"vim-mode-change",{mode:"insert"})),Ze.macroModeState.isPlaying||(e.on("change",ge),He.on(e.getInputField(),"keydown",we)),n.visualMode&&U(e),j(e,i,a)}},toggleVisualMode:function(e,t,n){var r,o=t.repeat,i=e.getCursor();n.visualMode?n.visualLine^t.linewise||n.visualBlock^t.blockwise?(n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,He.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),D(e)):U(e):(n.visualMode=!0,n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,r=K(e,$e(i.line,i.ch+o-1),!0),n.sel={anchor:i,head:r},He.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),D(e),Y(e,n,"<",P(i,r)),Y(e,n,">",N(i,r)))},reselectLastSelection:function(e,t,n){var r=n.lastSelection;if(n.visualMode&&W(e,n),r){var o=r.anchorMark.find(),i=r.headMark.find();if(!o||!i)return;n.sel={anchor:o,head:i},n.visualMode=!0,n.visualLine=r.visualLine,n.visualBlock=r.visualBlock,D(e),Y(e,n,"<",P(o,i)),Y(e,n,">",N(o,i)),He.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,n){var r,o;if(n.visualMode){if(r=e.getCursor("anchor"),_(o=e.getCursor("head"),r)){var i=o;o=r,r=i}o.ch=V(e,o.line)-1}else{var a=Math.max(t.repeat,2);r=e.getCursor(),o=K(e,$e(r.line+a-1,1/0))}for(var s=0,c=r.line;c<o.line;c++){s=V(e,r.line);i=$e(r.line+1,V(e,r.line+1));var l=e.getRange(r,i);l=l.replace(/\n\s*/g," "),e.replaceRange(l,r,i)}var u=$e(r.line,s);n.visualMode&&U(e,!1),e.setCursor(u)},newLineAndEnterInsertMode:function(e,t,n){n.insertMode=!0;var r=H(e.getCursor());r.line!==e.firstLine()||t.after?(r.line=t.after?r.line:r.line-1,r.ch=V(e,r.line),e.setCursor(r),(He.commands.newlineAndIndentContinueComment||He.commands.newlineAndIndent)(e)):(e.replaceRange("\n",$e(e.firstLine(),0)),e.setCursor(e.firstLine(),0));this.enterInsertMode(e,{repeat:t.repeat},n)},paste:function(r,e,t){var n=H(r.getCursor()),o=Ze.registerController.getRegister(e.registerName);if(d=o.toString()){if(e.matchIndent){var i=r.getOption("tabSize"),a=function(e){var t=e.split("\t").length-1,n=e.split(" ").length-1;return t*i+1*n},s=r.getLine(r.getCursor().line),c=a(s.match(/^\s*/)[0]),l=d.replace(/\n$/,""),u=d!==l,h=a(d.match(/^\s*/)[0]),d=l.replace(/^\s*/gm,function(e){var t=c+(a(e)-h);if(t<0)return"";if(r.getOption("indentWithTabs")){var n=Math.floor(t/i);return Array(n+1).join("\t")}return Array(t+1).join(" ")});d+=u?"\n":""}if(1<e.repeat)d=Array(e.repeat+1).join(d);var p,f,m,g,v,y,C,k,w,M,S,x,A,b=o.linewise,L=o.blockwise;if(b&&!L)t.visualMode?d=t.visualLine?d.slice(0,-1):"\n"+d.slice(0,d.length-1)+"\n":e.after?(d="\n"+d.slice(0,d.length-1),n.ch=V(r,n.line)):n.ch=0;else{if(L){d=d.split("\n");for(var O=0;O<d.length;O++)d[O]=""==d[O]?" ":d[O]}n.ch+=e.after?1:0}if(t.visualMode){t.lastPastedText=d;var T,E=(k=r,A=(w=t).lastSelection,w.visualMode?(M=k.listSelections(),S=M[0],x=M[M.length-1],[_(S.anchor,S.head)?S.anchor:S.head,_(x.anchor,x.head)?x.head:x.anchor]):function(){var e=k.getCursor(),t=k.getCursor(),n=A.visualBlock;if(n){var r=n.width,o=n.height;t=$e(e.line+o,e.ch+r);for(var i=[],a=e.line;a<t.line;a++){var s={anchor:$e(a,e.ch),head:$e(a,t.ch)};i.push(s)}k.setSelections(i)}else{var c=A.anchorMark.find(),l=A.headMark.find(),u=l.line-c.line,h=l.ch-c.ch;t={line:t.line+u,ch:u?t.ch:h+t.ch},A.visualLine&&(e=$e(e.line,0),t=$e(t.line,V(k,t.line))),k.setSelection(e,t)}return[e,t]}()),R=E[0],B=E[1],I=r.getSelection(),K=r.listSelections(),P=new Array(K.length).join("1").split("1");t.lastSelection&&(T=t.lastSelection.headMark.find()),Ze.registerController.unnamedRegister.setText(I),L?(r.replaceSelections(P),B=$e(R.line+d.length-1,R.ch),r.setCursor(R),$(r,B),r.replaceSelections(d),p=R):t.visualBlock?(r.replaceSelections(P),r.setCursor(R),r.replaceRange(d,R,R),p=R):(r.replaceRange(d,R,B),p=r.posFromIndex(r.indexFromPos(R)+d.length-1)),T&&(t.lastSelection.headMark=r.setBookmark(T)),b&&(p.ch=0)}else if(L){r.setCursor(n);for(O=0;O<d.length;O++){var N=n.line+O;N>r.lastLine()&&r.replaceRange("\n",$e(N,0)),V(r,N)<n.ch&&(m=r,g=N,v=n.ch,void 0,y=V(m,g),C=new Array(v-y+1).join(" "),m.setCursor($e(g,y)),m.replaceRange(C,m.getCursor()))}r.setCursor(n),$(r,$e(n.line+d.length-1,n.ch)),r.replaceSelections(d),p=n}else r.replaceRange(d,n),b&&e.after?p=$e(n.line+1,z(r.getLine(n.line+1))):b&&!e.after?p=$e(n.line,z(r.getLine(n.line))):!b&&e.after?(f=r.indexFromPos(n),p=r.posFromIndex(f+d.length-1)):(f=r.indexFromPos(n),p=r.posFromIndex(f+d.length));t.visualMode&&U(r,!1),r.setCursor(p)}},undo:function(e,t){e.operation(function(){O(e,He.commands.undo,t.repeat)(),e.setCursor(e.getCursor("anchor"))})},redo:function(e,t){O(e,He.commands.redo,t.repeat)()},setRegister:function(e,t,n){n.inputState.registerName=t.selectedCharacter},setMark:function(e,t,n){Y(e,n,t.selectedCharacter,e.getCursor())},replace:function(e,t,n){var r,o,i=t.selectedCharacter,a=e.getCursor(),s=e.listSelections();if(n.visualMode)a=e.getCursor("start"),o=e.getCursor("end");else{var c=e.getLine(a.line);(r=a.ch+t.repeat)>c.length&&(r=c.length),o=$e(a.line,r)}if("\n"==i)n.visualMode||e.replaceRange("",a,o),(He.commands.newlineAndIndentContinueComment||He.commands.newlineAndIndent)(e);else{var l=e.getRange(a,o);if(l=l.replace(/[^\n]/g,i),n.visualBlock){var u=new Array(e.getOption("tabSize")+1).join(" ");l=(l=e.getSelection()).replace(/\t/g,u).replace(/[^\n]/g,i).split("\n"),e.replaceSelections(l)}else e.replaceRange(l,a,o);n.visualMode?(a=_(s[0].anchor,s[0].head)?s[0].anchor:s[0].head,e.setCursor(a),U(e,!1)):e.setCursor(b(o,0,-1))}},incrementNumberToken:function(e,t){for(var n,r,o,i,a=e.getCursor(),s=e.getLine(a.line),c=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(n=c.exec(s))&&(o=(r=n.index)+n[0].length,!(a.ch<o)););if((t.backtrack||!(o<=a.ch))&&n){var l=n[2]||n[4],u=n[3]||n[5],h=t.increase?1:-1,d={"0b":2,0:8,"":10,"0x":16}[l.toLowerCase()];i=(parseInt(n[1]+u,d)+h*t.repeat).toString(d);var p=l?new Array(u.length-i.length+1+n[1].length).join("0"):"";i="-"===i.charAt(0)?"-"+l+p+i.substr(1):l+p+i;var f=$e(a.line,r),m=$e(a.line,o);e.replaceRange(i,f,m),e.setCursor($e(a.line,r+i.length-1))}},repeatLastEdit:function(e,t,n){if(n.lastEditInputState){var r=t.repeat;r&&t.repeatIsExplicit?n.lastEditInputState.repeatOverride=r:r=n.lastEditInputState.repeatOverride||r,Me(e,n,r,!1)}},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:pe},ct={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},lt={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,1<=e.depth)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};u("pcre",!0,"boolean"),ee.prototype={getQuery:function(){return Ze.query},setQuery:function(e){Ze.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return Ze.isReversed},setReversed:function(e){Ze.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var ut={"\\n":"\n","\\r":"\r","\\t":"\t"},ht={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t"},dt="(Javascript regexp)",pt=function(){this.buildCommandMap_()};pt.prototype={processCommand:function(e,t,n){var r=this;e.operation(function(){e.curOp.isVimOp=!0,r._processCommand(e,t,n)})},_processCommand:function(t,e,n){var r=t.state.vim,o=Ze.registerController.getRegister(":"),i=o.toString();r.visualMode&&U(t);var a=new He.StringStream(e);o.setText(e);var s,c,l=n||{};l.input=e;try{this.parseInput_(t,a,l)}catch(e){throw ie(t,e),e}if(l.commandName){if(s=this.matchCommand_(l.commandName)){if(c=s.name,s.excludeFromCommandHistory&&o.setText(i),this.parseCommandArgs_(a,l,s),"exToKey"==s.type){for(var u=0;u<s.toKeys.length;u++)He.Vim.handleKey(t,s.toKeys[u],"mapping");return}if("exToEx"==s.type)return void this.processCommand(t,s.toInput)}}else void 0!==l.line&&(c="move");if(c)try{ft[c](t,l),(!s||!s.possiblyAsync)&&l.callback&&l.callback()}catch(e){throw ie(t,e),e}else ie(t,'Not an editor command ":'+e+'"')},parseInput_:function(e,t,n){t.eatWhile(":"),t.eat("%")?(n.line=e.firstLine(),n.lineEnd=e.lastLine()):(n.line=this.parseLineSpec_(e,t),void 0!==n.line&&t.eat(",")&&(n.lineEnd=this.parseLineSpec_(e,t)));var r=t.match(/^(\w+)/);return n.commandName=r?r[1]:t.match(/.*/)[0],n},parseLineSpec_:function(e,t){var n=t.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var r=t.next(),o=de(0,e.state.vim,r);if(!o)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,o.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var n=e.match(/^([+-])?(\d+)/);if(n){var r=parseInt(n[2],10);"-"==n[1]?t-=r:t+=r}return t},parseCommandArgs_:function(e,t,n){if(!e.eol()){t.argString=e.match(/.*/)[0];var r=n.argDelimiter||/\s+/,o=R(t.argString).split(r);o.length&&o[0]&&(t.args=o)}},matchCommand_:function(e){for(var t=e.length;0<t;t--){var n=e.substring(0,t);if(this.commandMap_[n]){var r=this.commandMap_[n];if(0===r.name.indexOf(e))return r}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<Ve.length;e++){var t=Ve[e],n=t.shortName||t.name;this.commandMap_[n]=t}},map:function(e,t,n){if(":"!=e&&":"==e.charAt(0)){if(n)throw Error("Mode not supported for ex mappings");var r=e.substring(1);":"!=t&&":"==t.charAt(0)?this.commandMap_[r]={name:r,type:"exToEx",toInput:t.substring(1),user:!0}:this.commandMap_[r]={name:r,type:"exToKey",toKeys:t,user:!0}}else if(":"!=t&&":"==t.charAt(0)){var o={keys:e,type:"keyToEx",exArgs:{input:t.substring(1)}};n&&(o.context=n),_e.unshift(o)}else{o={keys:e,type:"keyToKey",toKeys:t};n&&(o.context=n),_e.unshift(o)}},unmap:function(e,t){if(":"!=e&&":"==e.charAt(0)){if(t)throw Error("Mode not supported for ex mappings");var n=e.substring(1);if(this.commandMap_[n]&&this.commandMap_[n].user)return void delete this.commandMap_[n]}else for(var r=e,o=0;o<_e.length;o++)if(r==_e[o].keys&&_e[o].context===t)return void _e.splice(o,1)}};var ft={colorscheme:function(e,t){!t.args||t.args.length<1?ie(e,e.getOption("theme")):e.setOption("theme",t.args[0])},map:function(e,t,n){var r=t.args;!r||r.length<2?e&&ie(e,"Invalid mapping: "+t.input):mt.map(r[0],r[1],n)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,n){var r=t.args;!r||r.length<1?e&&ie(e,"No such mapping: "+t.input):mt.unmap(r[0],n)},move:function(e,t){ot.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var n=t.args,r=t.setCfg||{};if(!n||n.length<1)e&&ie(e,"Invalid mapping: "+t.input);else{var o=n[0].split("="),i=o[0],a=o[1],s=!1;if("?"==i.charAt(i.length-1)){if(a)throw Error("Trailing characters: "+t.argString);i=i.substring(0,i.length-1),s=!0}void 0===a&&"no"==i.substring(0,2)&&(i=i.substring(2),a=!1);var c=Ye[i]&&"boolean"==Ye[i].type;if(c&&null==a&&(a=!0),!c&&void 0===a||s){var l=v(i,e,r);l instanceof Error?ie(e,l.message):ie(e,!0===l||!1===l?" "+(l?"":"no")+i:"  "+i+"="+l)}else{var u=h(i,a,e,r);u instanceof Error&&ie(e,u.message)}}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var n=t.args,r=Ze.registerController.registers,o="----------Registers----------<br><br>";if(n){n=n.join("");for(var i=0;i<n.length;i++){if(a=n.charAt(i),Ze.registerController.isValidRegister(a))o+='"'+a+"    "+(r[a]||new w).toString()+"<br>"}}else for(var a in r){var s=r[a].toString();s.length&&(o+='"'+a+"    "+s+"<br>")}ie(e,o)},sort:function(e,i){function t(e,t){var n;a&&(n=e,e=t,t=n);s&&(e=e.toLowerCase(),t=t.toLowerCase());var r=l&&f.exec(e),o=l&&f.exec(t);return r?(r=parseInt((r[1]+r[2]).toLowerCase(),m))-(o=parseInt((o[1]+o[2]).toLowerCase(),m)):e<t?-1:1}var a,s,c,l,u,n=function(){if(i.argString){var e=new He.StringStream(i.argString);if(e.eat("!")&&(a=!0),e.eol())return;if(!e.eatSpace())return"Invalid arguments";var t=e.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!t&&!e.eol())return"Invalid arguments";if(t[1]){s=-1!=t[1].indexOf("i"),c=-1!=t[1].indexOf("u");var n=-1!=t[1].indexOf("d")||-1!=t[1].indexOf("n")&&1,r=-1!=t[1].indexOf("x")&&1,o=-1!=t[1].indexOf("o")&&1;if(1<n+r+o)return"Invalid arguments";l=(n?"decimal":r&&"hex")||o&&"octal"}t[2]&&(u=new RegExp(t[2].substr(1,t[2].length-2),s?"i":""))}}();if(n)ie(e,n+": "+i.argString);else{var r=i.line||e.firstLine(),o=i.lineEnd||i.line||e.lastLine();if(r!=o){var h=$e(r,0),d=$e(o,V(e,o)),p=e.getRange(h,d).split("\n"),f=u||("decimal"==l?/(-?)([\d]+)/:"hex"==l?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==l?/([0-7]+)/:null),m="decimal"==l?10:"hex"==l?16:"octal"==l?8:null,g=[],v=[];if(l||u)for(var y=0;y<p.length;y++){var C=u?p[y].match(u):null;C&&""!=C[0]?g.push(C):!u&&f.exec(p[y])?g.push(p[y]):v.push(p[y])}else v=p;if(g.sort(u?function(e,t){var n;return a&&(n=e,e=t,t=n),s&&(e[0]=e[0].toLowerCase(),t[0]=t[0].toLowerCase()),e[0]<t[0]?-1:1}:t),u)for(y=0;y<g.length;y++)g[y]=g[y].input;else l||v.sort(t);if(p=a?g.concat(v):v.concat(g),c){var k,w=p;p=[];for(y=0;y<w.length;y++)w[y]!=k&&p.push(w[y]),k=w[y]}e.replaceRange(p.join("\n"),h,d)}}},global:function(t,e){var n=e.argString;if(n){var r,o=void 0!==e.line?e.line:t.firstLine(),i=e.lineEnd||e.line||t.lastLine(),a=ne(n,"/"),s=n;if(a.length&&(s=a[0],r=a.slice(1,a.length).join("/")),s)try{se(t,s,!0,!0)}catch(e){return void ie(t,"Invalid regex: "+s)}for(var c=te(t).getQuery(),l=[],u="",h=o;h<=i;h++){c.test(t.getLine(h))&&(l.push(h+1),u+=t.getLine(h)+"<br>")}if(r){var d=0,p=function(){if(d<l.length){var e=l[d]+r;mt.processCommand(t,e,{callback:p})}d++};p()}else ie(t,u)}else ie(t,"Regular Expression missing from global")},substitute:function(t,e){if(!t.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var n,r,o,i,a=e.argString,s=a?ne(a,a[0]):[],c="",l=!1,u=!1;if(s.length)n=s[0],c=s[1],n&&"$"===n[n.length-1]&&(n=n.slice(0,n.length-1)+"\\n",c=c?c+"\n":"\n"),void 0!==c&&(c=v("pcre")?function(e){for(var t=new He.StringStream(e),n=[];!t.eol();){for(;t.peek()&&"\\"!=t.peek();)n.push(t.next());var r=!1;for(var o in ht)if(t.match(o,!0)){r=!0,n.push(ht[o]);break}r||n.push(t.next())}return n.join("")}(c):function(e){for(var t,n=!1,r=[],o=-1;o<e.length;o++){var i=e.charAt(o)||"",a=e.charAt(o+1)||"";ut[i+a]?(r.push(ut[i+a]),o++):n?(r.push(i),n=!1):"\\"===i?(n=!0,t=a,Fe.test(t)||"$"===a?r.push("$"):"/"!==a&&"\\"!==a&&r.push("\\")):("$"===i&&r.push("$"),r.push(i),"/"===a&&r.push("\\"))}return r.join("")}(c),Ze.lastSubstituteReplacePart=c),r=s[2]?s[2].split(" "):[];else if(a&&a.length)return void ie(t,"Substitutions should be of the form :s/pattern/replace/");if(r&&(o=r[0],i=parseInt(r[1]),o&&(-1!=o.indexOf("c")&&(l=!0,o.replace("c","")),-1!=o.indexOf("g")&&(u=!0,o.replace("g","")),n=n.replace(/\//g,"\\/")+"/"+o)),n)try{se(t,n,!0,!0)}catch(e){return void ie(t,"Invalid regex: "+n)}if(void 0!==(c=c||Ze.lastSubstituteReplacePart)){var h=te(t).getQuery(),d=void 0!==e.line?e.line:t.getCursor().line,p=e.lineEnd||d;d==t.firstLine()&&p==t.lastLine()&&(p=1/0),i&&(p=(d=p)+i-1);var f=K(t,$e(d,0));!function(o,e,r,i,a,s,t,n,c){function l(){o.operation(function(){for(;!p;)u(),h();d()})}function u(){var e=o.getRange(s.from(),s.to()).replace(t,n);s.replace(e)}function h(){for(;s.findNext()&&(e=s.from(),t=i,n=a,"number"!=typeof e&&(e=e.line),t instanceof Array?g(e,t):n?t<=e&&e<=n:e==t);)if(r||!f||s.from().line!=f.line)return o.scrollIntoView(s.from(),30),o.setSelection(s.from(),s.to()),f=s.from(),void(p=!1);var e,t,n;p=!0}function d(e){if(e&&e(),o.focus(),f){o.setCursor(f);var t=o.state.vim;t.exMode=!1,t.lastHPos=t.lastHSPos=f.ch}c&&c()}var p=!(o.state.vim.exMode=!0),f=s.from();if(h(),!p)return e?ae(o,{prefix:"replace with <strong>"+n+"</strong> (y/n/a/q/l)",onKeyDown:function(e,t,n){switch(He.e_stop(e),He.keyName(e)){case"Y":u(),h();break;case"N":h();break;case"A":var r=c;c=void 0,o.operation(l),c=r;break;case"L":u();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":d(n)}return p&&d(n),!0}}):(l(),c&&c());ie(o,"No matches for "+t.source)}(t,l,u,d,p,t.getSearchCursor(h,f),h,c,e.callback)}else ie(t,"No previous substitute regular expression")},redo:He.commands.redo,undo:He.commands.undo,write:function(e){He.commands.save?He.commands.save(e):e.save&&e.save()},nohlsearch:function(e){ue(e)},yank:function(e){var t=H(e.getCursor()).line,n=e.getLine(t);Ze.registerController.pushText("0","yank",n,!0,!0)},delmarks:function(e,t){if(t.argString&&R(t.argString))for(var n=e.state.vim,r=new He.StringStream(R(t.argString));!r.eol();){r.eatSpace();var o=r.pos;if(!r.match(/[a-zA-Z]/,!1))return void ie(e,"Invalid argument: "+t.argString.substring(o));var i=r.next();if(r.match("-",!0)){if(!r.match(/[a-zA-Z]/,!1))return void ie(e,"Invalid argument: "+t.argString.substring(o));var a=i,s=r.next();if(!(d(a)&&d(s)||p(a)&&p(s)))return void ie(e,"Invalid argument: "+a+"-");var c=a.charCodeAt(0),l=s.charCodeAt(0);if(l<=c)return void ie(e,"Invalid argument: "+t.argString.substring(o));for(var u=0;u<=l-c;u++){var h=String.fromCharCode(c+u);delete n.marks[h]}}else delete n.marks[i]}else ie(e,"Argument required")}},mt=new pt;He.keyMap.vim={attach:o,detach:r,call:i},u("insertModeEscKeysTimeout",200,"number"),He.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(e){(He.commands.newlineAndIndentContinueComment||He.commands.newlineAndIndent)(e)},fallthrough:["default"],attach:o,detach:r,call:i},He.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:o,detach:r,call:i},C(),He.Vim=je(),je=He.Vim;var gt={return:"CR",backspace:"BS",delete:"Del",esc:"Esc",left:"Left",right:"Right",up:"Up",down:"Down",space:"Space",home:"Home",end:"End",pageup:"PageUp",pagedown:"PageDown",enter:"CR"},vt=je.handleKey.bind(je);je.handleKey=function(e,t,n){return e.operation(function(){return vt(e,t,n)},!0)},t.CodeMirror=He;var yt=je.maybeInitVimState_;t.handler={$id:"ace/keyboard/vim",drawCursor:function(e,t,n,r,o){var i=this.state.vim||{},a=n.characterWidth,s=n.lineHeight,c=t.top,l=t.left;i.insertMode||!(r.cursor?be.comparePoints(r.cursor,r.start)<=0:o.selection.isBackwards()||o.selection.isEmpty())&&a<l&&(l-=a);!i.insertMode&&i.status&&(c+=s/=2),Oe.translate(e,l,c),Oe.setStyle(e.style,"width",a+"px"),Oe.setStyle(e.style,"height",s+"px")},handleKeyboard:function(e,t,n,r,o){var i=e.editor,a=i.state.cm,s=yt(a);if(-1!=r){if(s.insertMode||(-1==t?(255<n.charCodeAt(0)&&e.inputKey&&((n=e.inputKey)&&4==e.inputHash&&(n=n.toUpperCase())),e.inputChar=n):4==t||0==t?e.inputKey==n&&e.inputHash==t&&e.inputChar?(n=e.inputChar,t=-1):(e.inputChar=null,e.inputKey=n,e.inputHash=t):e.inputChar=e.inputKey=null),"c"==n&&1==t&&!Ie.isMac&&i.getCopyText())return i.once("copy",function(){i.selection.clearSelection()}),{command:"null",passEvent:!0};if("esc"==n&&!s.insertMode&&!s.visualMode&&!a.ace.inMultiSelectMode){var c=te(a).getOverlay();c&&a.removeOverlay(c)}if(-1==t||1&t||0===t&&1<n.length){var l=s.insertMode,u=function(e,t,n){1<t.length&&"n"==t[0]&&(t=t.replace("numpad","")),t=gt[t]||t;var r="";return n.ctrlKey&&(r+="C-"),n.altKey&&(r+="A-"),(r||1<t.length)&&n.shiftKey&&(r+="S-"),1<(r+=t).length&&(r="<"+r+">"),r}(0,n,o||{});null==s.status&&(s.status="");var h=function(i,a,s){var c=!1,e=je.maybeInitVimState_(i),t=e.visualBlock||e.wasInVisualBlock;if(e.wasInVisualBlock&&!i.ace.inMultiSelectMode?e.wasInVisualBlock=!1:i.ace.inMultiSelectMode&&e.visualBlock&&(e.wasInVisualBlock=!0),"<Esc>"!=a||e.insertMode||e.visualMode||!i.ace.inMultiSelectMode)if(t||!i.ace.inMultiSelectMode||i.ace.inVirtualSelectionMode)c=je.handleKey(i,a,s);else{var l=xe(e);i.operation(function(){i.ace.forEachSelection(function(){var e=i.ace.selection;i.state.vim.lastHPos=null==e.$desiredColumn?e.lead.column:e.$desiredColumn;var t=i.getCursor("head"),n=i.getCursor("anchor"),r=_(t,n)?0:-1,o=_(t,n)?-1:0;t=b(t,0,r),n=b(n,0,o),i.state.vim.sel.head=t,i.state.vim.sel.anchor=n,c=vt(i,a,s),e.$desiredColumn=-1==i.state.vim.lastHPos?null:i.state.vim.lastHPos,i.virtualSelectionMode()&&(i.state.vim=xe(l))}),i.curOp.cursorActivity&&!c&&(i.curOp.cursorActivity=!1)},!0)}else i.ace.exitMultiSelectMode();return c&&!e.visualMode&&!e.insert&&Ce(i,e),c}(a,u,"user");if(s=yt(a),h&&null!=s.status?s.status+=u:null==s.status&&(s.status=""),a._signal("changeStatus"),!h&&(-1!=t||l))return;return{command:"null",passEvent:!h}}}},attach:function(t){function e(){var e=yt(n).insertMode;n.ace.renderer.setStyle("normal-mode",!e),t.textInput.setCommandMode(!e),t.renderer.$keepTextAreaAtCursor=e,t.renderer.$blockCursor=!e}t.state||(t.state={});var n=new He(t);t.state.cm=n,t.$vimModeHandler=this,He.keyMap.vim.attach(n),yt(n).status=null,n.on("vim-command-done",function(){n.virtualSelectionMode()||(yt(n).status=null,n.ace._signal("changeStatus"),n.ace.session.markUndoGroup())}),n.on("changeStatus",function(){n.ace.renderer.updateCursor(),n.ace._signal("changeStatus")}),n.on("vim-mode-change",function(){n.virtualSelectionMode()||(e(),n._signal("changeStatus"))}),e(),t.renderer.$cursorLayer.drawCursor=this.drawCursor.bind(n)},detach:function(e){var t=e.state.cm;He.keyMap.vim.detach(t),t.destroy(),e.state.cm=null,e.$vimModeHandler=null,e.renderer.$cursorLayer.drawCursor=null,e.renderer.setStyle("normal-mode",!1),e.textInput.setCommandMode(!1),e.renderer.$keepTextAreaAtCursor=!0},getStatusText:function(e){var t=e.state.cm,n=yt(t);if(n.insertMode)return"INSERT";var r="";return n.visualMode&&(r+="VISUAL",n.visualLine&&(r+=" LINE"),n.visualBlock&&(r+=" BLOCK")),n.status&&(r+=(r?" ":"")+n.status),r}},je.defineOption({name:"wrap",set:function(e,t){t&&t.ace.setOption("wrap",e)},type:"boolean"},!1),je.defineEx("write","w",function(){console.log(":write is not implemented")}),_e.push({keys:"zc",type:"action",action:"fold",actionArgs:{open:!1}},{keys:"zC",type:"action",action:"fold",actionArgs:{open:!1,all:!0}},{keys:"zo",type:"action",action:"fold",actionArgs:{open:!0}},{keys:"zO",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"za",type:"action",action:"fold",actionArgs:{toggle:!0}},{keys:"zA",type:"action",action:"fold",actionArgs:{toggle:!0,all:!0}},{keys:"zf",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"zd",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"<C-A-k>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAbove"}},{keys:"<C-A-j>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelow"}},{keys:"<C-A-S-k>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAboveSkipCurrent"}},{keys:"<C-A-S-j>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelowSkipCurrent"}},{keys:"<C-A-h>",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreBefore"}},{keys:"<C-A-l>",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreAfter"}},{keys:"<C-A-S-h>",type:"action",action:"aceCommand",actionArgs:{name:"selectNextBefore"}},{keys:"<C-A-S-l>",type:"action",action:"aceCommand",actionArgs:{name:"selectNextAfter"}}),st.aceCommand=function(e,t,n){e.vimCmd=t,e.ace.inVirtualSelectionMode?e.ace.on("beforeEndOperation",Ae):Ae(0,e.ace)},st.fold=function(e,t,n){e.ace.execCommand(["toggleFoldWidget","toggleFoldWidget","foldOther","unfoldall"][(t.all?2:0)+(t.open?1:0)])},t.handler.defaultKeymap=_e,t.handler.actions=st,(t.Vim=je).map("Y","yy","normal")}),ace.require(["ace/keyboard/vim"],function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)});