{"version":3,"sources":["jsdelivr-header.js","/npm/xterm@3.14.5/dist/xterm.js"],"names":[],"mappings":"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","file":"/npm/xterm@3.14.5/dist/xterm.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/xterm@3.14.5/dist/xterm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Terminal = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Strings = require(\"./Strings\");\nvar Platform_1 = require(\"./common/Platform\");\nvar RenderDebouncer_1 = require(\"./ui/RenderDebouncer\");\nvar Lifecycle_1 = require(\"./ui/Lifecycle\");\nvar Lifecycle_2 = require(\"./common/Lifecycle\");\nvar ScreenDprMonitor_1 = require(\"./ui/ScreenDprMonitor\");\nvar MAX_ROWS_TO_READ = 20;\nvar AccessibilityManager = (function (_super) {\n    __extends(AccessibilityManager, _super);\n    function AccessibilityManager(_terminal, _dimensions) {\n        var _this = _super.call(this) || this;\n        _this._terminal = _terminal;\n        _this._dimensions = _dimensions;\n        _this._liveRegionLineCount = 0;\n        _this._charsToConsume = [];\n        _this._charsToAnnounce = '';\n        _this._accessibilityTreeRoot = document.createElement('div');\n        _this._accessibilityTreeRoot.classList.add('xterm-accessibility');\n        _this._rowContainer = document.createElement('div');\n        _this._rowContainer.classList.add('xterm-accessibility-tree');\n        _this._rowElements = [];\n        for (var i = 0; i < _this._terminal.rows; i++) {\n            _this._rowElements[i] = _this._createAccessibilityTreeNode();\n            _this._rowContainer.appendChild(_this._rowElements[i]);\n        }\n        _this._topBoundaryFocusListener = function (e) { return _this._onBoundaryFocus(e, 0); };\n        _this._bottomBoundaryFocusListener = function (e) { return _this._onBoundaryFocus(e, 1); };\n        _this._rowElements[0].addEventListener('focus', _this._topBoundaryFocusListener);\n        _this._rowElements[_this._rowElements.length - 1].addEventListener('focus', _this._bottomBoundaryFocusListener);\n        _this._refreshRowsDimensions();\n        _this._accessibilityTreeRoot.appendChild(_this._rowContainer);\n        _this._renderRowsDebouncer = new RenderDebouncer_1.RenderDebouncer(_this._renderRows.bind(_this));\n        _this._refreshRows();\n        _this._liveRegion = document.createElement('div');\n        _this._liveRegion.classList.add('live-region');\n        _this._liveRegion.setAttribute('aria-live', 'assertive');\n        _this._accessibilityTreeRoot.appendChild(_this._liveRegion);\n        _this._terminal.element.insertAdjacentElement('afterbegin', _this._accessibilityTreeRoot);\n        _this.register(_this._renderRowsDebouncer);\n        _this.register(_this._terminal.onResize(function (e) { return _this._onResize(e.rows); }));\n        _this.register(_this._terminal.onRender(function (e) { return _this._refreshRows(e.start, e.end); }));\n        _this.register(_this._terminal.onScroll(function () { return _this._refreshRows(); }));\n        _this.register(_this._terminal.addDisposableListener('a11y.char', function (char) { return _this._onChar(char); }));\n        _this.register(_this._terminal.onLineFeed(function () { return _this._onChar('\\n'); }));\n        _this.register(_this._terminal.addDisposableListener('a11y.tab', function (spaceCount) { return _this._onTab(spaceCount); }));\n        _this.register(_this._terminal.onKey(function (e) { return _this._onKey(e.key); }));\n        _this.register(_this._terminal.addDisposableListener('blur', function () { return _this._clearLiveRegion(); }));\n        _this._screenDprMonitor = new ScreenDprMonitor_1.ScreenDprMonitor();\n        _this.register(_this._screenDprMonitor);\n        _this._screenDprMonitor.setListener(function () { return _this._refreshRowsDimensions(); });\n        _this.register(Lifecycle_1.addDisposableDomListener(window, 'resize', function () { return _this._refreshRowsDimensions(); }));\n        return _this;\n    }\n    AccessibilityManager.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        this._terminal.element.removeChild(this._accessibilityTreeRoot);\n        this._rowElements.length = 0;\n    };\n    AccessibilityManager.prototype._onBoundaryFocus = function (e, position) {\n        var boundaryElement = e.target;\n        var beforeBoundaryElement = this._rowElements[position === 0 ? 1 : this._rowElements.length - 2];\n        var posInSet = boundaryElement.getAttribute('aria-posinset');\n        var lastRowPos = position === 0 ? '1' : \"\" + this._terminal.buffer.lines.length;\n        if (posInSet === lastRowPos) {\n            return;\n        }\n        if (e.relatedTarget !== beforeBoundaryElement) {\n            return;\n        }\n        var topBoundaryElement;\n        var bottomBoundaryElement;\n        if (position === 0) {\n            topBoundaryElement = boundaryElement;\n            bottomBoundaryElement = this._rowElements.pop();\n            this._rowContainer.removeChild(bottomBoundaryElement);\n        }\n        else {\n            topBoundaryElement = this._rowElements.shift();\n            bottomBoundaryElement = boundaryElement;\n            this._rowContainer.removeChild(topBoundaryElement);\n        }\n        topBoundaryElement.removeEventListener('focus', this._topBoundaryFocusListener);\n        bottomBoundaryElement.removeEventListener('focus', this._bottomBoundaryFocusListener);\n        if (position === 0) {\n            var newElement = this._createAccessibilityTreeNode();\n            this._rowElements.unshift(newElement);\n            this._rowContainer.insertAdjacentElement('afterbegin', newElement);\n        }\n        else {\n            var newElement = this._createAccessibilityTreeNode();\n            this._rowElements.push(newElement);\n            this._rowContainer.appendChild(newElement);\n        }\n        this._rowElements[0].addEventListener('focus', this._topBoundaryFocusListener);\n        this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n        this._terminal.scrollLines(position === 0 ? -1 : 1);\n        this._rowElements[position === 0 ? 1 : this._rowElements.length - 2].focus();\n        e.preventDefault();\n        e.stopImmediatePropagation();\n    };\n    AccessibilityManager.prototype._onResize = function (rows) {\n        this._rowElements[this._rowElements.length - 1].removeEventListener('focus', this._bottomBoundaryFocusListener);\n        for (var i = this._rowContainer.children.length; i < this._terminal.rows; i++) {\n            this._rowElements[i] = this._createAccessibilityTreeNode();\n            this._rowContainer.appendChild(this._rowElements[i]);\n        }\n        while (this._rowElements.length > rows) {\n            this._rowContainer.removeChild(this._rowElements.pop());\n        }\n        this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener);\n        this._refreshRowsDimensions();\n    };\n    AccessibilityManager.prototype._createAccessibilityTreeNode = function () {\n        var element = document.createElement('div');\n        element.setAttribute('role', 'listitem');\n        element.tabIndex = -1;\n        this._refreshRowDimensions(element);\n        return element;\n    };\n    AccessibilityManager.prototype._onTab = function (spaceCount) {\n        for (var i = 0; i < spaceCount; i++) {\n            this._onChar(' ');\n        }\n    };\n    AccessibilityManager.prototype._onChar = function (char) {\n        var _this = this;\n        if (this._liveRegionLineCount < MAX_ROWS_TO_READ + 1) {\n            if (this._charsToConsume.length > 0) {\n                var shiftedChar = this._charsToConsume.shift();\n                if (shiftedChar !== char) {\n                    this._charsToAnnounce += char;\n                }\n            }\n            else {\n                this._charsToAnnounce += char;\n            }\n            if (char === '\\n') {\n                this._liveRegionLineCount++;\n                if (this._liveRegionLineCount === MAX_ROWS_TO_READ + 1) {\n                    this._liveRegion.textContent += Strings.tooMuchOutput;\n                }\n            }\n            if (Platform_1.isMac) {\n                if (this._liveRegion.textContent && this._liveRegion.textContent.length > 0 && !this._liveRegion.parentNode) {\n                    setTimeout(function () {\n                        _this._accessibilityTreeRoot.appendChild(_this._liveRegion);\n                    }, 0);\n                }\n            }\n        }\n    };\n    AccessibilityManager.prototype._clearLiveRegion = function () {\n        this._liveRegion.textContent = '';\n        this._liveRegionLineCount = 0;\n        if (Platform_1.isMac) {\n            if (this._liveRegion.parentNode) {\n                this._accessibilityTreeRoot.removeChild(this._liveRegion);\n            }\n        }\n    };\n    AccessibilityManager.prototype._onKey = function (keyChar) {\n        this._clearLiveRegion();\n        this._charsToConsume.push(keyChar);\n    };\n    AccessibilityManager.prototype._refreshRows = function (start, end) {\n        this._renderRowsDebouncer.refresh(start, end, this._terminal.rows);\n    };\n    AccessibilityManager.prototype._renderRows = function (start, end) {\n        var buffer = this._terminal.buffer;\n        var setSize = buffer.lines.length.toString();\n        for (var i = start; i <= end; i++) {\n            var lineData = buffer.translateBufferLineToString(buffer.ydisp + i, true);\n            var posInSet = (buffer.ydisp + i + 1).toString();\n            var element = this._rowElements[i];\n            if (element) {\n                element.textContent = lineData.length === 0 ? Strings.blankLine : lineData;\n                element.setAttribute('aria-posinset', posInSet);\n                element.setAttribute('aria-setsize', setSize);\n            }\n        }\n        this._announceCharacters();\n    };\n    AccessibilityManager.prototype._refreshRowsDimensions = function () {\n        if (!this._dimensions.actualCellHeight) {\n            return;\n        }\n        if (this._rowElements.length !== this._terminal.rows) {\n            this._onResize(this._terminal.rows);\n        }\n        for (var i = 0; i < this._terminal.rows; i++) {\n            this._refreshRowDimensions(this._rowElements[i]);\n        }\n    };\n    AccessibilityManager.prototype.setDimensions = function (dimensions) {\n        this._dimensions = dimensions;\n        this._refreshRowsDimensions();\n    };\n    AccessibilityManager.prototype._refreshRowDimensions = function (element) {\n        element.style.height = this._dimensions.actualCellHeight + \"px\";\n    };\n    AccessibilityManager.prototype._announceCharacters = function () {\n        if (this._charsToAnnounce.length === 0) {\n            return;\n        }\n        this._liveRegion.textContent += this._charsToAnnounce;\n        this._charsToAnnounce = '';\n    };\n    return AccessibilityManager;\n}(Lifecycle_2.Disposable));\nexports.AccessibilityManager = AccessibilityManager;\n\n},{\"./Strings\":16,\"./common/Lifecycle\":24,\"./common/Platform\":25,\"./ui/Lifecycle\":59,\"./ui/RenderDebouncer\":60,\"./ui/ScreenDprMonitor\":61}],2:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CircularList_1 = require(\"./common/CircularList\");\nvar BufferLine_1 = require(\"./core/buffer/BufferLine\");\nvar BufferReflow_1 = require(\"./core/buffer/BufferReflow\");\nvar Marker_1 = require(\"./core/buffer/Marker\");\nexports.MAX_BUFFER_SIZE = 4294967295;\nvar Buffer = (function () {\n    function Buffer(_terminal, _hasScrollback) {\n        this._terminal = _terminal;\n        this._hasScrollback = _hasScrollback;\n        this.savedCurAttrData = BufferLine_1.DEFAULT_ATTR_DATA.clone();\n        this.markers = [];\n        this._nullCell = BufferLine_1.CellData.fromCharData([0, BufferLine_1.NULL_CELL_CHAR, BufferLine_1.NULL_CELL_WIDTH, BufferLine_1.NULL_CELL_CODE]);\n        this._whitespaceCell = BufferLine_1.CellData.fromCharData([0, BufferLine_1.WHITESPACE_CELL_CHAR, BufferLine_1.WHITESPACE_CELL_WIDTH, BufferLine_1.WHITESPACE_CELL_CODE]);\n        this._cols = this._terminal.cols;\n        this._rows = this._terminal.rows;\n        this.clear();\n    }\n    Buffer.prototype.getNullCell = function (attr) {\n        if (attr) {\n            this._nullCell.fg = attr.fg;\n            this._nullCell.bg = attr.bg;\n        }\n        else {\n            this._nullCell.fg = 0;\n            this._nullCell.bg = 0;\n        }\n        return this._nullCell;\n    };\n    Buffer.prototype.getWhitespaceCell = function (attr) {\n        if (attr) {\n            this._whitespaceCell.fg = attr.fg;\n            this._whitespaceCell.bg = attr.bg;\n        }\n        else {\n            this._whitespaceCell.fg = 0;\n            this._whitespaceCell.bg = 0;\n        }\n        return this._whitespaceCell;\n    };\n    Buffer.prototype.getBlankLine = function (attr, isWrapped) {\n        return new BufferLine_1.BufferLine(this._terminal.cols, this.getNullCell(attr), isWrapped);\n    };\n    Object.defineProperty(Buffer.prototype, \"hasScrollback\", {\n        get: function () {\n            return this._hasScrollback && this.lines.maxLength > this._rows;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Buffer.prototype, \"isCursorInViewport\", {\n        get: function () {\n            var absoluteY = this.ybase + this.y;\n            var relativeY = absoluteY - this.ydisp;\n            return (relativeY >= 0 && relativeY < this._rows);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Buffer.prototype._getCorrectBufferLength = function (rows) {\n        if (!this._hasScrollback) {\n            return rows;\n        }\n        var correctBufferLength = rows + this._terminal.options.scrollback;\n        return correctBufferLength > exports.MAX_BUFFER_SIZE ? exports.MAX_BUFFER_SIZE : correctBufferLength;\n    };\n    Buffer.prototype.fillViewportRows = function (fillAttr) {\n        if (this.lines.length === 0) {\n            if (fillAttr === undefined) {\n                fillAttr = BufferLine_1.DEFAULT_ATTR_DATA;\n            }\n            var i = this._rows;\n            while (i--) {\n                this.lines.push(this.getBlankLine(fillAttr));\n            }\n        }\n    };\n    Buffer.prototype.clear = function () {\n        this.ydisp = 0;\n        this.ybase = 0;\n        this.y = 0;\n        this.x = 0;\n        this.lines = new CircularList_1.CircularList(this._getCorrectBufferLength(this._rows));\n        this.scrollTop = 0;\n        this.scrollBottom = this._rows - 1;\n        this.setupTabStops();\n    };\n    Buffer.prototype.resize = function (newCols, newRows) {\n        var nullCell = this.getNullCell(BufferLine_1.DEFAULT_ATTR_DATA);\n        var newMaxLength = this._getCorrectBufferLength(newRows);\n        if (newMaxLength > this.lines.maxLength) {\n            this.lines.maxLength = newMaxLength;\n        }\n        if (this.lines.length > 0) {\n            if (this._cols < newCols) {\n                for (var i = 0; i < this.lines.length; i++) {\n                    this.lines.get(i).resize(newCols, nullCell);\n                }\n            }\n            var addToY = 0;\n            if (this._rows < newRows) {\n                for (var y = this._rows; y < newRows; y++) {\n                    if (this.lines.length < newRows + this.ybase) {\n                        if (this.ybase > 0 && this.lines.length <= this.ybase + this.y + addToY + 1) {\n                            this.ybase--;\n                            addToY++;\n                            if (this.ydisp > 0) {\n                                this.ydisp--;\n                            }\n                        }\n                        else {\n                            this.lines.push(new BufferLine_1.BufferLine(newCols, nullCell));\n                        }\n                    }\n                }\n            }\n            else {\n                for (var y = this._rows; y > newRows; y--) {\n                    if (this.lines.length > newRows + this.ybase) {\n                        if (this.lines.length > this.ybase + this.y + 1) {\n                            this.lines.pop();\n                        }\n                        else {\n                            this.ybase++;\n                            this.ydisp++;\n                        }\n                    }\n                }\n            }\n            if (newMaxLength < this.lines.maxLength) {\n                var amountToTrim = this.lines.length - newMaxLength;\n                if (amountToTrim > 0) {\n                    this.lines.trimStart(amountToTrim);\n                    this.ybase = Math.max(this.ybase - amountToTrim, 0);\n                    this.ydisp = Math.max(this.ydisp - amountToTrim, 0);\n                }\n                this.lines.maxLength = newMaxLength;\n            }\n            this.x = Math.min(this.x, newCols - 1);\n            this.y = Math.min(this.y, newRows - 1);\n            if (addToY) {\n                this.y += addToY;\n            }\n            this.savedY = Math.min(this.savedY, newRows - 1);\n            this.savedX = Math.min(this.savedX, newCols - 1);\n            this.scrollTop = 0;\n        }\n        this.scrollBottom = newRows - 1;\n        if (this._isReflowEnabled) {\n            this._reflow(newCols, newRows);\n            if (this._cols > newCols) {\n                for (var i = 0; i < this.lines.length; i++) {\n                    this.lines.get(i).resize(newCols, nullCell);\n                }\n            }\n        }\n        this._cols = newCols;\n        this._rows = newRows;\n    };\n    Object.defineProperty(Buffer.prototype, \"_isReflowEnabled\", {\n        get: function () {\n            return this._hasScrollback && !this._terminal.options.windowsMode;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Buffer.prototype._reflow = function (newCols, newRows) {\n        if (this._cols === newCols) {\n            return;\n        }\n        if (newCols > this._cols) {\n            this._reflowLarger(newCols, newRows);\n        }\n        else {\n            this._reflowSmaller(newCols, newRows);\n        }\n    };\n    Buffer.prototype._reflowLarger = function (newCols, newRows) {\n        var toRemove = BufferReflow_1.reflowLargerGetLinesToRemove(this.lines, this._cols, newCols, this.ybase + this.y, this.getNullCell(BufferLine_1.DEFAULT_ATTR_DATA));\n        if (toRemove.length > 0) {\n            var newLayoutResult = BufferReflow_1.reflowLargerCreateNewLayout(this.lines, toRemove);\n            BufferReflow_1.reflowLargerApplyNewLayout(this.lines, newLayoutResult.layout);\n            this._reflowLargerAdjustViewport(newCols, newRows, newLayoutResult.countRemoved);\n        }\n    };\n    Buffer.prototype._reflowLargerAdjustViewport = function (newCols, newRows, countRemoved) {\n        var nullCell = this.getNullCell(BufferLine_1.DEFAULT_ATTR_DATA);\n        var viewportAdjustments = countRemoved;\n        while (viewportAdjustments-- > 0) {\n            if (this.ybase === 0) {\n                if (this.y > 0) {\n                    this.y--;\n                }\n                if (this.lines.length < newRows) {\n                    this.lines.push(new BufferLine_1.BufferLine(newCols, nullCell));\n                }\n            }\n            else {\n                if (this.ydisp === this.ybase) {\n                    this.ydisp--;\n                }\n                this.ybase--;\n            }\n        }\n    };\n    Buffer.prototype._reflowSmaller = function (newCols, newRows) {\n        var nullCell = this.getNullCell(BufferLine_1.DEFAULT_ATTR_DATA);\n        var toInsert = [];\n        var countToInsert = 0;\n        for (var y = this.lines.length - 1; y >= 0; y--) {\n            var nextLine = this.lines.get(y);\n            if (!nextLine || !nextLine.isWrapped && nextLine.getTrimmedLength() <= newCols) {\n                continue;\n            }\n            var wrappedLines = [nextLine];\n            while (nextLine.isWrapped && y > 0) {\n                nextLine = this.lines.get(--y);\n                wrappedLines.unshift(nextLine);\n            }\n            var absoluteY = this.ybase + this.y;\n            if (absoluteY >= y && absoluteY < y + wrappedLines.length) {\n                continue;\n            }\n            var lastLineLength = wrappedLines[wrappedLines.length - 1].getTrimmedLength();\n            var destLineLengths = BufferReflow_1.reflowSmallerGetNewLineLengths(wrappedLines, this._cols, newCols);\n            var linesToAdd = destLineLengths.length - wrappedLines.length;\n            var trimmedLines = void 0;\n            if (this.ybase === 0 && this.y !== this.lines.length - 1) {\n                trimmedLines = Math.max(0, this.y - this.lines.maxLength + linesToAdd);\n            }\n            else {\n                trimmedLines = Math.max(0, this.lines.length - this.lines.maxLength + linesToAdd);\n            }\n            var newLines = [];\n            for (var i = 0; i < linesToAdd; i++) {\n                var newLine = this.getBlankLine(BufferLine_1.DEFAULT_ATTR_DATA, true);\n                newLines.push(newLine);\n            }\n            if (newLines.length > 0) {\n                toInsert.push({\n                    start: y + wrappedLines.length + countToInsert,\n                    newLines: newLines\n                });\n                countToInsert += newLines.length;\n            }\n            wrappedLines.push.apply(wrappedLines, newLines);\n            var destLineIndex = destLineLengths.length - 1;\n            var destCol = destLineLengths[destLineIndex];\n            if (destCol === 0) {\n                destLineIndex--;\n                destCol = destLineLengths[destLineIndex];\n            }\n            var srcLineIndex = wrappedLines.length - linesToAdd - 1;\n            var srcCol = lastLineLength;\n            while (srcLineIndex >= 0) {\n                var cellsToCopy = Math.min(srcCol, destCol);\n                wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[srcLineIndex], srcCol - cellsToCopy, destCol - cellsToCopy, cellsToCopy, true);\n                destCol -= cellsToCopy;\n                if (destCol === 0) {\n                    destLineIndex--;\n                    destCol = destLineLengths[destLineIndex];\n                }\n                srcCol -= cellsToCopy;\n                if (srcCol === 0) {\n                    srcLineIndex--;\n                    var wrappedLinesIndex = Math.max(srcLineIndex, 0);\n                    srcCol = BufferReflow_1.getWrappedLineTrimmedLength(wrappedLines, wrappedLinesIndex, this._cols);\n                }\n            }\n            for (var i = 0; i < wrappedLines.length; i++) {\n                if (destLineLengths[i] < newCols) {\n                    wrappedLines[i].setCell(destLineLengths[i], nullCell);\n                }\n            }\n            var viewportAdjustments = linesToAdd - trimmedLines;\n            while (viewportAdjustments-- > 0) {\n                if (this.ybase === 0) {\n                    if (this.y < newRows - 1) {\n                        this.y++;\n                        this.lines.pop();\n                    }\n                    else {\n                        this.ybase++;\n                        this.ydisp++;\n                    }\n                }\n                else {\n                    if (this.ybase < Math.min(this.lines.maxLength, this.lines.length + countToInsert) - newRows) {\n                        if (this.ybase === this.ydisp) {\n                            this.ydisp++;\n                        }\n                        this.ybase++;\n                    }\n                }\n            }\n        }\n        if (toInsert.length > 0) {\n            var insertEvents = [];\n            var originalLines = [];\n            for (var i = 0; i < this.lines.length; i++) {\n                originalLines.push(this.lines.get(i));\n            }\n            var originalLinesLength = this.lines.length;\n            var originalLineIndex = originalLinesLength - 1;\n            var nextToInsertIndex = 0;\n            var nextToInsert = toInsert[nextToInsertIndex];\n            this.lines.length = Math.min(this.lines.maxLength, this.lines.length + countToInsert);\n            var countInsertedSoFar = 0;\n            for (var i = Math.min(this.lines.maxLength - 1, originalLinesLength + countToInsert - 1); i >= 0; i--) {\n                if (nextToInsert && nextToInsert.start > originalLineIndex + countInsertedSoFar) {\n                    for (var nextI = nextToInsert.newLines.length - 1; nextI >= 0; nextI--) {\n                        this.lines.set(i--, nextToInsert.newLines[nextI]);\n                    }\n                    i++;\n                    insertEvents.push({\n                        index: originalLineIndex + 1,\n                        amount: nextToInsert.newLines.length\n                    });\n                    countInsertedSoFar += nextToInsert.newLines.length;\n                    nextToInsert = toInsert[++nextToInsertIndex];\n                }\n                else {\n                    this.lines.set(i, originalLines[originalLineIndex--]);\n                }\n            }\n            var insertCountEmitted = 0;\n            for (var i = insertEvents.length - 1; i >= 0; i--) {\n                insertEvents[i].index += insertCountEmitted;\n                this.lines.onInsertEmitter.fire(insertEvents[i]);\n                insertCountEmitted += insertEvents[i].amount;\n            }\n            var amountToTrim = Math.max(0, originalLinesLength + countToInsert - this.lines.maxLength);\n            if (amountToTrim > 0) {\n                this.lines.onTrimEmitter.fire(amountToTrim);\n            }\n        }\n    };\n    Buffer.prototype.stringIndexToBufferIndex = function (lineIndex, stringIndex, trimRight) {\n        if (trimRight === void 0) { trimRight = false; }\n        while (stringIndex) {\n            var line = this.lines.get(lineIndex);\n            if (!line) {\n                return [-1, -1];\n            }\n            var length_1 = (trimRight) ? line.getTrimmedLength() : line.length;\n            for (var i = 0; i < length_1; ++i) {\n                if (line.get(i)[BufferLine_1.CHAR_DATA_WIDTH_INDEX]) {\n                    stringIndex -= line.get(i)[BufferLine_1.CHAR_DATA_CHAR_INDEX].length || 1;\n                }\n                if (stringIndex < 0) {\n                    return [lineIndex, i];\n                }\n            }\n            lineIndex++;\n        }\n        return [lineIndex, 0];\n    };\n    Buffer.prototype.translateBufferLineToString = function (lineIndex, trimRight, startCol, endCol) {\n        if (startCol === void 0) { startCol = 0; }\n        var line = this.lines.get(lineIndex);\n        if (!line) {\n            return '';\n        }\n        return line.translateToString(trimRight, startCol, endCol);\n    };\n    Buffer.prototype.getWrappedRangeForLine = function (y) {\n        var first = y;\n        var last = y;\n        while (first > 0 && this.lines.get(first).isWrapped) {\n            first--;\n        }\n        while (last + 1 < this.lines.length && this.lines.get(last + 1).isWrapped) {\n            last++;\n        }\n        return { first: first, last: last };\n    };\n    Buffer.prototype.setupTabStops = function (i) {\n        if (i !== null && i !== undefined) {\n            if (!this.tabs[i]) {\n                i = this.prevStop(i);\n            }\n        }\n        else {\n            this.tabs = {};\n            i = 0;\n        }\n        for (; i < this._cols; i += this._terminal.options.tabStopWidth) {\n            this.tabs[i] = true;\n        }\n    };\n    Buffer.prototype.prevStop = function (x) {\n        if (x === null || x === undefined) {\n            x = this.x;\n        }\n        while (!this.tabs[--x] && x > 0)\n            ;\n        return x >= this._cols ? this._cols - 1 : x < 0 ? 0 : x;\n    };\n    Buffer.prototype.nextStop = function (x) {\n        if (x === null || x === undefined) {\n            x = this.x;\n        }\n        while (!this.tabs[++x] && x < this._cols)\n            ;\n        return x >= this._cols ? this._cols - 1 : x < 0 ? 0 : x;\n    };\n    Buffer.prototype.addMarker = function (y) {\n        var _this = this;\n        var marker = new Marker_1.Marker(y);\n        this.markers.push(marker);\n        marker.register(this.lines.onTrim(function (amount) {\n            marker.line -= amount;\n            if (marker.line < 0) {\n                marker.dispose();\n            }\n        }));\n        marker.register(this.lines.onInsert(function (event) {\n            if (marker.line >= event.index) {\n                marker.line += event.amount;\n            }\n        }));\n        marker.register(this.lines.onDelete(function (event) {\n            if (marker.line >= event.index && marker.line < event.index + event.amount) {\n                marker.dispose();\n            }\n            if (marker.line > event.index) {\n                marker.line -= event.amount;\n            }\n        }));\n        marker.register(marker.onDispose(function () { return _this._removeMarker(marker); }));\n        return marker;\n    };\n    Buffer.prototype._removeMarker = function (marker) {\n        this.markers.splice(this.markers.indexOf(marker), 1);\n    };\n    Buffer.prototype.iterator = function (trimRight, startIndex, endIndex, startOverscan, endOverscan) {\n        return new BufferStringIterator(this, trimRight, startIndex, endIndex, startOverscan, endOverscan);\n    };\n    return Buffer;\n}());\nexports.Buffer = Buffer;\nvar BufferStringIterator = (function () {\n    function BufferStringIterator(_buffer, _trimRight, _startIndex, _endIndex, _startOverscan, _endOverscan) {\n        if (_startIndex === void 0) { _startIndex = 0; }\n        if (_endIndex === void 0) { _endIndex = _buffer.lines.length; }\n        if (_startOverscan === void 0) { _startOverscan = 0; }\n        if (_endOverscan === void 0) { _endOverscan = 0; }\n        this._buffer = _buffer;\n        this._trimRight = _trimRight;\n        this._startIndex = _startIndex;\n        this._endIndex = _endIndex;\n        this._startOverscan = _startOverscan;\n        this._endOverscan = _endOverscan;\n        if (this._startIndex < 0) {\n            this._startIndex = 0;\n        }\n        if (this._endIndex > this._buffer.lines.length) {\n            this._endIndex = this._buffer.lines.length;\n        }\n        this._current = this._startIndex;\n    }\n    BufferStringIterator.prototype.hasNext = function () {\n        return this._current < this._endIndex;\n    };\n    BufferStringIterator.prototype.next = function () {\n        var range = this._buffer.getWrappedRangeForLine(this._current);\n        if (range.first < this._startIndex - this._startOverscan) {\n            range.first = this._startIndex - this._startOverscan;\n        }\n        if (range.last > this._endIndex + this._endOverscan) {\n            range.last = this._endIndex + this._endOverscan;\n        }\n        range.first = Math.max(range.first, 0);\n        range.last = Math.min(range.last, this._buffer.lines.length);\n        var result = '';\n        for (var i = range.first; i <= range.last; ++i) {\n            result += this._buffer.translateBufferLineToString(i, this._trimRight);\n        }\n        this._current = range.last + 1;\n        return { range: range, content: result };\n    };\n    return BufferStringIterator;\n}());\nexports.BufferStringIterator = BufferStringIterator;\n\n},{\"./common/CircularList\":20,\"./core/buffer/BufferLine\":29,\"./core/buffer/BufferReflow\":30,\"./core/buffer/Marker\":31}],3:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Buffer_1 = require(\"./Buffer\");\nvar EventEmitter2_1 = require(\"./common/EventEmitter2\");\nvar BufferSet = (function () {\n    function BufferSet(_terminal) {\n        this._terminal = _terminal;\n        this._onBufferActivate = new EventEmitter2_1.EventEmitter2();\n        this._normal = new Buffer_1.Buffer(this._terminal, true);\n        this._normal.fillViewportRows();\n        this._alt = new Buffer_1.Buffer(this._terminal, false);\n        this._activeBuffer = this._normal;\n        this.setupTabStops();\n    }\n    Object.defineProperty(BufferSet.prototype, \"onBufferActivate\", {\n        get: function () { return this._onBufferActivate.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferSet.prototype, \"alt\", {\n        get: function () {\n            return this._alt;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferSet.prototype, \"active\", {\n        get: function () {\n            return this._activeBuffer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferSet.prototype, \"normal\", {\n        get: function () {\n            return this._normal;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    BufferSet.prototype.activateNormalBuffer = function () {\n        if (this._activeBuffer === this._normal) {\n            return;\n        }\n        this._normal.x = this._alt.x;\n        this._normal.y = this._alt.y;\n        this._alt.clear();\n        this._activeBuffer = this._normal;\n        this._onBufferActivate.fire({\n            activeBuffer: this._normal,\n            inactiveBuffer: this._alt\n        });\n    };\n    BufferSet.prototype.activateAltBuffer = function (fillAttr) {\n        if (this._activeBuffer === this._alt) {\n            return;\n        }\n        this._alt.fillViewportRows(fillAttr);\n        this._alt.x = this._normal.x;\n        this._alt.y = this._normal.y;\n        this._activeBuffer = this._alt;\n        this._onBufferActivate.fire({\n            activeBuffer: this._alt,\n            inactiveBuffer: this._normal\n        });\n    };\n    BufferSet.prototype.resize = function (newCols, newRows) {\n        this._normal.resize(newCols, newRows);\n        this._alt.resize(newCols, newRows);\n    };\n    BufferSet.prototype.setupTabStops = function (i) {\n        this._normal.setupTabStops(i);\n        this._alt.setupTabStops(i);\n    };\n    return BufferSet;\n}());\nexports.BufferSet = BufferSet;\n\n},{\"./Buffer\":2,\"./common/EventEmitter2\":23}],4:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter2_1 = require(\"./common/EventEmitter2\");\nvar CharMeasure = (function () {\n    function CharMeasure(document, parentElement) {\n        this._onCharSizeChanged = new EventEmitter2_1.EventEmitter2();\n        this._document = document;\n        this._parentElement = parentElement;\n        this._measureElement = this._document.createElement('span');\n        this._measureElement.classList.add('xterm-char-measure-element');\n        this._measureElement.textContent = 'W';\n        this._measureElement.setAttribute('aria-hidden', 'true');\n        this._parentElement.appendChild(this._measureElement);\n    }\n    Object.defineProperty(CharMeasure.prototype, \"onCharSizeChanged\", {\n        get: function () { return this._onCharSizeChanged.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CharMeasure.prototype, \"width\", {\n        get: function () {\n            return this._width;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CharMeasure.prototype, \"height\", {\n        get: function () {\n            return this._height;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    CharMeasure.prototype.measure = function (options) {\n        this._measureElement.style.fontFamily = options.fontFamily;\n        this._measureElement.style.fontSize = options.fontSize + \"px\";\n        var geometry = this._measureElement.getBoundingClientRect();\n        if (geometry.width === 0 || geometry.height === 0) {\n            return;\n        }\n        var adjustedHeight = Math.ceil(geometry.height);\n        if (this._width !== geometry.width || this._height !== adjustedHeight) {\n            this._width = geometry.width;\n            this._height = adjustedHeight;\n            this._onCharSizeChanged.fire();\n        }\n    };\n    return CharMeasure;\n}());\nexports.CharMeasure = CharMeasure;\n\n},{\"./common/EventEmitter2\":23}],5:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TypedArrayUtils_1 = require(\"./common/TypedArrayUtils\");\nexports.wcwidth = (function (opts) {\n    var COMBINING_BMP = [\n        [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489],\n        [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2],\n        [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603],\n        [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670],\n        [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED],\n        [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A],\n        [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902],\n        [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D],\n        [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981],\n        [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD],\n        [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C],\n        [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D],\n        [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC],\n        [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD],\n        [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C],\n        [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D],\n        [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0],\n        [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48],\n        [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC],\n        [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD],\n        [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D],\n        [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6],\n        [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E],\n        [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC],\n        [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35],\n        [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E],\n        [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97],\n        [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030],\n        [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039],\n        [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F],\n        [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753],\n        [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD],\n        [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD],\n        [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922],\n        [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B],\n        [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34],\n        [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42],\n        [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF],\n        [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063],\n        [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F],\n        [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B],\n        [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F],\n        [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB]\n    ];\n    var COMBINING_HIGH = [\n        [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F],\n        [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169],\n        [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD],\n        [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F],\n        [0xE0100, 0xE01EF]\n    ];\n    function bisearch(ucs, data) {\n        var min = 0;\n        var max = data.length - 1;\n        var mid;\n        if (ucs < data[0][0] || ucs > data[max][1]) {\n            return false;\n        }\n        while (max >= min) {\n            mid = (min + max) >> 1;\n            if (ucs > data[mid][1]) {\n                min = mid + 1;\n            }\n            else if (ucs < data[mid][0]) {\n                max = mid - 1;\n            }\n            else {\n                return true;\n            }\n        }\n        return false;\n    }\n    function wcwidthHigh(ucs) {\n        if (bisearch(ucs, COMBINING_HIGH)) {\n            return 0;\n        }\n        if ((ucs >= 0x20000 && ucs <= 0x2fffd) || (ucs >= 0x30000 && ucs <= 0x3fffd)) {\n            return 2;\n        }\n        return 1;\n    }\n    var control = opts.control | 0;\n    var table = new Uint8Array(65536);\n    TypedArrayUtils_1.fill(table, 1);\n    table[0] = opts.nul;\n    TypedArrayUtils_1.fill(table, opts.control, 1, 32);\n    TypedArrayUtils_1.fill(table, opts.control, 0x7f, 0xa0);\n    TypedArrayUtils_1.fill(table, 2, 0x1100, 0x1160);\n    table[0x2329] = 2;\n    table[0x232a] = 2;\n    TypedArrayUtils_1.fill(table, 2, 0x2e80, 0xa4d0);\n    table[0x303f] = 1;\n    TypedArrayUtils_1.fill(table, 2, 0xac00, 0xd7a4);\n    TypedArrayUtils_1.fill(table, 2, 0xf900, 0xfb00);\n    TypedArrayUtils_1.fill(table, 2, 0xfe10, 0xfe1a);\n    TypedArrayUtils_1.fill(table, 2, 0xfe30, 0xfe70);\n    TypedArrayUtils_1.fill(table, 2, 0xff00, 0xff61);\n    TypedArrayUtils_1.fill(table, 2, 0xffe0, 0xffe7);\n    for (var r = 0; r < COMBINING_BMP.length; ++r) {\n        TypedArrayUtils_1.fill(table, 0, COMBINING_BMP[r][0], COMBINING_BMP[r][1] + 1);\n    }\n    return function (num) {\n        if (num < 32) {\n            return control | 0;\n        }\n        if (num < 127) {\n            return 1;\n        }\n        if (num < 65536) {\n            return table[num];\n        }\n        return wcwidthHigh(num);\n    };\n})({ nul: 0, control: 0 });\nfunction getStringCellWidth(s) {\n    var result = 0;\n    var length = s.length;\n    for (var i = 0; i < length; ++i) {\n        var code = s.charCodeAt(i);\n        if (0xD800 <= code && code <= 0xDBFF) {\n            if (++i >= length) {\n                return result + exports.wcwidth(code);\n            }\n            var second = s.charCodeAt(i);\n            if (0xDC00 <= second && second <= 0xDFFF) {\n                code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n            }\n            else {\n                result += exports.wcwidth(second);\n            }\n        }\n        result += exports.wcwidth(code);\n    }\n    return result;\n}\nexports.getStringCellWidth = getStringCellWidth;\n\n},{\"./common/TypedArrayUtils\":26}],6:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction prepareTextForTerminal(text) {\n    return text.replace(/\\r?\\n/g, '\\r');\n}\nexports.prepareTextForTerminal = prepareTextForTerminal;\nfunction bracketTextForPaste(text, bracketedPasteMode) {\n    if (bracketedPasteMode) {\n        return '\\x1b[200~' + text + '\\x1b[201~';\n    }\n    return text;\n}\nexports.bracketTextForPaste = bracketTextForPaste;\nfunction copyHandler(ev, term, selectionManager) {\n    if (term.browser.isMSIE) {\n        window.clipboardData.setData('Text', selectionManager.selectionText);\n    }\n    else {\n        ev.clipboardData.setData('text/plain', selectionManager.selectionText);\n    }\n    ev.preventDefault();\n}\nexports.copyHandler = copyHandler;\nfunction pasteHandler(ev, term) {\n    ev.stopPropagation();\n    var text;\n    var dispatchPaste = function (text) {\n        text = prepareTextForTerminal(text);\n        text = bracketTextForPaste(text, term.bracketedPasteMode);\n        term.handler(text);\n        term.textarea.value = '';\n        term.emit('paste', text);\n        term.cancel(ev);\n    };\n    if (term.browser.isMSIE) {\n        if (window.clipboardData) {\n            text = window.clipboardData.getData('Text');\n            dispatchPaste(text);\n        }\n    }\n    else {\n        if (ev.clipboardData) {\n            text = ev.clipboardData.getData('text/plain');\n            dispatchPaste(text);\n        }\n    }\n}\nexports.pasteHandler = pasteHandler;\nfunction moveTextAreaUnderMouseCursor(ev, term) {\n    var pos = term.screenElement.getBoundingClientRect();\n    var left = ev.clientX - pos.left - 10;\n    var top = ev.clientY - pos.top - 10;\n    term.textarea.style.position = 'absolute';\n    term.textarea.style.width = '20px';\n    term.textarea.style.height = '20px';\n    term.textarea.style.left = left + \"px\";\n    term.textarea.style.top = top + \"px\";\n    term.textarea.style.zIndex = '1000';\n    term.textarea.focus();\n    setTimeout(function () {\n        term.textarea.style.position = null;\n        term.textarea.style.width = null;\n        term.textarea.style.height = null;\n        term.textarea.style.left = null;\n        term.textarea.style.top = null;\n        term.textarea.style.zIndex = null;\n    }, 200);\n}\nexports.moveTextAreaUnderMouseCursor = moveTextAreaUnderMouseCursor;\nfunction rightClickHandler(ev, term, selectionManager, shouldSelectWord) {\n    moveTextAreaUnderMouseCursor(ev, term);\n    if (shouldSelectWord && !selectionManager.isClickInSelection(ev)) {\n        selectionManager.selectWordAtCursor(ev);\n    }\n    term.textarea.value = selectionManager.selectionText;\n    term.textarea.select();\n}\nexports.rightClickHandler = rightClickHandler;\n\n},{}],7:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CompositionHelper = (function () {\n    function CompositionHelper(_textarea, _compositionView, _terminal) {\n        this._textarea = _textarea;\n        this._compositionView = _compositionView;\n        this._terminal = _terminal;\n        this._isComposing = false;\n        this._isSendingComposition = false;\n        this._compositionPosition = { start: null, end: null };\n    }\n    CompositionHelper.prototype.compositionstart = function () {\n        this._isComposing = true;\n        this._compositionPosition.start = this._textarea.value.length;\n        this._compositionView.textContent = '';\n        this._compositionView.classList.add('active');\n    };\n    CompositionHelper.prototype.compositionupdate = function (ev) {\n        var _this = this;\n        this._compositionView.textContent = ev.data;\n        this.updateCompositionElements();\n        setTimeout(function () {\n            _this._compositionPosition.end = _this._textarea.value.length;\n        }, 0);\n    };\n    CompositionHelper.prototype.compositionend = function () {\n        this._finalizeComposition(true);\n    };\n    CompositionHelper.prototype.keydown = function (ev) {\n        if (this._isComposing || this._isSendingComposition) {\n            if (ev.keyCode === 229) {\n                return false;\n            }\n            else if (ev.keyCode === 16 || ev.keyCode === 17 || ev.keyCode === 18) {\n                return false;\n            }\n            this._finalizeComposition(false);\n        }\n        if (ev.keyCode === 229) {\n            this._handleAnyTextareaChanges();\n            return false;\n        }\n        return true;\n    };\n    CompositionHelper.prototype._finalizeComposition = function (waitForPropagation) {\n        var _this = this;\n        this._compositionView.classList.remove('active');\n        this._isComposing = false;\n        this._clearTextareaPosition();\n        if (!waitForPropagation) {\n            this._isSendingComposition = false;\n            var input = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end);\n            this._terminal.handler(input);\n        }\n        else {\n            var currentCompositionPosition_1 = {\n                start: this._compositionPosition.start,\n                end: this._compositionPosition.end\n            };\n            this._isSendingComposition = true;\n            setTimeout(function () {\n                if (_this._isSendingComposition) {\n                    _this._isSendingComposition = false;\n                    var input = void 0;\n                    if (_this._isComposing) {\n                        input = _this._textarea.value.substring(currentCompositionPosition_1.start, currentCompositionPosition_1.end);\n                    }\n                    else {\n                        input = _this._textarea.value.substring(currentCompositionPosition_1.start);\n                    }\n                    _this._terminal.handler(input);\n                }\n            }, 0);\n        }\n    };\n    CompositionHelper.prototype._handleAnyTextareaChanges = function () {\n        var _this = this;\n        var oldValue = this._textarea.value;\n        setTimeout(function () {\n            if (!_this._isComposing) {\n                var newValue = _this._textarea.value;\n                var diff = newValue.replace(oldValue, '');\n                if (diff.length > 0) {\n                    _this._terminal.handler(diff);\n                }\n            }\n        }, 0);\n    };\n    CompositionHelper.prototype.updateCompositionElements = function (dontRecurse) {\n        var _this = this;\n        if (!this._isComposing) {\n            return;\n        }\n        if (this._terminal.buffer.isCursorInViewport) {\n            var cellHeight = Math.ceil(this._terminal.charMeasure.height * this._terminal.options.lineHeight);\n            var cursorTop = this._terminal.buffer.y * cellHeight;\n            var cursorLeft = this._terminal.buffer.x * this._terminal.charMeasure.width;\n            this._compositionView.style.left = cursorLeft + 'px';\n            this._compositionView.style.top = cursorTop + 'px';\n            this._compositionView.style.height = cellHeight + 'px';\n            this._compositionView.style.lineHeight = cellHeight + 'px';\n            this._compositionView.style.fontFamily = this._terminal.options.fontFamily;\n            this._compositionView.style.fontSize = this._terminal.options.fontSize + 'px';\n            var compositionViewBounds = this._compositionView.getBoundingClientRect();\n            this._textarea.style.left = cursorLeft + 'px';\n            this._textarea.style.top = cursorTop + 'px';\n            this._textarea.style.width = compositionViewBounds.width + 'px';\n            this._textarea.style.height = compositionViewBounds.height + 'px';\n            this._textarea.style.lineHeight = compositionViewBounds.height + 'px';\n        }\n        if (!dontRecurse) {\n            setTimeout(function () { return _this.updateCompositionElements(true); }, 0);\n        }\n    };\n    CompositionHelper.prototype._clearTextareaPosition = function () {\n        this._textarea.style.left = '';\n        this._textarea.style.top = '';\n    };\n    return CompositionHelper;\n}());\nexports.CompositionHelper = CompositionHelper;\n\n},{}],8:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lifecycle_1 = require(\"./common/Lifecycle\");\nvar TextDecoder_1 = require(\"./core/input/TextDecoder\");\nfunction r(low, high) {\n    var c = high - low;\n    var arr = new Array(c);\n    while (c--) {\n        arr[c] = --high;\n    }\n    return arr;\n}\nvar TransitionTable = (function () {\n    function TransitionTable(length) {\n        this.table = (typeof Uint8Array === 'undefined')\n            ? new Array(length)\n            : new Uint8Array(length);\n    }\n    TransitionTable.prototype.add = function (code, state, action, next) {\n        this.table[state << 8 | code] = ((action | 0) << 4) | ((next === undefined) ? state : next);\n    };\n    TransitionTable.prototype.addMany = function (codes, state, action, next) {\n        for (var i = 0; i < codes.length; i++) {\n            this.add(codes[i], state, action, next);\n        }\n    };\n    return TransitionTable;\n}());\nexports.TransitionTable = TransitionTable;\nvar PRINTABLES = r(0x20, 0x7f);\nvar EXECUTABLES = r(0x00, 0x18);\nEXECUTABLES.push(0x19);\nEXECUTABLES.push.apply(EXECUTABLES, r(0x1c, 0x20));\nvar NON_ASCII_PRINTABLE = 0xA0;\nexports.VT500_TRANSITION_TABLE = (function () {\n    var table = new TransitionTable(4095);\n    var states = r(0, 13 + 1);\n    var state;\n    for (state in states) {\n        for (var code = 0; code <= NON_ASCII_PRINTABLE; ++code) {\n            table.add(code, state, 1, 0);\n        }\n    }\n    table.addMany(PRINTABLES, 0, 2, 0);\n    for (state in states) {\n        table.addMany([0x18, 0x1a, 0x99, 0x9a], state, 3, 0);\n        table.addMany(r(0x80, 0x90), state, 3, 0);\n        table.addMany(r(0x90, 0x98), state, 3, 0);\n        table.add(0x9c, state, 0, 0);\n        table.add(0x1b, state, 11, 1);\n        table.add(0x9d, state, 4, 8);\n        table.addMany([0x98, 0x9e, 0x9f], state, 0, 7);\n        table.add(0x9b, state, 11, 3);\n        table.add(0x90, state, 11, 9);\n    }\n    table.addMany(EXECUTABLES, 0, 3, 0);\n    table.addMany(EXECUTABLES, 1, 3, 1);\n    table.add(0x7f, 1, 0, 1);\n    table.addMany(EXECUTABLES, 8, 0, 8);\n    table.addMany(EXECUTABLES, 3, 3, 3);\n    table.add(0x7f, 3, 0, 3);\n    table.addMany(EXECUTABLES, 4, 3, 4);\n    table.add(0x7f, 4, 0, 4);\n    table.addMany(EXECUTABLES, 6, 3, 6);\n    table.addMany(EXECUTABLES, 5, 3, 5);\n    table.add(0x7f, 5, 0, 5);\n    table.addMany(EXECUTABLES, 2, 3, 2);\n    table.add(0x7f, 2, 0, 2);\n    table.add(0x5d, 1, 4, 8);\n    table.addMany(PRINTABLES, 8, 5, 8);\n    table.add(0x7f, 8, 5, 8);\n    table.addMany([0x9c, 0x1b, 0x18, 0x1a, 0x07], 8, 6, 0);\n    table.addMany(r(0x1c, 0x20), 8, 0, 8);\n    table.addMany([0x58, 0x5e, 0x5f], 1, 0, 7);\n    table.addMany(PRINTABLES, 7, 0, 7);\n    table.addMany(EXECUTABLES, 7, 0, 7);\n    table.add(0x9c, 7, 0, 0);\n    table.add(0x7f, 7, 0, 7);\n    table.add(0x5b, 1, 11, 3);\n    table.addMany(r(0x40, 0x7f), 3, 7, 0);\n    table.addMany(r(0x30, 0x3a), 3, 8, 4);\n    table.add(0x3b, 3, 8, 4);\n    table.addMany([0x3c, 0x3d, 0x3e, 0x3f], 3, 9, 4);\n    table.addMany(r(0x30, 0x3a), 4, 8, 4);\n    table.add(0x3b, 4, 8, 4);\n    table.addMany(r(0x40, 0x7f), 4, 7, 0);\n    table.addMany([0x3a, 0x3c, 0x3d, 0x3e, 0x3f], 4, 0, 6);\n    table.addMany(r(0x20, 0x40), 6, 0, 6);\n    table.add(0x7f, 6, 0, 6);\n    table.addMany(r(0x40, 0x7f), 6, 0, 0);\n    table.add(0x3a, 3, 0, 6);\n    table.addMany(r(0x20, 0x30), 3, 9, 5);\n    table.addMany(r(0x20, 0x30), 5, 9, 5);\n    table.addMany(r(0x30, 0x40), 5, 0, 6);\n    table.addMany(r(0x40, 0x7f), 5, 7, 0);\n    table.addMany(r(0x20, 0x30), 4, 9, 5);\n    table.addMany(r(0x20, 0x30), 1, 9, 2);\n    table.addMany(r(0x20, 0x30), 2, 9, 2);\n    table.addMany(r(0x30, 0x7f), 2, 10, 0);\n    table.addMany(r(0x30, 0x50), 1, 10, 0);\n    table.addMany(r(0x51, 0x58), 1, 10, 0);\n    table.addMany([0x59, 0x5a, 0x5c], 1, 10, 0);\n    table.addMany(r(0x60, 0x7f), 1, 10, 0);\n    table.add(0x50, 1, 11, 9);\n    table.addMany(EXECUTABLES, 9, 0, 9);\n    table.add(0x7f, 9, 0, 9);\n    table.addMany(r(0x1c, 0x20), 9, 0, 9);\n    table.addMany(r(0x20, 0x30), 9, 9, 12);\n    table.add(0x3a, 9, 0, 11);\n    table.addMany(r(0x30, 0x3a), 9, 8, 10);\n    table.add(0x3b, 9, 8, 10);\n    table.addMany([0x3c, 0x3d, 0x3e, 0x3f], 9, 9, 10);\n    table.addMany(EXECUTABLES, 11, 0, 11);\n    table.addMany(r(0x20, 0x80), 11, 0, 11);\n    table.addMany(r(0x1c, 0x20), 11, 0, 11);\n    table.addMany(EXECUTABLES, 10, 0, 10);\n    table.add(0x7f, 10, 0, 10);\n    table.addMany(r(0x1c, 0x20), 10, 0, 10);\n    table.addMany(r(0x30, 0x3a), 10, 8, 10);\n    table.add(0x3b, 10, 8, 10);\n    table.addMany([0x3a, 0x3c, 0x3d, 0x3e, 0x3f], 10, 0, 11);\n    table.addMany(r(0x20, 0x30), 10, 9, 12);\n    table.addMany(EXECUTABLES, 12, 0, 12);\n    table.add(0x7f, 12, 0, 12);\n    table.addMany(r(0x1c, 0x20), 12, 0, 12);\n    table.addMany(r(0x20, 0x30), 12, 9, 12);\n    table.addMany(r(0x30, 0x40), 12, 0, 11);\n    table.addMany(r(0x40, 0x7f), 12, 12, 13);\n    table.addMany(r(0x40, 0x7f), 10, 12, 13);\n    table.addMany(r(0x40, 0x7f), 9, 12, 13);\n    table.addMany(EXECUTABLES, 13, 13, 13);\n    table.addMany(PRINTABLES, 13, 13, 13);\n    table.add(0x7f, 13, 0, 13);\n    table.addMany([0x1b, 0x9c], 13, 14, 0);\n    table.add(NON_ASCII_PRINTABLE, 8, 5, 8);\n    return table;\n})();\nvar DcsDummy = (function () {\n    function DcsDummy() {\n    }\n    DcsDummy.prototype.hook = function (collect, params, flag) { };\n    DcsDummy.prototype.put = function (data, start, end) { };\n    DcsDummy.prototype.unhook = function () { };\n    return DcsDummy;\n}());\nvar EscapeSequenceParser = (function (_super) {\n    __extends(EscapeSequenceParser, _super);\n    function EscapeSequenceParser(TRANSITIONS) {\n        if (TRANSITIONS === void 0) { TRANSITIONS = exports.VT500_TRANSITION_TABLE; }\n        var _this = _super.call(this) || this;\n        _this.TRANSITIONS = TRANSITIONS;\n        _this.initialState = 0;\n        _this.currentState = _this.initialState;\n        _this._osc = '';\n        _this._params = [0];\n        _this._collect = '';\n        _this._printHandlerFb = function (data, start, end) { };\n        _this._executeHandlerFb = function (code) { };\n        _this._csiHandlerFb = function (collect, params, flag) { };\n        _this._escHandlerFb = function (collect, flag) { };\n        _this._oscHandlerFb = function (identifier, data) { };\n        _this._dcsHandlerFb = new DcsDummy();\n        _this._errorHandlerFb = function (state) { return state; };\n        _this._printHandler = _this._printHandlerFb;\n        _this._executeHandlers = Object.create(null);\n        _this._csiHandlers = Object.create(null);\n        _this._escHandlers = Object.create(null);\n        _this._oscHandlers = Object.create(null);\n        _this._dcsHandlers = Object.create(null);\n        _this._activeDcsHandler = null;\n        _this._errorHandler = _this._errorHandlerFb;\n        _this.setEscHandler('\\\\', function () { });\n        return _this;\n    }\n    EscapeSequenceParser.prototype.dispose = function () {\n        this._printHandlerFb = null;\n        this._executeHandlerFb = null;\n        this._csiHandlerFb = null;\n        this._escHandlerFb = null;\n        this._oscHandlerFb = null;\n        this._dcsHandlerFb = null;\n        this._errorHandlerFb = null;\n        this._printHandler = null;\n        this._executeHandlers = null;\n        this._escHandlers = null;\n        this._csiHandlers = null;\n        this._oscHandlers = null;\n        this._dcsHandlers = null;\n        this._activeDcsHandler = null;\n        this._errorHandler = null;\n    };\n    EscapeSequenceParser.prototype.setPrintHandler = function (callback) {\n        this._printHandler = callback;\n    };\n    EscapeSequenceParser.prototype.clearPrintHandler = function () {\n        this._printHandler = this._printHandlerFb;\n    };\n    EscapeSequenceParser.prototype.setExecuteHandler = function (flag, callback) {\n        this._executeHandlers[flag.charCodeAt(0)] = callback;\n    };\n    EscapeSequenceParser.prototype.clearExecuteHandler = function (flag) {\n        if (this._executeHandlers[flag.charCodeAt(0)])\n            delete this._executeHandlers[flag.charCodeAt(0)];\n    };\n    EscapeSequenceParser.prototype.setExecuteHandlerFallback = function (callback) {\n        this._executeHandlerFb = callback;\n    };\n    EscapeSequenceParser.prototype.addCsiHandler = function (flag, callback) {\n        var index = flag.charCodeAt(0);\n        if (this._csiHandlers[index] === undefined) {\n            this._csiHandlers[index] = [];\n        }\n        var handlerList = this._csiHandlers[index];\n        handlerList.push(callback);\n        return {\n            dispose: function () {\n                var handlerIndex = handlerList.indexOf(callback);\n                if (handlerIndex !== -1) {\n                    handlerList.splice(handlerIndex, 1);\n                }\n            }\n        };\n    };\n    EscapeSequenceParser.prototype.setCsiHandler = function (flag, callback) {\n        this._csiHandlers[flag.charCodeAt(0)] = [callback];\n    };\n    EscapeSequenceParser.prototype.clearCsiHandler = function (flag) {\n        if (this._csiHandlers[flag.charCodeAt(0)])\n            delete this._csiHandlers[flag.charCodeAt(0)];\n    };\n    EscapeSequenceParser.prototype.setCsiHandlerFallback = function (callback) {\n        this._csiHandlerFb = callback;\n    };\n    EscapeSequenceParser.prototype.setEscHandler = function (collectAndFlag, callback) {\n        this._escHandlers[collectAndFlag] = callback;\n    };\n    EscapeSequenceParser.prototype.clearEscHandler = function (collectAndFlag) {\n        if (this._escHandlers[collectAndFlag])\n            delete this._escHandlers[collectAndFlag];\n    };\n    EscapeSequenceParser.prototype.setEscHandlerFallback = function (callback) {\n        this._escHandlerFb = callback;\n    };\n    EscapeSequenceParser.prototype.addOscHandler = function (ident, callback) {\n        if (this._oscHandlers[ident] === undefined) {\n            this._oscHandlers[ident] = [];\n        }\n        var handlerList = this._oscHandlers[ident];\n        handlerList.push(callback);\n        return {\n            dispose: function () {\n                var handlerIndex = handlerList.indexOf(callback);\n                if (handlerIndex !== -1) {\n                    handlerList.splice(handlerIndex, 1);\n                }\n            }\n        };\n    };\n    EscapeSequenceParser.prototype.setOscHandler = function (ident, callback) {\n        this._oscHandlers[ident] = [callback];\n    };\n    EscapeSequenceParser.prototype.clearOscHandler = function (ident) {\n        if (this._oscHandlers[ident])\n            delete this._oscHandlers[ident];\n    };\n    EscapeSequenceParser.prototype.setOscHandlerFallback = function (callback) {\n        this._oscHandlerFb = callback;\n    };\n    EscapeSequenceParser.prototype.setDcsHandler = function (collectAndFlag, handler) {\n        this._dcsHandlers[collectAndFlag] = handler;\n    };\n    EscapeSequenceParser.prototype.clearDcsHandler = function (collectAndFlag) {\n        if (this._dcsHandlers[collectAndFlag])\n            delete this._dcsHandlers[collectAndFlag];\n    };\n    EscapeSequenceParser.prototype.setDcsHandlerFallback = function (handler) {\n        this._dcsHandlerFb = handler;\n    };\n    EscapeSequenceParser.prototype.setErrorHandler = function (callback) {\n        this._errorHandler = callback;\n    };\n    EscapeSequenceParser.prototype.clearErrorHandler = function () {\n        this._errorHandler = this._errorHandlerFb;\n    };\n    EscapeSequenceParser.prototype.reset = function () {\n        this.currentState = this.initialState;\n        this._osc = '';\n        this._params = [0];\n        this._collect = '';\n        this._activeDcsHandler = null;\n    };\n    EscapeSequenceParser.prototype.parse = function (data, length) {\n        var code = 0;\n        var transition = 0;\n        var error = false;\n        var currentState = this.currentState;\n        var print = -1;\n        var dcs = -1;\n        var osc = this._osc;\n        var collect = this._collect;\n        var params = this._params;\n        var table = this.TRANSITIONS.table;\n        var dcsHandler = this._activeDcsHandler;\n        var callback = null;\n        for (var i = 0; i < length; ++i) {\n            code = data[i];\n            if (currentState === 0 && code > 0x1f && code < 0x80) {\n                print = (~print) ? print : i;\n                do\n                    i++;\n                while (i < length && data[i] > 0x1f && data[i] < 0x80);\n                i--;\n                continue;\n            }\n            if (currentState === 4 && (code > 0x2f && code < 0x39)) {\n                params[params.length - 1] = params[params.length - 1] * 10 + code - 48;\n                continue;\n            }\n            transition = table[currentState << 8 | (code < 0xa0 ? code : NON_ASCII_PRINTABLE)];\n            switch (transition >> 4) {\n                case 2:\n                    print = (~print) ? print : i;\n                    break;\n                case 3:\n                    if (~print) {\n                        this._printHandler(data, print, i);\n                        print = -1;\n                    }\n                    callback = this._executeHandlers[code];\n                    if (callback)\n                        callback();\n                    else\n                        this._executeHandlerFb(code);\n                    break;\n                case 0:\n                    if (~print) {\n                        this._printHandler(data, print, i);\n                        print = -1;\n                    }\n                    else if (~dcs) {\n                        dcsHandler.put(data, dcs, i);\n                        dcs = -1;\n                    }\n                    break;\n                case 1:\n                    if (code > 0x9f) {\n                        switch (currentState) {\n                            case 0:\n                                print = (~print) ? print : i;\n                                break;\n                            case 6:\n                                transition |= 6;\n                                break;\n                            case 11:\n                                transition |= 11;\n                                break;\n                            case 13:\n                                dcs = (~dcs) ? dcs : i;\n                                transition |= 13;\n                                break;\n                            default:\n                                error = true;\n                        }\n                    }\n                    else {\n                        error = true;\n                    }\n                    if (error) {\n                        var inject = this._errorHandler({\n                            position: i,\n                            code: code,\n                            currentState: currentState,\n                            print: print,\n                            dcs: dcs,\n                            osc: osc,\n                            collect: collect,\n                            params: params,\n                            abort: false\n                        });\n                        if (inject.abort)\n                            return;\n                        error = false;\n                    }\n                    break;\n                case 7:\n                    var handlers = this._csiHandlers[code];\n                    var j = handlers ? handlers.length - 1 : -1;\n                    for (; j >= 0; j--) {\n                        if (handlers[j](params, collect) !== false) {\n                            break;\n                        }\n                    }\n                    if (j < 0) {\n                        this._csiHandlerFb(collect, params, code);\n                    }\n                    break;\n                case 8:\n                    if (code === 0x3b)\n                        params.push(0);\n                    else\n                        params[params.length - 1] = params[params.length - 1] * 10 + code - 48;\n                    break;\n                case 9:\n                    collect += String.fromCharCode(code);\n                    break;\n                case 10:\n                    callback = this._escHandlers[collect + String.fromCharCode(code)];\n                    if (callback)\n                        callback(collect, code);\n                    else\n                        this._escHandlerFb(collect, code);\n                    break;\n                case 11:\n                    if (~print) {\n                        this._printHandler(data, print, i);\n                        print = -1;\n                    }\n                    osc = '';\n                    params = [0];\n                    collect = '';\n                    dcs = -1;\n                    break;\n                case 12:\n                    dcsHandler = this._dcsHandlers[collect + String.fromCharCode(code)];\n                    if (!dcsHandler)\n                        dcsHandler = this._dcsHandlerFb;\n                    dcsHandler.hook(collect, params, code);\n                    break;\n                case 13:\n                    dcs = (~dcs) ? dcs : i;\n                    break;\n                case 14:\n                    if (dcsHandler) {\n                        if (~dcs)\n                            dcsHandler.put(data, dcs, i);\n                        dcsHandler.unhook();\n                        dcsHandler = null;\n                    }\n                    if (code === 0x1b)\n                        transition |= 1;\n                    osc = '';\n                    params = [0];\n                    collect = '';\n                    dcs = -1;\n                    break;\n                case 4:\n                    if (~print) {\n                        this._printHandler(data, print, i);\n                        print = -1;\n                    }\n                    osc = '';\n                    break;\n                case 5:\n                    for (var j_1 = i + 1;; j_1++) {\n                        if (j_1 >= length\n                            || (code = data[j_1]) < 0x20\n                            || (code > 0x7f && code <= 0x9f)) {\n                            osc += TextDecoder_1.utf32ToString(data, i, j_1);\n                            i = j_1 - 1;\n                            break;\n                        }\n                    }\n                    break;\n                case 6:\n                    if (osc && code !== 0x18 && code !== 0x1a) {\n                        var idx = osc.indexOf(';');\n                        if (idx === -1) {\n                            this._oscHandlerFb(-1, osc);\n                        }\n                        else {\n                            var identifier = parseInt(osc.substring(0, idx));\n                            var content = osc.substring(idx + 1);\n                            var handlers_1 = this._oscHandlers[identifier];\n                            var j_2 = handlers_1 ? handlers_1.length - 1 : -1;\n                            for (; j_2 >= 0; j_2--) {\n                                if (handlers_1[j_2](content) !== false) {\n                                    break;\n                                }\n                            }\n                            if (j_2 < 0) {\n                                this._oscHandlerFb(identifier, content);\n                            }\n                        }\n                    }\n                    if (code === 0x1b)\n                        transition |= 1;\n                    osc = '';\n                    params = [0];\n                    collect = '';\n                    dcs = -1;\n                    break;\n            }\n            currentState = transition & 15;\n        }\n        if (currentState === 0 && ~print) {\n            this._printHandler(data, print, length);\n        }\n        else if (currentState === 13 && ~dcs && dcsHandler) {\n            dcsHandler.put(data, dcs, length);\n        }\n        this._osc = osc;\n        this._collect = collect;\n        this._params = params;\n        this._activeDcsHandler = dcsHandler;\n        this.currentState = currentState;\n    };\n    return EscapeSequenceParser;\n}(Lifecycle_1.Disposable));\nexports.EscapeSequenceParser = EscapeSequenceParser;\n\n},{\"./common/Lifecycle\":24,\"./core/input/TextDecoder\":34}],9:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EscapeSequences_1 = require(\"./common/data/EscapeSequences\");\nvar Charsets_1 = require(\"./core/data/Charsets\");\nvar CharWidth_1 = require(\"./CharWidth\");\nvar EscapeSequenceParser_1 = require(\"./EscapeSequenceParser\");\nvar Lifecycle_1 = require(\"./common/Lifecycle\");\nvar TypedArrayUtils_1 = require(\"./common/TypedArrayUtils\");\nvar TextDecoder_1 = require(\"./core/input/TextDecoder\");\nvar BufferLine_1 = require(\"./core/buffer/BufferLine\");\nvar EventEmitter2_1 = require(\"./common/EventEmitter2\");\nvar GLEVEL = { '(': 0, ')': 1, '*': 2, '+': 3, '-': 1, '.': 2 };\nvar DECRQSS = (function () {\n    function DECRQSS(_terminal) {\n        this._terminal = _terminal;\n        this._data = new Uint32Array(0);\n    }\n    DECRQSS.prototype.hook = function (collect, params, flag) {\n        this._data = new Uint32Array(0);\n    };\n    DECRQSS.prototype.put = function (data, start, end) {\n        this._data = TypedArrayUtils_1.concat(this._data, data.subarray(start, end));\n    };\n    DECRQSS.prototype.unhook = function () {\n        var data = TextDecoder_1.utf32ToString(this._data);\n        this._data = new Uint32Array(0);\n        switch (data) {\n            case '\"q':\n                return this._terminal.handler(EscapeSequences_1.C0.ESC + \"P1$r0\\\"q\" + EscapeSequences_1.C0.ESC + \"\\\\\");\n            case '\"p':\n                return this._terminal.handler(EscapeSequences_1.C0.ESC + \"P1$r61\\\"p\" + EscapeSequences_1.C0.ESC + \"\\\\\");\n            case 'r':\n                var pt = '' + (this._terminal.buffer.scrollTop + 1) +\n                    ';' + (this._terminal.buffer.scrollBottom + 1) + 'r';\n                return this._terminal.handler(EscapeSequences_1.C0.ESC + \"P1$r\" + pt + EscapeSequences_1.C0.ESC + \"\\\\\");\n            case 'm':\n                return this._terminal.handler(EscapeSequences_1.C0.ESC + \"P1$r0m\" + EscapeSequences_1.C0.ESC + \"\\\\\");\n            case ' q':\n                var STYLES = { 'block': 2, 'underline': 4, 'bar': 6 };\n                var style = STYLES[this._terminal.getOption('cursorStyle')];\n                style -= this._terminal.getOption('cursorBlink');\n                return this._terminal.handler(EscapeSequences_1.C0.ESC + \"P1$r\" + style + \" q\" + EscapeSequences_1.C0.ESC + \"\\\\\");\n            default:\n                this._terminal.error('Unknown DCS $q %s', data);\n                this._terminal.handler(EscapeSequences_1.C0.ESC + \"P0$r\" + EscapeSequences_1.C0.ESC + \"\\\\\");\n        }\n    };\n    return DECRQSS;\n}());\nvar InputHandler = (function (_super) {\n    __extends(InputHandler, _super);\n    function InputHandler(_terminal, _parser) {\n        if (_parser === void 0) { _parser = new EscapeSequenceParser_1.EscapeSequenceParser(); }\n        var _this = _super.call(this) || this;\n        _this._terminal = _terminal;\n        _this._parser = _parser;\n        _this._parseBuffer = new Uint32Array(4096);\n        _this._stringDecoder = new TextDecoder_1.StringToUtf32();\n        _this._utf8Decoder = new TextDecoder_1.Utf8ToUtf32();\n        _this._workCell = new BufferLine_1.CellData();\n        _this._onCursorMove = new EventEmitter2_1.EventEmitter2();\n        _this._onData = new EventEmitter2_1.EventEmitter2();\n        _this._onLineFeed = new EventEmitter2_1.EventEmitter2();\n        _this._onScroll = new EventEmitter2_1.EventEmitter2();\n        _this.register(_this._parser);\n        _this._parser.setCsiHandlerFallback(function (collect, params, flag) {\n            _this._terminal.error('Unknown CSI code: ', { collect: collect, params: params, flag: String.fromCharCode(flag) });\n        });\n        _this._parser.setEscHandlerFallback(function (collect, flag) {\n            _this._terminal.error('Unknown ESC code: ', { collect: collect, flag: String.fromCharCode(flag) });\n        });\n        _this._parser.setExecuteHandlerFallback(function (code) {\n            _this._terminal.error('Unknown EXECUTE code: ', { code: code });\n        });\n        _this._parser.setOscHandlerFallback(function (identifier, data) {\n            _this._terminal.error('Unknown OSC code: ', { identifier: identifier, data: data });\n        });\n        _this._parser.setPrintHandler(function (data, start, end) { return _this.print(data, start, end); });\n        _this._parser.setCsiHandler('@', function (params, collect) { return _this.insertChars(params); });\n        _this._parser.setCsiHandler('A', function (params, collect) { return _this.cursorUp(params); });\n        _this._parser.setCsiHandler('B', function (params, collect) { return _this.cursorDown(params); });\n        _this._parser.setCsiHandler('C', function (params, collect) { return _this.cursorForward(params); });\n        _this._parser.setCsiHandler('D', function (params, collect) { return _this.cursorBackward(params); });\n        _this._parser.setCsiHandler('E', function (params, collect) { return _this.cursorNextLine(params); });\n        _this._parser.setCsiHandler('F', function (params, collect) { return _this.cursorPrecedingLine(params); });\n        _this._parser.setCsiHandler('G', function (params, collect) { return _this.cursorCharAbsolute(params); });\n        _this._parser.setCsiHandler('H', function (params, collect) { return _this.cursorPosition(params); });\n        _this._parser.setCsiHandler('I', function (params, collect) { return _this.cursorForwardTab(params); });\n        _this._parser.setCsiHandler('J', function (params, collect) { return _this.eraseInDisplay(params); });\n        _this._parser.setCsiHandler('K', function (params, collect) { return _this.eraseInLine(params); });\n        _this._parser.setCsiHandler('L', function (params, collect) { return _this.insertLines(params); });\n        _this._parser.setCsiHandler('M', function (params, collect) { return _this.deleteLines(params); });\n        _this._parser.setCsiHandler('P', function (params, collect) { return _this.deleteChars(params); });\n        _this._parser.setCsiHandler('S', function (params, collect) { return _this.scrollUp(params); });\n        _this._parser.setCsiHandler('T', function (params, collect) { return _this.scrollDown(params, collect); });\n        _this._parser.setCsiHandler('X', function (params, collect) { return _this.eraseChars(params); });\n        _this._parser.setCsiHandler('Z', function (params, collect) { return _this.cursorBackwardTab(params); });\n        _this._parser.setCsiHandler('`', function (params, collect) { return _this.charPosAbsolute(params); });\n        _this._parser.setCsiHandler('a', function (params, collect) { return _this.hPositionRelative(params); });\n        _this._parser.setCsiHandler('b', function (params, collect) { return _this.repeatPrecedingCharacter(params); });\n        _this._parser.setCsiHandler('c', function (params, collect) { return _this.sendDeviceAttributes(params, collect); });\n        _this._parser.setCsiHandler('d', function (params, collect) { return _this.linePosAbsolute(params); });\n        _this._parser.setCsiHandler('e', function (params, collect) { return _this.vPositionRelative(params); });\n        _this._parser.setCsiHandler('f', function (params, collect) { return _this.hVPosition(params); });\n        _this._parser.setCsiHandler('g', function (params, collect) { return _this.tabClear(params); });\n        _this._parser.setCsiHandler('h', function (params, collect) { return _this.setMode(params, collect); });\n        _this._parser.setCsiHandler('l', function (params, collect) { return _this.resetMode(params, collect); });\n        _this._parser.setCsiHandler('m', function (params, collect) { return _this.charAttributes(params); });\n        _this._parser.setCsiHandler('n', function (params, collect) { return _this.deviceStatus(params, collect); });\n        _this._parser.setCsiHandler('p', function (params, collect) { return _this.softReset(params, collect); });\n        _this._parser.setCsiHandler('q', function (params, collect) { return _this.setCursorStyle(params, collect); });\n        _this._parser.setCsiHandler('r', function (params, collect) { return _this.setScrollRegion(params, collect); });\n        _this._parser.setCsiHandler('s', function (params, collect) { return _this.saveCursor(params); });\n        _this._parser.setCsiHandler('u', function (params, collect) { return _this.restoreCursor(params); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.BEL, function () { return _this.bell(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.LF, function () { return _this.lineFeed(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.VT, function () { return _this.lineFeed(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.FF, function () { return _this.lineFeed(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.CR, function () { return _this.carriageReturn(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.BS, function () { return _this.backspace(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.HT, function () { return _this.tab(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.SO, function () { return _this.shiftOut(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C0.SI, function () { return _this.shiftIn(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C1.IND, function () { return _this.index(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C1.NEL, function () { return _this.nextLine(); });\n        _this._parser.setExecuteHandler(EscapeSequences_1.C1.HTS, function () { return _this.tabSet(); });\n        _this._parser.setOscHandler(0, function (data) { return _this.setTitle(data); });\n        _this._parser.setOscHandler(2, function (data) { return _this.setTitle(data); });\n        _this._parser.setEscHandler('7', function () { return _this.saveCursor([]); });\n        _this._parser.setEscHandler('8', function () { return _this.restoreCursor([]); });\n        _this._parser.setEscHandler('D', function () { return _this.index(); });\n        _this._parser.setEscHandler('E', function () { return _this.nextLine(); });\n        _this._parser.setEscHandler('H', function () { return _this.tabSet(); });\n        _this._parser.setEscHandler('M', function () { return _this.reverseIndex(); });\n        _this._parser.setEscHandler('=', function () { return _this.keypadApplicationMode(); });\n        _this._parser.setEscHandler('>', function () { return _this.keypadNumericMode(); });\n        _this._parser.setEscHandler('c', function () { return _this.reset(); });\n        _this._parser.setEscHandler('n', function () { return _this.setgLevel(2); });\n        _this._parser.setEscHandler('o', function () { return _this.setgLevel(3); });\n        _this._parser.setEscHandler('|', function () { return _this.setgLevel(3); });\n        _this._parser.setEscHandler('}', function () { return _this.setgLevel(2); });\n        _this._parser.setEscHandler('~', function () { return _this.setgLevel(1); });\n        _this._parser.setEscHandler('%@', function () { return _this.selectDefaultCharset(); });\n        _this._parser.setEscHandler('%G', function () { return _this.selectDefaultCharset(); });\n        var _loop_1 = function (flag) {\n            this_1._parser.setEscHandler('(' + flag, function () { return _this.selectCharset('(' + flag); });\n            this_1._parser.setEscHandler(')' + flag, function () { return _this.selectCharset(')' + flag); });\n            this_1._parser.setEscHandler('*' + flag, function () { return _this.selectCharset('*' + flag); });\n            this_1._parser.setEscHandler('+' + flag, function () { return _this.selectCharset('+' + flag); });\n            this_1._parser.setEscHandler('-' + flag, function () { return _this.selectCharset('-' + flag); });\n            this_1._parser.setEscHandler('.' + flag, function () { return _this.selectCharset('.' + flag); });\n            this_1._parser.setEscHandler('/' + flag, function () { return _this.selectCharset('/' + flag); });\n        };\n        var this_1 = this;\n        for (var flag in Charsets_1.CHARSETS) {\n            _loop_1(flag);\n        }\n        _this._parser.setErrorHandler(function (state) {\n            _this._terminal.error('Parsing error: ', state);\n            return state;\n        });\n        _this._parser.setDcsHandler('$q', new DECRQSS(_this._terminal));\n        return _this;\n    }\n    Object.defineProperty(InputHandler.prototype, \"onCursorMove\", {\n        get: function () { return this._onCursorMove.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(InputHandler.prototype, \"onData\", {\n        get: function () { return this._onData.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(InputHandler.prototype, \"onLineFeed\", {\n        get: function () { return this._onLineFeed.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(InputHandler.prototype, \"onScroll\", {\n        get: function () { return this._onScroll.event; },\n        enumerable: true,\n        configurable: true\n    });\n    InputHandler.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        this._terminal = null;\n    };\n    InputHandler.prototype.parse = function (data) {\n        if (!this._terminal) {\n            return;\n        }\n        var buffer = this._terminal.buffer;\n        var cursorStartX = buffer.x;\n        var cursorStartY = buffer.y;\n        if (this._terminal.debug) {\n            this._terminal.log('data: ' + data);\n        }\n        if (this._parseBuffer.length < data.length) {\n            this._parseBuffer = new Uint32Array(data.length);\n        }\n        this._parser.parse(this._parseBuffer, this._stringDecoder.decode(data, this._parseBuffer));\n        buffer = this._terminal.buffer;\n        if (buffer.x !== cursorStartX || buffer.y !== cursorStartY) {\n            this._onCursorMove.fire();\n        }\n    };\n    InputHandler.prototype.parseUtf8 = function (data) {\n        if (!this._terminal) {\n            return;\n        }\n        var buffer = this._terminal.buffer;\n        var cursorStartX = buffer.x;\n        var cursorStartY = buffer.y;\n        if (this._terminal.debug) {\n            this._terminal.log('data: ' + data);\n        }\n        if (this._parseBuffer.length < data.length) {\n            this._parseBuffer = new Uint32Array(data.length);\n        }\n        this._parser.parse(this._parseBuffer, this._utf8Decoder.decode(data, this._parseBuffer));\n        buffer = this._terminal.buffer;\n        if (buffer.x !== cursorStartX || buffer.y !== cursorStartY) {\n            this._terminal.emit('cursormove');\n        }\n    };\n    InputHandler.prototype.print = function (data, start, end) {\n        var code;\n        var chWidth;\n        var buffer = this._terminal.buffer;\n        var charset = this._terminal.charset;\n        var screenReaderMode = this._terminal.options.screenReaderMode;\n        var cols = this._terminal.cols;\n        var wraparoundMode = this._terminal.wraparoundMode;\n        var insertMode = this._terminal.insertMode;\n        var curAttr = this._terminal.curAttrData;\n        var bufferRow = buffer.lines.get(buffer.y + buffer.ybase);\n        this._terminal.updateRange(buffer.y);\n        for (var pos = start; pos < end; ++pos) {\n            code = data[pos];\n            chWidth = CharWidth_1.wcwidth(code);\n            if (code < 127 && charset) {\n                var ch = charset[String.fromCharCode(code)];\n                if (ch) {\n                    code = ch.charCodeAt(0);\n                }\n            }\n            if (screenReaderMode) {\n                this._terminal.emit('a11y.char', TextDecoder_1.stringFromCodePoint(code));\n            }\n            if (!chWidth && buffer.x) {\n                if (!bufferRow.getWidth(buffer.x - 1)) {\n                    bufferRow.addCodepointToCell(buffer.x - 2, code);\n                }\n                else {\n                    bufferRow.addCodepointToCell(buffer.x - 1, code);\n                }\n                continue;\n            }\n            if (buffer.x + chWidth - 1 >= cols) {\n                if (wraparoundMode) {\n                    buffer.x = 0;\n                    buffer.y++;\n                    if (buffer.y > buffer.scrollBottom) {\n                        buffer.y--;\n                        this._terminal.scroll(true);\n                    }\n                    else {\n                        buffer.lines.get(buffer.y).isWrapped = true;\n                    }\n                    bufferRow = buffer.lines.get(buffer.y + buffer.ybase);\n                }\n                else {\n                    if (chWidth === 2) {\n                        continue;\n                    }\n                }\n            }\n            if (insertMode) {\n                bufferRow.insertCells(buffer.x, chWidth, buffer.getNullCell(curAttr));\n                if (bufferRow.getWidth(cols - 1) === 2) {\n                    bufferRow.setCellFromCodePoint(cols - 1, BufferLine_1.NULL_CELL_CODE, BufferLine_1.NULL_CELL_WIDTH, curAttr.fg, curAttr.bg);\n                }\n            }\n            bufferRow.setCellFromCodePoint(buffer.x++, code, chWidth, curAttr.fg, curAttr.bg);\n            if (chWidth > 0) {\n                while (--chWidth) {\n                    bufferRow.setCellFromCodePoint(buffer.x++, 0, 0, curAttr.fg, curAttr.bg);\n                }\n            }\n        }\n        this._terminal.updateRange(buffer.y);\n    };\n    InputHandler.prototype.addCsiHandler = function (flag, callback) {\n        return this._parser.addCsiHandler(flag, callback);\n    };\n    InputHandler.prototype.addOscHandler = function (ident, callback) {\n        return this._parser.addOscHandler(ident, callback);\n    };\n    InputHandler.prototype.bell = function () {\n        this._terminal.bell();\n    };\n    InputHandler.prototype.lineFeed = function () {\n        var buffer = this._terminal.buffer;\n        if (this._terminal.options.convertEol) {\n            buffer.x = 0;\n        }\n        buffer.y++;\n        if (buffer.y > buffer.scrollBottom) {\n            buffer.y--;\n            this._terminal.scroll();\n        }\n        if (buffer.x >= this._terminal.cols) {\n            buffer.x--;\n        }\n        this._onLineFeed.fire();\n    };\n    InputHandler.prototype.carriageReturn = function () {\n        this._terminal.buffer.x = 0;\n    };\n    InputHandler.prototype.backspace = function () {\n        if (this._terminal.buffer.x > 0) {\n            this._terminal.buffer.x--;\n        }\n    };\n    InputHandler.prototype.tab = function () {\n        var originalX = this._terminal.buffer.x;\n        this._terminal.buffer.x = this._terminal.buffer.nextStop();\n        if (this._terminal.options.screenReaderMode) {\n            this._terminal.emit('a11y.tab', this._terminal.buffer.x - originalX);\n        }\n    };\n    InputHandler.prototype.shiftOut = function () {\n        this._terminal.setgLevel(1);\n    };\n    InputHandler.prototype.shiftIn = function () {\n        this._terminal.setgLevel(0);\n    };\n    InputHandler.prototype.insertChars = function (params) {\n        this._terminal.buffer.lines.get(this._terminal.buffer.y + this._terminal.buffer.ybase).insertCells(this._terminal.buffer.x, params[0] || 1, this._terminal.buffer.getNullCell(this._terminal.eraseAttrData()));\n        this._terminal.updateRange(this._terminal.buffer.y);\n    };\n    InputHandler.prototype.cursorUp = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.y -= param;\n        if (this._terminal.buffer.y < 0) {\n            this._terminal.buffer.y = 0;\n        }\n    };\n    InputHandler.prototype.cursorDown = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.y += param;\n        if (this._terminal.buffer.y >= this._terminal.rows) {\n            this._terminal.buffer.y = this._terminal.rows - 1;\n        }\n        if (this._terminal.buffer.x >= this._terminal.cols) {\n            this._terminal.buffer.x--;\n        }\n    };\n    InputHandler.prototype.cursorForward = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.x += param;\n        if (this._terminal.buffer.x >= this._terminal.cols) {\n            this._terminal.buffer.x = this._terminal.cols - 1;\n        }\n    };\n    InputHandler.prototype.cursorBackward = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        if (this._terminal.buffer.x >= this._terminal.cols) {\n            this._terminal.buffer.x--;\n        }\n        this._terminal.buffer.x -= param;\n        if (this._terminal.buffer.x < 0) {\n            this._terminal.buffer.x = 0;\n        }\n    };\n    InputHandler.prototype.cursorNextLine = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.y += param;\n        if (this._terminal.buffer.y >= this._terminal.rows) {\n            this._terminal.buffer.y = this._terminal.rows - 1;\n        }\n        this._terminal.buffer.x = 0;\n    };\n    InputHandler.prototype.cursorPrecedingLine = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.y -= param;\n        if (this._terminal.buffer.y < 0) {\n            this._terminal.buffer.y = 0;\n        }\n        this._terminal.buffer.x = 0;\n    };\n    InputHandler.prototype.cursorCharAbsolute = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.x = param - 1;\n    };\n    InputHandler.prototype.cursorPosition = function (params) {\n        var col;\n        var row = params[0] - 1;\n        if (params.length >= 2) {\n            col = params[1] - 1;\n        }\n        else {\n            col = 0;\n        }\n        if (row < 0) {\n            row = 0;\n        }\n        else if (row >= this._terminal.rows) {\n            row = this._terminal.rows - 1;\n        }\n        if (col < 0) {\n            col = 0;\n        }\n        else if (col >= this._terminal.cols) {\n            col = this._terminal.cols - 1;\n        }\n        this._terminal.buffer.x = col;\n        this._terminal.buffer.y = row;\n    };\n    InputHandler.prototype.cursorForwardTab = function (params) {\n        var param = params[0] || 1;\n        while (param--) {\n            this._terminal.buffer.x = this._terminal.buffer.nextStop();\n        }\n    };\n    InputHandler.prototype._eraseInBufferLine = function (y, start, end, clearWrap) {\n        if (clearWrap === void 0) { clearWrap = false; }\n        var line = this._terminal.buffer.lines.get(this._terminal.buffer.ybase + y);\n        line.replaceCells(start, end, this._terminal.buffer.getNullCell(this._terminal.eraseAttrData()));\n        if (clearWrap) {\n            line.isWrapped = false;\n        }\n    };\n    InputHandler.prototype._resetBufferLine = function (y) {\n        this._eraseInBufferLine(y, 0, this._terminal.cols, true);\n    };\n    InputHandler.prototype.eraseInDisplay = function (params) {\n        var j;\n        switch (params[0]) {\n            case 0:\n                j = this._terminal.buffer.y;\n                this._terminal.updateRange(j);\n                this._eraseInBufferLine(j++, this._terminal.buffer.x, this._terminal.cols, this._terminal.buffer.x === 0);\n                for (; j < this._terminal.rows; j++) {\n                    this._resetBufferLine(j);\n                }\n                this._terminal.updateRange(j);\n                break;\n            case 1:\n                j = this._terminal.buffer.y;\n                this._terminal.updateRange(j);\n                this._eraseInBufferLine(j, 0, this._terminal.buffer.x + 1, true);\n                if (this._terminal.buffer.x + 1 >= this._terminal.cols) {\n                    this._terminal.buffer.lines.get(j + 1).isWrapped = false;\n                }\n                while (j--) {\n                    this._resetBufferLine(j);\n                }\n                this._terminal.updateRange(0);\n                break;\n            case 2:\n                j = this._terminal.rows;\n                this._terminal.updateRange(j - 1);\n                while (j--) {\n                    this._resetBufferLine(j);\n                }\n                this._terminal.updateRange(0);\n                break;\n            case 3:\n                var scrollBackSize = this._terminal.buffer.lines.length - this._terminal.rows;\n                if (scrollBackSize > 0) {\n                    this._terminal.buffer.lines.trimStart(scrollBackSize);\n                    this._terminal.buffer.ybase = Math.max(this._terminal.buffer.ybase - scrollBackSize, 0);\n                    this._terminal.buffer.ydisp = Math.max(this._terminal.buffer.ydisp - scrollBackSize, 0);\n                    this._onScroll.fire(0);\n                }\n                break;\n        }\n    };\n    InputHandler.prototype.eraseInLine = function (params) {\n        switch (params[0]) {\n            case 0:\n                this._eraseInBufferLine(this._terminal.buffer.y, this._terminal.buffer.x, this._terminal.cols);\n                break;\n            case 1:\n                this._eraseInBufferLine(this._terminal.buffer.y, 0, this._terminal.buffer.x + 1);\n                break;\n            case 2:\n                this._eraseInBufferLine(this._terminal.buffer.y, 0, this._terminal.cols);\n                break;\n        }\n        this._terminal.updateRange(this._terminal.buffer.y);\n    };\n    InputHandler.prototype.insertLines = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        var buffer = this._terminal.buffer;\n        var row = buffer.y + buffer.ybase;\n        var scrollBottomRowsOffset = this._terminal.rows - 1 - buffer.scrollBottom;\n        var scrollBottomAbsolute = this._terminal.rows - 1 + buffer.ybase - scrollBottomRowsOffset + 1;\n        while (param--) {\n            buffer.lines.splice(scrollBottomAbsolute - 1, 1);\n            buffer.lines.splice(row, 0, buffer.getBlankLine(this._terminal.eraseAttrData()));\n        }\n        this._terminal.updateRange(buffer.y);\n        this._terminal.updateRange(buffer.scrollBottom);\n    };\n    InputHandler.prototype.deleteLines = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        var buffer = this._terminal.buffer;\n        var row = buffer.y + buffer.ybase;\n        var j;\n        j = this._terminal.rows - 1 - buffer.scrollBottom;\n        j = this._terminal.rows - 1 + buffer.ybase - j;\n        while (param--) {\n            buffer.lines.splice(row, 1);\n            buffer.lines.splice(j, 0, buffer.getBlankLine(this._terminal.eraseAttrData()));\n        }\n        this._terminal.updateRange(buffer.y);\n        this._terminal.updateRange(buffer.scrollBottom);\n    };\n    InputHandler.prototype.deleteChars = function (params) {\n        this._terminal.buffer.lines.get(this._terminal.buffer.y + this._terminal.buffer.ybase).deleteCells(this._terminal.buffer.x, params[0] || 1, this._terminal.buffer.getNullCell(this._terminal.eraseAttrData()));\n        this._terminal.updateRange(this._terminal.buffer.y);\n    };\n    InputHandler.prototype.scrollUp = function (params) {\n        var param = params[0] || 1;\n        var buffer = this._terminal.buffer;\n        while (param--) {\n            buffer.lines.splice(buffer.ybase + buffer.scrollTop, 1);\n            buffer.lines.splice(buffer.ybase + buffer.scrollBottom, 0, buffer.getBlankLine(BufferLine_1.DEFAULT_ATTR_DATA));\n        }\n        this._terminal.updateRange(buffer.scrollTop);\n        this._terminal.updateRange(buffer.scrollBottom);\n    };\n    InputHandler.prototype.scrollDown = function (params, collect) {\n        if (params.length < 2 && !collect) {\n            var param = params[0] || 1;\n            var buffer = this._terminal.buffer;\n            while (param--) {\n                buffer.lines.splice(buffer.ybase + buffer.scrollBottom, 1);\n                buffer.lines.splice(buffer.ybase + buffer.scrollTop, 0, buffer.getBlankLine(BufferLine_1.DEFAULT_ATTR_DATA));\n            }\n            this._terminal.updateRange(buffer.scrollTop);\n            this._terminal.updateRange(buffer.scrollBottom);\n        }\n    };\n    InputHandler.prototype.eraseChars = function (params) {\n        this._terminal.buffer.lines.get(this._terminal.buffer.y + this._terminal.buffer.ybase).replaceCells(this._terminal.buffer.x, this._terminal.buffer.x + (params[0] || 1), this._terminal.buffer.getNullCell(this._terminal.eraseAttrData()));\n    };\n    InputHandler.prototype.cursorBackwardTab = function (params) {\n        var param = params[0] || 1;\n        var buffer = this._terminal.buffer;\n        while (param--) {\n            buffer.x = buffer.prevStop();\n        }\n    };\n    InputHandler.prototype.charPosAbsolute = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.x = param - 1;\n        if (this._terminal.buffer.x >= this._terminal.cols) {\n            this._terminal.buffer.x = this._terminal.cols - 1;\n        }\n    };\n    InputHandler.prototype.hPositionRelative = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.x += param;\n        if (this._terminal.buffer.x >= this._terminal.cols) {\n            this._terminal.buffer.x = this._terminal.cols - 1;\n        }\n    };\n    InputHandler.prototype.repeatPrecedingCharacter = function (params) {\n        var buffer = this._terminal.buffer;\n        var line = buffer.lines.get(buffer.ybase + buffer.y);\n        line.loadCell(buffer.x - 1, this._workCell);\n        line.replaceCells(buffer.x, buffer.x + (params[0] || 1), (this._workCell.content !== undefined) ? this._workCell : buffer.getNullCell(BufferLine_1.DEFAULT_ATTR_DATA));\n    };\n    InputHandler.prototype.sendDeviceAttributes = function (params, collect) {\n        if (params[0] > 0) {\n            return;\n        }\n        if (!collect) {\n            if (this._terminal.is('xterm') || this._terminal.is('rxvt-unicode') || this._terminal.is('screen')) {\n                this._terminal.handler(EscapeSequences_1.C0.ESC + '[?1;2c');\n            }\n            else if (this._terminal.is('linux')) {\n                this._terminal.handler(EscapeSequences_1.C0.ESC + '[?6c');\n            }\n        }\n        else if (collect === '>') {\n            if (this._terminal.is('xterm')) {\n                this._terminal.handler(EscapeSequences_1.C0.ESC + '[>0;276;0c');\n            }\n            else if (this._terminal.is('rxvt-unicode')) {\n                this._terminal.handler(EscapeSequences_1.C0.ESC + '[>85;95;0c');\n            }\n            else if (this._terminal.is('linux')) {\n                this._terminal.handler(params[0] + 'c');\n            }\n            else if (this._terminal.is('screen')) {\n                this._terminal.handler(EscapeSequences_1.C0.ESC + '[>83;40003;0c');\n            }\n        }\n    };\n    InputHandler.prototype.linePosAbsolute = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.y = param - 1;\n        if (this._terminal.buffer.y >= this._terminal.rows) {\n            this._terminal.buffer.y = this._terminal.rows - 1;\n        }\n    };\n    InputHandler.prototype.vPositionRelative = function (params) {\n        var param = params[0];\n        if (param < 1) {\n            param = 1;\n        }\n        this._terminal.buffer.y += param;\n        if (this._terminal.buffer.y >= this._terminal.rows) {\n            this._terminal.buffer.y = this._terminal.rows - 1;\n        }\n        if (this._terminal.buffer.x >= this._terminal.cols) {\n            this._terminal.buffer.x--;\n        }\n    };\n    InputHandler.prototype.hVPosition = function (params) {\n        if (params[0] < 1)\n            params[0] = 1;\n        if (params[1] < 1)\n            params[1] = 1;\n        this._terminal.buffer.y = params[0] - 1;\n        if (this._terminal.buffer.y >= this._terminal.rows) {\n            this._terminal.buffer.y = this._terminal.rows - 1;\n        }\n        this._terminal.buffer.x = params[1] - 1;\n        if (this._terminal.buffer.x >= this._terminal.cols) {\n            this._terminal.buffer.x = this._terminal.cols - 1;\n        }\n    };\n    InputHandler.prototype.tabClear = function (params) {\n        var param = params[0];\n        if (param <= 0) {\n            delete this._terminal.buffer.tabs[this._terminal.buffer.x];\n        }\n        else if (param === 3) {\n            this._terminal.buffer.tabs = {};\n        }\n    };\n    InputHandler.prototype.setMode = function (params, collect) {\n        if (params.length > 1) {\n            for (var i = 0; i < params.length; i++) {\n                this.setMode([params[i]]);\n            }\n            return;\n        }\n        if (!collect) {\n            switch (params[0]) {\n                case 4:\n                    this._terminal.insertMode = true;\n                    break;\n                case 20:\n                    break;\n            }\n        }\n        else if (collect === '?') {\n            switch (params[0]) {\n                case 1:\n                    this._terminal.applicationCursor = true;\n                    break;\n                case 2:\n                    this._terminal.setgCharset(0, Charsets_1.DEFAULT_CHARSET);\n                    this._terminal.setgCharset(1, Charsets_1.DEFAULT_CHARSET);\n                    this._terminal.setgCharset(2, Charsets_1.DEFAULT_CHARSET);\n                    this._terminal.setgCharset(3, Charsets_1.DEFAULT_CHARSET);\n                    break;\n                case 3:\n                    this._terminal.savedCols = this._terminal.cols;\n                    this._terminal.resize(132, this._terminal.rows);\n                    break;\n                case 6:\n                    this._terminal.originMode = true;\n                    break;\n                case 7:\n                    this._terminal.wraparoundMode = true;\n                    break;\n                case 12:\n                    break;\n                case 66:\n                    this._terminal.log('Serial port requested application keypad.');\n                    this._terminal.applicationKeypad = true;\n                    if (this._terminal.viewport) {\n                        this._terminal.viewport.syncScrollArea();\n                    }\n                    break;\n                case 9:\n                case 1000:\n                case 1002:\n                case 1003:\n                    this._terminal.x10Mouse = params[0] === 9;\n                    this._terminal.vt200Mouse = params[0] === 1000;\n                    this._terminal.normalMouse = params[0] > 1000;\n                    this._terminal.mouseEvents = true;\n                    if (this._terminal.element) {\n                        this._terminal.element.classList.add('enable-mouse-events');\n                    }\n                    if (this._terminal.selectionManager) {\n                        this._terminal.selectionManager.disable();\n                    }\n                    this._terminal.log('Binding to mouse events.');\n                    break;\n                case 1004:\n                    this._terminal.sendFocus = true;\n                    break;\n                case 1005:\n                    this._terminal.utfMouse = true;\n                    break;\n                case 1006:\n                    this._terminal.sgrMouse = true;\n                    break;\n                case 1015:\n                    this._terminal.urxvtMouse = true;\n                    break;\n                case 25:\n                    this._terminal.cursorHidden = false;\n                    break;\n                case 1048:\n                    this.saveCursor(params);\n                    break;\n                case 1049:\n                    this.saveCursor(params);\n                case 47:\n                case 1047:\n                    this._terminal.buffers.activateAltBuffer(this._terminal.eraseAttrData());\n                    this._terminal.refresh(0, this._terminal.rows - 1);\n                    if (this._terminal.viewport) {\n                        this._terminal.viewport.syncScrollArea();\n                    }\n                    this._terminal.showCursor();\n                    break;\n                case 2004:\n                    this._terminal.bracketedPasteMode = true;\n                    break;\n            }\n        }\n    };\n    InputHandler.prototype.resetMode = function (params, collect) {\n        if (params.length > 1) {\n            for (var i = 0; i < params.length; i++) {\n                this.resetMode([params[i]]);\n            }\n            return;\n        }\n        if (!collect) {\n            switch (params[0]) {\n                case 4:\n                    this._terminal.insertMode = false;\n                    break;\n                case 20:\n                    break;\n            }\n        }\n        else if (collect === '?') {\n            switch (params[0]) {\n                case 1:\n                    this._terminal.applicationCursor = false;\n                    break;\n                case 3:\n                    if (this._terminal.cols === 132 && this._terminal.savedCols) {\n                        this._terminal.resize(this._terminal.savedCols, this._terminal.rows);\n                    }\n                    delete this._terminal.savedCols;\n                    break;\n                case 6:\n                    this._terminal.originMode = false;\n                    break;\n                case 7:\n                    this._terminal.wraparoundMode = false;\n                    break;\n                case 12:\n                    break;\n                case 66:\n                    this._terminal.log('Switching back to normal keypad.');\n                    this._terminal.applicationKeypad = false;\n                    if (this._terminal.viewport) {\n                        this._terminal.viewport.syncScrollArea();\n                    }\n                    break;\n                case 9:\n                case 1000:\n                case 1002:\n                case 1003:\n                    this._terminal.x10Mouse = false;\n                    this._terminal.vt200Mouse = false;\n                    this._terminal.normalMouse = false;\n                    this._terminal.mouseEvents = false;\n                    if (this._terminal.element) {\n                        this._terminal.element.classList.remove('enable-mouse-events');\n                    }\n                    if (this._terminal.selectionManager) {\n                        this._terminal.selectionManager.enable();\n                    }\n                    break;\n                case 1004:\n                    this._terminal.sendFocus = false;\n                    break;\n                case 1005:\n                    this._terminal.utfMouse = false;\n                    break;\n                case 1006:\n                    this._terminal.sgrMouse = false;\n                    break;\n                case 1015:\n                    this._terminal.urxvtMouse = false;\n                    break;\n                case 25:\n                    this._terminal.cursorHidden = true;\n                    break;\n                case 1048:\n                    this.restoreCursor(params);\n                    break;\n                case 1049:\n                case 47:\n                case 1047:\n                    this._terminal.buffers.activateNormalBuffer();\n                    if (params[0] === 1049) {\n                        this.restoreCursor(params);\n                    }\n                    this._terminal.refresh(0, this._terminal.rows - 1);\n                    if (this._terminal.viewport) {\n                        this._terminal.viewport.syncScrollArea();\n                    }\n                    this._terminal.showCursor();\n                    break;\n                case 2004:\n                    this._terminal.bracketedPasteMode = false;\n                    break;\n            }\n        }\n    };\n    InputHandler.prototype.charAttributes = function (params) {\n        if (params.length === 1 && params[0] === 0) {\n            this._terminal.curAttrData.fg = BufferLine_1.DEFAULT_ATTR_DATA.fg;\n            this._terminal.curAttrData.bg = BufferLine_1.DEFAULT_ATTR_DATA.bg;\n            return;\n        }\n        var l = params.length;\n        var p;\n        var attr = this._terminal.curAttrData;\n        for (var i = 0; i < l; i++) {\n            p = params[i];\n            if (p >= 30 && p <= 37) {\n                attr.fg &= ~(50331648 | 255);\n                attr.fg |= 16777216 | (p - 30);\n            }\n            else if (p >= 40 && p <= 47) {\n                attr.bg &= ~(50331648 | 255);\n                attr.bg |= 16777216 | (p - 40);\n            }\n            else if (p >= 90 && p <= 97) {\n                attr.fg &= ~(50331648 | 255);\n                attr.fg |= 16777216 | (p - 90) | 8;\n            }\n            else if (p >= 100 && p <= 107) {\n                attr.bg &= ~(50331648 | 255);\n                attr.bg |= 16777216 | (p - 100) | 8;\n            }\n            else if (p === 0) {\n                attr.fg = BufferLine_1.DEFAULT_ATTR_DATA.fg;\n                attr.bg = BufferLine_1.DEFAULT_ATTR_DATA.bg;\n            }\n            else if (p === 1) {\n                attr.fg |= 134217728;\n            }\n            else if (p === 3) {\n                attr.bg |= 67108864;\n            }\n            else if (p === 4) {\n                attr.fg |= 268435456;\n            }\n            else if (p === 5) {\n                attr.fg |= 536870912;\n            }\n            else if (p === 7) {\n                attr.fg |= 67108864;\n            }\n            else if (p === 8) {\n                attr.fg |= 1073741824;\n            }\n            else if (p === 2) {\n                attr.bg |= 134217728;\n            }\n            else if (p === 22) {\n                attr.fg &= ~134217728;\n                attr.bg &= ~134217728;\n            }\n            else if (p === 23) {\n                attr.bg &= ~67108864;\n            }\n            else if (p === 24) {\n                attr.fg &= ~268435456;\n            }\n            else if (p === 25) {\n                attr.fg &= ~536870912;\n            }\n            else if (p === 27) {\n                attr.fg &= ~67108864;\n            }\n            else if (p === 28) {\n                attr.fg &= ~1073741824;\n            }\n            else if (p === 39) {\n                attr.fg &= ~(50331648 | 16777215);\n                attr.fg |= BufferLine_1.DEFAULT_ATTR_DATA.fg & (255 | 16777215);\n            }\n            else if (p === 49) {\n                attr.bg &= ~(50331648 | 16777215);\n                attr.bg |= BufferLine_1.DEFAULT_ATTR_DATA.bg & (255 | 16777215);\n            }\n            else if (p === 38) {\n                if (params[i + 1] === 2) {\n                    i += 2;\n                    attr.fg |= 50331648;\n                    attr.fg &= ~16777215;\n                    attr.fg |= BufferLine_1.AttributeData.fromColorRGB([params[i], params[i + 1], params[i + 2]]);\n                    i += 2;\n                }\n                else if (params[i + 1] === 5) {\n                    i += 2;\n                    p = params[i] & 0xff;\n                    attr.fg &= ~(50331648 | 255);\n                    attr.fg |= 33554432 | p;\n                }\n            }\n            else if (p === 48) {\n                if (params[i + 1] === 2) {\n                    i += 2;\n                    attr.bg |= 50331648;\n                    attr.bg &= ~16777215;\n                    attr.bg |= BufferLine_1.AttributeData.fromColorRGB([params[i], params[i + 1], params[i + 2]]);\n                    i += 2;\n                }\n                else if (params[i + 1] === 5) {\n                    i += 2;\n                    p = params[i] & 0xff;\n                    attr.bg &= ~(50331648 | 255);\n                    attr.bg |= 33554432 | p;\n                }\n            }\n            else if (p === 100) {\n                attr.fg &= ~(50331648 | 16777215);\n                attr.fg |= BufferLine_1.DEFAULT_ATTR_DATA.fg & (255 | 16777215);\n                attr.bg &= ~(50331648 | 16777215);\n                attr.bg |= BufferLine_1.DEFAULT_ATTR_DATA.bg & (255 | 16777215);\n            }\n            else {\n                this._terminal.error('Unknown SGR attribute: %d.', p);\n            }\n        }\n    };\n    InputHandler.prototype.deviceStatus = function (params, collect) {\n        if (!collect) {\n            switch (params[0]) {\n                case 5:\n                    this._onData.fire(EscapeSequences_1.C0.ESC + \"[0n\");\n                    break;\n                case 6:\n                    var y = this._terminal.buffer.y + 1;\n                    var x = this._terminal.buffer.x + 1;\n                    this._onData.fire(EscapeSequences_1.C0.ESC + \"[\" + y + \";\" + x + \"R\");\n                    break;\n            }\n        }\n        else if (collect === '?') {\n            switch (params[0]) {\n                case 6:\n                    var y = this._terminal.buffer.y + 1;\n                    var x = this._terminal.buffer.x + 1;\n                    this._onData.fire(EscapeSequences_1.C0.ESC + \"[?\" + y + \";\" + x + \"R\");\n                    break;\n                case 15:\n                    break;\n                case 25:\n                    break;\n                case 26:\n                    break;\n                case 53:\n                    break;\n            }\n        }\n    };\n    InputHandler.prototype.softReset = function (params, collect) {\n        if (collect === '!') {\n            this._terminal.cursorHidden = false;\n            this._terminal.insertMode = false;\n            this._terminal.originMode = false;\n            this._terminal.wraparoundMode = true;\n            this._terminal.applicationKeypad = false;\n            if (this._terminal.viewport) {\n                this._terminal.viewport.syncScrollArea();\n            }\n            this._terminal.applicationCursor = false;\n            this._terminal.buffer.scrollTop = 0;\n            this._terminal.buffer.scrollBottom = this._terminal.rows - 1;\n            this._terminal.curAttrData = BufferLine_1.DEFAULT_ATTR_DATA.clone();\n            this._terminal.buffer.x = this._terminal.buffer.y = 0;\n            this._terminal.charset = null;\n            this._terminal.glevel = 0;\n            this._terminal.charsets = [null];\n        }\n    };\n    InputHandler.prototype.setCursorStyle = function (params, collect) {\n        if (collect === ' ') {\n            var param = params[0] < 1 ? 1 : params[0];\n            switch (param) {\n                case 1:\n                case 2:\n                    this._terminal.setOption('cursorStyle', 'block');\n                    break;\n                case 3:\n                case 4:\n                    this._terminal.setOption('cursorStyle', 'underline');\n                    break;\n                case 5:\n                case 6:\n                    this._terminal.setOption('cursorStyle', 'bar');\n                    break;\n            }\n            var isBlinking = param % 2 === 1;\n            this._terminal.setOption('cursorBlink', isBlinking);\n        }\n    };\n    InputHandler.prototype.setScrollRegion = function (params, collect) {\n        if (collect) {\n            return;\n        }\n        this._terminal.buffer.scrollTop = (params[0] || 1) - 1;\n        this._terminal.buffer.scrollBottom = (params[1] && params[1] <= this._terminal.rows ? params[1] : this._terminal.rows) - 1;\n        this._terminal.buffer.x = 0;\n        this._terminal.buffer.y = 0;\n    };\n    InputHandler.prototype.saveCursor = function (params) {\n        this._terminal.buffer.savedX = this._terminal.buffer.x;\n        this._terminal.buffer.savedY = this._terminal.buffer.y;\n        this._terminal.buffer.savedCurAttrData.fg = this._terminal.curAttrData.fg;\n        this._terminal.buffer.savedCurAttrData.bg = this._terminal.curAttrData.bg;\n    };\n    InputHandler.prototype.restoreCursor = function (params) {\n        this._terminal.buffer.x = this._terminal.buffer.savedX || 0;\n        this._terminal.buffer.y = this._terminal.buffer.savedY || 0;\n        this._terminal.curAttrData.fg = this._terminal.buffer.savedCurAttrData.fg;\n        this._terminal.curAttrData.bg = this._terminal.buffer.savedCurAttrData.bg;\n    };\n    InputHandler.prototype.setTitle = function (data) {\n        this._terminal.handleTitle(data);\n    };\n    InputHandler.prototype.nextLine = function () {\n        this._terminal.buffer.x = 0;\n        this.index();\n    };\n    InputHandler.prototype.keypadApplicationMode = function () {\n        this._terminal.log('Serial port requested application keypad.');\n        this._terminal.applicationKeypad = true;\n        if (this._terminal.viewport) {\n            this._terminal.viewport.syncScrollArea();\n        }\n    };\n    InputHandler.prototype.keypadNumericMode = function () {\n        this._terminal.log('Switching back to normal keypad.');\n        this._terminal.applicationKeypad = false;\n        if (this._terminal.viewport) {\n            this._terminal.viewport.syncScrollArea();\n        }\n    };\n    InputHandler.prototype.selectDefaultCharset = function () {\n        this._terminal.setgLevel(0);\n        this._terminal.setgCharset(0, Charsets_1.DEFAULT_CHARSET);\n    };\n    InputHandler.prototype.selectCharset = function (collectAndFlag) {\n        if (collectAndFlag.length !== 2) {\n            this.selectDefaultCharset();\n            return;\n        }\n        if (collectAndFlag[0] === '/') {\n            return;\n        }\n        this._terminal.setgCharset(GLEVEL[collectAndFlag[0]], Charsets_1.CHARSETS[collectAndFlag[1]] || Charsets_1.DEFAULT_CHARSET);\n        return;\n    };\n    InputHandler.prototype.index = function () {\n        this._terminal.index();\n    };\n    InputHandler.prototype.tabSet = function () {\n        this._terminal.tabSet();\n    };\n    InputHandler.prototype.reverseIndex = function () {\n        this._terminal.reverseIndex();\n    };\n    InputHandler.prototype.reset = function () {\n        this._parser.reset();\n        this._terminal.reset();\n    };\n    InputHandler.prototype.setgLevel = function (level) {\n        this._terminal.setgLevel(level);\n    };\n    return InputHandler;\n}(Lifecycle_1.Disposable));\nexports.InputHandler = InputHandler;\n\n},{\"./CharWidth\":5,\"./EscapeSequenceParser\":8,\"./common/EventEmitter2\":23,\"./common/Lifecycle\":24,\"./common/TypedArrayUtils\":26,\"./common/data/EscapeSequences\":28,\"./core/buffer/BufferLine\":29,\"./core/data/Charsets\":32,\"./core/input/TextDecoder\":34}],10:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MouseZoneManager_1 = require(\"./MouseZoneManager\");\nvar CharWidth_1 = require(\"./CharWidth\");\nvar EventEmitter2_1 = require(\"./common/EventEmitter2\");\nvar Linkifier = (function () {\n    function Linkifier(_terminal) {\n        this._terminal = _terminal;\n        this._linkMatchers = [];\n        this._nextLinkMatcherId = 0;\n        this._onLinkHover = new EventEmitter2_1.EventEmitter2();\n        this._onLinkLeave = new EventEmitter2_1.EventEmitter2();\n        this._onLinkTooltip = new EventEmitter2_1.EventEmitter2();\n        this._rowsToLinkify = {\n            start: null,\n            end: null\n        };\n    }\n    Object.defineProperty(Linkifier.prototype, \"onLinkHover\", {\n        get: function () { return this._onLinkHover.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Linkifier.prototype, \"onLinkLeave\", {\n        get: function () { return this._onLinkLeave.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Linkifier.prototype, \"onLinkTooltip\", {\n        get: function () { return this._onLinkTooltip.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Linkifier.prototype.attachToDom = function (mouseZoneManager) {\n        this._mouseZoneManager = mouseZoneManager;\n    };\n    Linkifier.prototype.linkifyRows = function (start, end) {\n        var _this = this;\n        if (!this._mouseZoneManager) {\n            return;\n        }\n        if (this._rowsToLinkify.start === null) {\n            this._rowsToLinkify.start = start;\n            this._rowsToLinkify.end = end;\n        }\n        else {\n            this._rowsToLinkify.start = Math.min(this._rowsToLinkify.start, start);\n            this._rowsToLinkify.end = Math.max(this._rowsToLinkify.end, end);\n        }\n        this._mouseZoneManager.clearAll(start, end);\n        if (this._rowsTimeoutId) {\n            clearTimeout(this._rowsTimeoutId);\n        }\n        this._rowsTimeoutId = setTimeout(function () { return _this._linkifyRows(); }, Linkifier.TIME_BEFORE_LINKIFY);\n    };\n    Linkifier.prototype._linkifyRows = function () {\n        this._rowsTimeoutId = null;\n        var buffer = this._terminal.buffer;\n        var absoluteRowIndexStart = buffer.ydisp + this._rowsToLinkify.start;\n        if (absoluteRowIndexStart >= buffer.lines.length) {\n            return;\n        }\n        var absoluteRowIndexEnd = buffer.ydisp + Math.min(this._rowsToLinkify.end, this._terminal.rows) + 1;\n        var overscanLineLimit = Math.ceil(Linkifier.OVERSCAN_CHAR_LIMIT / this._terminal.cols);\n        var iterator = this._terminal.buffer.iterator(false, absoluteRowIndexStart, absoluteRowIndexEnd, overscanLineLimit, overscanLineLimit);\n        while (iterator.hasNext()) {\n            var lineData = iterator.next();\n            for (var i = 0; i < this._linkMatchers.length; i++) {\n                this._doLinkifyRow(lineData.range.first, lineData.content, this._linkMatchers[i]);\n            }\n        }\n        this._rowsToLinkify.start = null;\n        this._rowsToLinkify.end = null;\n    };\n    Linkifier.prototype.registerLinkMatcher = function (regex, handler, options) {\n        if (options === void 0) { options = {}; }\n        if (!handler) {\n            throw new Error('handler must be defined');\n        }\n        var matcher = {\n            id: this._nextLinkMatcherId++,\n            regex: regex,\n            handler: handler,\n            matchIndex: options.matchIndex,\n            validationCallback: options.validationCallback,\n            hoverTooltipCallback: options.tooltipCallback,\n            hoverLeaveCallback: options.leaveCallback,\n            willLinkActivate: options.willLinkActivate,\n            priority: options.priority || 0\n        };\n        this._addLinkMatcherToList(matcher);\n        return matcher.id;\n    };\n    Linkifier.prototype._addLinkMatcherToList = function (matcher) {\n        if (this._linkMatchers.length === 0) {\n            this._linkMatchers.push(matcher);\n            return;\n        }\n        for (var i = this._linkMatchers.length - 1; i >= 0; i--) {\n            if (matcher.priority <= this._linkMatchers[i].priority) {\n                this._linkMatchers.splice(i + 1, 0, matcher);\n                return;\n            }\n        }\n        this._linkMatchers.splice(0, 0, matcher);\n    };\n    Linkifier.prototype.deregisterLinkMatcher = function (matcherId) {\n        for (var i = 0; i < this._linkMatchers.length; i++) {\n            if (this._linkMatchers[i].id === matcherId) {\n                this._linkMatchers.splice(i, 1);\n                return true;\n            }\n        }\n        return false;\n    };\n    Linkifier.prototype._doLinkifyRow = function (rowIndex, text, matcher) {\n        var _this = this;\n        var rex = new RegExp(matcher.regex.source, matcher.regex.flags + 'g');\n        var match;\n        var stringIndex = -1;\n        var _loop_1 = function () {\n            var uri = match[typeof matcher.matchIndex !== 'number' ? 0 : matcher.matchIndex];\n            if (!uri) {\n                if (this_1._terminal.debug) {\n                    console.log({ match: match, matcher: matcher });\n                    throw new Error('match found without corresponding matchIndex');\n                }\n                return \"break\";\n            }\n            stringIndex = text.indexOf(uri, stringIndex + 1);\n            rex.lastIndex = stringIndex + uri.length;\n            if (stringIndex < 0) {\n                return \"break\";\n            }\n            var bufferIndex = this_1._terminal.buffer.stringIndexToBufferIndex(rowIndex, stringIndex);\n            if (bufferIndex[0] < 0) {\n                return \"break\";\n            }\n            var line = this_1._terminal.buffer.lines.get(bufferIndex[0]);\n            var attr = line.getFg(bufferIndex[1]);\n            var fg;\n            if (attr) {\n                fg = (attr >> 9) & 0x1ff;\n            }\n            if (matcher.validationCallback) {\n                matcher.validationCallback(uri, function (isValid) {\n                    if (_this._rowsTimeoutId) {\n                        return;\n                    }\n                    if (isValid) {\n                        _this._addLink(bufferIndex[1], bufferIndex[0] - _this._terminal.buffer.ydisp, uri, matcher, fg);\n                    }\n                });\n            }\n            else {\n                this_1._addLink(bufferIndex[1], bufferIndex[0] - this_1._terminal.buffer.ydisp, uri, matcher, fg);\n            }\n        };\n        var this_1 = this;\n        while ((match = rex.exec(text)) !== null) {\n            var state_1 = _loop_1();\n            if (state_1 === \"break\")\n                break;\n        }\n    };\n    Linkifier.prototype._addLink = function (x, y, uri, matcher, fg) {\n        var _this = this;\n        var width = CharWidth_1.getStringCellWidth(uri);\n        var x1 = x % this._terminal.cols;\n        var y1 = y + Math.floor(x / this._terminal.cols);\n        var x2 = (x1 + width) % this._terminal.cols;\n        var y2 = y1 + Math.floor((x1 + width) / this._terminal.cols);\n        if (x2 === 0) {\n            x2 = this._terminal.cols;\n            y2--;\n        }\n        this._mouseZoneManager.add(new MouseZoneManager_1.MouseZone(x1 + 1, y1 + 1, x2 + 1, y2 + 1, function (e) {\n            if (matcher.handler) {\n                return matcher.handler(e, uri);\n            }\n            window.open(uri, '_blank');\n        }, function () {\n            _this._onLinkHover.fire(_this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n            _this._terminal.element.classList.add('xterm-cursor-pointer');\n        }, function (e) {\n            _this._onLinkTooltip.fire(_this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n            if (matcher.hoverTooltipCallback) {\n                matcher.hoverTooltipCallback(e, uri);\n            }\n        }, function () {\n            _this._onLinkLeave.fire(_this._createLinkHoverEvent(x1, y1, x2, y2, fg));\n            _this._terminal.element.classList.remove('xterm-cursor-pointer');\n            if (matcher.hoverLeaveCallback) {\n                matcher.hoverLeaveCallback();\n            }\n        }, function (e) {\n            if (matcher.willLinkActivate) {\n                return matcher.willLinkActivate(e, uri);\n            }\n            return true;\n        }));\n    };\n    Linkifier.prototype._createLinkHoverEvent = function (x1, y1, x2, y2, fg) {\n        return { x1: x1, y1: y1, x2: x2, y2: y2, cols: this._terminal.cols, fg: fg };\n    };\n    Linkifier.TIME_BEFORE_LINKIFY = 200;\n    Linkifier.OVERSCAN_CHAR_LIMIT = 2000;\n    return Linkifier;\n}());\nexports.Linkifier = Linkifier;\n\n},{\"./CharWidth\":5,\"./MouseZoneManager\":12,\"./common/EventEmitter2\":23}],11:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MouseHelper = (function () {\n    function MouseHelper(_renderCoordinator) {\n        this._renderCoordinator = _renderCoordinator;\n    }\n    MouseHelper.getCoordsRelativeToElement = function (event, element) {\n        var rect = element.getBoundingClientRect();\n        return [event.clientX - rect.left, event.clientY - rect.top];\n    };\n    MouseHelper.prototype.getCoords = function (event, element, charMeasure, colCount, rowCount, isSelection) {\n        if (!charMeasure.width || !charMeasure.height) {\n            return null;\n        }\n        var coords = MouseHelper.getCoordsRelativeToElement(event, element);\n        if (!coords) {\n            return null;\n        }\n        coords[0] = Math.ceil((coords[0] + (isSelection ? this._renderCoordinator.dimensions.actualCellWidth / 2 : 0)) / this._renderCoordinator.dimensions.actualCellWidth);\n        coords[1] = Math.ceil(coords[1] / this._renderCoordinator.dimensions.actualCellHeight);\n        coords[0] = Math.min(Math.max(coords[0], 1), colCount + (isSelection ? 1 : 0));\n        coords[1] = Math.min(Math.max(coords[1], 1), rowCount);\n        return coords;\n    };\n    MouseHelper.prototype.getRawByteCoords = function (event, element, charMeasure, colCount, rowCount) {\n        var coords = this.getCoords(event, element, charMeasure, colCount, rowCount);\n        var x = coords[0];\n        var y = coords[1];\n        x += 32;\n        y += 32;\n        return { x: x, y: y };\n    };\n    return MouseHelper;\n}());\nexports.MouseHelper = MouseHelper;\n\n},{}],12:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lifecycle_1 = require(\"./common/Lifecycle\");\nvar Lifecycle_2 = require(\"./ui/Lifecycle\");\nvar HOVER_DURATION = 500;\nvar MouseZoneManager = (function (_super) {\n    __extends(MouseZoneManager, _super);\n    function MouseZoneManager(_terminal) {\n        var _this = _super.call(this) || this;\n        _this._terminal = _terminal;\n        _this._zones = [];\n        _this._areZonesActive = false;\n        _this._tooltipTimeout = null;\n        _this._currentZone = null;\n        _this._lastHoverCoords = [null, null];\n        _this.register(Lifecycle_2.addDisposableDomListener(_this._terminal.element, 'mousedown', function (e) { return _this._onMouseDown(e); }));\n        _this._mouseMoveListener = function (e) { return _this._onMouseMove(e); };\n        _this._mouseLeaveListener = function (e) { return _this._onMouseLeave(e); };\n        _this._clickListener = function (e) { return _this._onClick(e); };\n        return _this;\n    }\n    MouseZoneManager.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        this._deactivate();\n    };\n    MouseZoneManager.prototype.add = function (zone) {\n        this._zones.push(zone);\n        if (this._zones.length === 1) {\n            this._activate();\n        }\n    };\n    MouseZoneManager.prototype.clearAll = function (start, end) {\n        if (this._zones.length === 0) {\n            return;\n        }\n        if (!end) {\n            start = 0;\n            end = this._terminal.rows - 1;\n        }\n        for (var i = 0; i < this._zones.length; i++) {\n            var zone = this._zones[i];\n            if ((zone.y1 > start && zone.y1 <= end + 1) ||\n                (zone.y2 > start && zone.y2 <= end + 1) ||\n                (zone.y1 < start && zone.y2 > end + 1)) {\n                if (this._currentZone && this._currentZone === zone) {\n                    this._currentZone.leaveCallback();\n                    this._currentZone = null;\n                }\n                this._zones.splice(i--, 1);\n            }\n        }\n        if (this._zones.length === 0) {\n            this._deactivate();\n        }\n    };\n    MouseZoneManager.prototype._activate = function () {\n        if (!this._areZonesActive) {\n            this._areZonesActive = true;\n            this._terminal.element.addEventListener('mousemove', this._mouseMoveListener);\n            this._terminal.element.addEventListener('mouseleave', this._mouseLeaveListener);\n            this._terminal.element.addEventListener('click', this._clickListener);\n        }\n    };\n    MouseZoneManager.prototype._deactivate = function () {\n        if (this._areZonesActive) {\n            this._areZonesActive = false;\n            this._terminal.element.removeEventListener('mousemove', this._mouseMoveListener);\n            this._terminal.element.removeEventListener('mouseleave', this._mouseLeaveListener);\n            this._terminal.element.removeEventListener('click', this._clickListener);\n        }\n    };\n    MouseZoneManager.prototype._onMouseMove = function (e) {\n        if (this._lastHoverCoords[0] !== e.pageX || this._lastHoverCoords[1] !== e.pageY) {\n            this._onHover(e);\n            this._lastHoverCoords = [e.pageX, e.pageY];\n        }\n    };\n    MouseZoneManager.prototype._onHover = function (e) {\n        var _this = this;\n        var zone = this._findZoneEventAt(e);\n        if (zone === this._currentZone) {\n            return;\n        }\n        if (this._currentZone) {\n            this._currentZone.leaveCallback();\n            this._currentZone = null;\n            if (this._tooltipTimeout) {\n                clearTimeout(this._tooltipTimeout);\n            }\n        }\n        if (!zone) {\n            return;\n        }\n        this._currentZone = zone;\n        if (zone.hoverCallback) {\n            zone.hoverCallback(e);\n        }\n        this._tooltipTimeout = setTimeout(function () { return _this._onTooltip(e); }, HOVER_DURATION);\n    };\n    MouseZoneManager.prototype._onTooltip = function (e) {\n        this._tooltipTimeout = null;\n        var zone = this._findZoneEventAt(e);\n        if (zone && zone.tooltipCallback) {\n            zone.tooltipCallback(e);\n        }\n    };\n    MouseZoneManager.prototype._onMouseDown = function (e) {\n        this._initialSelectionLength = this._terminal.getSelection().length;\n        if (!this._areZonesActive) {\n            return;\n        }\n        var zone = this._findZoneEventAt(e);\n        if (zone) {\n            if (zone.willLinkActivate(e)) {\n                e.preventDefault();\n                e.stopImmediatePropagation();\n            }\n        }\n    };\n    MouseZoneManager.prototype._onMouseLeave = function (e) {\n        if (this._currentZone) {\n            this._currentZone.leaveCallback();\n            this._currentZone = null;\n            if (this._tooltipTimeout) {\n                clearTimeout(this._tooltipTimeout);\n            }\n        }\n    };\n    MouseZoneManager.prototype._onClick = function (e) {\n        var zone = this._findZoneEventAt(e);\n        var currentSelectionLength = this._terminal.getSelection().length;\n        if (zone && currentSelectionLength === this._initialSelectionLength) {\n            zone.clickCallback(e);\n            e.preventDefault();\n            e.stopImmediatePropagation();\n        }\n    };\n    MouseZoneManager.prototype._findZoneEventAt = function (e) {\n        var coords = this._terminal.mouseHelper.getCoords(e, this._terminal.screenElement, this._terminal.charMeasure, this._terminal.cols, this._terminal.rows);\n        if (!coords) {\n            return null;\n        }\n        var x = coords[0];\n        var y = coords[1];\n        for (var i = 0; i < this._zones.length; i++) {\n            var zone = this._zones[i];\n            if (zone.y1 === zone.y2) {\n                if (y === zone.y1 && x >= zone.x1 && x < zone.x2) {\n                    return zone;\n                }\n            }\n            else {\n                if ((y === zone.y1 && x >= zone.x1) ||\n                    (y === zone.y2 && x < zone.x2) ||\n                    (y > zone.y1 && y < zone.y2)) {\n                    return zone;\n                }\n            }\n        }\n        return null;\n    };\n    return MouseZoneManager;\n}(Lifecycle_1.Disposable));\nexports.MouseZoneManager = MouseZoneManager;\nvar MouseZone = (function () {\n    function MouseZone(x1, y1, x2, y2, clickCallback, hoverCallback, tooltipCallback, leaveCallback, willLinkActivate) {\n        this.x1 = x1;\n        this.y1 = y1;\n        this.x2 = x2;\n        this.y2 = y2;\n        this.clickCallback = clickCallback;\n        this.hoverCallback = hoverCallback;\n        this.tooltipCallback = tooltipCallback;\n        this.leaveCallback = leaveCallback;\n        this.willLinkActivate = willLinkActivate;\n    }\n    return MouseZone;\n}());\nexports.MouseZone = MouseZone;\n\n},{\"./common/Lifecycle\":24,\"./ui/Lifecycle\":59}],13:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MouseHelper_1 = require(\"./MouseHelper\");\nvar Browser = require(\"./common/Platform\");\nvar SelectionModel_1 = require(\"./SelectionModel\");\nvar AltClickHandler_1 = require(\"./handlers/AltClickHandler\");\nvar BufferLine_1 = require(\"./core/buffer/BufferLine\");\nvar EventEmitter2_1 = require(\"./common/EventEmitter2\");\nvar DRAG_SCROLL_MAX_THRESHOLD = 50;\nvar DRAG_SCROLL_MAX_SPEED = 15;\nvar DRAG_SCROLL_INTERVAL = 50;\nvar ALT_CLICK_MOVE_CURSOR_TIME = 500;\nvar WORD_SEPARATORS = ' ()[]{}\\'\"';\nvar NON_BREAKING_SPACE_CHAR = String.fromCharCode(160);\nvar ALL_NON_BREAKING_SPACE_REGEX = new RegExp(NON_BREAKING_SPACE_CHAR, 'g');\nvar SelectionManager = (function () {\n    function SelectionManager(_terminal, _charMeasure) {\n        this._terminal = _terminal;\n        this._charMeasure = _charMeasure;\n        this._enabled = true;\n        this._workCell = new BufferLine_1.CellData();\n        this._onLinuxMouseSelection = new EventEmitter2_1.EventEmitter2();\n        this._onRedrawRequest = new EventEmitter2_1.EventEmitter2();\n        this._onSelectionChange = new EventEmitter2_1.EventEmitter2();\n        this._initListeners();\n        this.enable();\n        this._model = new SelectionModel_1.SelectionModel(_terminal);\n        this._activeSelectionMode = 0;\n    }\n    Object.defineProperty(SelectionManager.prototype, \"onLinuxMouseSelection\", {\n        get: function () { return this._onLinuxMouseSelection.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SelectionManager.prototype, \"onRedrawRequest\", {\n        get: function () { return this._onRedrawRequest.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SelectionManager.prototype, \"onSelectionChange\", {\n        get: function () { return this._onSelectionChange.event; },\n        enumerable: true,\n        configurable: true\n    });\n    SelectionManager.prototype.dispose = function () {\n        this._removeMouseDownListeners();\n    };\n    Object.defineProperty(SelectionManager.prototype, \"_buffer\", {\n        get: function () {\n            return this._terminal.buffers.active;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SelectionManager.prototype._initListeners = function () {\n        var _this = this;\n        this._mouseMoveListener = function (event) { return _this._onMouseMove(event); };\n        this._mouseUpListener = function (event) { return _this._onMouseUp(event); };\n        this.initBuffersListeners();\n    };\n    SelectionManager.prototype.initBuffersListeners = function () {\n        var _this = this;\n        this._trimListener = this._terminal.buffer.lines.onTrim(function (amount) { return _this._onTrim(amount); });\n        this._terminal.buffers.onBufferActivate(function (e) { return _this._onBufferActivate(e); });\n    };\n    SelectionManager.prototype.disable = function () {\n        this.clearSelection();\n        this._enabled = false;\n    };\n    SelectionManager.prototype.enable = function () {\n        this._enabled = true;\n    };\n    Object.defineProperty(SelectionManager.prototype, \"selectionStart\", {\n        get: function () { return this._model.finalSelectionStart; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SelectionManager.prototype, \"selectionEnd\", {\n        get: function () { return this._model.finalSelectionEnd; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SelectionManager.prototype, \"hasSelection\", {\n        get: function () {\n            var start = this._model.finalSelectionStart;\n            var end = this._model.finalSelectionEnd;\n            if (!start || !end) {\n                return false;\n            }\n            return start[0] !== end[0] || start[1] !== end[1];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SelectionManager.prototype, \"selectionText\", {\n        get: function () {\n            var start = this._model.finalSelectionStart;\n            var end = this._model.finalSelectionEnd;\n            if (!start || !end) {\n                return '';\n            }\n            var result = [];\n            if (this._activeSelectionMode === 3) {\n                if (start[0] === end[0]) {\n                    return '';\n                }\n                for (var i = start[1]; i <= end[1]; i++) {\n                    var lineText = this._buffer.translateBufferLineToString(i, true, start[0], end[0]);\n                    result.push(lineText);\n                }\n            }\n            else {\n                var startRowEndCol = start[1] === end[1] ? end[0] : undefined;\n                result.push(this._buffer.translateBufferLineToString(start[1], true, start[0], startRowEndCol));\n                for (var i = start[1] + 1; i <= end[1] - 1; i++) {\n                    var bufferLine = this._buffer.lines.get(i);\n                    var lineText = this._buffer.translateBufferLineToString(i, true);\n                    if (bufferLine.isWrapped) {\n                        result[result.length - 1] += lineText;\n                    }\n                    else {\n                        result.push(lineText);\n                    }\n                }\n                if (start[1] !== end[1]) {\n                    var bufferLine = this._buffer.lines.get(end[1]);\n                    var lineText = this._buffer.translateBufferLineToString(end[1], true, 0, end[0]);\n                    if (bufferLine.isWrapped) {\n                        result[result.length - 1] += lineText;\n                    }\n                    else {\n                        result.push(lineText);\n                    }\n                }\n            }\n            var formattedResult = result.map(function (line) {\n                return line.replace(ALL_NON_BREAKING_SPACE_REGEX, ' ');\n            }).join(Browser.isMSWindows ? '\\r\\n' : '\\n');\n            return formattedResult;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SelectionManager.prototype.clearSelection = function () {\n        this._model.clearSelection();\n        this._removeMouseDownListeners();\n        this.refresh();\n        this._onSelectionChange.fire();\n    };\n    SelectionManager.prototype.refresh = function (isLinuxMouseSelection) {\n        var _this = this;\n        if (!this._refreshAnimationFrame) {\n            this._refreshAnimationFrame = window.requestAnimationFrame(function () { return _this._refresh(); });\n        }\n        if (Browser.isLinux && isLinuxMouseSelection) {\n            var selectionText = this.selectionText;\n            if (selectionText.length) {\n                this._onLinuxMouseSelection.fire(this.selectionText);\n            }\n        }\n    };\n    SelectionManager.prototype._refresh = function () {\n        this._refreshAnimationFrame = null;\n        this._onRedrawRequest.fire({\n            start: this._model.finalSelectionStart,\n            end: this._model.finalSelectionEnd,\n            columnSelectMode: this._activeSelectionMode === 3\n        });\n    };\n    SelectionManager.prototype.isClickInSelection = function (event) {\n        var coords = this._getMouseBufferCoords(event);\n        var start = this._model.finalSelectionStart;\n        var end = this._model.finalSelectionEnd;\n        if (!start || !end) {\n            return false;\n        }\n        return this._areCoordsInSelection(coords, start, end);\n    };\n    SelectionManager.prototype._areCoordsInSelection = function (coords, start, end) {\n        return (coords[1] > start[1] && coords[1] < end[1]) ||\n            (start[1] === end[1] && coords[1] === start[1] && coords[0] >= start[0] && coords[0] < end[0]) ||\n            (start[1] < end[1] && coords[1] === end[1] && coords[0] < end[0]) ||\n            (start[1] < end[1] && coords[1] === start[1] && coords[0] >= start[0]);\n    };\n    SelectionManager.prototype.selectWordAtCursor = function (event) {\n        var coords = this._getMouseBufferCoords(event);\n        if (coords) {\n            this._selectWordAt(coords, false);\n            this._model.selectionEnd = null;\n            this.refresh(true);\n        }\n    };\n    SelectionManager.prototype.selectAll = function () {\n        this._model.isSelectAllActive = true;\n        this.refresh();\n        this._onSelectionChange.fire();\n    };\n    SelectionManager.prototype.selectLines = function (start, end) {\n        this._model.clearSelection();\n        start = Math.max(start, 0);\n        end = Math.min(end, this._terminal.buffer.lines.length - 1);\n        this._model.selectionStart = [0, start];\n        this._model.selectionEnd = [this._terminal.cols, end];\n        this.refresh();\n        this._onSelectionChange.fire();\n    };\n    SelectionManager.prototype._onTrim = function (amount) {\n        var needsRefresh = this._model.onTrim(amount);\n        if (needsRefresh) {\n            this.refresh();\n        }\n    };\n    SelectionManager.prototype._getMouseBufferCoords = function (event) {\n        var coords = this._terminal.mouseHelper.getCoords(event, this._terminal.screenElement, this._charMeasure, this._terminal.cols, this._terminal.rows, true);\n        if (!coords) {\n            return null;\n        }\n        coords[0]--;\n        coords[1]--;\n        coords[1] += this._terminal.buffer.ydisp;\n        return coords;\n    };\n    SelectionManager.prototype._getMouseEventScrollAmount = function (event) {\n        var offset = MouseHelper_1.MouseHelper.getCoordsRelativeToElement(event, this._terminal.screenElement)[1];\n        var terminalHeight = this._terminal.rows * Math.ceil(this._charMeasure.height * this._terminal.options.lineHeight);\n        if (offset >= 0 && offset <= terminalHeight) {\n            return 0;\n        }\n        if (offset > terminalHeight) {\n            offset -= terminalHeight;\n        }\n        offset = Math.min(Math.max(offset, -DRAG_SCROLL_MAX_THRESHOLD), DRAG_SCROLL_MAX_THRESHOLD);\n        offset /= DRAG_SCROLL_MAX_THRESHOLD;\n        return (offset / Math.abs(offset)) + Math.round(offset * (DRAG_SCROLL_MAX_SPEED - 1));\n    };\n    SelectionManager.prototype.shouldForceSelection = function (event) {\n        if (Browser.isMac) {\n            return event.altKey && this._terminal.options.macOptionClickForcesSelection;\n        }\n        return event.shiftKey;\n    };\n    SelectionManager.prototype.onMouseDown = function (event) {\n        this._mouseDownTimeStamp = event.timeStamp;\n        if (event.button === 2 && this.hasSelection) {\n            return;\n        }\n        if (event.button !== 0) {\n            return;\n        }\n        if (!this._enabled) {\n            if (!this.shouldForceSelection(event)) {\n                return;\n            }\n            event.stopPropagation();\n        }\n        event.preventDefault();\n        this._dragScrollAmount = 0;\n        if (this._enabled && event.shiftKey) {\n            this._onIncrementalClick(event);\n        }\n        else {\n            if (event.detail === 1) {\n                this._onSingleClick(event);\n            }\n            else if (event.detail === 2) {\n                this._onDoubleClick(event);\n            }\n            else if (event.detail === 3) {\n                this._onTripleClick(event);\n            }\n        }\n        this._addMouseDownListeners();\n        this.refresh(true);\n    };\n    SelectionManager.prototype._addMouseDownListeners = function () {\n        var _this = this;\n        this._terminal.element.ownerDocument.addEventListener('mousemove', this._mouseMoveListener);\n        this._terminal.element.ownerDocument.addEventListener('mouseup', this._mouseUpListener);\n        this._dragScrollIntervalTimer = setInterval(function () { return _this._dragScroll(); }, DRAG_SCROLL_INTERVAL);\n    };\n    SelectionManager.prototype._removeMouseDownListeners = function () {\n        if (this._terminal.element.ownerDocument) {\n            this._terminal.element.ownerDocument.removeEventListener('mousemove', this._mouseMoveListener);\n            this._terminal.element.ownerDocument.removeEventListener('mouseup', this._mouseUpListener);\n        }\n        clearInterval(this._dragScrollIntervalTimer);\n        this._dragScrollIntervalTimer = null;\n    };\n    SelectionManager.prototype._onIncrementalClick = function (event) {\n        if (this._model.selectionStart) {\n            this._model.selectionEnd = this._getMouseBufferCoords(event);\n        }\n    };\n    SelectionManager.prototype._onSingleClick = function (event) {\n        this._model.selectionStartLength = 0;\n        this._model.isSelectAllActive = false;\n        this._activeSelectionMode = this.shouldColumnSelect(event) ? 3 : 0;\n        this._model.selectionStart = this._getMouseBufferCoords(event);\n        if (!this._model.selectionStart) {\n            return;\n        }\n        this._model.selectionEnd = null;\n        var line = this._buffer.lines.get(this._model.selectionStart[1]);\n        if (!line) {\n            return;\n        }\n        if (line.length >= this._model.selectionStart[0]) {\n            return;\n        }\n        if (line.hasWidth(this._model.selectionStart[0]) === 0) {\n            this._model.selectionStart[0]++;\n        }\n    };\n    SelectionManager.prototype._onDoubleClick = function (event) {\n        var coords = this._getMouseBufferCoords(event);\n        if (coords) {\n            this._activeSelectionMode = 1;\n            this._selectWordAt(coords, true);\n        }\n    };\n    SelectionManager.prototype._onTripleClick = function (event) {\n        var coords = this._getMouseBufferCoords(event);\n        if (coords) {\n            this._activeSelectionMode = 2;\n            this._selectLineAt(coords[1]);\n        }\n    };\n    SelectionManager.prototype.shouldColumnSelect = function (event) {\n        return event.altKey && !(Browser.isMac && this._terminal.options.macOptionClickForcesSelection);\n    };\n    SelectionManager.prototype._onMouseMove = function (event) {\n        event.stopImmediatePropagation();\n        var previousSelectionEnd = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null;\n        this._model.selectionEnd = this._getMouseBufferCoords(event);\n        if (!this._model.selectionEnd) {\n            this.refresh(true);\n            return;\n        }\n        if (this._activeSelectionMode === 2) {\n            if (this._model.selectionEnd[1] < this._model.selectionStart[1]) {\n                this._model.selectionEnd[0] = 0;\n            }\n            else {\n                this._model.selectionEnd[0] = this._terminal.cols;\n            }\n        }\n        else if (this._activeSelectionMode === 1) {\n            this._selectToWordAt(this._model.selectionEnd);\n        }\n        this._dragScrollAmount = this._getMouseEventScrollAmount(event);\n        if (this._activeSelectionMode !== 3) {\n            if (this._dragScrollAmount > 0) {\n                this._model.selectionEnd[0] = this._terminal.cols;\n            }\n            else if (this._dragScrollAmount < 0) {\n                this._model.selectionEnd[0] = 0;\n            }\n        }\n        if (this._model.selectionEnd[1] < this._buffer.lines.length) {\n            if (this._buffer.lines.get(this._model.selectionEnd[1]).hasWidth(this._model.selectionEnd[0]) === 0) {\n                this._model.selectionEnd[0]++;\n            }\n        }\n        if (!previousSelectionEnd ||\n            previousSelectionEnd[0] !== this._model.selectionEnd[0] ||\n            previousSelectionEnd[1] !== this._model.selectionEnd[1]) {\n            this.refresh(true);\n        }\n    };\n    SelectionManager.prototype._dragScroll = function () {\n        if (this._dragScrollAmount) {\n            this._terminal.scrollLines(this._dragScrollAmount, false);\n            if (this._dragScrollAmount > 0) {\n                if (this._activeSelectionMode !== 3) {\n                    this._model.selectionEnd[0] = this._terminal.cols;\n                }\n                this._model.selectionEnd[1] = Math.min(this._terminal.buffer.ydisp + this._terminal.rows, this._terminal.buffer.lines.length - 1);\n            }\n            else {\n                if (this._activeSelectionMode !== 3) {\n                    this._model.selectionEnd[0] = 0;\n                }\n                this._model.selectionEnd[1] = this._terminal.buffer.ydisp;\n            }\n            this.refresh();\n        }\n    };\n    SelectionManager.prototype._onMouseUp = function (event) {\n        var timeElapsed = event.timeStamp - this._mouseDownTimeStamp;\n        this._removeMouseDownListeners();\n        if (this.selectionText.length <= 1 && timeElapsed < ALT_CLICK_MOVE_CURSOR_TIME) {\n            (new AltClickHandler_1.AltClickHandler(event, this._terminal)).move();\n        }\n        else if (this.hasSelection) {\n            this._onSelectionChange.fire();\n        }\n    };\n    SelectionManager.prototype._onBufferActivate = function (e) {\n        var _this = this;\n        this.clearSelection();\n        if (this._trimListener) {\n            this._trimListener.dispose();\n        }\n        this._trimListener = e.activeBuffer.lines.onTrim(function (amount) { return _this._onTrim(amount); });\n    };\n    SelectionManager.prototype._convertViewportColToCharacterIndex = function (bufferLine, coords) {\n        var charIndex = coords[0];\n        for (var i = 0; coords[0] >= i; i++) {\n            var length_1 = bufferLine.loadCell(i, this._workCell).getChars().length;\n            if (this._workCell.getWidth() === 0) {\n                charIndex--;\n            }\n            else if (length_1 > 1 && coords[0] !== i) {\n                charIndex += length_1 - 1;\n            }\n        }\n        return charIndex;\n    };\n    SelectionManager.prototype.setSelection = function (col, row, length) {\n        this._model.clearSelection();\n        this._removeMouseDownListeners();\n        this._model.selectionStart = [col, row];\n        this._model.selectionStartLength = length;\n        this.refresh();\n    };\n    SelectionManager.prototype._getWordAt = function (coords, allowWhitespaceOnlySelection, followWrappedLinesAbove, followWrappedLinesBelow) {\n        if (followWrappedLinesAbove === void 0) { followWrappedLinesAbove = true; }\n        if (followWrappedLinesBelow === void 0) { followWrappedLinesBelow = true; }\n        if (coords[0] >= this._terminal.cols) {\n            return null;\n        }\n        var bufferLine = this._buffer.lines.get(coords[1]);\n        if (!bufferLine) {\n            return null;\n        }\n        var line = this._buffer.translateBufferLineToString(coords[1], false);\n        var startIndex = this._convertViewportColToCharacterIndex(bufferLine, coords);\n        var endIndex = startIndex;\n        var charOffset = coords[0] - startIndex;\n        var leftWideCharCount = 0;\n        var rightWideCharCount = 0;\n        var leftLongCharOffset = 0;\n        var rightLongCharOffset = 0;\n        if (line.charAt(startIndex) === ' ') {\n            while (startIndex > 0 && line.charAt(startIndex - 1) === ' ') {\n                startIndex--;\n            }\n            while (endIndex < line.length && line.charAt(endIndex + 1) === ' ') {\n                endIndex++;\n            }\n        }\n        else {\n            var startCol = coords[0];\n            var endCol = coords[0];\n            if (bufferLine.getWidth(startCol) === 0) {\n                leftWideCharCount++;\n                startCol--;\n            }\n            if (bufferLine.getWidth(endCol) === 2) {\n                rightWideCharCount++;\n                endCol++;\n            }\n            var length_2 = bufferLine.getString(endCol).length;\n            if (length_2 > 1) {\n                rightLongCharOffset += length_2 - 1;\n                endIndex += length_2 - 1;\n            }\n            while (startCol > 0 && startIndex > 0 && !this._isCharWordSeparator(bufferLine.loadCell(startCol - 1, this._workCell))) {\n                bufferLine.loadCell(startCol - 1, this._workCell);\n                var length_3 = this._workCell.getChars().length;\n                if (this._workCell.getWidth() === 0) {\n                    leftWideCharCount++;\n                    startCol--;\n                }\n                else if (length_3 > 1) {\n                    leftLongCharOffset += length_3 - 1;\n                    startIndex -= length_3 - 1;\n                }\n                startIndex--;\n                startCol--;\n            }\n            while (endCol < bufferLine.length && endIndex + 1 < line.length && !this._isCharWordSeparator(bufferLine.loadCell(endCol + 1, this._workCell))) {\n                bufferLine.loadCell(endCol + 1, this._workCell);\n                var length_4 = this._workCell.getChars().length;\n                if (this._workCell.getWidth() === 2) {\n                    rightWideCharCount++;\n                    endCol++;\n                }\n                else if (length_4 > 1) {\n                    rightLongCharOffset += length_4 - 1;\n                    endIndex += length_4 - 1;\n                }\n                endIndex++;\n                endCol++;\n            }\n        }\n        endIndex++;\n        var start = startIndex\n            + charOffset\n            - leftWideCharCount\n            + leftLongCharOffset;\n        var length = Math.min(this._terminal.cols, endIndex\n            - startIndex\n            + leftWideCharCount\n            + rightWideCharCount\n            - leftLongCharOffset\n            - rightLongCharOffset);\n        if (!allowWhitespaceOnlySelection && line.slice(startIndex, endIndex).trim() === '') {\n            return null;\n        }\n        if (followWrappedLinesAbove) {\n            if (start === 0 && bufferLine.getCodePoint(0) !== 32) {\n                var previousBufferLine = this._buffer.lines.get(coords[1] - 1);\n                if (previousBufferLine && bufferLine.isWrapped && previousBufferLine.getCodePoint(this._terminal.cols - 1) !== 32) {\n                    var previousLineWordPosition = this._getWordAt([this._terminal.cols - 1, coords[1] - 1], false, true, false);\n                    if (previousLineWordPosition) {\n                        var offset = this._terminal.cols - previousLineWordPosition.start;\n                        start -= offset;\n                        length += offset;\n                    }\n                }\n            }\n        }\n        if (followWrappedLinesBelow) {\n            if (start + length === this._terminal.cols && bufferLine.getCodePoint(this._terminal.cols - 1) !== 32) {\n                var nextBufferLine = this._buffer.lines.get(coords[1] + 1);\n                if (nextBufferLine && nextBufferLine.isWrapped && nextBufferLine.getCodePoint(0) !== 32) {\n                    var nextLineWordPosition = this._getWordAt([0, coords[1] + 1], false, false, true);\n                    if (nextLineWordPosition) {\n                        length += nextLineWordPosition.length;\n                    }\n                }\n            }\n        }\n        return { start: start, length: length };\n    };\n    SelectionManager.prototype._selectWordAt = function (coords, allowWhitespaceOnlySelection) {\n        var wordPosition = this._getWordAt(coords, allowWhitespaceOnlySelection);\n        if (wordPosition) {\n            while (wordPosition.start < 0) {\n                wordPosition.start += this._terminal.cols;\n                coords[1]--;\n            }\n            this._model.selectionStart = [wordPosition.start, coords[1]];\n            this._model.selectionStartLength = wordPosition.length;\n        }\n    };\n    SelectionManager.prototype._selectToWordAt = function (coords) {\n        var wordPosition = this._getWordAt(coords, true);\n        if (wordPosition) {\n            var endRow = coords[1];\n            while (wordPosition.start < 0) {\n                wordPosition.start += this._terminal.cols;\n                endRow--;\n            }\n            if (!this._model.areSelectionValuesReversed()) {\n                while (wordPosition.start + wordPosition.length > this._terminal.cols) {\n                    wordPosition.length -= this._terminal.cols;\n                    endRow++;\n                }\n            }\n            this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? wordPosition.start : wordPosition.start + wordPosition.length, endRow];\n        }\n    };\n    SelectionManager.prototype._isCharWordSeparator = function (cell) {\n        if (cell.getWidth() === 0) {\n            return false;\n        }\n        return WORD_SEPARATORS.indexOf(cell.getChars()) >= 0;\n    };\n    SelectionManager.prototype._selectLineAt = function (line) {\n        var wrappedRange = this._buffer.getWrappedRangeForLine(line);\n        this._model.selectionStart = [0, wrappedRange.first];\n        this._model.selectionEnd = [this._terminal.cols, wrappedRange.last];\n        this._model.selectionStartLength = 0;\n    };\n    return SelectionManager;\n}());\nexports.SelectionManager = SelectionManager;\n\n},{\"./MouseHelper\":11,\"./SelectionModel\":14,\"./common/EventEmitter2\":23,\"./common/Platform\":25,\"./core/buffer/BufferLine\":29,\"./handlers/AltClickHandler\":35}],14:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SelectionModel = (function () {\n    function SelectionModel(_terminal) {\n        this._terminal = _terminal;\n        this.clearSelection();\n    }\n    SelectionModel.prototype.clearSelection = function () {\n        this.selectionStart = null;\n        this.selectionEnd = null;\n        this.isSelectAllActive = false;\n        this.selectionStartLength = 0;\n    };\n    Object.defineProperty(SelectionModel.prototype, \"finalSelectionStart\", {\n        get: function () {\n            if (this.isSelectAllActive) {\n                return [0, 0];\n            }\n            if (!this.selectionEnd || !this.selectionStart) {\n                return this.selectionStart;\n            }\n            return this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SelectionModel.prototype, \"finalSelectionEnd\", {\n        get: function () {\n            if (this.isSelectAllActive) {\n                return [this._terminal.cols, this._terminal.buffer.ybase + this._terminal.rows - 1];\n            }\n            if (!this.selectionStart) {\n                return null;\n            }\n            if (!this.selectionEnd || this.areSelectionValuesReversed()) {\n                var startPlusLength = this.selectionStart[0] + this.selectionStartLength;\n                if (startPlusLength > this._terminal.cols) {\n                    return [startPlusLength % this._terminal.cols, this.selectionStart[1] + Math.floor(startPlusLength / this._terminal.cols)];\n                }\n                return [startPlusLength, this.selectionStart[1]];\n            }\n            if (this.selectionStartLength) {\n                if (this.selectionEnd[1] === this.selectionStart[1]) {\n                    return [Math.max(this.selectionStart[0] + this.selectionStartLength, this.selectionEnd[0]), this.selectionEnd[1]];\n                }\n            }\n            return this.selectionEnd;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SelectionModel.prototype.areSelectionValuesReversed = function () {\n        var start = this.selectionStart;\n        var end = this.selectionEnd;\n        if (!start || !end) {\n            return false;\n        }\n        return start[1] > end[1] || (start[1] === end[1] && start[0] > end[0]);\n    };\n    SelectionModel.prototype.onTrim = function (amount) {\n        if (this.selectionStart) {\n            this.selectionStart[1] -= amount;\n        }\n        if (this.selectionEnd) {\n            this.selectionEnd[1] -= amount;\n        }\n        if (this.selectionEnd && this.selectionEnd[1] < 0) {\n            this.clearSelection();\n            return true;\n        }\n        if (this.selectionStart && this.selectionStart[1] < 0) {\n            this.selectionStart[1] = 0;\n        }\n        return false;\n    };\n    return SelectionModel;\n}());\nexports.SelectionModel = SelectionModel;\n\n},{}],15:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_BELL_SOUND = 'data:audio/wav;base64,UklGRigBAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQQBAADpAFgCwAMlBZoG/wdmCcoKRAypDQ8PbRDBEQQTOxRtFYcWlBePGIUZXhoiG88bcBz7HHIdzh0WHlMeZx51HmkeUx4WHs8dah0AHXwc3hs9G4saxRnyGBIYGBcQFv8U4RPAEoYRQBACD70NWwwHC6gJOwjWBloF7gOBAhABkf8b/qv8R/ve+Xf4Ife79W/0JfPZ8Z/wde9N7ijtE+wU6xvqM+lb6H7nw+YX5mrlxuQz5Mzje+Ma49fioeKD4nXiYeJy4pHitOL04j/jn+MN5IPkFOWs5U3mDefM55/ogOl36m7rdOyE7abuyu8D8Unyj/Pg9D/2qfcb+Yn6/vuK/Qj/lAAlAg==';\nvar SoundManager = (function () {\n    function SoundManager(_terminal) {\n        this._terminal = _terminal;\n    }\n    Object.defineProperty(SoundManager, \"audioContext\", {\n        get: function () {\n            if (!SoundManager._audioContext) {\n                var audioContextCtor = window.AudioContext || window.webkitAudioContext;\n                if (!audioContextCtor) {\n                    console.warn('Web Audio API is not supported by this browser. Consider upgrading to the latest version');\n                    return null;\n                }\n                SoundManager._audioContext = new audioContextCtor();\n            }\n            return SoundManager._audioContext;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SoundManager.prototype.playBellSound = function () {\n        var ctx = SoundManager.audioContext;\n        if (!ctx) {\n            return;\n        }\n        var bellAudioSource = ctx.createBufferSource();\n        ctx.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._terminal.options.bellSound)), function (buffer) {\n            bellAudioSource.buffer = buffer;\n            bellAudioSource.connect(ctx.destination);\n            bellAudioSource.start(0);\n        });\n    };\n    SoundManager.prototype._base64ToArrayBuffer = function (base64) {\n        var binaryString = window.atob(base64);\n        var len = binaryString.length;\n        var bytes = new Uint8Array(len);\n        for (var i = 0; i < len; i++) {\n            bytes[i] = binaryString.charCodeAt(i);\n        }\n        return bytes.buffer;\n    };\n    SoundManager.prototype._removeMimeType = function (dataURI) {\n        var splitUri = dataURI.split(',');\n        return splitUri[1];\n    };\n    return SoundManager;\n}());\nexports.SoundManager = SoundManager;\n\n},{}],16:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.blankLine = 'Blank line';\nexports.promptLabel = 'Terminal input';\nexports.tooMuchOutput = 'Too much output to announce, navigate to rows manually to read';\n\n},{}],17:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BufferSet_1 = require(\"./BufferSet\");\nvar Buffer_1 = require(\"./Buffer\");\nvar CompositionHelper_1 = require(\"./CompositionHelper\");\nvar EventEmitter_1 = require(\"./common/EventEmitter\");\nvar Viewport_1 = require(\"./Viewport\");\nvar Clipboard_1 = require(\"./Clipboard\");\nvar EscapeSequences_1 = require(\"./common/data/EscapeSequences\");\nvar InputHandler_1 = require(\"./InputHandler\");\nvar Renderer_1 = require(\"./renderer/Renderer\");\nvar Linkifier_1 = require(\"./Linkifier\");\nvar SelectionManager_1 = require(\"./SelectionManager\");\nvar CharMeasure_1 = require(\"./CharMeasure\");\nvar Browser = require(\"./common/Platform\");\nvar Lifecycle_1 = require(\"./ui/Lifecycle\");\nvar Strings = require(\"./Strings\");\nvar MouseHelper_1 = require(\"./MouseHelper\");\nvar SoundManager_1 = require(\"./SoundManager\");\nvar MouseZoneManager_1 = require(\"./MouseZoneManager\");\nvar AccessibilityManager_1 = require(\"./AccessibilityManager\");\nvar CharAtlasCache_1 = require(\"./renderer/atlas/CharAtlasCache\");\nvar DomRenderer_1 = require(\"./renderer/dom/DomRenderer\");\nvar Keyboard_1 = require(\"./core/input/Keyboard\");\nvar Clone_1 = require(\"./common/Clone\");\nvar EventEmitter2_1 = require(\"./common/EventEmitter2\");\nvar BufferLine_1 = require(\"./core/buffer/BufferLine\");\nvar WindowsMode_1 = require(\"./WindowsMode\");\nvar ColorManager_1 = require(\"./ui/ColorManager\");\nvar RenderCoordinator_1 = require(\"./renderer/RenderCoordinator\");\nvar document = (typeof window !== 'undefined') ? window.document : null;\nvar WRITE_BUFFER_PAUSE_THRESHOLD = 5;\nvar WRITE_TIMEOUT_MS = 12;\nvar WRITE_BUFFER_LENGTH_THRESHOLD = 50;\nvar MINIMUM_COLS = 2;\nvar MINIMUM_ROWS = 1;\nvar CONSTRUCTOR_ONLY_OPTIONS = ['cols', 'rows'];\nvar DEFAULT_OPTIONS = {\n    cols: 80,\n    rows: 24,\n    convertEol: false,\n    termName: 'xterm',\n    cursorBlink: false,\n    cursorStyle: 'block',\n    bellSound: SoundManager_1.DEFAULT_BELL_SOUND,\n    bellStyle: 'none',\n    drawBoldTextInBrightColors: true,\n    enableBold: true,\n    experimentalCharAtlas: 'static',\n    fontFamily: 'courier-new, courier, monospace',\n    fontSize: 15,\n    fontWeight: 'normal',\n    fontWeightBold: 'bold',\n    lineHeight: 1.0,\n    letterSpacing: 0,\n    scrollback: 1000,\n    screenKeys: false,\n    screenReaderMode: false,\n    debug: false,\n    macOptionIsMeta: false,\n    macOptionClickForcesSelection: false,\n    cancelEvents: false,\n    disableStdin: false,\n    useFlowControl: false,\n    allowTransparency: false,\n    tabStopWidth: 8,\n    theme: undefined,\n    rightClickSelectsWord: Browser.isMac,\n    rendererType: 'canvas',\n    windowsMode: false\n};\nvar Terminal = (function (_super) {\n    __extends(Terminal, _super);\n    function Terminal(options) {\n        if (options === void 0) { options = {}; }\n        var _this = _super.call(this) || this;\n        _this.browser = Browser;\n        _this._blankLine = null;\n        _this._onCursorMove = new EventEmitter2_1.EventEmitter2();\n        _this._onData = new EventEmitter2_1.EventEmitter2();\n        _this._onKey = new EventEmitter2_1.EventEmitter2();\n        _this._onLineFeed = new EventEmitter2_1.EventEmitter2();\n        _this._onRender = new EventEmitter2_1.EventEmitter2();\n        _this._onResize = new EventEmitter2_1.EventEmitter2();\n        _this._onScroll = new EventEmitter2_1.EventEmitter2();\n        _this._onSelectionChange = new EventEmitter2_1.EventEmitter2();\n        _this._onTitleChange = new EventEmitter2_1.EventEmitter2();\n        _this.options = Clone_1.clone(options);\n        _this._setup();\n        _this.onCursorMove(function () { return _this.emit('cursormove'); });\n        _this.onData(function (e) { return _this.emit('data', e); });\n        _this.onKey(function (e) { return _this.emit('key', e.key, e.domEvent); });\n        _this.onLineFeed(function () { return _this.emit('linefeed'); });\n        _this.onRender(function (e) { return _this.emit('refresh', e); });\n        _this.onResize(function (e) { return _this.emit('resize', e); });\n        _this.onSelectionChange(function () { return _this.emit('selection'); });\n        _this.onScroll(function (e) { return _this.emit('scroll', e); });\n        _this.onTitleChange(function (e) { return _this.emit('title', e); });\n        return _this;\n    }\n    Object.defineProperty(Terminal.prototype, \"onCursorMove\", {\n        get: function () { return this._onCursorMove.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onData\", {\n        get: function () { return this._onData.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onKey\", {\n        get: function () { return this._onKey.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onLineFeed\", {\n        get: function () { return this._onLineFeed.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onRender\", {\n        get: function () { return this._onRender.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onResize\", {\n        get: function () { return this._onResize.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onScroll\", {\n        get: function () { return this._onScroll.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onSelectionChange\", {\n        get: function () { return this._onSelectionChange.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onTitleChange\", {\n        get: function () { return this._onTitleChange.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Terminal.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        if (this._windowsMode) {\n            this._windowsMode.dispose();\n            this._windowsMode = undefined;\n        }\n        this._customKeyEventHandler = null;\n        CharAtlasCache_1.removeTerminalFromCache(this);\n        this.handler = function () { };\n        this.write = function () { };\n        if (this.element && this.element.parentNode) {\n            this.element.parentNode.removeChild(this.element);\n        }\n    };\n    Terminal.prototype.destroy = function () {\n        this.dispose();\n    };\n    Terminal.prototype._setup = function () {\n        var _this = this;\n        Object.keys(DEFAULT_OPTIONS).forEach(function (key) {\n            if (_this.options[key] === null || _this.options[key] === undefined) {\n                _this.options[key] = DEFAULT_OPTIONS[key];\n            }\n        });\n        this._parent = document ? document.body : null;\n        this.cols = Math.max(this.options.cols, MINIMUM_COLS);\n        this.rows = Math.max(this.options.rows, MINIMUM_ROWS);\n        if (this.options.handler) {\n            this.onData(this.options.handler);\n        }\n        this.cursorState = 0;\n        this.cursorHidden = false;\n        this._customKeyEventHandler = null;\n        this.applicationKeypad = false;\n        this.applicationCursor = false;\n        this.originMode = false;\n        this.insertMode = false;\n        this.wraparoundMode = true;\n        this.bracketedPasteMode = false;\n        this.charset = null;\n        this.gcharset = null;\n        this.glevel = 0;\n        this.charsets = [null];\n        this.curAttrData = BufferLine_1.DEFAULT_ATTR_DATA.clone();\n        this._eraseAttrData = BufferLine_1.DEFAULT_ATTR_DATA.clone();\n        this.params = [];\n        this.currentParam = 0;\n        this.writeBuffer = [];\n        this.writeBufferUtf8 = [];\n        this._writeInProgress = false;\n        this._xoffSentToCatchUp = false;\n        this._userScrolling = false;\n        this._inputHandler = new InputHandler_1.InputHandler(this);\n        this._inputHandler.onCursorMove(function () { return _this._onCursorMove.fire(); });\n        this._inputHandler.onLineFeed(function () { return _this._onLineFeed.fire(); });\n        this._inputHandler.onData(function (e) { return _this._onData.fire(e); });\n        this.register(this._inputHandler);\n        this.selectionManager = this.selectionManager || null;\n        this.linkifier = this.linkifier || new Linkifier_1.Linkifier(this);\n        this._mouseZoneManager = this._mouseZoneManager || null;\n        this.soundManager = this.soundManager || new SoundManager_1.SoundManager(this);\n        this.buffers = new BufferSet_1.BufferSet(this);\n        if (this.selectionManager) {\n            this.selectionManager.clearSelection();\n            this.selectionManager.initBuffersListeners();\n        }\n        if (this.options.windowsMode) {\n            this._windowsMode = WindowsMode_1.applyWindowsMode(this);\n        }\n    };\n    Object.defineProperty(Terminal.prototype, \"buffer\", {\n        get: function () {\n            return this.buffers.active;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Terminal.prototype.eraseAttrData = function () {\n        this._eraseAttrData.bg &= ~(50331648 | 0xFFFFFF);\n        this._eraseAttrData.bg |= this.curAttrData.bg & ~0xFC000000;\n        return this._eraseAttrData;\n    };\n    Terminal.prototype.focus = function () {\n        if (this.textarea) {\n            this.textarea.focus({ preventScroll: true });\n        }\n    };\n    Object.defineProperty(Terminal.prototype, \"isFocused\", {\n        get: function () {\n            return document.activeElement === this.textarea && document.hasFocus();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Terminal.prototype.getOption = function (key) {\n        if (!(key in DEFAULT_OPTIONS)) {\n            throw new Error('No option with key \"' + key + '\"');\n        }\n        return this.options[key];\n    };\n    Terminal.prototype.setOption = function (key, value) {\n        if (!(key in DEFAULT_OPTIONS)) {\n            throw new Error('No option with key \"' + key + '\"');\n        }\n        if (CONSTRUCTOR_ONLY_OPTIONS.indexOf(key) !== -1) {\n            console.error(\"Option \\\"\" + key + \"\\\" can only be set in the constructor\");\n        }\n        if (this.options[key] === value) {\n            return;\n        }\n        switch (key) {\n            case 'bellStyle':\n                if (!value) {\n                    value = 'none';\n                }\n                break;\n            case 'cursorStyle':\n                if (!value) {\n                    value = 'block';\n                }\n                break;\n            case 'fontWeight':\n                if (!value) {\n                    value = 'normal';\n                }\n                break;\n            case 'fontWeightBold':\n                if (!value) {\n                    value = 'bold';\n                }\n                break;\n            case 'lineHeight':\n                if (value < 1) {\n                    console.warn(key + \" cannot be less than 1, value: \" + value);\n                    return;\n                }\n            case 'rendererType':\n                if (!value) {\n                    value = 'canvas';\n                }\n                break;\n            case 'tabStopWidth':\n                if (value < 1) {\n                    console.warn(key + \" cannot be less than 1, value: \" + value);\n                    return;\n                }\n                break;\n            case 'theme':\n                this._setTheme(value);\n                break;\n            case 'scrollback':\n                value = Math.min(value, Buffer_1.MAX_BUFFER_SIZE);\n                if (value < 0) {\n                    console.warn(key + \" cannot be less than 0, value: \" + value);\n                    return;\n                }\n                if (this.options[key] !== value) {\n                    var newBufferLength = this.rows + value;\n                    if (this.buffer.lines.length > newBufferLength) {\n                        var amountToTrim = this.buffer.lines.length - newBufferLength;\n                        var needsRefresh = (this.buffer.ydisp - amountToTrim < 0);\n                        this.buffer.lines.trimStart(amountToTrim);\n                        this.buffer.ybase = Math.max(this.buffer.ybase - amountToTrim, 0);\n                        this.buffer.ydisp = Math.max(this.buffer.ydisp - amountToTrim, 0);\n                        if (needsRefresh) {\n                            this.refresh(0, this.rows - 1);\n                        }\n                    }\n                }\n                break;\n        }\n        this.options[key] = value;\n        switch (key) {\n            case 'fontFamily':\n            case 'fontSize':\n                if (this._renderCoordinator) {\n                    this._renderCoordinator.clear();\n                    this.charMeasure.measure(this.options);\n                }\n                break;\n            case 'drawBoldTextInBrightColors':\n            case 'experimentalCharAtlas':\n            case 'enableBold':\n            case 'letterSpacing':\n            case 'lineHeight':\n            case 'fontWeight':\n            case 'fontWeightBold':\n                if (this._renderCoordinator) {\n                    this._renderCoordinator.clear();\n                    this._renderCoordinator.onResize(this.cols, this.rows);\n                    this.refresh(0, this.rows - 1);\n                }\n                break;\n            case 'rendererType':\n                if (this._renderCoordinator) {\n                    this._renderCoordinator.setRenderer(this._createRenderer());\n                }\n                break;\n            case 'scrollback':\n                this.buffers.resize(this.cols, this.rows);\n                if (this.viewport) {\n                    this.viewport.syncScrollArea();\n                }\n                break;\n            case 'screenReaderMode':\n                if (value) {\n                    if (!this._accessibilityManager && this._renderCoordinator) {\n                        this._accessibilityManager = new AccessibilityManager_1.AccessibilityManager(this, this._renderCoordinator.dimensions);\n                    }\n                }\n                else {\n                    if (this._accessibilityManager) {\n                        this._accessibilityManager.dispose();\n                        this._accessibilityManager = null;\n                    }\n                }\n                break;\n            case 'tabStopWidth':\n                this.buffers.setupTabStops();\n                break;\n            case 'windowsMode':\n                if (value) {\n                    if (!this._windowsMode) {\n                        this._windowsMode = WindowsMode_1.applyWindowsMode(this);\n                    }\n                }\n                else {\n                    if (this._windowsMode) {\n                        this._windowsMode.dispose();\n                        this._windowsMode = undefined;\n                    }\n                }\n                break;\n        }\n        if (this._renderCoordinator) {\n            this._renderCoordinator.onOptionsChanged();\n        }\n    };\n    Terminal.prototype._onTextAreaFocus = function (ev) {\n        if (this.sendFocus) {\n            this.handler(EscapeSequences_1.C0.ESC + '[I');\n        }\n        this.updateCursorStyle(ev);\n        this.element.classList.add('focus');\n        this.showCursor();\n        this.emit('focus');\n    };\n    Terminal.prototype.blur = function () {\n        return this.textarea.blur();\n    };\n    Terminal.prototype._onTextAreaBlur = function () {\n        this.textarea.value = '';\n        this.refresh(this.buffer.y, this.buffer.y);\n        if (this.sendFocus) {\n            this.handler(EscapeSequences_1.C0.ESC + '[O');\n        }\n        this.element.classList.remove('focus');\n        this.emit('blur');\n    };\n    Terminal.prototype._initGlobal = function () {\n        var _this = this;\n        this._bindKeys();\n        this.register(Lifecycle_1.addDisposableDomListener(this.element, 'copy', function (event) {\n            if (!_this.hasSelection()) {\n                return;\n            }\n            Clipboard_1.copyHandler(event, _this, _this.selectionManager);\n        }));\n        var pasteHandlerWrapper = function (event) { return Clipboard_1.pasteHandler(event, _this); };\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'paste', pasteHandlerWrapper));\n        this.register(Lifecycle_1.addDisposableDomListener(this.element, 'paste', pasteHandlerWrapper));\n        if (Browser.isFirefox) {\n            this.register(Lifecycle_1.addDisposableDomListener(this.element, 'mousedown', function (event) {\n                if (event.button === 2) {\n                    Clipboard_1.rightClickHandler(event, _this, _this.selectionManager, _this.options.rightClickSelectsWord);\n                }\n            }));\n        }\n        else {\n            this.register(Lifecycle_1.addDisposableDomListener(this.element, 'contextmenu', function (event) {\n                Clipboard_1.rightClickHandler(event, _this, _this.selectionManager, _this.options.rightClickSelectsWord);\n            }));\n        }\n        if (Browser.isLinux) {\n            this.register(Lifecycle_1.addDisposableDomListener(this.element, 'auxclick', function (event) {\n                if (event.button === 1) {\n                    Clipboard_1.moveTextAreaUnderMouseCursor(event, _this);\n                }\n            }));\n        }\n    };\n    Terminal.prototype._bindKeys = function () {\n        var _this = this;\n        var self = this;\n        this.register(Lifecycle_1.addDisposableDomListener(this.element, 'keydown', function (ev) {\n            if (document.activeElement !== this) {\n                return;\n            }\n            self._keyDown(ev);\n        }, true));\n        this.register(Lifecycle_1.addDisposableDomListener(this.element, 'keypress', function (ev) {\n            if (document.activeElement !== this) {\n                return;\n            }\n            self._keyPress(ev);\n        }, true));\n        this.register(Lifecycle_1.addDisposableDomListener(this.element, 'keyup', function (ev) {\n            if (!wasModifierKeyOnlyEvent(ev)) {\n                _this.focus();\n            }\n            self._keyUp(ev);\n        }, true));\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'keydown', function (ev) { return _this._keyDown(ev); }, true));\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'keypress', function (ev) { return _this._keyPress(ev); }, true));\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'compositionstart', function () { return _this._compositionHelper.compositionstart(); }));\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'compositionupdate', function (e) { return _this._compositionHelper.compositionupdate(e); }));\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'compositionend', function () { return _this._compositionHelper.compositionend(); }));\n        this.register(this.onRender(function () { return _this._compositionHelper.updateCompositionElements(); }));\n        this.register(this.onRender(function (e) { return _this._queueLinkification(e.start, e.end); }));\n    };\n    Terminal.prototype.open = function (parent) {\n        var _this = this;\n        this._parent = parent || this._parent;\n        if (!this._parent) {\n            throw new Error('Terminal requires a parent element.');\n        }\n        this._context = this._parent.ownerDocument.defaultView;\n        this._document = this._parent.ownerDocument;\n        this.element = this._document.createElement('div');\n        this.element.dir = 'ltr';\n        this.element.classList.add('terminal');\n        this.element.classList.add('xterm');\n        this.element.setAttribute('tabindex', '0');\n        this._parent.appendChild(this.element);\n        var fragment = document.createDocumentFragment();\n        this._viewportElement = document.createElement('div');\n        this._viewportElement.classList.add('xterm-viewport');\n        fragment.appendChild(this._viewportElement);\n        this._viewportScrollArea = document.createElement('div');\n        this._viewportScrollArea.classList.add('xterm-scroll-area');\n        this._viewportElement.appendChild(this._viewportScrollArea);\n        this.screenElement = document.createElement('div');\n        this.screenElement.classList.add('xterm-screen');\n        this._helperContainer = document.createElement('div');\n        this._helperContainer.classList.add('xterm-helpers');\n        this.screenElement.appendChild(this._helperContainer);\n        fragment.appendChild(this.screenElement);\n        this._mouseZoneManager = new MouseZoneManager_1.MouseZoneManager(this);\n        this.register(this._mouseZoneManager);\n        this.register(this.onScroll(function () { return _this._mouseZoneManager.clearAll(); }));\n        this.linkifier.attachToDom(this._mouseZoneManager);\n        this.textarea = document.createElement('textarea');\n        this.textarea.classList.add('xterm-helper-textarea');\n        this.textarea.setAttribute('aria-label', Strings.promptLabel);\n        this.textarea.setAttribute('aria-multiline', 'false');\n        this.textarea.setAttribute('autocorrect', 'off');\n        this.textarea.setAttribute('autocapitalize', 'off');\n        this.textarea.setAttribute('spellcheck', 'false');\n        this.textarea.tabIndex = 0;\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'focus', function (ev) { return _this._onTextAreaFocus(ev); }));\n        this.register(Lifecycle_1.addDisposableDomListener(this.textarea, 'blur', function () { return _this._onTextAreaBlur(); }));\n        this._helperContainer.appendChild(this.textarea);\n        this._compositionView = document.createElement('div');\n        this._compositionView.classList.add('composition-view');\n        this._compositionHelper = new CompositionHelper_1.CompositionHelper(this.textarea, this._compositionView, this);\n        this._helperContainer.appendChild(this._compositionView);\n        this.charMeasure = new CharMeasure_1.CharMeasure(document, this._helperContainer);\n        this.element.appendChild(fragment);\n        this._theme = this.options.theme;\n        this._colorManager = new ColorManager_1.ColorManager(document, this.options.allowTransparency);\n        this._colorManager.setTheme(this._theme);\n        var renderer = this._createRenderer();\n        this._renderCoordinator = new RenderCoordinator_1.RenderCoordinator(renderer, this.rows, this.screenElement);\n        this._renderCoordinator.onRender(function (e) { return _this._onRender.fire(e); });\n        this.onResize(function (e) { return _this._renderCoordinator.resize(e.cols, e.rows); });\n        this.viewport = new Viewport_1.Viewport(this, this._viewportElement, this._viewportScrollArea, this.charMeasure, this._renderCoordinator.dimensions);\n        this.viewport.onThemeChange(this._colorManager.colors);\n        this.register(this.viewport);\n        this.register(this.onCursorMove(function () { return _this._renderCoordinator.onCursorMove(); }));\n        this.register(this.onResize(function () { return _this._renderCoordinator.onResize(_this.cols, _this.rows); }));\n        this.register(this.addDisposableListener('blur', function () { return _this._renderCoordinator.onBlur(); }));\n        this.register(this.addDisposableListener('focus', function () { return _this._renderCoordinator.onFocus(); }));\n        this.register(this.charMeasure.onCharSizeChanged(function () { return _this._renderCoordinator.onCharSizeChanged(); }));\n        this.register(this._renderCoordinator.onDimensionsChange(function () { return _this.viewport.syncScrollArea(); }));\n        this.selectionManager = new SelectionManager_1.SelectionManager(this, this.charMeasure);\n        this.register(this.selectionManager.onSelectionChange(function () { return _this._onSelectionChange.fire(); }));\n        this.register(Lifecycle_1.addDisposableDomListener(this.element, 'mousedown', function (e) { return _this.selectionManager.onMouseDown(e); }));\n        this.register(this.selectionManager.onRedrawRequest(function (e) { return _this._renderCoordinator.onSelectionChanged(e.start, e.end, e.columnSelectMode); }));\n        this.register(this.selectionManager.onLinuxMouseSelection(function (text) {\n            _this.textarea.value = text;\n            _this.textarea.focus();\n            _this.textarea.select();\n        }));\n        this.register(this.onScroll(function () {\n            _this.viewport.syncScrollArea();\n            _this.selectionManager.refresh();\n        }));\n        this.register(Lifecycle_1.addDisposableDomListener(this._viewportElement, 'scroll', function () { return _this.selectionManager.refresh(); }));\n        this.mouseHelper = new MouseHelper_1.MouseHelper(this._renderCoordinator);\n        this.element.classList.toggle('enable-mouse-events', this.mouseEvents);\n        if (this.mouseEvents) {\n            this.selectionManager.disable();\n        }\n        else {\n            this.selectionManager.enable();\n        }\n        if (this.options.screenReaderMode) {\n            this._accessibilityManager = new AccessibilityManager_1.AccessibilityManager(this, this._renderCoordinator.dimensions);\n            this._accessibilityManager.register(this._renderCoordinator.onDimensionsChange(function (e) { return _this._accessibilityManager.setDimensions(e); }));\n        }\n        this.charMeasure.measure(this.options);\n        this.refresh(0, this.rows - 1);\n        this._initGlobal();\n        this.bindMouse();\n    };\n    Terminal.prototype._createRenderer = function () {\n        switch (this.options.rendererType) {\n            case 'canvas':\n                return new Renderer_1.Renderer(this, this._colorManager.colors);\n                break;\n            case 'dom':\n                return new DomRenderer_1.DomRenderer(this, this._colorManager.colors);\n                break;\n            default: throw new Error(\"Unrecognized rendererType \\\"\" + this.options.rendererType + \"\\\"\");\n        }\n    };\n    Terminal.prototype._setTheme = function (theme) {\n        this._theme = theme;\n        if (this._colorManager) {\n            this._colorManager.setTheme(theme);\n        }\n        if (this._renderCoordinator) {\n            this._renderCoordinator.setColors(this._colorManager.colors);\n        }\n        if (this.viewport) {\n            this.viewport.onThemeChange(this._colorManager.colors);\n        }\n    };\n    Terminal.prototype.bindMouse = function () {\n        var _this = this;\n        var el = this.element;\n        var self = this;\n        var pressed = 32;\n        function sendButton(ev) {\n            var button;\n            var pos;\n            button = getButton(ev);\n            pos = self.mouseHelper.getRawByteCoords(ev, self.screenElement, self.charMeasure, self.cols, self.rows);\n            if (!pos)\n                return;\n            sendEvent(button, pos);\n            switch (ev.overrideType || ev.type) {\n                case 'mousedown':\n                    pressed = button;\n                    break;\n                case 'mouseup':\n                    pressed = 32;\n                    break;\n                case 'wheel':\n                    break;\n            }\n        }\n        function sendMove(ev) {\n            var button = pressed;\n            var pos = self.mouseHelper.getRawByteCoords(ev, self.screenElement, self.charMeasure, self.cols, self.rows);\n            if (!pos)\n                return;\n            button += 32;\n            sendEvent(button, pos);\n        }\n        function encode(data, ch) {\n            if (!self.utfMouse) {\n                if (ch === 255) {\n                    data.push(0);\n                    return;\n                }\n                if (ch > 127)\n                    ch = 127;\n                data.push(ch);\n            }\n            else {\n                if (ch > 2047) {\n                    data.push(2047);\n                    return;\n                }\n                data.push(ch);\n            }\n        }\n        function sendEvent(button, pos) {\n            if (self._vt300Mouse) {\n                button &= 3;\n                pos.x -= 32;\n                pos.y -= 32;\n                var data_1 = EscapeSequences_1.C0.ESC + '[24';\n                if (button === 0)\n                    data_1 += '1';\n                else if (button === 1)\n                    data_1 += '3';\n                else if (button === 2)\n                    data_1 += '5';\n                else if (button === 3)\n                    return;\n                else\n                    data_1 += '0';\n                data_1 += '~[' + pos.x + ',' + pos.y + ']\\r';\n                self.handler(data_1);\n                return;\n            }\n            if (self._decLocator) {\n                button &= 3;\n                pos.x -= 32;\n                pos.y -= 32;\n                if (button === 0)\n                    button = 2;\n                else if (button === 1)\n                    button = 4;\n                else if (button === 2)\n                    button = 6;\n                else if (button === 3)\n                    button = 3;\n                self.handler(EscapeSequences_1.C0.ESC + '['\n                    + button\n                    + ';'\n                    + (button === 3 ? 4 : 0)\n                    + ';'\n                    + pos.y\n                    + ';'\n                    + pos.x\n                    + ';'\n                    + pos.page || 0\n                    + '&w');\n                return;\n            }\n            if (self.urxvtMouse) {\n                pos.x -= 32;\n                pos.y -= 32;\n                pos.x++;\n                pos.y++;\n                self.handler(EscapeSequences_1.C0.ESC + '[' + button + ';' + pos.x + ';' + pos.y + 'M');\n                return;\n            }\n            if (self.sgrMouse) {\n                pos.x -= 32;\n                pos.y -= 32;\n                self.handler(EscapeSequences_1.C0.ESC + '[<'\n                    + (((button & 3) === 3 ? button & ~3 : button) - 32)\n                    + ';'\n                    + pos.x\n                    + ';'\n                    + pos.y\n                    + ((button & 3) === 3 ? 'm' : 'M'));\n                return;\n            }\n            var data = [];\n            encode(data, button);\n            encode(data, pos.x);\n            encode(data, pos.y);\n            self.handler(EscapeSequences_1.C0.ESC + '[M' + String.fromCharCode.apply(String, data));\n        }\n        function getButton(ev) {\n            var button;\n            var shift;\n            var meta;\n            var ctrl;\n            var mod;\n            switch (ev.overrideType || ev.type) {\n                case 'mousedown':\n                    button = ev.button !== null && ev.button !== undefined\n                        ? +ev.button\n                        : ev.which !== null && ev.which !== undefined\n                            ? ev.which - 1\n                            : null;\n                    if (Browser.isMSIE) {\n                        button = button === 1 ? 0 : button === 4 ? 1 : button;\n                    }\n                    break;\n                case 'mouseup':\n                    button = 3;\n                    break;\n                case 'DOMMouseScroll':\n                    button = ev.detail < 0\n                        ? 64\n                        : 65;\n                    break;\n                case 'wheel':\n                    button = ev.deltaY < 0\n                        ? 64\n                        : 65;\n                    break;\n            }\n            shift = ev.shiftKey ? 4 : 0;\n            meta = ev.metaKey ? 8 : 0;\n            ctrl = ev.ctrlKey ? 16 : 0;\n            mod = shift | meta | ctrl;\n            if (self.vt200Mouse) {\n                mod &= ctrl;\n            }\n            else if (!self.normalMouse) {\n                mod = 0;\n            }\n            button = (32 + (mod << 2)) + button;\n            return button;\n        }\n        this.register(Lifecycle_1.addDisposableDomListener(el, 'mousedown', function (ev) {\n            ev.preventDefault();\n            _this.focus();\n            if (!_this.mouseEvents || _this.selectionManager.shouldForceSelection(ev)) {\n                return;\n            }\n            sendButton(ev);\n            if (_this.vt200Mouse) {\n                ev.overrideType = 'mouseup';\n                sendButton(ev);\n                return _this.cancel(ev);\n            }\n            var moveHandler;\n            if (_this.normalMouse) {\n                moveHandler = function (event) {\n                    if (!_this.normalMouse) {\n                        return;\n                    }\n                    sendMove(event);\n                };\n                _this._document.addEventListener('mousemove', moveHandler);\n            }\n            var handler = function (ev) {\n                if (_this.normalMouse && !_this.x10Mouse) {\n                    sendButton(ev);\n                }\n                if (moveHandler) {\n                    _this._document.removeEventListener('mousemove', moveHandler);\n                    moveHandler = null;\n                }\n                _this._document.removeEventListener('mouseup', handler);\n                return _this.cancel(ev);\n            };\n            _this._document.addEventListener('mouseup', handler);\n            return _this.cancel(ev);\n        }));\n        this.register(Lifecycle_1.addDisposableDomListener(el, 'wheel', function (ev) {\n            if (!_this.mouseEvents) {\n                if (!_this.buffer.hasScrollback) {\n                    var amount = _this.viewport.getLinesScrolled(ev);\n                    if (amount === 0) {\n                        return;\n                    }\n                    var sequence = EscapeSequences_1.C0.ESC + (_this.applicationCursor ? 'O' : '[') + (ev.deltaY < 0 ? 'A' : 'B');\n                    var data = '';\n                    for (var i = 0; i < Math.abs(amount); i++) {\n                        data += sequence;\n                    }\n                    _this.handler(data);\n                }\n                return;\n            }\n            if (_this.x10Mouse || _this._vt300Mouse || _this._decLocator)\n                return;\n            sendButton(ev);\n            ev.preventDefault();\n        }));\n        this.register(Lifecycle_1.addDisposableDomListener(el, 'wheel', function (ev) {\n            if (_this.mouseEvents)\n                return;\n            _this.viewport.onWheel(ev);\n            return _this.cancel(ev);\n        }));\n        this.register(Lifecycle_1.addDisposableDomListener(el, 'touchstart', function (ev) {\n            if (_this.mouseEvents)\n                return;\n            _this.viewport.onTouchStart(ev);\n            return _this.cancel(ev);\n        }));\n        this.register(Lifecycle_1.addDisposableDomListener(el, 'touchmove', function (ev) {\n            if (_this.mouseEvents)\n                return;\n            _this.viewport.onTouchMove(ev);\n            return _this.cancel(ev);\n        }));\n    };\n    Terminal.prototype.refresh = function (start, end) {\n        if (this._renderCoordinator) {\n            this._renderCoordinator.refreshRows(start, end);\n        }\n    };\n    Terminal.prototype._queueLinkification = function (start, end) {\n        if (this.linkifier) {\n            this.linkifier.linkifyRows(start, end);\n        }\n    };\n    Terminal.prototype.updateCursorStyle = function (ev) {\n        if (this.selectionManager && this.selectionManager.shouldColumnSelect(ev)) {\n            this.element.classList.add('column-select');\n        }\n        else {\n            this.element.classList.remove('column-select');\n        }\n    };\n    Terminal.prototype.showCursor = function () {\n        if (!this.cursorState) {\n            this.cursorState = 1;\n            this.refresh(this.buffer.y, this.buffer.y);\n        }\n    };\n    Terminal.prototype.scroll = function (isWrapped) {\n        if (isWrapped === void 0) { isWrapped = false; }\n        var newLine;\n        newLine = this._blankLine;\n        var eraseAttr = this.eraseAttrData();\n        if (!newLine || newLine.length !== this.cols || newLine.getFg(0) !== eraseAttr.fg || newLine.getBg(0) !== eraseAttr.bg) {\n            newLine = this.buffer.getBlankLine(eraseAttr, isWrapped);\n            this._blankLine = newLine;\n        }\n        newLine.isWrapped = isWrapped;\n        var topRow = this.buffer.ybase + this.buffer.scrollTop;\n        var bottomRow = this.buffer.ybase + this.buffer.scrollBottom;\n        if (this.buffer.scrollTop === 0) {\n            var willBufferBeTrimmed = this.buffer.lines.isFull;\n            if (bottomRow === this.buffer.lines.length - 1) {\n                if (willBufferBeTrimmed) {\n                    this.buffer.lines.recycle().copyFrom(newLine);\n                }\n                else {\n                    this.buffer.lines.push(newLine.clone());\n                }\n            }\n            else {\n                this.buffer.lines.splice(bottomRow + 1, 0, newLine.clone());\n            }\n            if (!willBufferBeTrimmed) {\n                this.buffer.ybase++;\n                if (!this._userScrolling) {\n                    this.buffer.ydisp++;\n                }\n            }\n            else {\n                if (this._userScrolling) {\n                    this.buffer.ydisp = Math.max(this.buffer.ydisp - 1, 0);\n                }\n            }\n        }\n        else {\n            var scrollRegionHeight = bottomRow - topRow + 1;\n            this.buffer.lines.shiftElements(topRow + 1, scrollRegionHeight - 1, -1);\n            this.buffer.lines.set(bottomRow, newLine.clone());\n        }\n        if (!this._userScrolling) {\n            this.buffer.ydisp = this.buffer.ybase;\n        }\n        this.updateRange(this.buffer.scrollTop);\n        this.updateRange(this.buffer.scrollBottom);\n        this._onScroll.fire(this.buffer.ydisp);\n    };\n    Terminal.prototype.scrollLines = function (disp, suppressScrollEvent) {\n        if (disp < 0) {\n            if (this.buffer.ydisp === 0) {\n                return;\n            }\n            this._userScrolling = true;\n        }\n        else if (disp + this.buffer.ydisp >= this.buffer.ybase) {\n            this._userScrolling = false;\n        }\n        var oldYdisp = this.buffer.ydisp;\n        this.buffer.ydisp = Math.max(Math.min(this.buffer.ydisp + disp, this.buffer.ybase), 0);\n        if (oldYdisp === this.buffer.ydisp) {\n            return;\n        }\n        if (!suppressScrollEvent) {\n            this._onScroll.fire(this.buffer.ydisp);\n        }\n        this.refresh(0, this.rows - 1);\n    };\n    Terminal.prototype.scrollPages = function (pageCount) {\n        this.scrollLines(pageCount * (this.rows - 1));\n    };\n    Terminal.prototype.scrollToTop = function () {\n        this.scrollLines(-this.buffer.ydisp);\n    };\n    Terminal.prototype.scrollToBottom = function () {\n        this.scrollLines(this.buffer.ybase - this.buffer.ydisp);\n    };\n    Terminal.prototype.scrollToLine = function (line) {\n        var scrollAmount = line - this.buffer.ydisp;\n        if (scrollAmount !== 0) {\n            this.scrollLines(scrollAmount);\n        }\n    };\n    Terminal.prototype.writeUtf8 = function (data) {\n        var _this = this;\n        if (this._isDisposed) {\n            return;\n        }\n        if (!data) {\n            return;\n        }\n        this.writeBufferUtf8.push(data);\n        if (this.options.useFlowControl && !this._xoffSentToCatchUp && this.writeBufferUtf8.length >= WRITE_BUFFER_PAUSE_THRESHOLD) {\n            this.handler(EscapeSequences_1.C0.DC3);\n            this._xoffSentToCatchUp = true;\n        }\n        if (!this._writeInProgress && this.writeBufferUtf8.length > 0) {\n            this._writeInProgress = true;\n            setTimeout(function () {\n                _this._innerWriteUtf8();\n            });\n        }\n    };\n    Terminal.prototype._innerWriteUtf8 = function (bufferOffset) {\n        var _this = this;\n        if (bufferOffset === void 0) { bufferOffset = 0; }\n        if (this._isDisposed) {\n            this.writeBufferUtf8 = [];\n        }\n        var startTime = Date.now();\n        while (this.writeBufferUtf8.length > bufferOffset) {\n            var data = this.writeBufferUtf8[bufferOffset];\n            bufferOffset++;\n            if (this._xoffSentToCatchUp && this.writeBufferUtf8.length === bufferOffset) {\n                this.handler(EscapeSequences_1.C0.DC1);\n                this._xoffSentToCatchUp = false;\n            }\n            this._refreshStart = this.buffer.y;\n            this._refreshEnd = this.buffer.y;\n            this._inputHandler.parseUtf8(data);\n            this.updateRange(this.buffer.y);\n            this.refresh(this._refreshStart, this._refreshEnd);\n            if (Date.now() - startTime >= WRITE_TIMEOUT_MS) {\n                break;\n            }\n        }\n        if (this.writeBufferUtf8.length > bufferOffset) {\n            if (bufferOffset > WRITE_BUFFER_LENGTH_THRESHOLD) {\n                this.writeBufferUtf8 = this.writeBufferUtf8.slice(bufferOffset);\n                bufferOffset = 0;\n            }\n            setTimeout(function () { return _this._innerWriteUtf8(bufferOffset); }, 0);\n        }\n        else {\n            this._writeInProgress = false;\n            this.writeBufferUtf8 = [];\n        }\n    };\n    Terminal.prototype.write = function (data) {\n        var _this = this;\n        if (this._isDisposed) {\n            return;\n        }\n        if (!data) {\n            return;\n        }\n        this.writeBuffer.push(data);\n        if (this.options.useFlowControl && !this._xoffSentToCatchUp && this.writeBuffer.length >= WRITE_BUFFER_PAUSE_THRESHOLD) {\n            this.handler(EscapeSequences_1.C0.DC3);\n            this._xoffSentToCatchUp = true;\n        }\n        if (!this._writeInProgress && this.writeBuffer.length > 0) {\n            this._writeInProgress = true;\n            setTimeout(function () {\n                _this._innerWrite();\n            });\n        }\n    };\n    Terminal.prototype._innerWrite = function (bufferOffset) {\n        var _this = this;\n        if (bufferOffset === void 0) { bufferOffset = 0; }\n        if (this._isDisposed) {\n            this.writeBuffer = [];\n        }\n        var startTime = Date.now();\n        while (this.writeBuffer.length > bufferOffset) {\n            var data = this.writeBuffer[bufferOffset];\n            bufferOffset++;\n            if (this._xoffSentToCatchUp && this.writeBuffer.length === bufferOffset) {\n                this.handler(EscapeSequences_1.C0.DC1);\n                this._xoffSentToCatchUp = false;\n            }\n            this._refreshStart = this.buffer.y;\n            this._refreshEnd = this.buffer.y;\n            this._inputHandler.parse(data);\n            this.updateRange(this.buffer.y);\n            this.refresh(this._refreshStart, this._refreshEnd);\n            if (Date.now() - startTime >= WRITE_TIMEOUT_MS) {\n                break;\n            }\n        }\n        if (this.writeBuffer.length > bufferOffset) {\n            if (bufferOffset > WRITE_BUFFER_LENGTH_THRESHOLD) {\n                this.writeBuffer = this.writeBuffer.slice(bufferOffset);\n                bufferOffset = 0;\n            }\n            setTimeout(function () { return _this._innerWrite(bufferOffset); }, 0);\n        }\n        else {\n            this._writeInProgress = false;\n            this.writeBuffer = [];\n        }\n    };\n    Terminal.prototype.writeln = function (data) {\n        this.write(data + '\\r\\n');\n    };\n    Terminal.prototype.attachCustomKeyEventHandler = function (customKeyEventHandler) {\n        this._customKeyEventHandler = customKeyEventHandler;\n    };\n    Terminal.prototype.addCsiHandler = function (flag, callback) {\n        return this._inputHandler.addCsiHandler(flag, callback);\n    };\n    Terminal.prototype.addOscHandler = function (ident, callback) {\n        return this._inputHandler.addOscHandler(ident, callback);\n    };\n    Terminal.prototype.registerLinkMatcher = function (regex, handler, options) {\n        var matcherId = this.linkifier.registerLinkMatcher(regex, handler, options);\n        this.refresh(0, this.rows - 1);\n        return matcherId;\n    };\n    Terminal.prototype.deregisterLinkMatcher = function (matcherId) {\n        if (this.linkifier.deregisterLinkMatcher(matcherId)) {\n            this.refresh(0, this.rows - 1);\n        }\n    };\n    Terminal.prototype.registerCharacterJoiner = function (handler) {\n        var joinerId = this._renderCoordinator.registerCharacterJoiner(handler);\n        this.refresh(0, this.rows - 1);\n        return joinerId;\n    };\n    Terminal.prototype.deregisterCharacterJoiner = function (joinerId) {\n        if (this._renderCoordinator.deregisterCharacterJoiner(joinerId)) {\n            this.refresh(0, this.rows - 1);\n        }\n    };\n    Object.defineProperty(Terminal.prototype, \"markers\", {\n        get: function () {\n            return this.buffer.markers;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Terminal.prototype.addMarker = function (cursorYOffset) {\n        if (this.buffer !== this.buffers.normal) {\n            return;\n        }\n        return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + cursorYOffset);\n    };\n    Terminal.prototype.hasSelection = function () {\n        return this.selectionManager ? this.selectionManager.hasSelection : false;\n    };\n    Terminal.prototype.select = function (column, row, length) {\n        this.selectionManager.setSelection(column, row, length);\n    };\n    Terminal.prototype.getSelection = function () {\n        return this.selectionManager ? this.selectionManager.selectionText : '';\n    };\n    Terminal.prototype.getSelectionPosition = function () {\n        if (!this.selectionManager.hasSelection) {\n            return undefined;\n        }\n        return {\n            startColumn: this.selectionManager.selectionStart[0],\n            startRow: this.selectionManager.selectionStart[1],\n            endColumn: this.selectionManager.selectionEnd[0],\n            endRow: this.selectionManager.selectionEnd[1]\n        };\n    };\n    Terminal.prototype.clearSelection = function () {\n        if (this.selectionManager) {\n            this.selectionManager.clearSelection();\n        }\n    };\n    Terminal.prototype.selectAll = function () {\n        if (this.selectionManager) {\n            this.selectionManager.selectAll();\n        }\n    };\n    Terminal.prototype.selectLines = function (start, end) {\n        if (this.selectionManager) {\n            this.selectionManager.selectLines(start, end);\n        }\n    };\n    Terminal.prototype._keyDown = function (event) {\n        if (this._customKeyEventHandler && this._customKeyEventHandler(event) === false) {\n            return false;\n        }\n        if (!this._compositionHelper.keydown(event)) {\n            if (this.buffer.ybase !== this.buffer.ydisp) {\n                this.scrollToBottom();\n            }\n            return false;\n        }\n        var result = Keyboard_1.evaluateKeyboardEvent(event, this.applicationCursor, this.browser.isMac, this.options.macOptionIsMeta);\n        this.updateCursorStyle(event);\n        if (result.type === 3 || result.type === 2) {\n            var scrollCount = this.rows - 1;\n            this.scrollLines(result.type === 2 ? -scrollCount : scrollCount);\n            return this.cancel(event, true);\n        }\n        if (result.type === 1) {\n            this.selectAll();\n        }\n        if (this._isThirdLevelShift(this.browser, event)) {\n            return true;\n        }\n        if (result.cancel) {\n            this.cancel(event, true);\n        }\n        if (!result.key) {\n            return true;\n        }\n        this.emit('keydown', event);\n        this._onKey.fire({ key: result.key, domEvent: event });\n        this.showCursor();\n        this.handler(result.key);\n        return this.cancel(event, true);\n    };\n    Terminal.prototype._isThirdLevelShift = function (browser, ev) {\n        var thirdLevelKey = (browser.isMac && !this.options.macOptionIsMeta && ev.altKey && !ev.ctrlKey && !ev.metaKey) ||\n            (browser.isMSWindows && ev.altKey && ev.ctrlKey && !ev.metaKey);\n        if (ev.type === 'keypress') {\n            return thirdLevelKey;\n        }\n        return thirdLevelKey && (!ev.keyCode || ev.keyCode > 47);\n    };\n    Terminal.prototype.setgLevel = function (g) {\n        this.glevel = g;\n        this.charset = this.charsets[g];\n    };\n    Terminal.prototype.setgCharset = function (g, charset) {\n        this.charsets[g] = charset;\n        if (this.glevel === g) {\n            this.charset = charset;\n        }\n    };\n    Terminal.prototype._keyUp = function (ev) {\n        this.updateCursorStyle(ev);\n    };\n    Terminal.prototype._keyPress = function (ev) {\n        var key;\n        if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) {\n            return false;\n        }\n        this.cancel(ev);\n        if (ev.charCode) {\n            key = ev.charCode;\n        }\n        else if (ev.which === null || ev.which === undefined) {\n            key = ev.keyCode;\n        }\n        else if (ev.which !== 0 && ev.charCode !== 0) {\n            key = ev.which;\n        }\n        else {\n            return false;\n        }\n        if (!key || ((ev.altKey || ev.ctrlKey || ev.metaKey) && !this._isThirdLevelShift(this.browser, ev))) {\n            return false;\n        }\n        key = String.fromCharCode(key);\n        this.emit('keypress', key, ev);\n        this._onKey.fire({ key: key, domEvent: ev });\n        this.showCursor();\n        this.handler(key);\n        return true;\n    };\n    Terminal.prototype.bell = function () {\n        var _this = this;\n        this.emit('bell');\n        if (this._soundBell()) {\n            this.soundManager.playBellSound();\n        }\n        if (this._visualBell()) {\n            this.element.classList.add('visual-bell-active');\n            clearTimeout(this._visualBellTimer);\n            this._visualBellTimer = window.setTimeout(function () {\n                _this.element.classList.remove('visual-bell-active');\n            }, 200);\n        }\n    };\n    Terminal.prototype.log = function (text, data) {\n        if (!this.options.debug)\n            return;\n        if (!this._context.console || !this._context.console.log)\n            return;\n        this._context.console.log(text, data);\n    };\n    Terminal.prototype.error = function (text, data) {\n        if (!this.options.debug)\n            return;\n        if (!this._context.console || !this._context.console.error)\n            return;\n        this._context.console.error(text, data);\n    };\n    Terminal.prototype.resize = function (x, y) {\n        if (isNaN(x) || isNaN(y)) {\n            return;\n        }\n        if (x === this.cols && y === this.rows) {\n            if (this.charMeasure && (!this.charMeasure.width || !this.charMeasure.height)) {\n                this.charMeasure.measure(this.options);\n            }\n            return;\n        }\n        if (x < MINIMUM_COLS)\n            x = MINIMUM_COLS;\n        if (y < MINIMUM_ROWS)\n            y = MINIMUM_ROWS;\n        this.buffers.resize(x, y);\n        this.cols = x;\n        this.rows = y;\n        this.buffers.setupTabStops(this.cols);\n        if (this.charMeasure) {\n            this.charMeasure.measure(this.options);\n        }\n        this.refresh(0, this.rows - 1);\n        this._onResize.fire({ cols: x, rows: y });\n    };\n    Terminal.prototype.updateRange = function (y) {\n        if (y < this._refreshStart)\n            this._refreshStart = y;\n        if (y > this._refreshEnd)\n            this._refreshEnd = y;\n    };\n    Terminal.prototype.maxRange = function () {\n        this._refreshStart = 0;\n        this._refreshEnd = this.rows - 1;\n    };\n    Terminal.prototype.clear = function () {\n        if (this.buffer.ybase === 0 && this.buffer.y === 0) {\n            return;\n        }\n        this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y));\n        this.buffer.lines.length = 1;\n        this.buffer.ydisp = 0;\n        this.buffer.ybase = 0;\n        this.buffer.y = 0;\n        for (var i = 1; i < this.rows; i++) {\n            this.buffer.lines.push(this.buffer.getBlankLine(BufferLine_1.DEFAULT_ATTR_DATA));\n        }\n        this.refresh(0, this.rows - 1);\n        this._onScroll.fire(this.buffer.ydisp);\n    };\n    Terminal.prototype.is = function (term) {\n        return (this.options.termName + '').indexOf(term) === 0;\n    };\n    Terminal.prototype.handler = function (data) {\n        if (this.options.disableStdin) {\n            return;\n        }\n        if (this.selectionManager && this.selectionManager.hasSelection) {\n            this.selectionManager.clearSelection();\n        }\n        if (this.buffer.ybase !== this.buffer.ydisp) {\n            this.scrollToBottom();\n        }\n        this._onData.fire(data);\n    };\n    Terminal.prototype.handleTitle = function (title) {\n        this._onTitleChange.fire(title);\n    };\n    Terminal.prototype.index = function () {\n        this.buffer.y++;\n        if (this.buffer.y > this.buffer.scrollBottom) {\n            this.buffer.y--;\n            this.scroll();\n        }\n        if (this.buffer.x >= this.cols) {\n            this.buffer.x--;\n        }\n    };\n    Terminal.prototype.reverseIndex = function () {\n        if (this.buffer.y === this.buffer.scrollTop) {\n            var scrollRegionHeight = this.buffer.scrollBottom - this.buffer.scrollTop;\n            this.buffer.lines.shiftElements(this.buffer.y + this.buffer.ybase, scrollRegionHeight, 1);\n            this.buffer.lines.set(this.buffer.y + this.buffer.ybase, this.buffer.getBlankLine(this.eraseAttrData()));\n            this.updateRange(this.buffer.scrollTop);\n            this.updateRange(this.buffer.scrollBottom);\n        }\n        else {\n            this.buffer.y--;\n        }\n    };\n    Terminal.prototype.reset = function () {\n        this.options.rows = this.rows;\n        this.options.cols = this.cols;\n        var customKeyEventHandler = this._customKeyEventHandler;\n        var inputHandler = this._inputHandler;\n        var cursorState = this.cursorState;\n        var writeBuffer = this.writeBuffer;\n        var writeBufferUtf8 = this.writeBufferUtf8;\n        var writeInProgress = this._writeInProgress;\n        var xoffSentToCatchUp = this._xoffSentToCatchUp;\n        var userScrolling = this._userScrolling;\n        this._setup();\n        this._customKeyEventHandler = customKeyEventHandler;\n        this._inputHandler = inputHandler;\n        this.cursorState = cursorState;\n        this.writeBuffer = writeBuffer;\n        this.writeBufferUtf8 = writeBufferUtf8;\n        this._writeInProgress = writeInProgress;\n        this._xoffSentToCatchUp = xoffSentToCatchUp;\n        this._userScrolling = userScrolling;\n        this.refresh(0, this.rows - 1);\n        if (this.viewport) {\n            this.viewport.syncScrollArea();\n        }\n    };\n    Terminal.prototype.tabSet = function () {\n        this.buffer.tabs[this.buffer.x] = true;\n    };\n    Terminal.prototype.cancel = function (ev, force) {\n        if (!this.options.cancelEvents && !force) {\n            return;\n        }\n        ev.preventDefault();\n        ev.stopPropagation();\n        return false;\n    };\n    Terminal.prototype._visualBell = function () {\n        return false;\n    };\n    Terminal.prototype._soundBell = function () {\n        return this.options.bellStyle === 'sound';\n    };\n    return Terminal;\n}(EventEmitter_1.EventEmitter));\nexports.Terminal = Terminal;\nfunction wasModifierKeyOnlyEvent(ev) {\n    return ev.keyCode === 16 ||\n        ev.keyCode === 17 ||\n        ev.keyCode === 18;\n}\n\n},{\"./AccessibilityManager\":1,\"./Buffer\":2,\"./BufferSet\":3,\"./CharMeasure\":4,\"./Clipboard\":6,\"./CompositionHelper\":7,\"./InputHandler\":9,\"./Linkifier\":10,\"./MouseHelper\":11,\"./MouseZoneManager\":12,\"./SelectionManager\":13,\"./SoundManager\":15,\"./Strings\":16,\"./Viewport\":18,\"./WindowsMode\":19,\"./common/Clone\":21,\"./common/EventEmitter\":22,\"./common/EventEmitter2\":23,\"./common/Platform\":25,\"./common/data/EscapeSequences\":28,\"./core/buffer/BufferLine\":29,\"./core/input/Keyboard\":33,\"./renderer/RenderCoordinator\":43,\"./renderer/Renderer\":44,\"./renderer/atlas/CharAtlasCache\":48,\"./renderer/dom/DomRenderer\":56,\"./ui/ColorManager\":58,\"./ui/Lifecycle\":59}],18:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lifecycle_1 = require(\"./common/Lifecycle\");\nvar Lifecycle_2 = require(\"./ui/Lifecycle\");\nvar FALLBACK_SCROLL_BAR_WIDTH = 15;\nvar Viewport = (function (_super) {\n    __extends(Viewport, _super);\n    function Viewport(_terminal, _viewportElement, _scrollArea, _charMeasure, _dimensions) {\n        var _this = _super.call(this) || this;\n        _this._terminal = _terminal;\n        _this._viewportElement = _viewportElement;\n        _this._scrollArea = _scrollArea;\n        _this._charMeasure = _charMeasure;\n        _this._dimensions = _dimensions;\n        _this.scrollBarWidth = 0;\n        _this._currentRowHeight = 0;\n        _this._lastRecordedBufferLength = 0;\n        _this._lastRecordedViewportHeight = 0;\n        _this._lastRecordedBufferHeight = 0;\n        _this._lastScrollTop = 0;\n        _this._wheelPartialScroll = 0;\n        _this._refreshAnimationFrame = null;\n        _this._ignoreNextScrollEvent = false;\n        _this.scrollBarWidth = (_this._viewportElement.offsetWidth - _this._scrollArea.offsetWidth) || FALLBACK_SCROLL_BAR_WIDTH;\n        _this.register(Lifecycle_2.addDisposableDomListener(_this._viewportElement, 'scroll', _this._onScroll.bind(_this)));\n        setTimeout(function () { return _this.syncScrollArea(); }, 0);\n        return _this;\n    }\n    Viewport.prototype.onDimensionsChance = function (dimensions) {\n        this._dimensions = dimensions;\n    };\n    Viewport.prototype.onThemeChange = function (colors) {\n        this._viewportElement.style.backgroundColor = colors.background.css;\n    };\n    Viewport.prototype._refresh = function () {\n        var _this = this;\n        if (this._refreshAnimationFrame === null) {\n            this._refreshAnimationFrame = requestAnimationFrame(function () { return _this._innerRefresh(); });\n        }\n    };\n    Viewport.prototype._innerRefresh = function () {\n        if (this._charMeasure.height > 0) {\n            this._currentRowHeight = this._dimensions.scaledCellHeight / window.devicePixelRatio;\n            this._lastRecordedViewportHeight = this._viewportElement.offsetHeight;\n            var newBufferHeight = Math.round(this._currentRowHeight * this._lastRecordedBufferLength) + (this._lastRecordedViewportHeight - this._dimensions.canvasHeight);\n            if (this._lastRecordedBufferHeight !== newBufferHeight) {\n                this._lastRecordedBufferHeight = newBufferHeight;\n                this._scrollArea.style.height = this._lastRecordedBufferHeight + 'px';\n            }\n        }\n        var scrollTop = this._terminal.buffer.ydisp * this._currentRowHeight;\n        if (this._viewportElement.scrollTop !== scrollTop) {\n            this._ignoreNextScrollEvent = true;\n            this._viewportElement.scrollTop = scrollTop;\n        }\n        this._refreshAnimationFrame = null;\n    };\n    Viewport.prototype.syncScrollArea = function () {\n        if (this._lastRecordedBufferLength !== this._terminal.buffer.lines.length) {\n            this._lastRecordedBufferLength = this._terminal.buffer.lines.length;\n            this._refresh();\n            return;\n        }\n        if (this._lastRecordedViewportHeight !== this._dimensions.canvasHeight) {\n            this._refresh();\n            return;\n        }\n        var newScrollTop = this._terminal.buffer.ydisp * this._currentRowHeight;\n        if (this._lastScrollTop !== newScrollTop) {\n            this._refresh();\n            return;\n        }\n        if (this._lastScrollTop !== this._viewportElement.scrollTop) {\n            this._refresh();\n            return;\n        }\n        if (this._dimensions.scaledCellHeight / window.devicePixelRatio !== this._currentRowHeight) {\n            this._refresh();\n            return;\n        }\n    };\n    Viewport.prototype._onScroll = function (ev) {\n        this._lastScrollTop = this._viewportElement.scrollTop;\n        if (!this._viewportElement.offsetParent) {\n            return;\n        }\n        if (this._ignoreNextScrollEvent) {\n            this._ignoreNextScrollEvent = false;\n            return;\n        }\n        var newRow = Math.round(this._lastScrollTop / this._currentRowHeight);\n        var diff = newRow - this._terminal.buffer.ydisp;\n        this._terminal.scrollLines(diff, true);\n    };\n    Viewport.prototype.onWheel = function (ev) {\n        var amount = this._getPixelsScrolled(ev);\n        if (amount === 0) {\n            return;\n        }\n        this._viewportElement.scrollTop += amount;\n        ev.preventDefault();\n    };\n    Viewport.prototype._getPixelsScrolled = function (ev) {\n        if (ev.deltaY === 0) {\n            return 0;\n        }\n        var amount = ev.deltaY;\n        if (ev.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n            amount *= this._currentRowHeight;\n        }\n        else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n            amount *= this._currentRowHeight * this._terminal.rows;\n        }\n        return amount;\n    };\n    Viewport.prototype.getLinesScrolled = function (ev) {\n        if (ev.deltaY === 0) {\n            return 0;\n        }\n        var amount = ev.deltaY;\n        if (ev.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n            amount /= this._currentRowHeight + 0.0;\n            this._wheelPartialScroll += amount;\n            amount = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1);\n            this._wheelPartialScroll %= 1;\n        }\n        else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n            amount *= this._terminal.rows;\n        }\n        return amount;\n    };\n    Viewport.prototype.onTouchStart = function (ev) {\n        this._lastTouchY = ev.touches[0].pageY;\n    };\n    Viewport.prototype.onTouchMove = function (ev) {\n        var deltaY = this._lastTouchY - ev.touches[0].pageY;\n        this._lastTouchY = ev.touches[0].pageY;\n        if (deltaY === 0) {\n            return;\n        }\n        this._viewportElement.scrollTop += deltaY;\n        ev.preventDefault();\n    };\n    return Viewport;\n}(Lifecycle_1.Disposable));\nexports.Viewport = Viewport;\n\n},{\"./common/Lifecycle\":24,\"./ui/Lifecycle\":59}],19:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BufferLine_1 = require(\"./core/buffer/BufferLine\");\nfunction applyWindowsMode(terminal) {\n    return terminal.onLineFeed(function () {\n        var line = terminal.buffer.lines.get(terminal.buffer.ybase + terminal.buffer.y - 1);\n        var lastChar = line.get(terminal.cols - 1);\n        var nextLine = terminal.buffer.lines.get(terminal.buffer.ybase + terminal.buffer.y);\n        nextLine.isWrapped = (lastChar[BufferLine_1.CHAR_DATA_CODE_INDEX] !== BufferLine_1.NULL_CELL_CODE && lastChar[BufferLine_1.CHAR_DATA_CODE_INDEX] !== BufferLine_1.WHITESPACE_CELL_CODE);\n    });\n}\nexports.applyWindowsMode = applyWindowsMode;\n\n},{\"./core/buffer/BufferLine\":29}],20:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter2_1 = require(\"./EventEmitter2\");\nvar CircularList = (function () {\n    function CircularList(_maxLength) {\n        this._maxLength = _maxLength;\n        this.onDeleteEmitter = new EventEmitter2_1.EventEmitter2();\n        this.onInsertEmitter = new EventEmitter2_1.EventEmitter2();\n        this.onTrimEmitter = new EventEmitter2_1.EventEmitter2();\n        this._array = new Array(this._maxLength);\n        this._startIndex = 0;\n        this._length = 0;\n    }\n    Object.defineProperty(CircularList.prototype, \"onDelete\", {\n        get: function () { return this.onDeleteEmitter.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CircularList.prototype, \"onInsert\", {\n        get: function () { return this.onInsertEmitter.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CircularList.prototype, \"onTrim\", {\n        get: function () { return this.onTrimEmitter.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CircularList.prototype, \"maxLength\", {\n        get: function () {\n            return this._maxLength;\n        },\n        set: function (newMaxLength) {\n            if (this._maxLength === newMaxLength) {\n                return;\n            }\n            var newArray = new Array(newMaxLength);\n            for (var i = 0; i < Math.min(newMaxLength, this.length); i++) {\n                newArray[i] = this._array[this._getCyclicIndex(i)];\n            }\n            this._array = newArray;\n            this._maxLength = newMaxLength;\n            this._startIndex = 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CircularList.prototype, \"length\", {\n        get: function () {\n            return this._length;\n        },\n        set: function (newLength) {\n            if (newLength > this._length) {\n                for (var i = this._length; i < newLength; i++) {\n                    this._array[i] = undefined;\n                }\n            }\n            this._length = newLength;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    CircularList.prototype.get = function (index) {\n        return this._array[this._getCyclicIndex(index)];\n    };\n    CircularList.prototype.set = function (index, value) {\n        this._array[this._getCyclicIndex(index)] = value;\n    };\n    CircularList.prototype.push = function (value) {\n        this._array[this._getCyclicIndex(this._length)] = value;\n        if (this._length === this._maxLength) {\n            this._startIndex = ++this._startIndex % this._maxLength;\n            this.onTrimEmitter.fire(1);\n        }\n        else {\n            this._length++;\n        }\n    };\n    CircularList.prototype.recycle = function () {\n        if (this._length !== this._maxLength) {\n            throw new Error('Can only recycle when the buffer is full');\n        }\n        this._startIndex = ++this._startIndex % this._maxLength;\n        this.onTrimEmitter.fire(1);\n        return this._array[this._getCyclicIndex(this._length - 1)];\n    };\n    Object.defineProperty(CircularList.prototype, \"isFull\", {\n        get: function () {\n            return this._length === this._maxLength;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    CircularList.prototype.pop = function () {\n        return this._array[this._getCyclicIndex(this._length-- - 1)];\n    };\n    CircularList.prototype.splice = function (start, deleteCount) {\n        var items = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            items[_i - 2] = arguments[_i];\n        }\n        if (deleteCount) {\n            for (var i = start; i < this._length - deleteCount; i++) {\n                this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + deleteCount)];\n            }\n            this._length -= deleteCount;\n        }\n        for (var i = this._length - 1; i >= start; i--) {\n            this._array[this._getCyclicIndex(i + items.length)] = this._array[this._getCyclicIndex(i)];\n        }\n        for (var i = 0; i < items.length; i++) {\n            this._array[this._getCyclicIndex(start + i)] = items[i];\n        }\n        if (this._length + items.length > this._maxLength) {\n            var countToTrim = (this._length + items.length) - this._maxLength;\n            this._startIndex += countToTrim;\n            this._length = this._maxLength;\n            this.onTrimEmitter.fire(countToTrim);\n        }\n        else {\n            this._length += items.length;\n        }\n    };\n    CircularList.prototype.trimStart = function (count) {\n        if (count > this._length) {\n            count = this._length;\n        }\n        this._startIndex += count;\n        this._length -= count;\n        this.onTrimEmitter.fire(count);\n    };\n    CircularList.prototype.shiftElements = function (start, count, offset) {\n        if (count <= 0) {\n            return;\n        }\n        if (start < 0 || start >= this._length) {\n            throw new Error('start argument out of range');\n        }\n        if (start + offset < 0) {\n            throw new Error('Cannot shift elements in list beyond index 0');\n        }\n        if (offset > 0) {\n            for (var i = count - 1; i >= 0; i--) {\n                this.set(start + i + offset, this.get(start + i));\n            }\n            var expandListBy = (start + count + offset) - this._length;\n            if (expandListBy > 0) {\n                this._length += expandListBy;\n                while (this._length > this._maxLength) {\n                    this._length--;\n                    this._startIndex++;\n                    this.onTrimEmitter.fire(1);\n                }\n            }\n        }\n        else {\n            for (var i = 0; i < count; i++) {\n                this.set(start + i + offset, this.get(start + i));\n            }\n        }\n    };\n    CircularList.prototype._getCyclicIndex = function (index) {\n        return (this._startIndex + index) % this._maxLength;\n    };\n    return CircularList;\n}());\nexports.CircularList = CircularList;\n\n},{\"./EventEmitter2\":23}],21:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction clone(val, depth) {\n    if (depth === void 0) { depth = 5; }\n    if (typeof val !== 'object') {\n        return val;\n    }\n    if (val === null) {\n        return null;\n    }\n    var clonedObject = Array.isArray(val) ? [] : {};\n    for (var key in val) {\n        clonedObject[key] = depth <= 1 ? val[key] : clone(val[key], depth - 1);\n    }\n    return clonedObject;\n}\nexports.clone = clone;\n\n},{}],22:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lifecycle_1 = require(\"./Lifecycle\");\nvar EventEmitter = (function (_super) {\n    __extends(EventEmitter, _super);\n    function EventEmitter() {\n        var _this = _super.call(this) || this;\n        _this._events = _this._events || {};\n        return _this;\n    }\n    EventEmitter.prototype.on = function (type, listener) {\n        this._events[type] = this._events[type] || [];\n        this._events[type].push(listener);\n    };\n    EventEmitter.prototype.addDisposableListener = function (type, handler) {\n        var _this = this;\n        this.on(type, handler);\n        var disposed = false;\n        return {\n            dispose: function () {\n                if (disposed) {\n                    return;\n                }\n                _this.off(type, handler);\n                disposed = true;\n            }\n        };\n    };\n    EventEmitter.prototype.off = function (type, listener) {\n        if (!this._events[type]) {\n            return;\n        }\n        var obj = this._events[type];\n        var i = obj.length;\n        while (i--) {\n            if (obj[i] === listener) {\n                obj.splice(i, 1);\n                return;\n            }\n        }\n    };\n    EventEmitter.prototype.removeAllListeners = function (type) {\n        if (this._events[type]) {\n            delete this._events[type];\n        }\n    };\n    EventEmitter.prototype.emit = function (type) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!this._events[type]) {\n            return;\n        }\n        var obj = this._events[type];\n        for (var i = 0; i < obj.length; i++) {\n            obj[i].apply(this, args);\n        }\n    };\n    EventEmitter.prototype.emitMayRemoveListeners = function (type) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!this._events[type]) {\n            return;\n        }\n        var obj = this._events[type];\n        var length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            obj[i].apply(this, args);\n            i -= length - obj.length;\n            length = obj.length;\n        }\n    };\n    EventEmitter.prototype.listeners = function (type) {\n        return this._events[type] || [];\n    };\n    EventEmitter.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        this._events = {};\n    };\n    return EventEmitter;\n}(Lifecycle_1.Disposable));\nexports.EventEmitter = EventEmitter;\n\n},{\"./Lifecycle\":24}],23:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter2 = (function () {\n    function EventEmitter2() {\n        this._listeners = [];\n    }\n    Object.defineProperty(EventEmitter2.prototype, \"event\", {\n        get: function () {\n            var _this = this;\n            if (!this._event) {\n                this._event = function (listener) {\n                    _this._listeners.push(listener);\n                    var disposable = {\n                        dispose: function () {\n                            for (var i = 0; i < _this._listeners.length; i++) {\n                                if (_this._listeners[i] === listener) {\n                                    _this._listeners.splice(i, 1);\n                                    return;\n                                }\n                            }\n                        }\n                    };\n                    return disposable;\n                };\n            }\n            return this._event;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    EventEmitter2.prototype.fire = function (data) {\n        var queue = [];\n        for (var i = 0; i < this._listeners.length; i++) {\n            queue.push(this._listeners[i]);\n        }\n        for (var i = 0; i < queue.length; i++) {\n            queue[i].call(undefined, data);\n        }\n    };\n    return EventEmitter2;\n}());\nexports.EventEmitter2 = EventEmitter2;\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Disposable = (function () {\n    function Disposable() {\n        this._disposables = [];\n        this._isDisposed = false;\n    }\n    Disposable.prototype.dispose = function () {\n        this._isDisposed = true;\n        this._disposables.forEach(function (d) { return d.dispose(); });\n        this._disposables.length = 0;\n    };\n    Disposable.prototype.register = function (d) {\n        this._disposables.push(d);\n    };\n    Disposable.prototype.unregister = function (d) {\n        var index = this._disposables.indexOf(d);\n        if (index !== -1) {\n            this._disposables.splice(index, 1);\n        }\n    };\n    return Disposable;\n}());\nexports.Disposable = Disposable;\n\n},{}],25:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isNode = (typeof navigator === 'undefined') ? true : false;\nvar userAgent = (isNode) ? 'node' : navigator.userAgent;\nvar platform = (isNode) ? 'node' : navigator.platform;\nexports.isFirefox = !!~userAgent.indexOf('Firefox');\nexports.isSafari = /^((?!chrome|android).)*safari/i.test(userAgent);\nexports.isMSIE = !!~userAgent.indexOf('MSIE') || !!~userAgent.indexOf('Trident');\nexports.isMac = contains(['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'], platform);\nexports.isIpad = platform === 'iPad';\nexports.isIphone = platform === 'iPhone';\nexports.isMSWindows = contains(['Windows', 'Win16', 'Win32', 'WinCE'], platform);\nexports.isLinux = platform.indexOf('Linux') >= 0;\nfunction contains(arr, el) {\n    return arr.indexOf(el) >= 0;\n}\n\n},{}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction fill(array, value, start, end) {\n    if (array.fill) {\n        return array.fill(value, start, end);\n    }\n    return fillFallback(array, value, start, end);\n}\nexports.fill = fill;\nfunction fillFallback(array, value, start, end) {\n    if (start === void 0) { start = 0; }\n    if (end === void 0) { end = array.length; }\n    if (start >= array.length) {\n        return array;\n    }\n    start = (array.length + start) % array.length;\n    if (end >= array.length) {\n        end = array.length;\n    }\n    else {\n        end = (array.length + end) % array.length;\n    }\n    for (var i = start; i < end; ++i) {\n        array[i] = value;\n    }\n    return array;\n}\nexports.fillFallback = fillFallback;\nfunction concat(a, b) {\n    var result = new a.constructor(a.length + b.length);\n    result.set(a);\n    result.set(b, a.length);\n    return result;\n}\nexports.concat = concat;\n\n},{}],27:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_COLOR = 256;\n\n},{}],28:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar C0;\n(function (C0) {\n    C0.NUL = '\\x00';\n    C0.SOH = '\\x01';\n    C0.STX = '\\x02';\n    C0.ETX = '\\x03';\n    C0.EOT = '\\x04';\n    C0.ENQ = '\\x05';\n    C0.ACK = '\\x06';\n    C0.BEL = '\\x07';\n    C0.BS = '\\x08';\n    C0.HT = '\\x09';\n    C0.LF = '\\x0a';\n    C0.VT = '\\x0b';\n    C0.FF = '\\x0c';\n    C0.CR = '\\x0d';\n    C0.SO = '\\x0e';\n    C0.SI = '\\x0f';\n    C0.DLE = '\\x10';\n    C0.DC1 = '\\x11';\n    C0.DC2 = '\\x12';\n    C0.DC3 = '\\x13';\n    C0.DC4 = '\\x14';\n    C0.NAK = '\\x15';\n    C0.SYN = '\\x16';\n    C0.ETB = '\\x17';\n    C0.CAN = '\\x18';\n    C0.EM = '\\x19';\n    C0.SUB = '\\x1a';\n    C0.ESC = '\\x1b';\n    C0.FS = '\\x1c';\n    C0.GS = '\\x1d';\n    C0.RS = '\\x1e';\n    C0.US = '\\x1f';\n    C0.SP = '\\x20';\n    C0.DEL = '\\x7f';\n})(C0 = exports.C0 || (exports.C0 = {}));\nvar C1;\n(function (C1) {\n    C1.PAD = '\\x80';\n    C1.HOP = '\\x81';\n    C1.BPH = '\\x82';\n    C1.NBH = '\\x83';\n    C1.IND = '\\x84';\n    C1.NEL = '\\x85';\n    C1.SSA = '\\x86';\n    C1.ESA = '\\x87';\n    C1.HTS = '\\x88';\n    C1.HTJ = '\\x89';\n    C1.VTS = '\\x8a';\n    C1.PLD = '\\x8b';\n    C1.PLU = '\\x8c';\n    C1.RI = '\\x8d';\n    C1.SS2 = '\\x8e';\n    C1.SS3 = '\\x8f';\n    C1.DCS = '\\x90';\n    C1.PU1 = '\\x91';\n    C1.PU2 = '\\x92';\n    C1.STS = '\\x93';\n    C1.CCH = '\\x94';\n    C1.MW = '\\x95';\n    C1.SPA = '\\x96';\n    C1.EPA = '\\x97';\n    C1.SOS = '\\x98';\n    C1.SGCI = '\\x99';\n    C1.SCI = '\\x9a';\n    C1.CSI = '\\x9b';\n    C1.ST = '\\x9c';\n    C1.OSC = '\\x9d';\n    C1.PM = '\\x9e';\n    C1.APC = '\\x9f';\n})(C1 = exports.C1 || (exports.C1 = {}));\n\n},{}],29:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TextDecoder_1 = require(\"../input/TextDecoder\");\nvar Types_1 = require(\"../../common/Types\");\nexports.DEFAULT_ATTR = (0 << 18) | (Types_1.DEFAULT_COLOR << 9) | (256 << 0);\nexports.CHAR_DATA_ATTR_INDEX = 0;\nexports.CHAR_DATA_CHAR_INDEX = 1;\nexports.CHAR_DATA_WIDTH_INDEX = 2;\nexports.CHAR_DATA_CODE_INDEX = 3;\nexports.NULL_CELL_CHAR = '';\nexports.NULL_CELL_WIDTH = 1;\nexports.NULL_CELL_CODE = 0;\nexports.WHITESPACE_CELL_CHAR = ' ';\nexports.WHITESPACE_CELL_WIDTH = 1;\nexports.WHITESPACE_CELL_CODE = 32;\nvar CELL_SIZE = 3;\nvar AttributeData = (function () {\n    function AttributeData() {\n        this.fg = 0;\n        this.bg = 0;\n    }\n    AttributeData.toColorRGB = function (value) {\n        return [\n            value >>> 16 & 255,\n            value >>> 8 & 255,\n            value & 255\n        ];\n    };\n    AttributeData.fromColorRGB = function (value) {\n        return (value[0] & 255) << 16 | (value[1] & 255) << 8 | value[2] & 255;\n    };\n    AttributeData.prototype.clone = function () {\n        var newObj = new AttributeData();\n        newObj.fg = this.fg;\n        newObj.bg = this.bg;\n        return newObj;\n    };\n    AttributeData.prototype.isInverse = function () { return this.fg & 67108864; };\n    AttributeData.prototype.isBold = function () { return this.fg & 134217728; };\n    AttributeData.prototype.isUnderline = function () { return this.fg & 268435456; };\n    AttributeData.prototype.isBlink = function () { return this.fg & 536870912; };\n    AttributeData.prototype.isInvisible = function () { return this.fg & 1073741824; };\n    AttributeData.prototype.isItalic = function () { return this.bg & 67108864; };\n    AttributeData.prototype.isDim = function () { return this.bg & 134217728; };\n    AttributeData.prototype.getFgColorMode = function () { return this.fg & 50331648; };\n    AttributeData.prototype.getBgColorMode = function () { return this.bg & 50331648; };\n    AttributeData.prototype.isFgRGB = function () { return (this.fg & 50331648) === 50331648; };\n    AttributeData.prototype.isBgRGB = function () { return (this.bg & 50331648) === 50331648; };\n    AttributeData.prototype.isFgPalette = function () { return (this.fg & 50331648) === 16777216 || (this.fg & 50331648) === 33554432; };\n    AttributeData.prototype.isBgPalette = function () { return (this.bg & 50331648) === 16777216 || (this.bg & 50331648) === 33554432; };\n    AttributeData.prototype.isFgDefault = function () { return (this.fg & 50331648) === 0; };\n    AttributeData.prototype.isBgDefault = function () { return (this.bg & 50331648) === 0; };\n    AttributeData.prototype.getFgColor = function () {\n        switch (this.fg & 50331648) {\n            case 16777216:\n            case 33554432: return this.fg & 255;\n            case 50331648: return this.fg & 16777215;\n            default: return -1;\n        }\n    };\n    AttributeData.prototype.getBgColor = function () {\n        switch (this.bg & 50331648) {\n            case 16777216:\n            case 33554432: return this.bg & 255;\n            case 50331648: return this.bg & 16777215;\n            default: return -1;\n        }\n    };\n    return AttributeData;\n}());\nexports.AttributeData = AttributeData;\nexports.DEFAULT_ATTR_DATA = Object.freeze(new AttributeData());\nvar CellData = (function (_super) {\n    __extends(CellData, _super);\n    function CellData() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.content = 0;\n        _this.fg = 0;\n        _this.bg = 0;\n        _this.combinedData = '';\n        return _this;\n    }\n    CellData.fromCharData = function (value) {\n        var obj = new CellData();\n        obj.setFromCharData(value);\n        return obj;\n    };\n    CellData.prototype.isCombined = function () {\n        return this.content & 2097152;\n    };\n    CellData.prototype.getWidth = function () {\n        return this.content >> 22;\n    };\n    CellData.prototype.getChars = function () {\n        if (this.content & 2097152) {\n            return this.combinedData;\n        }\n        if (this.content & 2097151) {\n            return TextDecoder_1.stringFromCodePoint(this.content & 2097151);\n        }\n        return '';\n    };\n    CellData.prototype.getCode = function () {\n        return (this.isCombined())\n            ? this.combinedData.charCodeAt(this.combinedData.length - 1)\n            : this.content & 2097151;\n    };\n    CellData.prototype.setFromCharData = function (value) {\n        this.fg = value[exports.CHAR_DATA_ATTR_INDEX];\n        this.bg = 0;\n        var combined = false;\n        if (value[exports.CHAR_DATA_CHAR_INDEX].length > 2) {\n            combined = true;\n        }\n        else if (value[exports.CHAR_DATA_CHAR_INDEX].length === 2) {\n            var code = value[exports.CHAR_DATA_CHAR_INDEX].charCodeAt(0);\n            if (0xD800 <= code && code <= 0xDBFF) {\n                var second = value[exports.CHAR_DATA_CHAR_INDEX].charCodeAt(1);\n                if (0xDC00 <= second && second <= 0xDFFF) {\n                    this.content = ((code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000) | (value[exports.CHAR_DATA_WIDTH_INDEX] << 22);\n                }\n                else {\n                    combined = true;\n                }\n            }\n            else {\n                combined = true;\n            }\n        }\n        else {\n            this.content = value[exports.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[exports.CHAR_DATA_WIDTH_INDEX] << 22);\n        }\n        if (combined) {\n            this.combinedData = value[exports.CHAR_DATA_CHAR_INDEX];\n            this.content = 2097152 | (value[exports.CHAR_DATA_WIDTH_INDEX] << 22);\n        }\n    };\n    CellData.prototype.getAsCharData = function () {\n        return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n    };\n    return CellData;\n}(AttributeData));\nexports.CellData = CellData;\nvar BufferLine = (function () {\n    function BufferLine(cols, fillCellData, isWrapped) {\n        if (isWrapped === void 0) { isWrapped = false; }\n        this.isWrapped = isWrapped;\n        this._combined = {};\n        this._data = new Uint32Array(cols * CELL_SIZE);\n        var cell = fillCellData || CellData.fromCharData([0, exports.NULL_CELL_CHAR, exports.NULL_CELL_WIDTH, exports.NULL_CELL_CODE]);\n        for (var i = 0; i < cols; ++i) {\n            this.setCell(i, cell);\n        }\n        this.length = cols;\n    }\n    BufferLine.prototype.get = function (index) {\n        var content = this._data[index * CELL_SIZE + 0];\n        var cp = content & 2097151;\n        return [\n            this._data[index * CELL_SIZE + 1],\n            (content & 2097152)\n                ? this._combined[index]\n                : (cp) ? TextDecoder_1.stringFromCodePoint(cp) : '',\n            content >> 22,\n            (content & 2097152)\n                ? this._combined[index].charCodeAt(this._combined[index].length - 1)\n                : cp\n        ];\n    };\n    BufferLine.prototype.set = function (index, value) {\n        this._data[index * CELL_SIZE + 1] = value[exports.CHAR_DATA_ATTR_INDEX];\n        if (value[exports.CHAR_DATA_CHAR_INDEX].length > 1) {\n            this._combined[index] = value[1];\n            this._data[index * CELL_SIZE + 0] = index | 2097152 | (value[exports.CHAR_DATA_WIDTH_INDEX] << 22);\n        }\n        else {\n            this._data[index * CELL_SIZE + 0] = value[exports.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | (value[exports.CHAR_DATA_WIDTH_INDEX] << 22);\n        }\n    };\n    BufferLine.prototype.getWidth = function (index) {\n        return this._data[index * CELL_SIZE + 0] >> 22;\n    };\n    BufferLine.prototype.hasWidth = function (index) {\n        return this._data[index * CELL_SIZE + 0] & 12582912;\n    };\n    BufferLine.prototype.getFg = function (index) {\n        return this._data[index * CELL_SIZE + 1];\n    };\n    BufferLine.prototype.getBg = function (index) {\n        return this._data[index * CELL_SIZE + 2];\n    };\n    BufferLine.prototype.hasContent = function (index) {\n        return this._data[index * CELL_SIZE + 0] & 4194303;\n    };\n    BufferLine.prototype.getCodePoint = function (index) {\n        var content = this._data[index * CELL_SIZE + 0];\n        if (content & 2097152) {\n            return this._combined[index].charCodeAt(this._combined[index].length - 1);\n        }\n        return content & 2097151;\n    };\n    BufferLine.prototype.isCombined = function (index) {\n        return this._data[index * CELL_SIZE + 0] & 2097152;\n    };\n    BufferLine.prototype.getString = function (index) {\n        var content = this._data[index * CELL_SIZE + 0];\n        if (content & 2097152) {\n            return this._combined[index];\n        }\n        if (content & 2097151) {\n            return TextDecoder_1.stringFromCodePoint(content & 2097151);\n        }\n        return '';\n    };\n    BufferLine.prototype.loadCell = function (index, cell) {\n        var startIndex = index * CELL_SIZE;\n        cell.content = this._data[startIndex + 0];\n        cell.fg = this._data[startIndex + 1];\n        cell.bg = this._data[startIndex + 2];\n        if (cell.content & 2097152) {\n            cell.combinedData = this._combined[index];\n        }\n        return cell;\n    };\n    BufferLine.prototype.setCell = function (index, cell) {\n        if (cell.content & 2097152) {\n            this._combined[index] = cell.combinedData;\n        }\n        this._data[index * CELL_SIZE + 0] = cell.content;\n        this._data[index * CELL_SIZE + 1] = cell.fg;\n        this._data[index * CELL_SIZE + 2] = cell.bg;\n    };\n    BufferLine.prototype.setCellFromCodePoint = function (index, codePoint, width, fg, bg) {\n        this._data[index * CELL_SIZE + 0] = codePoint | (width << 22);\n        this._data[index * CELL_SIZE + 1] = fg;\n        this._data[index * CELL_SIZE + 2] = bg;\n    };\n    BufferLine.prototype.addCodepointToCell = function (index, codePoint) {\n        var content = this._data[index * CELL_SIZE + 0];\n        if (content & 2097152) {\n            this._combined[index] += TextDecoder_1.stringFromCodePoint(codePoint);\n        }\n        else {\n            if (content & 2097151) {\n                this._combined[index] = TextDecoder_1.stringFromCodePoint(content & 2097151) + TextDecoder_1.stringFromCodePoint(codePoint);\n                content &= ~2097151;\n                content |= 2097152;\n            }\n            else {\n                content = codePoint | (1 << 22);\n            }\n            this._data[index * CELL_SIZE + 0] = content;\n        }\n    };\n    BufferLine.prototype.insertCells = function (pos, n, fillCellData) {\n        pos %= this.length;\n        if (n < this.length - pos) {\n            var cell = new CellData();\n            for (var i = this.length - pos - n - 1; i >= 0; --i) {\n                this.setCell(pos + n + i, this.loadCell(pos + i, cell));\n            }\n            for (var i = 0; i < n; ++i) {\n                this.setCell(pos + i, fillCellData);\n            }\n        }\n        else {\n            for (var i = pos; i < this.length; ++i) {\n                this.setCell(i, fillCellData);\n            }\n        }\n    };\n    BufferLine.prototype.deleteCells = function (pos, n, fillCellData) {\n        pos %= this.length;\n        if (n < this.length - pos) {\n            var cell = new CellData();\n            for (var i = 0; i < this.length - pos - n; ++i) {\n                this.setCell(pos + i, this.loadCell(pos + n + i, cell));\n            }\n            for (var i = this.length - n; i < this.length; ++i) {\n                this.setCell(i, fillCellData);\n            }\n        }\n        else {\n            for (var i = pos; i < this.length; ++i) {\n                this.setCell(i, fillCellData);\n            }\n        }\n    };\n    BufferLine.prototype.replaceCells = function (start, end, fillCellData) {\n        while (start < end && start < this.length) {\n            this.setCell(start++, fillCellData);\n        }\n    };\n    BufferLine.prototype.resize = function (cols, fillCellData) {\n        if (cols === this.length) {\n            return;\n        }\n        if (cols > this.length) {\n            var data = new Uint32Array(cols * CELL_SIZE);\n            if (this.length) {\n                if (cols * CELL_SIZE < this._data.length) {\n                    data.set(this._data.subarray(0, cols * CELL_SIZE));\n                }\n                else {\n                    data.set(this._data);\n                }\n            }\n            this._data = data;\n            for (var i = this.length; i < cols; ++i) {\n                this.setCell(i, fillCellData);\n            }\n        }\n        else {\n            if (cols) {\n                var data = new Uint32Array(cols * CELL_SIZE);\n                data.set(this._data.subarray(0, cols * CELL_SIZE));\n                this._data = data;\n                var keys = Object.keys(this._combined);\n                for (var i = 0; i < keys.length; i++) {\n                    var key = parseInt(keys[i], 10);\n                    if (key >= cols) {\n                        delete this._combined[key];\n                    }\n                }\n            }\n            else {\n                this._data = new Uint32Array(0);\n                this._combined = {};\n            }\n        }\n        this.length = cols;\n    };\n    BufferLine.prototype.fill = function (fillCellData) {\n        this._combined = {};\n        for (var i = 0; i < this.length; ++i) {\n            this.setCell(i, fillCellData);\n        }\n    };\n    BufferLine.prototype.copyFrom = function (line) {\n        if (this.length !== line.length) {\n            this._data = new Uint32Array(line._data);\n        }\n        else {\n            this._data.set(line._data);\n        }\n        this.length = line.length;\n        this._combined = {};\n        for (var el in line._combined) {\n            this._combined[el] = line._combined[el];\n        }\n        this.isWrapped = line.isWrapped;\n    };\n    BufferLine.prototype.clone = function () {\n        var newLine = new BufferLine(0);\n        newLine._data = new Uint32Array(this._data);\n        newLine.length = this.length;\n        for (var el in this._combined) {\n            newLine._combined[el] = this._combined[el];\n        }\n        newLine.isWrapped = this.isWrapped;\n        return newLine;\n    };\n    BufferLine.prototype.getTrimmedLength = function () {\n        for (var i = this.length - 1; i >= 0; --i) {\n            if ((this._data[i * CELL_SIZE + 0] & 4194303)) {\n                return i + (this._data[i * CELL_SIZE + 0] >> 22);\n            }\n        }\n        return 0;\n    };\n    BufferLine.prototype.copyCellsFrom = function (src, srcCol, destCol, length, applyInReverse) {\n        var srcData = src._data;\n        if (applyInReverse) {\n            for (var cell = length - 1; cell >= 0; cell--) {\n                for (var i = 0; i < CELL_SIZE; i++) {\n                    this._data[(destCol + cell) * CELL_SIZE + i] = srcData[(srcCol + cell) * CELL_SIZE + i];\n                }\n            }\n        }\n        else {\n            for (var cell = 0; cell < length; cell++) {\n                for (var i = 0; i < CELL_SIZE; i++) {\n                    this._data[(destCol + cell) * CELL_SIZE + i] = srcData[(srcCol + cell) * CELL_SIZE + i];\n                }\n            }\n        }\n        var srcCombinedKeys = Object.keys(src._combined);\n        for (var i = 0; i < srcCombinedKeys.length; i++) {\n            var key = parseInt(srcCombinedKeys[i], 10);\n            if (key >= srcCol) {\n                this._combined[key - srcCol + destCol] = src._combined[key];\n            }\n        }\n    };\n    BufferLine.prototype.translateToString = function (trimRight, startCol, endCol) {\n        if (trimRight === void 0) { trimRight = false; }\n        if (startCol === void 0) { startCol = 0; }\n        if (endCol === void 0) { endCol = this.length; }\n        if (trimRight) {\n            endCol = Math.min(endCol, this.getTrimmedLength());\n        }\n        var result = '';\n        while (startCol < endCol) {\n            var content = this._data[startCol * CELL_SIZE + 0];\n            var cp = content & 2097151;\n            result += (content & 2097152) ? this._combined[startCol] : (cp) ? TextDecoder_1.stringFromCodePoint(cp) : exports.WHITESPACE_CELL_CHAR;\n            startCol += (content >> 22) || 1;\n        }\n        return result;\n    };\n    return BufferLine;\n}());\nexports.BufferLine = BufferLine;\n\n},{\"../../common/Types\":27,\"../input/TextDecoder\":34}],30:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction reflowLargerGetLinesToRemove(lines, oldCols, newCols, bufferAbsoluteY, nullCell) {\n    var toRemove = [];\n    for (var y = 0; y < lines.length - 1; y++) {\n        var i = y;\n        var nextLine = lines.get(++i);\n        if (!nextLine.isWrapped) {\n            continue;\n        }\n        var wrappedLines = [lines.get(y)];\n        while (i < lines.length && nextLine.isWrapped) {\n            wrappedLines.push(nextLine);\n            nextLine = lines.get(++i);\n        }\n        if (bufferAbsoluteY >= y && bufferAbsoluteY < i) {\n            y += wrappedLines.length - 1;\n            continue;\n        }\n        var destLineIndex = 0;\n        var destCol = getWrappedLineTrimmedLength(wrappedLines, destLineIndex, oldCols);\n        var srcLineIndex = 1;\n        var srcCol = 0;\n        while (srcLineIndex < wrappedLines.length) {\n            var srcTrimmedTineLength = getWrappedLineTrimmedLength(wrappedLines, srcLineIndex, oldCols);\n            var srcRemainingCells = srcTrimmedTineLength - srcCol;\n            var destRemainingCells = newCols - destCol;\n            var cellsToCopy = Math.min(srcRemainingCells, destRemainingCells);\n            wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[srcLineIndex], srcCol, destCol, cellsToCopy, false);\n            destCol += cellsToCopy;\n            if (destCol === newCols) {\n                destLineIndex++;\n                destCol = 0;\n            }\n            srcCol += cellsToCopy;\n            if (srcCol === srcTrimmedTineLength) {\n                srcLineIndex++;\n                srcCol = 0;\n            }\n            if (destCol === 0 && destLineIndex !== 0) {\n                if (wrappedLines[destLineIndex - 1].getWidth(newCols - 1) === 2) {\n                    wrappedLines[destLineIndex].copyCellsFrom(wrappedLines[destLineIndex - 1], newCols - 1, destCol++, 1, false);\n                    wrappedLines[destLineIndex - 1].setCell(newCols - 1, nullCell);\n                }\n            }\n        }\n        wrappedLines[destLineIndex].replaceCells(destCol, newCols, nullCell);\n        var countToRemove = 0;\n        for (var i_1 = wrappedLines.length - 1; i_1 > 0; i_1--) {\n            if (i_1 > destLineIndex || wrappedLines[i_1].getTrimmedLength() === 0) {\n                countToRemove++;\n            }\n            else {\n                break;\n            }\n        }\n        if (countToRemove > 0) {\n            toRemove.push(y + wrappedLines.length - countToRemove);\n            toRemove.push(countToRemove);\n        }\n        y += wrappedLines.length - 1;\n    }\n    return toRemove;\n}\nexports.reflowLargerGetLinesToRemove = reflowLargerGetLinesToRemove;\nfunction reflowLargerCreateNewLayout(lines, toRemove) {\n    var layout = [];\n    var nextToRemoveIndex = 0;\n    var nextToRemoveStart = toRemove[nextToRemoveIndex];\n    var countRemovedSoFar = 0;\n    for (var i = 0; i < lines.length; i++) {\n        if (nextToRemoveStart === i) {\n            var countToRemove = toRemove[++nextToRemoveIndex];\n            lines.onDeleteEmitter.fire({\n                index: i - countRemovedSoFar,\n                amount: countToRemove\n            });\n            i += countToRemove - 1;\n            countRemovedSoFar += countToRemove;\n            nextToRemoveStart = toRemove[++nextToRemoveIndex];\n        }\n        else {\n            layout.push(i);\n        }\n    }\n    return {\n        layout: layout,\n        countRemoved: countRemovedSoFar\n    };\n}\nexports.reflowLargerCreateNewLayout = reflowLargerCreateNewLayout;\nfunction reflowLargerApplyNewLayout(lines, newLayout) {\n    var newLayoutLines = [];\n    for (var i = 0; i < newLayout.length; i++) {\n        newLayoutLines.push(lines.get(newLayout[i]));\n    }\n    for (var i = 0; i < newLayoutLines.length; i++) {\n        lines.set(i, newLayoutLines[i]);\n    }\n    lines.length = newLayout.length;\n}\nexports.reflowLargerApplyNewLayout = reflowLargerApplyNewLayout;\nfunction reflowSmallerGetNewLineLengths(wrappedLines, oldCols, newCols) {\n    var newLineLengths = [];\n    var cellsNeeded = wrappedLines.map(function (l, i) { return getWrappedLineTrimmedLength(wrappedLines, i, oldCols); }).reduce(function (p, c) { return p + c; });\n    var srcCol = 0;\n    var srcLine = 0;\n    var cellsAvailable = 0;\n    while (cellsAvailable < cellsNeeded) {\n        if (cellsNeeded - cellsAvailable < newCols) {\n            newLineLengths.push(cellsNeeded - cellsAvailable);\n            break;\n        }\n        srcCol += newCols;\n        var oldTrimmedLength = getWrappedLineTrimmedLength(wrappedLines, srcLine, oldCols);\n        if (srcCol > oldTrimmedLength) {\n            srcCol -= oldTrimmedLength;\n            srcLine++;\n        }\n        var endsWithWide = wrappedLines[srcLine].getWidth(srcCol - 1) === 2;\n        if (endsWithWide) {\n            srcCol--;\n        }\n        var lineLength = endsWithWide ? newCols - 1 : newCols;\n        newLineLengths.push(lineLength);\n        cellsAvailable += lineLength;\n    }\n    return newLineLengths;\n}\nexports.reflowSmallerGetNewLineLengths = reflowSmallerGetNewLineLengths;\nfunction getWrappedLineTrimmedLength(lines, i, cols) {\n    if (i === lines.length - 1) {\n        return lines[i].getTrimmedLength();\n    }\n    var endsInNull = !(lines[i].hasContent(cols - 1)) && lines[i].getWidth(cols - 1) === 1;\n    var followingLineStartsWithWide = lines[i + 1].getWidth(0) === 2;\n    if (endsInNull && followingLineStartsWithWide) {\n        return cols - 1;\n    }\n    return cols;\n}\nexports.getWrappedLineTrimmedLength = getWrappedLineTrimmedLength;\n\n},{}],31:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventEmitter2_1 = require(\"../../common/EventEmitter2\");\nvar Lifecycle_1 = require(\"../../common/Lifecycle\");\nvar Marker = (function (_super) {\n    __extends(Marker, _super);\n    function Marker(line) {\n        var _this = _super.call(this) || this;\n        _this.line = line;\n        _this._id = Marker._nextId++;\n        _this.isDisposed = false;\n        _this._onDispose = new EventEmitter2_1.EventEmitter2();\n        return _this;\n    }\n    Object.defineProperty(Marker.prototype, \"id\", {\n        get: function () { return this._id; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Marker.prototype, \"onDispose\", {\n        get: function () { return this._onDispose.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Marker.prototype.dispose = function () {\n        if (this.isDisposed) {\n            return;\n        }\n        this.isDisposed = true;\n        this._onDispose.fire();\n    };\n    Marker._nextId = 1;\n    return Marker;\n}(Lifecycle_1.Disposable));\nexports.Marker = Marker;\n\n},{\"../../common/EventEmitter2\":23,\"../../common/Lifecycle\":24}],32:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHARSETS = {};\nexports.DEFAULT_CHARSET = exports.CHARSETS['B'];\nexports.CHARSETS['0'] = {\n    '`': '\\u25c6',\n    'a': '\\u2592',\n    'b': '\\u0009',\n    'c': '\\u000c',\n    'd': '\\u000d',\n    'e': '\\u000a',\n    'f': '\\u00b0',\n    'g': '\\u00b1',\n    'h': '\\u2424',\n    'i': '\\u000b',\n    'j': '\\u2518',\n    'k': '\\u2510',\n    'l': '\\u250c',\n    'm': '\\u2514',\n    'n': '\\u253c',\n    'o': '\\u23ba',\n    'p': '\\u23bb',\n    'q': '\\u2500',\n    'r': '\\u23bc',\n    's': '\\u23bd',\n    't': '\\u251c',\n    'u': '\\u2524',\n    'v': '\\u2534',\n    'w': '\\u252c',\n    'x': '\\u2502',\n    'y': '\\u2264',\n    'z': '\\u2265',\n    '{': '\\u03c0',\n    '|': '\\u2260',\n    '}': '\\u00a3',\n    '~': '\\u00b7'\n};\nexports.CHARSETS['A'] = {\n    '#': '£'\n};\nexports.CHARSETS['B'] = null;\nexports.CHARSETS['4'] = {\n    '#': '£',\n    '@': '¾',\n    '[': 'ij',\n    '\\\\': '½',\n    ']': '|',\n    '{': '¨',\n    '|': 'f',\n    '}': '¼',\n    '~': '´'\n};\nexports.CHARSETS['C'] =\n    exports.CHARSETS['5'] = {\n        '[': 'Ä',\n        '\\\\': 'Ö',\n        ']': 'Å',\n        '^': 'Ü',\n        '`': 'é',\n        '{': 'ä',\n        '|': 'ö',\n        '}': 'å',\n        '~': 'ü'\n    };\nexports.CHARSETS['R'] = {\n    '#': '£',\n    '@': 'à',\n    '[': '°',\n    '\\\\': 'ç',\n    ']': '§',\n    '{': 'é',\n    '|': 'ù',\n    '}': 'è',\n    '~': '¨'\n};\nexports.CHARSETS['Q'] = {\n    '@': 'à',\n    '[': 'â',\n    '\\\\': 'ç',\n    ']': 'ê',\n    '^': 'î',\n    '`': 'ô',\n    '{': 'é',\n    '|': 'ù',\n    '}': 'è',\n    '~': 'û'\n};\nexports.CHARSETS['K'] = {\n    '@': '§',\n    '[': 'Ä',\n    '\\\\': 'Ö',\n    ']': 'Ü',\n    '{': 'ä',\n    '|': 'ö',\n    '}': 'ü',\n    '~': 'ß'\n};\nexports.CHARSETS['Y'] = {\n    '#': '£',\n    '@': '§',\n    '[': '°',\n    '\\\\': 'ç',\n    ']': 'é',\n    '`': 'ù',\n    '{': 'à',\n    '|': 'ò',\n    '}': 'è',\n    '~': 'ì'\n};\nexports.CHARSETS['E'] =\n    exports.CHARSETS['6'] = {\n        '@': 'Ä',\n        '[': 'Æ',\n        '\\\\': 'Ø',\n        ']': 'Å',\n        '^': 'Ü',\n        '`': 'ä',\n        '{': 'æ',\n        '|': 'ø',\n        '}': 'å',\n        '~': 'ü'\n    };\nexports.CHARSETS['Z'] = {\n    '#': '£',\n    '@': '§',\n    '[': '¡',\n    '\\\\': 'Ñ',\n    ']': '¿',\n    '{': '°',\n    '|': 'ñ',\n    '}': 'ç'\n};\nexports.CHARSETS['H'] =\n    exports.CHARSETS['7'] = {\n        '@': 'É',\n        '[': 'Ä',\n        '\\\\': 'Ö',\n        ']': 'Å',\n        '^': 'Ü',\n        '`': 'é',\n        '{': 'ä',\n        '|': 'ö',\n        '}': 'å',\n        '~': 'ü'\n    };\nexports.CHARSETS['='] = {\n    '#': 'ù',\n    '@': 'à',\n    '[': 'é',\n    '\\\\': 'ç',\n    ']': 'ê',\n    '^': 'î',\n    '_': 'è',\n    '`': 'ô',\n    '{': 'ä',\n    '|': 'ö',\n    '}': 'ü',\n    '~': 'û'\n};\n\n},{}],33:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EscapeSequences_1 = require(\"../../common/data/EscapeSequences\");\nvar KEYCODE_KEY_MAPPINGS = {\n    48: ['0', ')'],\n    49: ['1', '!'],\n    50: ['2', '@'],\n    51: ['3', '#'],\n    52: ['4', '$'],\n    53: ['5', '%'],\n    54: ['6', '^'],\n    55: ['7', '&'],\n    56: ['8', '*'],\n    57: ['9', '('],\n    186: [';', ':'],\n    187: ['=', '+'],\n    188: [',', '<'],\n    189: ['-', '_'],\n    190: ['.', '>'],\n    191: ['/', '?'],\n    192: ['`', '~'],\n    219: ['[', '{'],\n    220: ['\\\\', '|'],\n    221: [']', '}'],\n    222: ['\\'', '\"']\n};\nfunction evaluateKeyboardEvent(ev, applicationCursorMode, isMac, macOptionIsMeta) {\n    var result = {\n        type: 0,\n        cancel: false,\n        key: undefined\n    };\n    var modifiers = (ev.shiftKey ? 1 : 0) | (ev.altKey ? 2 : 0) | (ev.ctrlKey ? 4 : 0) | (ev.metaKey ? 8 : 0);\n    switch (ev.keyCode) {\n        case 0:\n            if (ev.key === 'UIKeyInputUpArrow') {\n                if (applicationCursorMode) {\n                    result.key = EscapeSequences_1.C0.ESC + 'OA';\n                }\n                else {\n                    result.key = EscapeSequences_1.C0.ESC + '[A';\n                }\n            }\n            else if (ev.key === 'UIKeyInputLeftArrow') {\n                if (applicationCursorMode) {\n                    result.key = EscapeSequences_1.C0.ESC + 'OD';\n                }\n                else {\n                    result.key = EscapeSequences_1.C0.ESC + '[D';\n                }\n            }\n            else if (ev.key === 'UIKeyInputRightArrow') {\n                if (applicationCursorMode) {\n                    result.key = EscapeSequences_1.C0.ESC + 'OC';\n                }\n                else {\n                    result.key = EscapeSequences_1.C0.ESC + '[C';\n                }\n            }\n            else if (ev.key === 'UIKeyInputDownArrow') {\n                if (applicationCursorMode) {\n                    result.key = EscapeSequences_1.C0.ESC + 'OB';\n                }\n                else {\n                    result.key = EscapeSequences_1.C0.ESC + '[B';\n                }\n            }\n            break;\n        case 8:\n            if (ev.shiftKey) {\n                result.key = EscapeSequences_1.C0.BS;\n                break;\n            }\n            else if (ev.altKey) {\n                result.key = EscapeSequences_1.C0.ESC + EscapeSequences_1.C0.DEL;\n                break;\n            }\n            result.key = EscapeSequences_1.C0.DEL;\n            break;\n        case 9:\n            if (ev.shiftKey) {\n                result.key = EscapeSequences_1.C0.ESC + '[Z';\n                break;\n            }\n            result.key = EscapeSequences_1.C0.HT;\n            result.cancel = true;\n            break;\n        case 13:\n            result.key = EscapeSequences_1.C0.CR;\n            result.cancel = true;\n            break;\n        case 27:\n            result.key = EscapeSequences_1.C0.ESC;\n            result.cancel = true;\n            break;\n        case 37:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'D';\n                if (result.key === EscapeSequences_1.C0.ESC + '[1;3D') {\n                    result.key = isMac ? EscapeSequences_1.C0.ESC + 'b' : EscapeSequences_1.C0.ESC + '[1;5D';\n                }\n            }\n            else if (applicationCursorMode) {\n                result.key = EscapeSequences_1.C0.ESC + 'OD';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[D';\n            }\n            break;\n        case 39:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'C';\n                if (result.key === EscapeSequences_1.C0.ESC + '[1;3C') {\n                    result.key = isMac ? EscapeSequences_1.C0.ESC + 'f' : EscapeSequences_1.C0.ESC + '[1;5C';\n                }\n            }\n            else if (applicationCursorMode) {\n                result.key = EscapeSequences_1.C0.ESC + 'OC';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[C';\n            }\n            break;\n        case 38:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'A';\n                if (result.key === EscapeSequences_1.C0.ESC + '[1;3A') {\n                    result.key = EscapeSequences_1.C0.ESC + '[1;5A';\n                }\n            }\n            else if (applicationCursorMode) {\n                result.key = EscapeSequences_1.C0.ESC + 'OA';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[A';\n            }\n            break;\n        case 40:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'B';\n                if (result.key === EscapeSequences_1.C0.ESC + '[1;3B') {\n                    result.key = EscapeSequences_1.C0.ESC + '[1;5B';\n                }\n            }\n            else if (applicationCursorMode) {\n                result.key = EscapeSequences_1.C0.ESC + 'OB';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[B';\n            }\n            break;\n        case 45:\n            if (!ev.shiftKey && !ev.ctrlKey) {\n                result.key = EscapeSequences_1.C0.ESC + '[2~';\n            }\n            break;\n        case 46:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[3;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[3~';\n            }\n            break;\n        case 36:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'H';\n            }\n            else if (applicationCursorMode) {\n                result.key = EscapeSequences_1.C0.ESC + 'OH';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[H';\n            }\n            break;\n        case 35:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'F';\n            }\n            else if (applicationCursorMode) {\n                result.key = EscapeSequences_1.C0.ESC + 'OF';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[F';\n            }\n            break;\n        case 33:\n            if (ev.shiftKey) {\n                result.type = 2;\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[5~';\n            }\n            break;\n        case 34:\n            if (ev.shiftKey) {\n                result.type = 3;\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[6~';\n            }\n            break;\n        case 112:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'P';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + 'OP';\n            }\n            break;\n        case 113:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'Q';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + 'OQ';\n            }\n            break;\n        case 114:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'R';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + 'OR';\n            }\n            break;\n        case 115:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'S';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + 'OS';\n            }\n            break;\n        case 116:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[15;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[15~';\n            }\n            break;\n        case 117:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[17;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[17~';\n            }\n            break;\n        case 118:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[18;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[18~';\n            }\n            break;\n        case 119:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[19;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[19~';\n            }\n            break;\n        case 120:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[20;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[20~';\n            }\n            break;\n        case 121:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[21;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[21~';\n            }\n            break;\n        case 122:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[23;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[23~';\n            }\n            break;\n        case 123:\n            if (modifiers) {\n                result.key = EscapeSequences_1.C0.ESC + '[24;' + (modifiers + 1) + '~';\n            }\n            else {\n                result.key = EscapeSequences_1.C0.ESC + '[24~';\n            }\n            break;\n        default:\n            if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n                if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n                    result.key = String.fromCharCode(ev.keyCode - 64);\n                }\n                else if (ev.keyCode === 32) {\n                    result.key = String.fromCharCode(0);\n                }\n                else if (ev.keyCode >= 51 && ev.keyCode <= 55) {\n                    result.key = String.fromCharCode(ev.keyCode - 51 + 27);\n                }\n                else if (ev.keyCode === 56) {\n                    result.key = String.fromCharCode(127);\n                }\n                else if (ev.keyCode === 219) {\n                    result.key = String.fromCharCode(27);\n                }\n                else if (ev.keyCode === 220) {\n                    result.key = String.fromCharCode(28);\n                }\n                else if (ev.keyCode === 221) {\n                    result.key = String.fromCharCode(29);\n                }\n            }\n            else if ((!isMac || macOptionIsMeta) && ev.altKey && !ev.metaKey) {\n                var keyMapping = KEYCODE_KEY_MAPPINGS[ev.keyCode];\n                var key = keyMapping && keyMapping[!ev.shiftKey ? 0 : 1];\n                if (key) {\n                    result.key = EscapeSequences_1.C0.ESC + key;\n                }\n                else if (ev.keyCode >= 65 && ev.keyCode <= 90) {\n                    var keyCode = ev.ctrlKey ? ev.keyCode - 64 : ev.keyCode + 32;\n                    result.key = EscapeSequences_1.C0.ESC + String.fromCharCode(keyCode);\n                }\n            }\n            else if (isMac && !ev.altKey && !ev.ctrlKey && ev.metaKey) {\n                if (ev.keyCode === 65) {\n                    result.type = 1;\n                }\n            }\n            else if (ev.key && !ev.ctrlKey && !ev.altKey && !ev.metaKey && ev.keyCode >= 48 && ev.key.length === 1) {\n                result.key = ev.key;\n            }\n            else if (ev.key && ev.ctrlKey) {\n                if (ev.key === '_') {\n                    result.key = EscapeSequences_1.C0.US;\n                }\n            }\n            break;\n    }\n    return result;\n}\nexports.evaluateKeyboardEvent = evaluateKeyboardEvent;\n\n},{\"../../common/data/EscapeSequences\":28}],34:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stringFromCodePoint(codePoint) {\n    if (codePoint > 0xFFFF) {\n        codePoint -= 0x10000;\n        return String.fromCharCode((codePoint >> 10) + 0xD800) + String.fromCharCode((codePoint % 0x400) + 0xDC00);\n    }\n    return String.fromCharCode(codePoint);\n}\nexports.stringFromCodePoint = stringFromCodePoint;\nfunction utf32ToString(data, start, end) {\n    if (start === void 0) { start = 0; }\n    if (end === void 0) { end = data.length; }\n    var result = '';\n    for (var i = start; i < end; ++i) {\n        var codepoint = data[i];\n        if (codepoint > 0xFFFF) {\n            codepoint -= 0x10000;\n            result += String.fromCharCode((codepoint >> 10) + 0xD800) + String.fromCharCode((codepoint % 0x400) + 0xDC00);\n        }\n        else {\n            result += String.fromCharCode(codepoint);\n        }\n    }\n    return result;\n}\nexports.utf32ToString = utf32ToString;\nvar StringToUtf32 = (function () {\n    function StringToUtf32() {\n        this._interim = 0;\n    }\n    StringToUtf32.prototype.clear = function () {\n        this._interim = 0;\n    };\n    StringToUtf32.prototype.decode = function (input, target) {\n        var length = input.length;\n        if (!length) {\n            return 0;\n        }\n        var size = 0;\n        var startPos = 0;\n        if (this._interim) {\n            var second = input.charCodeAt(startPos++);\n            if (0xDC00 <= second && second <= 0xDFFF) {\n                target[size++] = (this._interim - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n            }\n            else {\n                target[size++] = this._interim;\n                target[size++] = second;\n            }\n            this._interim = 0;\n        }\n        for (var i = startPos; i < length; ++i) {\n            var code = input.charCodeAt(i);\n            if (0xD800 <= code && code <= 0xDBFF) {\n                if (++i >= length) {\n                    this._interim = code;\n                    return size;\n                }\n                var second = input.charCodeAt(i);\n                if (0xDC00 <= second && second <= 0xDFFF) {\n                    target[size++] = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n                }\n                else {\n                    target[size++] = code;\n                    target[size++] = second;\n                }\n                continue;\n            }\n            target[size++] = code;\n        }\n        return size;\n    };\n    return StringToUtf32;\n}());\nexports.StringToUtf32 = StringToUtf32;\nvar Utf8ToUtf32 = (function () {\n    function Utf8ToUtf32() {\n        this.interim = new Uint8Array(3);\n    }\n    Utf8ToUtf32.prototype.clear = function () {\n        this.interim.fill(0);\n    };\n    Utf8ToUtf32.prototype.decode = function (input, target) {\n        var length = input.length;\n        if (!length) {\n            return 0;\n        }\n        var size = 0;\n        var byte1;\n        var byte2;\n        var byte3;\n        var byte4;\n        var codepoint = 0;\n        var startPos = 0;\n        if (this.interim[0]) {\n            var discardInterim = false;\n            var cp = this.interim[0];\n            cp &= ((((cp & 0xE0) === 0xC0)) ? 0x1F : (((cp & 0xF0) === 0xE0)) ? 0x0F : 0x07);\n            var pos = 0;\n            var tmp = void 0;\n            while ((tmp = this.interim[++pos] & 0x3F) && pos < 4) {\n                cp <<= 6;\n                cp |= tmp;\n            }\n            var type = (((this.interim[0] & 0xE0) === 0xC0)) ? 2 : (((this.interim[0] & 0xF0) === 0xE0)) ? 3 : 4;\n            var missing = type - pos;\n            while (startPos < missing) {\n                if (startPos >= length) {\n                    return 0;\n                }\n                tmp = input[startPos++];\n                if ((tmp & 0xC0) !== 0x80) {\n                    startPos--;\n                    discardInterim = true;\n                    break;\n                }\n                else {\n                    this.interim[pos++] = tmp;\n                    cp <<= 6;\n                    cp |= tmp & 0x3F;\n                }\n            }\n            if (!discardInterim) {\n                if (type === 2) {\n                    if (cp < 0x80) {\n                        startPos--;\n                    }\n                    else {\n                        target[size++] = cp;\n                    }\n                }\n                else if (type === 3) {\n                    if (cp < 0x0800 || (cp >= 0xD800 && cp <= 0xDFFF)) {\n                    }\n                    else {\n                        target[size++] = cp;\n                    }\n                }\n                else {\n                    if (codepoint < 0x010000 || codepoint > 0x10FFFF) {\n                    }\n                    else {\n                        target[size++] = cp;\n                    }\n                }\n            }\n            this.interim.fill(0);\n        }\n        var fourStop = length - 4;\n        var i = startPos;\n        while (i < length) {\n            while (i < fourStop\n                && !((byte1 = input[i]) & 0x80)\n                && !((byte2 = input[i + 1]) & 0x80)\n                && !((byte3 = input[i + 2]) & 0x80)\n                && !((byte4 = input[i + 3]) & 0x80)) {\n                target[size++] = byte1;\n                target[size++] = byte2;\n                target[size++] = byte3;\n                target[size++] = byte4;\n                i += 4;\n            }\n            byte1 = input[i++];\n            if (byte1 < 0x80) {\n                target[size++] = byte1;\n            }\n            else if ((byte1 & 0xE0) === 0xC0) {\n                if (i >= length) {\n                    this.interim[0] = byte1;\n                    return size;\n                }\n                byte2 = input[i++];\n                if ((byte2 & 0xC0) !== 0x80) {\n                    i--;\n                    continue;\n                }\n                codepoint = (byte1 & 0x1F) << 6 | (byte2 & 0x3F);\n                if (codepoint < 0x80) {\n                    i--;\n                    continue;\n                }\n                target[size++] = codepoint;\n            }\n            else if ((byte1 & 0xF0) === 0xE0) {\n                if (i >= length) {\n                    this.interim[0] = byte1;\n                    return size;\n                }\n                byte2 = input[i++];\n                if ((byte2 & 0xC0) !== 0x80) {\n                    i--;\n                    continue;\n                }\n                if (i >= length) {\n                    this.interim[0] = byte1;\n                    this.interim[1] = byte2;\n                    return size;\n                }\n                byte3 = input[i++];\n                if ((byte3 & 0xC0) !== 0x80) {\n                    i--;\n                    continue;\n                }\n                codepoint = (byte1 & 0x0F) << 12 | (byte2 & 0x3F) << 6 | (byte3 & 0x3F);\n                if (codepoint < 0x0800 || (codepoint >= 0xD800 && codepoint <= 0xDFFF)) {\n                    continue;\n                }\n                target[size++] = codepoint;\n            }\n            else if ((byte1 & 0xF8) === 0xF0) {\n                if (i >= length) {\n                    this.interim[0] = byte1;\n                    return size;\n                }\n                byte2 = input[i++];\n                if ((byte2 & 0xC0) !== 0x80) {\n                    i--;\n                    continue;\n                }\n                if (i >= length) {\n                    this.interim[0] = byte1;\n                    this.interim[1] = byte2;\n                    return size;\n                }\n                byte3 = input[i++];\n                if ((byte3 & 0xC0) !== 0x80) {\n                    i--;\n                    continue;\n                }\n                if (i >= length) {\n                    this.interim[0] = byte1;\n                    this.interim[1] = byte2;\n                    this.interim[2] = byte3;\n                    return size;\n                }\n                byte4 = input[i++];\n                if ((byte4 & 0xC0) !== 0x80) {\n                    i--;\n                    continue;\n                }\n                codepoint = (byte1 & 0x07) << 18 | (byte2 & 0x3F) << 12 | (byte3 & 0x3F) << 6 | (byte4 & 0x3F);\n                if (codepoint < 0x010000 || codepoint > 0x10FFFF) {\n                    continue;\n                }\n                target[size++] = codepoint;\n            }\n            else {\n            }\n        }\n        return size;\n    };\n    return Utf8ToUtf32;\n}());\nexports.Utf8ToUtf32 = Utf8ToUtf32;\n\n},{}],35:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EscapeSequences_1 = require(\"../common/data/EscapeSequences\");\nvar AltClickHandler = (function () {\n    function AltClickHandler(_mouseEvent, _terminal) {\n        var _a;\n        this._mouseEvent = _mouseEvent;\n        this._terminal = _terminal;\n        this._lines = this._terminal.buffer.lines;\n        this._startCol = this._terminal.buffer.x;\n        this._startRow = this._terminal.buffer.y;\n        var coordinates = this._terminal.mouseHelper.getCoords(this._mouseEvent, this._terminal.element, this._terminal.charMeasure, this._terminal.cols, this._terminal.rows, false);\n        if (coordinates) {\n            _a = coordinates.map(function (coordinate) {\n                return coordinate - 1;\n            }), this._endCol = _a[0], this._endRow = _a[1];\n        }\n    }\n    AltClickHandler.prototype.move = function () {\n        if (this._mouseEvent.altKey && this._endCol !== undefined && this._endRow !== undefined) {\n            this._terminal.handler(this._arrowSequences());\n        }\n    };\n    AltClickHandler.prototype._arrowSequences = function () {\n        if (!this._terminal.buffer.hasScrollback) {\n            return this._resetStartingRow() + this._moveToRequestedRow() + this._moveToRequestedCol();\n        }\n        return this._moveHorizontallyOnly();\n    };\n    AltClickHandler.prototype._resetStartingRow = function () {\n        if (this._moveToRequestedRow().length === 0) {\n            return '';\n        }\n        return repeat(this._bufferLine(this._startCol, this._startRow, this._startCol, this._startRow - this._wrappedRowsForRow(this._startRow), false).length, this._sequence(\"D\"));\n    };\n    AltClickHandler.prototype._moveToRequestedRow = function () {\n        var startRow = this._startRow - this._wrappedRowsForRow(this._startRow);\n        var endRow = this._endRow - this._wrappedRowsForRow(this._endRow);\n        var rowsToMove = Math.abs(startRow - endRow) - this._wrappedRowsCount();\n        return repeat(rowsToMove, this._sequence(this._verticalDirection()));\n    };\n    AltClickHandler.prototype._moveToRequestedCol = function () {\n        var startRow;\n        if (this._moveToRequestedRow().length > 0) {\n            startRow = this._endRow - this._wrappedRowsForRow(this._endRow);\n        }\n        else {\n            startRow = this._startRow;\n        }\n        var endRow = this._endRow;\n        var direction = this._horizontalDirection();\n        return repeat(this._bufferLine(this._startCol, startRow, this._endCol, endRow, direction === \"C\").length, this._sequence(direction));\n    };\n    AltClickHandler.prototype._moveHorizontallyOnly = function () {\n        var direction = this._horizontalDirection();\n        return repeat(Math.abs(this._startCol - this._endCol), this._sequence(direction));\n    };\n    AltClickHandler.prototype._wrappedRowsCount = function () {\n        var wrappedRows = 0;\n        var startRow = this._startRow - this._wrappedRowsForRow(this._startRow);\n        var endRow = this._endRow - this._wrappedRowsForRow(this._endRow);\n        for (var i = 0; i < Math.abs(startRow - endRow); i++) {\n            var direction = this._verticalDirection() === \"A\" ? -1 : 1;\n            if (this._lines.get(startRow + (direction * i)).isWrapped) {\n                wrappedRows++;\n            }\n        }\n        return wrappedRows;\n    };\n    AltClickHandler.prototype._wrappedRowsForRow = function (currentRow) {\n        var rowCount = 0;\n        var lineWraps = this._lines.get(currentRow).isWrapped;\n        while (lineWraps && currentRow >= 0 && currentRow < this._terminal.rows) {\n            rowCount++;\n            currentRow--;\n            lineWraps = this._lines.get(currentRow).isWrapped;\n        }\n        return rowCount;\n    };\n    AltClickHandler.prototype._horizontalDirection = function () {\n        var startRow;\n        if (this._moveToRequestedRow().length > 0) {\n            startRow = this._endRow - this._wrappedRowsForRow(this._endRow);\n        }\n        else {\n            startRow = this._startRow;\n        }\n        if ((this._startCol < this._endCol &&\n            startRow <= this._endRow) ||\n            (this._startCol >= this._endCol &&\n                startRow < this._endRow)) {\n            return \"C\";\n        }\n        return \"D\";\n    };\n    AltClickHandler.prototype._verticalDirection = function () {\n        if (this._startRow > this._endRow) {\n            return \"A\";\n        }\n        return \"B\";\n    };\n    AltClickHandler.prototype._bufferLine = function (startCol, startRow, endCol, endRow, forward) {\n        var currentCol = startCol;\n        var currentRow = startRow;\n        var bufferStr = '';\n        while (currentCol !== endCol || currentRow !== endRow) {\n            currentCol += forward ? 1 : -1;\n            if (forward && currentCol > this._terminal.cols - 1) {\n                bufferStr += this._terminal.buffer.translateBufferLineToString(currentRow, false, startCol, currentCol);\n                currentCol = 0;\n                startCol = 0;\n                currentRow++;\n            }\n            else if (!forward && currentCol < 0) {\n                bufferStr += this._terminal.buffer.translateBufferLineToString(currentRow, false, 0, startCol + 1);\n                currentCol = this._terminal.cols - 1;\n                startCol = currentCol;\n                currentRow--;\n            }\n        }\n        return bufferStr + this._terminal.buffer.translateBufferLineToString(currentRow, false, startCol, currentCol);\n    };\n    AltClickHandler.prototype._sequence = function (direction) {\n        var mod = this._terminal.applicationCursor ? 'O' : '[';\n        return EscapeSequences_1.C0.ESC + mod + direction;\n    };\n    return AltClickHandler;\n}());\nexports.AltClickHandler = AltClickHandler;\nfunction repeat(count, str) {\n    count = Math.floor(count);\n    var rpt = '';\n    for (var i = 0; i < count; i++) {\n        rpt += str;\n    }\n    return rpt;\n}\n\n},{\"../common/data/EscapeSequences\":28}],36:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AddonManager = (function () {\n    function AddonManager() {\n        this._addons = [];\n    }\n    AddonManager.prototype.dispose = function () {\n        for (var i = this._addons.length - 1; i >= 0; i--) {\n            this._addons[i].instance.dispose();\n        }\n    };\n    AddonManager.prototype.loadAddon = function (terminal, instance) {\n        var _this = this;\n        var loadedAddon = {\n            instance: instance,\n            dispose: instance.dispose,\n            isDisposed: false\n        };\n        this._addons.push(loadedAddon);\n        instance.dispose = function () { return _this._wrappedAddonDispose(loadedAddon); };\n        instance.activate(terminal);\n    };\n    AddonManager.prototype._wrappedAddonDispose = function (loadedAddon) {\n        if (loadedAddon.isDisposed) {\n            return;\n        }\n        var index = -1;\n        for (var i = 0; i < this._addons.length; i++) {\n            if (this._addons[i] === loadedAddon) {\n                index = i;\n                break;\n            }\n        }\n        if (index === -1) {\n            throw new Error('Could not dispose an addon that has not been loaded');\n        }\n        loadedAddon.isDisposed = true;\n        loadedAddon.dispose.apply(loadedAddon.instance);\n        this._addons.splice(index, 1);\n    };\n    return AddonManager;\n}());\nexports.AddonManager = AddonManager;\n\n},{}],37:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Terminal_1 = require(\"../Terminal\");\nvar Strings = require(\"../Strings\");\nvar AddonManager_1 = require(\"./AddonManager\");\nvar Terminal = (function () {\n    function Terminal(options) {\n        this._core = new Terminal_1.Terminal(options);\n        this._addonManager = new AddonManager_1.AddonManager();\n    }\n    Object.defineProperty(Terminal.prototype, \"onCursorMove\", {\n        get: function () { return this._core.onCursorMove; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onLineFeed\", {\n        get: function () { return this._core.onLineFeed; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onSelectionChange\", {\n        get: function () { return this._core.onSelectionChange; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onData\", {\n        get: function () { return this._core.onData; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onTitleChange\", {\n        get: function () { return this._core.onTitleChange; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onScroll\", {\n        get: function () { return this._core.onScroll; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onKey\", {\n        get: function () { return this._core.onKey; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onRender\", {\n        get: function () { return this._core.onRender; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"onResize\", {\n        get: function () { return this._core.onResize; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"element\", {\n        get: function () { return this._core.element; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"textarea\", {\n        get: function () { return this._core.textarea; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"rows\", {\n        get: function () { return this._core.rows; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"cols\", {\n        get: function () { return this._core.cols; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"buffer\", {\n        get: function () { return new BufferApiView(this._core.buffer); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Terminal.prototype, \"markers\", {\n        get: function () { return this._core.markers; },\n        enumerable: true,\n        configurable: true\n    });\n    Terminal.prototype.blur = function () {\n        this._core.blur();\n    };\n    Terminal.prototype.focus = function () {\n        this._core.focus();\n    };\n    Terminal.prototype.on = function (type, listener) {\n        this._core.on(type, listener);\n    };\n    Terminal.prototype.off = function (type, listener) {\n        this._core.off(type, listener);\n    };\n    Terminal.prototype.emit = function (type, data) {\n        this._core.emit(type, data);\n    };\n    Terminal.prototype.addDisposableListener = function (type, handler) {\n        return this._core.addDisposableListener(type, handler);\n    };\n    Terminal.prototype.resize = function (columns, rows) {\n        this._core.resize(columns, rows);\n    };\n    Terminal.prototype.writeln = function (data) {\n        this._core.writeln(data);\n    };\n    Terminal.prototype.open = function (parent) {\n        this._core.open(parent);\n    };\n    Terminal.prototype.attachCustomKeyEventHandler = function (customKeyEventHandler) {\n        this._core.attachCustomKeyEventHandler(customKeyEventHandler);\n    };\n    Terminal.prototype.addCsiHandler = function (flag, callback) {\n        return this._core.addCsiHandler(flag, callback);\n    };\n    Terminal.prototype.addOscHandler = function (ident, callback) {\n        return this._core.addOscHandler(ident, callback);\n    };\n    Terminal.prototype.registerLinkMatcher = function (regex, handler, options) {\n        return this._core.registerLinkMatcher(regex, handler, options);\n    };\n    Terminal.prototype.deregisterLinkMatcher = function (matcherId) {\n        this._core.deregisterLinkMatcher(matcherId);\n    };\n    Terminal.prototype.registerCharacterJoiner = function (handler) {\n        return this._core.registerCharacterJoiner(handler);\n    };\n    Terminal.prototype.deregisterCharacterJoiner = function (joinerId) {\n        this._core.deregisterCharacterJoiner(joinerId);\n    };\n    Terminal.prototype.addMarker = function (cursorYOffset) {\n        return this._core.addMarker(cursorYOffset);\n    };\n    Terminal.prototype.hasSelection = function () {\n        return this._core.hasSelection();\n    };\n    Terminal.prototype.select = function (column, row, length) {\n        this._core.select(column, row, length);\n    };\n    Terminal.prototype.getSelection = function () {\n        return this._core.getSelection();\n    };\n    Terminal.prototype.getSelectionPosition = function () {\n        return this._core.getSelectionPosition();\n    };\n    Terminal.prototype.clearSelection = function () {\n        this._core.clearSelection();\n    };\n    Terminal.prototype.selectAll = function () {\n        this._core.selectAll();\n    };\n    Terminal.prototype.selectLines = function (start, end) {\n        this._core.selectLines(start, end);\n    };\n    Terminal.prototype.dispose = function () {\n        this._addonManager.dispose();\n        this._core.dispose();\n    };\n    Terminal.prototype.destroy = function () {\n        this._core.destroy();\n    };\n    Terminal.prototype.scrollLines = function (amount) {\n        this._core.scrollLines(amount);\n    };\n    Terminal.prototype.scrollPages = function (pageCount) {\n        this._core.scrollPages(pageCount);\n    };\n    Terminal.prototype.scrollToTop = function () {\n        this._core.scrollToTop();\n    };\n    Terminal.prototype.scrollToBottom = function () {\n        this._core.scrollToBottom();\n    };\n    Terminal.prototype.scrollToLine = function (line) {\n        this._core.scrollToLine(line);\n    };\n    Terminal.prototype.clear = function () {\n        this._core.clear();\n    };\n    Terminal.prototype.write = function (data) {\n        this._core.write(data);\n    };\n    Terminal.prototype.writeUtf8 = function (data) {\n        this._core.writeUtf8(data);\n    };\n    Terminal.prototype.getOption = function (key) {\n        return this._core.getOption(key);\n    };\n    Terminal.prototype.setOption = function (key, value) {\n        this._core.setOption(key, value);\n    };\n    Terminal.prototype.refresh = function (start, end) {\n        this._core.refresh(start, end);\n    };\n    Terminal.prototype.reset = function () {\n        this._core.reset();\n    };\n    Terminal.applyAddon = function (addon) {\n        addon.apply(Terminal);\n    };\n    Terminal.prototype.loadAddon = function (addon) {\n        return this._addonManager.loadAddon(this, addon);\n    };\n    Object.defineProperty(Terminal, \"strings\", {\n        get: function () {\n            return Strings;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return Terminal;\n}());\nexports.Terminal = Terminal;\nvar BufferApiView = (function () {\n    function BufferApiView(_buffer) {\n        this._buffer = _buffer;\n    }\n    Object.defineProperty(BufferApiView.prototype, \"cursorY\", {\n        get: function () { return this._buffer.y; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferApiView.prototype, \"cursorX\", {\n        get: function () { return this._buffer.x; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferApiView.prototype, \"viewportY\", {\n        get: function () { return this._buffer.ydisp; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferApiView.prototype, \"baseY\", {\n        get: function () { return this._buffer.ybase; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferApiView.prototype, \"length\", {\n        get: function () { return this._buffer.lines.length; },\n        enumerable: true,\n        configurable: true\n    });\n    BufferApiView.prototype.getLine = function (y) {\n        var line = this._buffer.lines.get(y);\n        if (!line) {\n            return undefined;\n        }\n        return new BufferLineApiView(line);\n    };\n    return BufferApiView;\n}());\nvar BufferLineApiView = (function () {\n    function BufferLineApiView(_line) {\n        this._line = _line;\n    }\n    Object.defineProperty(BufferLineApiView.prototype, \"isWrapped\", {\n        get: function () { return this._line.isWrapped; },\n        enumerable: true,\n        configurable: true\n    });\n    BufferLineApiView.prototype.getCell = function (x) {\n        if (x < 0 || x >= this._line.length) {\n            return undefined;\n        }\n        return new BufferCellApiView(this._line, x);\n    };\n    BufferLineApiView.prototype.translateToString = function (trimRight, startColumn, endColumn) {\n        return this._line.translateToString(trimRight, startColumn, endColumn);\n    };\n    return BufferLineApiView;\n}());\nvar BufferCellApiView = (function () {\n    function BufferCellApiView(_line, _x) {\n        this._line = _line;\n        this._x = _x;\n    }\n    Object.defineProperty(BufferCellApiView.prototype, \"char\", {\n        get: function () { return this._line.getString(this._x); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(BufferCellApiView.prototype, \"width\", {\n        get: function () { return this._line.getWidth(this._x); },\n        enumerable: true,\n        configurable: true\n    });\n    return BufferCellApiView;\n}());\n\n},{\"../Strings\":16,\"../Terminal\":17,\"./AddonManager\":36}],38:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Types_1 = require(\"../common/Types\");\nvar Types_2 = require(\"./atlas/Types\");\nvar CharAtlasCache_1 = require(\"./atlas/CharAtlasCache\");\nvar BufferLine_1 = require(\"../core/buffer/BufferLine\");\nvar BaseRenderLayer = (function () {\n    function BaseRenderLayer(_container, id, zIndex, _alpha, _colors) {\n        this._container = _container;\n        this._alpha = _alpha;\n        this._colors = _colors;\n        this._scaledCharWidth = 0;\n        this._scaledCharHeight = 0;\n        this._scaledCellWidth = 0;\n        this._scaledCellHeight = 0;\n        this._scaledCharLeft = 0;\n        this._scaledCharTop = 0;\n        this._currentGlyphIdentifier = {\n            chars: '',\n            code: 0,\n            bg: 0,\n            fg: 0,\n            bold: false,\n            dim: false,\n            italic: false\n        };\n        this._canvas = document.createElement('canvas');\n        this._canvas.classList.add(\"xterm-\" + id + \"-layer\");\n        this._canvas.style.zIndex = zIndex.toString();\n        this._initCanvas();\n        this._container.appendChild(this._canvas);\n    }\n    BaseRenderLayer.prototype.dispose = function () {\n        this._container.removeChild(this._canvas);\n        if (this._charAtlas) {\n            this._charAtlas.dispose();\n        }\n    };\n    BaseRenderLayer.prototype._initCanvas = function () {\n        this._ctx = this._canvas.getContext('2d', { alpha: this._alpha });\n        if (!this._alpha) {\n            this.clearAll();\n        }\n    };\n    BaseRenderLayer.prototype.onOptionsChanged = function (terminal) { };\n    BaseRenderLayer.prototype.onBlur = function (terminal) { };\n    BaseRenderLayer.prototype.onFocus = function (terminal) { };\n    BaseRenderLayer.prototype.onCursorMove = function (terminal) { };\n    BaseRenderLayer.prototype.onGridChanged = function (terminal, startRow, endRow) { };\n    BaseRenderLayer.prototype.onSelectionChanged = function (terminal, start, end, columnSelectMode) {\n        if (columnSelectMode === void 0) { columnSelectMode = false; }\n    };\n    BaseRenderLayer.prototype.setColors = function (terminal, colorSet) {\n        this._refreshCharAtlas(terminal, colorSet);\n    };\n    BaseRenderLayer.prototype.setTransparency = function (terminal, alpha) {\n        if (alpha === this._alpha) {\n            return;\n        }\n        var oldCanvas = this._canvas;\n        this._alpha = alpha;\n        this._canvas = this._canvas.cloneNode();\n        this._initCanvas();\n        this._container.replaceChild(this._canvas, oldCanvas);\n        this._refreshCharAtlas(terminal, this._colors);\n        this.onGridChanged(terminal, 0, terminal.rows - 1);\n    };\n    BaseRenderLayer.prototype._refreshCharAtlas = function (terminal, colorSet) {\n        if (this._scaledCharWidth <= 0 && this._scaledCharHeight <= 0) {\n            return;\n        }\n        this._charAtlas = CharAtlasCache_1.acquireCharAtlas(terminal, colorSet, this._scaledCharWidth, this._scaledCharHeight);\n        this._charAtlas.warmUp();\n    };\n    BaseRenderLayer.prototype.resize = function (terminal, dim) {\n        this._scaledCellWidth = dim.scaledCellWidth;\n        this._scaledCellHeight = dim.scaledCellHeight;\n        this._scaledCharWidth = dim.scaledCharWidth;\n        this._scaledCharHeight = dim.scaledCharHeight;\n        this._scaledCharLeft = dim.scaledCharLeft;\n        this._scaledCharTop = dim.scaledCharTop;\n        this._canvas.width = dim.scaledCanvasWidth;\n        this._canvas.height = dim.scaledCanvasHeight;\n        this._canvas.style.width = dim.canvasWidth + \"px\";\n        this._canvas.style.height = dim.canvasHeight + \"px\";\n        if (!this._alpha) {\n            this.clearAll();\n        }\n        this._refreshCharAtlas(terminal, this._colors);\n    };\n    BaseRenderLayer.prototype.fillCells = function (x, y, width, height) {\n        this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight);\n    };\n    BaseRenderLayer.prototype.fillBottomLineAtCells = function (x, y, width) {\n        if (width === void 0) { width = 1; }\n        this._ctx.fillRect(x * this._scaledCellWidth, (y + 1) * this._scaledCellHeight - window.devicePixelRatio - 1, width * this._scaledCellWidth, window.devicePixelRatio);\n    };\n    BaseRenderLayer.prototype.fillLeftLineAtCell = function (x, y) {\n        this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, window.devicePixelRatio, this._scaledCellHeight);\n    };\n    BaseRenderLayer.prototype.strokeRectAtCell = function (x, y, width, height) {\n        this._ctx.lineWidth = window.devicePixelRatio;\n        this._ctx.strokeRect(x * this._scaledCellWidth + window.devicePixelRatio / 2, y * this._scaledCellHeight + (window.devicePixelRatio / 2), width * this._scaledCellWidth - window.devicePixelRatio, (height * this._scaledCellHeight) - window.devicePixelRatio);\n    };\n    BaseRenderLayer.prototype.clearAll = function () {\n        if (this._alpha) {\n            this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n        }\n        else {\n            this._ctx.fillStyle = this._colors.background.css;\n            this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height);\n        }\n    };\n    BaseRenderLayer.prototype.clearCells = function (x, y, width, height) {\n        if (this._alpha) {\n            this._ctx.clearRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight);\n        }\n        else {\n            this._ctx.fillStyle = this._colors.background.css;\n            this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight);\n        }\n    };\n    BaseRenderLayer.prototype.fillCharTrueColor = function (terminal, cell, x, y) {\n        this._ctx.font = this._getFont(terminal, false, false);\n        this._ctx.textBaseline = 'middle';\n        this._clipRow(terminal, y);\n        this._ctx.fillText(cell.getChars(), x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop + this._scaledCharHeight / 2);\n    };\n    BaseRenderLayer.prototype.drawChars = function (terminal, cell, x, y) {\n        if (cell.isFgRGB() || cell.isBgRGB()) {\n            this._drawUncachedChars(terminal, cell, x, y);\n            return;\n        }\n        var fg;\n        var bg;\n        if (cell.isInverse()) {\n            fg = (cell.isBgDefault()) ? Types_2.INVERTED_DEFAULT_COLOR : cell.getBgColor();\n            bg = (cell.isFgDefault()) ? Types_2.INVERTED_DEFAULT_COLOR : cell.getFgColor();\n        }\n        else {\n            bg = (cell.isBgDefault()) ? Types_1.DEFAULT_COLOR : cell.getBgColor();\n            fg = (cell.isFgDefault()) ? Types_1.DEFAULT_COLOR : cell.getFgColor();\n        }\n        var drawInBrightColor = terminal.options.drawBoldTextInBrightColors && cell.isBold() && fg < 8 && fg !== Types_2.INVERTED_DEFAULT_COLOR;\n        fg += drawInBrightColor ? 8 : 0;\n        this._currentGlyphIdentifier.chars = cell.getChars() || BufferLine_1.WHITESPACE_CELL_CHAR;\n        this._currentGlyphIdentifier.code = cell.getCode() || BufferLine_1.WHITESPACE_CELL_CODE;\n        this._currentGlyphIdentifier.bg = bg;\n        this._currentGlyphIdentifier.fg = fg;\n        this._currentGlyphIdentifier.bold = cell.isBold() && terminal.options.enableBold;\n        this._currentGlyphIdentifier.dim = !!cell.isDim();\n        this._currentGlyphIdentifier.italic = !!cell.isItalic();\n        var atlasDidDraw = this._charAtlas && this._charAtlas.draw(this._ctx, this._currentGlyphIdentifier, x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop);\n        if (!atlasDidDraw) {\n            this._drawUncachedChars(terminal, cell, x, y);\n        }\n    };\n    BaseRenderLayer.prototype._drawUncachedChars = function (terminal, cell, x, y) {\n        this._ctx.save();\n        this._ctx.font = this._getFont(terminal, cell.isBold() && terminal.options.enableBold, !!cell.isItalic());\n        this._ctx.textBaseline = 'middle';\n        if (cell.isInverse()) {\n            if (cell.isBgDefault()) {\n                this._ctx.fillStyle = this._colors.background.css;\n            }\n            else if (cell.isBgRGB()) {\n                this._ctx.fillStyle = \"rgb(\" + BufferLine_1.AttributeData.toColorRGB(cell.getBgColor()).join(',') + \")\";\n            }\n            else {\n                this._ctx.fillStyle = this._colors.ansi[cell.getBgColor()].css;\n            }\n        }\n        else {\n            if (cell.isFgDefault()) {\n                this._ctx.fillStyle = this._colors.foreground.css;\n            }\n            else if (cell.isFgRGB()) {\n                this._ctx.fillStyle = \"rgb(\" + BufferLine_1.AttributeData.toColorRGB(cell.getFgColor()).join(',') + \")\";\n            }\n            else {\n                var fg = cell.getFgColor();\n                if (terminal.options.drawBoldTextInBrightColors && cell.isBold() && fg < 8) {\n                    fg += 8;\n                }\n                this._ctx.fillStyle = this._colors.ansi[fg].css;\n            }\n        }\n        this._clipRow(terminal, y);\n        if (cell.isDim()) {\n            this._ctx.globalAlpha = Types_2.DIM_OPACITY;\n        }\n        this._ctx.fillText(cell.getChars(), x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop + this._scaledCharHeight / 2);\n        this._ctx.restore();\n    };\n    BaseRenderLayer.prototype._clipRow = function (terminal, y) {\n        this._ctx.beginPath();\n        this._ctx.rect(0, y * this._scaledCellHeight, terminal.cols * this._scaledCellWidth, this._scaledCellHeight);\n        this._ctx.clip();\n    };\n    BaseRenderLayer.prototype._getFont = function (terminal, isBold, isItalic) {\n        var fontWeight = isBold ? terminal.options.fontWeightBold : terminal.options.fontWeight;\n        var fontStyle = isItalic ? 'italic' : '';\n        return fontStyle + \" \" + fontWeight + \" \" + terminal.options.fontSize * window.devicePixelRatio + \"px \" + terminal.options.fontFamily;\n    };\n    return BaseRenderLayer;\n}());\nexports.BaseRenderLayer = BaseRenderLayer;\n\n},{\"../common/Types\":27,\"../core/buffer/BufferLine\":29,\"./atlas/CharAtlasCache\":48,\"./atlas/Types\":55}],39:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BufferLine_1 = require(\"../core/buffer/BufferLine\");\nvar JoinedCellData = (function (_super) {\n    __extends(JoinedCellData, _super);\n    function JoinedCellData(firstCell, chars, width) {\n        var _this = _super.call(this) || this;\n        _this.content = 0;\n        _this.combinedData = '';\n        _this.fg = firstCell.fg;\n        _this.bg = firstCell.bg;\n        _this.combinedData = chars;\n        _this._width = width;\n        return _this;\n    }\n    JoinedCellData.prototype.isCombined = function () {\n        return 2097152;\n    };\n    JoinedCellData.prototype.getWidth = function () {\n        return this._width;\n    };\n    JoinedCellData.prototype.getChars = function () {\n        return this.combinedData;\n    };\n    JoinedCellData.prototype.getCode = function () {\n        return 0x1FFFFF;\n    };\n    JoinedCellData.prototype.setFromCharData = function (value) {\n        throw new Error('not implemented');\n    };\n    JoinedCellData.prototype.getAsCharData = function () {\n        return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n    };\n    return JoinedCellData;\n}(BufferLine_1.AttributeData));\nexports.JoinedCellData = JoinedCellData;\nvar CharacterJoinerRegistry = (function () {\n    function CharacterJoinerRegistry(_terminal) {\n        this._terminal = _terminal;\n        this._characterJoiners = [];\n        this._nextCharacterJoinerId = 0;\n        this._workCell = new BufferLine_1.CellData();\n    }\n    CharacterJoinerRegistry.prototype.registerCharacterJoiner = function (handler) {\n        var joiner = {\n            id: this._nextCharacterJoinerId++,\n            handler: handler\n        };\n        this._characterJoiners.push(joiner);\n        return joiner.id;\n    };\n    CharacterJoinerRegistry.prototype.deregisterCharacterJoiner = function (joinerId) {\n        for (var i = 0; i < this._characterJoiners.length; i++) {\n            if (this._characterJoiners[i].id === joinerId) {\n                this._characterJoiners.splice(i, 1);\n                return true;\n            }\n        }\n        return false;\n    };\n    CharacterJoinerRegistry.prototype.getJoinedCharacters = function (row) {\n        if (this._characterJoiners.length === 0) {\n            return [];\n        }\n        var line = this._terminal.buffer.lines.get(row);\n        if (line.length === 0) {\n            return [];\n        }\n        var ranges = [];\n        var lineStr = line.translateToString(true);\n        var rangeStartColumn = 0;\n        var currentStringIndex = 0;\n        var rangeStartStringIndex = 0;\n        var rangeAttrFG = line.getFg(0);\n        var rangeAttrBG = line.getBg(0);\n        for (var x = 0; x < line.getTrimmedLength(); x++) {\n            line.loadCell(x, this._workCell);\n            if (this._workCell.getWidth() === 0) {\n                continue;\n            }\n            if (this._workCell.fg !== rangeAttrFG || this._workCell.bg !== rangeAttrBG) {\n                if (x - rangeStartColumn > 1) {\n                    var joinedRanges = this._getJoinedRanges(lineStr, rangeStartStringIndex, currentStringIndex, line, rangeStartColumn);\n                    for (var i = 0; i < joinedRanges.length; i++) {\n                        ranges.push(joinedRanges[i]);\n                    }\n                }\n                rangeStartColumn = x;\n                rangeStartStringIndex = currentStringIndex;\n                rangeAttrFG = this._workCell.fg;\n                rangeAttrBG = this._workCell.bg;\n            }\n            currentStringIndex += this._workCell.getChars().length || BufferLine_1.WHITESPACE_CELL_CHAR.length;\n        }\n        if (this._terminal.cols - rangeStartColumn > 1) {\n            var joinedRanges = this._getJoinedRanges(lineStr, rangeStartStringIndex, currentStringIndex, line, rangeStartColumn);\n            for (var i = 0; i < joinedRanges.length; i++) {\n                ranges.push(joinedRanges[i]);\n            }\n        }\n        return ranges;\n    };\n    CharacterJoinerRegistry.prototype._getJoinedRanges = function (line, startIndex, endIndex, lineData, startCol) {\n        var text = line.substring(startIndex, endIndex);\n        var joinedRanges = this._characterJoiners[0].handler(text);\n        for (var i = 1; i < this._characterJoiners.length; i++) {\n            var joinerRanges = this._characterJoiners[i].handler(text);\n            for (var j = 0; j < joinerRanges.length; j++) {\n                CharacterJoinerRegistry._mergeRanges(joinedRanges, joinerRanges[j]);\n            }\n        }\n        this._stringRangesToCellRanges(joinedRanges, lineData, startCol);\n        return joinedRanges;\n    };\n    CharacterJoinerRegistry.prototype._stringRangesToCellRanges = function (ranges, line, startCol) {\n        var currentRangeIndex = 0;\n        var currentRangeStarted = false;\n        var currentStringIndex = 0;\n        var currentRange = ranges[currentRangeIndex];\n        if (!currentRange) {\n            return;\n        }\n        for (var x = startCol; x < this._terminal.cols; x++) {\n            var width = line.getWidth(x);\n            var length_1 = line.getString(x).length || BufferLine_1.WHITESPACE_CELL_CHAR.length;\n            if (width === 0) {\n                continue;\n            }\n            if (!currentRangeStarted && currentRange[0] <= currentStringIndex) {\n                currentRange[0] = x;\n                currentRangeStarted = true;\n            }\n            if (currentRange[1] <= currentStringIndex) {\n                currentRange[1] = x;\n                currentRange = ranges[++currentRangeIndex];\n                if (!currentRange) {\n                    break;\n                }\n                if (currentRange[0] <= currentStringIndex) {\n                    currentRange[0] = x;\n                    currentRangeStarted = true;\n                }\n                else {\n                    currentRangeStarted = false;\n                }\n            }\n            currentStringIndex += length_1;\n        }\n        if (currentRange) {\n            currentRange[1] = this._terminal.cols;\n        }\n    };\n    CharacterJoinerRegistry._mergeRanges = function (ranges, newRange) {\n        var inRange = false;\n        for (var i = 0; i < ranges.length; i++) {\n            var range = ranges[i];\n            if (!inRange) {\n                if (newRange[1] <= range[0]) {\n                    ranges.splice(i, 0, newRange);\n                    return ranges;\n                }\n                if (newRange[1] <= range[1]) {\n                    range[0] = Math.min(newRange[0], range[0]);\n                    return ranges;\n                }\n                if (newRange[0] < range[1]) {\n                    range[0] = Math.min(newRange[0], range[0]);\n                    inRange = true;\n                }\n                continue;\n            }\n            else {\n                if (newRange[1] <= range[0]) {\n                    ranges[i - 1][1] = newRange[1];\n                    return ranges;\n                }\n                if (newRange[1] <= range[1]) {\n                    ranges[i - 1][1] = Math.max(newRange[1], range[1]);\n                    ranges.splice(i, 1);\n                    inRange = false;\n                    return ranges;\n                }\n                ranges.splice(i, 1);\n                i--;\n            }\n        }\n        if (inRange) {\n            ranges[ranges.length - 1][1] = newRange[1];\n        }\n        else {\n            ranges.push(newRange);\n        }\n        return ranges;\n    };\n    return CharacterJoinerRegistry;\n}());\nexports.CharacterJoinerRegistry = CharacterJoinerRegistry;\n\n},{\"../core/buffer/BufferLine\":29}],40:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseRenderLayer_1 = require(\"./BaseRenderLayer\");\nvar BufferLine_1 = require(\"../core/buffer/BufferLine\");\nvar BLINK_INTERVAL = 600;\nvar CursorRenderLayer = (function (_super) {\n    __extends(CursorRenderLayer, _super);\n    function CursorRenderLayer(container, zIndex, colors) {\n        var _this = _super.call(this, container, 'cursor', zIndex, true, colors) || this;\n        _this._cell = new BufferLine_1.CellData();\n        _this._state = {\n            x: null,\n            y: null,\n            isFocused: null,\n            style: null,\n            width: null\n        };\n        _this._cursorRenderers = {\n            'bar': _this._renderBarCursor.bind(_this),\n            'block': _this._renderBlockCursor.bind(_this),\n            'underline': _this._renderUnderlineCursor.bind(_this)\n        };\n        return _this;\n    }\n    CursorRenderLayer.prototype.resize = function (terminal, dim) {\n        _super.prototype.resize.call(this, terminal, dim);\n        this._state = {\n            x: null,\n            y: null,\n            isFocused: null,\n            style: null,\n            width: null\n        };\n    };\n    CursorRenderLayer.prototype.reset = function (terminal) {\n        this._clearCursor();\n        if (this._cursorBlinkStateManager) {\n            this._cursorBlinkStateManager.dispose();\n            this._cursorBlinkStateManager = null;\n            this.onOptionsChanged(terminal);\n        }\n    };\n    CursorRenderLayer.prototype.onBlur = function (terminal) {\n        if (this._cursorBlinkStateManager) {\n            this._cursorBlinkStateManager.pause();\n        }\n        terminal.refresh(terminal.buffer.y, terminal.buffer.y);\n    };\n    CursorRenderLayer.prototype.onFocus = function (terminal) {\n        if (this._cursorBlinkStateManager) {\n            this._cursorBlinkStateManager.resume(terminal);\n        }\n        else {\n            terminal.refresh(terminal.buffer.y, terminal.buffer.y);\n        }\n    };\n    CursorRenderLayer.prototype.onOptionsChanged = function (terminal) {\n        var _this = this;\n        if (terminal.options.cursorBlink) {\n            if (!this._cursorBlinkStateManager) {\n                this._cursorBlinkStateManager = new CursorBlinkStateManager(terminal, function () {\n                    _this._render(terminal, true);\n                });\n            }\n        }\n        else {\n            if (this._cursorBlinkStateManager) {\n                this._cursorBlinkStateManager.dispose();\n                this._cursorBlinkStateManager = null;\n            }\n            terminal.refresh(terminal.buffer.y, terminal.buffer.y);\n        }\n    };\n    CursorRenderLayer.prototype.onCursorMove = function (terminal) {\n        if (this._cursorBlinkStateManager) {\n            this._cursorBlinkStateManager.restartBlinkAnimation(terminal);\n        }\n    };\n    CursorRenderLayer.prototype.onGridChanged = function (terminal, startRow, endRow) {\n        if (!this._cursorBlinkStateManager || this._cursorBlinkStateManager.isPaused) {\n            this._render(terminal, false);\n        }\n        else {\n            this._cursorBlinkStateManager.restartBlinkAnimation(terminal);\n        }\n    };\n    CursorRenderLayer.prototype._render = function (terminal, triggeredByAnimationFrame) {\n        if (!terminal.cursorState || terminal.cursorHidden) {\n            this._clearCursor();\n            return;\n        }\n        var cursorY = terminal.buffer.ybase + terminal.buffer.y;\n        var viewportRelativeCursorY = cursorY - terminal.buffer.ydisp;\n        if (viewportRelativeCursorY < 0 || viewportRelativeCursorY >= terminal.rows) {\n            this._clearCursor();\n            return;\n        }\n        terminal.buffer.lines.get(cursorY).loadCell(terminal.buffer.x, this._cell);\n        if (this._cell.content === undefined) {\n            return;\n        }\n        if (!terminal.isFocused) {\n            this._clearCursor();\n            this._ctx.save();\n            this._ctx.fillStyle = this._colors.cursor.css;\n            this._renderBlurCursor(terminal, terminal.buffer.x, viewportRelativeCursorY, this._cell);\n            this._ctx.restore();\n            this._state.x = terminal.buffer.x;\n            this._state.y = viewportRelativeCursorY;\n            this._state.isFocused = false;\n            this._state.style = terminal.options.cursorStyle;\n            this._state.width = this._cell.getWidth();\n            return;\n        }\n        if (this._cursorBlinkStateManager && !this._cursorBlinkStateManager.isCursorVisible) {\n            this._clearCursor();\n            return;\n        }\n        if (this._state) {\n            if (this._state.x === terminal.buffer.x &&\n                this._state.y === viewportRelativeCursorY &&\n                this._state.isFocused === terminal.isFocused &&\n                this._state.style === terminal.options.cursorStyle &&\n                this._state.width === this._cell.getWidth()) {\n                return;\n            }\n            this._clearCursor();\n        }\n        this._ctx.save();\n        this._cursorRenderers[terminal.options.cursorStyle || 'block'](terminal, terminal.buffer.x, viewportRelativeCursorY, this._cell);\n        this._ctx.restore();\n        this._state.x = terminal.buffer.x;\n        this._state.y = viewportRelativeCursorY;\n        this._state.isFocused = false;\n        this._state.style = terminal.options.cursorStyle;\n        this._state.width = this._cell.getWidth();\n    };\n    CursorRenderLayer.prototype._clearCursor = function () {\n        if (this._state) {\n            this.clearCells(this._state.x, this._state.y, this._state.width, 1);\n            this._state = {\n                x: null,\n                y: null,\n                isFocused: null,\n                style: null,\n                width: null\n            };\n        }\n    };\n    CursorRenderLayer.prototype._renderBarCursor = function (terminal, x, y, cell) {\n        this._ctx.save();\n        this._ctx.fillStyle = this._colors.cursor.css;\n        this.fillLeftLineAtCell(x, y);\n        this._ctx.restore();\n    };\n    CursorRenderLayer.prototype._renderBlockCursor = function (terminal, x, y, cell) {\n        this._ctx.save();\n        this._ctx.fillStyle = this._colors.cursor.css;\n        this.fillCells(x, y, cell.getWidth(), 1);\n        this._ctx.fillStyle = this._colors.cursorAccent.css;\n        this.fillCharTrueColor(terminal, cell, x, y);\n        this._ctx.restore();\n    };\n    CursorRenderLayer.prototype._renderUnderlineCursor = function (terminal, x, y, cell) {\n        this._ctx.save();\n        this._ctx.fillStyle = this._colors.cursor.css;\n        this.fillBottomLineAtCells(x, y);\n        this._ctx.restore();\n    };\n    CursorRenderLayer.prototype._renderBlurCursor = function (terminal, x, y, cell) {\n        this._ctx.save();\n        this._ctx.strokeStyle = this._colors.cursor.css;\n        this.strokeRectAtCell(x, y, cell.getWidth(), 1);\n        this._ctx.restore();\n    };\n    return CursorRenderLayer;\n}(BaseRenderLayer_1.BaseRenderLayer));\nexports.CursorRenderLayer = CursorRenderLayer;\nvar CursorBlinkStateManager = (function () {\n    function CursorBlinkStateManager(terminal, _renderCallback) {\n        this._renderCallback = _renderCallback;\n        this.isCursorVisible = true;\n        if (terminal.isFocused) {\n            this._restartInterval();\n        }\n    }\n    Object.defineProperty(CursorBlinkStateManager.prototype, \"isPaused\", {\n        get: function () { return !(this._blinkStartTimeout || this._blinkInterval); },\n        enumerable: true,\n        configurable: true\n    });\n    CursorBlinkStateManager.prototype.dispose = function () {\n        if (this._blinkInterval) {\n            window.clearInterval(this._blinkInterval);\n            this._blinkInterval = null;\n        }\n        if (this._blinkStartTimeout) {\n            window.clearTimeout(this._blinkStartTimeout);\n            this._blinkStartTimeout = null;\n        }\n        if (this._animationFrame) {\n            window.cancelAnimationFrame(this._animationFrame);\n            this._animationFrame = null;\n        }\n    };\n    CursorBlinkStateManager.prototype.restartBlinkAnimation = function (terminal) {\n        var _this = this;\n        if (this.isPaused) {\n            return;\n        }\n        this._animationTimeRestarted = Date.now();\n        this.isCursorVisible = true;\n        if (!this._animationFrame) {\n            this._animationFrame = window.requestAnimationFrame(function () {\n                _this._renderCallback();\n                _this._animationFrame = null;\n            });\n        }\n    };\n    CursorBlinkStateManager.prototype._restartInterval = function (timeToStart) {\n        var _this = this;\n        if (timeToStart === void 0) { timeToStart = BLINK_INTERVAL; }\n        if (this._blinkInterval) {\n            window.clearInterval(this._blinkInterval);\n        }\n        this._blinkStartTimeout = setTimeout(function () {\n            if (_this._animationTimeRestarted) {\n                var time = BLINK_INTERVAL - (Date.now() - _this._animationTimeRestarted);\n                _this._animationTimeRestarted = null;\n                if (time > 0) {\n                    _this._restartInterval(time);\n                    return;\n                }\n            }\n            _this.isCursorVisible = false;\n            _this._animationFrame = window.requestAnimationFrame(function () {\n                _this._renderCallback();\n                _this._animationFrame = null;\n            });\n            _this._blinkInterval = setInterval(function () {\n                if (_this._animationTimeRestarted) {\n                    var time = BLINK_INTERVAL - (Date.now() - _this._animationTimeRestarted);\n                    _this._animationTimeRestarted = null;\n                    _this._restartInterval(time);\n                    return;\n                }\n                _this.isCursorVisible = !_this.isCursorVisible;\n                _this._animationFrame = window.requestAnimationFrame(function () {\n                    _this._renderCallback();\n                    _this._animationFrame = null;\n                });\n            }, BLINK_INTERVAL);\n        }, timeToStart);\n    };\n    CursorBlinkStateManager.prototype.pause = function () {\n        this.isCursorVisible = true;\n        if (this._blinkInterval) {\n            window.clearInterval(this._blinkInterval);\n            this._blinkInterval = null;\n        }\n        if (this._blinkStartTimeout) {\n            window.clearTimeout(this._blinkStartTimeout);\n            this._blinkStartTimeout = null;\n        }\n        if (this._animationFrame) {\n            window.cancelAnimationFrame(this._animationFrame);\n            this._animationFrame = null;\n        }\n    };\n    CursorBlinkStateManager.prototype.resume = function (terminal) {\n        this._animationTimeRestarted = null;\n        this._restartInterval();\n        this.restartBlinkAnimation(terminal);\n    };\n    return CursorBlinkStateManager;\n}());\n\n},{\"../core/buffer/BufferLine\":29,\"./BaseRenderLayer\":38}],41:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GridCache = (function () {\n    function GridCache() {\n        this.cache = [];\n    }\n    GridCache.prototype.resize = function (width, height) {\n        for (var x = 0; x < width; x++) {\n            if (this.cache.length <= x) {\n                this.cache.push([]);\n            }\n            for (var y = this.cache[x].length; y < height; y++) {\n                this.cache[x].push(null);\n            }\n            this.cache[x].length = height;\n        }\n        this.cache.length = width;\n    };\n    GridCache.prototype.clear = function () {\n        for (var x = 0; x < this.cache.length; x++) {\n            for (var y = 0; y < this.cache[x].length; y++) {\n                this.cache[x][y] = null;\n            }\n        }\n    };\n    return GridCache;\n}());\nexports.GridCache = GridCache;\n\n},{}],42:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseRenderLayer_1 = require(\"./BaseRenderLayer\");\nvar Types_1 = require(\"./atlas/Types\");\nvar CharAtlasUtils_1 = require(\"./atlas/CharAtlasUtils\");\nvar LinkRenderLayer = (function (_super) {\n    __extends(LinkRenderLayer, _super);\n    function LinkRenderLayer(container, zIndex, colors, terminal) {\n        var _this = _super.call(this, container, 'link', zIndex, true, colors) || this;\n        _this._state = null;\n        terminal.linkifier.onLinkHover(function (e) { return _this._onLinkHover(e); });\n        terminal.linkifier.onLinkLeave(function (e) { return _this._onLinkLeave(e); });\n        return _this;\n    }\n    LinkRenderLayer.prototype.resize = function (terminal, dim) {\n        _super.prototype.resize.call(this, terminal, dim);\n        this._state = null;\n    };\n    LinkRenderLayer.prototype.reset = function (terminal) {\n        this._clearCurrentLink();\n    };\n    LinkRenderLayer.prototype._clearCurrentLink = function () {\n        if (this._state) {\n            this.clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1);\n            var middleRowCount = this._state.y2 - this._state.y1 - 1;\n            if (middleRowCount > 0) {\n                this.clearCells(0, this._state.y1 + 1, this._state.cols, middleRowCount);\n            }\n            this.clearCells(0, this._state.y2, this._state.x2, 1);\n            this._state = null;\n        }\n    };\n    LinkRenderLayer.prototype._onLinkHover = function (e) {\n        if (e.fg === Types_1.INVERTED_DEFAULT_COLOR) {\n            this._ctx.fillStyle = this._colors.background.css;\n        }\n        else if (CharAtlasUtils_1.is256Color(e.fg)) {\n            this._ctx.fillStyle = this._colors.ansi[e.fg].css;\n        }\n        else {\n            this._ctx.fillStyle = this._colors.foreground.css;\n        }\n        if (e.y1 === e.y2) {\n            this.fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1);\n        }\n        else {\n            this.fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1);\n            for (var y = e.y1 + 1; y < e.y2; y++) {\n                this.fillBottomLineAtCells(0, y, e.cols);\n            }\n            this.fillBottomLineAtCells(0, e.y2, e.x2);\n        }\n        this._state = e;\n    };\n    LinkRenderLayer.prototype._onLinkLeave = function (e) {\n        this._clearCurrentLink();\n    };\n    return LinkRenderLayer;\n}(BaseRenderLayer_1.BaseRenderLayer));\nexports.LinkRenderLayer = LinkRenderLayer;\n\n},{\"./BaseRenderLayer\":38,\"./atlas/CharAtlasUtils\":50,\"./atlas/Types\":55}],43:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RenderDebouncer_1 = require(\"../ui/RenderDebouncer\");\nvar EventEmitter2_1 = require(\"../common/EventEmitter2\");\nvar Lifecycle_1 = require(\"../common/Lifecycle\");\nvar ScreenDprMonitor_1 = require(\"../ui/ScreenDprMonitor\");\nvar Lifecycle_2 = require(\"../ui/Lifecycle\");\nvar RenderCoordinator = (function (_super) {\n    __extends(RenderCoordinator, _super);\n    function RenderCoordinator(_renderer, _rowCount, screenElement) {\n        var _this = _super.call(this) || this;\n        _this._renderer = _renderer;\n        _this._rowCount = _rowCount;\n        _this._isPaused = false;\n        _this._needsFullRefresh = false;\n        _this._canvasWidth = 0;\n        _this._canvasHeight = 0;\n        _this._onDimensionsChange = new EventEmitter2_1.EventEmitter2();\n        _this._onRender = new EventEmitter2_1.EventEmitter2();\n        _this._onRefreshRequest = new EventEmitter2_1.EventEmitter2();\n        _this._renderDebouncer = new RenderDebouncer_1.RenderDebouncer(function (start, end) { return _this._renderRows(start, end); });\n        _this.register(_this._renderDebouncer);\n        _this._screenDprMonitor = new ScreenDprMonitor_1.ScreenDprMonitor();\n        _this._screenDprMonitor.setListener(function () { return _this._renderer.onDevicePixelRatioChange(); });\n        _this.register(_this._screenDprMonitor);\n        _this.register(Lifecycle_2.addDisposableDomListener(window, 'resize', function () { return _this._renderer.onDevicePixelRatioChange(); }));\n        if ('IntersectionObserver' in window) {\n            var observer_1 = new IntersectionObserver(function (e) { return _this._onIntersectionChange(e[e.length - 1]); }, { threshold: 0 });\n            observer_1.observe(screenElement);\n            _this.register({ dispose: function () { return observer_1.disconnect(); } });\n        }\n        return _this;\n    }\n    Object.defineProperty(RenderCoordinator.prototype, \"onDimensionsChange\", {\n        get: function () { return this._onDimensionsChange.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(RenderCoordinator.prototype, \"onRender\", {\n        get: function () { return this._onRender.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(RenderCoordinator.prototype, \"onRefreshRequest\", {\n        get: function () { return this._onRefreshRequest.event; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(RenderCoordinator.prototype, \"dimensions\", {\n        get: function () { return this._renderer.dimensions; },\n        enumerable: true,\n        configurable: true\n    });\n    RenderCoordinator.prototype._onIntersectionChange = function (entry) {\n        this._isPaused = entry.intersectionRatio === 0;\n        if (!this._isPaused && this._needsFullRefresh) {\n            this.refreshRows(0, this._rowCount - 1);\n            this._needsFullRefresh = false;\n        }\n    };\n    RenderCoordinator.prototype.refreshRows = function (start, end) {\n        if (this._isPaused) {\n            this._needsFullRefresh = true;\n            return;\n        }\n        this._renderDebouncer.refresh(start, end, this._rowCount);\n    };\n    RenderCoordinator.prototype._renderRows = function (start, end) {\n        this._renderer.renderRows(start, end);\n        this._onRender.fire({ start: start, end: end });\n    };\n    RenderCoordinator.prototype.resize = function (cols, rows) {\n        this._rowCount = rows;\n        this._fireOnCanvasResize();\n    };\n    RenderCoordinator.prototype.changeOptions = function () {\n        this._renderer.onOptionsChanged();\n        this._fireOnCanvasResize();\n    };\n    RenderCoordinator.prototype._fireOnCanvasResize = function () {\n        if (this._renderer.dimensions.canvasWidth === this._canvasWidth && this._renderer.dimensions.canvasHeight === this._canvasHeight) {\n            return;\n        }\n        this._onDimensionsChange.fire(this._renderer.dimensions);\n    };\n    RenderCoordinator.prototype.setRenderer = function (renderer) {\n        this._renderer.dispose();\n        this._renderer = renderer;\n    };\n    RenderCoordinator.prototype._fullRefresh = function () {\n        if (this._isPaused) {\n            this._needsFullRefresh = true;\n        }\n        else {\n            this.refreshRows(0, this._rowCount);\n        }\n    };\n    RenderCoordinator.prototype.setColors = function (colors) {\n        this._renderer.setColors(colors);\n        this._fullRefresh();\n    };\n    RenderCoordinator.prototype.onDevicePixelRatioChange = function () {\n        this._renderer.onDevicePixelRatioChange();\n    };\n    RenderCoordinator.prototype.onResize = function (cols, rows) {\n        this._renderer.onResize(cols, rows);\n        this._fullRefresh();\n    };\n    RenderCoordinator.prototype.onCharSizeChanged = function () {\n        this._renderer.onCharSizeChanged();\n    };\n    RenderCoordinator.prototype.onBlur = function () {\n        this._renderer.onBlur();\n    };\n    RenderCoordinator.prototype.onFocus = function () {\n        this._renderer.onFocus();\n    };\n    RenderCoordinator.prototype.onSelectionChanged = function (start, end, columnSelectMode) {\n        this._renderer.onSelectionChanged(start, end, columnSelectMode);\n    };\n    RenderCoordinator.prototype.onCursorMove = function () {\n        this._renderer.onCursorMove();\n    };\n    RenderCoordinator.prototype.onOptionsChanged = function () {\n        this._renderer.onOptionsChanged();\n    };\n    RenderCoordinator.prototype.clear = function () {\n        this._renderer.clear();\n    };\n    RenderCoordinator.prototype.registerCharacterJoiner = function (handler) {\n        return this._renderer.registerCharacterJoiner(handler);\n    };\n    RenderCoordinator.prototype.deregisterCharacterJoiner = function (joinerId) {\n        return this._renderer.deregisterCharacterJoiner(joinerId);\n    };\n    return RenderCoordinator;\n}(Lifecycle_1.Disposable));\nexports.RenderCoordinator = RenderCoordinator;\n\n},{\"../common/EventEmitter2\":23,\"../common/Lifecycle\":24,\"../ui/Lifecycle\":59,\"../ui/RenderDebouncer\":60,\"../ui/ScreenDprMonitor\":61}],44:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TextRenderLayer_1 = require(\"./TextRenderLayer\");\nvar SelectionRenderLayer_1 = require(\"./SelectionRenderLayer\");\nvar CursorRenderLayer_1 = require(\"./CursorRenderLayer\");\nvar LinkRenderLayer_1 = require(\"./LinkRenderLayer\");\nvar CharacterJoinerRegistry_1 = require(\"../renderer/CharacterJoinerRegistry\");\nvar Lifecycle_1 = require(\"../common/Lifecycle\");\nvar Renderer = (function (_super) {\n    __extends(Renderer, _super);\n    function Renderer(_terminal, _colors) {\n        var _this = _super.call(this) || this;\n        _this._terminal = _terminal;\n        _this._colors = _colors;\n        var allowTransparency = _this._terminal.options.allowTransparency;\n        _this._characterJoinerRegistry = new CharacterJoinerRegistry_1.CharacterJoinerRegistry(_terminal);\n        _this._renderLayers = [\n            new TextRenderLayer_1.TextRenderLayer(_this._terminal.screenElement, 0, _this._colors, _this._characterJoinerRegistry, allowTransparency),\n            new SelectionRenderLayer_1.SelectionRenderLayer(_this._terminal.screenElement, 1, _this._colors),\n            new LinkRenderLayer_1.LinkRenderLayer(_this._terminal.screenElement, 2, _this._colors, _this._terminal),\n            new CursorRenderLayer_1.CursorRenderLayer(_this._terminal.screenElement, 3, _this._colors)\n        ];\n        _this.dimensions = {\n            scaledCharWidth: null,\n            scaledCharHeight: null,\n            scaledCellWidth: null,\n            scaledCellHeight: null,\n            scaledCharLeft: null,\n            scaledCharTop: null,\n            scaledCanvasWidth: null,\n            scaledCanvasHeight: null,\n            canvasWidth: null,\n            canvasHeight: null,\n            actualCellWidth: null,\n            actualCellHeight: null\n        };\n        _this._devicePixelRatio = window.devicePixelRatio;\n        _this._updateDimensions();\n        _this.onOptionsChanged();\n        return _this;\n    }\n    Renderer.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        this._renderLayers.forEach(function (l) { return l.dispose(); });\n    };\n    Renderer.prototype.onDevicePixelRatioChange = function () {\n        if (this._devicePixelRatio !== window.devicePixelRatio) {\n            this._devicePixelRatio = window.devicePixelRatio;\n            this.onResize(this._terminal.cols, this._terminal.rows);\n        }\n    };\n    Renderer.prototype.setColors = function (colors) {\n        var _this = this;\n        this._colors = colors;\n        this._renderLayers.forEach(function (l) {\n            l.setColors(_this._terminal, _this._colors);\n            l.reset(_this._terminal);\n        });\n    };\n    Renderer.prototype.onResize = function (cols, rows) {\n        var _this = this;\n        this._updateDimensions();\n        this._renderLayers.forEach(function (l) { return l.resize(_this._terminal, _this.dimensions); });\n        this._terminal.screenElement.style.width = this.dimensions.canvasWidth + \"px\";\n        this._terminal.screenElement.style.height = this.dimensions.canvasHeight + \"px\";\n    };\n    Renderer.prototype.onCharSizeChanged = function () {\n        this.onResize(this._terminal.cols, this._terminal.rows);\n    };\n    Renderer.prototype.onBlur = function () {\n        var _this = this;\n        this._runOperation(function (l) { return l.onBlur(_this._terminal); });\n    };\n    Renderer.prototype.onFocus = function () {\n        var _this = this;\n        this._runOperation(function (l) { return l.onFocus(_this._terminal); });\n    };\n    Renderer.prototype.onSelectionChanged = function (start, end, columnSelectMode) {\n        var _this = this;\n        if (columnSelectMode === void 0) { columnSelectMode = false; }\n        this._runOperation(function (l) { return l.onSelectionChanged(_this._terminal, start, end, columnSelectMode); });\n    };\n    Renderer.prototype.onCursorMove = function () {\n        var _this = this;\n        this._runOperation(function (l) { return l.onCursorMove(_this._terminal); });\n    };\n    Renderer.prototype.onOptionsChanged = function () {\n        var _this = this;\n        this._runOperation(function (l) { return l.onOptionsChanged(_this._terminal); });\n    };\n    Renderer.prototype.clear = function () {\n        var _this = this;\n        this._runOperation(function (l) { return l.reset(_this._terminal); });\n    };\n    Renderer.prototype._runOperation = function (operation) {\n        this._renderLayers.forEach(function (l) { return operation(l); });\n    };\n    Renderer.prototype.renderRows = function (start, end) {\n        var _this = this;\n        this._renderLayers.forEach(function (l) { return l.onGridChanged(_this._terminal, start, end); });\n    };\n    Renderer.prototype._updateDimensions = function () {\n        if (!this._terminal.charMeasure.width || !this._terminal.charMeasure.height) {\n            return;\n        }\n        this.dimensions.scaledCharWidth = Math.floor(this._terminal.charMeasure.width * window.devicePixelRatio);\n        this.dimensions.scaledCharHeight = Math.ceil(this._terminal.charMeasure.height * window.devicePixelRatio);\n        this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._terminal.options.lineHeight);\n        this.dimensions.scaledCharTop = this._terminal.options.lineHeight === 1 ? 0 : Math.round((this.dimensions.scaledCellHeight - this.dimensions.scaledCharHeight) / 2);\n        this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._terminal.options.letterSpacing);\n        this.dimensions.scaledCharLeft = Math.floor(this._terminal.options.letterSpacing / 2);\n        this.dimensions.scaledCanvasHeight = this._terminal.rows * this.dimensions.scaledCellHeight;\n        this.dimensions.scaledCanvasWidth = this._terminal.cols * this.dimensions.scaledCellWidth;\n        this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio);\n        this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio);\n        this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._terminal.rows;\n        this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._terminal.cols;\n    };\n    Renderer.prototype.registerCharacterJoiner = function (handler) {\n        return this._characterJoinerRegistry.registerCharacterJoiner(handler);\n    };\n    Renderer.prototype.deregisterCharacterJoiner = function (joinerId) {\n        return this._characterJoinerRegistry.deregisterCharacterJoiner(joinerId);\n    };\n    return Renderer;\n}(Lifecycle_1.Disposable));\nexports.Renderer = Renderer;\n\n},{\"../common/Lifecycle\":24,\"../renderer/CharacterJoinerRegistry\":39,\"./CursorRenderLayer\":40,\"./LinkRenderLayer\":42,\"./SelectionRenderLayer\":45,\"./TextRenderLayer\":46}],45:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseRenderLayer_1 = require(\"./BaseRenderLayer\");\nvar SelectionRenderLayer = (function (_super) {\n    __extends(SelectionRenderLayer, _super);\n    function SelectionRenderLayer(container, zIndex, colors) {\n        var _this = _super.call(this, container, 'selection', zIndex, true, colors) || this;\n        _this._clearState();\n        return _this;\n    }\n    SelectionRenderLayer.prototype._clearState = function () {\n        this._state = {\n            start: null,\n            end: null,\n            columnSelectMode: null,\n            ydisp: null\n        };\n    };\n    SelectionRenderLayer.prototype.resize = function (terminal, dim) {\n        _super.prototype.resize.call(this, terminal, dim);\n        this._clearState();\n    };\n    SelectionRenderLayer.prototype.reset = function (terminal) {\n        if (this._state.start && this._state.end) {\n            this._clearState();\n            this.clearAll();\n        }\n    };\n    SelectionRenderLayer.prototype.onSelectionChanged = function (terminal, start, end, columnSelectMode) {\n        if (!this._didStateChange(start, end, columnSelectMode, terminal.buffer.ydisp)) {\n            return;\n        }\n        this.clearAll();\n        if (!start || !end) {\n            this._clearState();\n            return;\n        }\n        var viewportStartRow = start[1] - terminal.buffer.ydisp;\n        var viewportEndRow = end[1] - terminal.buffer.ydisp;\n        var viewportCappedStartRow = Math.max(viewportStartRow, 0);\n        var viewportCappedEndRow = Math.min(viewportEndRow, terminal.rows - 1);\n        if (viewportCappedStartRow >= terminal.rows || viewportCappedEndRow < 0) {\n            return;\n        }\n        this._ctx.fillStyle = this._colors.selection.css;\n        if (columnSelectMode) {\n            var startCol = start[0];\n            var width = end[0] - startCol;\n            var height = viewportCappedEndRow - viewportCappedStartRow + 1;\n            this.fillCells(startCol, viewportCappedStartRow, width, height);\n        }\n        else {\n            var startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n            var startRowEndCol = viewportCappedStartRow === viewportCappedEndRow ? end[0] : terminal.cols;\n            this.fillCells(startCol, viewportCappedStartRow, startRowEndCol - startCol, 1);\n            var middleRowsCount = Math.max(viewportCappedEndRow - viewportCappedStartRow - 1, 0);\n            this.fillCells(0, viewportCappedStartRow + 1, terminal.cols, middleRowsCount);\n            if (viewportCappedStartRow !== viewportCappedEndRow) {\n                var endCol = viewportEndRow === viewportCappedEndRow ? end[0] : terminal.cols;\n                this.fillCells(0, viewportCappedEndRow, endCol, 1);\n            }\n        }\n        this._state.start = [start[0], start[1]];\n        this._state.end = [end[0], end[1]];\n        this._state.columnSelectMode = columnSelectMode;\n        this._state.ydisp = terminal.buffer.ydisp;\n    };\n    SelectionRenderLayer.prototype._didStateChange = function (start, end, columnSelectMode, ydisp) {\n        return !this._areCoordinatesEqual(start, this._state.start) ||\n            !this._areCoordinatesEqual(end, this._state.end) ||\n            columnSelectMode !== this._state.columnSelectMode ||\n            ydisp !== this._state.ydisp;\n    };\n    SelectionRenderLayer.prototype._areCoordinatesEqual = function (coord1, coord2) {\n        if (!coord1 || !coord2) {\n            return false;\n        }\n        return coord1[0] === coord2[0] && coord1[1] === coord2[1];\n    };\n    return SelectionRenderLayer;\n}(BaseRenderLayer_1.BaseRenderLayer));\nexports.SelectionRenderLayer = SelectionRenderLayer;\n\n},{\"./BaseRenderLayer\":38}],46:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar GridCache_1 = require(\"./GridCache\");\nvar BaseRenderLayer_1 = require(\"./BaseRenderLayer\");\nvar BufferLine_1 = require(\"../core/buffer/BufferLine\");\nvar CharacterJoinerRegistry_1 = require(\"./CharacterJoinerRegistry\");\nvar TextRenderLayer = (function (_super) {\n    __extends(TextRenderLayer, _super);\n    function TextRenderLayer(container, zIndex, colors, characterJoinerRegistry, alpha) {\n        var _this = _super.call(this, container, 'text', zIndex, alpha, colors) || this;\n        _this._characterOverlapCache = {};\n        _this._workCell = new BufferLine_1.CellData();\n        _this._state = new GridCache_1.GridCache();\n        _this._characterJoinerRegistry = characterJoinerRegistry;\n        return _this;\n    }\n    TextRenderLayer.prototype.resize = function (terminal, dim) {\n        _super.prototype.resize.call(this, terminal, dim);\n        var terminalFont = this._getFont(terminal, false, false);\n        if (this._characterWidth !== dim.scaledCharWidth || this._characterFont !== terminalFont) {\n            this._characterWidth = dim.scaledCharWidth;\n            this._characterFont = terminalFont;\n            this._characterOverlapCache = {};\n        }\n        this._state.clear();\n        this._state.resize(terminal.cols, terminal.rows);\n    };\n    TextRenderLayer.prototype.reset = function (terminal) {\n        this._state.clear();\n        this.clearAll();\n    };\n    TextRenderLayer.prototype._forEachCell = function (terminal, firstRow, lastRow, joinerRegistry, callback) {\n        for (var y = firstRow; y <= lastRow; y++) {\n            var row = y + terminal.buffer.ydisp;\n            var line = terminal.buffer.lines.get(row);\n            var joinedRanges = joinerRegistry ? joinerRegistry.getJoinedCharacters(row) : [];\n            for (var x = 0; x < terminal.cols; x++) {\n                line.loadCell(x, this._workCell);\n                var cell = this._workCell;\n                var isJoined = false;\n                var lastCharX = x;\n                if (cell.getWidth() === 0) {\n                    continue;\n                }\n                if (joinedRanges.length > 0 && x === joinedRanges[0][0]) {\n                    isJoined = true;\n                    var range = joinedRanges.shift();\n                    cell = new CharacterJoinerRegistry_1.JoinedCellData(this._workCell, line.translateToString(true, range[0], range[1]), range[1] - range[0]);\n                    lastCharX = range[1] - 1;\n                }\n                if (!isJoined && this._isOverlapping(cell)) {\n                    if (lastCharX < line.length - 1 && line.getCodePoint(lastCharX + 1) === BufferLine_1.NULL_CELL_CODE) {\n                        cell.content &= ~12582912;\n                        cell.content |= 2 << 22;\n                    }\n                }\n                callback(cell, x, y);\n                x = lastCharX;\n            }\n        }\n    };\n    TextRenderLayer.prototype._drawBackground = function (terminal, firstRow, lastRow) {\n        var _this = this;\n        var ctx = this._ctx;\n        var cols = terminal.cols;\n        var startX = 0;\n        var startY = 0;\n        var prevFillStyle = null;\n        ctx.save();\n        this._forEachCell(terminal, firstRow, lastRow, null, function (cell, x, y) {\n            var nextFillStyle = null;\n            if (cell.isInverse()) {\n                if (cell.isFgDefault()) {\n                    nextFillStyle = _this._colors.foreground.css;\n                }\n                else if (cell.isFgRGB()) {\n                    nextFillStyle = \"rgb(\" + BufferLine_1.AttributeData.toColorRGB(cell.getFgColor()).join(',') + \")\";\n                }\n                else {\n                    nextFillStyle = _this._colors.ansi[cell.getFgColor()].css;\n                }\n            }\n            else if (cell.isBgRGB()) {\n                nextFillStyle = \"rgb(\" + BufferLine_1.AttributeData.toColorRGB(cell.getBgColor()).join(',') + \")\";\n            }\n            else if (cell.isBgPalette()) {\n                nextFillStyle = _this._colors.ansi[cell.getBgColor()].css;\n            }\n            if (prevFillStyle === null) {\n                startX = x;\n                startY = y;\n            }\n            if (y !== startY) {\n                ctx.fillStyle = prevFillStyle;\n                _this.fillCells(startX, startY, cols - startX, 1);\n                startX = x;\n                startY = y;\n            }\n            else if (prevFillStyle !== nextFillStyle) {\n                ctx.fillStyle = prevFillStyle;\n                _this.fillCells(startX, startY, x - startX, 1);\n                startX = x;\n                startY = y;\n            }\n            prevFillStyle = nextFillStyle;\n        });\n        if (prevFillStyle !== null) {\n            ctx.fillStyle = prevFillStyle;\n            this.fillCells(startX, startY, cols - startX, 1);\n        }\n        ctx.restore();\n    };\n    TextRenderLayer.prototype._drawForeground = function (terminal, firstRow, lastRow) {\n        var _this = this;\n        this._forEachCell(terminal, firstRow, lastRow, this._characterJoinerRegistry, function (cell, x, y) {\n            if (cell.isInvisible()) {\n                return;\n            }\n            _this.drawChars(terminal, cell, x, y);\n            if (cell.isUnderline()) {\n                _this._ctx.save();\n                if (cell.isInverse()) {\n                    if (cell.isBgDefault()) {\n                        _this._ctx.fillStyle = _this._colors.background.css;\n                    }\n                    else if (cell.isBgRGB()) {\n                        _this._ctx.fillStyle = \"rgb(\" + BufferLine_1.AttributeData.toColorRGB(cell.getBgColor()).join(',') + \")\";\n                    }\n                    else {\n                        _this._ctx.fillStyle = _this._colors.ansi[cell.getBgColor()].css;\n                    }\n                }\n                else {\n                    if (cell.isFgDefault()) {\n                        _this._ctx.fillStyle = _this._colors.foreground.css;\n                    }\n                    else if (cell.isFgRGB()) {\n                        _this._ctx.fillStyle = \"rgb(\" + BufferLine_1.AttributeData.toColorRGB(cell.getFgColor()).join(',') + \")\";\n                    }\n                    else {\n                        var fg = cell.getFgColor();\n                        if (terminal.options.drawBoldTextInBrightColors && cell.isBold() && fg < 8) {\n                            fg += 8;\n                        }\n                        _this._ctx.fillStyle = _this._colors.ansi[fg].css;\n                    }\n                }\n                _this.fillBottomLineAtCells(x, y, cell.getWidth());\n                _this._ctx.restore();\n            }\n        });\n    };\n    TextRenderLayer.prototype.onGridChanged = function (terminal, firstRow, lastRow) {\n        if (this._state.cache.length === 0) {\n            return;\n        }\n        if (this._charAtlas) {\n            this._charAtlas.beginFrame();\n        }\n        this.clearCells(0, firstRow, terminal.cols, lastRow - firstRow + 1);\n        this._drawBackground(terminal, firstRow, lastRow);\n        this._drawForeground(terminal, firstRow, lastRow);\n    };\n    TextRenderLayer.prototype.onOptionsChanged = function (terminal) {\n        this.setTransparency(terminal, terminal.options.allowTransparency);\n    };\n    TextRenderLayer.prototype._isOverlapping = function (cell) {\n        if (cell.getWidth() !== 1) {\n            return false;\n        }\n        if (cell.getCode() < 256) {\n            return false;\n        }\n        var chars = cell.getChars();\n        if (this._characterOverlapCache.hasOwnProperty(chars)) {\n            return this._characterOverlapCache[chars];\n        }\n        this._ctx.save();\n        this._ctx.font = this._characterFont;\n        var overlaps = Math.floor(this._ctx.measureText(chars).width) > this._characterWidth;\n        this._ctx.restore();\n        this._characterOverlapCache[chars] = overlaps;\n        return overlaps;\n    };\n    return TextRenderLayer;\n}(BaseRenderLayer_1.BaseRenderLayer));\nexports.TextRenderLayer = TextRenderLayer;\n\n},{\"../core/buffer/BufferLine\":29,\"./BaseRenderLayer\":38,\"./CharacterJoinerRegistry\":39,\"./GridCache\":41}],47:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseCharAtlas = (function () {\n    function BaseCharAtlas() {\n        this._didWarmUp = false;\n    }\n    BaseCharAtlas.prototype.dispose = function () { };\n    BaseCharAtlas.prototype.warmUp = function () {\n        if (!this._didWarmUp) {\n            this._doWarmUp();\n            this._didWarmUp = true;\n        }\n    };\n    BaseCharAtlas.prototype._doWarmUp = function () { };\n    BaseCharAtlas.prototype.beginFrame = function () { };\n    return BaseCharAtlas;\n}());\nexports.default = BaseCharAtlas;\n\n},{}],48:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CharAtlasUtils_1 = require(\"./CharAtlasUtils\");\nvar DynamicCharAtlas_1 = require(\"./DynamicCharAtlas\");\nvar NoneCharAtlas_1 = require(\"./NoneCharAtlas\");\nvar StaticCharAtlas_1 = require(\"./StaticCharAtlas\");\nvar charAtlasImplementations = {\n    'none': NoneCharAtlas_1.default,\n    'static': StaticCharAtlas_1.default,\n    'dynamic': DynamicCharAtlas_1.default\n};\nvar charAtlasCache = [];\nfunction acquireCharAtlas(terminal, colors, scaledCharWidth, scaledCharHeight) {\n    var newConfig = CharAtlasUtils_1.generateConfig(scaledCharWidth, scaledCharHeight, terminal, colors);\n    for (var i = 0; i < charAtlasCache.length; i++) {\n        var entry = charAtlasCache[i];\n        var ownedByIndex = entry.ownedBy.indexOf(terminal);\n        if (ownedByIndex >= 0) {\n            if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) {\n                return entry.atlas;\n            }\n            if (entry.ownedBy.length === 1) {\n                entry.atlas.dispose();\n                charAtlasCache.splice(i, 1);\n            }\n            else {\n                entry.ownedBy.splice(ownedByIndex, 1);\n            }\n            break;\n        }\n    }\n    for (var i = 0; i < charAtlasCache.length; i++) {\n        var entry = charAtlasCache[i];\n        if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) {\n            entry.ownedBy.push(terminal);\n            return entry.atlas;\n        }\n    }\n    var newEntry = {\n        atlas: new charAtlasImplementations[terminal.options.experimentalCharAtlas](document, newConfig),\n        config: newConfig,\n        ownedBy: [terminal]\n    };\n    charAtlasCache.push(newEntry);\n    return newEntry.atlas;\n}\nexports.acquireCharAtlas = acquireCharAtlas;\nfunction removeTerminalFromCache(terminal) {\n    for (var i = 0; i < charAtlasCache.length; i++) {\n        var index = charAtlasCache[i].ownedBy.indexOf(terminal);\n        if (index !== -1) {\n            if (charAtlasCache[i].ownedBy.length === 1) {\n                charAtlasCache[i].atlas.dispose();\n                charAtlasCache.splice(i, 1);\n            }\n            else {\n                charAtlasCache[i].ownedBy.splice(index, 1);\n            }\n            break;\n        }\n    }\n}\nexports.removeTerminalFromCache = removeTerminalFromCache;\n\n},{\"./CharAtlasUtils\":50,\"./DynamicCharAtlas\":51,\"./NoneCharAtlas\":53,\"./StaticCharAtlas\":54}],49:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Platform_1 = require(\"../../common/Platform\");\nvar Types_1 = require(\"./Types\");\nfunction generateStaticCharAtlasTexture(context, canvasFactory, config) {\n    var cellWidth = config.scaledCharWidth + Types_1.CHAR_ATLAS_CELL_SPACING;\n    var cellHeight = config.scaledCharHeight + Types_1.CHAR_ATLAS_CELL_SPACING;\n    var canvas = canvasFactory(255 * cellWidth, (2 + 16 + 16) * cellHeight);\n    var ctx = canvas.getContext('2d', { alpha: config.allowTransparency });\n    ctx.fillStyle = config.colors.background.css;\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n    ctx.save();\n    ctx.fillStyle = config.colors.foreground.css;\n    ctx.font = getFont(config.fontWeight, config);\n    ctx.textBaseline = 'middle';\n    for (var i = 0; i < 256; i++) {\n        ctx.save();\n        ctx.beginPath();\n        ctx.rect(i * cellWidth, 0, cellWidth, cellHeight);\n        ctx.clip();\n        ctx.fillText(String.fromCharCode(i), i * cellWidth, cellHeight / 2);\n        ctx.restore();\n    }\n    ctx.save();\n    ctx.font = getFont(config.fontWeightBold, config);\n    for (var i = 0; i < 256; i++) {\n        ctx.save();\n        ctx.beginPath();\n        ctx.rect(i * cellWidth, cellHeight, cellWidth, cellHeight);\n        ctx.clip();\n        ctx.fillText(String.fromCharCode(i), i * cellWidth, cellHeight * 1.5);\n        ctx.restore();\n    }\n    ctx.restore();\n    ctx.font = getFont(config.fontWeight, config);\n    for (var colorIndex = 0; colorIndex < 16; colorIndex++) {\n        var y = (colorIndex + 2) * cellHeight;\n        for (var i = 0; i < 256; i++) {\n            ctx.save();\n            ctx.beginPath();\n            ctx.rect(i * cellWidth, y, cellWidth, cellHeight);\n            ctx.clip();\n            ctx.fillStyle = config.colors.ansi[colorIndex].css;\n            ctx.fillText(String.fromCharCode(i), i * cellWidth, y + cellHeight / 2);\n            ctx.restore();\n        }\n    }\n    ctx.font = getFont(config.fontWeightBold, config);\n    for (var colorIndex = 0; colorIndex < 16; colorIndex++) {\n        var y = (colorIndex + 2 + 16) * cellHeight;\n        for (var i = 0; i < 256; i++) {\n            ctx.save();\n            ctx.beginPath();\n            ctx.rect(i * cellWidth, y, cellWidth, cellHeight);\n            ctx.clip();\n            ctx.fillStyle = config.colors.ansi[colorIndex].css;\n            ctx.fillText(String.fromCharCode(i), i * cellWidth, y + cellHeight / 2);\n            ctx.restore();\n        }\n    }\n    ctx.restore();\n    if (!('createImageBitmap' in context) || Platform_1.isFirefox || Platform_1.isSafari) {\n        return canvas;\n    }\n    var charAtlasImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n    clearColor(charAtlasImageData, config.colors.background);\n    return context.createImageBitmap(charAtlasImageData);\n}\nexports.generateStaticCharAtlasTexture = generateStaticCharAtlasTexture;\nfunction clearColor(imageData, color) {\n    var isEmpty = true;\n    var r = color.rgba >>> 24;\n    var g = color.rgba >>> 16 & 0xFF;\n    var b = color.rgba >>> 8 & 0xFF;\n    for (var offset = 0; offset < imageData.data.length; offset += 4) {\n        if (imageData.data[offset] === r &&\n            imageData.data[offset + 1] === g &&\n            imageData.data[offset + 2] === b) {\n            imageData.data[offset + 3] = 0;\n        }\n        else {\n            isEmpty = false;\n        }\n    }\n    return isEmpty;\n}\nexports.clearColor = clearColor;\nfunction getFont(fontWeight, config) {\n    return fontWeight + \" \" + config.fontSize * config.devicePixelRatio + \"px \" + config.fontFamily;\n}\n\n},{\"../../common/Platform\":25,\"./Types\":55}],50:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Types_1 = require(\"../../common/Types\");\nfunction generateConfig(scaledCharWidth, scaledCharHeight, terminal, colors) {\n    var clonedColors = {\n        foreground: colors.foreground,\n        background: colors.background,\n        cursor: null,\n        cursorAccent: null,\n        selection: null,\n        ansi: colors.ansi.slice(0, 16)\n    };\n    return {\n        type: terminal.options.experimentalCharAtlas,\n        devicePixelRatio: window.devicePixelRatio,\n        scaledCharWidth: scaledCharWidth,\n        scaledCharHeight: scaledCharHeight,\n        fontFamily: terminal.options.fontFamily,\n        fontSize: terminal.options.fontSize,\n        fontWeight: terminal.options.fontWeight,\n        fontWeightBold: terminal.options.fontWeightBold,\n        allowTransparency: terminal.options.allowTransparency,\n        colors: clonedColors\n    };\n}\nexports.generateConfig = generateConfig;\nfunction configEquals(a, b) {\n    for (var i = 0; i < a.colors.ansi.length; i++) {\n        if (a.colors.ansi[i].rgba !== b.colors.ansi[i].rgba) {\n            return false;\n        }\n    }\n    return a.type === b.type &&\n        a.devicePixelRatio === b.devicePixelRatio &&\n        a.fontFamily === b.fontFamily &&\n        a.fontSize === b.fontSize &&\n        a.fontWeight === b.fontWeight &&\n        a.fontWeightBold === b.fontWeightBold &&\n        a.allowTransparency === b.allowTransparency &&\n        a.scaledCharWidth === b.scaledCharWidth &&\n        a.scaledCharHeight === b.scaledCharHeight &&\n        a.colors.foreground === b.colors.foreground &&\n        a.colors.background === b.colors.background;\n}\nexports.configEquals = configEquals;\nfunction is256Color(colorCode) {\n    return colorCode < Types_1.DEFAULT_COLOR;\n}\nexports.is256Color = is256Color;\n\n},{\"../../common/Types\":27}],51:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Types_1 = require(\"./Types\");\nvar BaseCharAtlas_1 = require(\"./BaseCharAtlas\");\nvar ColorManager_1 = require(\"../../ui/ColorManager\");\nvar CharAtlasGenerator_1 = require(\"./CharAtlasGenerator\");\nvar LRUMap_1 = require(\"./LRUMap\");\nvar Platform_1 = require(\"../../common/Platform\");\nvar TEXTURE_WIDTH = 1024;\nvar TEXTURE_HEIGHT = 1024;\nvar TRANSPARENT_COLOR = {\n    css: 'rgba(0, 0, 0, 0)',\n    rgba: 0\n};\nvar FRAME_CACHE_DRAW_LIMIT = 100;\nvar GLYPH_BITMAP_COMMIT_DELAY = 100;\nfunction getGlyphCacheKey(glyph) {\n    return glyph.code << 21 | glyph.bg << 12 | glyph.fg << 3 | (glyph.bold ? 0 : 4) + (glyph.dim ? 0 : 2) + (glyph.italic ? 0 : 1);\n}\nexports.getGlyphCacheKey = getGlyphCacheKey;\nvar DynamicCharAtlas = (function (_super) {\n    __extends(DynamicCharAtlas, _super);\n    function DynamicCharAtlas(document, _config) {\n        var _this = _super.call(this) || this;\n        _this._config = _config;\n        _this._drawToCacheCount = 0;\n        _this._glyphsWaitingOnBitmap = [];\n        _this._bitmapCommitTimeout = null;\n        _this._bitmap = null;\n        _this._cacheCanvas = document.createElement('canvas');\n        _this._cacheCanvas.width = TEXTURE_WIDTH;\n        _this._cacheCanvas.height = TEXTURE_HEIGHT;\n        _this._cacheCtx = _this._cacheCanvas.getContext('2d', { alpha: true });\n        var tmpCanvas = document.createElement('canvas');\n        tmpCanvas.width = _this._config.scaledCharWidth;\n        tmpCanvas.height = _this._config.scaledCharHeight;\n        _this._tmpCtx = tmpCanvas.getContext('2d', { alpha: _this._config.allowTransparency });\n        _this._width = Math.floor(TEXTURE_WIDTH / _this._config.scaledCharWidth);\n        _this._height = Math.floor(TEXTURE_HEIGHT / _this._config.scaledCharHeight);\n        var capacity = _this._width * _this._height;\n        _this._cacheMap = new LRUMap_1.default(capacity);\n        _this._cacheMap.prealloc(capacity);\n        return _this;\n    }\n    DynamicCharAtlas.prototype.dispose = function () {\n        if (this._bitmapCommitTimeout !== null) {\n            window.clearTimeout(this._bitmapCommitTimeout);\n            this._bitmapCommitTimeout = null;\n        }\n    };\n    DynamicCharAtlas.prototype.beginFrame = function () {\n        this._drawToCacheCount = 0;\n    };\n    DynamicCharAtlas.prototype.draw = function (ctx, glyph, x, y) {\n        if (glyph.code === 32) {\n            return true;\n        }\n        if (!this._canCache(glyph)) {\n            return false;\n        }\n        var glyphKey = getGlyphCacheKey(glyph);\n        var cacheValue = this._cacheMap.get(glyphKey);\n        if (cacheValue !== null && cacheValue !== undefined) {\n            this._drawFromCache(ctx, cacheValue, x, y);\n            return true;\n        }\n        else if (this._drawToCacheCount < FRAME_CACHE_DRAW_LIMIT) {\n            var index = void 0;\n            if (this._cacheMap.size < this._cacheMap.capacity) {\n                index = this._cacheMap.size;\n            }\n            else {\n                index = this._cacheMap.peek().index;\n            }\n            var cacheValue_1 = this._drawToCache(glyph, index);\n            this._cacheMap.set(glyphKey, cacheValue_1);\n            this._drawFromCache(ctx, cacheValue_1, x, y);\n            return true;\n        }\n        return false;\n    };\n    DynamicCharAtlas.prototype._canCache = function (glyph) {\n        return glyph.code < 256;\n    };\n    DynamicCharAtlas.prototype._toCoordinateX = function (index) {\n        return (index % this._width) * this._config.scaledCharWidth;\n    };\n    DynamicCharAtlas.prototype._toCoordinateY = function (index) {\n        return Math.floor(index / this._width) * this._config.scaledCharHeight;\n    };\n    DynamicCharAtlas.prototype._drawFromCache = function (ctx, cacheValue, x, y) {\n        if (cacheValue.isEmpty) {\n            return;\n        }\n        var cacheX = this._toCoordinateX(cacheValue.index);\n        var cacheY = this._toCoordinateY(cacheValue.index);\n        ctx.drawImage(cacheValue.inBitmap ? this._bitmap : this._cacheCanvas, cacheX, cacheY, this._config.scaledCharWidth, this._config.scaledCharHeight, x, y, this._config.scaledCharWidth, this._config.scaledCharHeight);\n    };\n    DynamicCharAtlas.prototype._getColorFromAnsiIndex = function (idx) {\n        if (idx < this._config.colors.ansi.length) {\n            return this._config.colors.ansi[idx];\n        }\n        return ColorManager_1.DEFAULT_ANSI_COLORS[idx];\n    };\n    DynamicCharAtlas.prototype._getBackgroundColor = function (glyph) {\n        if (this._config.allowTransparency) {\n            return TRANSPARENT_COLOR;\n        }\n        else if (glyph.bg === Types_1.INVERTED_DEFAULT_COLOR) {\n            return this._config.colors.foreground;\n        }\n        else if (glyph.bg < 256) {\n            return this._getColorFromAnsiIndex(glyph.bg);\n        }\n        return this._config.colors.background;\n    };\n    DynamicCharAtlas.prototype._getForegroundColor = function (glyph) {\n        if (glyph.fg === Types_1.INVERTED_DEFAULT_COLOR) {\n            return this._config.colors.background;\n        }\n        else if (glyph.fg < 256) {\n            return this._getColorFromAnsiIndex(glyph.fg);\n        }\n        return this._config.colors.foreground;\n    };\n    DynamicCharAtlas.prototype._drawToCache = function (glyph, index) {\n        this._drawToCacheCount++;\n        this._tmpCtx.save();\n        var backgroundColor = this._getBackgroundColor(glyph);\n        this._tmpCtx.globalCompositeOperation = 'copy';\n        this._tmpCtx.fillStyle = backgroundColor.css;\n        this._tmpCtx.fillRect(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n        this._tmpCtx.globalCompositeOperation = 'source-over';\n        var fontWeight = glyph.bold ? this._config.fontWeightBold : this._config.fontWeight;\n        var fontStyle = glyph.italic ? 'italic' : '';\n        this._tmpCtx.font =\n            fontStyle + \" \" + fontWeight + \" \" + this._config.fontSize * this._config.devicePixelRatio + \"px \" + this._config.fontFamily;\n        this._tmpCtx.textBaseline = 'middle';\n        this._tmpCtx.fillStyle = this._getForegroundColor(glyph).css;\n        if (glyph.dim) {\n            this._tmpCtx.globalAlpha = Types_1.DIM_OPACITY;\n        }\n        this._tmpCtx.fillText(glyph.chars, 0, this._config.scaledCharHeight / 2);\n        this._tmpCtx.restore();\n        var imageData = this._tmpCtx.getImageData(0, 0, this._config.scaledCharWidth, this._config.scaledCharHeight);\n        var isEmpty = false;\n        if (!this._config.allowTransparency) {\n            isEmpty = CharAtlasGenerator_1.clearColor(imageData, backgroundColor);\n        }\n        var x = this._toCoordinateX(index);\n        var y = this._toCoordinateY(index);\n        this._cacheCtx.putImageData(imageData, x, y);\n        var cacheValue = {\n            index: index,\n            isEmpty: isEmpty,\n            inBitmap: false\n        };\n        this._addGlyphToBitmap(cacheValue);\n        return cacheValue;\n    };\n    DynamicCharAtlas.prototype._addGlyphToBitmap = function (cacheValue) {\n        var _this = this;\n        if (!('createImageBitmap' in window) || Platform_1.isFirefox || Platform_1.isSafari) {\n            return;\n        }\n        this._glyphsWaitingOnBitmap.push(cacheValue);\n        if (this._bitmapCommitTimeout !== null) {\n            return;\n        }\n        this._bitmapCommitTimeout = window.setTimeout(function () { return _this._generateBitmap(); }, GLYPH_BITMAP_COMMIT_DELAY);\n    };\n    DynamicCharAtlas.prototype._generateBitmap = function () {\n        var _this = this;\n        var glyphsMovingToBitmap = this._glyphsWaitingOnBitmap;\n        this._glyphsWaitingOnBitmap = [];\n        window.createImageBitmap(this._cacheCanvas).then(function (bitmap) {\n            _this._bitmap = bitmap;\n            for (var i = 0; i < glyphsMovingToBitmap.length; i++) {\n                var value = glyphsMovingToBitmap[i];\n                value.inBitmap = true;\n            }\n        });\n        this._bitmapCommitTimeout = null;\n    };\n    return DynamicCharAtlas;\n}(BaseCharAtlas_1.default));\nexports.default = DynamicCharAtlas;\n\n},{\"../../common/Platform\":25,\"../../ui/ColorManager\":58,\"./BaseCharAtlas\":47,\"./CharAtlasGenerator\":49,\"./LRUMap\":52,\"./Types\":55}],52:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRUMap = (function () {\n    function LRUMap(capacity) {\n        this.capacity = capacity;\n        this._map = {};\n        this._head = null;\n        this._tail = null;\n        this._nodePool = [];\n        this.size = 0;\n    }\n    LRUMap.prototype._unlinkNode = function (node) {\n        var prev = node.prev;\n        var next = node.next;\n        if (node === this._head) {\n            this._head = next;\n        }\n        if (node === this._tail) {\n            this._tail = prev;\n        }\n        if (prev !== null) {\n            prev.next = next;\n        }\n        if (next !== null) {\n            next.prev = prev;\n        }\n    };\n    LRUMap.prototype._appendNode = function (node) {\n        var tail = this._tail;\n        if (tail !== null) {\n            tail.next = node;\n        }\n        node.prev = tail;\n        node.next = null;\n        this._tail = node;\n        if (this._head === null) {\n            this._head = node;\n        }\n    };\n    LRUMap.prototype.prealloc = function (count) {\n        var nodePool = this._nodePool;\n        for (var i = 0; i < count; i++) {\n            nodePool.push({\n                prev: null,\n                next: null,\n                key: null,\n                value: null\n            });\n        }\n    };\n    LRUMap.prototype.get = function (key) {\n        var node = this._map[key];\n        if (node !== undefined) {\n            this._unlinkNode(node);\n            this._appendNode(node);\n            return node.value;\n        }\n        return null;\n    };\n    LRUMap.prototype.peekValue = function (key) {\n        var node = this._map[key];\n        if (node !== undefined) {\n            return node.value;\n        }\n        return null;\n    };\n    LRUMap.prototype.peek = function () {\n        var head = this._head;\n        return head === null ? null : head.value;\n    };\n    LRUMap.prototype.set = function (key, value) {\n        var node = this._map[key];\n        if (node !== undefined) {\n            node = this._map[key];\n            this._unlinkNode(node);\n            node.value = value;\n        }\n        else if (this.size >= this.capacity) {\n            node = this._head;\n            this._unlinkNode(node);\n            delete this._map[node.key];\n            node.key = key;\n            node.value = value;\n            this._map[key] = node;\n        }\n        else {\n            var nodePool = this._nodePool;\n            if (nodePool.length > 0) {\n                node = nodePool.pop();\n                node.key = key;\n                node.value = value;\n            }\n            else {\n                node = {\n                    prev: null,\n                    next: null,\n                    key: key,\n                    value: value\n                };\n            }\n            this._map[key] = node;\n            this.size++;\n        }\n        this._appendNode(node);\n    };\n    return LRUMap;\n}());\nexports.default = LRUMap;\n\n},{}],53:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BaseCharAtlas_1 = require(\"./BaseCharAtlas\");\nvar NoneCharAtlas = (function (_super) {\n    __extends(NoneCharAtlas, _super);\n    function NoneCharAtlas(document, config) {\n        return _super.call(this) || this;\n    }\n    NoneCharAtlas.prototype.draw = function (ctx, glyph, x, y) {\n        return false;\n    };\n    return NoneCharAtlas;\n}(BaseCharAtlas_1.default));\nexports.default = NoneCharAtlas;\n\n},{\"./BaseCharAtlas\":47}],54:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Types_1 = require(\"./Types\");\nvar CharAtlasGenerator_1 = require(\"./CharAtlasGenerator\");\nvar BaseCharAtlas_1 = require(\"./BaseCharAtlas\");\nvar CharAtlasUtils_1 = require(\"./CharAtlasUtils\");\nvar Types_2 = require(\"../../common/Types\");\nvar StaticCharAtlas = (function (_super) {\n    __extends(StaticCharAtlas, _super);\n    function StaticCharAtlas(_document, _config) {\n        var _this = _super.call(this) || this;\n        _this._document = _document;\n        _this._config = _config;\n        _this._canvasFactory = function (width, height) {\n            var canvas = _this._document.createElement('canvas');\n            canvas.width = width;\n            canvas.height = height;\n            return canvas;\n        };\n        return _this;\n    }\n    StaticCharAtlas.prototype._doWarmUp = function () {\n        var _this = this;\n        var result = CharAtlasGenerator_1.generateStaticCharAtlasTexture(window, this._canvasFactory, this._config);\n        if (result instanceof HTMLCanvasElement) {\n            this._texture = result;\n        }\n        else {\n            result.then(function (texture) {\n                _this._texture = texture;\n            });\n        }\n    };\n    StaticCharAtlas.prototype._isCached = function (glyph, colorIndex) {\n        var isAscii = glyph.code < 256;\n        var isBasicColor = glyph.fg < 16;\n        var isDefaultColor = glyph.fg === Types_2.DEFAULT_COLOR;\n        var isDefaultBackground = glyph.bg === Types_2.DEFAULT_COLOR;\n        return isAscii && (isBasicColor || isDefaultColor) && isDefaultBackground && !glyph.italic;\n    };\n    StaticCharAtlas.prototype.draw = function (ctx, glyph, x, y) {\n        if (this._texture === null || this._texture === undefined) {\n            return false;\n        }\n        var colorIndex = 0;\n        if (CharAtlasUtils_1.is256Color(glyph.fg)) {\n            colorIndex = 2 + glyph.fg + (glyph.bold ? 16 : 0);\n        }\n        else if (glyph.fg === Types_2.DEFAULT_COLOR) {\n            if (glyph.bold) {\n                colorIndex = 1;\n            }\n        }\n        if (!this._isCached(glyph, colorIndex)) {\n            return false;\n        }\n        ctx.save();\n        var charAtlasCellWidth = this._config.scaledCharWidth + Types_1.CHAR_ATLAS_CELL_SPACING;\n        var charAtlasCellHeight = this._config.scaledCharHeight + Types_1.CHAR_ATLAS_CELL_SPACING;\n        if (glyph.dim) {\n            ctx.globalAlpha = Types_1.DIM_OPACITY;\n        }\n        ctx.drawImage(this._texture, glyph.code * charAtlasCellWidth, colorIndex * charAtlasCellHeight, charAtlasCellWidth, this._config.scaledCharHeight, x, y, charAtlasCellWidth, this._config.scaledCharHeight);\n        ctx.restore();\n        return true;\n    };\n    return StaticCharAtlas;\n}(BaseCharAtlas_1.default));\nexports.default = StaticCharAtlas;\n\n},{\"../../common/Types\":27,\"./BaseCharAtlas\":47,\"./CharAtlasGenerator\":49,\"./CharAtlasUtils\":50,\"./Types\":55}],55:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVERTED_DEFAULT_COLOR = 257;\nexports.DIM_OPACITY = 0.5;\nexports.CHAR_ATLAS_CELL_SPACING = 1;\n\n},{}],56:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DomRendererRowFactory_1 = require(\"./DomRendererRowFactory\");\nvar Types_1 = require(\"../atlas/Types\");\nvar Lifecycle_1 = require(\"../../common/Lifecycle\");\nvar TERMINAL_CLASS_PREFIX = 'xterm-dom-renderer-owner-';\nvar ROW_CONTAINER_CLASS = 'xterm-rows';\nvar FG_CLASS_PREFIX = 'xterm-fg-';\nvar BG_CLASS_PREFIX = 'xterm-bg-';\nvar FOCUS_CLASS = 'xterm-focus';\nvar SELECTION_CLASS = 'xterm-selection';\nvar nextTerminalId = 1;\nvar DomRenderer = (function (_super) {\n    __extends(DomRenderer, _super);\n    function DomRenderer(_terminal, _colors) {\n        var _this = _super.call(this) || this;\n        _this._terminal = _terminal;\n        _this._colors = _colors;\n        _this._terminalClass = nextTerminalId++;\n        _this._rowElements = [];\n        _this._rowContainer = document.createElement('div');\n        _this._rowContainer.classList.add(ROW_CONTAINER_CLASS);\n        _this._rowContainer.style.lineHeight = 'normal';\n        _this._rowContainer.setAttribute('aria-hidden', 'true');\n        _this._refreshRowElements(_this._terminal.cols, _this._terminal.rows);\n        _this._selectionContainer = document.createElement('div');\n        _this._selectionContainer.classList.add(SELECTION_CLASS);\n        _this._selectionContainer.setAttribute('aria-hidden', 'true');\n        _this.dimensions = {\n            scaledCharWidth: null,\n            scaledCharHeight: null,\n            scaledCellWidth: null,\n            scaledCellHeight: null,\n            scaledCharLeft: null,\n            scaledCharTop: null,\n            scaledCanvasWidth: null,\n            scaledCanvasHeight: null,\n            canvasWidth: null,\n            canvasHeight: null,\n            actualCellWidth: null,\n            actualCellHeight: null\n        };\n        _this._updateDimensions();\n        _this._injectCss();\n        _this._rowFactory = new DomRendererRowFactory_1.DomRendererRowFactory(_terminal.options, document);\n        _this._terminal.element.classList.add(TERMINAL_CLASS_PREFIX + _this._terminalClass);\n        _this._terminal.screenElement.appendChild(_this._rowContainer);\n        _this._terminal.screenElement.appendChild(_this._selectionContainer);\n        _this._terminal.linkifier.onLinkHover(function (e) { return _this._onLinkHover(e); });\n        _this._terminal.linkifier.onLinkLeave(function (e) { return _this._onLinkLeave(e); });\n        return _this;\n    }\n    DomRenderer.prototype.dispose = function () {\n        this._terminal.element.classList.remove(TERMINAL_CLASS_PREFIX + this._terminalClass);\n        this._terminal.screenElement.removeChild(this._rowContainer);\n        this._terminal.screenElement.removeChild(this._selectionContainer);\n        this._terminal.screenElement.removeChild(this._themeStyleElement);\n        this._terminal.screenElement.removeChild(this._dimensionsStyleElement);\n        _super.prototype.dispose.call(this);\n    };\n    DomRenderer.prototype._updateDimensions = function () {\n        var _this = this;\n        this.dimensions.scaledCharWidth = this._terminal.charMeasure.width * window.devicePixelRatio;\n        this.dimensions.scaledCharHeight = Math.ceil(this._terminal.charMeasure.height * window.devicePixelRatio);\n        this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._terminal.options.letterSpacing);\n        this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._terminal.options.lineHeight);\n        this.dimensions.scaledCharLeft = 0;\n        this.dimensions.scaledCharTop = 0;\n        this.dimensions.scaledCanvasWidth = this.dimensions.scaledCellWidth * this._terminal.cols;\n        this.dimensions.scaledCanvasHeight = this.dimensions.scaledCellHeight * this._terminal.rows;\n        this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio);\n        this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio);\n        this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._terminal.cols;\n        this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._terminal.rows;\n        this._rowElements.forEach(function (element) {\n            element.style.width = _this.dimensions.canvasWidth + \"px\";\n            element.style.height = _this.dimensions.actualCellHeight + \"px\";\n            element.style.lineHeight = _this.dimensions.actualCellHeight + \"px\";\n            element.style.overflow = 'hidden';\n        });\n        if (!this._dimensionsStyleElement) {\n            this._dimensionsStyleElement = document.createElement('style');\n            this._terminal.screenElement.appendChild(this._dimensionsStyleElement);\n        }\n        var styles = this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \" span {\" +\n            \" display: inline-block;\" +\n            \" height: 100%;\" +\n            \" vertical-align: top;\" +\n            (\" width: \" + this.dimensions.actualCellWidth + \"px\") +\n            \"}\";\n        this._dimensionsStyleElement.innerHTML = styles;\n        this._selectionContainer.style.height = this._terminal._viewportElement.style.height;\n        this._terminal.screenElement.style.width = this.dimensions.canvasWidth + \"px\";\n        this._terminal.screenElement.style.height = this.dimensions.canvasHeight + \"px\";\n    };\n    DomRenderer.prototype.setColors = function (colors) {\n        this._colors = colors;\n        this._injectCss();\n    };\n    DomRenderer.prototype._injectCss = function () {\n        var _this = this;\n        if (!this._themeStyleElement) {\n            this._themeStyleElement = document.createElement('style');\n            this._terminal.screenElement.appendChild(this._themeStyleElement);\n        }\n        var styles = this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \" {\" +\n            (\" color: \" + this._colors.foreground.css + \";\") +\n            (\" background-color: \" + this._colors.background.css + \";\") +\n            (\" font-family: \" + this._terminal.options.fontFamily + \";\") +\n            (\" font-size: \" + this._terminal.options.fontSize + \"px;\") +\n            \"}\";\n        styles +=\n            this._terminalSelector + \" span:not(.\" + DomRendererRowFactory_1.BOLD_CLASS + \") {\" +\n                (\" font-weight: \" + this._terminal.options.fontWeight + \";\") +\n                \"}\" +\n                (this._terminalSelector + \" span.\" + DomRendererRowFactory_1.BOLD_CLASS + \" {\") +\n                (\" font-weight: \" + this._terminal.options.fontWeightBold + \";\") +\n                \"}\" +\n                (this._terminalSelector + \" span.\" + DomRendererRowFactory_1.ITALIC_CLASS + \" {\") +\n                \" font-style: italic;\" +\n                \"}\";\n        styles +=\n            \"@keyframes blink {\" +\n                \" 0% { opacity: 1.0; }\" +\n                \" 50% { opacity: 0.0; }\" +\n                \" 100% { opacity: 1.0; }\" +\n                \"}\";\n        styles +=\n            this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \":not(.\" + FOCUS_CLASS + \") .\" + DomRendererRowFactory_1.CURSOR_CLASS + \" {\" +\n                (\" outline: 1px solid \" + this._colors.cursor.css + \";\") +\n                \" outline-offset: -1px;\" +\n                \"}\" +\n                (this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \".\" + FOCUS_CLASS + \" .\" + DomRendererRowFactory_1.CURSOR_CLASS + \".\" + DomRendererRowFactory_1.CURSOR_BLINK_CLASS + \" {\") +\n                \" animation: blink 1s step-end infinite;\" +\n                \"}\" +\n                (this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \".\" + FOCUS_CLASS + \" .\" + DomRendererRowFactory_1.CURSOR_CLASS + \".\" + DomRendererRowFactory_1.CURSOR_STYLE_BLOCK_CLASS + \" {\") +\n                (\" background-color: \" + this._colors.cursor.css + \";\") +\n                (\" color: \" + this._colors.cursorAccent.css + \";\") +\n                \"}\" +\n                (this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \".\" + FOCUS_CLASS + \" .\" + DomRendererRowFactory_1.CURSOR_CLASS + \".\" + DomRendererRowFactory_1.CURSOR_STYLE_BAR_CLASS + \" {\") +\n                (\" box-shadow: 1px 0 0 \" + this._colors.cursor.css + \" inset;\") +\n                \"}\" +\n                (this._terminalSelector + \" .\" + ROW_CONTAINER_CLASS + \".\" + FOCUS_CLASS + \" .\" + DomRendererRowFactory_1.CURSOR_CLASS + \".\" + DomRendererRowFactory_1.CURSOR_STYLE_UNDERLINE_CLASS + \" {\") +\n                (\" box-shadow: 0 -1px 0 \" + this._colors.cursor.css + \" inset;\") +\n                \"}\";\n        styles +=\n            this._terminalSelector + \" .\" + SELECTION_CLASS + \" {\" +\n                \" position: absolute;\" +\n                \" top: 0;\" +\n                \" left: 0;\" +\n                \" z-index: 1;\" +\n                \" pointer-events: none;\" +\n                \"}\" +\n                (this._terminalSelector + \" .\" + SELECTION_CLASS + \" div {\") +\n                \" position: absolute;\" +\n                (\" background-color: \" + this._colors.selection.css + \";\") +\n                \"}\";\n        this._colors.ansi.forEach(function (c, i) {\n            styles +=\n                _this._terminalSelector + \" .\" + FG_CLASS_PREFIX + i + \" { color: \" + c.css + \"; }\" +\n                    (_this._terminalSelector + \" .\" + BG_CLASS_PREFIX + i + \" { background-color: \" + c.css + \"; }\");\n        });\n        styles +=\n            this._terminalSelector + \" .\" + FG_CLASS_PREFIX + Types_1.INVERTED_DEFAULT_COLOR + \" { color: \" + this._colors.background.css + \"; }\" +\n                (this._terminalSelector + \" .\" + BG_CLASS_PREFIX + Types_1.INVERTED_DEFAULT_COLOR + \" { background-color: \" + this._colors.foreground.css + \"; }\");\n        this._themeStyleElement.innerHTML = styles;\n    };\n    DomRenderer.prototype.onDevicePixelRatioChange = function () {\n        this._updateDimensions();\n    };\n    DomRenderer.prototype._refreshRowElements = function (cols, rows) {\n        for (var i = this._rowElements.length; i <= rows; i++) {\n            var row = document.createElement('div');\n            this._rowContainer.appendChild(row);\n            this._rowElements.push(row);\n        }\n        while (this._rowElements.length > rows) {\n            this._rowContainer.removeChild(this._rowElements.pop());\n        }\n    };\n    DomRenderer.prototype.onResize = function (cols, rows) {\n        this._refreshRowElements(cols, rows);\n        this._updateDimensions();\n    };\n    DomRenderer.prototype.onCharSizeChanged = function () {\n        this._updateDimensions();\n    };\n    DomRenderer.prototype.onBlur = function () {\n        this._rowContainer.classList.remove(FOCUS_CLASS);\n    };\n    DomRenderer.prototype.onFocus = function () {\n        this._rowContainer.classList.add(FOCUS_CLASS);\n    };\n    DomRenderer.prototype.onSelectionChanged = function (start, end, columnSelectMode) {\n        while (this._selectionContainer.children.length) {\n            this._selectionContainer.removeChild(this._selectionContainer.children[0]);\n        }\n        if (!start || !end) {\n            return;\n        }\n        var viewportStartRow = start[1] - this._terminal.buffer.ydisp;\n        var viewportEndRow = end[1] - this._terminal.buffer.ydisp;\n        var viewportCappedStartRow = Math.max(viewportStartRow, 0);\n        var viewportCappedEndRow = Math.min(viewportEndRow, this._terminal.rows - 1);\n        if (viewportCappedStartRow >= this._terminal.rows || viewportCappedEndRow < 0) {\n            return;\n        }\n        var documentFragment = document.createDocumentFragment();\n        if (columnSelectMode) {\n            documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow, start[0], end[0], viewportCappedEndRow - viewportCappedStartRow + 1));\n        }\n        else {\n            var startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0;\n            var endCol = viewportCappedStartRow === viewportCappedEndRow ? end[0] : this._terminal.cols;\n            documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow, startCol, endCol));\n            var middleRowsCount = viewportCappedEndRow - viewportCappedStartRow - 1;\n            documentFragment.appendChild(this._createSelectionElement(viewportCappedStartRow + 1, 0, this._terminal.cols, middleRowsCount));\n            if (viewportCappedStartRow !== viewportCappedEndRow) {\n                var endCol_1 = viewportEndRow === viewportCappedEndRow ? end[0] : this._terminal.cols;\n                documentFragment.appendChild(this._createSelectionElement(viewportCappedEndRow, 0, endCol_1));\n            }\n        }\n        this._selectionContainer.appendChild(documentFragment);\n    };\n    DomRenderer.prototype._createSelectionElement = function (row, colStart, colEnd, rowCount) {\n        if (rowCount === void 0) { rowCount = 1; }\n        var element = document.createElement('div');\n        element.style.height = rowCount * this.dimensions.actualCellHeight + \"px\";\n        element.style.top = row * this.dimensions.actualCellHeight + \"px\";\n        element.style.left = colStart * this.dimensions.actualCellWidth + \"px\";\n        element.style.width = this.dimensions.actualCellWidth * (colEnd - colStart) + \"px\";\n        return element;\n    };\n    DomRenderer.prototype.onCursorMove = function () {\n    };\n    DomRenderer.prototype.onOptionsChanged = function () {\n        this._updateDimensions();\n        this._injectCss();\n        this._terminal.refresh(0, this._terminal.rows - 1);\n    };\n    DomRenderer.prototype.clear = function () {\n        this._rowElements.forEach(function (e) { return e.innerHTML = ''; });\n    };\n    DomRenderer.prototype.renderRows = function (start, end) {\n        var terminal = this._terminal;\n        var cursorAbsoluteY = terminal.buffer.ybase + terminal.buffer.y;\n        var cursorX = this._terminal.buffer.x;\n        var cursorBlink = this._terminal.options.cursorBlink;\n        for (var y = start; y <= end; y++) {\n            var rowElement = this._rowElements[y];\n            rowElement.innerHTML = '';\n            var row = y + terminal.buffer.ydisp;\n            var lineData = terminal.buffer.lines.get(row);\n            var cursorStyle = terminal.options.cursorStyle;\n            rowElement.appendChild(this._rowFactory.createRow(lineData, row === cursorAbsoluteY, cursorStyle, cursorX, cursorBlink, this.dimensions.actualCellWidth, terminal.cols));\n        }\n    };\n    Object.defineProperty(DomRenderer.prototype, \"_terminalSelector\", {\n        get: function () {\n            return \".\" + TERMINAL_CLASS_PREFIX + this._terminalClass;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    DomRenderer.prototype.registerCharacterJoiner = function (handler) { return -1; };\n    DomRenderer.prototype.deregisterCharacterJoiner = function (joinerId) { return false; };\n    DomRenderer.prototype._onLinkHover = function (e) {\n        this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, true);\n    };\n    DomRenderer.prototype._onLinkLeave = function (e) {\n        this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, false);\n    };\n    DomRenderer.prototype._setCellUnderline = function (x, x2, y, y2, cols, enabled) {\n        while (x !== x2 || y !== y2) {\n            var row = this._rowElements[y];\n            if (!row) {\n                return;\n            }\n            var span = row.children[x];\n            if (span) {\n                span.style.textDecoration = enabled ? 'underline' : 'none';\n            }\n            if (++x >= cols) {\n                x = 0;\n                y++;\n            }\n        }\n    };\n    return DomRenderer;\n}(Lifecycle_1.Disposable));\nexports.DomRenderer = DomRenderer;\n\n},{\"../../common/Lifecycle\":24,\"../atlas/Types\":55,\"./DomRendererRowFactory\":57}],57:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Types_1 = require(\"../atlas/Types\");\nvar BufferLine_1 = require(\"../../core/buffer/BufferLine\");\nexports.BOLD_CLASS = 'xterm-bold';\nexports.DIM_CLASS = 'xterm-dim';\nexports.ITALIC_CLASS = 'xterm-italic';\nexports.UNDERLINE_CLASS = 'xterm-underline';\nexports.CURSOR_CLASS = 'xterm-cursor';\nexports.CURSOR_BLINK_CLASS = 'xterm-cursor-blink';\nexports.CURSOR_STYLE_BLOCK_CLASS = 'xterm-cursor-block';\nexports.CURSOR_STYLE_BAR_CLASS = 'xterm-cursor-bar';\nexports.CURSOR_STYLE_UNDERLINE_CLASS = 'xterm-cursor-underline';\nvar DomRendererRowFactory = (function () {\n    function DomRendererRowFactory(_terminalOptions, _document) {\n        this._terminalOptions = _terminalOptions;\n        this._document = _document;\n        this._workCell = new BufferLine_1.CellData();\n    }\n    DomRendererRowFactory.prototype.createRow = function (lineData, isCursorRow, cursorStyle, cursorX, cursorBlink, cellWidth, cols) {\n        var fragment = this._document.createDocumentFragment();\n        var lineLength = 0;\n        for (var x = Math.min(lineData.length, cols) - 1; x >= 0; x--) {\n            if (lineData.loadCell(x, this._workCell).getCode() !== BufferLine_1.NULL_CELL_CODE || (isCursorRow && x === cursorX)) {\n                lineLength = x + 1;\n                break;\n            }\n        }\n        for (var x = 0; x < lineLength; x++) {\n            lineData.loadCell(x, this._workCell);\n            var width = this._workCell.getWidth();\n            if (width === 0) {\n                continue;\n            }\n            var charElement = this._document.createElement('span');\n            if (width > 1) {\n                charElement.style.width = cellWidth * width + \"px\";\n            }\n            if (isCursorRow && x === cursorX) {\n                charElement.classList.add(exports.CURSOR_CLASS);\n                if (cursorBlink) {\n                    charElement.classList.add(exports.CURSOR_BLINK_CLASS);\n                }\n                switch (cursorStyle) {\n                    case 'bar':\n                        charElement.classList.add(exports.CURSOR_STYLE_BAR_CLASS);\n                        break;\n                    case 'underline':\n                        charElement.classList.add(exports.CURSOR_STYLE_UNDERLINE_CLASS);\n                        break;\n                    default:\n                        charElement.classList.add(exports.CURSOR_STYLE_BLOCK_CLASS);\n                        break;\n                }\n            }\n            if (this._workCell.isBold() && this._terminalOptions.enableBold) {\n                charElement.classList.add(exports.BOLD_CLASS);\n            }\n            if (this._workCell.isItalic()) {\n                charElement.classList.add(exports.ITALIC_CLASS);\n            }\n            if (this._workCell.isDim()) {\n                charElement.classList.add(exports.DIM_CLASS);\n            }\n            if (this._workCell.isUnderline()) {\n                charElement.classList.add(exports.UNDERLINE_CLASS);\n            }\n            charElement.textContent = this._workCell.getChars() || BufferLine_1.WHITESPACE_CELL_CHAR;\n            var swapColor = this._workCell.isInverse();\n            if (this._workCell.isFgRGB()) {\n                var style = charElement.getAttribute('style') || '';\n                style += (swapColor ? 'background-' : '') + \"color:rgb(\" + (BufferLine_1.AttributeData.toColorRGB(this._workCell.getFgColor())).join(',') + \");\";\n                charElement.setAttribute('style', style);\n            }\n            else if (this._workCell.isFgPalette()) {\n                var fg = this._workCell.getFgColor();\n                if (this._workCell.isBold() && fg < 8 && !swapColor &&\n                    this._terminalOptions.enableBold && this._terminalOptions.drawBoldTextInBrightColors) {\n                    fg += 8;\n                }\n                charElement.classList.add(\"xterm-\" + (swapColor ? 'b' : 'f') + \"g-\" + fg);\n            }\n            else if (swapColor) {\n                charElement.classList.add(\"xterm-bg-\" + Types_1.INVERTED_DEFAULT_COLOR);\n            }\n            if (this._workCell.isBgRGB()) {\n                var style = charElement.getAttribute('style') || '';\n                style += (swapColor ? '' : 'background-') + \"color:rgb(\" + (BufferLine_1.AttributeData.toColorRGB(this._workCell.getBgColor())).join(',') + \");\";\n                charElement.setAttribute('style', style);\n            }\n            else if (this._workCell.isBgPalette()) {\n                charElement.classList.add(\"xterm-\" + (swapColor ? 'f' : 'b') + \"g-\" + this._workCell.getBgColor());\n            }\n            else if (swapColor) {\n                charElement.classList.add(\"xterm-fg-\" + Types_1.INVERTED_DEFAULT_COLOR);\n            }\n            fragment.appendChild(charElement);\n        }\n        return fragment;\n    };\n    return DomRendererRowFactory;\n}());\nexports.DomRendererRowFactory = DomRendererRowFactory;\n\n},{\"../../core/buffer/BufferLine\":29,\"../atlas/Types\":55}],58:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DEFAULT_FOREGROUND = fromHex('#ffffff');\nvar DEFAULT_BACKGROUND = fromHex('#000000');\nvar DEFAULT_CURSOR = fromHex('#ffffff');\nvar DEFAULT_CURSOR_ACCENT = fromHex('#000000');\nvar DEFAULT_SELECTION = {\n    css: 'rgba(255, 255, 255, 0.3)',\n    rgba: 0xFFFFFF77\n};\nexports.DEFAULT_ANSI_COLORS = (function () {\n    var colors = [\n        fromHex('#2e3436'),\n        fromHex('#cc0000'),\n        fromHex('#4e9a06'),\n        fromHex('#c4a000'),\n        fromHex('#3465a4'),\n        fromHex('#75507b'),\n        fromHex('#06989a'),\n        fromHex('#d3d7cf'),\n        fromHex('#555753'),\n        fromHex('#ef2929'),\n        fromHex('#8ae234'),\n        fromHex('#fce94f'),\n        fromHex('#729fcf'),\n        fromHex('#ad7fa8'),\n        fromHex('#34e2e2'),\n        fromHex('#eeeeec')\n    ];\n    var v = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff];\n    for (var i = 0; i < 216; i++) {\n        var r = v[(i / 36) % 6 | 0];\n        var g = v[(i / 6) % 6 | 0];\n        var b = v[i % 6];\n        colors.push({\n            css: \"#\" + toPaddedHex(r) + toPaddedHex(g) + toPaddedHex(b),\n            rgba: ((r << 24) | (g << 16) | (b << 8) | 0xFF) >>> 0\n        });\n    }\n    for (var i = 0; i < 24; i++) {\n        var c = 8 + i * 10;\n        var ch = toPaddedHex(c);\n        colors.push({\n            css: \"#\" + ch + ch + ch,\n            rgba: ((c << 24) | (c << 16) | (c << 8) | 0xFF) >>> 0\n        });\n    }\n    return colors;\n})();\nfunction fromHex(css) {\n    return {\n        css: css,\n        rgba: parseInt(css.slice(1), 16) << 8 | 0xFF\n    };\n}\nfunction toPaddedHex(c) {\n    var s = c.toString(16);\n    return s.length < 2 ? '0' + s : s;\n}\nvar ColorManager = (function () {\n    function ColorManager(document, allowTransparency) {\n        this.allowTransparency = allowTransparency;\n        var canvas = document.createElement('canvas');\n        canvas.width = 1;\n        canvas.height = 1;\n        var ctx = canvas.getContext('2d');\n        if (!ctx) {\n            throw new Error('Could not get rendering context');\n        }\n        this._ctx = ctx;\n        this._ctx.globalCompositeOperation = 'copy';\n        this._litmusColor = this._ctx.createLinearGradient(0, 0, 1, 1);\n        this.colors = {\n            foreground: DEFAULT_FOREGROUND,\n            background: DEFAULT_BACKGROUND,\n            cursor: DEFAULT_CURSOR,\n            cursorAccent: DEFAULT_CURSOR_ACCENT,\n            selection: DEFAULT_SELECTION,\n            ansi: exports.DEFAULT_ANSI_COLORS.slice()\n        };\n    }\n    ColorManager.prototype.setTheme = function (theme) {\n        if (theme === void 0) { theme = {}; }\n        this.colors.foreground = this._parseColor(theme.foreground, DEFAULT_FOREGROUND);\n        this.colors.background = this._parseColor(theme.background, DEFAULT_BACKGROUND);\n        this.colors.cursor = this._parseColor(theme.cursor, DEFAULT_CURSOR, true);\n        this.colors.cursorAccent = this._parseColor(theme.cursorAccent, DEFAULT_CURSOR_ACCENT, true);\n        this.colors.selection = this._parseColor(theme.selection, DEFAULT_SELECTION, true);\n        this.colors.ansi[0] = this._parseColor(theme.black, exports.DEFAULT_ANSI_COLORS[0]);\n        this.colors.ansi[1] = this._parseColor(theme.red, exports.DEFAULT_ANSI_COLORS[1]);\n        this.colors.ansi[2] = this._parseColor(theme.green, exports.DEFAULT_ANSI_COLORS[2]);\n        this.colors.ansi[3] = this._parseColor(theme.yellow, exports.DEFAULT_ANSI_COLORS[3]);\n        this.colors.ansi[4] = this._parseColor(theme.blue, exports.DEFAULT_ANSI_COLORS[4]);\n        this.colors.ansi[5] = this._parseColor(theme.magenta, exports.DEFAULT_ANSI_COLORS[5]);\n        this.colors.ansi[6] = this._parseColor(theme.cyan, exports.DEFAULT_ANSI_COLORS[6]);\n        this.colors.ansi[7] = this._parseColor(theme.white, exports.DEFAULT_ANSI_COLORS[7]);\n        this.colors.ansi[8] = this._parseColor(theme.brightBlack, exports.DEFAULT_ANSI_COLORS[8]);\n        this.colors.ansi[9] = this._parseColor(theme.brightRed, exports.DEFAULT_ANSI_COLORS[9]);\n        this.colors.ansi[10] = this._parseColor(theme.brightGreen, exports.DEFAULT_ANSI_COLORS[10]);\n        this.colors.ansi[11] = this._parseColor(theme.brightYellow, exports.DEFAULT_ANSI_COLORS[11]);\n        this.colors.ansi[12] = this._parseColor(theme.brightBlue, exports.DEFAULT_ANSI_COLORS[12]);\n        this.colors.ansi[13] = this._parseColor(theme.brightMagenta, exports.DEFAULT_ANSI_COLORS[13]);\n        this.colors.ansi[14] = this._parseColor(theme.brightCyan, exports.DEFAULT_ANSI_COLORS[14]);\n        this.colors.ansi[15] = this._parseColor(theme.brightWhite, exports.DEFAULT_ANSI_COLORS[15]);\n    };\n    ColorManager.prototype._parseColor = function (css, fallback, allowTransparency) {\n        if (allowTransparency === void 0) { allowTransparency = this.allowTransparency; }\n        if (css === undefined) {\n            return fallback;\n        }\n        this._ctx.fillStyle = this._litmusColor;\n        this._ctx.fillStyle = css;\n        if (typeof this._ctx.fillStyle !== 'string') {\n            console.warn(\"Color: \" + css + \" is invalid using fallback \" + fallback.css);\n            return fallback;\n        }\n        this._ctx.fillRect(0, 0, 1, 1);\n        var data = this._ctx.getImageData(0, 0, 1, 1).data;\n        if (!allowTransparency && data[3] !== 0xFF) {\n            console.warn(\"Color: \" + css + \" is using transparency, but allowTransparency is false. \" +\n                (\"Using fallback \" + fallback.css + \".\"));\n            return fallback;\n        }\n        return {\n            css: css,\n            rgba: (data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3]) >>> 0\n        };\n    };\n    return ColorManager;\n}());\nexports.ColorManager = ColorManager;\n\n},{}],59:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction addDisposableDomListener(node, type, handler, useCapture) {\n    node.addEventListener(type, handler, useCapture);\n    return {\n        dispose: function () {\n            if (!handler) {\n                return;\n            }\n            node.removeEventListener(type, handler, useCapture);\n        }\n    };\n}\nexports.addDisposableDomListener = addDisposableDomListener;\n\n},{}],60:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RenderDebouncer = (function () {\n    function RenderDebouncer(_renderCallback) {\n        this._renderCallback = _renderCallback;\n    }\n    RenderDebouncer.prototype.dispose = function () {\n        if (this._animationFrame) {\n            window.cancelAnimationFrame(this._animationFrame);\n            this._animationFrame = undefined;\n        }\n    };\n    RenderDebouncer.prototype.refresh = function (rowStart, rowEnd, rowCount) {\n        var _this = this;\n        this._rowCount = rowCount;\n        rowStart = rowStart !== undefined ? rowStart : 0;\n        rowEnd = rowEnd !== undefined ? rowEnd : this._rowCount - 1;\n        this._rowStart = this._rowStart !== undefined ? Math.min(this._rowStart, rowStart) : rowStart;\n        this._rowEnd = this._rowEnd !== undefined ? Math.max(this._rowEnd, rowEnd) : rowEnd;\n        if (this._animationFrame) {\n            return;\n        }\n        this._animationFrame = window.requestAnimationFrame(function () { return _this._innerRefresh(); });\n    };\n    RenderDebouncer.prototype._innerRefresh = function () {\n        if (this._rowStart === undefined || this._rowEnd === undefined || this._rowCount === undefined) {\n            return;\n        }\n        this._rowStart = Math.max(this._rowStart, 0);\n        this._rowEnd = Math.min(this._rowEnd, this._rowCount - 1);\n        this._renderCallback(this._rowStart, this._rowEnd);\n        this._rowStart = undefined;\n        this._rowEnd = undefined;\n        this._animationFrame = undefined;\n    };\n    return RenderDebouncer;\n}());\nexports.RenderDebouncer = RenderDebouncer;\n\n},{}],61:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lifecycle_1 = require(\"../common/Lifecycle\");\nvar ScreenDprMonitor = (function (_super) {\n    __extends(ScreenDprMonitor, _super);\n    function ScreenDprMonitor() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._currentDevicePixelRatio = window.devicePixelRatio;\n        return _this;\n    }\n    ScreenDprMonitor.prototype.setListener = function (listener) {\n        var _this = this;\n        if (this._listener) {\n            this.clearListener();\n        }\n        this._listener = listener;\n        this._outerListener = function () {\n            if (!_this._listener) {\n                return;\n            }\n            _this._listener(window.devicePixelRatio, _this._currentDevicePixelRatio);\n            _this._updateDpr();\n        };\n        this._updateDpr();\n    };\n    ScreenDprMonitor.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        this.clearListener();\n    };\n    ScreenDprMonitor.prototype._updateDpr = function () {\n        if (!this._resolutionMediaMatchList || !this._outerListener) {\n            return;\n        }\n        this._resolutionMediaMatchList.removeListener(this._outerListener);\n        this._currentDevicePixelRatio = window.devicePixelRatio;\n        this._resolutionMediaMatchList = window.matchMedia(\"screen and (resolution: \" + window.devicePixelRatio + \"dppx)\");\n        this._resolutionMediaMatchList.addListener(this._outerListener);\n    };\n    ScreenDprMonitor.prototype.clearListener = function () {\n        if (!this._resolutionMediaMatchList || !this._listener || !this._outerListener) {\n            return;\n        }\n        this._resolutionMediaMatchList.removeListener(this._outerListener);\n        this._resolutionMediaMatchList = undefined;\n        this._listener = undefined;\n        this._outerListener = undefined;\n    };\n    return ScreenDprMonitor;\n}(Lifecycle_1.Disposable));\nexports.ScreenDprMonitor = ScreenDprMonitor;\n\n},{\"../common/Lifecycle\":24}],62:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Terminal_1 = require(\"./public/Terminal\");\nmodule.exports = Terminal_1.Terminal;\n\n},{\"./public/Terminal\":37}]},{},[62])(62)\n});\n\n"]}