@skyux/text-editor 8.7.0 → 9.0.0-alpha.0
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.
- package/esm2022/lib/modules/rich-text-display/rich-text-display.component.mjs +42 -0
- package/{esm2020 → esm2022}/lib/modules/rich-text-display/rich-text-display.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modules/shared/sky-text-editor-resources.module.mjs +11 -11
- package/esm2022/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +197 -0
- package/esm2022/lib/modules/text-editor/services/text-editor-adapter.service.mjs +431 -0
- package/{esm2020 → esm2022}/lib/modules/text-editor/services/text-editor-selection.service.mjs +4 -4
- package/esm2022/lib/modules/text-editor/services/text-editor.service.mjs +59 -0
- package/esm2022/lib/modules/text-editor/services/text-sanitization.service.mjs +38 -0
- package/esm2022/lib/modules/text-editor/text-editor.component.mjs +410 -0
- package/{esm2020 → esm2022}/lib/modules/text-editor/text-editor.module.mjs +41 -41
- package/esm2022/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +207 -0
- package/esm2022/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +119 -0
- package/fesm2022/skyux-text-editor.mjs +1828 -0
- package/{fesm2020 → fesm2022}/skyux-text-editor.mjs.map +1 -1
- package/lib/modules/rich-text-display/rich-text-display.component.d.ts +1 -1
- package/lib/modules/text-editor/menubar/text-editor-menubar.component.d.ts +1 -1
- package/lib/modules/text-editor/text-editor.component.d.ts +1 -1
- package/lib/modules/text-editor/toolbar/text-editor-toolbar.component.d.ts +1 -1
- package/package.json +20 -26
- package/esm2020/lib/modules/rich-text-display/rich-text-display.component.mjs +0 -44
- package/esm2020/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +0 -197
- package/esm2020/lib/modules/text-editor/services/text-editor-adapter.service.mjs +0 -421
- package/esm2020/lib/modules/text-editor/services/text-editor.service.mjs +0 -64
- package/esm2020/lib/modules/text-editor/services/text-sanitization.service.mjs +0 -43
- package/esm2020/lib/modules/text-editor/text-editor.component.mjs +0 -395
- package/esm2020/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +0 -204
- package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +0 -118
- package/fesm2015/skyux-text-editor.mjs +0 -1793
- package/fesm2015/skyux-text-editor.mjs.map +0 -1
- package/fesm2020/skyux-text-editor.mjs +0 -1804
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/shared/forms-utility.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/font-list-defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/font-size-list-defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/menu-defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/style-state-defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/toolbar-action-defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/types/editor-command.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/types/editor-setting.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/types/font-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/types/menu-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/types/style-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/types/text-editor-merge-field.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/types/toolbar-action-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/url-modal/text-editor-url-modal-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/url-modal/text-editor-url-modal-result.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/text-editor/url-modal/text-editor-url-target.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-text-editor.mjs +0 -0
|
@@ -10,5 +10,5 @@ export declare class SkyRichTextDisplayComponent {
|
|
|
10
10
|
sanitizedText: SafeHtml;
|
|
11
11
|
constructor(sanitizer: DomSanitizer, sanitizationService: SkyTextSanitizationService);
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyRichTextDisplayComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SkyRichTextDisplayComponent, "sky-rich-text-display", never, { "richText": "richText"; }, {}, never, never, false, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SkyRichTextDisplayComponent, "sky-rich-text-display", never, { "richText": { "alias": "richText"; "required": false; }; }, {}, never, never, false, never>;
|
|
14
14
|
}
|
|
@@ -37,5 +37,5 @@ export declare class SkyTextEditorMenubarComponent implements OnDestroy, OnInit
|
|
|
37
37
|
execCommand(command: string, value?: string): void;
|
|
38
38
|
insertMergeField(field: SkyTextEditorMergeField): void;
|
|
39
39
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyTextEditorMenubarComponent, never>;
|
|
40
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SkyTextEditorMenubarComponent, "sky-text-editor-menubar", never, { "editorFocusStream": "editorFocusStream"; "menus": "menus"; "mergeFields": "mergeFields"; "disabled": "disabled"; }, {}, never, never, false, never>;
|
|
40
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SkyTextEditorMenubarComponent, "sky-text-editor-menubar", never, { "editorFocusStream": { "alias": "editorFocusStream"; "required": false; }; "menus": { "alias": "menus"; "required": false; }; "mergeFields": { "alias": "mergeFields"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
|
|
41
41
|
}
|
|
@@ -102,5 +102,5 @@ export declare class SkyTextEditorComponent implements AfterViewInit, OnDestroy
|
|
|
102
102
|
*/
|
|
103
103
|
setDisabledState(isDisabled: boolean): void;
|
|
104
104
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyTextEditorComponent, never>;
|
|
105
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SkyTextEditorComponent, "sky-text-editor", never, { "autofocus": "autofocus"; "disabled": "disabled"; "fontList": "fontList"; "fontSizeList": "fontSizeList"; "id": "id"; "initialStyleState": "initialStyleState"; "menus": "menus"; "mergeFields": "mergeFields"; "placeholder": "placeholder"; "toolbarActions": "toolbarActions"; }, {}, never, never, false, never>;
|
|
105
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SkyTextEditorComponent, "sky-text-editor", never, { "autofocus": { "alias": "autofocus"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "fontList": { "alias": "fontList"; "required": false; }; "fontSizeList": { "alias": "fontSizeList"; "required": false; }; "id": { "alias": "id"; "required": false; }; "initialStyleState": { "alias": "initialStyleState"; "required": false; }; "menus": { "alias": "menus"; "required": false; }; "mergeFields": { "alias": "mergeFields"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "toolbarActions": { "alias": "toolbarActions"; "required": false; }; }, {}, never, never, false, never>;
|
|
106
106
|
}
|
|
@@ -36,5 +36,5 @@ export declare class SkyTextEditorToolbarComponent implements OnInit {
|
|
|
36
36
|
changeFontSize(size: number): void;
|
|
37
37
|
onColorpickerColorChanged(color: SkyColorpickerOutput, isBackground?: boolean): void;
|
|
38
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<SkyTextEditorToolbarComponent, never>;
|
|
39
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SkyTextEditorToolbarComponent, "sky-text-editor-toolbar", never, { "editorFocusStream": "editorFocusStream"; "fontList": "fontList"; "fontSizeList": "fontSizeList"; "toolbarActions": "toolbarActions"; "styleState": "styleState"; "disabled": "disabled"; }, {}, never, never, false, never>;
|
|
39
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SkyTextEditorToolbarComponent, "sky-text-editor-toolbar", never, { "editorFocusStream": { "alias": "editorFocusStream"; "required": false; }; "fontList": { "alias": "fontList"; "required": false; }; "fontSizeList": { "alias": "fontSizeList"; "required": false; }; "toolbarActions": { "alias": "toolbarActions"; "required": false; }; "styleState": { "alias": "styleState"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
|
|
40
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyux/text-editor",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0-alpha.0",
|
|
4
4
|
"author": "Blackbaud, Inc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blackbaud",
|
|
@@ -21,43 +21,37 @@
|
|
|
21
21
|
},
|
|
22
22
|
".": {
|
|
23
23
|
"types": "./index.d.ts",
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"node": "./fesm2015/skyux-text-editor.mjs",
|
|
28
|
-
"default": "./fesm2020/skyux-text-editor.mjs"
|
|
24
|
+
"esm2022": "./esm2022/skyux-text-editor.mjs",
|
|
25
|
+
"esm": "./esm2022/skyux-text-editor.mjs",
|
|
26
|
+
"default": "./fesm2022/skyux-text-editor.mjs"
|
|
29
27
|
},
|
|
30
28
|
"./documentation.json": {
|
|
31
29
|
"default": "./documentation.json"
|
|
32
30
|
}
|
|
33
31
|
},
|
|
34
32
|
"peerDependencies": {
|
|
35
|
-
"@angular/common": "^
|
|
36
|
-
"@angular/core": "^
|
|
37
|
-
"@angular/forms": "^
|
|
38
|
-
"@angular/platform-browser": "^
|
|
39
|
-
"@skyux/colorpicker": "
|
|
40
|
-
"@skyux/core": "
|
|
41
|
-
"@skyux/forms": "
|
|
42
|
-
"@skyux/i18n": "
|
|
43
|
-
"@skyux/indicators": "
|
|
44
|
-
"@skyux/layout": "
|
|
45
|
-
"@skyux/modals": "
|
|
46
|
-
"@skyux/popovers": "
|
|
47
|
-
"@skyux/tabs": "
|
|
48
|
-
"@skyux/theme": "
|
|
49
|
-
"@skyux/validation": "
|
|
33
|
+
"@angular/common": "^16.1.7",
|
|
34
|
+
"@angular/core": "^16.1.7",
|
|
35
|
+
"@angular/forms": "^16.1.7",
|
|
36
|
+
"@angular/platform-browser": "^16.1.7",
|
|
37
|
+
"@skyux/colorpicker": "9.0.0-alpha.0",
|
|
38
|
+
"@skyux/core": "9.0.0-alpha.0",
|
|
39
|
+
"@skyux/forms": "9.0.0-alpha.0",
|
|
40
|
+
"@skyux/i18n": "9.0.0-alpha.0",
|
|
41
|
+
"@skyux/indicators": "9.0.0-alpha.0",
|
|
42
|
+
"@skyux/layout": "9.0.0-alpha.0",
|
|
43
|
+
"@skyux/modals": "9.0.0-alpha.0",
|
|
44
|
+
"@skyux/popovers": "9.0.0-alpha.0",
|
|
45
|
+
"@skyux/tabs": "9.0.0-alpha.0",
|
|
46
|
+
"@skyux/theme": "9.0.0-alpha.0",
|
|
47
|
+
"@skyux/validation": "9.0.0-alpha.0"
|
|
50
48
|
},
|
|
51
49
|
"dependencies": {
|
|
52
50
|
"dompurify": "3.0.1",
|
|
53
51
|
"he": "1.2.0",
|
|
54
52
|
"tslib": "^2.5.0"
|
|
55
53
|
},
|
|
56
|
-
"module": "
|
|
57
|
-
"es2020": "fesm2020/skyux-text-editor.mjs",
|
|
58
|
-
"esm2020": "esm2020/skyux-text-editor.mjs",
|
|
59
|
-
"fesm2020": "fesm2020/skyux-text-editor.mjs",
|
|
60
|
-
"fesm2015": "fesm2015/skyux-text-editor.mjs",
|
|
54
|
+
"module": "fesm2022/skyux-text-editor.mjs",
|
|
61
55
|
"typings": "index.d.ts",
|
|
62
56
|
"sideEffects": false
|
|
63
57
|
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
var _SkyRichTextDisplayComponent__richText, _SkyRichTextDisplayComponent_sanitizer, _SkyRichTextDisplayComponent_sanitizationService;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { Component, Input } from '@angular/core';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/platform-browser";
|
|
6
|
-
import * as i2 from "../text-editor/services/text-sanitization.service";
|
|
7
|
-
export class SkyRichTextDisplayComponent {
|
|
8
|
-
/**
|
|
9
|
-
* The rich text to display.
|
|
10
|
-
*/
|
|
11
|
-
set richText(value) {
|
|
12
|
-
if (value) {
|
|
13
|
-
const cleaned = __classPrivateFieldGet(this, _SkyRichTextDisplayComponent_sanitizationService, "f").sanitize(value);
|
|
14
|
-
/* istanbul ignore else */
|
|
15
|
-
if (cleaned !== __classPrivateFieldGet(this, _SkyRichTextDisplayComponent__richText, "f")) {
|
|
16
|
-
__classPrivateFieldSet(this, _SkyRichTextDisplayComponent__richText, cleaned, "f");
|
|
17
|
-
// Text has already been sanitized with DOMPurifier.
|
|
18
|
-
// Tell Angular to bypass its own internal sanitization.
|
|
19
|
-
this.sanitizedText = __classPrivateFieldGet(this, _SkyRichTextDisplayComponent_sanitizer, "f").bypassSecurityTrustHtml(cleaned);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
this.sanitizedText = '';
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
constructor(sanitizer, sanitizationService) {
|
|
27
|
-
this.sanitizedText = '';
|
|
28
|
-
_SkyRichTextDisplayComponent__richText.set(this, '');
|
|
29
|
-
_SkyRichTextDisplayComponent_sanitizer.set(this, void 0);
|
|
30
|
-
_SkyRichTextDisplayComponent_sanitizationService.set(this, void 0);
|
|
31
|
-
__classPrivateFieldSet(this, _SkyRichTextDisplayComponent_sanitizer, sanitizer, "f");
|
|
32
|
-
__classPrivateFieldSet(this, _SkyRichTextDisplayComponent_sanitizationService, sanitizationService, "f");
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
_SkyRichTextDisplayComponent__richText = new WeakMap(), _SkyRichTextDisplayComponent_sanitizer = new WeakMap(), _SkyRichTextDisplayComponent_sanitizationService = new WeakMap();
|
|
36
|
-
SkyRichTextDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRichTextDisplayComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.SkyTextSanitizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
-
SkyRichTextDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyRichTextDisplayComponent, selector: "sky-rich-text-display", inputs: { richText: "richText" }, ngImport: i0, template: "<span class=\"sky-rich-text-display-text\" [innerHTML]=\"sanitizedText\"></span>\n" });
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRichTextDisplayComponent, decorators: [{
|
|
39
|
-
type: Component,
|
|
40
|
-
args: [{ selector: 'sky-rich-text-display', template: "<span class=\"sky-rich-text-display-text\" [innerHTML]=\"sanitizedText\"></span>\n" }]
|
|
41
|
-
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.SkyTextSanitizationService }]; }, propDecorators: { richText: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9yaWNoLXRleHQtZGlzcGxheS9yaWNoLXRleHQtZGlzcGxheS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3JpY2gtdGV4dC1kaXNwbGF5L3JpY2gtdGV4dC1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFTakQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0Qzs7T0FFRztJQUNILElBQ1csUUFBUSxDQUFDLEtBQXlCO1FBQzNDLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxPQUFPLEdBQUcsdUJBQUEsSUFBSSx3REFBcUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsMEJBQTBCO1lBQzFCLElBQUksT0FBTyxLQUFLLHVCQUFBLElBQUksOENBQVcsRUFBRTtnQkFDL0IsdUJBQUEsSUFBSSwwQ0FBYyxPQUFPLE1BQUEsQ0FBQztnQkFFMUIsb0RBQW9EO2dCQUNwRCx3REFBd0Q7Z0JBQ3hELElBQUksQ0FBQyxhQUFhLEdBQUcsdUJBQUEsSUFBSSw4Q0FBVyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZFO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQVNELFlBQ0UsU0FBdUIsRUFDdkIsbUJBQStDO1FBVDFDLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBRXBDLGlEQUFhLEVBQUUsRUFBQztRQUVoQix5REFBeUI7UUFDekIsbUVBQWlEO1FBTS9DLHVCQUFBLElBQUksMENBQWMsU0FBUyxNQUFBLENBQUM7UUFDNUIsdUJBQUEsSUFBSSxvREFBd0IsbUJBQW1CLE1BQUEsQ0FBQztJQUNsRCxDQUFDOzs7d0hBbENVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLCtGQ1R4QyxvRkFDQTsyRkRRYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsdUJBQXVCOzRJQVF0QixRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL3RleHQtZWRpdG9yL3NlcnZpY2VzL3RleHQtc2FuaXRpemF0aW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcmljaC10ZXh0LWRpc3BsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vcmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSaWNoVGV4dERpc3BsYXlDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHJpY2ggdGV4dCB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByaWNoVGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBjbGVhbmVkID0gdGhpcy4jc2FuaXRpemF0aW9uU2VydmljZS5zYW5pdGl6ZSh2YWx1ZSk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGNsZWFuZWQgIT09IHRoaXMuI19yaWNoVGV4dCkge1xuICAgICAgICB0aGlzLiNfcmljaFRleHQgPSBjbGVhbmVkO1xuXG4gICAgICAgIC8vIFRleHQgaGFzIGFscmVhZHkgYmVlbiBzYW5pdGl6ZWQgd2l0aCBET01QdXJpZmllci5cbiAgICAgICAgLy8gVGVsbCBBbmd1bGFyIHRvIGJ5cGFzcyBpdHMgb3duIGludGVybmFsIHNhbml0aXphdGlvbi5cbiAgICAgICAgdGhpcy5zYW5pdGl6ZWRUZXh0ID0gdGhpcy4jc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNsZWFuZWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNhbml0aXplZFRleHQgPSAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpemVkVGV4dDogU2FmZUh0bWwgPSAnJztcblxuICAjX3JpY2hUZXh0ID0gJyc7XG5cbiAgI3Nhbml0aXplcjogRG9tU2FuaXRpemVyO1xuICAjc2FuaXRpemF0aW9uU2VydmljZTogU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgc2FuaXRpemF0aW9uU2VydmljZTogU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jc2FuaXRpemVyID0gc2FuaXRpemVyO1xuICAgIHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2UgPSBzYW5pdGl6YXRpb25TZXJ2aWNlO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInNreS1yaWNoLXRleHQtZGlzcGxheS10ZXh0XCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRUZXh0XCI+PC9zcGFuPlxuIl19
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
var _SkyTextEditorMenubarComponent_instances, _SkyTextEditorMenubarComponent__disabled, _SkyTextEditorMenubarComponent_ngUnsubscribe, _SkyTextEditorMenubarComponent_adapterService, _SkyTextEditorMenubarComponent_changeDetector, _SkyTextEditorMenubarComponent_resources, _SkyTextEditorMenubarComponent_closeDropdowns, _SkyTextEditorMenubarComponent_clearFormat;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
4
|
-
import { SkyDropdownMessageType } from '@skyux/popovers';
|
|
5
|
-
import he from 'he';
|
|
6
|
-
import { Subject } from 'rxjs';
|
|
7
|
-
import { take, takeUntil } from 'rxjs/operators';
|
|
8
|
-
import { SkyFormsUtility } from '../../shared/forms-utility';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../services/text-editor-adapter.service";
|
|
11
|
-
import * as i2 from "@skyux/i18n";
|
|
12
|
-
import * as i3 from "@angular/common";
|
|
13
|
-
import * as i4 from "@skyux/popovers";
|
|
14
|
-
import * as i5 from "@skyux/theme";
|
|
15
|
-
import * as i6 from "@skyux/layout";
|
|
16
|
-
const FORMAT_MENU_ACTION = 'skyux_text_editor_format_menu_action_';
|
|
17
|
-
const EDIT_MENU_ACTION = 'skyux_text_editor_edit_menu_action_';
|
|
18
|
-
/**
|
|
19
|
-
* @internal
|
|
20
|
-
*/
|
|
21
|
-
export class SkyTextEditorMenubarComponent {
|
|
22
|
-
set disabled(value) {
|
|
23
|
-
const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);
|
|
24
|
-
if (coercedValue !== this.disabled) {
|
|
25
|
-
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent__disabled, coercedValue, "f");
|
|
26
|
-
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_changeDetector, "f").markForCheck();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
get disabled() {
|
|
30
|
-
return __classPrivateFieldGet(this, _SkyTextEditorMenubarComponent__disabled, "f");
|
|
31
|
-
}
|
|
32
|
-
constructor(adapterService, changeDetector, resources) {
|
|
33
|
-
_SkyTextEditorMenubarComponent_instances.add(this);
|
|
34
|
-
this.editorFocusStream = new Subject();
|
|
35
|
-
this.menus = [];
|
|
36
|
-
this.mergeFields = [];
|
|
37
|
-
_SkyTextEditorMenubarComponent__disabled.set(this, false);
|
|
38
|
-
this.editDropdownStream = new Subject();
|
|
39
|
-
this.formatDropdownStream = new Subject();
|
|
40
|
-
this.mergeFieldDropdownStream = new Subject();
|
|
41
|
-
_SkyTextEditorMenubarComponent_ngUnsubscribe.set(this, new Subject());
|
|
42
|
-
_SkyTextEditorMenubarComponent_adapterService.set(this, void 0);
|
|
43
|
-
_SkyTextEditorMenubarComponent_changeDetector.set(this, void 0);
|
|
44
|
-
_SkyTextEditorMenubarComponent_resources.set(this, void 0);
|
|
45
|
-
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent_adapterService, adapterService, "f");
|
|
46
|
-
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent_changeDetector, changeDetector, "f");
|
|
47
|
-
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent_resources, resources, "f");
|
|
48
|
-
}
|
|
49
|
-
ngOnInit() {
|
|
50
|
-
this.editorFocusStream
|
|
51
|
-
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f")))
|
|
52
|
-
.subscribe(() => {
|
|
53
|
-
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_instances, "m", _SkyTextEditorMenubarComponent_closeDropdowns).call(this);
|
|
54
|
-
});
|
|
55
|
-
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_resources, "f")
|
|
56
|
-
.getStrings({
|
|
57
|
-
bold: FORMAT_MENU_ACTION + 'bold_label',
|
|
58
|
-
boldShort: FORMAT_MENU_ACTION + 'bold_key_shortcut',
|
|
59
|
-
italic: FORMAT_MENU_ACTION + 'italic_label',
|
|
60
|
-
italicShort: FORMAT_MENU_ACTION + 'italic_key_shortcut',
|
|
61
|
-
underline: FORMAT_MENU_ACTION + 'underline_label',
|
|
62
|
-
underlineShort: FORMAT_MENU_ACTION + 'underline_key_shortcut',
|
|
63
|
-
strikethrough: FORMAT_MENU_ACTION + 'strikethrough_label',
|
|
64
|
-
clearFormatting: FORMAT_MENU_ACTION + 'clear_formatting_label',
|
|
65
|
-
undo: EDIT_MENU_ACTION + 'undo_label',
|
|
66
|
-
undoShort: EDIT_MENU_ACTION + 'undo_key_shortcut',
|
|
67
|
-
redo: EDIT_MENU_ACTION + 'redo_label',
|
|
68
|
-
redoShort: EDIT_MENU_ACTION + 'redo_key_shortcut',
|
|
69
|
-
cut: EDIT_MENU_ACTION + 'cut_label',
|
|
70
|
-
cutShort: EDIT_MENU_ACTION + 'cut_key_shortcut',
|
|
71
|
-
copy: EDIT_MENU_ACTION + 'copy_label',
|
|
72
|
-
copyShort: EDIT_MENU_ACTION + 'copy_key_shortcut',
|
|
73
|
-
paste: EDIT_MENU_ACTION + 'paste_label',
|
|
74
|
-
pasteShort: EDIT_MENU_ACTION + 'paste_key_shortcut',
|
|
75
|
-
selectAll: EDIT_MENU_ACTION + 'select_all_label',
|
|
76
|
-
selectAllShort: EDIT_MENU_ACTION + 'select_all_key_shortcut',
|
|
77
|
-
})
|
|
78
|
-
.pipe(take(1), takeUntil(__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f")))
|
|
79
|
-
.subscribe((resources) => {
|
|
80
|
-
this.formatItems = [
|
|
81
|
-
{
|
|
82
|
-
function: () => this.execCommand('bold'),
|
|
83
|
-
label: resources.bold,
|
|
84
|
-
keyShortcut: resources.boldShort,
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
function: () => this.execCommand('italic'),
|
|
88
|
-
label: resources.italic,
|
|
89
|
-
keyShortcut: resources.italicShort,
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
function: () => this.execCommand('underline'),
|
|
93
|
-
label: resources.underline,
|
|
94
|
-
keyShortcut: resources.underlineShort,
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
function: () => this.execCommand('strikethrough'),
|
|
98
|
-
label: resources.strikethrough,
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
isDivider: true,
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
function: () => __classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_instances, "m", _SkyTextEditorMenubarComponent_clearFormat).call(this),
|
|
105
|
-
label: resources.clearFormatting,
|
|
106
|
-
},
|
|
107
|
-
];
|
|
108
|
-
this.editItems = [
|
|
109
|
-
{
|
|
110
|
-
function: () => this.execCommand('undo'),
|
|
111
|
-
label: resources.undo,
|
|
112
|
-
keyShortcut: resources.undoShort,
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
function: () => this.execCommand('redo'),
|
|
116
|
-
label: resources.redo,
|
|
117
|
-
keyShortcut: resources.redoShort,
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
isDivider: true,
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
function: () => this.execCommand('cut'),
|
|
124
|
-
label: resources.cut,
|
|
125
|
-
keyShortcut: resources.cutShort,
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
function: () => this.execCommand('copy'),
|
|
129
|
-
label: resources.copy,
|
|
130
|
-
keyShortcut: resources.copyShort,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
function: () => this.execCommand('paste'),
|
|
134
|
-
label: resources.paste,
|
|
135
|
-
keyShortcut: resources.pasteShort,
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
isDivider: true,
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
function: () => this.execCommand('selectAll'),
|
|
142
|
-
label: resources.selectAll,
|
|
143
|
-
keyShortcut: resources.selectAllShort,
|
|
144
|
-
},
|
|
145
|
-
];
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
ngOnDestroy() {
|
|
149
|
-
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f").next();
|
|
150
|
-
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f").complete();
|
|
151
|
-
}
|
|
152
|
-
execCommand(command, value = '') {
|
|
153
|
-
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_adapterService, "f").execCommand({
|
|
154
|
-
command: command,
|
|
155
|
-
value: value,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
insertMergeField(field) {
|
|
159
|
-
this.execCommand('insertHTML', '<img style="display: inline; cursor: grab;" data-fieldid="' +
|
|
160
|
-
he.escape(field.id) +
|
|
161
|
-
'" data-fielddisplay="' +
|
|
162
|
-
he.escape(field.name) +
|
|
163
|
-
'" src="' +
|
|
164
|
-
(field.previewImageUrl ||
|
|
165
|
-
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_adapterService, "f").getMergeFieldDataURI(field.name)) +
|
|
166
|
-
'">');
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
_SkyTextEditorMenubarComponent__disabled = new WeakMap(), _SkyTextEditorMenubarComponent_ngUnsubscribe = new WeakMap(), _SkyTextEditorMenubarComponent_adapterService = new WeakMap(), _SkyTextEditorMenubarComponent_changeDetector = new WeakMap(), _SkyTextEditorMenubarComponent_resources = new WeakMap(), _SkyTextEditorMenubarComponent_instances = new WeakSet(), _SkyTextEditorMenubarComponent_closeDropdowns = function _SkyTextEditorMenubarComponent_closeDropdowns() {
|
|
170
|
-
this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
171
|
-
this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
172
|
-
this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
173
|
-
}, _SkyTextEditorMenubarComponent_clearFormat = function _SkyTextEditorMenubarComponent_clearFormat() {
|
|
174
|
-
const currentSelection = __classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_adapterService, "f").getCurrentSelection();
|
|
175
|
-
/* istanbul ignore else */
|
|
176
|
-
if (currentSelection &&
|
|
177
|
-
currentSelection.rangeCount > 0 &&
|
|
178
|
-
currentSelection.getRangeAt(0).toString().length <= 0) {
|
|
179
|
-
this.execCommand('selectAll');
|
|
180
|
-
}
|
|
181
|
-
this.execCommand('removeFormat');
|
|
182
|
-
};
|
|
183
|
-
SkyTextEditorMenubarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextEditorMenubarComponent, deps: [{ token: i1.SkyTextEditorAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
-
SkyTextEditorMenubarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: { editorFocusStream: "editorFocusStream", menus: "menus", mergeFields: "mergeFields", disabled: "disabled" }, ngImport: i0, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem?.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem?.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i4.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i4.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i4.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "directive", type: i5.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "component", type: i6.λ39, selector: "sky-toolbar-item" }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
185
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextEditorMenubarComponent, decorators: [{
|
|
186
|
-
type: Component,
|
|
187
|
-
args: [{ selector: 'sky-text-editor-menubar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem?.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem?.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"] }]
|
|
188
|
-
}], ctorParameters: function () { return [{ type: i1.SkyTextEditorAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyLibResourcesService }]; }, propDecorators: { editorFocusStream: [{
|
|
189
|
-
type: Input
|
|
190
|
-
}], menus: [{
|
|
191
|
-
type: Input
|
|
192
|
-
}], mergeFields: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], disabled: [{
|
|
195
|
-
type: Input
|
|
196
|
-
}] } });
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXNCLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0UsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBSzdELE1BQU0sa0JBQWtCLEdBQUcsdUNBQXVDLENBQUM7QUFDbkUsTUFBTSxnQkFBZ0IsR0FBRyxxQ0FBcUMsQ0FBQztBQUUvRDs7R0FFRztBQU9ILE1BQU0sT0FBTyw2QkFBNkI7SUFVeEMsSUFDVyxRQUFRLENBQUMsS0FBYztRQUNoQyxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsSUFBSSxZQUFZLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQyx1QkFBQSxJQUFJLDRDQUFjLFlBQVksTUFBQSxDQUFDO1lBQy9CLHVCQUFBLElBQUkscURBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sdUJBQUEsSUFBSSxnREFBVyxDQUFDO0lBQ3pCLENBQUM7SUFpQ0QsWUFDRSxjQUEyQyxFQUMzQyxjQUFpQyxFQUNqQyxTQUFpQzs7UUF2RDVCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHeEMsVUFBSyxHQUE0QixFQUFFLENBQUM7UUFHcEMsZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBZW5ELG1EQUFhLEtBQUssRUFBQztRQUVaLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBV3ZELHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBV3pELDZCQUF3QixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBRXBFLHVEQUFpQixJQUFJLE9BQU8sRUFBUSxFQUFDO1FBQ3JDLGdFQUE2QztRQUM3QyxnRUFBbUM7UUFDbkMsMkRBQW1DO1FBT2pDLHVCQUFBLElBQUksaURBQW1CLGNBQWMsTUFBQSxDQUFDO1FBQ3RDLHVCQUFBLElBQUksaURBQW1CLGNBQWMsTUFBQSxDQUFDO1FBQ3RDLHVCQUFBLElBQUksNENBQWMsU0FBUyxNQUFBLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCO2FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQUEsSUFBSSxvREFBZSxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLHVCQUFBLElBQUksK0ZBQWdCLE1BQXBCLElBQUksQ0FBa0IsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVMLHVCQUFBLElBQUksZ0RBQVc7YUFDWixVQUFVLENBQUM7WUFDVixJQUFJLEVBQUUsa0JBQWtCLEdBQUcsWUFBWTtZQUN2QyxTQUFTLEVBQUUsa0JBQWtCLEdBQUcsbUJBQW1CO1lBQ25ELE1BQU0sRUFBRSxrQkFBa0IsR0FBRyxjQUFjO1lBQzNDLFdBQVcsRUFBRSxrQkFBa0IsR0FBRyxxQkFBcUI7WUFDdkQsU0FBUyxFQUFFLGtCQUFrQixHQUFHLGlCQUFpQjtZQUNqRCxjQUFjLEVBQUUsa0JBQWtCLEdBQUcsd0JBQXdCO1lBQzdELGFBQWEsRUFBRSxrQkFBa0IsR0FBRyxxQkFBcUI7WUFDekQsZUFBZSxFQUFFLGtCQUFrQixHQUFHLHdCQUF3QjtZQUM5RCxJQUFJLEVBQUUsZ0JBQWdCLEdBQUcsWUFBWTtZQUNyQyxTQUFTLEVBQUUsZ0JBQWdCLEdBQUcsbUJBQW1CO1lBQ2pELElBQUksRUFBRSxnQkFBZ0IsR0FBRyxZQUFZO1lBQ3JDLFNBQVMsRUFBRSxnQkFBZ0IsR0FBRyxtQkFBbUI7WUFDakQsR0FBRyxFQUFFLGdCQUFnQixHQUFHLFdBQVc7WUFDbkMsUUFBUSxFQUFFLGdCQUFnQixHQUFHLGtCQUFrQjtZQUMvQyxJQUFJLEVBQUUsZ0JBQWdCLEdBQUcsWUFBWTtZQUNyQyxTQUFTLEVBQUUsZ0JBQWdCLEdBQUcsbUJBQW1CO1lBQ2pELEtBQUssRUFBRSxnQkFBZ0IsR0FBRyxhQUFhO1lBQ3ZDLFVBQVUsRUFBRSxnQkFBZ0IsR0FBRyxvQkFBb0I7WUFDbkQsU0FBUyxFQUFFLGdCQUFnQixHQUFHLGtCQUFrQjtZQUNoRCxjQUFjLEVBQUUsZ0JBQWdCLEdBQUcseUJBQXlCO1NBQzdELENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyx1QkFBQSxJQUFJLG9EQUFlLENBQUMsQ0FBQzthQUM3QyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNqQjtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3hDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSTtvQkFDckIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2lCQUNqQztnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7b0JBQzFDLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtvQkFDdkIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO2lCQUNuQztnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7b0JBQzdDLEtBQUssRUFBRSxTQUFTLENBQUMsU0FBUztvQkFDMUIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxjQUFjO2lCQUN0QztnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7b0JBQ2pELEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYTtpQkFDL0I7Z0JBQ0Q7b0JBQ0UsU0FBUyxFQUFFLElBQUk7aUJBQ2hCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyx1QkFBQSxJQUFJLDRGQUFhLE1BQWpCLElBQUksQ0FBZTtvQkFDbkMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxlQUFlO2lCQUNqQzthQUNGLENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxHQUFHO2dCQUNmO29CQUNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztvQkFDeEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJO29CQUNyQixXQUFXLEVBQUUsU0FBUyxDQUFDLFNBQVM7aUJBQ2pDO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztvQkFDeEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJO29CQUNyQixXQUFXLEVBQUUsU0FBUyxDQUFDLFNBQVM7aUJBQ2pDO2dCQUNEO29CQUNFLFNBQVMsRUFBRSxJQUFJO2lCQUNoQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7b0JBQ3ZDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRztvQkFDcEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxRQUFRO2lCQUNoQztnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3hDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSTtvQkFDckIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2lCQUNqQztnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7b0JBQ3pDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztvQkFDdEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxVQUFVO2lCQUNsQztnQkFDRDtvQkFDRSxTQUFTLEVBQUUsSUFBSTtpQkFDaEI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO29CQUM3QyxLQUFLLEVBQUUsU0FBUyxDQUFDLFNBQVM7b0JBQzFCLFdBQVcsRUFBRSxTQUFTLENBQUMsY0FBYztpQkFDdEM7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQix1QkFBQSxJQUFJLG9EQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsdUJBQUEsSUFBSSxvREFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBZSxFQUFFLEtBQUssR0FBRyxFQUFFO1FBQzVDLHVCQUFBLElBQUkscURBQWdCLENBQUMsV0FBVyxDQUFDO1lBQy9CLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQThCO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQ2QsWUFBWSxFQUNaLDREQUE0RDtZQUMxRCxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkIsdUJBQXVCO1lBQ3ZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNyQixTQUFTO1lBQ1QsQ0FBQyxLQUFLLENBQUMsZUFBZTtnQkFDcEIsdUJBQUEsSUFBSSxxREFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUNQLENBQUM7SUFDSixDQUFDOzs7SUFHQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM3RSxDQUFDO0lBR0MsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBQSxJQUFJLHFEQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDcEUsMEJBQTBCO0lBQzFCLElBQ0UsZ0JBQWdCO1FBQ2hCLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxDQUFDO1FBQy9CLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUNyRDtRQUNBLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDL0I7SUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7MEhBaE5VLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLHFMQ2hDMUMsZ3FIQThHQTsyRkQ5RWEsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTt1TEFJeEMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlLLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2UsIFNreURyb3Bkb3duTWVzc2FnZVR5cGUgfSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuXG5pbXBvcnQgaGUgZnJvbSAnaGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lGb3Jtc1V0aWxpdHkgfSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybXMtdXRpbGl0eSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvbWVudS10eXBlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi4vdHlwZXMvdGV4dC1lZGl0b3ItbWVyZ2UtZmllbGQnO1xuXG5jb25zdCBGT1JNQVRfTUVOVV9BQ1RJT04gPSAnc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uXyc7XG5jb25zdCBFRElUX01FTlVfQUNUSU9OID0gJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yLW1lbnViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtZWRpdG9yLW1lbnViYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JNZW51YmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgZWRpdG9yRm9jdXNTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZW51czogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWVyZ2VGaWVsZHM6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gU2t5Rm9ybXNVdGlsaXR5LmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBlZGl0RHJvcGRvd25TdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgcHVibGljIGVkaXRJdGVtczpcbiAgICB8IHtcbiAgICAgICAgZnVuY3Rpb24/OiAoKSA9PiB2b2lkO1xuICAgICAgICBpc0RpdmlkZXI/OiBib29sZWFuO1xuICAgICAgICBsYWJlbD86IHN0cmluZztcbiAgICAgICAga2V5U2hvcnRjdXQ/OiBzdHJpbmc7XG4gICAgICB9W11cbiAgICB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZm9ybWF0RHJvcGRvd25TdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgcHVibGljIGZvcm1hdEl0ZW1zOlxuICAgIHwge1xuICAgICAgICBmdW5jdGlvbj86ICgpID0+IHZvaWQ7XG4gICAgICAgIGlzRGl2aWRlcj86IGJvb2xlYW47XG4gICAgICAgIGxhYmVsPzogc3RyaW5nO1xuICAgICAgICBrZXlTaG9ydGN1dD86IHN0cmluZztcbiAgICAgIH1bXVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBtZXJnZUZpZWxkRHJvcGRvd25TdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjYWRhcHRlclNlcnZpY2U6IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3Jlc291cmNlczogU2t5TGliUmVzb3VyY2VzU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICByZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UgPSBhZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3Jlc291cmNlcyA9IHJlc291cmNlcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRvckZvY3VzU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jY2xvc2VEcm9wZG93bnMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jcmVzb3VyY2VzXG4gICAgICAuZ2V0U3RyaW5ncyh7XG4gICAgICAgIGJvbGQ6IEZPUk1BVF9NRU5VX0FDVElPTiArICdib2xkX2xhYmVsJyxcbiAgICAgICAgYm9sZFNob3J0OiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnYm9sZF9rZXlfc2hvcnRjdXQnLFxuICAgICAgICBpdGFsaWM6IEZPUk1BVF9NRU5VX0FDVElPTiArICdpdGFsaWNfbGFiZWwnLFxuICAgICAgICBpdGFsaWNTaG9ydDogRk9STUFUX01FTlVfQUNUSU9OICsgJ2l0YWxpY19rZXlfc2hvcnRjdXQnLFxuICAgICAgICB1bmRlcmxpbmU6IEZPUk1BVF9NRU5VX0FDVElPTiArICd1bmRlcmxpbmVfbGFiZWwnLFxuICAgICAgICB1bmRlcmxpbmVTaG9ydDogRk9STUFUX01FTlVfQUNUSU9OICsgJ3VuZGVybGluZV9rZXlfc2hvcnRjdXQnLFxuICAgICAgICBzdHJpa2V0aHJvdWdoOiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnc3RyaWtldGhyb3VnaF9sYWJlbCcsXG4gICAgICAgIGNsZWFyRm9ybWF0dGluZzogRk9STUFUX01FTlVfQUNUSU9OICsgJ2NsZWFyX2Zvcm1hdHRpbmdfbGFiZWwnLFxuICAgICAgICB1bmRvOiBFRElUX01FTlVfQUNUSU9OICsgJ3VuZG9fbGFiZWwnLFxuICAgICAgICB1bmRvU2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAndW5kb19rZXlfc2hvcnRjdXQnLFxuICAgICAgICByZWRvOiBFRElUX01FTlVfQUNUSU9OICsgJ3JlZG9fbGFiZWwnLFxuICAgICAgICByZWRvU2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAncmVkb19rZXlfc2hvcnRjdXQnLFxuICAgICAgICBjdXQ6IEVESVRfTUVOVV9BQ1RJT04gKyAnY3V0X2xhYmVsJyxcbiAgICAgICAgY3V0U2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAnY3V0X2tleV9zaG9ydGN1dCcsXG4gICAgICAgIGNvcHk6IEVESVRfTUVOVV9BQ1RJT04gKyAnY29weV9sYWJlbCcsXG4gICAgICAgIGNvcHlTaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdjb3B5X2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHBhc3RlOiBFRElUX01FTlVfQUNUSU9OICsgJ3Bhc3RlX2xhYmVsJyxcbiAgICAgICAgcGFzdGVTaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdwYXN0ZV9rZXlfc2hvcnRjdXQnLFxuICAgICAgICBzZWxlY3RBbGw6IEVESVRfTUVOVV9BQ1RJT04gKyAnc2VsZWN0X2FsbF9sYWJlbCcsXG4gICAgICAgIHNlbGVjdEFsbFNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ3NlbGVjdF9hbGxfa2V5X3Nob3J0Y3V0JyxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXNvdXJjZXMpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtYXRJdGVtcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnYm9sZCcpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5ib2xkLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5ib2xkU2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnaXRhbGljJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLml0YWxpYyxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMuaXRhbGljU2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgndW5kZXJsaW5lJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnVuZGVybGluZSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMudW5kZXJsaW5lU2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnc3RyaWtldGhyb3VnaCcpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5zdHJpa2V0aHJvdWdoLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXNEaXZpZGVyOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuI2NsZWFyRm9ybWF0KCksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmNsZWFyRm9ybWF0dGluZyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmVkaXRJdGVtcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgndW5kbycpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy51bmRvLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy51bmRvU2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgncmVkbycpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5yZWRvLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5yZWRvU2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpc0RpdmlkZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnY3V0JyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmN1dCxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMuY3V0U2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnY29weScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5jb3B5LFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5jb3B5U2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgncGFzdGUnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMucGFzdGUsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnBhc3RlU2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpc0RpdmlkZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnc2VsZWN0QWxsJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnNlbGVjdEFsbCxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMuc2VsZWN0QWxsU2hvcnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjQ29tbWFuZChjb21tYW5kOiBzdHJpbmcsIHZhbHVlID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5leGVjQ29tbWFuZCh7XG4gICAgICBjb21tYW5kOiBjb21tYW5kLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluc2VydE1lcmdlRmllbGQoZmllbGQ6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkKTogdm9pZCB7XG4gICAgdGhpcy5leGVjQ29tbWFuZChcbiAgICAgICdpbnNlcnRIVE1MJyxcbiAgICAgICc8aW1nIHN0eWxlPVwiZGlzcGxheTogaW5saW5lOyBjdXJzb3I6IGdyYWI7XCIgZGF0YS1maWVsZGlkPVwiJyArXG4gICAgICAgIGhlLmVzY2FwZShmaWVsZC5pZCkgK1xuICAgICAgICAnXCIgZGF0YS1maWVsZGRpc3BsYXk9XCInICtcbiAgICAgICAgaGUuZXNjYXBlKGZpZWxkLm5hbWUpICtcbiAgICAgICAgJ1wiIHNyYz1cIicgK1xuICAgICAgICAoZmllbGQucHJldmlld0ltYWdlVXJsIHx8XG4gICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0TWVyZ2VGaWVsZERhdGFVUkkoZmllbGQubmFtZSkpICtcbiAgICAgICAgJ1wiPidcbiAgICApO1xuICB9XG5cbiAgI2Nsb3NlRHJvcGRvd25zKCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMuZm9ybWF0RHJvcGRvd25TdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gICAgdGhpcy5tZXJnZUZpZWxkRHJvcGRvd25TdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gIH1cblxuICAjY2xlYXJGb3JtYXQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24gJiZcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDAgJiZcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS50b1N0cmluZygpLmxlbmd0aCA8PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKTtcbiAgICB9XG4gICAgdGhpcy5leGVjQ29tbWFuZCgncmVtb3ZlRm9ybWF0Jyk7XG4gIH1cbn1cbiIsIjxza3ktdG9vbGJhci1pdGVtXG4gICpuZ0Zvcj1cImxldCBtZW51IG9mIG1lbnVzXCJcbiAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudVwiXG4gIFtuZ0NsYXNzXT1cIidza3ktdGV4dC1lZGl0b3ItbWVudS0nICsgbWVudVwiXG4+XG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZWRpdCdcIj5cbiAgICAgIDxza3ktZHJvcGRvd25cbiAgICAgICAgbGFiZWw9XCJFZGl0IG1lbnVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJlZGl0RHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2VkaXRfbGFiZWwnXG4gICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgPHNreS1kcm9wZG93bi1pdGVtICpuZ0Zvcj1cImxldCBlZGl0SXRlbSBvZiBlZGl0SXRlbXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhZWRpdEl0ZW0uaXNEaXZpZGVyXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJlZGl0SXRlbT8uZnVuY3Rpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVkaXRJdGVtLmtleVNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1tZW51LWtleS1zaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6ICdtb2Rlcm4nLFxuICAgICAgICAgICAgICAgICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZWRpdEl0ZW0uaXNEaXZpZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItZHJvcGRvd24taXRlbS1kaXZpZGVyXCJcbiAgICAgICAgICAgICAgcm9sZT1cImRpdmlkZXJcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICA8L3NreS1kcm9wZG93bj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9ybWF0J1wiPlxuICAgICAgPHNreS1kcm9wZG93blxuICAgICAgICBsYWJlbD1cIkZvcm1hdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9ybWF0RHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2Zvcm1hdF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IGZvcm1hdEl0ZW0gb2YgZm9ybWF0SXRlbXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhZm9ybWF0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdEl0ZW0/LmZ1bmN0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmb3JtYXRJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm1hdEl0ZW0ua2V5U2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLW1lbnUta2V5LXNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogJ21vZGVybicsXG4gICAgICAgICAgICAgICAgICAnc2t5LWRlZW1waGFzaXplZCc6ICdkZWZhdWx0J1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0SXRlbS5rZXlTaG9ydGN1dCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cImZvcm1hdEl0ZW0uaXNEaXZpZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItZHJvcGRvd24taXRlbS1kaXZpZGVyXCJcbiAgICAgICAgICAgICAgcm9sZT1cImRpdmlkZXJcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICA8L3NreS1kcm9wZG93bj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWVyZ2UtZmllbGQnXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgICpuZ0lmPVwibWVyZ2VGaWVsZHMgJiYgbWVyZ2VGaWVsZHMubGVuZ3RoID4gMFwiXG4gICAgICAgIGxhYmVsPVwiSW5zZXJ0IG1lcmdlIGZpZWxkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwibWVyZ2VGaWVsZERyb3Bkb3duU3RyZWFtXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9pbnNlcnRfbGFiZWwnXG4gICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgPHNreS1kcm9wZG93bi1pdGVtICpuZ0Zvcj1cImxldCBtZXJnZUZpZWxkIG9mIG1lcmdlRmllbGRzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiaW5zZXJ0TWVyZ2VGaWVsZChtZXJnZUZpZWxkKVwiPlxuICAgICAgICAgICAgICB7eyBtZXJnZUZpZWxkLm5hbWUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICA8L3NreS1kcm9wZG93bj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L3NreS10b29sYmFyLWl0ZW0+XG4iXX0=
|