" + text + "
";\n };\n if (options.codeBlockRenderer) {\n renderer.code = function (code, lang) {\n var value = options.codeBlockRenderer(lang, code);\n // when code-block rendering is async we return sync\n // but update the node with the real result later.\n var id = _common_idGenerator_js__WEBPACK_IMPORTED_MODULE_1__["defaultGenerator"].nextId();\n var promise = Promise.all([value, withInnerHTML]).then(function (values) {\n var strValue = values[0];\n var span = element.querySelector("div[data-code=\\"" + id + "\\"]");\n if (span) {\n span.innerHTML = strValue;\n }\n }).catch(function (err) {\n // ignore\n });\n if (options.codeBlockRenderCallback) {\n promise.then(options.codeBlockRenderCallback);\n }\n return "'\n + (escaped ? code : escape(code, true))\n + '';\n }\n\n return ''\n + (escaped ? code : escape(code, true))\n + '\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '\\n' + quote + '\\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '
' + text + '
\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n if (body) body = '' + body + '';\n\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? 'An error occurred:
'\n + escape(e.message + '', true)\n + '';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.getDefaults = function () {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: new Renderer(),\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tables: true,\n xhtml: false\n };\n};\n\nmarked.defaults = marked.getDefaults();\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\n// BEGIN MONACOCHANGE\n// if (typeof module !== 'undefined' && typeof exports === 'object') {\n// module.exports = marked;\n// } else if (typeof define === 'function' && define.amd) {\n// define(function() { return marked; });\n// } else {\n// root.marked = marked;\n// }\n// })(this || (typeof window !== 'undefined' ? window : global));\n__marked_exports = marked;\n}).call(undefined);\n\n// ESM-comment-begin\n// define(function() { return __marked_exports; });\n// ESM-comment-end\n\n// ESM-uncomment-begin\nvar marked = __marked_exports;\nvar Parser = __marked_exports.Parser;\nvar parser = __marked_exports.parser;\nvar Renderer = __marked_exports.Renderer;\nvar TextRenderer = __marked_exports.TextRenderer;\nvar Lexer = __marked_exports.Lexer;\nvar lexer = __marked_exports.lexer;\nvar InlineLexer = __marked_exports.InlineLexer;\nvar inlineLexer = __marked_exports.inlineLexer;\nvar parse = __marked_exports.parse;\n// ESM-uncomment-end\n// END MONACOCHANGE\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/marked/marked.js?")},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/marshalling.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parse", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "revive", function() { return revive; });\n/* harmony import */ var _uri_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uri.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/uri.js");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction parse(text) {\n var data = JSON.parse(text);\n data = revive(data, 0);\n return data;\n}\nfunction revive(obj, depth) {\n if (!obj || depth > 200) {\n return obj;\n }\n if (typeof obj === \'object\') {\n switch (obj.$mid) {\n case 1: return _uri_js__WEBPACK_IMPORTED_MODULE_0__["URI"].revive(obj);\n case 2: return new RegExp(obj.source, obj.flags);\n }\n // walk object (or array)\n for (var key in obj) {\n if (Object.hasOwnProperty.call(obj, key)) {\n obj[key] = revive(obj[key], depth + 1);\n }\n }\n }\n return obj;\n}\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/marshalling.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/mime.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MIME_TEXT", function() { return MIME_TEXT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MIME_UNKNOWN", function() { return MIME_UNKNOWN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "registerTextMime", function() { return registerTextMime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "guessMimeTypes", function() { return guessMimeTypes; });\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/path.js");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./strings.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/strings.js");\n/* harmony import */ var _glob_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./glob.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/glob.js");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\nvar MIME_TEXT = \'text/plain\';\nvar MIME_UNKNOWN = \'application/unknown\';\nvar registeredAssociations = [];\nvar nonUserRegisteredAssociations = [];\nvar userRegisteredAssociations = [];\n/**\n * Associate a text mime to the registry.\n */\nfunction registerTextMime(association, warnOnOverwrite) {\n if (warnOnOverwrite === void 0) { warnOnOverwrite = false; }\n // Register\n var associationItem = toTextMimeAssociationItem(association);\n registeredAssociations.push(associationItem);\n if (!associationItem.userConfigured) {\n nonUserRegisteredAssociations.push(associationItem);\n }\n else {\n userRegisteredAssociations.push(associationItem);\n }\n // Check for conflicts unless this is a user configured association\n if (warnOnOverwrite && !associationItem.userConfigured) {\n registeredAssociations.forEach(function (a) {\n if (a.mime === associationItem.mime || a.userConfigured) {\n return; // same mime or userConfigured is ok\n }\n if (associationItem.extension && a.extension === associationItem.extension) {\n console.warn("Overwriting extension <<" + associationItem.extension + ">> to now point to mime <<" + associationItem.mime + ">>");\n }\n if (associationItem.filename && a.filename === associationItem.filename) {\n console.warn("Overwriting filename <<" + associationItem.filename + ">> to now point to mime <<" + associationItem.mime + ">>");\n }\n if (associationItem.filepattern && a.filepattern === associationItem.filepattern) {\n console.warn("Overwriting filepattern <<" + associationItem.filepattern + ">> to now point to mime <<" + associationItem.mime + ">>");\n }\n if (associationItem.firstline && a.firstline === associationItem.firstline) {\n console.warn("Overwriting firstline <<" + associationItem.firstline + ">> to now point to mime <<" + associationItem.mime + ">>");\n }\n });\n }\n}\nfunction toTextMimeAssociationItem(association) {\n return {\n id: association.id,\n mime: association.mime,\n filename: association.filename,\n extension: association.extension,\n filepattern: association.filepattern,\n firstline: association.firstline,\n userConfigured: association.userConfigured,\n filenameLowercase: association.filename ? association.filename.toLowerCase() : undefined,\n extensionLowercase: association.extension ? association.extension.toLowerCase() : undefined,\n filepatternLowercase: association.filepattern ? association.filepattern.toLowerCase() : undefined,\n filepatternOnPath: association.filepattern ? association.filepattern.indexOf(_path_js__WEBPACK_IMPORTED_MODULE_0__["posix"].sep) >= 0 : false\n };\n}\n/**\n * Given a file, return the best matching mime type for it\n */\nfunction guessMimeTypes(path, firstLine) {\n if (!path) {\n return [MIME_UNKNOWN];\n }\n path = path.toLowerCase();\n var filename = Object(_path_js__WEBPACK_IMPORTED_MODULE_0__["basename"])(path);\n // 1.) User configured mappings have highest priority\n var configuredMime = guessMimeTypeByPath(path, filename, userRegisteredAssociations);\n if (configuredMime) {\n return [configuredMime, MIME_TEXT];\n }\n // 2.) Registered mappings have middle priority\n var registeredMime = guessMimeTypeByPath(path, filename, nonUserRegisteredAssociations);\n if (registeredMime) {\n return [registeredMime, MIME_TEXT];\n }\n // 3.) Firstline has lowest priority\n if (firstLine) {\n var firstlineMime = guessMimeTypeByFirstline(firstLine);\n if (firstlineMime) {\n return [firstlineMime, MIME_TEXT];\n }\n }\n return [MIME_UNKNOWN];\n}\nfunction guessMimeTypeByPath(path, filename, associations) {\n var filenameMatch = null;\n var patternMatch = null;\n var extensionMatch = null;\n // We want to prioritize associations based on the order they are registered so that the last registered\n // association wins over all other. This is for https://github.com/Microsoft/vscode/issues/20074\n for (var i = associations.length - 1; i >= 0; i--) {\n var association = associations[i];\n // First exact name match\n if (filename === association.filenameLowercase) {\n filenameMatch = association;\n break; // take it!\n }\n // Longest pattern match\n if (association.filepattern) {\n if (!patternMatch || association.filepattern.length > patternMatch.filepattern.length) {\n var target = association.filepatternOnPath ? path : filename; // match on full path if pattern contains path separator\n if (Object(_glob_js__WEBPACK_IMPORTED_MODULE_2__["match"])(association.filepatternLowercase, target)) {\n patternMatch = association;\n }\n }\n }\n // Longest extension match\n if (association.extension) {\n if (!extensionMatch || association.extension.length > extensionMatch.extension.length) {\n if (Object(_strings_js__WEBPACK_IMPORTED_MODULE_1__["endsWith"])(filename, association.extensionLowercase)) {\n extensionMatch = association;\n }\n }\n }\n }\n // 1.) Exact name match has second highest prio\n if (filenameMatch) {\n return filenameMatch.mime;\n }\n // 2.) Match on pattern\n if (patternMatch) {\n return patternMatch.mime;\n }\n // 3.) Match on extension comes next\n if (extensionMatch) {\n return extensionMatch.mime;\n }\n return null;\n}\nfunction guessMimeTypeByFirstline(firstLine) {\n if (Object(_strings_js__WEBPACK_IMPORTED_MODULE_1__["startsWithUTF8BOM"])(firstLine)) {\n firstLine = firstLine.substr(1);\n }\n if (firstLine.length > 0) {\n for (var _i = 0, registeredAssociations_1 = registeredAssociations; _i < registeredAssociations_1.length; _i++) {\n var association = registeredAssociations_1[_i];\n if (!association.firstline) {\n continue;\n }\n var matches = firstLine.match(association.firstline);\n if (matches && matches.length > 0) {\n return association.mime;\n }\n }\n }\n return null;\n}\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/mime.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/network.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Schemas\", function() { return Schemas; });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar Schemas;\n(function (Schemas) {\n /**\n * A schema that is used for models that exist in memory\n * only and that have no correspondence on a server or such.\n */\n Schemas.inMemory = 'inmemory';\n /**\n * A schema that is used for setting files\n */\n Schemas.vscode = 'vscode';\n /**\n * A schema that is used for internal private files\n */\n Schemas.internal = 'private';\n /**\n * A walk-through document.\n */\n Schemas.walkThrough = 'walkThrough';\n /**\n * An embedded code snippet.\n */\n Schemas.walkThroughSnippet = 'walkThroughSnippet';\n Schemas.http = 'http';\n Schemas.https = 'https';\n Schemas.file = 'file';\n Schemas.mailto = 'mailto';\n Schemas.untitled = 'untitled';\n Schemas.data = 'data';\n Schemas.command = 'command';\n Schemas.vscodeRemote = 'vscode-remote';\n})(Schemas || (Schemas = {}));\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/network.js?")},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/numbers.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clamp", function() { return clamp; });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/numbers.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/objects.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepClone", function() { return deepClone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepFreeze", function() { return deepFreeze; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cloneAndChange", function() { return cloneAndChange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mixin", function() { return mixin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "assign", function() { return assign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "equals", function() { return equals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getOrDefault", function() { return getOrDefault; });\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/types.js");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nfunction deepClone(obj) {\n if (!obj || typeof obj !== \'object\') {\n return obj;\n }\n if (obj instanceof RegExp) {\n // See https://github.com/Microsoft/TypeScript/issues/10990\n return obj;\n }\n var result = Array.isArray(obj) ? [] : {};\n Object.keys(obj).forEach(function (key) {\n if (obj[key] && typeof obj[key] === \'object\') {\n result[key] = deepClone(obj[key]);\n }\n else {\n result[key] = obj[key];\n }\n });\n return result;\n}\nfunction deepFreeze(obj) {\n if (!obj || typeof obj !== \'object\') {\n return obj;\n }\n var stack = [obj];\n while (stack.length > 0) {\n var obj_1 = stack.shift();\n Object.freeze(obj_1);\n for (var key in obj_1) {\n if (_hasOwnProperty.call(obj_1, key)) {\n var prop = obj_1[key];\n if (typeof prop === \'object\' && !Object.isFrozen(prop)) {\n stack.push(prop);\n }\n }\n }\n }\n return obj;\n}\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction cloneAndChange(obj, changer) {\n return _cloneAndChange(obj, changer, new Set());\n}\nfunction _cloneAndChange(obj, changer, seen) {\n if (Object(_types_js__WEBPACK_IMPORTED_MODULE_0__["isUndefinedOrNull"])(obj)) {\n return obj;\n }\n var changed = changer(obj);\n if (typeof changed !== \'undefined\') {\n return changed;\n }\n if (Object(_types_js__WEBPACK_IMPORTED_MODULE_0__["isArray"])(obj)) {\n var r1 = [];\n for (var _i = 0, obj_2 = obj; _i < obj_2.length; _i++) {\n var e = obj_2[_i];\n r1.push(_cloneAndChange(e, changer, seen));\n }\n return r1;\n }\n if (Object(_types_js__WEBPACK_IMPORTED_MODULE_0__["isObject"])(obj)) {\n if (seen.has(obj)) {\n throw new Error(\'Cannot clone recursive data-structure\');\n }\n seen.add(obj);\n var r2 = {};\n for (var i2 in obj) {\n if (_hasOwnProperty.call(obj, i2)) {\n r2[i2] = _cloneAndChange(obj[i2], changer, seen);\n }\n }\n seen.delete(obj);\n return r2;\n }\n return obj;\n}\n/**\n * Copies all properties of source into destination. The optional parameter "overwrite" allows to control\n * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite).\n */\nfunction mixin(destination, source, overwrite) {\n if (overwrite === void 0) { overwrite = true; }\n if (!Object(_types_js__WEBPACK_IMPORTED_MODULE_0__["isObject"])(destination)) {\n return source;\n }\n if (Object(_types_js__WEBPACK_IMPORTED_MODULE_0__["isObject"])(source)) {\n Object.keys(source).forEach(function (key) {\n if (key in destination) {\n if (overwrite) {\n if (Object(_types_js__WEBPACK_IMPORTED_MODULE_0__["isObject"])(destination[key]) && Object(_types_js__WEBPACK_IMPORTED_MODULE_0__["isObject"])(source[key])) {\n mixin(destination[key], source[key], overwrite);\n }\n else {\n destination[key] = source[key];\n }\n }\n }\n else {\n destination[key] = source[key];\n }\n });\n }\n return destination;\n}\nfunction assign(destination) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n sources.forEach(function (source) { return Object.keys(source).forEach(function (key) { return destination[key] = source[key]; }); });\n return destination;\n}\nfunction equals(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== \'object\') {\n return false;\n }\n if ((Array.isArray(one)) !== (Array.isArray(other))) {\n return false;\n }\n var i;\n var key;\n if (Array.isArray(one)) {\n if (one.length !== other.length) {\n return false;\n }\n for (i = 0; i < one.length; i++) {\n if (!equals(one[i], other[i])) {\n return false;\n }\n }\n }\n else {\n var oneKeys = [];\n for (key in one) {\n oneKeys.push(key);\n }\n oneKeys.sort();\n var otherKeys = [];\n for (key in other) {\n otherKeys.push(key);\n }\n otherKeys.sort();\n if (!equals(oneKeys, otherKeys)) {\n return false;\n }\n for (i = 0; i < oneKeys.length; i++) {\n if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {\n return false;\n }\n }\n }\n return true;\n}\nfunction getOrDefault(obj, fn, defaultValue) {\n var result = fn(obj);\n return typeof result === \'undefined\' ? defaultValue : result;\n}\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/objects.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/path.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"win32\", function() { return win32; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"posix\", function() { return posix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"join\", function() { return join; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"relative\", function() { return relative; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dirname\", function() { return dirname; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"basename\", function() { return basename; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extname\", function() { return extname; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sep\", function() { return sep; });\n/* harmony import */ var _process_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./process.js */ \"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/process.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __extends = (undefined && undefined.__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})();\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\n// Copied from: https://github.com/nodejs/node/tree/43dd49c9782848c25e5b03448c8a0f923f13c158\n/**\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nvar CHAR_UPPERCASE_A = 65; /* A */\nvar CHAR_LOWERCASE_A = 97; /* a */\nvar CHAR_UPPERCASE_Z = 90; /* Z */\nvar CHAR_LOWERCASE_Z = 122; /* z */\nvar CHAR_DOT = 46; /* . */\nvar CHAR_FORWARD_SLASH = 47; /* / */\nvar CHAR_BACKWARD_SLASH = 92; /* \\ */\nvar CHAR_COLON = 58; /* : */\nvar CHAR_QUESTION_MARK = 63; /* ? */\nvar ErrorInvalidArgType = /** @class */ (function (_super) {\n __extends(ErrorInvalidArgType, _super);\n function ErrorInvalidArgType(name, expected, actual) {\n var _this = this;\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n }\n else {\n determiner = 'must be';\n }\n var type = name.indexOf('.') !== -1 ? 'property' : 'argument';\n var msg = \"The \\\"\" + name + \"\\\" \" + type + \" \" + determiner + \" of type \" + expected;\n msg += \". Received type \" + typeof actual;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return ErrorInvalidArgType;\n}(Error));\nfunction validateString(value, name) {\n if (typeof value !== 'string') {\n throw new ErrorInvalidArgType(name, 'string', value);\n }\n}\nfunction isPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n}\nfunction isPosixPathSeparator(code) {\n return code === CHAR_FORWARD_SLASH;\n}\nfunction isWindowsDeviceRoot(code) {\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z ||\n code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\n}\n// Resolves . and .. elements in a path with directory names\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length) {\n code = path.charCodeAt(i);\n }\n else if (isPathSeparator(code)) {\n break;\n }\n else {\n code = CHAR_FORWARD_SLASH;\n }\n if (isPathSeparator(code)) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n }\n else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 ||\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf(separator);\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n }\n else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) {\n res += separator + \"..\";\n }\n else {\n res = '..';\n }\n lastSegmentLength = 2;\n }\n }\n else {\n if (res.length > 0) {\n res += separator + path.slice(lastSlash + 1, i);\n }\n else {\n res = path.slice(lastSlash + 1, i);\n }\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n }\n else if (code === CHAR_DOT && dots !== -1) {\n ++dots;\n }\n else {\n dots = -1;\n }\n }\n return res;\n}\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base ||\n ((pathObject.name || '') + (pathObject.ext || ''));\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\nvar win32 = {\n // path.resolve([from ...], to)\n resolve: function () {\n var pathSegments = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n pathSegments[_i] = arguments[_i];\n }\n var resolvedDevice = '';\n var resolvedTail = '';\n var resolvedAbsolute = false;\n for (var i = pathSegments.length - 1; i >= -1; i--) {\n var path = void 0;\n if (i >= 0) {\n path = pathSegments[i];\n }\n else if (!resolvedDevice) {\n path = _process_js__WEBPACK_IMPORTED_MODULE_0__[\"cwd\"]();\n }\n else {\n // Windows has the concept of drive-specific current working\n // directories. If we've resolved a drive letter but not yet an\n // absolute path, get cwd for that drive, or the process cwd if\n // the drive cwd is not available. We're sure the device is not\n // a UNC path at this points, because UNC paths are always absolute.\n path = _process_js__WEBPACK_IMPORTED_MODULE_0__[\"env\"]['=' + resolvedDevice] || _process_js__WEBPACK_IMPORTED_MODULE_0__[\"cwd\"]();\n // Verify that a cwd was found and that it actually points\n // to our drive. If not, default to the drive's root.\n if (path === undefined ||\n path.slice(0, 3).toLowerCase() !==\n resolvedDevice.toLowerCase() + '\\\\') {\n path = resolvedDevice + '\\\\';\n }\n }\n validateString(path, 'path');\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n var len = path.length;\n var rootEnd = 0;\n var device = '';\n var isAbsolute = false;\n var code = path.charCodeAt(0);\n // Try to match a root\n if (len > 1) {\n if (isPathSeparator(code)) {\n // Possible UNC root\n // If we started with a separator, we know we at least have an\n // absolute path of some kind (UNC or otherwise)\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n var j = 2;\n var last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n var firstPart = path.slice(last, j);\n // Matched!\n last = j;\n // Match 1 or more path separators\n for (; j < len; ++j) {\n if (!isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j === len) {\n // We matched a UNC root only\n device = '\\\\\\\\' + firstPart + '\\\\' + path.slice(last);\n rootEnd = j;\n }\n else if (j !== last) {\n // We matched a UNC root with leftovers\n device = '\\\\\\\\' + firstPart + '\\\\' + path.slice(last, j);\n rootEnd = j;\n }\n }\n }\n }\n else {\n rootEnd = 1;\n }\n }\n else if (isWindowsDeviceRoot(code)) {\n // Possible device root\n if (path.charCodeAt(1) === CHAR_COLON) {\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2) {\n if (isPathSeparator(path.charCodeAt(2))) {\n // Treat separator following drive name as an absolute path\n // indicator\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n }\n }\n }\n else if (isPathSeparator(code)) {\n // `path` contains just a path separator\n rootEnd = 1;\n isAbsolute = true;\n }\n if (device.length > 0 &&\n resolvedDevice.length > 0 &&\n device.toLowerCase() !== resolvedDevice.toLowerCase()) {\n // This path points to another device so it is not applicable\n continue;\n }\n if (resolvedDevice.length === 0 && device.length > 0) {\n resolvedDevice = device;\n }\n if (!resolvedAbsolute) {\n resolvedTail = path.slice(rootEnd) + '\\\\' + resolvedTail;\n resolvedAbsolute = isAbsolute;\n }\n if (resolvedDevice.length > 0 && resolvedAbsolute) {\n break;\n }\n }\n // At this point the path should be resolved to a full absolute path,\n // but handle relative paths to be safe (might happen when process.cwd()\n // fails)\n // Normalize the tail path\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\n return (resolvedDevice + (resolvedAbsolute ? '\\\\' : '') + resolvedTail) ||\n '.';\n },\n normalize: function (path) {\n validateString(path, 'path');\n var len = path.length;\n if (len === 0) {\n return '.';\n }\n var rootEnd = 0;\n var device;\n var isAbsolute = false;\n var code = path.charCodeAt(0);\n // Try to match a root\n if (len > 1) {\n if (isPathSeparator(code)) {\n // Possible UNC root\n // If we started with a separator, we know we at least have an absolute\n // path of some kind (UNC or otherwise)\n isAbsolute = true;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n var j = 2;\n var last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n var firstPart = path.slice(last, j);\n // Matched!\n last = j;\n // Match 1 or more path separators\n for (; j < len; ++j) {\n if (!isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j === len) {\n // We matched a UNC root only\n // Return the normalized version of the UNC root since there\n // is nothing left to process\n return '\\\\\\\\' + firstPart + '\\\\' + path.slice(last) + '\\\\';\n }\n else if (j !== last) {\n // We matched a UNC root with leftovers\n device = '\\\\\\\\' + firstPart + '\\\\' + path.slice(last, j);\n rootEnd = j;\n }\n }\n }\n }\n else {\n rootEnd = 1;\n }\n }\n else if (isWindowsDeviceRoot(code)) {\n // Possible device root\n if (path.charCodeAt(1) === CHAR_COLON) {\n device = path.slice(0, 2);\n rootEnd = 2;\n if (len > 2) {\n if (isPathSeparator(path.charCodeAt(2))) {\n // Treat separator following drive name as an absolute path\n // indicator\n isAbsolute = true;\n rootEnd = 3;\n }\n }\n }\n }\n }\n else if (isPathSeparator(code)) {\n // `path` contains just a path separator, exit early to avoid unnecessary\n // work\n return '\\\\';\n }\n var tail;\n if (rootEnd < len) {\n tail = normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator);\n }\n else {\n tail = '';\n }\n if (tail.length === 0 && !isAbsolute) {\n tail = '.';\n }\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\n tail += '\\\\';\n }\n if (device === undefined) {\n if (isAbsolute) {\n if (tail.length > 0) {\n return '\\\\' + tail;\n }\n else {\n return '\\\\';\n }\n }\n else if (tail.length > 0) {\n return tail;\n }\n else {\n return '';\n }\n }\n else if (isAbsolute) {\n if (tail.length > 0) {\n return device + '\\\\' + tail;\n }\n else {\n return device + '\\\\';\n }\n }\n else if (tail.length > 0) {\n return device + tail;\n }\n else {\n return device;\n }\n },\n isAbsolute: function (path) {\n validateString(path, 'path');\n var len = path.length;\n if (len === 0) {\n return false;\n }\n var code = path.charCodeAt(0);\n if (isPathSeparator(code)) {\n return true;\n }\n else if (isWindowsDeviceRoot(code)) {\n // Possible device root\n if (len > 2 && path.charCodeAt(1) === CHAR_COLON) {\n if (isPathSeparator(path.charCodeAt(2))) {\n return true;\n }\n }\n }\n return false;\n },\n join: function () {\n var paths = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n paths[_i] = arguments[_i];\n }\n if (paths.length === 0) {\n return '.';\n }\n var joined;\n var firstPart;\n for (var i = 0; i < paths.length; ++i) {\n var arg = paths[i];\n validateString(arg, 'path');\n if (arg.length > 0) {\n if (joined === undefined) {\n joined = firstPart = arg;\n }\n else {\n joined += '\\\\' + arg;\n }\n }\n }\n if (joined === undefined) {\n return '.';\n }\n // Make sure that the joined path doesn't start with two slashes, because\n // normalize() will mistake it for an UNC path then.\n //\n // This step is skipped when it is very clear that the user actually\n // intended to point at an UNC path. This is assumed when the first\n // non-empty string arguments starts with exactly two slashes followed by\n // at least one more non-slash character.\n //\n // Note that for normalize() to treat a path as an UNC path it needs to\n // have at least 2 components, so we don't filter for that here.\n // This means that the user can use join to construct UNC paths from\n // a server name and a share name; for example:\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\n var needsReplace = true;\n var slashCount = 0;\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\n ++slashCount;\n var firstLen = firstPart.length;\n if (firstLen > 1) {\n if (isPathSeparator(firstPart.charCodeAt(1))) {\n ++slashCount;\n if (firstLen > 2) {\n if (isPathSeparator(firstPart.charCodeAt(2))) {\n ++slashCount;\n }\n else {\n // We matched a UNC path in the first part\n needsReplace = false;\n }\n }\n }\n }\n }\n if (needsReplace) {\n // Find any more consecutive slashes we need to replace\n for (; slashCount < joined.length; ++slashCount) {\n if (!isPathSeparator(joined.charCodeAt(slashCount))) {\n break;\n }\n }\n // Replace the slashes if needed\n if (slashCount >= 2) {\n joined = '\\\\' + joined.slice(slashCount);\n }\n }\n return win32.normalize(joined);\n },\n // It will solve the relative path from `from` to `to`, for instance:\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\n relative: function (from, to) {\n validateString(from, 'from');\n validateString(to, 'to');\n if (from === to) {\n return '';\n }\n var fromOrig = win32.resolve(from);\n var toOrig = win32.resolve(to);\n if (fromOrig === toOrig) {\n return '';\n }\n from = fromOrig.toLowerCase();\n to = toOrig.toLowerCase();\n if (from === to) {\n return '';\n }\n // Trim any leading backslashes\n var fromStart = 0;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) {\n break;\n }\n }\n // Trim trailing backslashes (applicable to UNC paths only)\n var fromEnd = from.length;\n for (; fromEnd - 1 > fromStart; --fromEnd) {\n if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) {\n break;\n }\n }\n var fromLen = (fromEnd - fromStart);\n // Trim any leading backslashes\n var toStart = 0;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) {\n break;\n }\n }\n // Trim trailing backslashes (applicable to UNC paths only)\n var toEnd = to.length;\n for (; toEnd - 1 > toStart; --toEnd) {\n if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) {\n break;\n }\n }\n var toLen = (toEnd - toStart);\n // Compare paths to find the longest common path from root\n var length = (fromLen < toLen ? fromLen : toLen);\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\n return toOrig.slice(toStart + i + 1);\n }\n else if (i === 2) {\n // We get here if `from` is the device root.\n // For example: from='C:\\\\'; to='C:\\\\foo'\n return toOrig.slice(toStart + i);\n }\n }\n if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\n lastCommonSep = i;\n }\n else if (i === 2) {\n // We get here if `to` is the device root.\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\n lastCommonSep = 3;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode) {\n break;\n }\n else if (fromCode === CHAR_BACKWARD_SLASH) {\n lastCommonSep = i;\n }\n }\n // We found a mismatch before the first common path separator was seen, so\n // return the original `to`.\n if (i !== length && lastCommonSep === -1) {\n return toOrig;\n }\n var out = '';\n if (lastCommonSep === -1) {\n lastCommonSep = 0;\n }\n // Generate the relative path based on the path difference between `to` and\n // `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\n if (out.length === 0) {\n out += '..';\n }\n else {\n out += '\\\\..';\n }\n }\n }\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0) {\n return out + toOrig.slice(toStart + lastCommonSep, toEnd);\n }\n else {\n toStart += lastCommonSep;\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\n ++toStart;\n }\n return toOrig.slice(toStart, toEnd);\n }\n },\n toNamespacedPath: function (path) {\n // Note: this will *probably* throw somewhere.\n if (typeof path !== 'string') {\n return path;\n }\n if (path.length === 0) {\n return '';\n }\n var resolvedPath = win32.resolve(path);\n if (resolvedPath.length >= 3) {\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\n // Possible UNC root\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\n var code = resolvedPath.charCodeAt(2);\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\n // Matched non-long UNC root, convert the path to a long UNC path\n return '\\\\\\\\?\\\\UNC\\\\' + resolvedPath.slice(2);\n }\n }\n }\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) {\n // Possible device root\n if (resolvedPath.charCodeAt(1) === CHAR_COLON &&\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\n // Matched device root, convert the path to a long UNC path\n return '\\\\\\\\?\\\\' + resolvedPath;\n }\n }\n }\n return path;\n },\n dirname: function (path) {\n validateString(path, 'path');\n var len = path.length;\n if (len === 0) {\n return '.';\n }\n var rootEnd = -1;\n var end = -1;\n var matchedSlash = true;\n var offset = 0;\n var code = path.charCodeAt(0);\n // Try to match a root\n if (len > 1) {\n if (isPathSeparator(code)) {\n // Possible UNC root\n rootEnd = offset = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n var j = 2;\n var last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more path separators\n for (; j < len; ++j) {\n if (!isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j === len) {\n // We matched a UNC root only\n return path;\n }\n if (j !== last) {\n // We matched a UNC root with leftovers\n // Offset by 1 to include the separator after the UNC root to\n // treat it as a \"normal root\" on top of a (UNC) root\n rootEnd = offset = j + 1;\n }\n }\n }\n }\n }\n else if (isWindowsDeviceRoot(code)) {\n // Possible device root\n if (path.charCodeAt(1) === CHAR_COLON) {\n rootEnd = offset = 2;\n if (len > 2) {\n if (isPathSeparator(path.charCodeAt(2))) {\n rootEnd = offset = 3;\n }\n }\n }\n }\n }\n else if (isPathSeparator(code)) {\n // `path` contains just a path separator, exit early to avoid\n // unnecessary work\n return path;\n }\n for (var i = len - 1; i >= offset; --i) {\n if (isPathSeparator(path.charCodeAt(i))) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n }\n else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n if (end === -1) {\n if (rootEnd === -1) {\n return '.';\n }\n else {\n end = rootEnd;\n }\n }\n return path.slice(0, end);\n },\n basename: function (path, ext) {\n if (ext !== undefined) {\n validateString(ext, 'ext');\n }\n validateString(path, 'path');\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n // Check for a drive letter prefix so as not to mistake the following\n // path separator as an extra separator at the end of the path that can be\n // disregarded\n if (path.length >= 2) {\n var drive = path.charCodeAt(0);\n if (isWindowsDeviceRoot(drive)) {\n if (path.charCodeAt(1) === CHAR_COLON) {\n start = 2;\n }\n }\n }\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) {\n return '';\n }\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= start; --i) {\n var code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n }\n else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end) {\n end = firstNonSlashEnd;\n }\n else if (end === -1) {\n end = path.length;\n }\n return path.slice(start, end);\n }\n else {\n for (i = path.length - 1; i >= start; --i) {\n if (isPathSeparator(path.charCodeAt(i))) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1) {\n return '';\n }\n return path.slice(start, end);\n }\n },\n extname: function (path) {\n validateString(path, 'path');\n var start = 0;\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n // Check for a drive letter prefix so as not to mistake the following\n // path separator as an extra separator at the end of the path that can be\n // disregarded\n if (path.length >= 2 &&\n path.charCodeAt(1) === CHAR_COLON &&\n isWindowsDeviceRoot(path.charCodeAt(0))) {\n start = startPart = 2;\n }\n for (var i = path.length - 1; i >= start; --i) {\n var code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n return '';\n }\n return path.slice(startDot, end);\n },\n format: function (pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\n }\n return _format('\\\\', pathObject);\n },\n parse: function (path) {\n validateString(path, 'path');\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) {\n return ret;\n }\n var len = path.length;\n var rootEnd = 0;\n var code = path.charCodeAt(0);\n // Try to match a root\n if (len > 1) {\n if (isPathSeparator(code)) {\n // Possible UNC root\n rootEnd = 1;\n if (isPathSeparator(path.charCodeAt(1))) {\n // Matched double path separator at beginning\n var j = 2;\n var last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more path separators\n for (; j < len; ++j) {\n if (!isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j < len && j !== last) {\n // Matched!\n last = j;\n // Match 1 or more non-path separators\n for (; j < len; ++j) {\n if (isPathSeparator(path.charCodeAt(j))) {\n break;\n }\n }\n if (j === len) {\n // We matched a UNC root only\n rootEnd = j;\n }\n else if (j !== last) {\n // We matched a UNC root with leftovers\n rootEnd = j + 1;\n }\n }\n }\n }\n }\n else if (isWindowsDeviceRoot(code)) {\n // Possible device root\n if (path.charCodeAt(1) === CHAR_COLON) {\n rootEnd = 2;\n if (len > 2) {\n if (isPathSeparator(path.charCodeAt(2))) {\n if (len === 3) {\n // `path` contains just a drive root, exit early to avoid\n // unnecessary work\n ret.root = ret.dir = path;\n return ret;\n }\n rootEnd = 3;\n }\n }\n else {\n // `path` contains just a drive root, exit early to avoid\n // unnecessary work\n ret.root = ret.dir = path;\n return ret;\n }\n }\n }\n }\n else if (isPathSeparator(code)) {\n // `path` contains just a path separator, exit early to avoid\n // unnecessary work\n ret.root = ret.dir = path;\n return ret;\n }\n if (rootEnd > 0) {\n ret.root = path.slice(0, rootEnd);\n }\n var startDot = -1;\n var startPart = rootEnd;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n // Get non-dir info\n for (; i >= rootEnd; --i) {\n code = path.charCodeAt(i);\n if (isPathSeparator(code)) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n if (end !== -1) {\n ret.base = ret.name = path.slice(startPart, end);\n }\n }\n else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n ret.ext = path.slice(startDot, end);\n }\n // If the directory is the root, use the entire root as the `dir` including\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\n if (startPart > 0 && startPart !== rootEnd) {\n ret.dir = path.slice(0, startPart - 1);\n }\n else {\n ret.dir = ret.root;\n }\n return ret;\n },\n sep: '\\\\',\n delimiter: ';',\n win32: null,\n posix: null\n};\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function () {\n var pathSegments = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n pathSegments[_i] = arguments[_i];\n }\n var resolvedPath = '';\n var resolvedAbsolute = false;\n for (var i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = void 0;\n if (i >= 0) {\n path = pathSegments[i];\n }\n else {\n path = _process_js__WEBPACK_IMPORTED_MODULE_0__[\"cwd\"]();\n }\n validateString(path, 'path');\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n }\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0) {\n return '/' + resolvedPath;\n }\n else {\n return '/';\n }\n }\n else if (resolvedPath.length > 0) {\n return resolvedPath;\n }\n else {\n return '.';\n }\n },\n normalize: function (path) {\n validateString(path, 'path');\n if (path.length === 0) {\n return '.';\n }\n var isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n var trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\n // Normalize the path\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\n if (path.length === 0 && !isAbsolute) {\n path = '.';\n }\n if (path.length > 0 && trailingSeparator) {\n path += '/';\n }\n if (isAbsolute) {\n return '/' + path;\n }\n return path;\n },\n isAbsolute: function (path) {\n validateString(path, 'path');\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n },\n join: function () {\n var paths = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n paths[_i] = arguments[_i];\n }\n if (paths.length === 0) {\n return '.';\n }\n var joined;\n for (var i = 0; i < paths.length; ++i) {\n var arg = arguments[i];\n validateString(arg, 'path');\n if (arg.length > 0) {\n if (joined === undefined) {\n joined = arg;\n }\n else {\n joined += '/' + arg;\n }\n }\n }\n if (joined === undefined) {\n return '.';\n }\n return posix.normalize(joined);\n },\n relative: function (from, to) {\n validateString(from, 'from');\n validateString(to, 'to');\n if (from === to) {\n return '';\n }\n from = posix.resolve(from);\n to = posix.resolve(to);\n if (from === to) {\n return '';\n }\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) {\n break;\n }\n }\n var fromEnd = from.length;\n var fromLen = (fromEnd - fromStart);\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) {\n break;\n }\n }\n var toEnd = to.length;\n var toLen = (toEnd - toStart);\n // Compare paths to find the longest common path from root\n var length = (fromLen < toLen ? fromLen : toLen);\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n }\n else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n }\n else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n }\n else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode) {\n break;\n }\n else if (fromCode === CHAR_FORWARD_SLASH) {\n lastCommonSep = i;\n }\n }\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (out.length === 0) {\n out += '..';\n }\n else {\n out += '/..';\n }\n }\n }\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0) {\n return out + to.slice(toStart + lastCommonSep);\n }\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) {\n ++toStart;\n }\n return to.slice(toStart);\n }\n },\n toNamespacedPath: function (path) {\n // Non-op on posix systems\n return path;\n },\n dirname: function (path) {\n validateString(path, 'path');\n if (path.length === 0) {\n return '.';\n }\n var hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n }\n else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n if (end === -1) {\n return hasRoot ? '/' : '.';\n }\n if (hasRoot && end === 1) {\n return '//';\n }\n return path.slice(0, end);\n },\n basename: function (path, ext) {\n if (ext !== undefined) {\n validateString(ext, 'ext');\n }\n validateString(path, 'path');\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) {\n return '';\n }\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n }\n else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end) {\n end = firstNonSlashEnd;\n }\n else if (end === -1) {\n end = path.length;\n }\n return path.slice(start, end);\n }\n else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n }\n else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1) {\n return '';\n }\n return path.slice(start, end);\n }\n },\n extname: function (path) {\n validateString(path, 'path');\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n return '';\n }\n return path.slice(startDot, end);\n },\n format: function (pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\n }\n return _format('/', pathObject);\n },\n parse: function (path) {\n validateString(path, 'path');\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) {\n return ret;\n }\n var isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n }\n else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n // Get non-dir info\n for (; i >= start; --i) {\n var code = path.charCodeAt(i);\n if (code === CHAR_FORWARD_SLASH) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === CHAR_DOT) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) {\n startDot = i;\n }\n else if (preDotState !== 1) {\n preDotState = 1;\n }\n }\n else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n if (startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 &&\n startDot === end - 1 &&\n startDot === startPart + 1)) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) {\n ret.base = ret.name = path.slice(1, end);\n }\n else {\n ret.base = ret.name = path.slice(startPart, end);\n }\n }\n }\n else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n }\n else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n if (startPart > 0) {\n ret.dir = path.slice(0, startPart - 1);\n }\n else if (isAbsolute) {\n ret.dir = '/';\n }\n return ret;\n },\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\nposix.win32 = win32.win32 = win32;\nposix.posix = win32.posix = posix;\nvar normalize = (_process_js__WEBPACK_IMPORTED_MODULE_0__[\"platform\"] === 'win32' ? win32.normalize : posix.normalize);\nvar join = (_process_js__WEBPACK_IMPORTED_MODULE_0__[\"platform\"] === 'win32' ? win32.join : posix.join);\nvar relative = (_process_js__WEBPACK_IMPORTED_MODULE_0__[\"platform\"] === 'win32' ? win32.relative : posix.relative);\nvar dirname = (_process_js__WEBPACK_IMPORTED_MODULE_0__[\"platform\"] === 'win32' ? win32.dirname : posix.dirname);\nvar basename = (_process_js__WEBPACK_IMPORTED_MODULE_0__[\"platform\"] === 'win32' ? win32.basename : posix.basename);\nvar extname = (_process_js__WEBPACK_IMPORTED_MODULE_0__[\"platform\"] === 'win32' ? win32.extname : posix.extname);\nvar sep = (_process_js__WEBPACK_IMPORTED_MODULE_0__[\"platform\"] === 'win32' ? win32.sep : posix.sep);\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/path.js?")},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/platform.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process, global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWindows\", function() { return isWindows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMacintosh\", function() { return isMacintosh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLinux\", function() { return isLinux; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNative\", function() { return isNative; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeb\", function() { return isWeb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"globals\", function() { return globals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setImmediate\", function() { return setImmediate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OS\", function() { return OS; });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar LANGUAGE_DEFAULT = 'en';\nvar _isWindows = false;\nvar _isMacintosh = false;\nvar _isLinux = false;\nvar _isNative = false;\nvar _isWeb = false;\nvar _locale = undefined;\nvar _language = LANGUAGE_DEFAULT;\nvar _translationsConfigFile = undefined;\nvar isElectronRenderer = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'renderer');\n// OS detection\nif (typeof navigator === 'object' && !isElectronRenderer) {\n var userAgent = navigator.userAgent;\n _isWindows = userAgent.indexOf('Windows') >= 0;\n _isMacintosh = userAgent.indexOf('Macintosh') >= 0;\n _isLinux = userAgent.indexOf('Linux') >= 0;\n _isWeb = true;\n _locale = navigator.language;\n _language = _locale;\n}\nelse if (typeof process === 'object') {\n _isWindows = (process.platform === 'win32');\n _isMacintosh = (process.platform === 'darwin');\n _isLinux = (process.platform === 'linux');\n _locale = LANGUAGE_DEFAULT;\n _language = LANGUAGE_DEFAULT;\n var rawNlsConfig = process.env['VSCODE_NLS_CONFIG'];\n if (rawNlsConfig) {\n try {\n var nlsConfig = JSON.parse(rawNlsConfig);\n var resolved = nlsConfig.availableLanguages['*'];\n _locale = nlsConfig.locale;\n // VSCode's default language is 'en'\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\n _translationsConfigFile = nlsConfig._translationsConfigFile;\n }\n catch (e) {\n }\n }\n _isNative = true;\n}\nvar _platform = 0 /* Web */;\nif (_isNative) {\n if (_isMacintosh) {\n _platform = 1 /* Mac */;\n }\n else if (_isWindows) {\n _platform = 3 /* Windows */;\n }\n else if (_isLinux) {\n _platform = 2 /* Linux */;\n }\n}\nvar isWindows = _isWindows;\nvar isMacintosh = _isMacintosh;\nvar isLinux = _isLinux;\nvar isNative = _isNative;\nvar isWeb = _isWeb;\nvar _globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {});\nvar globals = _globals;\nvar _setImmediate = null;\nfunction setImmediate(callback) {\n if (_setImmediate === null) {\n if (globals.setImmediate) {\n _setImmediate = globals.setImmediate.bind(globals);\n }\n else if (typeof process !== 'undefined' && typeof process.nextTick === 'function') {\n _setImmediate = process.nextTick.bind(process);\n }\n else {\n _setImmediate = globals.setTimeout.bind(globals);\n }\n }\n return _setImmediate(callback);\n}\nvar OS = (_isMacintosh ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../_process@0.11.10@process/browser.js */ \"../node_modules/_process@0.11.10@process/browser.js\"), __webpack_require__(/*! ./../../../../../_webpack@4.41.2@webpack/buildin/global.js */ \"../node_modules/_webpack@4.41.2@webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/platform.js?")},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/process.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cwd", function() { return cwd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "env", function() { return env; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "platform", function() { return platform; });\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./platform.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/platform.js");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nvar safeProcess = (typeof process === \'undefined\') ? {\n cwd: function () { return \'/\'; },\n env: Object.create(null),\n get platform() { return _platform_js__WEBPACK_IMPORTED_MODULE_0__["isWindows"] ? \'win32\' : _platform_js__WEBPACK_IMPORTED_MODULE_0__["isMacintosh"] ? \'darwin\' : \'linux\'; },\n nextTick: function (callback) { return Object(_platform_js__WEBPACK_IMPORTED_MODULE_0__["setImmediate"])(callback); }\n} : process;\nvar cwd = safeProcess.cwd;\nvar env = safeProcess.env;\nvar platform = safeProcess.platform;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../_process@0.11.10@process/browser.js */ "../node_modules/_process@0.11.10@process/browser.js")))\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/process.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/range.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Range", function() { return Range; });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar Range;\n(function (Range) {\n /**\n * Returns the intersection between two ranges as a range itself.\n * Returns `{ start: 0, end: 0 }` if the intersection is empty.\n */\n function intersect(one, other) {\n if (one.start >= other.end || other.start >= one.end) {\n return { start: 0, end: 0 };\n }\n var start = Math.max(one.start, other.start);\n var end = Math.min(one.end, other.end);\n if (end - start <= 0) {\n return { start: 0, end: 0 };\n }\n return { start: start, end: end };\n }\n Range.intersect = intersect;\n function isEmpty(range) {\n return range.end - range.start <= 0;\n }\n Range.isEmpty = isEmpty;\n function intersects(one, other) {\n return !isEmpty(intersect(one, other));\n }\n Range.intersects = intersects;\n function relativeComplement(one, other) {\n var result = [];\n var first = { start: one.start, end: Math.min(other.start, one.end) };\n var second = { start: Math.max(other.end, one.start), end: one.end };\n if (!isEmpty(first)) {\n result.push(first);\n }\n if (!isEmpty(second)) {\n result.push(second);\n }\n return result;\n }\n Range.relativeComplement = relativeComplement;\n})(Range || (Range = {}));\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/range.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/resources.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasToIgnoreCase", function() { return hasToIgnoreCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "basenameOrAuthority", function() { return basenameOrAuthority; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEqualAuthority", function() { return isEqualAuthority; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEqual", function() { return isEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "basename", function() { return basename; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dirname", function() { return dirname; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "joinPath", function() { return joinPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "normalizePath", function() { return normalizePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "originalFSPath", function() { return originalFSPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "relativePath", function() { return relativePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DataUri", function() { return DataUri; });\n/* harmony import */ var _extpath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./extpath.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/extpath.js");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/path.js");\n/* harmony import */ var _uri_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uri.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/uri.js");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./strings.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/strings.js");\n/* harmony import */ var _network_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./network.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/network.js");\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./platform.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/platform.js");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\n\n\n\n\nfunction hasToIgnoreCase(resource) {\n // A file scheme resource is in the same platform as code, so ignore case for non linux platforms\n // Resource can be from another platform. Lowering the case as an hack. Should come from File system provider\n return resource && resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_4__["Schemas"].file ? !_platform_js__WEBPACK_IMPORTED_MODULE_5__["isLinux"] : true;\n}\nfunction basenameOrAuthority(resource) {\n return basename(resource) || resource.authority;\n}\n/**\n * Tests wheter the two authorities are the same\n */\nfunction isEqualAuthority(a1, a2) {\n return a1 === a2 || Object(_strings_js__WEBPACK_IMPORTED_MODULE_3__["equalsIgnoreCase"])(a1, a2);\n}\nfunction isEqual(first, second, ignoreCase) {\n if (ignoreCase === void 0) { ignoreCase = hasToIgnoreCase(first); }\n if (first === second) {\n return true;\n }\n if (!first || !second) {\n return false;\n }\n if (first.scheme !== second.scheme || !isEqualAuthority(first.authority, second.authority)) {\n return false;\n }\n var p1 = first.path || \'/\', p2 = second.path || \'/\';\n return p1 === p2 || ignoreCase && Object(_strings_js__WEBPACK_IMPORTED_MODULE_3__["equalsIgnoreCase"])(p1 || \'/\', p2 || \'/\');\n}\nfunction basename(resource) {\n return _path_js__WEBPACK_IMPORTED_MODULE_1__["posix"].basename(resource.path);\n}\n/**\n * Return a URI representing the directory of a URI path.\n *\n * @param resource The input URI.\n * @returns The URI representing the directory of the input URI.\n */\nfunction dirname(resource) {\n if (resource.path.length === 0) {\n return resource;\n }\n if (resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_4__["Schemas"].file) {\n return _uri_js__WEBPACK_IMPORTED_MODULE_2__["URI"].file(_path_js__WEBPACK_IMPORTED_MODULE_1__["dirname"](originalFSPath(resource)));\n }\n var dirname = _path_js__WEBPACK_IMPORTED_MODULE_1__["posix"].dirname(resource.path);\n if (resource.authority && dirname.length && dirname.charCodeAt(0) !== 47 /* Slash */) {\n console.error("dirname(\\"" + resource.toString + ")) resulted in a relative path");\n dirname = \'/\'; // If a URI contains an authority component, then the path component must either be empty or begin with a CharCode.Slash ("/") character\n }\n return resource.with({\n path: dirname\n });\n}\n/**\n * Join a URI path with path fragments and normalizes the resulting path.\n *\n * @param resource The input URI.\n * @param pathFragment The path fragment to add to the URI path.\n * @returns The resulting URI.\n */\nfunction joinPath(resource) {\n var _a;\n var pathFragment = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n pathFragment[_i - 1] = arguments[_i];\n }\n var joinedPath;\n if (resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_4__["Schemas"].file) {\n joinedPath = _uri_js__WEBPACK_IMPORTED_MODULE_2__["URI"].file(_path_js__WEBPACK_IMPORTED_MODULE_1__["join"].apply(_path_js__WEBPACK_IMPORTED_MODULE_1__, [originalFSPath(resource)].concat(pathFragment))).path;\n }\n else {\n joinedPath = (_a = _path_js__WEBPACK_IMPORTED_MODULE_1__["posix"]).join.apply(_a, [resource.path || \'/\'].concat(pathFragment));\n }\n return resource.with({\n path: joinedPath\n });\n}\n/**\n * Normalizes the path part of a URI: Resolves `.` and `..` elements with directory names.\n *\n * @param resource The URI to normalize the path.\n * @returns The URI with the normalized path.\n */\nfunction normalizePath(resource) {\n if (!resource.path.length) {\n return resource;\n }\n var normalizedPath;\n if (resource.scheme === _network_js__WEBPACK_IMPORTED_MODULE_4__["Schemas"].file) {\n normalizedPath = _uri_js__WEBPACK_IMPORTED_MODULE_2__["URI"].file(_path_js__WEBPACK_IMPORTED_MODULE_1__["normalize"](originalFSPath(resource))).path;\n }\n else {\n normalizedPath = _path_js__WEBPACK_IMPORTED_MODULE_1__["posix"].normalize(resource.path);\n }\n return resource.with({\n path: normalizedPath\n });\n}\n/**\n * Returns the fsPath of an URI where the drive letter is not normalized.\n * See #56403.\n */\nfunction originalFSPath(uri) {\n var value;\n var uriPath = uri.path;\n if (uri.authority && uriPath.length > 1 && uri.scheme === _network_js__WEBPACK_IMPORTED_MODULE_4__["Schemas"].file) {\n // unc path: file://shares/c$/far/boo\n value = "//" + uri.authority + uriPath;\n }\n else if (_platform_js__WEBPACK_IMPORTED_MODULE_5__["isWindows"]\n && uriPath.charCodeAt(0) === 47 /* Slash */\n && _extpath_js__WEBPACK_IMPORTED_MODULE_0__["isWindowsDriveLetter"](uriPath.charCodeAt(1))\n && uriPath.charCodeAt(2) === 58 /* Colon */) {\n value = uriPath.substr(1);\n }\n else {\n // other path\n value = uriPath;\n }\n if (_platform_js__WEBPACK_IMPORTED_MODULE_5__["isWindows"]) {\n value = value.replace(/\\//g, \'\\\\\');\n }\n return value;\n}\n/**\n * Returns a relative path between two URIs. If the URIs don\'t have the same schema or authority, `undefined` is returned.\n * The returned relative path always uses forward slashes.\n */\nfunction relativePath(from, to) {\n if (from.scheme !== to.scheme || !isEqualAuthority(from.authority, to.authority)) {\n return undefined;\n }\n if (from.scheme === _network_js__WEBPACK_IMPORTED_MODULE_4__["Schemas"].file) {\n var relativePath_1 = _path_js__WEBPACK_IMPORTED_MODULE_1__["relative"](from.path, to.path);\n return _platform_js__WEBPACK_IMPORTED_MODULE_5__["isWindows"] ? _extpath_js__WEBPACK_IMPORTED_MODULE_0__["toSlashes"](relativePath_1) : relativePath_1;\n }\n return _path_js__WEBPACK_IMPORTED_MODULE_1__["posix"].relative(from.path || \'/\', to.path || \'/\');\n}\n/**\n * Data URI related helpers.\n */\nvar DataUri;\n(function (DataUri) {\n DataUri.META_DATA_LABEL = \'label\';\n DataUri.META_DATA_DESCRIPTION = \'description\';\n DataUri.META_DATA_SIZE = \'size\';\n DataUri.META_DATA_MIME = \'mime\';\n function parseMetaData(dataUri) {\n var metadata = new Map();\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\n // the metadata is: size:2313;label:SomeLabel;description:SomeDescription\n var meta = dataUri.path.substring(dataUri.path.indexOf(\';\') + 1, dataUri.path.lastIndexOf(\';\'));\n meta.split(\';\').forEach(function (property) {\n var _a = property.split(\':\'), key = _a[0], value = _a[1];\n if (key && value) {\n metadata.set(key, value);\n }\n });\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\n // the mime is: image/png\n var mime = dataUri.path.substring(0, dataUri.path.indexOf(\';\'));\n if (mime) {\n metadata.set(DataUri.META_DATA_MIME, mime);\n }\n return metadata;\n }\n DataUri.parseMetaData = parseMetaData;\n})(DataUri || (DataUri = {}));\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/resources.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/scrollable.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ScrollState\", function() { return ScrollState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scrollable\", function() { return Scrollable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SmoothScrollingUpdate\", function() { return SmoothScrollingUpdate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SmoothScrollingOperation\", function() { return SmoothScrollingOperation; });\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./event.js */ \"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/event.js\");\n/* harmony import */ var _lifecycle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lifecycle.js */ \"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/lifecycle.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __extends = (undefined && undefined.__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})();\n\n\nvar ScrollState = /** @class */ (function () {\n function ScrollState(width, scrollWidth, scrollLeft, height, scrollHeight, scrollTop) {\n width = width | 0;\n scrollWidth = scrollWidth | 0;\n scrollLeft = scrollLeft | 0;\n height = height | 0;\n scrollHeight = scrollHeight | 0;\n scrollTop = scrollTop | 0;\n if (width < 0) {\n width = 0;\n }\n if (scrollLeft + width > scrollWidth) {\n scrollLeft = scrollWidth - width;\n }\n if (scrollLeft < 0) {\n scrollLeft = 0;\n }\n if (height < 0) {\n height = 0;\n }\n if (scrollTop + height > scrollHeight) {\n scrollTop = scrollHeight - height;\n }\n if (scrollTop < 0) {\n scrollTop = 0;\n }\n this.width = width;\n this.scrollWidth = scrollWidth;\n this.scrollLeft = scrollLeft;\n this.height = height;\n this.scrollHeight = scrollHeight;\n this.scrollTop = scrollTop;\n }\n ScrollState.prototype.equals = function (other) {\n return (this.width === other.width\n && this.scrollWidth === other.scrollWidth\n && this.scrollLeft === other.scrollLeft\n && this.height === other.height\n && this.scrollHeight === other.scrollHeight\n && this.scrollTop === other.scrollTop);\n };\n ScrollState.prototype.withScrollDimensions = function (update) {\n return new ScrollState((typeof update.width !== 'undefined' ? update.width : this.width), (typeof update.scrollWidth !== 'undefined' ? update.scrollWidth : this.scrollWidth), this.scrollLeft, (typeof update.height !== 'undefined' ? update.height : this.height), (typeof update.scrollHeight !== 'undefined' ? update.scrollHeight : this.scrollHeight), this.scrollTop);\n };\n ScrollState.prototype.withScrollPosition = function (update) {\n return new ScrollState(this.width, this.scrollWidth, (typeof update.scrollLeft !== 'undefined' ? update.scrollLeft : this.scrollLeft), this.height, this.scrollHeight, (typeof update.scrollTop !== 'undefined' ? update.scrollTop : this.scrollTop));\n };\n ScrollState.prototype.createScrollEvent = function (previous) {\n var widthChanged = (this.width !== previous.width);\n var scrollWidthChanged = (this.scrollWidth !== previous.scrollWidth);\n var scrollLeftChanged = (this.scrollLeft !== previous.scrollLeft);\n var heightChanged = (this.height !== previous.height);\n var scrollHeightChanged = (this.scrollHeight !== previous.scrollHeight);\n var scrollTopChanged = (this.scrollTop !== previous.scrollTop);\n return {\n width: this.width,\n scrollWidth: this.scrollWidth,\n scrollLeft: this.scrollLeft,\n height: this.height,\n scrollHeight: this.scrollHeight,\n scrollTop: this.scrollTop,\n widthChanged: widthChanged,\n scrollWidthChanged: scrollWidthChanged,\n scrollLeftChanged: scrollLeftChanged,\n heightChanged: heightChanged,\n scrollHeightChanged: scrollHeightChanged,\n scrollTopChanged: scrollTopChanged,\n };\n };\n return ScrollState;\n}());\n\nvar Scrollable = /** @class */ (function (_super) {\n __extends(Scrollable, _super);\n function Scrollable(smoothScrollDuration, scheduleAtNextAnimationFrame) {\n var _this = _super.call(this) || this;\n _this._onScroll = _this._register(new _event_js__WEBPACK_IMPORTED_MODULE_0__[\"Emitter\"]());\n _this.onScroll = _this._onScroll.event;\n _this._smoothScrollDuration = smoothScrollDuration;\n _this._scheduleAtNextAnimationFrame = scheduleAtNextAnimationFrame;\n _this._state = new ScrollState(0, 0, 0, 0, 0, 0);\n _this._smoothScrolling = null;\n return _this;\n }\n Scrollable.prototype.dispose = function () {\n if (this._smoothScrolling) {\n this._smoothScrolling.dispose();\n this._smoothScrolling = null;\n }\n _super.prototype.dispose.call(this);\n };\n Scrollable.prototype.setSmoothScrollDuration = function (smoothScrollDuration) {\n this._smoothScrollDuration = smoothScrollDuration;\n };\n Scrollable.prototype.validateScrollPosition = function (scrollPosition) {\n return this._state.withScrollPosition(scrollPosition);\n };\n Scrollable.prototype.getScrollDimensions = function () {\n return this._state;\n };\n Scrollable.prototype.setScrollDimensions = function (dimensions) {\n var newState = this._state.withScrollDimensions(dimensions);\n this._setState(newState);\n // Validate outstanding animated scroll position target\n if (this._smoothScrolling) {\n this._smoothScrolling.acceptScrollDimensions(this._state);\n }\n };\n /**\n * Returns the final scroll position that the instance will have once the smooth scroll animation concludes.\n * If no scroll animation is occurring, it will return the current scroll position instead.\n */\n Scrollable.prototype.getFutureScrollPosition = function () {\n if (this._smoothScrolling) {\n return this._smoothScrolling.to;\n }\n return this._state;\n };\n /**\n * Returns the current scroll position.\n * Note: This result might be an intermediate scroll position, as there might be an ongoing smooth scroll animation.\n */\n Scrollable.prototype.getCurrentScrollPosition = function () {\n return this._state;\n };\n Scrollable.prototype.setScrollPositionNow = function (update) {\n // no smooth scrolling requested\n var newState = this._state.withScrollPosition(update);\n // Terminate any outstanding smooth scrolling\n if (this._smoothScrolling) {\n this._smoothScrolling.dispose();\n this._smoothScrolling = null;\n }\n this._setState(newState);\n };\n Scrollable.prototype.setScrollPositionSmooth = function (update) {\n var _this = this;\n if (this._smoothScrollDuration === 0) {\n // Smooth scrolling not supported.\n return this.setScrollPositionNow(update);\n }\n if (this._smoothScrolling) {\n // Combine our pending scrollLeft/scrollTop with incoming scrollLeft/scrollTop\n update = {\n scrollLeft: (typeof update.scrollLeft === 'undefined' ? this._smoothScrolling.to.scrollLeft : update.scrollLeft),\n scrollTop: (typeof update.scrollTop === 'undefined' ? this._smoothScrolling.to.scrollTop : update.scrollTop)\n };\n // Validate `update`\n var validTarget = this._state.withScrollPosition(update);\n if (this._smoothScrolling.to.scrollLeft === validTarget.scrollLeft && this._smoothScrolling.to.scrollTop === validTarget.scrollTop) {\n // No need to interrupt or extend the current animation since we're going to the same place\n return;\n }\n var newSmoothScrolling = this._smoothScrolling.combine(this._state, validTarget, this._smoothScrollDuration);\n this._smoothScrolling.dispose();\n this._smoothScrolling = newSmoothScrolling;\n }\n else {\n // Validate `update`\n var validTarget = this._state.withScrollPosition(update);\n this._smoothScrolling = SmoothScrollingOperation.start(this._state, validTarget, this._smoothScrollDuration);\n }\n // Begin smooth scrolling animation\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(function () {\n if (!_this._smoothScrolling) {\n return;\n }\n _this._smoothScrolling.animationFrameDisposable = null;\n _this._performSmoothScrolling();\n });\n };\n Scrollable.prototype._performSmoothScrolling = function () {\n var _this = this;\n if (!this._smoothScrolling) {\n return;\n }\n var update = this._smoothScrolling.tick();\n var newState = this._state.withScrollPosition(update);\n this._setState(newState);\n if (update.isDone) {\n this._smoothScrolling.dispose();\n this._smoothScrolling = null;\n return;\n }\n // Continue smooth scrolling animation\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(function () {\n if (!_this._smoothScrolling) {\n return;\n }\n _this._smoothScrolling.animationFrameDisposable = null;\n _this._performSmoothScrolling();\n });\n };\n Scrollable.prototype._setState = function (newState) {\n var oldState = this._state;\n if (oldState.equals(newState)) {\n // no change\n return;\n }\n this._state = newState;\n this._onScroll.fire(this._state.createScrollEvent(oldState));\n };\n return Scrollable;\n}(_lifecycle_js__WEBPACK_IMPORTED_MODULE_1__[\"Disposable\"]));\n\nvar SmoothScrollingUpdate = /** @class */ (function () {\n function SmoothScrollingUpdate(scrollLeft, scrollTop, isDone) {\n this.scrollLeft = scrollLeft;\n this.scrollTop = scrollTop;\n this.isDone = isDone;\n }\n return SmoothScrollingUpdate;\n}());\n\nfunction createEaseOutCubic(from, to) {\n var delta = to - from;\n return function (completion) {\n return from + delta * easeOutCubic(completion);\n };\n}\nfunction createComposed(a, b, cut) {\n return function (completion) {\n if (completion < cut) {\n return a(completion / cut);\n }\n return b((completion - cut) / (1 - cut));\n };\n}\nvar SmoothScrollingOperation = /** @class */ (function () {\n function SmoothScrollingOperation(from, to, startTime, duration) {\n this.from = from;\n this.to = to;\n this.duration = duration;\n this._startTime = startTime;\n this.animationFrameDisposable = null;\n this._initAnimations();\n }\n SmoothScrollingOperation.prototype._initAnimations = function () {\n this.scrollLeft = this._initAnimation(this.from.scrollLeft, this.to.scrollLeft, this.to.width);\n this.scrollTop = this._initAnimation(this.from.scrollTop, this.to.scrollTop, this.to.height);\n };\n SmoothScrollingOperation.prototype._initAnimation = function (from, to, viewportSize) {\n var delta = Math.abs(from - to);\n if (delta > 2.5 * viewportSize) {\n var stop1 = void 0, stop2 = void 0;\n if (from < to) {\n // scroll to 75% of the viewportSize\n stop1 = from + 0.75 * viewportSize;\n stop2 = to - 0.75 * viewportSize;\n }\n else {\n stop1 = from - 0.75 * viewportSize;\n stop2 = to + 0.75 * viewportSize;\n }\n return createComposed(createEaseOutCubic(from, stop1), createEaseOutCubic(stop2, to), 0.33);\n }\n return createEaseOutCubic(from, to);\n };\n SmoothScrollingOperation.prototype.dispose = function () {\n if (this.animationFrameDisposable !== null) {\n this.animationFrameDisposable.dispose();\n this.animationFrameDisposable = null;\n }\n };\n SmoothScrollingOperation.prototype.acceptScrollDimensions = function (state) {\n this.to = state.withScrollPosition(this.to);\n this._initAnimations();\n };\n SmoothScrollingOperation.prototype.tick = function () {\n return this._tick(Date.now());\n };\n SmoothScrollingOperation.prototype._tick = function (now) {\n var completion = (now - this._startTime) / this.duration;\n if (completion < 1) {\n var newScrollLeft = this.scrollLeft(completion);\n var newScrollTop = this.scrollTop(completion);\n return new SmoothScrollingUpdate(newScrollLeft, newScrollTop, false);\n }\n return new SmoothScrollingUpdate(this.to.scrollLeft, this.to.scrollTop, true);\n };\n SmoothScrollingOperation.prototype.combine = function (from, to, duration) {\n return SmoothScrollingOperation.start(from, to, duration);\n };\n SmoothScrollingOperation.start = function (from, to, duration) {\n // +10 / -10 : pretend the animation already started for a quicker response to a scroll request\n duration = duration + 10;\n var startTime = Date.now() - 10;\n return new SmoothScrollingOperation(from, to, startTime, duration);\n };\n return SmoothScrollingOperation;\n}());\n\nfunction easeInCubic(t) {\n return Math.pow(t, 3);\n}\nfunction easeOutCubic(t) {\n return 1 - easeInCubic(1 - t);\n}\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/scrollable.js?")},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/severity.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nls_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../nls.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/nls.js");\n/* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./strings.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/strings.js");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n\nvar Severity;\n(function (Severity) {\n Severity[Severity["Ignore"] = 0] = "Ignore";\n Severity[Severity["Info"] = 1] = "Info";\n Severity[Severity["Warning"] = 2] = "Warning";\n Severity[Severity["Error"] = 3] = "Error";\n})(Severity || (Severity = {}));\n(function (Severity) {\n var _error = \'error\';\n var _warning = \'warning\';\n var _warn = \'warn\';\n var _info = \'info\';\n var _displayStrings = Object.create(null);\n _displayStrings[Severity.Error] = _nls_js__WEBPACK_IMPORTED_MODULE_0__["localize"](\'sev.error\', "Error");\n _displayStrings[Severity.Warning] = _nls_js__WEBPACK_IMPORTED_MODULE_0__["localize"](\'sev.warning\', "Warning");\n _displayStrings[Severity.Info] = _nls_js__WEBPACK_IMPORTED_MODULE_0__["localize"](\'sev.info\', "Info");\n /**\n * Parses \'error\', \'warning\', \'warn\', \'info\' in call casings\n * and falls back to ignore.\n */\n function fromValue(value) {\n if (!value) {\n return Severity.Ignore;\n }\n if (_strings_js__WEBPACK_IMPORTED_MODULE_1__["equalsIgnoreCase"](_error, value)) {\n return Severity.Error;\n }\n if (_strings_js__WEBPACK_IMPORTED_MODULE_1__["equalsIgnoreCase"](_warning, value) || _strings_js__WEBPACK_IMPORTED_MODULE_1__["equalsIgnoreCase"](_warn, value)) {\n return Severity.Warning;\n }\n if (_strings_js__WEBPACK_IMPORTED_MODULE_1__["equalsIgnoreCase"](_info, value)) {\n return Severity.Info;\n }\n return Severity.Ignore;\n }\n Severity.fromValue = fromValue;\n})(Severity || (Severity = {}));\n/* harmony default export */ __webpack_exports__["default"] = (Severity);\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/severity.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/stopwatch.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StopWatch", function() { return StopWatch; });\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./platform.js */ "../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/platform.js");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nvar hasPerformanceNow = (_platform_js__WEBPACK_IMPORTED_MODULE_0__["globals"].performance && typeof _platform_js__WEBPACK_IMPORTED_MODULE_0__["globals"].performance.now === \'function\');\nvar StopWatch = /** @class */ (function () {\n function StopWatch(highResolution) {\n this._highResolution = hasPerformanceNow && highResolution;\n this._startTime = this._now();\n this._stopTime = -1;\n }\n StopWatch.create = function (highResolution) {\n if (highResolution === void 0) { highResolution = true; }\n return new StopWatch(highResolution);\n };\n StopWatch.prototype.stop = function () {\n this._stopTime = this._now();\n };\n StopWatch.prototype.elapsed = function () {\n if (this._stopTime !== -1) {\n return this._stopTime - this._startTime;\n }\n return this._now() - this._startTime;\n };\n StopWatch.prototype._now = function () {\n return this._highResolution ? _platform_js__WEBPACK_IMPORTED_MODULE_0__["globals"].performance.now() : new Date().getTime();\n };\n return StopWatch;\n}());\n\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/stopwatch.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/strings.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"empty\", function() { return empty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFalsyOrWhitespace\", function() { return isFalsyOrWhitespace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pad\", function() { return pad; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escape\", function() { return escape; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"escapeRegExpCharacters\", function() { return escapeRegExpCharacters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trim\", function() { return trim; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ltrim\", function() { return ltrim; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rtrim\", function() { return rtrim; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertSimple2RegExpPattern\", function() { return convertSimple2RegExpPattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startsWith\", function() { return startsWith; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"endsWith\", function() { return endsWith; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRegExp\", function() { return createRegExp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regExpLeadsToEndlessLoop\", function() { return regExpLeadsToEndlessLoop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regExpFlags\", function() { return regExpFlags; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"firstNonWhitespaceIndex\", function() { return firstNonWhitespaceIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLeadingWhitespace\", function() { return getLeadingWhitespace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lastNonWhitespaceIndex\", function() { return lastNonWhitespaceIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLowerAsciiLetter\", function() { return isLowerAsciiLetter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUpperAsciiLetter\", function() { return isUpperAsciiLetter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"equalsIgnoreCase\", function() { return equalsIgnoreCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startsWithIgnoreCase\", function() { return startsWithIgnoreCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"commonPrefixLength\", function() { return commonPrefixLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"commonSuffixLength\", function() { return commonSuffixLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHighSurrogate\", function() { return isHighSurrogate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLowSurrogate\", function() { return isLowSurrogate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"containsRTL\", function() { return containsRTL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"containsEmoji\", function() { return containsEmoji; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBasicASCII\", function() { return isBasicASCII; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"containsFullWidthCharacter\", function() { return containsFullWidthCharacter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFullWidthCharacter\", function() { return isFullWidthCharacter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UTF8_BOM_CHARACTER\", function() { return UTF8_BOM_CHARACTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startsWithUTF8BOM\", function() { return startsWithUTF8BOM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"safeBtoa\", function() { return safeBtoa; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"repeat\", function() { return repeat; });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * The empty string.\n */\nvar empty = '';\nfunction isFalsyOrWhitespace(str) {\n if (!str || typeof str !== 'string') {\n return true;\n }\n return str.trim().length === 0;\n}\n/**\n * @returns the provided number with the given number of preceding zeros.\n */\nfunction pad(n, l, char) {\n if (char === void 0) { char = '0'; }\n var str = '' + n;\n var r = [str];\n for (var i = str.length; i < l; i++) {\n r.push(char);\n }\n return r.reverse().join('');\n}\nvar _formatRegexp = /{(\\d+)}/g;\n/**\n * Helper to produce a string with a variable number of arguments. Insert variable segments\n * into the string using the {n} notation where N is the index of the argument following the string.\n * @param value string to which formatting is applied\n * @param args replacements for {n}-entries\n */\nfunction format(value) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (args.length === 0) {\n return value;\n }\n return value.replace(_formatRegexp, function (match, group) {\n var idx = parseInt(group, 10);\n return isNaN(idx) || idx < 0 || idx >= args.length ?\n match :\n args[idx];\n });\n}\n/**\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\n * being used e.g. in HTMLElement.innerHTML.\n */\nfunction escape(html) {\n return html.replace(/[<>&]/g, function (match) {\n switch (match) {\n case '<': return '<';\n case '>': return '>';\n case '&': return '&';\n default: return match;\n }\n });\n}\n/**\n * Escapes regular expression characters in a given string\n */\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)\\#]/g, '\\\\$&');\n}\n/**\n * Removes all occurrences of needle from the beginning and end of haystack.\n * @param haystack string to trim\n * @param needle the thing to trim (default is a blank)\n */\nfunction trim(haystack, needle) {\n if (needle === void 0) { needle = ' '; }\n var trimmed = ltrim(haystack, needle);\n return rtrim(trimmed, needle);\n}\n/**\n * Removes all occurrences of needle from the beginning of haystack.\n * @param haystack string to trim\n * @param needle the thing to trim\n */\nfunction ltrim(haystack, needle) {\n if (!haystack || !needle) {\n return haystack;\n }\n var needleLen = needle.length;\n if (needleLen === 0 || haystack.length === 0) {\n return haystack;\n }\n var offset = 0;\n while (haystack.indexOf(needle, offset) === offset) {\n offset = offset + needleLen;\n }\n return haystack.substring(offset);\n}\n/**\n * Removes all occurrences of needle from the end of haystack.\n * @param haystack string to trim\n * @param needle the thing to trim\n */\nfunction rtrim(haystack, needle) {\n if (!haystack || !needle) {\n return haystack;\n }\n var needleLen = needle.length, haystackLen = haystack.length;\n if (needleLen === 0 || haystackLen === 0) {\n return haystack;\n }\n var offset = haystackLen, idx = -1;\n while (true) {\n idx = haystack.lastIndexOf(needle, offset - 1);\n if (idx === -1 || idx + needleLen !== offset) {\n break;\n }\n if (idx === 0) {\n return '';\n }\n offset = idx;\n }\n return haystack.substring(0, offset);\n}\nfunction convertSimple2RegExpPattern(pattern) {\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\n}\n/**\n * Determines if haystack starts with needle.\n */\nfunction startsWith(haystack, needle) {\n if (haystack.length < needle.length) {\n return false;\n }\n if (haystack === needle) {\n return true;\n }\n for (var i = 0; i < needle.length; i++) {\n if (haystack[i] !== needle[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Determines if haystack ends with needle.\n */\nfunction endsWith(haystack, needle) {\n var diff = haystack.length - needle.length;\n if (diff > 0) {\n return haystack.indexOf(needle, diff) === diff;\n }\n else if (diff === 0) {\n return haystack === needle;\n }\n else {\n return false;\n }\n}\nfunction createRegExp(searchString, isRegex, options) {\n if (options === void 0) { options = {}; }\n if (!searchString) {\n throw new Error('Cannot create regex from empty string');\n }\n if (!isRegex) {\n searchString = escapeRegExpCharacters(searchString);\n }\n if (options.wholeWord) {\n if (!/\\B/.test(searchString.charAt(0))) {\n searchString = '\\\\b' + searchString;\n }\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\n searchString = searchString + '\\\\b';\n }\n }\n var modifiers = '';\n if (options.global) {\n modifiers += 'g';\n }\n if (!options.matchCase) {\n modifiers += 'i';\n }\n if (options.multiline) {\n modifiers += 'm';\n }\n if (options.unicode) {\n modifiers += 'u';\n }\n return new RegExp(searchString, modifiers);\n}\nfunction regExpLeadsToEndlessLoop(regexp) {\n // Exit early if it's one of these special cases which are meant to match\n // against an empty string\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\n return false;\n }\n // We check against an empty string. If the regular expression doesn't advance\n // (e.g. ends in an endless loop) it will match an empty string.\n var match = regexp.exec('');\n return !!(match && regexp.lastIndex === 0);\n}\nfunction regExpFlags(regexp) {\n return (regexp.global ? 'g' : '')\n + (regexp.ignoreCase ? 'i' : '')\n + (regexp.multiline ? 'm' : '')\n + (regexp.unicode ? 'u' : '');\n}\n/**\n * Returns first index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\nfunction firstNonWhitespaceIndex(str) {\n for (var i = 0, len = str.length; i < len; i++) {\n var chCode = str.charCodeAt(i);\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Returns the leading whitespace of the string.\n * If the string contains only whitespaces, returns entire string\n */\nfunction getLeadingWhitespace(str, start, end) {\n if (start === void 0) { start = 0; }\n if (end === void 0) { end = str.length; }\n for (var i = start; i < end; i++) {\n var chCode = str.charCodeAt(i);\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\n return str.substring(start, i);\n }\n }\n return str.substring(start, end);\n}\n/**\n * Returns last index of the string that is not whitespace.\n * If string is empty or contains only whitespaces, returns -1\n */\nfunction lastNonWhitespaceIndex(str, startIndex) {\n if (startIndex === void 0) { startIndex = str.length - 1; }\n for (var i = startIndex; i >= 0; i--) {\n var chCode = str.charCodeAt(i);\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\n return i;\n }\n }\n return -1;\n}\nfunction compare(a, b) {\n if (a < b) {\n return -1;\n }\n else if (a > b) {\n return 1;\n }\n else {\n return 0;\n }\n}\nfunction isLowerAsciiLetter(code) {\n return code >= 97 /* a */ && code <= 122 /* z */;\n}\nfunction isUpperAsciiLetter(code) {\n return code >= 65 /* A */ && code <= 90 /* Z */;\n}\nfunction isAsciiLetter(code) {\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\n}\nfunction equalsIgnoreCase(a, b) {\n var len1 = a ? a.length : 0;\n var len2 = b ? b.length : 0;\n if (len1 !== len2) {\n return false;\n }\n return doEqualsIgnoreCase(a, b);\n}\nfunction doEqualsIgnoreCase(a, b, stopAt) {\n if (stopAt === void 0) { stopAt = a.length; }\n if (typeof a !== 'string' || typeof b !== 'string') {\n return false;\n }\n for (var i = 0; i < stopAt; i++) {\n var codeA = a.charCodeAt(i);\n var codeB = b.charCodeAt(i);\n if (codeA === codeB) {\n continue;\n }\n // a-z A-Z\n if (isAsciiLetter(codeA) && isAsciiLetter(codeB)) {\n var diff = Math.abs(codeA - codeB);\n if (diff !== 0 && diff !== 32) {\n return false;\n }\n }\n // Any other charcode\n else {\n if (String.fromCharCode(codeA).toLowerCase() !== String.fromCharCode(codeB).toLowerCase()) {\n return false;\n }\n }\n }\n return true;\n}\nfunction startsWithIgnoreCase(str, candidate) {\n var candidateLength = candidate.length;\n if (candidate.length > str.length) {\n return false;\n }\n return doEqualsIgnoreCase(str, candidate, candidateLength);\n}\n/**\n * @returns the length of the common prefix of the two strings.\n */\nfunction commonPrefixLength(a, b) {\n var i, len = Math.min(a.length, b.length);\n for (i = 0; i < len; i++) {\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\n return i;\n }\n }\n return len;\n}\n/**\n * @returns the length of the common suffix of the two strings.\n */\nfunction commonSuffixLength(a, b) {\n var i, len = Math.min(a.length, b.length);\n var aLastIndex = a.length - 1;\n var bLastIndex = b.length - 1;\n for (i = 0; i < len; i++) {\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\n return i;\n }\n }\n return len;\n}\n// --- unicode\n// http://en.wikipedia.org/wiki/Surrogate_pair\n// Returns the code point starting at a specified index in a string\n// Code points U+0000 to U+D7FF and U+E000 to U+FFFF are represented on a single character\n// Code points U+10000 to U+10FFFF are represented on two consecutive characters\n//export function getUnicodePoint(str:string, index:number, len:number):number {\n//\tconst chrCode = str.charCodeAt(index);\n//\tif (0xD800 <= chrCode && chrCode <= 0xDBFF && index + 1 < len) {\n//\t\tconst nextChrCode = str.charCodeAt(index + 1);\n//\t\tif (0xDC00 <= nextChrCode && nextChrCode <= 0xDFFF) {\n//\t\t\treturn (chrCode - 0xD800) << 10 + (nextChrCode - 0xDC00) + 0x10000;\n//\t\t}\n//\t}\n//\treturn chrCode;\n//}\nfunction isHighSurrogate(charCode) {\n return (0xD800 <= charCode && charCode <= 0xDBFF);\n}\nfunction isLowSurrogate(charCode) {\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\n}\n/**\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-rtl-test.js\n */\nvar CONTAINS_RTL = /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE33\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDCFF]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD50-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\n/**\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\n */\nfunction containsRTL(str) {\n return CONTAINS_RTL.test(str);\n}\n/**\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-emoji-test.js\n */\nvar CONTAINS_EMOJI = /(?:[\\u231A\\u231B\\u23F0\\u23F3\\u2600-\\u27BF\\u2B50\\u2B55]|\\uD83C[\\uDDE6-\\uDDFF\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEF8]|\\uD83E[\\uDD00-\\uDDE6])/;\nfunction containsEmoji(str) {\n return CONTAINS_EMOJI.test(str);\n}\nvar IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\n/**\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\n */\nfunction isBasicASCII(str) {\n return IS_BASIC_ASCII.test(str);\n}\nfunction containsFullWidthCharacter(str) {\n for (var i = 0, len = str.length; i < len; i++) {\n if (isFullWidthCharacter(str.charCodeAt(i))) {\n return true;\n }\n }\n return false;\n}\nfunction isFullWidthCharacter(charCode) {\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\n // http://jrgraphix.net/research/unicode_blocks.php\n // 2E80 — 2EFF CJK Radicals Supplement\n // 2F00 — 2FDF Kangxi Radicals\n // 2FF0 — 2FFF Ideographic Description Characters\n // 3000 — 303F CJK Symbols and Punctuation\n // 3040 — 309F Hiragana\n // 30A0 — 30FF Katakana\n // 3100 — 312F Bopomofo\n // 3130 — 318F Hangul Compatibility Jamo\n // 3190 — 319F Kanbun\n // 31A0 — 31BF Bopomofo Extended\n // 31F0 — 31FF Katakana Phonetic Extensions\n // 3200 — 32FF Enclosed CJK Letters and Months\n // 3300 — 33FF CJK Compatibility\n // 3400 — 4DBF CJK Unified Ideographs Extension A\n // 4DC0 — 4DFF Yijing Hexagram Symbols\n // 4E00 — 9FFF CJK Unified Ideographs\n // A000 — A48F Yi Syllables\n // A490 — A4CF Yi Radicals\n // AC00 — D7AF Hangul Syllables\n // [IGNORE] D800 — DB7F High Surrogates\n // [IGNORE] DB80 — DBFF High Private Use Surrogates\n // [IGNORE] DC00 — DFFF Low Surrogates\n // [IGNORE] E000 — F8FF Private Use Area\n // F900 — FAFF CJK Compatibility Ideographs\n // [IGNORE] FB00 — FB4F Alphabetic Presentation Forms\n // [IGNORE] FB50 — FDFF Arabic Presentation Forms-A\n // [IGNORE] FE00 — FE0F Variation Selectors\n // [IGNORE] FE20 — FE2F Combining Half Marks\n // [IGNORE] FE30 — FE4F CJK Compatibility Forms\n // [IGNORE] FE50 — FE6F Small Form Variants\n // [IGNORE] FE70 — FEFF Arabic Presentation Forms-B\n // FF00 — FFEF Halfwidth and Fullwidth Forms\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\n // [IGNORE] FFF0 — FFFF Specials\n charCode = +charCode; // @perf\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\n}\n// -- UTF-8 BOM\nvar UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* UTF8_BOM */);\nfunction startsWithUTF8BOM(str) {\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* UTF8_BOM */);\n}\nfunction safeBtoa(str) {\n return btoa(encodeURIComponent(str)); // we use encodeURIComponent because btoa fails for non Latin 1 values\n}\nfunction repeat(s, count) {\n var result = '';\n for (var i = 0; i < count; i++) {\n result += s;\n }\n return result;\n}\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/strings.js?")},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/types.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return isNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return isBoolean; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return isUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefinedOrNull", function() { return isUndefinedOrNull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyObject", function() { return isEmptyObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateConstraints", function() { return validateConstraints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validateConstraint", function() { return validateConstraint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllPropertyNames", function() { return getAllPropertyNames; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withNullAsUndefined", function() { return withNullAsUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withUndefinedAsNull", function() { return withUndefinedAsNull; });\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _typeof = {\n number: \'number\',\n string: \'string\',\n undefined: \'undefined\',\n object: \'object\',\n function: \'function\'\n};\n/**\n * @returns whether the provided parameter is a JavaScript Array or not.\n */\nfunction isArray(array) {\n if (Array.isArray) {\n return Array.isArray(array);\n }\n if (array && typeof (array.length) === _typeof.number && array.constructor === Array) {\n return true;\n }\n return false;\n}\n/**\n * @returns whether the provided parameter is a JavaScript String or not.\n */\nfunction isString(str) {\n if (typeof (str) === _typeof.string || str instanceof String) {\n return true;\n }\n return false;\n}\n/**\n *\n * @returns whether the provided parameter is of type `object` but **not**\n *\t`null`, an `array`, a `regexp`, nor a `date`.\n */\nfunction isObject(obj) {\n // The method can\'t do a type cast since there are type (like strings) which\n // are subclasses of any put not positvely matched by the function. Hence type\n // narrowing results in wrong results.\n return typeof obj === _typeof.object\n && obj !== null\n && !Array.isArray(obj)\n && !(obj instanceof RegExp)\n && !(obj instanceof Date);\n}\n/**\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\n * @returns whether the provided parameter is a JavaScript Number or not.\n */\nfunction isNumber(obj) {\n if ((typeof (obj) === _typeof.number || obj instanceof Number) && !isNaN(obj)) {\n return true;\n }\n return false;\n}\n/**\n * @returns whether the provided parameter is a JavaScript Boolean or not.\n */\nfunction isBoolean(obj) {\n return obj === true || obj === false;\n}\n/**\n * @returns whether the provided parameter is undefined.\n */\nfunction isUndefined(obj) {\n return typeof (obj) === _typeof.undefined;\n}\n/**\n * @returns whether the provided parameter is undefined or null.\n */\nfunction isUndefinedOrNull(obj) {\n return isUndefined(obj) || obj === null;\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * @returns whether the provided parameter is an empty JavaScript Object or not.\n */\nfunction isEmptyObject(obj) {\n if (!isObject(obj)) {\n return false;\n }\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @returns whether the provided parameter is a JavaScript Function or not.\n */\nfunction isFunction(obj) {\n return typeof obj === _typeof.function;\n}\nfunction validateConstraints(args, constraints) {\n var len = Math.min(args.length, constraints.length);\n for (var i = 0; i < len; i++) {\n validateConstraint(args[i], constraints[i]);\n }\n}\nfunction validateConstraint(arg, constraint) {\n if (isString(constraint)) {\n if (typeof arg !== constraint) {\n throw new Error("argument does not match constraint: typeof " + constraint);\n }\n }\n else if (isFunction(constraint)) {\n try {\n if (arg instanceof constraint) {\n return;\n }\n }\n catch (_a) {\n // ignore\n }\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\n return;\n }\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\n return;\n }\n throw new Error("argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true");\n }\n}\nfunction getAllPropertyNames(obj) {\n var res = [];\n var proto = Object.getPrototypeOf(obj);\n while (Object.prototype !== proto) {\n res = res.concat(Object.getOwnPropertyNames(proto));\n proto = Object.getPrototypeOf(proto);\n }\n return res;\n}\n/**\n * Converts null to undefined, passes all other values through.\n */\nfunction withNullAsUndefined(x) {\n return x === null ? undefined : x;\n}\n/**\n * Converts undefined to null, passes all other values through.\n */\nfunction withUndefinedAsNull(x) {\n return typeof x === \'undefined\' ? null : x;\n}\n\n\n//# sourceURL=webpack:///../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/types.js?')},"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/uri.js":function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"URI\", function() { return URI; });\n/* harmony import */ var _platform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./platform.js */ \"../node_modules/_monaco-editor@0.17.1@monaco-editor/esm/vs/base/common/platform.js\");\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __extends = (undefined && undefined.__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})();\nvar _a;\n\nvar _schemePattern = /^\\w[\\w\\d+.-]*$/;\nvar _singleSlashStart = /^\\//;\nvar _doubleSlashStart = /^\\/\\//;\nvar _throwOnMissingSchema = true;\nfunction _validateUri(ret, _strict) {\n // scheme, must be set\n if (!ret.scheme) {\n if (_strict || _throwOnMissingSchema) {\n throw new Error(\"[UriError]: Scheme is missing: {scheme: \\\"\\\", authority: \\\"\" + ret.authority + \"\\\", path: \\\"\" + ret.path + \"\\\", query: \\\"\" + ret.query + \"\\\", fragment: \\\"\" + ret.fragment + \"\\\"}\");\n }\n else {\n console.warn(\"[UriError]: Scheme is missing: {scheme: \\\"\\\", authority: \\\"\" + ret.authority + \"\\\", path: \\\"\" + ret.path + \"\\\", query: \\\"\" + ret.query + \"\\\", fragment: \\\"\" + ret.fragment + \"\\\"}\");\n }\n }\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\n throw new Error('[UriError]: Scheme contains illegal characters.');\n }\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\n // If a URI contains an authority component, then the path component\n // must either be empty or begin with a slash (\"/\") character. If a URI\n // does not contain an authority component, then the path cannot begin\n // with two slash characters (\"//\").\n if (ret.path) {\n if (ret.authority) {\n if (!_singleSlashStart.test(ret.path)) {\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\n }\n }\n else {\n if (_doubleSlashStart.test(ret.path)) {\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\n }\n }\n }\n}\n// for a while we allowed uris *without* schemes and this is the migration\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\n// back to the file-scheme. that should cause the least carnage and still be a\n// clear warning\nfunction _schemeFix(scheme, _strict) {\n if (_strict || _throwOnMissingSchema) {\n return scheme || _empty;\n }\n if (!scheme) {\n console.trace('BAD uri lacks scheme, falling back to file-scheme.');\n scheme = 'file';\n }\n return scheme;\n}\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\nfunction _referenceResolution(scheme, path) {\n // the slash-character is our 'default base' as we don't\n // support constructing URIs relative to other URIs. This\n // also means that we alter and potentially break paths.\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\n switch (scheme) {\n case 'https':\n case 'http':\n case 'file':\n if (!path) {\n path = _slash;\n }\n else if (path[0] !== _slash) {\n path = _slash + path;\n }\n break;\n }\n return path;\n}\nvar _empty = '';\nvar _slash = '/';\nvar _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n/**\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component parts\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n */\nvar URI = /** @class */ (function () {\n /**\n * @internal\n */\n function URI(schemeOrData, authority, path, query, fragment, _strict) {\n if (_strict === void 0) { _strict = false; }\n if (typeof schemeOrData === 'object') {\n this.scheme = schemeOrData.scheme || _empty;\n this.authority = schemeOrData.authority || _empty;\n this.path = schemeOrData.path || _empty;\n this.query = schemeOrData.query || _empty;\n this.fragment = schemeOrData.fragment || _empty;\n // no validation because it's this URI\n // that creates uri components.\n // _validateUri(this);\n }\n else {\n this.scheme = _schemeFix(schemeOrData, _strict);\n this.authority = authority || _empty;\n this.path = _referenceResolution(this.scheme, path || _empty);\n this.query = query || _empty;\n this.fragment = fragment || _empty;\n _validateUri(this, _strict);\n }\n }\n URI.isUri = function (thing) {\n if (thing instanceof URI) {\n return true;\n }\n if (!thing) {\n return false;\n }\n return typeof thing.authority === 'string'\n && typeof thing.fragment === 'string'\n && typeof thing.path === 'string'\n && typeof thing.query === 'string'\n && typeof thing.scheme === 'string'\n && typeof thing.fsPath === 'function'\n && typeof thing.with === 'function'\n && typeof thing.toString === 'function';\n };\n Object.defineProperty(URI.prototype, \"fsPath\", {\n // ---- filesystem path -----------------------\n /**\n * Returns a string representing the corresponding file system path of this URI.\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\n * platform specific path separator.\n *\n * * Will *not* validate the path for invalid characters and semantics.\n * * Will *not* look at the scheme of this URI.\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\n *\n *\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\n *\n * ```ts\n const u = URI.parse('file://server/c$/folder/file.txt')\n u.authority === 'server'\n u.path === '/shares/c$/file.txt'\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\n ```\n *\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\n * with URIs that represent files on disk (`file` scheme).\n */\n get: function () {\n // if (this.scheme !== 'file') {\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\n // }\n return _makeFsPath(this);\n },\n enumerable: true,\n configurable: true\n });\n // ---- modify to new -------------------------\n URI.prototype.with = function (change) {\n if (!change) {\n return this;\n }\n var scheme = change.scheme, authority = change.authority, path = change.path, query = change.query, fragment = change.fragment;\n if (scheme === undefined) {\n scheme = this.scheme;\n }\n else if (scheme === null) {\n scheme = _empty;\n }\n if (authority === undefined) {\n authority = this.authority;\n }\n else if (authority === null) {\n authority = _empty;\n }\n if (path === undefined) {\n path = this.path;\n }\n else if (path === null) {\n path = _empty;\n }\n if (query === undefined) {\n query = this.query;\n }\n else if (query === null) {\n query = _empty;\n }\n if (fragment === undefined) {\n fragment = this.fragment;\n }\n else if (fragment === null) {\n fragment = _empty;\n }\n if (scheme === this.scheme\n && authority === this.authority\n && path === this.path\n && query === this.query\n && fragment === this.fragment) {\n return this;\n }\n return new _URI(scheme, authority, path, query, fragment);\n };\n // ---- parse & validate ------------------------\n /**\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\n * `file:///usr/home`, or `scheme:with/path`.\n *\n * @param value A string which represents an URI (see `URI#toString`).\n */\n URI.parse = function (value, _strict) {\n if (_strict === void 0) { _strict = false; }\n var match = _regexp.exec(value);\n if (!match) {\n return new _URI(_empty, _empty, _empty, _empty, _empty);\n }\n return new _URI(match[2] || _empty, decodeURIComponent(match[4] || _empty), decodeURIComponent(match[5] || _empty), decodeURIComponent(match[7] || _empty), decodeURIComponent(match[9] || _empty), _strict);\n };\n /**\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\n *\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\n * `URI.parse('file://' + path)` because the path might contain characters that are\n * interpreted (# and ?). See the following sample:\n * ```ts\n const good = URI.file('/coding/c#/project1');\n good.scheme === 'file';\n good.path === '/coding/c#/project1';\n good.fragment === '';\n const bad = URI.parse('file://' + '/coding/c#/project1');\n bad.scheme === 'file';\n bad.path === '/coding/c'; // path is now broken\n bad.fragment === '/project1';\n ```\n *\n * @param path A file system path (see `URI#fsPath`)\n */\n URI.file = function (path) {\n var authority = _empty;\n // normalize to fwd-slashes on windows,\n // on other systems bwd-slashes are valid\n // filename character, eg /f\\oo/ba\\r.txt\n if (_platform_js__WEBPACK_IMPORTED_MODULE_0__[\"isWindows\"]) {\n path = path.replace(/\\\\/g, _slash);\n }\n // check for authority as used in UNC shares\n // or use the path as given\n if (path[0] === _slash && path[1] === _slash) {\n var idx = path.indexOf(_slash, 2);\n if (idx === -1) {\n authority = path.substring(2);\n path = _slash;\n }\n else {\n authority = path.substring(2, idx);\n path = path.substring(idx) || _slash;\n }\n }\n return new _URI('file', authority, path, _empty, _empty);\n };\n URI.from = function (components) {\n return new _URI(components.scheme, components.authority, components.path, components.query, components.fragment);\n };\n // ---- printing/externalize ---------------------------\n /**\n * Creates a string representation for this URI. It's guaranteed that calling\n * `URI.parse` with the result of this function creates an URI which is equal\n * to this URI.\n *\n * * The result shall *not* be used for display purposes but for externalization or transport.\n * * The result will be encoded using the percentage encoding and encoding happens mostly\n * ignore the scheme-specific encoding rules.\n *\n * @param skipEncoding Do not encode the result, default is `false`\n */\n URI.prototype.toString = function (skipEncoding) {\n if (skipEncoding === void 0) { skipEncoding = false; }\n return _asFormatted(this, skipEncoding);\n };\n URI.prototype.toJSON = function () {\n return this;\n };\n URI.revive = function (data) {\n if (!data) {\n return data;\n }\n else if (data instanceof URI) {\n return data;\n }\n else {\n var result = new _URI(data);\n result._fsPath = data.fsPath;\n result._formatted = data.external;\n return result;\n }\n };\n return URI;\n}());\n\n// tslint:disable-next-line:class-name\nvar _URI = /** @class */ (function (_super) {\n __extends(_URI, _super);\n function _URI() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._formatted = null;\n _this._fsPath = null;\n return _this;\n }\n Object.defineProperty(_URI.prototype, \"fsPath\", {\n get: function () {\n if (!this._fsPath) {\n this._fsPath = _makeFsPath(this);\n }\n return this._fsPath;\n },\n enumerable: true,\n configurable: true\n });\n _URI.prototype.toString = function (skipEncoding) {\n if (skipEncoding === void 0) { skipEncoding = false; }\n if (!skipEncoding) {\n if (!this._formatted) {\n this._formatted = _asFormatted(this, false);\n }\n return this._formatted;\n }\n else {\n // we don't cache that\n return _asFormatted(this, true);\n }\n };\n _URI.prototype.toJSON = function () {\n var res = {\n $mid: 1\n };\n // cached state\n if (this._fsPath) {\n res.fsPath = this._fsPath;\n }\n if (this._formatted) {\n res.external = this._formatted;\n }\n // uri components\n if (this.path) {\n res.path = this.path;\n }\n if (this.scheme) {\n res.scheme = this.scheme;\n }\n if (this.authority) {\n res.authority = this.authority;\n }\n if (this.query) {\n res.query = this.query;\n }\n if (this.fragment) {\n res.fragment = this.fragment;\n }\n return res;\n };\n return _URI;\n}(URI));\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\nvar encodeTable = (_a = {},\n _a[58 /* Colon */] = '%3A',\n _a[47 /* Slash */] = '%2F',\n _a[63 /* QuestionMark */] = '%3F',\n _a[35 /* Hash */] = '%23',\n _a[91 /* OpenSquareBracket */] = '%5B',\n _a[93 /* CloseSquareBracket */] = '%5D',\n _a[64 /* AtSign */] = '%40',\n _a[33 /* ExclamationMark */] = '%21',\n _a[36 /* DollarSign */] = '%24',\n _a[38 /* Ampersand */] = '%26',\n _a[39 /* SingleQuote */] = '%27',\n _a[40 /* OpenParen */] = '%28',\n _a[41 /* CloseParen */] = '%29',\n _a[42 /* Asterisk */] = '%2A',\n _a[43 /* Plus */] = '%2B',\n _a[44 /* Comma */] = '%2C',\n _a[59 /* Semicolon */] = '%3B',\n _a[61 /* Equals */] = '%3D',\n _a[32 /* Space */] = '%20',\n _a);\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\n var res = undefined;\n var nativeEncodePos = -1;\n for (var pos = 0; pos < uriComponent.length; pos++) {\n var code = uriComponent.charCodeAt(pos);\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\n if ((code >= 97 /* a */ && code <= 122 /* z */)\n || (code >= 65 /* A */ && code <= 90 /* Z */)\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\n || code === 45 /* Dash */\n || code === 46 /* Period */\n || code === 95 /* Underline */\n || code === 126 /* Tilde */\n || (allowSlash && code === 47 /* Slash */)) {\n // check if we are delaying native encode\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n // check if we write into a new string (by default we try to return the param)\n if (res !== undefined) {\n res += uriComponent.charAt(pos);\n }\n }\n else {\n // encoding needed, we need to allocate a new string\n if (res === undefined) {\n res = uriComponent.substr(0, pos);\n }\n // check with default table first\n var escaped = encodeTable[code];\n if (escaped !== undefined) {\n // check if we are delaying native encode\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n // append escaped variant to result\n res += escaped;\n }\n else if (nativeEncodePos === -1) {\n // use native encode only when needed\n nativeEncodePos = pos;\n }\n }\n }\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\n }\n return res !== undefined ? res : uriComponent;\n}\nfunction encodeURIComponentMinimal(path) {\n var res = undefined;\n for (var pos = 0; pos < path.length; pos++) {\n var code = path.charCodeAt(pos);\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\n if (res === undefined) {\n res = path.substr(0, pos);\n }\n res += encodeTable[code];\n }\n else {\n if (res !== undefined) {\n res += path[pos];\n }\n }\n }\n return res !== undefined ? res : path;\n}\n/**\n * Compute `fsPath` for the given uri\n */\nfunction _makeFsPath(uri) {\n var value;\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\n // unc path: file://shares/c$/far/boo\n value = \"//\" + uri.authority + uri.path;\n }\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\n // windows drive letter: file:///c:/far/boo\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\n }\n else {\n // other path\n value = uri.path;\n }\n if (_platform_js__WEBPACK_IMPORTED_MODULE_0__[\"isWindows\"]) {\n value = value.replace(/\\//g, '\\\\');\n }\n return value;\n}\n/**\n * Create the external version of a uri\n */\nfunction _asFormatted(uri, skipEncoding) {\n var encoder = !skipEncoding\n ? encodeURIComponentFast\n : encodeURIComponentMinimal;\n var res = '';\n var scheme = uri.scheme, authority = uri.authority, path = uri.path, query = uri.query, fragment = uri.fragment;\n if (scheme) {\n res += scheme;\n res += ':';\n }\n if (authority || scheme === 'file') {\n res += _slash;\n res += _slash;\n }\n if (authority) {\n var idx = authority.indexOf('@');\n if (idx !== -1) {\n //