@covalent/flavored-markdown 3.1.1-beta.1 → 3.1.2-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../src/platform/flavored-markdown/cfm-list/cfm-list.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown-loader/flavored-markdown-loader.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","dense","Component","args","selector","template","Input","TdFlavoredMarkdownButtonComponent","display","text","data","clicked","EventEmitter","prototype","emitClick","emit","HostBinding","Output","TdFlavoredMarkdownContainerDirective","viewContainerRef","_renderer","clear","setProperty","element","nativeElement","Directive","ViewContainerRef","Renderer2","TdFlavoredMarkdownComponent","_componentFactoryResolver","_changeDetectorRef","_injector","_elementRef","_simpleLineBreaks","_components","_viewInit","copyCodeToClipboard","copyCodeTooltips","contentReady","buttonClicked","defineProperty","content","_content","simpleLineBreaks","hostedUrl","_hostedUrl","anchor","_anchor","ngOnChanges","changes","refresh","scrollToAnchor","ngAfterViewInit","_this","_loadContent","container","textContent","markForCheck","markdown","trim","lines","replace","split","firstLineWhitespace","match","startingWhitespaceRegex_1","RegExp","map","line","join","_replaceCodeBlocks","_replaceCheckbox","_replaceTables","_replaceLists","_replaceButtons","keys","sort","compA","compB","indexOf","_render","setTimeout","key","markdownParts","shift","undefined","insert","hostView","contentRef","resolveComponentFactory","TdMarkdownComponent","instance","_replaceComponent","type","regExp","replacerFunc","componentIndex","_i","componentFactory","componentRef","MatCheckbox","checked","disabled","labelPosition","getElementsByClassName","buttonRegExp","globalButtonRegExp","source","flags","matches","exec","subscribe","clickEvent","TdHighlightComponent","language","codeblock","codeLang","TdDataTableComponent","dataTableLines","columns","filter","col","s","alignment","index","widths","min","parseInt","max","width","isNaN","name","toLowerCase","numeric","test","rowSplit","cell","row","forEach","rowSplitCell","sortable","sortChange","event","a","b","direction","Number","parseFloat","order","TdDataTableSortingOrder","Descending","TdFlavoredListComponent","lineTexts","toString","sublineTexts","sublines","subline","changeDetection","ChangeDetectionStrategy","OnPush","ComponentFactoryResolver","ChangeDetectorRef","Injector","ElementRef","ViewChild","static","TdFlavoredMarkdownLoaderComponent","_markdownUrlLoaderService","loadFailed","loading","url","httpOptions","loadMarkdown","_a","load","_b","error_1","TdMarkdownLoaderService","NgModule","imports","CommonModule","MatCheckboxModule","MatListModule","MatProgressBarModule","CovalentDataTableModule","CovalentHighlightModule","CovalentMarkdownModule","MatButtonModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, Input } from '@angular/core';\n\nexport interface IFlavoredListItem {\n line: string;\n sublines?: string[];\n}\n\n@Component({\n selector: 'cfm-list',\n styleUrls: ['./cfm-list.component.scss'],\n templateUrl: './cfm-list.component.html',\n})\nexport class TdFlavoredListComponent {\n @Input() lines: IFlavoredListItem[];\n @Input() dense: boolean = false;\n}\n","import {\n Component,\n Directive,\n AfterViewInit,\n Input,\n Renderer2,\n Type,\n ComponentFactory,\n ChangeDetectorRef,\n EventEmitter,\n Output,\n ViewContainerRef,\n ComponentFactoryResolver,\n Injector,\n ComponentRef,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n ElementRef,\n HostBinding,\n} from '@angular/core';\n\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { TdFlavoredListComponent, IFlavoredListItem } from './cfm-list/cfm-list.component';\nimport { TdHighlightComponent, ICopyCodeTooltips } from '@covalent/highlight';\nimport { TdMarkdownComponent, scrollToAnchor } from '@covalent/markdown';\nimport {\n TdDataTableComponent,\n TdDataTableSortingOrder,\n ITdDataTableSortChangeEvent,\n ITdDataTableColumnWidth,\n} from '@covalent/core/data-table';\n\nexport interface ITdFlavoredMarkdownButtonClickEvent {\n text: string;\n data: string;\n}\n\n@Component({\n template: `\n <button mat-raised-button (click)=\"emitClick()\">\n {{ text }}\n </button>\n `,\n})\nexport class TdFlavoredMarkdownButtonComponent {\n @HostBinding('style.display') display: string = 'inline-block';\n @Input() text: string = '';\n @Input() data: string = '';\n @Output()\n clicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n emitClick(): void {\n this.clicked.emit({ text: this.text, data: this.data });\n }\n}\n\n@Directive({\n selector: '[tdFlavoredMarkdownContainer]',\n})\nexport class TdFlavoredMarkdownContainerDirective {\n constructor(public viewContainerRef: ViewContainerRef, private _renderer: Renderer2) {}\n\n clear(): void {\n this._renderer.setProperty(this.viewContainerRef.element.nativeElement, 'innerHTML', '');\n this.viewContainerRef.clear();\n }\n}\n\nexport type IReplacerFunc<T> = (componentRef: ComponentRef<T>, ...args: any[]) => void;\n\n@Component({\n selector: 'td-flavored-markdown',\n styleUrls: ['./flavored-markdown.component.scss'],\n templateUrl: './flavored-markdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownComponent implements AfterViewInit, OnChanges {\n private _content: string;\n private _simpleLineBreaks: boolean = false;\n private _hostedUrl: string;\n private _anchor: string;\n\n private _components: {} = {};\n private _viewInit: boolean = false;\n /**\n * content?: string\n *\n * Markdown format content to be parsed as material/covalent markup.\n *\n * e.g. README.md content.\n */\n @Input('content')\n set content(content: string) {\n this._content = content;\n }\n\n /**\n * simpleLineBreaks?: string\n *\n * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.\n * Defaults to false.\n */\n @Input('simpleLineBreaks')\n set simpleLineBreaks(simpleLineBreaks: boolean) {\n this._simpleLineBreaks = simpleLineBreaks;\n }\n\n /**\n * hostedUrl?: string\n *\n * If markdown contains relative paths, this is required to generate correct urls\n *\n */\n @Input('hostedUrl')\n set hostedUrl(hostedUrl: string) {\n this._hostedUrl = hostedUrl;\n }\n\n /**\n * anchor?: string\n *\n * Anchor to jump to\n *\n */\n @Input('anchor')\n set anchor(anchor: string) {\n this._anchor = anchor;\n }\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard: boolean = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips: ICopyCodeTooltips = {};\n /**\n * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<undefined> = new EventEmitter<undefined>();\n\n /**\n * buttonClicked?: ITdFlavoredMarkdownButtonClickEvent\n * Event emitted when a button is clicked\n * Is an object containing text and data of button\n */\n @Output()\n buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n\n @ViewChild(TdFlavoredMarkdownContainerDirective, { static: true }) container: TdFlavoredMarkdownContainerDirective;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef,\n private _injector: Injector,\n private _elementRef: ElementRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n // only anchor changed\n if (changes.anchor && !changes.content && !changes.simpleLineBreaks && !changes.hostedUrl) {\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, false);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent((<HTMLElement>this.container.viewContainerRef.element.nativeElement).textContent);\n Promise.resolve().then(() => {\n this._viewInit = true;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n refresh(): void {\n if (this._content) {\n this._loadContent(this._content);\n } else if (this._viewInit) {\n this._loadContent((<HTMLElement>this.container.viewContainerRef.element.nativeElement).textContent);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _loadContent(markdown: string): void {\n if (markdown && markdown.trim().length > 0) {\n this.container.clear();\n markdown = markdown.replace(/^(\\s|\\t)*\\n+/g, '').replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '');\n // Split markdown by line characters\n let lines: string[] = markdown.split('\\n');\n\n // check how much indentation is used by the first actual markdown line\n const firstLineWhitespace: string = lines[0].match(/^(\\s|\\t)*/)[0];\n\n // Remove all indentation spaces so markdown can be parsed correctly\n const startingWhitespaceRegex: RegExp = new RegExp('^' + firstLineWhitespace);\n lines = lines.map(function (line: string): string {\n return line.replace(startingWhitespaceRegex, '');\n });\n\n // Join lines again with line characters\n markdown = [...lines, '', ''].join('\\n');\n markdown = this._replaceCodeBlocks(markdown);\n markdown = this._replaceCheckbox(markdown);\n markdown = this._replaceTables(markdown);\n markdown = this._replaceLists(markdown);\n markdown = this._replaceButtons(markdown);\n const keys: string[] = Object.keys(this._components);\n // need to sort the placeholders in order of encounter in markdown content\n keys.sort((compA: string, compB: string) => {\n return markdown.indexOf(compA) > markdown.indexOf(compB) ? 1 : -1;\n });\n this._render(markdown, keys[0], keys);\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n setTimeout(() => scrollToAnchor(this._elementRef.nativeElement, this._anchor, false), 250);\n this.contentReady.emit();\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _render(markdown: string, key: string, keys: string[]): void {\n if (!markdown) {\n return;\n }\n if (key && markdown.indexOf(key) > -1) {\n const markdownParts: string[] = markdown.split(key);\n keys.shift();\n this._render(markdownParts[0], undefined, undefined);\n this.container.viewContainerRef.insert(this._components[key].hostView, this.container.viewContainerRef.length);\n this._components[key] = undefined;\n delete this._components[key];\n this._render(markdownParts[1], keys[0], keys);\n } else {\n const contentRef: ComponentRef<TdMarkdownComponent> = this._componentFactoryResolver\n .resolveComponentFactory(TdMarkdownComponent)\n .create(this._injector);\n contentRef.instance.content = markdown;\n contentRef.instance.hostedUrl = this._hostedUrl;\n contentRef.instance.simpleLineBreaks = this._simpleLineBreaks;\n contentRef.instance.refresh();\n this.container.viewContainerRef.insert(contentRef.hostView, this.container.viewContainerRef.length);\n }\n }\n\n private _replaceComponent<T>(\n markdown: string,\n type: Type<T>,\n regExp: RegExp,\n replacerFunc: IReplacerFunc<T>,\n ): string {\n let componentIndex: number = 0;\n return markdown.replace(regExp, (...args: any[]) => {\n const componentFactory: ComponentFactory<T> = this._componentFactoryResolver.resolveComponentFactory(type);\n const componentRef: ComponentRef<T> = componentFactory.create(this._injector);\n replacerFunc(componentRef, ...args);\n const key: string = '[' + componentFactory.selector + '-placeholder-' + componentIndex++ + ']';\n this._components[key] = componentRef;\n return key;\n });\n }\n\n private _replaceCheckbox(markdown: string): string {\n const checkboxRegExp: RegExp = /(?:^|\\n)- \\[(x| )\\](.*)/gi;\n return this._replaceComponent(\n markdown,\n MatCheckbox,\n checkboxRegExp,\n (componentRef: ComponentRef<MatCheckbox>, match: string, checked: string, label: string) => {\n componentRef.instance.checked = !!checked.trim();\n componentRef.instance.disabled = true;\n componentRef.instance.labelPosition = 'after';\n this._renderer.setProperty(\n (<HTMLElement>componentRef.instance._elementRef.nativeElement).getElementsByClassName(\n 'mat-checkbox-label',\n )[0],\n 'innerHTML',\n label,\n );\n },\n );\n }\n\n private _replaceButtons(markdown: string): string {\n const buttonRegExp: RegExp = /\\[([^\\[]+)\\](\\(#data=(.*)\\))/i;\n const globalButtonRegExp: RegExp = new RegExp(buttonRegExp.source, buttonRegExp.flags + 'g');\n return this._replaceComponent(\n markdown,\n TdFlavoredMarkdownButtonComponent,\n globalButtonRegExp,\n (componentRef: ComponentRef<TdFlavoredMarkdownButtonComponent>, match: string) => {\n const matches: RegExpExecArray = buttonRegExp.exec(match);\n const text: string = matches[1];\n const data: string = matches[3];\n componentRef.instance.text = text;\n componentRef.instance.data = data;\n componentRef.instance.clicked.subscribe((clickEvent: ITdFlavoredMarkdownButtonClickEvent) =>\n this.buttonClicked.emit(clickEvent),\n );\n },\n );\n }\n\n private _replaceCodeBlocks(markdown: string): string {\n const codeBlockRegExp: RegExp = /(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g;\n return this._replaceComponent(\n markdown,\n TdHighlightComponent,\n codeBlockRegExp,\n (componentRef: ComponentRef<TdHighlightComponent>, match: string, language: string, codeblock: string) => {\n if (language) {\n componentRef.instance.codeLang = language;\n }\n componentRef.instance.copyCodeToClipboard = this.copyCodeToClipboard;\n componentRef.instance.copyCodeTooltips = this.copyCodeTooltips;\n componentRef.instance.content = codeblock;\n },\n );\n }\n\n private _replaceTables(markdown: string): string {\n const tableRgx: RegExp = /^ {0,3}\\|?.+\\|.+\\n[ \\t]{0,3}\\|?[ \\t]*:?[ \\t]*(?:-|=){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:-|=){2,}[\\s\\S]+?(?:\\n\\n|~0)/gm;\n return this._replaceComponent(\n markdown,\n TdDataTableComponent,\n tableRgx,\n (componentRef: ComponentRef<TdDataTableComponent>, match: string) => {\n const dataTableLines: string[] = match.replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '').split('\\n');\n const columns: string[] = dataTableLines[0]\n .split('|')\n .filter((col: string) => {\n return col;\n })\n .map((s: string) => {\n return s.trim();\n });\n const alignment: string[] = dataTableLines[1]\n .split('|')\n .filter((v: string) => {\n return v;\n })\n .map((s: string) => {\n return s.trim();\n });\n componentRef.instance.columns = columns.map((col: string, index: number) => {\n const widths: string[] = alignment[index].split('---');\n const min: number = parseInt(widths[0], 10);\n const max: number = parseInt(widths[1], 10);\n let width: ITdDataTableColumnWidth = { min, max };\n if (isNaN(min) && isNaN(max)) {\n width = undefined;\n } else if (isNaN(max)) {\n width.max = undefined;\n } else if (isNaN(min)) {\n width.min = undefined;\n }\n return {\n label: col,\n name: col.toLowerCase().trim(),\n numeric: /^--*[ \\t]*:[ \\t]*$/.test(alignment[index]),\n width,\n };\n });\n\n const data: any[] = [];\n for (let i: number = 2; i < dataTableLines.length; i++) {\n const rowSplit: string[] = dataTableLines[i]\n .split('|')\n .filter((cell: string) => {\n return cell;\n })\n .map((s: string) => {\n return s.trim();\n });\n const row: any = {};\n columns.forEach((col: string, index: number) => {\n const rowSplitCell: string = rowSplit[index];\n if (rowSplitCell) {\n row[col.toLowerCase().trim()] = rowSplitCell.replace(/`(.*)`/, (m: string, value: string) => {\n return value;\n });\n }\n });\n data.push(row);\n }\n componentRef.instance.data = data;\n componentRef.instance.sortable = true;\n componentRef.instance.sortChange.subscribe((event: ITdDataTableSortChangeEvent) => {\n componentRef.instance.data.sort((a: any, b: any) => {\n const compA: any = a[event.name];\n const compB: any = b[event.name];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (event.order === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n componentRef.instance.refresh();\n });\n setTimeout(() => {\n componentRef.instance.refresh();\n });\n },\n );\n }\n\n private _replaceLists(markdown: string): string {\n const listRegExp: RegExp = /(?:^|\\n)(( *\\+)[ |\\t](.*)\\n)+/g;\n return this._replaceComponent(\n markdown,\n TdFlavoredListComponent,\n listRegExp,\n (componentRef: ComponentRef<TdFlavoredListComponent>, match: string) => {\n const lineTexts: string[] = match.split(\n new RegExp('\\\\n {' + (match.indexOf('+') - 1).toString() + '}\\\\+[ |\\\\t]'),\n );\n lineTexts.shift();\n const lines: IFlavoredListItem[] = [];\n lineTexts.forEach((text: string, index: number) => {\n const sublineTexts: string[] = text.split(/\\n *\\+ /);\n lines.push({\n line: sublineTexts.shift(),\n sublines: sublineTexts.map((subline: string) => {\n return subline.trim();\n }),\n });\n });\n componentRef.instance.lines = lines;\n },\n );\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectorRef,\n SimpleChanges,\n OnChanges,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { TdMarkdownLoaderService } from '@covalent/markdown';\nimport { ITdFlavoredMarkdownButtonClickEvent } from '../flavored-markdown.component';\nimport { ICopyCodeTooltips } from '@covalent/highlight';\n\n// TODO: make a td-markdown-loader component\n\n@Component({\n selector: 'td-flavored-markdown-loader',\n styleUrls: ['./flavored-markdown-loader.component.scss'],\n templateUrl: './flavored-markdown-loader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownLoaderComponent implements OnChanges {\n /**\n * url: string\n * The url of the markdown file.\n */\n @Input() url: string;\n\n /**\n * httpOptions: object\n * HTTP options that can be part of the request.\n */\n @Input() httpOptions: object;\n\n /**\n * anchor: string\n * Anchor to jump to.\n */\n @Input() anchor: string;\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard: boolean = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips: ICopyCodeTooltips = {};\n\n /**\n * contentReady: void\n * Emitted when markdown rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter();\n\n /**\n * loadFailed: Error\n * Emitted when loading of markdown file fails.\n */\n @Output() loadFailed: EventEmitter<Error> = new EventEmitter();\n\n @Output() buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter();\n\n content: string;\n loading: boolean = true;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _markdownUrlLoaderService: TdMarkdownLoaderService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.url || changes.httpOptions) {\n this.loadMarkdown();\n }\n }\n\n async loadMarkdown(): Promise<void> {\n this.loading = true;\n this._changeDetectorRef.markForCheck();\n try {\n this.content = await this._markdownUrlLoaderService.load(this.url, this.httpOptions);\n } catch (error) {\n this.loadFailed.emit(error);\n } finally {\n this.loading = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatListModule } from '@angular/material/list';\n\nimport { CovalentDataTableModule, TdDataTableComponent } from '@covalent/core/data-table';\nimport { CovalentHighlightModule, TdHighlightComponent } from '@covalent/highlight';\nimport { CovalentMarkdownModule, TdMarkdownComponent } from '@covalent/markdown';\n\nimport { TdFlavoredListComponent } from './cfm-list/cfm-list.component';\nimport {\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownButtonComponent,\n} from './flavored-markdown.component';\nimport { TdFlavoredMarkdownLoaderComponent } from './flavored-markdown-loader/flavored-markdown-loader.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatListModule,\n MatProgressBarModule,\n CovalentDataTableModule,\n CovalentHighlightModule,\n CovalentMarkdownModule,\n MatButtonModule,\n ],\n declarations: [\n TdFlavoredListComponent,\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownLoaderComponent,\n TdFlavoredMarkdownButtonComponent,\n ],\n exports: [TdFlavoredMarkdownComponent, TdFlavoredMarkdownLoaderComponent],\n})\nexport class CovalentFlavoredMarkdownModule {}\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../src/platform/flavored-markdown/cfm-list/cfm-list.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown.component.ts","../../../src/platform/flavored-markdown/flavored-markdown-loader/flavored-markdown-loader.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","dense","Component","args","selector","template","Input","TdFlavoredMarkdownButtonComponent","display","text","data","clicked","EventEmitter","prototype","emitClick","emit","HostBinding","Output","TdFlavoredMarkdownContainerDirective","viewContainerRef","_renderer","clear","setProperty","element","nativeElement","Directive","ViewContainerRef","Renderer2","TdFlavoredMarkdownComponent","_componentFactoryResolver","_changeDetectorRef","_injector","_elementRef","_simpleLineBreaks","_components","_viewInit","copyCodeToClipboard","copyCodeTooltips","contentReady","buttonClicked","defineProperty","content","_content","simpleLineBreaks","hostedUrl","_hostedUrl","anchor","_anchor","ngOnChanges","changes","refresh","scrollToAnchor","ngAfterViewInit","_this","_loadContent","container","textContent","markForCheck","markdown","trim","lines","replace","split","firstLineWhitespace","match","startingWhitespaceRegex_1","RegExp","map","line","join","_replaceCodeBlocks","_replaceCheckbox","_replaceTables","_replaceLists","_replaceButtons","keys","sort","compA","compB","indexOf","_render","setTimeout","key","markdownParts","shift","undefined","insert","hostView","contentRef","resolveComponentFactory","TdMarkdownComponent","instance","_replaceComponent","type","regExp","replacerFunc","componentIndex","_i","componentFactory","componentRef","MatCheckbox","checked","disabled","labelPosition","getElementsByClassName","buttonRegExp","globalButtonRegExp","source","flags","matches","exec","subscribe","clickEvent","TdHighlightComponent","language","codeblock","codeLang","TdDataTableComponent","dataTableLines","columns","filter","col","s","alignment","index","widths","min","parseInt","max","width","isNaN","name","toLowerCase","numeric","test","rowSplit","cell","row","forEach","rowSplitCell","sortable","sortChange","event","a","b","direction","Number","parseFloat","order","TdDataTableSortingOrder","Descending","TdFlavoredListComponent","lineTexts","toString","sublineTexts","sublines","subline","changeDetection","ChangeDetectionStrategy","OnPush","ComponentFactoryResolver","ChangeDetectorRef","Injector","ElementRef","ViewChild","static","TdFlavoredMarkdownLoaderComponent","_markdownUrlLoaderService","loadFailed","loading","url","httpOptions","loadMarkdown","_a","load","_b","error_1","TdMarkdownLoaderService","NgModule","imports","CommonModule","MatCheckboxModule","MatListModule","MatProgressBarModule","CovalentDataTableModule","CovalentHighlightModule","CovalentMarkdownModule","MatButtonModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, Input } from '@angular/core';\n\nexport interface IFlavoredListItem {\n line: string;\n sublines?: string[];\n}\n\n@Component({\n selector: 'cfm-list',\n styleUrls: ['./cfm-list.component.scss'],\n templateUrl: './cfm-list.component.html',\n})\nexport class TdFlavoredListComponent {\n @Input() lines: IFlavoredListItem[];\n @Input() dense: boolean = false;\n}\n","import {\n Component,\n Directive,\n AfterViewInit,\n Input,\n Renderer2,\n Type,\n ComponentFactory,\n ChangeDetectorRef,\n EventEmitter,\n Output,\n ViewContainerRef,\n ComponentFactoryResolver,\n Injector,\n ComponentRef,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n ElementRef,\n HostBinding,\n} from '@angular/core';\n\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { TdFlavoredListComponent, IFlavoredListItem } from './cfm-list/cfm-list.component';\nimport { TdHighlightComponent, ICopyCodeTooltips } from '@covalent/highlight';\nimport { TdMarkdownComponent, scrollToAnchor } from '@covalent/markdown';\nimport {\n TdDataTableComponent,\n TdDataTableSortingOrder,\n ITdDataTableSortChangeEvent,\n ITdDataTableColumnWidth,\n} from '@covalent/core/data-table';\n\nexport interface ITdFlavoredMarkdownButtonClickEvent {\n text: string;\n data: string;\n}\n\n@Component({\n template: `\n <button mat-raised-button (click)=\"emitClick()\">\n {{ text }}\n </button>\n `,\n})\nexport class TdFlavoredMarkdownButtonComponent {\n @HostBinding('style.display') display: string = 'inline-block';\n @Input() text: string = '';\n @Input() data: string = '';\n @Output()\n clicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n emitClick(): void {\n this.clicked.emit({ text: this.text, data: this.data });\n }\n}\n\n@Directive({\n selector: '[tdFlavoredMarkdownContainer]',\n})\nexport class TdFlavoredMarkdownContainerDirective {\n constructor(public viewContainerRef: ViewContainerRef, private _renderer: Renderer2) {}\n\n clear(): void {\n this._renderer.setProperty(this.viewContainerRef.element.nativeElement, 'innerHTML', '');\n this.viewContainerRef.clear();\n }\n}\n\nexport type IReplacerFunc<T> = (componentRef: ComponentRef<T>, ...args: any[]) => void;\n\n@Component({\n selector: 'td-flavored-markdown',\n styleUrls: ['./flavored-markdown.component.scss'],\n templateUrl: './flavored-markdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownComponent implements AfterViewInit, OnChanges {\n private _content: string;\n private _simpleLineBreaks: boolean = false;\n private _hostedUrl: string;\n private _anchor: string;\n\n private _components: {} = {};\n private _viewInit: boolean = false;\n /**\n * content?: string\n *\n * Markdown format content to be parsed as material/covalent markup.\n *\n * e.g. README.md content.\n */\n @Input('content')\n set content(content: string) {\n this._content = content;\n }\n\n /**\n * simpleLineBreaks?: string\n *\n * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.\n * Defaults to false.\n */\n @Input('simpleLineBreaks')\n set simpleLineBreaks(simpleLineBreaks: boolean) {\n this._simpleLineBreaks = simpleLineBreaks;\n }\n\n /**\n * hostedUrl?: string\n *\n * If markdown contains relative paths, this is required to generate correct urls\n *\n */\n @Input('hostedUrl')\n set hostedUrl(hostedUrl: string) {\n this._hostedUrl = hostedUrl;\n }\n\n /**\n * anchor?: string\n *\n * Anchor to jump to\n *\n */\n @Input('anchor')\n set anchor(anchor: string) {\n this._anchor = anchor;\n }\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard: boolean = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips: ICopyCodeTooltips = {};\n /**\n * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<undefined> = new EventEmitter<undefined>();\n\n /**\n * buttonClicked?: ITdFlavoredMarkdownButtonClickEvent\n * Event emitted when a button is clicked\n * Is an object containing text and data of button\n */\n @Output()\n buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n\n @ViewChild(TdFlavoredMarkdownContainerDirective, { static: true }) container: TdFlavoredMarkdownContainerDirective;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef,\n private _injector: Injector,\n private _elementRef: ElementRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n // only anchor changed\n if (changes.anchor && !changes.content && !changes.simpleLineBreaks && !changes.hostedUrl) {\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, false);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent((<HTMLElement>this.container.viewContainerRef.element.nativeElement).textContent);\n Promise.resolve().then(() => {\n this._viewInit = true;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n refresh(): void {\n if (this._content) {\n this._loadContent(this._content);\n } else if (this._viewInit) {\n this._loadContent((<HTMLElement>this.container.viewContainerRef.element.nativeElement).textContent);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _loadContent(markdown: string): void {\n if (markdown && markdown.trim().length > 0) {\n this.container.clear();\n markdown = markdown.replace(/^(\\s|\\t)*\\n+/g, '').replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '');\n // Split markdown by line characters\n let lines: string[] = markdown.split('\\n');\n\n // check how much indentation is used by the first actual markdown line\n const firstLineWhitespace: string = lines[0].match(/^(\\s|\\t)*/)[0];\n\n // Remove all indentation spaces so markdown can be parsed correctly\n const startingWhitespaceRegex: RegExp = new RegExp('^' + firstLineWhitespace);\n lines = lines.map(function (line: string): string {\n return line.replace(startingWhitespaceRegex, '');\n });\n\n // Join lines again with line characters\n markdown = [...lines, '', ''].join('\\n');\n markdown = this._replaceCodeBlocks(markdown);\n markdown = this._replaceCheckbox(markdown);\n markdown = this._replaceTables(markdown);\n markdown = this._replaceLists(markdown);\n markdown = this._replaceButtons(markdown);\n const keys: string[] = Object.keys(this._components);\n // need to sort the placeholders in order of encounter in markdown content\n keys.sort((compA: string, compB: string) => {\n return markdown.indexOf(compA) > markdown.indexOf(compB) ? 1 : -1;\n });\n this._render(markdown, keys[0], keys);\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n setTimeout(() => scrollToAnchor(this._elementRef.nativeElement, this._anchor, false), 250);\n this.contentReady.emit();\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _render(markdown: string, key: string, keys: string[]): void {\n if (!markdown) {\n return;\n }\n if (key && markdown.indexOf(key) > -1) {\n const markdownParts: string[] = markdown.split(key);\n keys.shift();\n this._render(markdownParts[0], undefined, undefined);\n this.container.viewContainerRef.insert(this._components[key].hostView, this.container.viewContainerRef.length);\n this._components[key] = undefined;\n delete this._components[key];\n this._render(markdownParts[1], keys[0], keys);\n } else {\n const contentRef: ComponentRef<TdMarkdownComponent> = this._componentFactoryResolver\n .resolveComponentFactory(TdMarkdownComponent)\n .create(this._injector);\n contentRef.instance.content = markdown;\n contentRef.instance.hostedUrl = this._hostedUrl;\n contentRef.instance.simpleLineBreaks = this._simpleLineBreaks;\n contentRef.instance.refresh();\n this.container.viewContainerRef.insert(contentRef.hostView, this.container.viewContainerRef.length);\n }\n }\n\n private _replaceComponent<T>(\n markdown: string,\n type: Type<T>,\n regExp: RegExp,\n replacerFunc: IReplacerFunc<T>,\n ): string {\n let componentIndex: number = 0;\n return markdown.replace(regExp, (...args: any[]) => {\n const componentFactory: ComponentFactory<T> = this._componentFactoryResolver.resolveComponentFactory(type);\n const componentRef: ComponentRef<T> = componentFactory.create(this._injector);\n replacerFunc(componentRef, ...args);\n const key: string = '[' + componentFactory.selector + '-placeholder-' + componentIndex++ + ']';\n this._components[key] = componentRef;\n return key;\n });\n }\n\n private _replaceCheckbox(markdown: string): string {\n const checkboxRegExp: RegExp = /(?:^|\\n)- \\[(x| )\\](.*)/gi;\n return this._replaceComponent(\n markdown,\n MatCheckbox,\n checkboxRegExp,\n (componentRef: ComponentRef<MatCheckbox>, match: string, checked: string, label: string) => {\n componentRef.instance.checked = !!checked.trim();\n componentRef.instance.disabled = true;\n componentRef.instance.labelPosition = 'after';\n this._renderer.setProperty(\n (<HTMLElement>componentRef.instance._elementRef.nativeElement).getElementsByClassName(\n 'mat-checkbox-label',\n )[0],\n 'innerHTML',\n label,\n );\n },\n );\n }\n\n private _replaceButtons(markdown: string): string {\n const buttonRegExp: RegExp = /\\[([^\\[]+)\\](\\(#data=(.*)\\))/i;\n const globalButtonRegExp: RegExp = new RegExp(buttonRegExp.source, buttonRegExp.flags + 'g');\n return this._replaceComponent(\n markdown,\n TdFlavoredMarkdownButtonComponent,\n globalButtonRegExp,\n (componentRef: ComponentRef<TdFlavoredMarkdownButtonComponent>, match: string) => {\n const matches: RegExpExecArray = buttonRegExp.exec(match);\n const text: string = matches[1];\n const data: string = matches[3];\n componentRef.instance.text = text;\n componentRef.instance.data = data;\n componentRef.instance.clicked.subscribe((clickEvent: ITdFlavoredMarkdownButtonClickEvent) =>\n this.buttonClicked.emit(clickEvent),\n );\n },\n );\n }\n\n private _replaceCodeBlocks(markdown: string): string {\n const codeBlockRegExp: RegExp = /(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g;\n return this._replaceComponent(\n markdown,\n TdHighlightComponent,\n codeBlockRegExp,\n (componentRef: ComponentRef<TdHighlightComponent>, match: string, language: string, codeblock: string) => {\n if (language) {\n componentRef.instance.codeLang = language;\n }\n componentRef.instance.copyCodeToClipboard = this.copyCodeToClipboard;\n componentRef.instance.copyCodeTooltips = this.copyCodeTooltips;\n componentRef.instance.content = codeblock;\n },\n );\n }\n\n private _replaceTables(markdown: string): string {\n const tableRgx: RegExp =\n /^ {0,3}\\|?.+\\|.+\\n[ \\t]{0,3}\\|?[ \\t]*:?[ \\t]*(?:-|=){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:-|=){2,}[\\s\\S]+?(?:\\n\\n|~0)/gm;\n return this._replaceComponent(\n markdown,\n TdDataTableComponent,\n tableRgx,\n (componentRef: ComponentRef<TdDataTableComponent>, match: string) => {\n const dataTableLines: string[] = match.replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '').split('\\n');\n const columns: string[] = dataTableLines[0]\n .split('|')\n .filter((col: string) => {\n return col;\n })\n .map((s: string) => {\n return s.trim();\n });\n const alignment: string[] = dataTableLines[1]\n .split('|')\n .filter((v: string) => {\n return v;\n })\n .map((s: string) => {\n return s.trim();\n });\n componentRef.instance.columns = columns.map((col: string, index: number) => {\n const widths: string[] = alignment[index].split('---');\n const min: number = parseInt(widths[0], 10);\n const max: number = parseInt(widths[1], 10);\n let width: ITdDataTableColumnWidth = { min, max };\n if (isNaN(min) && isNaN(max)) {\n width = undefined;\n } else if (isNaN(max)) {\n width.max = undefined;\n } else if (isNaN(min)) {\n width.min = undefined;\n }\n return {\n label: col,\n name: col.toLowerCase().trim(),\n numeric: /^--*[ \\t]*:[ \\t]*$/.test(alignment[index]),\n width,\n };\n });\n\n const data: any[] = [];\n for (let i: number = 2; i < dataTableLines.length; i++) {\n const rowSplit: string[] = dataTableLines[i]\n .split('|')\n .filter((cell: string) => {\n return cell;\n })\n .map((s: string) => {\n return s.trim();\n });\n const row: any = {};\n columns.forEach((col: string, index: number) => {\n const rowSplitCell: string = rowSplit[index];\n if (rowSplitCell) {\n row[col.toLowerCase().trim()] = rowSplitCell.replace(/`(.*)`/, (m: string, value: string) => {\n return value;\n });\n }\n });\n data.push(row);\n }\n componentRef.instance.data = data;\n componentRef.instance.sortable = true;\n componentRef.instance.sortChange.subscribe((event: ITdDataTableSortChangeEvent) => {\n componentRef.instance.data.sort((a: any, b: any) => {\n const compA: any = a[event.name];\n const compB: any = b[event.name];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (event.order === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n componentRef.instance.refresh();\n });\n setTimeout(() => {\n componentRef.instance.refresh();\n });\n },\n );\n }\n\n private _replaceLists(markdown: string): string {\n const listRegExp: RegExp = /(?:^|\\n)(( *\\+)[ |\\t](.*)\\n)+/g;\n return this._replaceComponent(\n markdown,\n TdFlavoredListComponent,\n listRegExp,\n (componentRef: ComponentRef<TdFlavoredListComponent>, match: string) => {\n const lineTexts: string[] = match.split(\n new RegExp('\\\\n {' + (match.indexOf('+') - 1).toString() + '}\\\\+[ |\\\\t]'),\n );\n lineTexts.shift();\n const lines: IFlavoredListItem[] = [];\n lineTexts.forEach((text: string, index: number) => {\n const sublineTexts: string[] = text.split(/\\n *\\+ /);\n lines.push({\n line: sublineTexts.shift(),\n sublines: sublineTexts.map((subline: string) => {\n return subline.trim();\n }),\n });\n });\n componentRef.instance.lines = lines;\n },\n );\n }\n}\n","import {\n Component,\n Input,\n ChangeDetectorRef,\n SimpleChanges,\n OnChanges,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { TdMarkdownLoaderService } from '@covalent/markdown';\nimport { ITdFlavoredMarkdownButtonClickEvent } from '../flavored-markdown.component';\nimport { ICopyCodeTooltips } from '@covalent/highlight';\n\n// TODO: make a td-markdown-loader component\n\n@Component({\n selector: 'td-flavored-markdown-loader',\n styleUrls: ['./flavored-markdown-loader.component.scss'],\n templateUrl: './flavored-markdown-loader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownLoaderComponent implements OnChanges {\n /**\n * url: string\n * The url of the markdown file.\n */\n @Input() url: string;\n\n /**\n * httpOptions: object\n * HTTP options that can be part of the request.\n */\n @Input() httpOptions: object;\n\n /**\n * anchor: string\n * Anchor to jump to.\n */\n @Input() anchor: string;\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard: boolean = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips: ICopyCodeTooltips = {};\n\n /**\n * contentReady: void\n * Emitted when markdown rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter();\n\n /**\n * loadFailed: Error\n * Emitted when loading of markdown file fails.\n */\n @Output() loadFailed: EventEmitter<Error> = new EventEmitter();\n\n @Output() buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter();\n\n content: string;\n loading: boolean = true;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _markdownUrlLoaderService: TdMarkdownLoaderService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.url || changes.httpOptions) {\n this.loadMarkdown();\n }\n }\n\n async loadMarkdown(): Promise<void> {\n this.loading = true;\n this._changeDetectorRef.markForCheck();\n try {\n this.content = await this._markdownUrlLoaderService.load(this.url, this.httpOptions);\n } catch (error) {\n this.loadFailed.emit(error);\n } finally {\n this.loading = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatListModule } from '@angular/material/list';\n\nimport { CovalentDataTableModule, TdDataTableComponent } from '@covalent/core/data-table';\nimport { CovalentHighlightModule, TdHighlightComponent } from '@covalent/highlight';\nimport { CovalentMarkdownModule, TdMarkdownComponent } from '@covalent/markdown';\n\nimport { TdFlavoredListComponent } from './cfm-list/cfm-list.component';\nimport {\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownButtonComponent,\n} from './flavored-markdown.component';\nimport { TdFlavoredMarkdownLoaderComponent } from './flavored-markdown-loader/flavored-markdown-loader.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatListModule,\n MatProgressBarModule,\n CovalentDataTableModule,\n CovalentHighlightModule,\n CovalentMarkdownModule,\n MatButtonModule,\n ],\n declarations: [\n TdFlavoredListComponent,\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownLoaderComponent,\n TdFlavoredMarkdownButtonComponent,\n ],\n exports: [TdFlavoredMarkdownComponent, TdFlavoredMarkdownLoaderComponent],\n})\nexport class CovalentFlavoredMarkdownModule {}\n"]}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"ITdFlavoredMarkdownButtonClickEvent":{"__symbolic":"interface"},"TdFlavoredMarkdownButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":39,"character":1},"arguments":[{"template":"\n <button mat-raised-button (click)=\"emitClick()\">\n {{ text }}\n </button>\n "}]}],"members":{"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":47,"character":3},"arguments":["style.display"]}]}],"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"clicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":50,"character":3}}]}],"emitClick":[{"__symbolic":"method"}]}},"TdFlavoredMarkdownContainerDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":57,"character":1},"arguments":[{"selector":"[tdFlavoredMarkdownContainer]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":61,"character":39},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":61,"character":76}]}],"clear":[{"__symbolic":"method"}]}},"IReplacerFunc":{"__symbolic":"interface"},"TdFlavoredMarkdownComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":71,"character":1},"arguments":[{"selector":"td-flavored-markdown","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":75,"character":19},"member":"OnPush"},"template":"<div tdFlavoredMarkdownContainer>\n <ng-content></ng-content>\n</div>\n","styles":[":host ::ng-deep td-markdown:first-of-type>div:first-of-type>h1:first-of-type,:host ::ng-deep td-markdown:first-of-type>div:first-of-type>h2:first-of-type{margin-top:0}:host ::ng-deep mat-checkbox,:host ::ng-deep td-data-table{display:block}:host ::ng-deep mat-checkbox:last-of-type,:host ::ng-deep td-data-table,:host ::ng-deep td-highlight{margin-bottom:16px}:host ::ng-deep :not(pre)>code{font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace;padding-left:2px;padding-right:2px}:host ::ng-deep td-highlight{-ms-flex-direction:row;-ms-flex-pack:justify;display:-ms-flexbox;display:flex;flex-direction:row;justify-content:space-between}"]}]}],"members":{"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3},"arguments":["content"]}]}],"simpleLineBreaks":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3},"arguments":["simpleLineBreaks"]}]}],"hostedUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3},"arguments":["hostedUrl"]}]}],"anchor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":125,"character":3},"arguments":["anchor"]}]}],"copyCodeToClipboard":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"copyCodeTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":143,"character":3}}]}],"contentReady":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":148,"character":3}}]}],"buttonClicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":155,"character":3}}]}],"container":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":158,"character":3},"arguments":[{"__symbolic":"reference","name":"TdFlavoredMarkdownContainerDirective"},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":161,"character":39},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":61,"character":76},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":163,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":164,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":165,"character":25}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"_loadContent":[{"__symbolic":"method"}],"_render":[{"__symbolic":"method"}],"_replaceComponent":[{"__symbolic":"method"}],"_replaceCheckbox":[{"__symbolic":"method"}],"_replaceButtons":[{"__symbolic":"method"}],"_replaceCodeBlocks":[{"__symbolic":"method"}],"_replaceTables":[{"__symbolic":"method"}],"_replaceLists":[{"__symbolic":"method"}]}},"CovalentFlavoredMarkdownModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":25,"character":4},{"__symbolic":"reference","module":"@covalent/core/data-table","name":"CovalentDataTableModule","line":26,"character":4},{"__symbolic":"reference","module":"@covalent/highlight","name":"CovalentHighlightModule","line":27,"character":4},{"__symbolic":"reference","module":"@covalent/markdown","name":"CovalentMarkdownModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":29,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"TdFlavoredMarkdownComponent"},{"__symbolic":"reference","name":"TdFlavoredMarkdownContainerDirective"},{"__symbolic":"reference","name":"TdFlavoredMarkdownLoaderComponent"},{"__symbolic":"reference","name":"TdFlavoredMarkdownButtonComponent"}],"exports":[{"__symbolic":"reference","name":"TdFlavoredMarkdownComponent"},{"__symbolic":"reference","name":"TdFlavoredMarkdownLoaderComponent"}]}]}],"members":{}},"TdFlavoredMarkdownLoaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"td-flavored-markdown-loader","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":20,"character":19},"member":"OnPush"},"template":"<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url\"\n [anchor]=\"anchor\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n","styles":[":host{display:block}.sticky{position:absolute;top:0}.delay{-webkit-animation:delayAnimation;-webkit-animation-duration:.6s;animation:delayAnimation;animation-duration:.6s}@-webkit-keyframes delayAnimation{0%{opacity:0}99%{opacity:0}to{opacity:1}}@keyframes delayAnimation{0%{opacity:0}99%{opacity:0}to{opacity:1}}"]}]}],"members":{"url":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"httpOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"anchor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"copyCodeToClipboard":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"copyCodeTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"contentReady":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":60,"character":3}}]}],"loadFailed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":66,"character":3}}]}],"buttonClicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":74,"character":32},{"__symbolic":"reference","module":"@covalent/markdown","name":"TdMarkdownLoaderService","line":75,"character":39}]}],"ngOnChanges":[{"__symbolic":"method"}],"loadMarkdown":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"cfm-list","template":"<mat-list [attr.dense]=\"dense ? true : null\">\n <ng-template let-line let-last=\"last\" ngFor [ngForOf]=\"lines\">\n <mat-list-item>\n <h4 matLine>\n {{ line.line }}\n </h4>\n <p *ngFor=\"let subline of line.sublines\" matLine>\n {{ subline }}\n </p>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </mat-list-item>\n </ng-template>\n</mat-list>\n","styles":[""]}]}],"members":{"lines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"dense":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}]}}},"origins":{"ITdFlavoredMarkdownButtonClickEvent":"./flavored-markdown.component","TdFlavoredMarkdownButtonComponent":"./flavored-markdown.component","TdFlavoredMarkdownContainerDirective":"./flavored-markdown.component","IReplacerFunc":"./flavored-markdown.component","TdFlavoredMarkdownComponent":"./flavored-markdown.component","CovalentFlavoredMarkdownModule":"./flavored-markdown.module","TdFlavoredMarkdownLoaderComponent":"./flavored-markdown-loader/flavored-markdown-loader.component","ɵa":"./cfm-list/cfm-list.component"},"importAs":"@covalent/flavored-markdown"}
1
+ {"__symbolic":"module","version":4,"metadata":{"ITdFlavoredMarkdownButtonClickEvent":{"__symbolic":"interface"},"TdFlavoredMarkdownButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":39,"character":1},"arguments":[{"template":"\n <button mat-raised-button (click)=\"emitClick()\">\n {{ text }}\n </button>\n "}]}],"members":{"display":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":47,"character":3},"arguments":["style.display"]}]}],"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"clicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":50,"character":3}}]}],"emitClick":[{"__symbolic":"method"}]}},"TdFlavoredMarkdownContainerDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":57,"character":1},"arguments":[{"selector":"[tdFlavoredMarkdownContainer]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":61,"character":39},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":61,"character":76}]}],"clear":[{"__symbolic":"method"}]}},"IReplacerFunc":{"__symbolic":"interface"},"TdFlavoredMarkdownComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":71,"character":1},"arguments":[{"selector":"td-flavored-markdown","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":75,"character":19},"member":"OnPush"},"template":"<div tdFlavoredMarkdownContainer>\n <ng-content></ng-content>\n</div>\n","styles":[":host ::ng-deep td-markdown:first-of-type>div:first-of-type>h1:first-of-type,:host ::ng-deep td-markdown:first-of-type>div:first-of-type>h2:first-of-type{margin-top:0}:host ::ng-deep mat-checkbox,:host ::ng-deep td-data-table{display:block}:host ::ng-deep mat-checkbox:last-of-type,:host ::ng-deep td-data-table,:host ::ng-deep td-highlight{margin-bottom:16px}:host ::ng-deep :not(pre)>code{font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace;padding-left:2px;padding-right:2px}:host ::ng-deep td-highlight{-ms-flex-direction:row;-ms-flex-pack:justify;display:-ms-flexbox;display:flex;flex-direction:row;justify-content:space-between}"]}]}],"members":{"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3},"arguments":["content"]}]}],"simpleLineBreaks":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3},"arguments":["simpleLineBreaks"]}]}],"hostedUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3},"arguments":["hostedUrl"]}]}],"anchor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":125,"character":3},"arguments":["anchor"]}]}],"copyCodeToClipboard":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":136,"character":3}}]}],"copyCodeTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":143,"character":3}}]}],"contentReady":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":148,"character":3}}]}],"buttonClicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":155,"character":3}}]}],"container":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":158,"character":3},"arguments":[{"__symbolic":"reference","name":"TdFlavoredMarkdownContainerDirective"},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":161,"character":39},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":61,"character":76},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":163,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":164,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":165,"character":25}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}],"_loadContent":[{"__symbolic":"method"}],"_render":[{"__symbolic":"method"}],"_replaceComponent":[{"__symbolic":"method"}],"_replaceCheckbox":[{"__symbolic":"method"}],"_replaceButtons":[{"__symbolic":"method"}],"_replaceCodeBlocks":[{"__symbolic":"method"}],"_replaceTables":[{"__symbolic":"method"}],"_replaceLists":[{"__symbolic":"method"}]}},"CovalentFlavoredMarkdownModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":25,"character":4},{"__symbolic":"reference","module":"@covalent/core/data-table","name":"CovalentDataTableModule","line":26,"character":4},{"__symbolic":"reference","module":"@covalent/highlight","name":"CovalentHighlightModule","line":27,"character":4},{"__symbolic":"reference","module":"@covalent/markdown","name":"CovalentMarkdownModule","line":28,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":29,"character":4}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"TdFlavoredMarkdownComponent"},{"__symbolic":"reference","name":"TdFlavoredMarkdownContainerDirective"},{"__symbolic":"reference","name":"TdFlavoredMarkdownLoaderComponent"},{"__symbolic":"reference","name":"TdFlavoredMarkdownButtonComponent"}],"exports":[{"__symbolic":"reference","name":"TdFlavoredMarkdownComponent"},{"__symbolic":"reference","name":"TdFlavoredMarkdownLoaderComponent"}]}]}],"members":{}},"TdFlavoredMarkdownLoaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"td-flavored-markdown-loader","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":20,"character":19},"member":"OnPush"},"template":"<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url\"\n [anchor]=\"anchor\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n","styles":[":host{display:block}.sticky{position:absolute;top:0}.delay{animation:delayAnimation;animation-duration:.6s}@keyframes delayAnimation{0%{opacity:0}99%{opacity:0}to{opacity:1}}"]}]}],"members":{"url":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"httpOptions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"anchor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"copyCodeToClipboard":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"copyCodeTooltips":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"contentReady":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":60,"character":3}}]}],"loadFailed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":66,"character":3}}]}],"buttonClicked":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":74,"character":32},{"__symbolic":"reference","module":"@covalent/markdown","name":"TdMarkdownLoaderService","line":75,"character":39}]}],"ngOnChanges":[{"__symbolic":"method"}],"loadMarkdown":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"cfm-list","template":"<mat-list [attr.dense]=\"dense ? true : null\">\n <ng-template let-line let-last=\"last\" ngFor [ngForOf]=\"lines\">\n <mat-list-item>\n <h4 matLine>\n {{ line.line }}\n </h4>\n <p *ngFor=\"let subline of line.sublines\" matLine>\n {{ subline }}\n </p>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </mat-list-item>\n </ng-template>\n</mat-list>\n","styles":[""]}]}],"members":{"lines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"dense":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}]}}},"origins":{"ITdFlavoredMarkdownButtonClickEvent":"./flavored-markdown.component","TdFlavoredMarkdownButtonComponent":"./flavored-markdown.component","TdFlavoredMarkdownContainerDirective":"./flavored-markdown.component","IReplacerFunc":"./flavored-markdown.component","TdFlavoredMarkdownComponent":"./flavored-markdown.component","CovalentFlavoredMarkdownModule":"./flavored-markdown.module","TdFlavoredMarkdownLoaderComponent":"./flavored-markdown-loader/flavored-markdown-loader.component","ɵa":"./cfm-list/cfm-list.component"},"importAs":"@covalent/flavored-markdown"}
@@ -36,4 +36,4 @@ if (false) {
36
36
  /** @type {?} */
37
37
  TdFlavoredListComponent.prototype.dense;
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZtLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2ZsYXZvcmVkLW1hcmtkb3duL2NmbS1saXN0L2NmbS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRWpELHVDQUdDOzs7SUFGQyxpQ0FBYTs7SUFDYixxQ0FBb0I7O0FBUXRCLE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFPVyxVQUFLLEdBQVksS0FBSyxDQUFDO0lBQ2xDLENBQUM7OztZQVJBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFFcEIsd1pBQXdDOzthQUN6Qzs7O29CQUVFLEtBQUs7b0JBQ0wsS0FBSzs7OztJQUROLHdDQUFvQzs7SUFDcEMsd0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGbGF2b3JlZExpc3RJdGVtIHtcbiAgbGluZTogc3RyaW5nO1xuICBzdWJsaW5lcz86IHN0cmluZ1tdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjZm0tbGlzdCcsXG4gIHN0eWxlVXJsczogWycuL2NmbS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9jZm0tbGlzdC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmxhdm9yZWRMaXN0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbGluZXM6IElGbGF2b3JlZExpc3RJdGVtW107XG4gIEBJbnB1dCgpIGRlbnNlOiBib29sZWFuID0gZmFsc2U7XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZtLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9mbGF2b3JlZC1tYXJrZG93bi8iLCJzb3VyY2VzIjpbImNmbS1saXN0L2NmbS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRWpELHVDQUdDOzs7SUFGQyxpQ0FBYTs7SUFDYixxQ0FBb0I7O0FBUXRCLE1BQU0sT0FBTyx1QkFBdUI7SUFMcEM7UUFPVyxVQUFLLEdBQVksS0FBSyxDQUFDO0lBQ2xDLENBQUM7OztZQVJBLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFFcEIsd1pBQXdDOzthQUN6Qzs7O29CQUVFLEtBQUs7b0JBQ0wsS0FBSzs7OztJQUROLHdDQUFvQzs7SUFDcEMsd0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGbGF2b3JlZExpc3RJdGVtIHtcbiAgbGluZTogc3RyaW5nO1xuICBzdWJsaW5lcz86IHN0cmluZ1tdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjZm0tbGlzdCcsXG4gIHN0eWxlVXJsczogWycuL2NmbS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9jZm0tbGlzdC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmxhdm9yZWRMaXN0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbGluZXM6IElGbGF2b3JlZExpc3RJdGVtW107XG4gIEBJbnB1dCgpIGRlbnNlOiBib29sZWFuID0gZmFsc2U7XG59XG4iXX0=
@@ -8,4 +8,4 @@
8
8
  */
9
9
  export { TdFlavoredMarkdownButtonComponent, TdFlavoredMarkdownContainerDirective, TdFlavoredMarkdownComponent, CovalentFlavoredMarkdownModule, TdFlavoredMarkdownLoaderComponent } from './index';
10
10
  export { TdFlavoredListComponent as ɵa } from './cfm-list/cfm-list.component';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292YWxlbnQtZmxhdm9yZWQtbWFya2Rvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vZmxhdm9yZWQtbWFya2Rvd24vY292YWxlbnQtZmxhdm9yZWQtbWFya2Rvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFJQSx3TEFBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtUZEZsYXZvcmVkTGlzdENvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vY2ZtLWxpc3QvY2ZtLWxpc3QuY29tcG9uZW50JzsiXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292YWxlbnQtZmxhdm9yZWQtbWFya2Rvd24uanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2ZsYXZvcmVkLW1hcmtkb3duLyIsInNvdXJjZXMiOlsiY292YWxlbnQtZmxhdm9yZWQtbWFya2Rvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFJQSx3TEFBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcblxuZXhwb3J0IHtUZEZsYXZvcmVkTGlzdENvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vY2ZtLWxpc3QvY2ZtLWxpc3QuY29tcG9uZW50JzsiXX0=
@@ -75,7 +75,7 @@ TdFlavoredMarkdownLoaderComponent.decorators = [
75
75
  selector: 'td-flavored-markdown-loader',
76
76
  template: "<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url\"\n [anchor]=\"anchor\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n",
77
77
  changeDetection: ChangeDetectionStrategy.OnPush,
78
- styles: [":host{display:block}.sticky{position:absolute;top:0}.delay{-webkit-animation:delayAnimation;-webkit-animation-duration:.6s;animation:delayAnimation;animation-duration:.6s}@-webkit-keyframes delayAnimation{0%{opacity:0}99%{opacity:0}to{opacity:1}}@keyframes delayAnimation{0%{opacity:0}99%{opacity:0}to{opacity:1}}"]
78
+ styles: [":host{display:block}.sticky{position:absolute;top:0}.delay{animation:delayAnimation;animation-duration:.6s}@keyframes delayAnimation{0%{opacity:0}99%{opacity:0}to{opacity:1}}"]
79
79
  }] }
80
80
  ];
81
81
  /** @nocollapse */
@@ -156,4 +156,4 @@ if (false) {
156
156
  */
157
157
  TdFlavoredMarkdownLoaderComponent.prototype._markdownUrlLoaderService;
158
158
  }
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9mbGF2b3JlZC1tYXJrZG93bi9mbGF2b3JlZC1tYXJrZG93bi1sb2FkZXIvZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFHakIsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBWTdELE1BQU0sT0FBTyxpQ0FBaUM7Ozs7O0lBbUQ1QyxZQUNVLGtCQUFxQyxFQUNyQyx5QkFBa0Q7UUFEbEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQXlCOzs7Ozs7O1FBNUJuRCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7Ozs7OztRQU9yQyxxQkFBZ0IsR0FBc0IsRUFBRSxDQUFDOzs7OztRQU14QyxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDOzs7OztRQU10RCxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckQsa0JBQWEsR0FBc0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdoRyxZQUFPLEdBQVksSUFBSSxDQUFDO0lBS3JCLENBQUM7Ozs7O0lBRUosV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7Ozs7SUFFSyxZQUFZOztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkMsSUFBSTtnQkFDRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN0RjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdCO29CQUFTO2dCQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDeEM7UUFDSCxDQUFDO0tBQUE7OztZQS9FRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtnQkFFdkMsMmVBQXdEO2dCQUN4RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7Ozs7WUFsQkMsaUJBQWlCO1lBT1YsdUJBQXVCOzs7a0JBaUI3QixLQUFLOzBCQU1MLEtBQUs7cUJBTUwsS0FBSztrQ0FRTCxLQUFLOytCQU9MLEtBQUs7MkJBTUwsTUFBTTt5QkFNTixNQUFNOzRCQUVOLE1BQU07Ozs7Ozs7O0lBekNQLGdEQUFxQjs7Ozs7O0lBTXJCLHdEQUE2Qjs7Ozs7O0lBTTdCLG1EQUF3Qjs7Ozs7Ozs7SUFReEIsZ0VBQThDOzs7Ozs7O0lBTzlDLDZEQUFrRDs7Ozs7O0lBTWxELHlEQUFnRTs7Ozs7O0lBTWhFLHVEQUErRDs7SUFFL0QsMERBQWdHOztJQUVoRyxvREFBZ0I7O0lBQ2hCLG9EQUF3Qjs7Ozs7SUFHdEIsK0RBQTZDOzs7OztJQUM3QyxzRUFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGRNYXJrZG93bkxvYWRlclNlcnZpY2UgfSBmcm9tICdAY292YWxlbnQvbWFya2Rvd24nO1xuaW1wb3J0IHsgSVRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNsaWNrRXZlbnQgfSBmcm9tICcuLi9mbGF2b3JlZC1tYXJrZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUNvcHlDb2RlVG9vbHRpcHMgfSBmcm9tICdAY292YWxlbnQvaGlnaGxpZ2h0JztcblxuLy8gVE9ETzogbWFrZSBhIHRkLW1hcmtkb3duLWxvYWRlciBjb21wb25lbnRcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGF2b3JlZC1tYXJrZG93bi1sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGRGbGF2b3JlZE1hcmtkb3duTG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIHVybDogc3RyaW5nXG4gICAqIFRoZSB1cmwgb2YgdGhlIG1hcmtkb3duIGZpbGUuXG4gICAqL1xuICBASW5wdXQoKSB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogaHR0cE9wdGlvbnM6IG9iamVjdFxuICAgKiBIVFRQIG9wdGlvbnMgdGhhdCBjYW4gYmUgcGFydCBvZiB0aGUgcmVxdWVzdC5cbiAgICovXG4gIEBJbnB1dCgpIGh0dHBPcHRpb25zOiBvYmplY3Q7XG5cbiAgLyoqXG4gICAqIGFuY2hvcjogc3RyaW5nXG4gICAqIEFuY2hvciB0byBqdW1wIHRvLlxuICAgKi9cbiAgQElucHV0KCkgYW5jaG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGNvcHlDb2RlVG9DbGlwYm9hcmQ/OiBib29sZWFuXG4gICAqXG4gICAqIERpc3BsYXkgY29weSBidXR0b24gb24gY29kZSBzbmlwcGV0cyB0byBjb3B5IGNvZGUgdG8gY2xpcGJvYXJkLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCkgY29weUNvZGVUb0NsaXBib2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBjb3B5Q29kZVRvb2x0aXBzPzogSUNvcHlDb2RlVG9vbHRpcHNcbiAgICpcbiAgICogVG9vbHRpcHMgZm9yIGNvcHkgYnV0dG9uIHRvIGNvcHkgYW5kIHVwb24gY29weWluZy5cbiAgICovXG4gIEBJbnB1dCgpIGNvcHlDb2RlVG9vbHRpcHM6IElDb3B5Q29kZVRvb2x0aXBzID0ge307XG5cbiAgLyoqXG4gICAqIGNvbnRlbnRSZWFkeTogdm9pZFxuICAgKiBFbWl0dGVkIHdoZW4gbWFya2Rvd24gcmVuZGVyaW5nIGlzIGZpbmlzaGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGNvbnRlbnRSZWFkeTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBsb2FkRmFpbGVkOiBFcnJvclxuICAgKiBFbWl0dGVkIHdoZW4gbG9hZGluZyBvZiBtYXJrZG93biBmaWxlIGZhaWxzLlxuICAgKi9cbiAgQE91dHB1dCgpIGxvYWRGYWlsZWQ6IEV2ZW50RW1pdHRlcjxFcnJvcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29udGVudDogc3RyaW5nO1xuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfbWFya2Rvd25VcmxMb2FkZXJTZXJ2aWNlOiBUZE1hcmtkb3duTG9hZGVyU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy51cmwgfHwgY2hhbmdlcy5odHRwT3B0aW9ucykge1xuICAgICAgdGhpcy5sb2FkTWFya2Rvd24oKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTWFya2Rvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5jb250ZW50ID0gYXdhaXQgdGhpcy5fbWFya2Rvd25VcmxMb2FkZXJTZXJ2aWNlLmxvYWQodGhpcy51cmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmxvYWRGYWlsZWQuZW1pdChlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vZmxhdm9yZWQtbWFya2Rvd24vIiwic291cmNlcyI6WyJmbGF2b3JlZC1tYXJrZG93bi1sb2FkZXIvZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFHakIsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBWTdELE1BQU0sT0FBTyxpQ0FBaUM7Ozs7O0lBbUQ1QyxZQUNVLGtCQUFxQyxFQUNyQyx5QkFBa0Q7UUFEbEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQXlCOzs7Ozs7O1FBNUJuRCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7Ozs7OztRQU9yQyxxQkFBZ0IsR0FBc0IsRUFBRSxDQUFDOzs7OztRQU14QyxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDOzs7OztRQU10RCxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckQsa0JBQWEsR0FBc0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdoRyxZQUFPLEdBQVksSUFBSSxDQUFDO0lBS3JCLENBQUM7Ozs7O0lBRUosV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7Ozs7SUFFSyxZQUFZOztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkMsSUFBSTtnQkFDRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN0RjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdCO29CQUFTO2dCQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDeEM7UUFDSCxDQUFDO0tBQUE7OztZQS9FRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtnQkFFdkMsMmVBQXdEO2dCQUN4RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7Ozs7WUFsQkMsaUJBQWlCO1lBT1YsdUJBQXVCOzs7a0JBaUI3QixLQUFLOzBCQU1MLEtBQUs7cUJBTUwsS0FBSztrQ0FRTCxLQUFLOytCQU9MLEtBQUs7MkJBTUwsTUFBTTt5QkFNTixNQUFNOzRCQUVOLE1BQU07Ozs7Ozs7O0lBekNQLGdEQUFxQjs7Ozs7O0lBTXJCLHdEQUE2Qjs7Ozs7O0lBTTdCLG1EQUF3Qjs7Ozs7Ozs7SUFReEIsZ0VBQThDOzs7Ozs7O0lBTzlDLDZEQUFrRDs7Ozs7O0lBTWxELHlEQUFnRTs7Ozs7O0lBTWhFLHVEQUErRDs7SUFFL0QsMERBQWdHOztJQUVoRyxvREFBZ0I7O0lBQ2hCLG9EQUF3Qjs7Ozs7SUFHdEIsK0RBQTZDOzs7OztJQUM3QyxzRUFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGRNYXJrZG93bkxvYWRlclNlcnZpY2UgfSBmcm9tICdAY292YWxlbnQvbWFya2Rvd24nO1xuaW1wb3J0IHsgSVRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNsaWNrRXZlbnQgfSBmcm9tICcuLi9mbGF2b3JlZC1tYXJrZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUNvcHlDb2RlVG9vbHRpcHMgfSBmcm9tICdAY292YWxlbnQvaGlnaGxpZ2h0JztcblxuLy8gVE9ETzogbWFrZSBhIHRkLW1hcmtkb3duLWxvYWRlciBjb21wb25lbnRcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxhdm9yZWQtbWFya2Rvd24tbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGF2b3JlZC1tYXJrZG93bi1sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGRGbGF2b3JlZE1hcmtkb3duTG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIHVybDogc3RyaW5nXG4gICAqIFRoZSB1cmwgb2YgdGhlIG1hcmtkb3duIGZpbGUuXG4gICAqL1xuICBASW5wdXQoKSB1cmw6IHN0cmluZztcblxuICAvKipcbiAgICogaHR0cE9wdGlvbnM6IG9iamVjdFxuICAgKiBIVFRQIG9wdGlvbnMgdGhhdCBjYW4gYmUgcGFydCBvZiB0aGUgcmVxdWVzdC5cbiAgICovXG4gIEBJbnB1dCgpIGh0dHBPcHRpb25zOiBvYmplY3Q7XG5cbiAgLyoqXG4gICAqIGFuY2hvcjogc3RyaW5nXG4gICAqIEFuY2hvciB0byBqdW1wIHRvLlxuICAgKi9cbiAgQElucHV0KCkgYW5jaG9yOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGNvcHlDb2RlVG9DbGlwYm9hcmQ/OiBib29sZWFuXG4gICAqXG4gICAqIERpc3BsYXkgY29weSBidXR0b24gb24gY29kZSBzbmlwcGV0cyB0byBjb3B5IGNvZGUgdG8gY2xpcGJvYXJkLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCkgY29weUNvZGVUb0NsaXBib2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBjb3B5Q29kZVRvb2x0aXBzPzogSUNvcHlDb2RlVG9vbHRpcHNcbiAgICpcbiAgICogVG9vbHRpcHMgZm9yIGNvcHkgYnV0dG9uIHRvIGNvcHkgYW5kIHVwb24gY29weWluZy5cbiAgICovXG4gIEBJbnB1dCgpIGNvcHlDb2RlVG9vbHRpcHM6IElDb3B5Q29kZVRvb2x0aXBzID0ge307XG5cbiAgLyoqXG4gICAqIGNvbnRlbnRSZWFkeTogdm9pZFxuICAgKiBFbWl0dGVkIHdoZW4gbWFya2Rvd24gcmVuZGVyaW5nIGlzIGZpbmlzaGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGNvbnRlbnRSZWFkeTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBsb2FkRmFpbGVkOiBFcnJvclxuICAgKiBFbWl0dGVkIHdoZW4gbG9hZGluZyBvZiBtYXJrZG93biBmaWxlIGZhaWxzLlxuICAgKi9cbiAgQE91dHB1dCgpIGxvYWRGYWlsZWQ6IEV2ZW50RW1pdHRlcjxFcnJvcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29udGVudDogc3RyaW5nO1xuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfbWFya2Rvd25VcmxMb2FkZXJTZXJ2aWNlOiBUZE1hcmtkb3duTG9hZGVyU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy51cmwgfHwgY2hhbmdlcy5odHRwT3B0aW9ucykge1xuICAgICAgdGhpcy5sb2FkTWFya2Rvd24oKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTWFya2Rvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5jb250ZW50ID0gYXdhaXQgdGhpcy5fbWFya2Rvd25VcmxMb2FkZXJTZXJ2aWNlLmxvYWQodGhpcy51cmwsIHRoaXMuaHR0cE9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmxvYWRGYWlsZWQuZW1pdChlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -738,4 +738,4 @@ if (false) {
738
738
  */
739
739
  TdFlavoredMarkdownComponent.prototype._elementRef;
740
740
  }
741
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdm9yZWQtbWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2ZsYXZvcmVkLW1hcmtkb3duL2ZsYXZvcmVkLW1hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULEtBQUssRUFDTCxTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixRQUFRLEVBRVIsU0FBUyxFQUNULHVCQUF1QixFQUd2QixVQUFVLEVBQ1YsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLE1BQU0sK0JBQStCLENBQUM7QUFDM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFxQixNQUFNLHFCQUFxQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixHQUd4QixNQUFNLDJCQUEyQixDQUFDOzs7O0FBRW5DLHlEQUdDOzs7SUFGQyxtREFBYTs7SUFDYixtREFBYTs7QUFVZixNQUFNLE9BQU8saUNBQWlDO0lBUDlDO1FBUWdDLFlBQU8sR0FBVyxjQUFjLENBQUM7UUFDdEQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRTNCLFlBQU8sR0FBc0QsSUFBSSxZQUFZLEVBQXVDLENBQUM7SUFJdkgsQ0FBQzs7OztJQUhDLFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUks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Ozs7OztJQUM1Qix5REFBNkM7Ozs7O0lBQzdDLGdEQUEyQjs7Ozs7SUFDM0Isa0RBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEFmdGVyVmlld0luaXQsXG4gIElucHV0LFxuICBSZW5kZXJlcjIsXG4gIFR5cGUsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBJbmplY3RvcixcbiAgQ29tcG9uZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0Q2hlY2tib3ggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBUZEZsYXZvcmVkTGlzdENvbXBvbmVudCwgSUZsYXZvcmVkTGlzdEl0ZW0gfSBmcm9tICcuL2NmbS1saXN0L2NmbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZEhpZ2hsaWdodENvbXBvbmVudCwgSUNvcHlDb2RlVG9vbHRpcHMgfSBmcm9tICdAY292YWxlbnQvaGlnaGxpZ2h0JztcbmltcG9ydCB7IFRkTWFya2Rvd25Db21wb25lbnQsIHNjcm9sbFRvQW5jaG9yIH0gZnJvbSAnQGNvdmFsZW50L21hcmtkb3duJztcbmltcG9ydCB7XG4gIFRkRGF0YVRhYmxlQ29tcG9uZW50LFxuICBUZERhdGFUYWJsZVNvcnRpbmdPcmRlcixcbiAgSVRkRGF0YVRhYmxlU29ydENoYW5nZUV2ZW50LFxuICBJVGREYXRhVGFibGVDb2x1bW5XaWR0aCxcbn0gZnJvbSAnQGNvdmFsZW50L2NvcmUvZGF0YS10YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNsaWNrRXZlbnQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGRhdGE6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZW1pdENsaWNrKClcIj5cbiAgICAgIHt7IHRleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JykgZGlzcGxheTogc3RyaW5nID0gJ2lubGluZS1ibG9jayc7XG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkYXRhOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpXG4gIGNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElUZEZsYXZvcmVkTWFya2Rvd25CdXR0b25DbGlja0V2ZW50PigpO1xuICBlbWl0Q2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbGlja2VkLmVtaXQoeyB0ZXh0OiB0aGlzLnRleHQsIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGRGbGF2b3JlZE1hcmtkb3duQ29udGFpbmVyXScsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmxhdm9yZWRNYXJrZG93bkNvbnRhaW5lckRpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdpbm5lckhUTUwnLCAnJyk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSVJlcGxhY2VyRnVuYzxUPiA9IChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPiwgLi4uYXJnczogYW55W10pID0+IHZvaWQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLWZsYXZvcmVkLW1hcmtkb3duJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxhdm9yZWQtbWFya2Rvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZsYXZvcmVkLW1hcmtkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmxhdm9yZWRNYXJrZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX2NvbnRlbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2ltcGxlTGluZUJyZWFrczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9ob3N0ZWRVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW5jaG9yOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50czoge30gPSB7fTtcbiAgcHJpdmF0ZSBfdmlld0luaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICpcbiAgICogTWFya2Rvd24gZm9ybWF0IGNvbnRlbnQgdG8gYmUgcGFyc2VkIGFzIG1hdGVyaWFsL2NvdmFsZW50IG1hcmt1cC5cbiAgICpcbiAgICogZS5nLiBSRUFETUUubWQgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgnY29udGVudCcpXG4gIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIHNpbXBsZUxpbmVCcmVha3M/OiBzdHJpbmdcbiAgICpcbiAgICogU2V0cyB3aGV0aGVyIG5ld2xpbmUgY2hhcmFjdGVycyBpbnNpZGUgcGFyYWdyYXBocyBhbmQgc3BhbnMgYXJlIHBhcnNlZCBhcyA8YnIvPi5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoJ3NpbXBsZUxpbmVCcmVha3MnKVxuICBzZXQgc2ltcGxlTGluZUJyZWFrcyhzaW1wbGVMaW5lQnJlYWtzOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2ltcGxlTGluZUJyZWFrcyA9IHNpbXBsZUxpbmVCcmVha3M7XG4gIH1cblxuICAvKipcbiAgICogaG9zdGVkVXJsPzogc3RyaW5nXG4gICAqXG4gICAqIElmIG1hcmtkb3duIGNvbnRhaW5zIHJlbGF0aXZlIHBhdGhzLCB0aGlzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIGNvcnJlY3QgdXJsc1xuICAgKlxuICAgKi9cbiAgQElucHV0KCdob3N0ZWRVcmwnKVxuICBzZXQgaG9zdGVkVXJsKGhvc3RlZFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5faG9zdGVkVXJsID0gaG9zdGVkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGFuY2hvcj86IHN0cmluZ1xuICAgKlxuICAgKiBBbmNob3IgdG8ganVtcCB0b1xuICAgKlxuICAgKi9cbiAgQElucHV0KCdhbmNob3InKVxuICBzZXQgYW5jaG9yKGFuY2hvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvcHlDb2RlVG9DbGlwYm9hcmQ/OiBib29sZWFuXG4gICAqXG4gICAqIERpc3BsYXkgY29weSBidXR0b24gb24gY29kZSBzbmlwcGV0cyB0byBjb3B5IGNvZGUgdG8gY2xpcGJvYXJkLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCkgY29weUNvZGVUb0NsaXBib2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBjb3B5Q29kZVRvb2x0aXBzPzogSUNvcHlDb2RlVG9vbHRpcHNcbiAgICpcbiAgICogVG9vbHRpcHMgZm9yIGNvcHkgYnV0dG9uIHRvIGNvcHkgYW5kIHVwb24gY29weWluZy5cbiAgICovXG4gIEBJbnB1dCgpIGNvcHlDb2RlVG9vbHRpcHM6IElDb3B5Q29kZVRvb2x0aXBzID0ge307XG4gIC8qKlxuICAgKiBjb250ZW50UmVhZHk/OiBmdW5jdGlvblxuICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIHRoZSBtYXJrZG93biBjb250ZW50IHJlbmRlcmluZyBpcyBmaW5pc2hlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50UmVhZHk6IEV2ZW50RW1pdHRlcjx1bmRlZmluZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIGJ1dHRvbkNsaWNrZWQ/OiBJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudFxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZFxuICAgKiBJcyBhbiBvYmplY3QgY29udGFpbmluZyB0ZXh0IGFuZCBkYXRhIG9mIGJ1dHRvblxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElUZEZsYXZvcmVkTWFya2Rvd25CdXR0b25DbGlja0V2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoVGRGbGF2b3JlZE1hcmtkb3duQ29udGFpbmVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IFRkRmxhdm9yZWRNYXJrZG93bkNvbnRhaW5lckRpcmVjdGl2ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBvbmx5IGFuY2hvciBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZXMuYW5jaG9yICYmICFjaGFuZ2VzLmNvbnRlbnQgJiYgIWNoYW5nZXMuc2ltcGxlTGluZUJyZWFrcyAmJiAhY2hhbmdlcy5ob3N0ZWRVcmwpIHtcbiAgICAgIHNjcm9sbFRvQW5jaG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fYW5jaG9yLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRlbnQpIHtcbiAgICAgIHRoaXMuX2xvYWRDb250ZW50KCg8SFRNTEVsZW1lbnQ+dGhpcy5jb250YWluZXIudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLnRleHRDb250ZW50KTtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl92aWV3SW5pdCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udGVudCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQodGhpcy5fY29udGVudCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl92aWV3SW5pdCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQoKDxIVE1MRWxlbWVudD50aGlzLmNvbnRhaW5lci52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCkudGV4dENvbnRlbnQpO1xuICAgIH1cbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRDb250ZW50KG1hcmtkb3duOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAobWFya2Rvd24gJiYgbWFya2Rvd24udHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29udGFpbmVyLmNsZWFyKCk7XG4gICAgICBtYXJrZG93biA9IG1hcmtkb3duLnJlcGxhY2UoL14oXFxzfFxcdCkqXFxuKy9nLCAnJykucmVwbGFjZSgvKFxcc3xcXHQpKlxcbisoXFxzfFxcdCkqJC9nLCAnJyk7XG4gICAgICAvLyBTcGxpdCBtYXJrZG93biBieSBsaW5lIGNoYXJhY3RlcnNcbiAgICAgIGxldCBsaW5lczogc3RyaW5nW10gPSBtYXJrZG93bi5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIC8vIGNoZWNrIGhvdyBtdWNoIGluZGVudGF0aW9uIGlzIHVzZWQgYnkgdGhlIGZpcnN0IGFjdHVhbCBtYXJrZG93biBsaW5lXG4gICAgICBjb25zdCBmaXJzdExpbmVXaGl0ZXNwYWNlOiBzdHJpbmcgPSBsaW5lc1swXS5tYXRjaCgvXihcXHN8XFx0KSovKVswXTtcblxuICAgICAgLy8gUmVtb3ZlIGFsbCBpbmRlbnRhdGlvbiBzcGFjZXMgc28gbWFya2Rvd24gY2FuIGJlIHBhcnNlZCBjb3JyZWN0bHlcbiAgICAgIGNvbnN0IHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4OiBSZWdFeHAgPSBuZXcgUmVnRXhwKCdeJyArIGZpcnN0TGluZVdoaXRlc3BhY2UpO1xuICAgICAgbGluZXMgPSBsaW5lcy5tYXAoZnVuY3Rpb24gKGxpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBsaW5lLnJlcGxhY2Uoc3RhcnRpbmdXaGl0ZXNwYWNlUmVnZXgsICcnKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBKb2luIGxpbmVzIGFnYWluIHdpdGggbGluZSBjaGFyYWN0ZXJzXG4gICAgICBtYXJrZG93biA9IFsuLi5saW5lcywgJycsICcnXS5qb2luKCdcXG4nKTtcbiAgICAgIG1hcmtkb3duID0gdGhpcy5fcmVwbGFjZUNvZGVCbG9ja3MobWFya2Rvd24pO1xuICAgICAgbWFya2Rvd24gPSB0aGlzLl9yZXBsYWNlQ2hlY2tib3gobWFya2Rvd24pO1xuICAgICAgbWFya2Rvd24gPSB0aGlzLl9yZXBsYWNlVGFibGVzKG1hcmtkb3duKTtcbiAgICAgIG1hcmtkb3duID0gdGhpcy5fcmVwbGFjZUxpc3RzKG1hcmtkb3duKTtcbiAgICAgIG1hcmtkb3duID0gdGhpcy5fcmVwbGFjZUJ1dHRvbnMobWFya2Rvd24pO1xuICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLl9jb21wb25lbnRzKTtcbiAgICAgIC8vIG5lZWQgdG8gc29ydCB0aGUgcGxhY2Vob2xkZXJzIGluIG9yZGVyIG9mIGVuY291bnRlciBpbiBtYXJrZG93biBjb250ZW50XG4gICAgICBrZXlzLnNvcnQoKGNvbXBBOiBzdHJpbmcsIGNvbXBCOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG1hcmtkb3duLmluZGV4T2YoY29tcEEpID4gbWFya2Rvd24uaW5kZXhPZihjb21wQikgPyAxIDogLTE7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3JlbmRlcihtYXJrZG93biwga2V5c1swXSwga2V5cyk7XG4gICAgICAvLyBUT0RPOiB0aW1lb3V0IHJlcXVpcmVkIHNpbmNlIHJlc2l6aW5nIG9mIGh0bWwgZWxlbWVudHMgb2NjdXJzIHdoaWNoIGNhdXNlcyBhIGNoYW5nZSBpbiB0aGUgc2Nyb2xsIHBvc2l0aW9uXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNjcm9sbFRvQW5jaG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fYW5jaG9yLCBmYWxzZSksIDI1MCk7XG4gICAgICB0aGlzLmNvbnRlbnRSZWFkeS5lbWl0KCk7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXIobWFya2Rvd246IHN0cmluZywga2V5OiBzdHJpbmcsIGtleXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKCFtYXJrZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoa2V5ICYmIG1hcmtkb3duLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICBjb25zdCBtYXJrZG93blBhcnRzOiBzdHJpbmdbXSA9IG1hcmtkb3duLnNwbGl0KGtleSk7XG4gICAgICBrZXlzLnNoaWZ0KCk7XG4gICAgICB0aGlzLl9yZW5kZXIobWFya2Rvd25QYXJ0c1swXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jb250YWluZXIudmlld0NvbnRhaW5lclJlZi5pbnNlcnQodGhpcy5fY29tcG9uZW50c1trZXldLmhvc3RWaWV3LCB0aGlzLmNvbnRhaW5lci52aWV3Q29udGFpbmVyUmVmLmxlbmd0aCk7XG4gICAgICB0aGlzLl9jb21wb25lbnRzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICBkZWxldGUgdGhpcy5fY29tcG9uZW50c1trZXldO1xuICAgICAgdGhpcy5fcmVuZGVyKG1hcmtkb3duUGFydHNbMV0sIGtleXNbMF0sIGtleXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZW50UmVmOiBDb21wb25lbnRSZWY8VGRNYXJrZG93bkNvbXBvbmVudD4gPSB0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRkTWFya2Rvd25Db21wb25lbnQpXG4gICAgICAgIC5jcmVhdGUodGhpcy5faW5qZWN0b3IpO1xuICAgICAgY29udGVudFJlZi5pbnN0YW5jZS5jb250ZW50ID0gbWFya2Rvd247XG4gICAgICBjb250ZW50UmVmLmluc3RhbmNlLmhvc3RlZFVybCA9IHRoaXMuX2hvc3RlZFVybDtcbiAgICAgIGNvbnRlbnRSZWYuaW5zdGFuY2Uuc2ltcGxlTGluZUJyZWFrcyA9IHRoaXMuX3NpbXBsZUxpbmVCcmVha3M7XG4gICAgICBjb250ZW50UmVmLmluc3RhbmNlLnJlZnJlc2goKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnZpZXdDb250YWluZXJSZWYuaW5zZXJ0KGNvbnRlbnRSZWYuaG9zdFZpZXcsIHRoaXMuY29udGFpbmVyLnZpZXdDb250YWluZXJSZWYubGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlQ29tcG9uZW50PFQ+KFxuICAgIG1hcmtkb3duOiBzdHJpbmcsXG4gICAgdHlwZTogVHlwZTxUPixcbiAgICByZWdFeHA6IFJlZ0V4cCxcbiAgICByZXBsYWNlckZ1bmM6IElSZXBsYWNlckZ1bmM8VD4sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGNvbXBvbmVudEluZGV4OiBudW1iZXIgPSAwO1xuICAgIHJldHVybiBtYXJrZG93bi5yZXBsYWNlKHJlZ0V4cCwgKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PFQ+ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHR5cGUpO1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZSh0aGlzLl9pbmplY3Rvcik7XG4gICAgICByZXBsYWNlckZ1bmMoY29tcG9uZW50UmVmLCAuLi5hcmdzKTtcbiAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gJ1snICsgY29tcG9uZW50RmFjdG9yeS5zZWxlY3RvciArICctcGxhY2Vob2xkZXItJyArIGNvbXBvbmVudEluZGV4KysgKyAnXSc7XG4gICAgICB0aGlzLl9jb21wb25lbnRzW2tleV0gPSBjb21wb25lbnRSZWY7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVwbGFjZUNoZWNrYm94KG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoZWNrYm94UmVnRXhwOiBSZWdFeHAgPSAvKD86XnxcXG4pLSBcXFsoeHwgKVxcXSguKikvZ2k7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIE1hdENoZWNrYm94LFxuICAgICAgY2hlY2tib3hSZWdFeHAsXG4gICAgICAoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TWF0Q2hlY2tib3g+LCBtYXRjaDogc3RyaW5nLCBjaGVja2VkOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNoZWNrZWQgPSAhIWNoZWNrZWQudHJpbSgpO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubGFiZWxQb3NpdGlvbiA9ICdhZnRlcic7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29tcG9uZW50UmVmLmluc3RhbmNlLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICAgICAnbWF0LWNoZWNrYm94LWxhYmVsJyxcbiAgICAgICAgICApWzBdLFxuICAgICAgICAgICdpbm5lckhUTUwnLFxuICAgICAgICAgIGxhYmVsLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVwbGFjZUJ1dHRvbnMobWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYnV0dG9uUmVnRXhwOiBSZWdFeHAgPSAvXFxbKFteXFxbXSspXFxdKFxcKCNkYXRhPSguKilcXCkpL2k7XG4gICAgY29uc3QgZ2xvYmFsQnV0dG9uUmVnRXhwOiBSZWdFeHAgPSBuZXcgUmVnRXhwKGJ1dHRvblJlZ0V4cC5zb3VyY2UsIGJ1dHRvblJlZ0V4cC5mbGFncyArICdnJyk7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICAgIGdsb2JhbEJ1dHRvblJlZ0V4cCxcbiAgICAgIChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUZEZsYXZvcmVkTWFya2Rvd25CdXR0b25Db21wb25lbnQ+LCBtYXRjaDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheSA9IGJ1dHRvblJlZ0V4cC5leGVjKG1hdGNoKTtcbiAgICAgICAgY29uc3QgdGV4dDogc3RyaW5nID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgY29uc3QgZGF0YTogc3RyaW5nID0gbWF0Y2hlc1szXTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnRleHQgPSB0ZXh0O1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0YSA9IGRhdGE7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbGlja2VkLnN1YnNjcmliZSgoY2xpY2tFdmVudDogSVRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNsaWNrRXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5idXR0b25DbGlja2VkLmVtaXQoY2xpY2tFdmVudCksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlQ29kZUJsb2NrcyhtYXJrZG93bjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlQmxvY2tSZWdFeHA6IFJlZ0V4cCA9IC8oPzpefFxcbilgYGAoLiopXFxuKFtcXHNcXFNdKj8pXFxuYGBgL2c7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRkSGlnaGxpZ2h0Q29tcG9uZW50LFxuICAgICAgY29kZUJsb2NrUmVnRXhwLFxuICAgICAgKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFRkSGlnaGxpZ2h0Q29tcG9uZW50PiwgbWF0Y2g6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZywgY29kZWJsb2NrOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvZGVMYW5nID0gbGFuZ3VhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvcHlDb2RlVG9DbGlwYm9hcmQgPSB0aGlzLmNvcHlDb2RlVG9DbGlwYm9hcmQ7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb3B5Q29kZVRvb2x0aXBzID0gdGhpcy5jb3B5Q29kZVRvb2x0aXBzO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGVudCA9IGNvZGVibG9jaztcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VUYWJsZXMobWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdGFibGVSZ3g6IFJlZ0V4cCA9IC9eIHswLDN9XFx8Py4rXFx8LitcXG5bIFxcdF17MCwzfVxcfD9bIFxcdF0qOj9bIFxcdF0qKD86LXw9KXsyLH1bIFxcdF0qOj9bIFxcdF0qXFx8WyBcXHRdKjo/WyBcXHRdKig/Oi18PSl7Mix9W1xcc1xcU10rPyg/Olxcblxcbnx+MCkvZ207XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRkRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgICAgdGFibGVSZ3gsXG4gICAgICAoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VGREYXRhVGFibGVDb21wb25lbnQ+LCBtYXRjaDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFUYWJsZUxpbmVzOiBzdHJpbmdbXSA9IG1hdGNoLnJlcGxhY2UoLyhcXHN8XFx0KSpcXG4rKFxcc3xcXHQpKiQvZywgJycpLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgY29uc3QgY29sdW1uczogc3RyaW5nW10gPSBkYXRhVGFibGVMaW5lc1swXVxuICAgICAgICAgIC5zcGxpdCgnfCcpXG4gICAgICAgICAgLmZpbHRlcigoY29sOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb2w7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAubWFwKChzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzLnRyaW0oKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50OiBzdHJpbmdbXSA9IGRhdGFUYWJsZUxpbmVzWzFdXG4gICAgICAgICAgLnNwbGl0KCd8JylcbiAgICAgICAgICAuZmlsdGVyKCh2OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm1hcCgoczogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcy50cmltKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2lkdGhzOiBzdHJpbmdbXSA9IGFsaWdubWVudFtpbmRleF0uc3BsaXQoJy0tLScpO1xuICAgICAgICAgIGNvbnN0IG1pbjogbnVtYmVyID0gcGFyc2VJbnQod2lkdGhzWzBdLCAxMCk7XG4gICAgICAgICAgY29uc3QgbWF4OiBudW1iZXIgPSBwYXJzZUludCh3aWR0aHNbMV0sIDEwKTtcbiAgICAgICAgICBsZXQgd2lkdGg6IElUZERhdGFUYWJsZUNvbHVtbldpZHRoID0geyBtaW4sIG1heCB9O1xuICAgICAgICAgIGlmIChpc05hTihtaW4pICYmIGlzTmFOKG1heCkpIHtcbiAgICAgICAgICAgIHdpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNOYU4obWF4KSkge1xuICAgICAgICAgICAgd2lkdGgubWF4ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNOYU4obWluKSkge1xuICAgICAgICAgICAgd2lkdGgubWluID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWw6IGNvbCxcbiAgICAgICAgICAgIG5hbWU6IGNvbC50b0xvd2VyQ2FzZSgpLnRyaW0oKSxcbiAgICAgICAgICAgIG51bWVyaWM6IC9eLS0qWyBcXHRdKjpbIFxcdF0qJC8udGVzdChhbGlnbm1lbnRbaW5kZXhdKSxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRhdGE6IGFueVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDI7IGkgPCBkYXRhVGFibGVMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHJvd1NwbGl0OiBzdHJpbmdbXSA9IGRhdGFUYWJsZUxpbmVzW2ldXG4gICAgICAgICAgICAuc3BsaXQoJ3wnKVxuICAgICAgICAgICAgLmZpbHRlcigoY2VsbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjZWxsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoKHM6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gcy50cmltKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCByb3c6IGFueSA9IHt9O1xuICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJvd1NwbGl0Q2VsbDogc3RyaW5nID0gcm93U3BsaXRbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHJvd1NwbGl0Q2VsbCkge1xuICAgICAgICAgICAgICByb3dbY29sLnRvTG93ZXJDYXNlKCkudHJpbSgpXSA9IHJvd1NwbGl0Q2VsbC5yZXBsYWNlKC9gKC4qKWAvLCAobTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkYXRhLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0YSA9IGRhdGE7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zb3J0YWJsZSA9IHRydWU7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zb3J0Q2hhbmdlLnN1YnNjcmliZSgoZXZlbnQ6IElUZERhdGFUYWJsZVNvcnRDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kYXRhLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wQTogYW55ID0gYVtldmVudC5uYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBCOiBhbnkgPSBiW2V2ZW50Lm5hbWVdO1xuICAgICAgICAgICAgbGV0IGRpcmVjdGlvbjogbnVtYmVyID0gMDtcbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUZsb2F0KGNvbXBBKSkgJiYgIU51bWJlci5pc05hTihOdW1iZXIucGFyc2VGbG9hdChjb21wQikpKSB7XG4gICAgICAgICAgICAgIGRpcmVjdGlvbiA9IE51bWJlci5wYXJzZUZsb2F0KGNvbXBBKSAtIE51bWJlci5wYXJzZUZsb2F0KGNvbXBCKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChjb21wQSA8IGNvbXBCKSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gLTE7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcEEgPiBjb21wQikge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IDE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb24gKiAoZXZlbnQub3JkZXIgPT09IFRkRGF0YVRhYmxlU29ydGluZ09yZGVyLkRlc2NlbmRpbmcgPyAtMSA6IDEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5yZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucmVmcmVzaCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VMaXN0cyhtYXJrZG93bjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaXN0UmVnRXhwOiBSZWdFeHAgPSAvKD86XnxcXG4pKCggKlxcKylbIHxcXHRdKC4qKVxcbikrL2c7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRkRmxhdm9yZWRMaXN0Q29tcG9uZW50LFxuICAgICAgbGlzdFJlZ0V4cCxcbiAgICAgIChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUZEZsYXZvcmVkTGlzdENvbXBvbmVudD4sIG1hdGNoOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgbGluZVRleHRzOiBzdHJpbmdbXSA9IG1hdGNoLnNwbGl0KFxuICAgICAgICAgIG5ldyBSZWdFeHAoJ1xcXFxuIHsnICsgKG1hdGNoLmluZGV4T2YoJysnKSAtIDEpLnRvU3RyaW5nKCkgKyAnfVxcXFwrWyB8XFxcXHRdJyksXG4gICAgICAgICk7XG4gICAgICAgIGxpbmVUZXh0cy5zaGlmdCgpO1xuICAgICAgICBjb25zdCBsaW5lczogSUZsYXZvcmVkTGlzdEl0ZW1bXSA9IFtdO1xuICAgICAgICBsaW5lVGV4dHMuZm9yRWFjaCgodGV4dDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3VibGluZVRleHRzOiBzdHJpbmdbXSA9IHRleHQuc3BsaXQoL1xcbiAqXFwrIC8pO1xuICAgICAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICAgICAgbGluZTogc3VibGluZVRleHRzLnNoaWZ0KCksXG4gICAgICAgICAgICBzdWJsaW5lczogc3VibGluZVRleHRzLm1hcCgoc3VibGluZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzdWJsaW5lLnRyaW0oKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxpbmVzID0gbGluZXM7XG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
741
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdm9yZWQtbWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9mbGF2b3JlZC1tYXJrZG93bi8iLCJzb3VyY2VzIjpbImZsYXZvcmVkLW1hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULEtBQUssRUFDTCxTQUFTLEVBR1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixRQUFRLEVBRVIsU0FBUyxFQUNULHVCQUF1QixFQUd2QixVQUFVLEVBQ1YsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLE1BQU0sK0JBQStCLENBQUM7QUFDM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFxQixNQUFNLHFCQUFxQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixHQUd4QixNQUFNLDJCQUEyQixDQUFDOzs7O0FBRW5DLHlEQUdDOzs7SUFGQyxtREFBYTs7SUFDYixtREFBYTs7QUFVZixNQUFNLE9BQU8saUNBQWlDO0lBUDlDO1FBUWdDLFlBQU8sR0FBVyxjQUFjLENBQUM7UUFDdEQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBRTNCLFlBQU8sR0FBc0QsSUFBSSxZQUFZLEVBQXVDLENBQUM7SUFJdkgsQ0FBQzs7OztJQUhDLFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUks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Ozs7OztJQUM1Qix5REFBNkM7Ozs7O0lBQzdDLGdEQUEyQjs7Ozs7SUFDM0Isa0RBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEFmdGVyVmlld0luaXQsXG4gIElucHV0LFxuICBSZW5kZXJlcjIsXG4gIFR5cGUsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBJbmplY3RvcixcbiAgQ29tcG9uZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0Q2hlY2tib3ggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBUZEZsYXZvcmVkTGlzdENvbXBvbmVudCwgSUZsYXZvcmVkTGlzdEl0ZW0gfSBmcm9tICcuL2NmbS1saXN0L2NmbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZEhpZ2hsaWdodENvbXBvbmVudCwgSUNvcHlDb2RlVG9vbHRpcHMgfSBmcm9tICdAY292YWxlbnQvaGlnaGxpZ2h0JztcbmltcG9ydCB7IFRkTWFya2Rvd25Db21wb25lbnQsIHNjcm9sbFRvQW5jaG9yIH0gZnJvbSAnQGNvdmFsZW50L21hcmtkb3duJztcbmltcG9ydCB7XG4gIFRkRGF0YVRhYmxlQ29tcG9uZW50LFxuICBUZERhdGFUYWJsZVNvcnRpbmdPcmRlcixcbiAgSVRkRGF0YVRhYmxlU29ydENoYW5nZUV2ZW50LFxuICBJVGREYXRhVGFibGVDb2x1bW5XaWR0aCxcbn0gZnJvbSAnQGNvdmFsZW50L2NvcmUvZGF0YS10YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNsaWNrRXZlbnQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGRhdGE6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZW1pdENsaWNrKClcIj5cbiAgICAgIHt7IHRleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JykgZGlzcGxheTogc3RyaW5nID0gJ2lubGluZS1ibG9jayc7XG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkYXRhOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpXG4gIGNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElUZEZsYXZvcmVkTWFya2Rvd25CdXR0b25DbGlja0V2ZW50PigpO1xuICBlbWl0Q2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbGlja2VkLmVtaXQoeyB0ZXh0OiB0aGlzLnRleHQsIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGRGbGF2b3JlZE1hcmtkb3duQ29udGFpbmVyXScsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmxhdm9yZWRNYXJrZG93bkNvbnRhaW5lckRpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdpbm5lckhUTUwnLCAnJyk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSVJlcGxhY2VyRnVuYzxUPiA9IChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPiwgLi4uYXJnczogYW55W10pID0+IHZvaWQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLWZsYXZvcmVkLW1hcmtkb3duJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxhdm9yZWQtbWFya2Rvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZsYXZvcmVkLW1hcmtkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRkRmxhdm9yZWRNYXJrZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX2NvbnRlbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2ltcGxlTGluZUJyZWFrczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9ob3N0ZWRVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW5jaG9yOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50czoge30gPSB7fTtcbiAgcHJpdmF0ZSBfdmlld0luaXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICpcbiAgICogTWFya2Rvd24gZm9ybWF0IGNvbnRlbnQgdG8gYmUgcGFyc2VkIGFzIG1hdGVyaWFsL2NvdmFsZW50IG1hcmt1cC5cbiAgICpcbiAgICogZS5nLiBSRUFETUUubWQgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgnY29udGVudCcpXG4gIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIHNpbXBsZUxpbmVCcmVha3M/OiBzdHJpbmdcbiAgICpcbiAgICogU2V0cyB3aGV0aGVyIG5ld2xpbmUgY2hhcmFjdGVycyBpbnNpZGUgcGFyYWdyYXBocyBhbmQgc3BhbnMgYXJlIHBhcnNlZCBhcyA8YnIvPi5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoJ3NpbXBsZUxpbmVCcmVha3MnKVxuICBzZXQgc2ltcGxlTGluZUJyZWFrcyhzaW1wbGVMaW5lQnJlYWtzOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2ltcGxlTGluZUJyZWFrcyA9IHNpbXBsZUxpbmVCcmVha3M7XG4gIH1cblxuICAvKipcbiAgICogaG9zdGVkVXJsPzogc3RyaW5nXG4gICAqXG4gICAqIElmIG1hcmtkb3duIGNvbnRhaW5zIHJlbGF0aXZlIHBhdGhzLCB0aGlzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIGNvcnJlY3QgdXJsc1xuICAgKlxuICAgKi9cbiAgQElucHV0KCdob3N0ZWRVcmwnKVxuICBzZXQgaG9zdGVkVXJsKGhvc3RlZFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5faG9zdGVkVXJsID0gaG9zdGVkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGFuY2hvcj86IHN0cmluZ1xuICAgKlxuICAgKiBBbmNob3IgdG8ganVtcCB0b1xuICAgKlxuICAgKi9cbiAgQElucHV0KCdhbmNob3InKVxuICBzZXQgYW5jaG9yKGFuY2hvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvcHlDb2RlVG9DbGlwYm9hcmQ/OiBib29sZWFuXG4gICAqXG4gICAqIERpc3BsYXkgY29weSBidXR0b24gb24gY29kZSBzbmlwcGV0cyB0byBjb3B5IGNvZGUgdG8gY2xpcGJvYXJkLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCkgY29weUNvZGVUb0NsaXBib2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBjb3B5Q29kZVRvb2x0aXBzPzogSUNvcHlDb2RlVG9vbHRpcHNcbiAgICpcbiAgICogVG9vbHRpcHMgZm9yIGNvcHkgYnV0dG9uIHRvIGNvcHkgYW5kIHVwb24gY29weWluZy5cbiAgICovXG4gIEBJbnB1dCgpIGNvcHlDb2RlVG9vbHRpcHM6IElDb3B5Q29kZVRvb2x0aXBzID0ge307XG4gIC8qKlxuICAgKiBjb250ZW50UmVhZHk/OiBmdW5jdGlvblxuICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIHRoZSBtYXJrZG93biBjb250ZW50IHJlbmRlcmluZyBpcyBmaW5pc2hlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50UmVhZHk6IEV2ZW50RW1pdHRlcjx1bmRlZmluZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIGJ1dHRvbkNsaWNrZWQ/OiBJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudFxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZFxuICAgKiBJcyBhbiBvYmplY3QgY29udGFpbmluZyB0ZXh0IGFuZCBkYXRhIG9mIGJ1dHRvblxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJVGRGbGF2b3JlZE1hcmtkb3duQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElUZEZsYXZvcmVkTWFya2Rvd25CdXR0b25DbGlja0V2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoVGRGbGF2b3JlZE1hcmtkb3duQ29udGFpbmVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IFRkRmxhdm9yZWRNYXJrZG93bkNvbnRhaW5lckRpcmVjdGl2ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBvbmx5IGFuY2hvciBjaGFuZ2VkXG4gICAgaWYgKGNoYW5nZXMuYW5jaG9yICYmICFjaGFuZ2VzLmNvbnRlbnQgJiYgIWNoYW5nZXMuc2ltcGxlTGluZUJyZWFrcyAmJiAhY2hhbmdlcy5ob3N0ZWRVcmwpIHtcbiAgICAgIHNjcm9sbFRvQW5jaG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fYW5jaG9yLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRlbnQpIHtcbiAgICAgIHRoaXMuX2xvYWRDb250ZW50KCg8SFRNTEVsZW1lbnQ+dGhpcy5jb250YWluZXIudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLnRleHRDb250ZW50KTtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl92aWV3SW5pdCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udGVudCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQodGhpcy5fY29udGVudCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl92aWV3SW5pdCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQoKDxIVE1MRWxlbWVudD50aGlzLmNvbnRhaW5lci52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCkudGV4dENvbnRlbnQpO1xuICAgIH1cbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRDb250ZW50KG1hcmtkb3duOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAobWFya2Rvd24gJiYgbWFya2Rvd24udHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29udGFpbmVyLmNsZWFyKCk7XG4gICAgICBtYXJrZG93biA9IG1hcmtkb3duLnJlcGxhY2UoL14oXFxzfFxcdCkqXFxuKy9nLCAnJykucmVwbGFjZSgvKFxcc3xcXHQpKlxcbisoXFxzfFxcdCkqJC9nLCAnJyk7XG4gICAgICAvLyBTcGxpdCBtYXJrZG93biBieSBsaW5lIGNoYXJhY3RlcnNcbiAgICAgIGxldCBsaW5lczogc3RyaW5nW10gPSBtYXJrZG93bi5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIC8vIGNoZWNrIGhvdyBtdWNoIGluZGVudGF0aW9uIGlzIHVzZWQgYnkgdGhlIGZpcnN0IGFjdHVhbCBtYXJrZG93biBsaW5lXG4gICAgICBjb25zdCBmaXJzdExpbmVXaGl0ZXNwYWNlOiBzdHJpbmcgPSBsaW5lc1swXS5tYXRjaCgvXihcXHN8XFx0KSovKVswXTtcblxuICAgICAgLy8gUmVtb3ZlIGFsbCBpbmRlbnRhdGlvbiBzcGFjZXMgc28gbWFya2Rvd24gY2FuIGJlIHBhcnNlZCBjb3JyZWN0bHlcbiAgICAgIGNvbnN0IHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4OiBSZWdFeHAgPSBuZXcgUmVnRXhwKCdeJyArIGZpcnN0TGluZVdoaXRlc3BhY2UpO1xuICAgICAgbGluZXMgPSBsaW5lcy5tYXAoZnVuY3Rpb24gKGxpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBsaW5lLnJlcGxhY2Uoc3RhcnRpbmdXaGl0ZXNwYWNlUmVnZXgsICcnKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBKb2luIGxpbmVzIGFnYWluIHdpdGggbGluZSBjaGFyYWN0ZXJzXG4gICAgICBtYXJrZG93biA9IFsuLi5saW5lcywgJycsICcnXS5qb2luKCdcXG4nKTtcbiAgICAgIG1hcmtkb3duID0gdGhpcy5fcmVwbGFjZUNvZGVCbG9ja3MobWFya2Rvd24pO1xuICAgICAgbWFya2Rvd24gPSB0aGlzLl9yZXBsYWNlQ2hlY2tib3gobWFya2Rvd24pO1xuICAgICAgbWFya2Rvd24gPSB0aGlzLl9yZXBsYWNlVGFibGVzKG1hcmtkb3duKTtcbiAgICAgIG1hcmtkb3duID0gdGhpcy5fcmVwbGFjZUxpc3RzKG1hcmtkb3duKTtcbiAgICAgIG1hcmtkb3duID0gdGhpcy5fcmVwbGFjZUJ1dHRvbnMobWFya2Rvd24pO1xuICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyh0aGlzLl9jb21wb25lbnRzKTtcbiAgICAgIC8vIG5lZWQgdG8gc29ydCB0aGUgcGxhY2Vob2xkZXJzIGluIG9yZGVyIG9mIGVuY291bnRlciBpbiBtYXJrZG93biBjb250ZW50XG4gICAgICBrZXlzLnNvcnQoKGNvbXBBOiBzdHJpbmcsIGNvbXBCOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG1hcmtkb3duLmluZGV4T2YoY29tcEEpID4gbWFya2Rvd24uaW5kZXhPZihjb21wQikgPyAxIDogLTE7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX3JlbmRlcihtYXJrZG93biwga2V5c1swXSwga2V5cyk7XG4gICAgICAvLyBUT0RPOiB0aW1lb3V0IHJlcXVpcmVkIHNpbmNlIHJlc2l6aW5nIG9mIGh0bWwgZWxlbWVudHMgb2NjdXJzIHdoaWNoIGNhdXNlcyBhIGNoYW5nZSBpbiB0aGUgc2Nyb2xsIHBvc2l0aW9uXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNjcm9sbFRvQW5jaG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fYW5jaG9yLCBmYWxzZSksIDI1MCk7XG4gICAgICB0aGlzLmNvbnRlbnRSZWFkeS5lbWl0KCk7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXIobWFya2Rvd246IHN0cmluZywga2V5OiBzdHJpbmcsIGtleXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKCFtYXJrZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoa2V5ICYmIG1hcmtkb3duLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICBjb25zdCBtYXJrZG93blBhcnRzOiBzdHJpbmdbXSA9IG1hcmtkb3duLnNwbGl0KGtleSk7XG4gICAgICBrZXlzLnNoaWZ0KCk7XG4gICAgICB0aGlzLl9yZW5kZXIobWFya2Rvd25QYXJ0c1swXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jb250YWluZXIudmlld0NvbnRhaW5lclJlZi5pbnNlcnQodGhpcy5fY29tcG9uZW50c1trZXldLmhvc3RWaWV3LCB0aGlzLmNvbnRhaW5lci52aWV3Q29udGFpbmVyUmVmLmxlbmd0aCk7XG4gICAgICB0aGlzLl9jb21wb25lbnRzW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICBkZWxldGUgdGhpcy5fY29tcG9uZW50c1trZXldO1xuICAgICAgdGhpcy5fcmVuZGVyKG1hcmtkb3duUGFydHNbMV0sIGtleXNbMF0sIGtleXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZW50UmVmOiBDb21wb25lbnRSZWY8VGRNYXJrZG93bkNvbXBvbmVudD4gPSB0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRkTWFya2Rvd25Db21wb25lbnQpXG4gICAgICAgIC5jcmVhdGUodGhpcy5faW5qZWN0b3IpO1xuICAgICAgY29udGVudFJlZi5pbnN0YW5jZS5jb250ZW50ID0gbWFya2Rvd247XG4gICAgICBjb250ZW50UmVmLmluc3RhbmNlLmhvc3RlZFVybCA9IHRoaXMuX2hvc3RlZFVybDtcbiAgICAgIGNvbnRlbnRSZWYuaW5zdGFuY2Uuc2ltcGxlTGluZUJyZWFrcyA9IHRoaXMuX3NpbXBsZUxpbmVCcmVha3M7XG4gICAgICBjb250ZW50UmVmLmluc3RhbmNlLnJlZnJlc2goKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnZpZXdDb250YWluZXJSZWYuaW5zZXJ0KGNvbnRlbnRSZWYuaG9zdFZpZXcsIHRoaXMuY29udGFpbmVyLnZpZXdDb250YWluZXJSZWYubGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlQ29tcG9uZW50PFQ+KFxuICAgIG1hcmtkb3duOiBzdHJpbmcsXG4gICAgdHlwZTogVHlwZTxUPixcbiAgICByZWdFeHA6IFJlZ0V4cCxcbiAgICByZXBsYWNlckZ1bmM6IElSZXBsYWNlckZ1bmM8VD4sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGNvbXBvbmVudEluZGV4OiBudW1iZXIgPSAwO1xuICAgIHJldHVybiBtYXJrZG93bi5yZXBsYWNlKHJlZ0V4cCwgKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PFQ+ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHR5cGUpO1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZSh0aGlzLl9pbmplY3Rvcik7XG4gICAgICByZXBsYWNlckZ1bmMoY29tcG9uZW50UmVmLCAuLi5hcmdzKTtcbiAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gJ1snICsgY29tcG9uZW50RmFjdG9yeS5zZWxlY3RvciArICctcGxhY2Vob2xkZXItJyArIGNvbXBvbmVudEluZGV4KysgKyAnXSc7XG4gICAgICB0aGlzLl9jb21wb25lbnRzW2tleV0gPSBjb21wb25lbnRSZWY7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVwbGFjZUNoZWNrYm94KG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoZWNrYm94UmVnRXhwOiBSZWdFeHAgPSAvKD86XnxcXG4pLSBcXFsoeHwgKVxcXSguKikvZ2k7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIE1hdENoZWNrYm94LFxuICAgICAgY2hlY2tib3hSZWdFeHAsXG4gICAgICAoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TWF0Q2hlY2tib3g+LCBtYXRjaDogc3RyaW5nLCBjaGVja2VkOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNoZWNrZWQgPSAhIWNoZWNrZWQudHJpbSgpO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubGFiZWxQb3NpdGlvbiA9ICdhZnRlcic7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29tcG9uZW50UmVmLmluc3RhbmNlLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICAgICAgICAnbWF0LWNoZWNrYm94LWxhYmVsJyxcbiAgICAgICAgICApWzBdLFxuICAgICAgICAgICdpbm5lckhUTUwnLFxuICAgICAgICAgIGxhYmVsLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVwbGFjZUJ1dHRvbnMobWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYnV0dG9uUmVnRXhwOiBSZWdFeHAgPSAvXFxbKFteXFxbXSspXFxdKFxcKCNkYXRhPSguKilcXCkpL2k7XG4gICAgY29uc3QgZ2xvYmFsQnV0dG9uUmVnRXhwOiBSZWdFeHAgPSBuZXcgUmVnRXhwKGJ1dHRvblJlZ0V4cC5zb3VyY2UsIGJ1dHRvblJlZ0V4cC5mbGFncyArICdnJyk7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICAgIGdsb2JhbEJ1dHRvblJlZ0V4cCxcbiAgICAgIChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUZEZsYXZvcmVkTWFya2Rvd25CdXR0b25Db21wb25lbnQ+LCBtYXRjaDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheSA9IGJ1dHRvblJlZ0V4cC5leGVjKG1hdGNoKTtcbiAgICAgICAgY29uc3QgdGV4dDogc3RyaW5nID0gbWF0Y2hlc1sxXTtcbiAgICAgICAgY29uc3QgZGF0YTogc3RyaW5nID0gbWF0Y2hlc1szXTtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnRleHQgPSB0ZXh0O1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0YSA9IGRhdGE7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbGlja2VkLnN1YnNjcmliZSgoY2xpY2tFdmVudDogSVRkRmxhdm9yZWRNYXJrZG93bkJ1dHRvbkNsaWNrRXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5idXR0b25DbGlja2VkLmVtaXQoY2xpY2tFdmVudCksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlQ29kZUJsb2NrcyhtYXJrZG93bjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlQmxvY2tSZWdFeHA6IFJlZ0V4cCA9IC8oPzpefFxcbilgYGAoLiopXFxuKFtcXHNcXFNdKj8pXFxuYGBgL2c7XG4gICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VDb21wb25lbnQoXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRkSGlnaGxpZ2h0Q29tcG9uZW50LFxuICAgICAgY29kZUJsb2NrUmVnRXhwLFxuICAgICAgKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFRkSGlnaGxpZ2h0Q29tcG9uZW50PiwgbWF0Y2g6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZywgY29kZWJsb2NrOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvZGVMYW5nID0gbGFuZ3VhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvcHlDb2RlVG9DbGlwYm9hcmQgPSB0aGlzLmNvcHlDb2RlVG9DbGlwYm9hcmQ7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb3B5Q29kZVRvb2x0aXBzID0gdGhpcy5jb3B5Q29kZVRvb2x0aXBzO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGVudCA9IGNvZGVibG9jaztcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VUYWJsZXMobWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdGFibGVSZ3g6IFJlZ0V4cCA9XG4gICAgICAvXiB7MCwzfVxcfD8uK1xcfC4rXFxuWyBcXHRdezAsM31cXHw/WyBcXHRdKjo/WyBcXHRdKig/Oi18PSl7Mix9WyBcXHRdKjo/WyBcXHRdKlxcfFsgXFx0XSo6P1sgXFx0XSooPzotfD0pezIsfVtcXHNcXFNdKz8oPzpcXG5cXG58fjApL2dtO1xuICAgIHJldHVybiB0aGlzLl9yZXBsYWNlQ29tcG9uZW50KFxuICAgICAgbWFya2Rvd24sXG4gICAgICBUZERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICAgIHRhYmxlUmd4LFxuICAgICAgKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFRkRGF0YVRhYmxlQ29tcG9uZW50PiwgbWF0Y2g6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBkYXRhVGFibGVMaW5lczogc3RyaW5nW10gPSBtYXRjaC5yZXBsYWNlKC8oXFxzfFxcdCkqXFxuKyhcXHN8XFx0KSokL2csICcnKS5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IHN0cmluZ1tdID0gZGF0YVRhYmxlTGluZXNbMF1cbiAgICAgICAgICAuc3BsaXQoJ3wnKVxuICAgICAgICAgIC5maWx0ZXIoKGNvbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29sO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLm1hcCgoczogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcy50cmltKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGFsaWdubWVudDogc3RyaW5nW10gPSBkYXRhVGFibGVMaW5lc1sxXVxuICAgICAgICAgIC5zcGxpdCgnfCcpXG4gICAgICAgICAgLmZpbHRlcigodjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5tYXAoKHM6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHMudHJpbSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29sdW1ucyA9IGNvbHVtbnMubWFwKChjb2w6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHdpZHRoczogc3RyaW5nW10gPSBhbGlnbm1lbnRbaW5kZXhdLnNwbGl0KCctLS0nKTtcbiAgICAgICAgICBjb25zdCBtaW46IG51bWJlciA9IHBhcnNlSW50KHdpZHRoc1swXSwgMTApO1xuICAgICAgICAgIGNvbnN0IG1heDogbnVtYmVyID0gcGFyc2VJbnQod2lkdGhzWzFdLCAxMCk7XG4gICAgICAgICAgbGV0IHdpZHRoOiBJVGREYXRhVGFibGVDb2x1bW5XaWR0aCA9IHsgbWluLCBtYXggfTtcbiAgICAgICAgICBpZiAoaXNOYU4obWluKSAmJiBpc05hTihtYXgpKSB7XG4gICAgICAgICAgICB3aWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKG1heCkpIHtcbiAgICAgICAgICAgIHdpZHRoLm1heCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzTmFOKG1pbikpIHtcbiAgICAgICAgICAgIHdpZHRoLm1pbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhYmVsOiBjb2wsXG4gICAgICAgICAgICBuYW1lOiBjb2wudG9Mb3dlckNhc2UoKS50cmltKCksXG4gICAgICAgICAgICBudW1lcmljOiAvXi0tKlsgXFx0XSo6WyBcXHRdKiQvLnRlc3QoYWxpZ25tZW50W2luZGV4XSksXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAyOyBpIDwgZGF0YVRhYmxlTGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCByb3dTcGxpdDogc3RyaW5nW10gPSBkYXRhVGFibGVMaW5lc1tpXVxuICAgICAgICAgICAgLnNwbGl0KCd8JylcbiAgICAgICAgICAgIC5maWx0ZXIoKGNlbGw6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gY2VsbDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKChzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHMudHJpbSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgcm93OiBhbnkgPSB7fTtcbiAgICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb3dTcGxpdENlbGw6IHN0cmluZyA9IHJvd1NwbGl0W2luZGV4XTtcbiAgICAgICAgICAgIGlmIChyb3dTcGxpdENlbGwpIHtcbiAgICAgICAgICAgICAgcm93W2NvbC50b0xvd2VyQ2FzZSgpLnRyaW0oKV0gPSByb3dTcGxpdENlbGwucmVwbGFjZSgvYCguKilgLywgKG06IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGF0YS5wdXNoKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmRhdGEgPSBkYXRhO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydGFibGUgPSB0cnVlO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydENoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBJVGREYXRhVGFibGVTb3J0Q2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0YS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcEE6IGFueSA9IGFbZXZlbnQubmFtZV07XG4gICAgICAgICAgICBjb25zdCBjb21wQjogYW55ID0gYltldmVudC5uYW1lXTtcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb246IG51bWJlciA9IDA7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTihOdW1iZXIucGFyc2VGbG9hdChjb21wQSkpICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlRmxvYXQoY29tcEIpKSkge1xuICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBOdW1iZXIucGFyc2VGbG9hdChjb21wQSkgLSBOdW1iZXIucGFyc2VGbG9hdChjb21wQik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoY29tcEEgPCBjb21wQikge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IC0xO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBBID4gY29tcEIpIHtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uICogKGV2ZW50Lm9yZGVyID09PSBUZERhdGFUYWJsZVNvcnRpbmdPcmRlci5EZXNjZW5kaW5nID8gLTEgOiAxKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucmVmcmVzaCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnJlZnJlc2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlTGlzdHMobWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGlzdFJlZ0V4cDogUmVnRXhwID0gLyg/Ol58XFxuKSgoICpcXCspWyB8XFx0XSguKilcXG4pKy9nO1xuICAgIHJldHVybiB0aGlzLl9yZXBsYWNlQ29tcG9uZW50KFxuICAgICAgbWFya2Rvd24sXG4gICAgICBUZEZsYXZvcmVkTGlzdENvbXBvbmVudCxcbiAgICAgIGxpc3RSZWdFeHAsXG4gICAgICAoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VGRGbGF2b3JlZExpc3RDb21wb25lbnQ+LCBtYXRjaDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmVUZXh0czogc3RyaW5nW10gPSBtYXRjaC5zcGxpdChcbiAgICAgICAgICBuZXcgUmVnRXhwKCdcXFxcbiB7JyArIChtYXRjaC5pbmRleE9mKCcrJykgLSAxKS50b1N0cmluZygpICsgJ31cXFxcK1sgfFxcXFx0XScpLFxuICAgICAgICApO1xuICAgICAgICBsaW5lVGV4dHMuc2hpZnQoKTtcbiAgICAgICAgY29uc3QgbGluZXM6IElGbGF2b3JlZExpc3RJdGVtW10gPSBbXTtcbiAgICAgICAgbGluZVRleHRzLmZvckVhY2goKHRleHQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YmxpbmVUZXh0czogc3RyaW5nW10gPSB0ZXh0LnNwbGl0KC9cXG4gKlxcKyAvKTtcbiAgICAgICAgICBsaW5lcy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHN1YmxpbmVUZXh0cy5zaGlmdCgpLFxuICAgICAgICAgICAgc3VibGluZXM6IHN1YmxpbmVUZXh0cy5tYXAoKHN1YmxpbmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gc3VibGluZS50cmltKCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5saW5lcyA9IGxpbmVzO1xuICAgICAgfSxcbiAgICApO1xuICB9XG59XG4iXX0=