@skyux/text-editor 7.0.0-beta.8 → 7.0.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/documentation.json +601 -282
- package/esm2020/lib/modules/rich-text-display/rich-text-display.component.mjs +25 -17
- package/esm2020/lib/modules/rich-text-display/rich-text-display.module.mjs +5 -5
- package/esm2020/lib/modules/shared/sky-text-editor-resources.module.mjs +5 -5
- package/esm2020/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +93 -87
- package/esm2020/lib/modules/text-editor/services/text-editor-adapter.service.mjs +263 -316
- package/esm2020/lib/modules/text-editor/services/text-editor-selection.service.mjs +16 -22
- package/esm2020/lib/modules/text-editor/services/text-editor.service.mjs +31 -31
- package/esm2020/lib/modules/text-editor/services/text-sanitization.service.mjs +11 -6
- package/esm2020/lib/modules/text-editor/text-editor.component.mjs +226 -173
- package/esm2020/lib/modules/text-editor/text-editor.module.mjs +5 -5
- package/esm2020/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +87 -62
- package/esm2020/lib/modules/text-editor/types/editor-command.mjs +1 -1
- package/esm2020/lib/modules/text-editor/types/editor-setting.mjs +1 -1
- package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal-context.mjs +1 -1
- package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +36 -35
- package/fesm2015/skyux-text-editor.mjs +786 -735
- package/fesm2015/skyux-text-editor.mjs.map +1 -1
- package/fesm2020/skyux-text-editor.mjs +788 -744
- package/fesm2020/skyux-text-editor.mjs.map +1 -1
- package/lib/modules/rich-text-display/rich-text-display.component.d.ts +2 -4
- package/lib/modules/text-editor/menubar/text-editor-menubar.component.d.ts +6 -13
- package/lib/modules/text-editor/services/text-editor-adapter.service.d.ts +17 -34
- package/lib/modules/text-editor/services/text-editor-selection.service.d.ts +3 -3
- package/lib/modules/text-editor/services/text-editor.service.d.ts +8 -12
- package/lib/modules/text-editor/services/text-sanitization.service.d.ts +1 -1
- package/lib/modules/text-editor/text-editor.component.d.ts +23 -33
- package/lib/modules/text-editor/toolbar/text-editor-toolbar.component.d.ts +7 -13
- package/lib/modules/text-editor/types/editor-command.d.ts +1 -1
- package/lib/modules/text-editor/types/editor-setting.d.ts +4 -4
- package/lib/modules/text-editor/url-modal/text-editor-url-modal-context.d.ts +1 -1
- package/lib/modules/text-editor/url-modal/text-editor-url-modal.component.d.ts +2 -7
- package/package.json +18 -17
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
var _SkyTextEditorUrlModalComponent_instances, _SkyTextEditorUrlModalComponent_modalInstance, _SkyTextEditorUrlModalComponent__activeTab, _SkyTextEditorUrlModalComponent__emailAddress, _SkyTextEditorUrlModalComponent__url, _SkyTextEditorUrlModalComponent_getEmailUrl, _SkyTextEditorUrlModalComponent_isValid;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
1
3
|
import { Component } from '@angular/core';
|
|
2
|
-
import { SkyModalInstance } from '@skyux/modals';
|
|
3
4
|
import { SkyValidation } from '@skyux/validation';
|
|
4
|
-
import { SkyUrlModalContext } from './text-editor-url-modal-context';
|
|
5
5
|
import { UrlTarget } from './text-editor-url-target';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@skyux/modals";
|
|
@@ -18,14 +18,16 @@ const queryStringParamKey = '?Subject=';
|
|
|
18
18
|
*/
|
|
19
19
|
export class SkyTextEditorUrlModalComponent {
|
|
20
20
|
constructor(modalInstance, modalContext) {
|
|
21
|
-
this
|
|
21
|
+
_SkyTextEditorUrlModalComponent_instances.add(this);
|
|
22
22
|
this.emailAddressValid = false;
|
|
23
23
|
this.subject = '';
|
|
24
24
|
this.target = 0;
|
|
25
25
|
this.valid = false;
|
|
26
|
-
this
|
|
27
|
-
this
|
|
28
|
-
this
|
|
26
|
+
_SkyTextEditorUrlModalComponent_modalInstance.set(this, void 0);
|
|
27
|
+
_SkyTextEditorUrlModalComponent__activeTab.set(this, 0);
|
|
28
|
+
_SkyTextEditorUrlModalComponent__emailAddress.set(this, '');
|
|
29
|
+
_SkyTextEditorUrlModalComponent__url.set(this, 'https://');
|
|
30
|
+
__classPrivateFieldSet(this, _SkyTextEditorUrlModalComponent_modalInstance, modalInstance, "f");
|
|
29
31
|
if (modalContext.urlResult) {
|
|
30
32
|
if (modalContext.urlResult.url.startsWith(emailKey)) {
|
|
31
33
|
this.emailAddress = modalContext.urlResult.url.replace(emailKey, '');
|
|
@@ -51,34 +53,34 @@ export class SkyTextEditorUrlModalComponent {
|
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
set activeTab(value) {
|
|
54
|
-
this
|
|
55
|
-
this.valid = this.
|
|
56
|
+
__classPrivateFieldSet(this, _SkyTextEditorUrlModalComponent__activeTab, value, "f");
|
|
57
|
+
this.valid = __classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_instances, "m", _SkyTextEditorUrlModalComponent_isValid).call(this);
|
|
56
58
|
}
|
|
57
59
|
get activeTab() {
|
|
58
|
-
return this
|
|
60
|
+
return __classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent__activeTab, "f");
|
|
59
61
|
}
|
|
60
62
|
set emailAddress(value) {
|
|
61
|
-
this
|
|
62
|
-
this.valid = this.
|
|
63
|
+
__classPrivateFieldSet(this, _SkyTextEditorUrlModalComponent__emailAddress, value, "f");
|
|
64
|
+
this.valid = __classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_instances, "m", _SkyTextEditorUrlModalComponent_isValid).call(this);
|
|
63
65
|
}
|
|
64
66
|
get emailAddress() {
|
|
65
|
-
return this
|
|
67
|
+
return __classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent__emailAddress, "f");
|
|
66
68
|
}
|
|
67
69
|
set url(value) {
|
|
68
|
-
this
|
|
69
|
-
this.valid = this.
|
|
70
|
+
__classPrivateFieldSet(this, _SkyTextEditorUrlModalComponent__url, value, "f");
|
|
71
|
+
this.valid = __classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_instances, "m", _SkyTextEditorUrlModalComponent_isValid).call(this);
|
|
70
72
|
}
|
|
71
73
|
get url() {
|
|
72
|
-
return this
|
|
74
|
+
return __classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent__url, "f");
|
|
73
75
|
}
|
|
74
76
|
activeTabChanged(value) {
|
|
75
77
|
this.activeTab = Number(value);
|
|
76
78
|
}
|
|
77
79
|
save() {
|
|
78
80
|
/* istanbul ignore else */
|
|
79
|
-
if (this.
|
|
81
|
+
if (__classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_instances, "m", _SkyTextEditorUrlModalComponent_isValid).call(this)) {
|
|
80
82
|
if (this.activeTab === 0) {
|
|
81
|
-
this.
|
|
83
|
+
__classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_modalInstance, "f").save({
|
|
82
84
|
url: this.url,
|
|
83
85
|
target: this.target
|
|
84
86
|
? parseInt(this.target, undefined)
|
|
@@ -86,32 +88,31 @@ export class SkyTextEditorUrlModalComponent {
|
|
|
86
88
|
});
|
|
87
89
|
}
|
|
88
90
|
else {
|
|
89
|
-
this.
|
|
90
|
-
url: this.
|
|
91
|
+
__classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_modalInstance, "f").save({
|
|
92
|
+
url: __classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_instances, "m", _SkyTextEditorUrlModalComponent_getEmailUrl).call(this),
|
|
91
93
|
target: UrlTarget.None,
|
|
92
94
|
});
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
cancel() {
|
|
97
|
-
this.
|
|
98
|
-
}
|
|
99
|
-
getEmailUrl() {
|
|
100
|
-
return (emailKey +
|
|
101
|
-
this.emailAddress +
|
|
102
|
-
(this.subject ? '?Subject=' + encodeURI(this.subject) : ''));
|
|
103
|
-
}
|
|
104
|
-
isValid() {
|
|
105
|
-
if (this.activeTab === 0) {
|
|
106
|
-
return !!this.url && SkyValidation.isUrl(this.url);
|
|
107
|
-
}
|
|
108
|
-
return !!this.emailAddress && SkyValidation.isEmail(this.emailAddress);
|
|
99
|
+
__classPrivateFieldGet(this, _SkyTextEditorUrlModalComponent_modalInstance, "f").cancel();
|
|
109
100
|
}
|
|
110
101
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
102
|
+
_SkyTextEditorUrlModalComponent_modalInstance = new WeakMap(), _SkyTextEditorUrlModalComponent__activeTab = new WeakMap(), _SkyTextEditorUrlModalComponent__emailAddress = new WeakMap(), _SkyTextEditorUrlModalComponent__url = new WeakMap(), _SkyTextEditorUrlModalComponent_instances = new WeakSet(), _SkyTextEditorUrlModalComponent_getEmailUrl = function _SkyTextEditorUrlModalComponent_getEmailUrl() {
|
|
103
|
+
return (emailKey +
|
|
104
|
+
this.emailAddress +
|
|
105
|
+
(this.subject ? '?Subject=' + encodeURI(this.subject) : ''));
|
|
106
|
+
}, _SkyTextEditorUrlModalComponent_isValid = function _SkyTextEditorUrlModalComponent_isValid() {
|
|
107
|
+
if (this.activeTab === 0) {
|
|
108
|
+
return !!this.url && SkyValidation.isUrl(this.url);
|
|
109
|
+
}
|
|
110
|
+
return !!this.emailAddress && SkyValidation.isEmail(this.emailAddress);
|
|
111
|
+
};
|
|
112
|
+
SkyTextEditorUrlModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyTextEditorUrlModalComponent, deps: [{ token: i1.SkyModalInstance }, { token: i2.SkyUrlModalContext }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
+
SkyTextEditorUrlModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyTextEditorUrlModalComponent, selector: "sky-text-editor-url-modal", ngImport: i0, template: "<sky-modal>\n <sky-modal-header>\n {{ 'skyux_text_editor_url_modal_header_label' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-tabset\n data-sky-id=\"test-tabset\"\n [active]=\"activeTab\"\n (activeChange)=\"activeTabChanged($event)\"\n >\n <sky-tab tabHeading=\"Web page\">\n <div class=\"sky-form-group sky-text-editor-url-modal-first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"urlInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_url_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"url\"\n skyId\n #urlInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label class=\"sky-control-label\" [for]=\"targetInput.id\">\n {{ 'skyux_text_editor_url_modal_open_label' | skyLibResources }}\n </label>\n <select\n class=\"sky-form-control\"\n [(ngModel)]=\"target\"\n skyId\n #targetInput=\"skyId\"\n >\n <option value=\"0\">\n {{\n 'skyux_text_editor_url_modal_current_option_label'\n | skyLibResources\n }}\n </option>\n <option value=\"1\">\n {{\n 'skyux_text_editor_url_modal_new_option_label' | skyLibResources\n }}\n </option>\n </select>\n </sky-input-box>\n </sky-tab>\n <sky-tab tabHeading=\"Email address\">\n <div class=\"sky-form-group first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"emailAddressInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_email_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"emailAddress\"\n skyId\n #emailAddressInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label class=\"sky-control-label\" [for]=\"subjectInput.id\">\n {{ 'skyux_text_editor_url_modal_subject_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"subject\"\n skyId\n #subjectInput=\"skyId\"\n />\n </sky-input-box>\n </sky-tab>\n </sky-tabset>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n type=\"submit\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!valid\"\n (click)=\"save()\"\n >\n {{ 'skyux_text_editor_url_modal_save_button_label' | skyLibResources }}\n </button>\n <button type=\"button\" class=\"sky-btn sky-btn-link\" (click)=\"cancel()\">\n {{ 'skyux_text_editor_url_modal_cancel_button_label' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n", styles: [".sky-text-editor-url-modal-first-field{margin-top:15px}\n"], dependencies: [{ kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i5.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled"] }, { kind: "component", type: i1.λ5, selector: "sky-modal", inputs: ["ariaRole", "tiledBody", "ariaLabelledBy"] }, { kind: "component", type: i1.λ2, selector: "sky-modal-content" }, { kind: "component", type: i1.λ3, selector: "sky-modal-footer" }, { kind: "component", type: i1.λ4, selector: "sky-modal-header" }, { kind: "component", type: i6.λ1, selector: "sky-tab", inputs: ["active", "disabled", "permalinkValue", "tabHeaderCount", "tabHeading", "tabIndex"], outputs: ["close"] }, { kind: "component", type: i6.λ2, selector: "sky-tabset", inputs: ["active", "ariaLabel", "ariaLabelledBy", "permalinkId", "tabStyle"], outputs: ["activeChange", "newTab", "openTab", "tabIndexesChange"] }, { kind: "pipe", type: i7.SkyLibResourcesPipe, name: "skyLibResources" }] });
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyTextEditorUrlModalComponent, decorators: [{
|
|
114
115
|
type: Component,
|
|
115
116
|
args: [{ selector: 'sky-text-editor-url-modal', template: "<sky-modal>\n <sky-modal-header>\n {{ 'skyux_text_editor_url_modal_header_label' | skyLibResources }}\n </sky-modal-header>\n <sky-modal-content>\n <sky-tabset\n data-sky-id=\"test-tabset\"\n [active]=\"activeTab\"\n (activeChange)=\"activeTabChanged($event)\"\n >\n <sky-tab tabHeading=\"Web page\">\n <div class=\"sky-form-group sky-text-editor-url-modal-first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"urlInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_url_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"url\"\n skyId\n #urlInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label class=\"sky-control-label\" [for]=\"targetInput.id\">\n {{ 'skyux_text_editor_url_modal_open_label' | skyLibResources }}\n </label>\n <select\n class=\"sky-form-control\"\n [(ngModel)]=\"target\"\n skyId\n #targetInput=\"skyId\"\n >\n <option value=\"0\">\n {{\n 'skyux_text_editor_url_modal_current_option_label'\n | skyLibResources\n }}\n </option>\n <option value=\"1\">\n {{\n 'skyux_text_editor_url_modal_new_option_label' | skyLibResources\n }}\n </option>\n </select>\n </sky-input-box>\n </sky-tab>\n <sky-tab tabHeading=\"Email address\">\n <div class=\"sky-form-group first-field\">\n <sky-input-box>\n <label\n class=\"sky-control-label sky-control-label-required\"\n [for]=\"emailAddressInput.id\"\n >\n {{ 'skyux_text_editor_url_modal_email_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"emailAddress\"\n skyId\n #emailAddressInput=\"skyId\"\n />\n </sky-input-box>\n </div>\n <sky-input-box class=\"sky-form-group\">\n <label class=\"sky-control-label\" [for]=\"subjectInput.id\">\n {{ 'skyux_text_editor_url_modal_subject_label' | skyLibResources }}\n </label>\n <input\n class=\"sky-form-control\"\n type=\"text\"\n [(ngModel)]=\"subject\"\n skyId\n #subjectInput=\"skyId\"\n />\n </sky-input-box>\n </sky-tab>\n </sky-tabset>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n type=\"submit\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!valid\"\n (click)=\"save()\"\n >\n {{ 'skyux_text_editor_url_modal_save_button_label' | skyLibResources }}\n </button>\n <button type=\"button\" class=\"sky-btn sky-btn-link\" (click)=\"cancel()\">\n {{ 'skyux_text_editor_url_modal_cancel_button_label' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n", styles: [".sky-text-editor-url-modal-first-field{margin-top:15px}\n"] }]
|
|
116
117
|
}], ctorParameters: function () { return [{ type: i1.SkyModalInstance }, { type: i2.SkyUrlModalContext }]; } });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItdXJsLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90ZXh0LWVkaXRvci9zcmMvbGliL21vZHVsZXMvdGV4dC1lZGl0b3IvdXJsLW1vZGFsL3RleHQtZWRpdG9yLXVybC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3VybC1tb2RhbC90ZXh0LWVkaXRvci11cmwtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBRXJELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQztBQUMzQixNQUFNLG1CQUFtQixHQUFHLFdBQVcsQ0FBQztBQUV4Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyw4QkFBOEI7SUFzQ3pDLFlBQ21CLGFBQStCLEVBQ2hELFlBQWdDO1FBRGYsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBZjNDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUVYLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFZCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRWQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsU0FBSSxHQUFHLFVBQVUsQ0FBQztRQU14QixJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDMUIsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFckUsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN0RSxnQkFBZ0I7b0JBQ2QsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQixDQUFDLENBQUMsZ0JBQWdCO3dCQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFFbkUsMEJBQTBCO2dCQUMxQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUMvQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQzlDLENBQUM7b0JBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztpQkFDbEU7Z0JBRUQsMEJBQTBCO2dCQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQzthQUNwQjtpQkFBTTtnQkFDTCxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7b0JBQ3JDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQWEsQ0FBQyxDQUFDO2dCQUV2RCw2QkFBNkI7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7SUFDSCxDQUFDO0lBckVELElBQVcsU0FBUyxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsWUFBWSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsR0FBRyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBa0RNLGdCQUFnQixDQUFDLEtBQWtCO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxJQUFJO1FBQ1QsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUN0QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7b0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO3dCQUNqQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFhLEVBQUUsU0FBUyxDQUFDO3dCQUN6QyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUk7aUJBQ0QsQ0FBQyxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUN0QixHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDdkIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2lCQUNMLENBQUMsQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE9BQU8sQ0FDTCxRQUFRO1lBQ1IsSUFBSSxDQUFDLFlBQVk7WUFDakIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekUsQ0FBQzs7MkhBaEhVLDhCQUE4QjsrR0FBOUIsOEJBQThCLGlFQ3BCM0MsK3hHQW1HQTsyRkQvRWEsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TW9kYWxJbnN0YW5jZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuaW1wb3J0IHsgU2t5VGFiSW5kZXggfSBmcm9tICdAc2t5dXgvdGFicyc7XG5pbXBvcnQgeyBTa3lWYWxpZGF0aW9uIH0gZnJvbSAnQHNreXV4L3ZhbGlkYXRpb24nO1xuXG5pbXBvcnQgeyBTa3lVcmxNb2RhbENvbnRleHQgfSBmcm9tICcuL3RleHQtZWRpdG9yLXVybC1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFVybE1vZGFsUmVzdWx0IH0gZnJvbSAnLi90ZXh0LWVkaXRvci11cmwtbW9kYWwtcmVzdWx0JztcbmltcG9ydCB7IFVybFRhcmdldCB9IGZyb20gJy4vdGV4dC1lZGl0b3ItdXJsLXRhcmdldCc7XG5cbmNvbnN0IGVtYWlsS2V5ID0gJ21haWx0bzonO1xuY29uc3QgcXVlcnlTdHJpbmdQYXJhbUtleSA9ICc/U3ViamVjdD0nO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3ItdXJsLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLXVybC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtZWRpdG9yLXVybC1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUZXh0RWRpdG9yVXJsTW9kYWxDb21wb25lbnQge1xuICBwdWJsaWMgc2V0IGFjdGl2ZVRhYih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fYWN0aXZlVGFiID0gdmFsdWU7XG4gICAgdGhpcy52YWxpZCA9IHRoaXMuaXNWYWxpZCgpO1xuICB9XG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVRhYjtcbiAgfVxuICBwdWJsaWMgc2V0IGVtYWlsQWRkcmVzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW1haWxBZGRyZXNzID0gdmFsdWU7XG4gICAgdGhpcy52YWxpZCA9IHRoaXMuaXNWYWxpZCgpO1xuICB9XG4gIHB1YmxpYyBnZXQgZW1haWxBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2VtYWlsQWRkcmVzcztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cmwgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbGlkID0gdGhpcy5pc1ZhbGlkKCk7XG4gIH1cbiAgcHVibGljIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgcHVibGljIGVtYWlsQWRkcmVzc1ZhbGlkID0gZmFsc2U7XG5cbiAgcHVibGljIHN1YmplY3QgPSAnJztcblxuICBwdWJsaWMgdGFyZ2V0ID0gMDtcblxuICBwdWJsaWMgdmFsaWQgPSBmYWxzZTtcblxuICBwdWJsaWMgX2FjdGl2ZVRhYiA9IDA7XG5cbiAgcHJpdmF0ZSBfZW1haWxBZGRyZXNzID0gJyc7XG5cbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsSW5zdGFuY2U6IFNreU1vZGFsSW5zdGFuY2UsXG4gICAgbW9kYWxDb250ZXh0OiBTa3lVcmxNb2RhbENvbnRleHRcbiAgKSB7XG4gICAgaWYgKG1vZGFsQ29udGV4dC51cmxSZXN1bHQpIHtcbiAgICAgIGlmIChtb2RhbENvbnRleHQudXJsUmVzdWx0LnVybC5zdGFydHNXaXRoKGVtYWlsS2V5KSkge1xuICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcyA9IG1vZGFsQ29udGV4dC51cmxSZXN1bHQudXJsLnJlcGxhY2UoZW1haWxLZXksICcnKTtcblxuICAgICAgICBsZXQgcXVlcnlTdHJpbmdJbmRleCA9IHRoaXMuZW1haWxBZGRyZXNzLmluZGV4T2YocXVlcnlTdHJpbmdQYXJhbUtleSk7XG4gICAgICAgIHF1ZXJ5U3RyaW5nSW5kZXggPVxuICAgICAgICAgIHF1ZXJ5U3RyaW5nSW5kZXggPiAtMVxuICAgICAgICAgICAgPyBxdWVyeVN0cmluZ0luZGV4XG4gICAgICAgICAgICA6IHRoaXMuZW1haWxBZGRyZXNzLmluZGV4T2YocXVlcnlTdHJpbmdQYXJhbUtleS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAocXVlcnlTdHJpbmdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgdGhpcy5zdWJqZWN0ID0gZGVjb2RlVVJJKHRoaXMuZW1haWxBZGRyZXNzKS5zbGljZShcbiAgICAgICAgICAgIHF1ZXJ5U3RyaW5nSW5kZXggKyBxdWVyeVN0cmluZ1BhcmFtS2V5Lmxlbmd0aFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgPSB0aGlzLmVtYWlsQWRkcmVzcy5zbGljZSgwLCBxdWVyeVN0cmluZ0luZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBhY3RpdmUgdGFiIHRvIGVtYWlsXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICh0aGlzLnVybCA9IG1vZGFsQ29udGV4dC51cmxSZXN1bHQudXJsKSxcbiAgICAgICAgICAodGhpcy50YXJnZXQgPSBtb2RhbENvbnRleHQudXJsUmVzdWx0LnRhcmdldCBhcyBhbnkpO1xuXG4gICAgICAgIC8vIHNldCBhY3RpdmUgdGFiIHRvIHdlYiBwYWdlXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWN0aXZlVGFiQ2hhbmdlZCh2YWx1ZTogU2t5VGFiSW5kZXgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlVGFiID09PSAwKSB7XG4gICAgICAgIHRoaXMubW9kYWxJbnN0YW5jZS5zYXZlKHtcbiAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgIHRhcmdldDogdGhpcy50YXJnZXRcbiAgICAgICAgICAgID8gcGFyc2VJbnQodGhpcy50YXJnZXQgYXMgYW55LCB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IFVybFRhcmdldC5Ob25lLFxuICAgICAgICB9IGFzIFVybE1vZGFsUmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9kYWxJbnN0YW5jZS5zYXZlKHtcbiAgICAgICAgICB1cmw6IHRoaXMuZ2V0RW1haWxVcmwoKSxcbiAgICAgICAgICB0YXJnZXQ6IFVybFRhcmdldC5Ob25lLFxuICAgICAgICB9IGFzIFVybE1vZGFsUmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMubW9kYWxJbnN0YW5jZS5jYW5jZWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW1haWxVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKFxuICAgICAgZW1haWxLZXkgK1xuICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgK1xuICAgICAgKHRoaXMuc3ViamVjdCA/ICc/U3ViamVjdD0nICsgZW5jb2RlVVJJKHRoaXMuc3ViamVjdCkgOiAnJylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFjdGl2ZVRhYiA9PT0gMCkge1xuICAgICAgcmV0dXJuICEhdGhpcy51cmwgJiYgU2t5VmFsaWRhdGlvbi5pc1VybCh0aGlzLnVybCk7XG4gICAgfVxuICAgIHJldHVybiAhIXRoaXMuZW1haWxBZGRyZXNzICYmIFNreVZhbGlkYXRpb24uaXNFbWFpbCh0aGlzLmVtYWlsQWRkcmVzcyk7XG4gIH1cbn1cbiIsIjxza3ktbW9kYWw+XG4gIDxza3ktbW9kYWwtaGVhZGVyPlxuICAgIHt7ICdza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfaGVhZGVyX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICA8L3NreS1tb2RhbC1oZWFkZXI+XG4gIDxza3ktbW9kYWwtY29udGVudD5cbiAgICA8c2t5LXRhYnNldFxuICAgICAgZGF0YS1za3ktaWQ9XCJ0ZXN0LXRhYnNldFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZVRhYlwiXG4gICAgICAoYWN0aXZlQ2hhbmdlKT1cImFjdGl2ZVRhYkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPHNreS10YWIgdGFiSGVhZGluZz1cIldlYiBwYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZm9ybS1ncm91cCBza3ktdGV4dC1lZGl0b3ItdXJsLW1vZGFsLWZpcnN0LWZpZWxkXCI+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbCBza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZFwiXG4gICAgICAgICAgICAgIFtmb3JdPVwidXJsSW5wdXQuaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX3VybF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInVybFwiXG4gICAgICAgICAgICAgIHNreUlkXG4gICAgICAgICAgICAgICN1cmxJbnB1dD1cInNreUlkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNreS1pbnB1dC1ib3ggY2xhc3M9XCJza3ktZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsXCIgW2Zvcl09XCJ0YXJnZXRJbnB1dC5pZFwiPlxuICAgICAgICAgICAge3sgJ3NreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9vcGVuX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFyZ2V0XCJcbiAgICAgICAgICAgIHNreUlkXG4gICAgICAgICAgICAjdGFyZ2V0SW5wdXQ9XCJza3lJZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjBcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2N1cnJlbnRfb3B0aW9uX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjFcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX25ld19vcHRpb25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgPC9za3ktdGFiPlxuICAgICAgPHNreS10YWIgdGFiSGVhZGluZz1cIkVtYWlsIGFkZHJlc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1mb3JtLWdyb3VwIGZpcnN0LWZpZWxkXCI+XG4gICAgICAgICAgPHNreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbCBza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZFwiXG4gICAgICAgICAgICAgIFtmb3JdPVwiZW1haWxBZGRyZXNzSW5wdXQuaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2VtYWlsX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW1haWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgc2t5SWRcbiAgICAgICAgICAgICAgI2VtYWlsQWRkcmVzc0lucHV0PVwic2t5SWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2t5LWlucHV0LWJveCBjbGFzcz1cInNreS1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIiBbZm9yXT1cInN1YmplY3RJbnB1dC5pZFwiPlxuICAgICAgICAgICAge3sgJ3NreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9zdWJqZWN0X2xhYmVsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJqZWN0XCJcbiAgICAgICAgICAgIHNreUlkXG4gICAgICAgICAgICAjc3ViamVjdElucHV0PVwic2t5SWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2t5LWlucHV0LWJveD5cbiAgICAgIDwvc2t5LXRhYj5cbiAgICA8L3NreS10YWJzZXQ+XG4gIDwvc2t5LW1vZGFsLWNvbnRlbnQ+XG4gIDxza3ktbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tcHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIXZhbGlkXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgID5cbiAgICAgIHt7ICdza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfc2F2ZV9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGlua1wiIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAge3sgJ3NreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9jYW5jZWxfYnV0dG9uX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgIDwvYnV0dG9uPlxuICA8L3NreS1tb2RhbC1mb290ZXI+XG48L3NreS1tb2RhbD5cbiJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItdXJsLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90ZXh0LWVkaXRvci9zcmMvbGliL21vZHVsZXMvdGV4dC1lZGl0b3IvdXJsLW1vZGFsL3RleHQtZWRpdG9yLXVybC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3VybC1tb2RhbC90ZXh0LWVkaXRvci11cmwtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUlsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQUVyRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUM7QUFDM0IsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUM7QUFFeEM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sOEJBQThCO0lBdUN6QyxZQUNFLGFBQStCLEVBQy9CLFlBQWdDOztRQWIzQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFdBQU0sR0FBb0IsQ0FBQyxDQUFDO1FBQzVCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFckIsZ0VBQWlDO1FBRWpDLHFEQUFjLENBQUMsRUFBQztRQUNoQix3REFBaUIsRUFBRSxFQUFDO1FBQ3BCLCtDQUFRLFVBQVUsRUFBQztRQU1qQix1QkFBQSxJQUFJLGlEQUFrQixhQUFhLE1BQUEsQ0FBQztRQUVwQyxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUU7WUFDMUIsSUFB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QUksQ0FBQyxNQUFnQixFQUFFLFNBQVMsQ0FBQzt3QkFDNUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJO2lCQUNELENBQUMsQ0FBQzthQUN0QjtpQkFBTTtnQkFDTCx1QkFBQSxJQUFJLHFEQUFlLENBQUMsSUFBSSxDQUFDO29CQUN2QixHQUFHLEVBQUUsdUJBQUEsSUFBSSw4RkFBYSxNQUFqQixJQUFJLENBQWU7b0JBQ3hCLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSTtpQkFDTCxDQUFDLENBQUM7YUFDdEI7U0FDRjtJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsdUJBQUEsSUFBSSxxREFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9CLENBQUM7OztJQUdDLE9BQU8sQ0FDTCxRQUFRO1FBQ1IsSUFBSSxDQUFDLFlBQVk7UUFDakIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQzVELENBQUM7QUFDSixDQUFDO0lBR0MsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtRQUN4QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN6RSxDQUFDOzRIQW5IVSw4QkFBOEI7Z0hBQTlCLDhCQUE4QixpRUNwQjNDLCt4R0FtR0E7NEZEL0VhLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreU1vZGFsSW5zdGFuY2UgfSBmcm9tICdAc2t5dXgvbW9kYWxzJztcbmltcG9ydCB7IFNreVRhYkluZGV4IH0gZnJvbSAnQHNreXV4L3RhYnMnO1xuaW1wb3J0IHsgU2t5VmFsaWRhdGlvbiB9IGZyb20gJ0Bza3l1eC92YWxpZGF0aW9uJztcblxuaW1wb3J0IHsgU2t5VXJsTW9kYWxDb250ZXh0IH0gZnJvbSAnLi90ZXh0LWVkaXRvci11cmwtbW9kYWwtY29udGV4dCc7XG5pbXBvcnQgeyBVcmxNb2RhbFJlc3VsdCB9IGZyb20gJy4vdGV4dC1lZGl0b3ItdXJsLW1vZGFsLXJlc3VsdCc7XG5pbXBvcnQgeyBVcmxUYXJnZXQgfSBmcm9tICcuL3RleHQtZWRpdG9yLXVybC10YXJnZXQnO1xuXG5jb25zdCBlbWFpbEtleSA9ICdtYWlsdG86JztcbmNvbnN0IHF1ZXJ5U3RyaW5nUGFyYW1LZXkgPSAnP1N1YmplY3Q9JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yLXVybC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci11cmwtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWVkaXRvci11cmwtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvclVybE1vZGFsQ29tcG9uZW50IHtcbiAgcHVibGljIHNldCBhY3RpdmVUYWIodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuI19hY3RpdmVUYWIgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbGlkID0gdGhpcy4jaXNWYWxpZCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVUYWIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX2FjdGl2ZVRhYjtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZW1haWxBZGRyZXNzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiNfZW1haWxBZGRyZXNzID0gdmFsdWU7XG4gICAgdGhpcy52YWxpZCA9IHRoaXMuI2lzVmFsaWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW1haWxBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19lbWFpbEFkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgc2V0IHVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy4jX3VybCA9IHZhbHVlO1xuICAgIHRoaXMudmFsaWQgPSB0aGlzLiNpc1ZhbGlkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfdXJsO1xuICB9XG5cbiAgcHVibGljIGVtYWlsQWRkcmVzc1ZhbGlkID0gZmFsc2U7XG4gIHB1YmxpYyBzdWJqZWN0ID0gJyc7XG4gIHB1YmxpYyB0YXJnZXQ6IG51bWJlciB8IHN0cmluZyA9IDA7XG4gIHB1YmxpYyB2YWxpZCA9IGZhbHNlO1xuXG4gICNtb2RhbEluc3RhbmNlOiBTa3lNb2RhbEluc3RhbmNlO1xuXG4gICNfYWN0aXZlVGFiID0gMDtcbiAgI19lbWFpbEFkZHJlc3MgPSAnJztcbiAgI191cmwgPSAnaHR0cHM6Ly8nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1vZGFsSW5zdGFuY2U6IFNreU1vZGFsSW5zdGFuY2UsXG4gICAgbW9kYWxDb250ZXh0OiBTa3lVcmxNb2RhbENvbnRleHRcbiAgKSB7XG4gICAgdGhpcy4jbW9kYWxJbnN0YW5jZSA9IG1vZGFsSW5zdGFuY2U7XG5cbiAgICBpZiAobW9kYWxDb250ZXh0LnVybFJlc3VsdCkge1xuICAgICAgaWYgKG1vZGFsQ29udGV4dC51cmxSZXN1bHQudXJsLnN0YXJ0c1dpdGgoZW1haWxLZXkpKSB7XG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gbW9kYWxDb250ZXh0LnVybFJlc3VsdC51cmwucmVwbGFjZShlbWFpbEtleSwgJycpO1xuXG4gICAgICAgIGxldCBxdWVyeVN0cmluZ0luZGV4ID0gdGhpcy5lbWFpbEFkZHJlc3MuaW5kZXhPZihxdWVyeVN0cmluZ1BhcmFtS2V5KTtcbiAgICAgICAgcXVlcnlTdHJpbmdJbmRleCA9XG4gICAgICAgICAgcXVlcnlTdHJpbmdJbmRleCA+IC0xXG4gICAgICAgICAgICA/IHF1ZXJ5U3RyaW5nSW5kZXhcbiAgICAgICAgICAgIDogdGhpcy5lbWFpbEFkZHJlc3MuaW5kZXhPZihxdWVyeVN0cmluZ1BhcmFtS2V5LnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID4gLTEpIHtcbiAgICAgICAgICB0aGlzLnN1YmplY3QgPSBkZWNvZGVVUkkodGhpcy5lbWFpbEFkZHJlc3MpLnNsaWNlKFxuICAgICAgICAgICAgcXVlcnlTdHJpbmdJbmRleCArIHF1ZXJ5U3RyaW5nUGFyYW1LZXkubGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmVtYWlsQWRkcmVzcyA9IHRoaXMuZW1haWxBZGRyZXNzLnNsaWNlKDAsIHF1ZXJ5U3RyaW5nSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IGFjdGl2ZSB0YWIgdG8gZW1haWxcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKHRoaXMudXJsID0gbW9kYWxDb250ZXh0LnVybFJlc3VsdC51cmwpLFxuICAgICAgICAgICh0aGlzLnRhcmdldCA9IG1vZGFsQ29udGV4dC51cmxSZXN1bHQudGFyZ2V0IGFzIGFueSk7XG5cbiAgICAgICAgLy8gc2V0IGFjdGl2ZSB0YWIgdG8gd2ViIHBhZ2VcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmVUYWJDaGFuZ2VkKHZhbHVlOiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI2lzVmFsaWQoKSkge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlVGFiID09PSAwKSB7XG4gICAgICAgIHRoaXMuI21vZGFsSW5zdGFuY2Uuc2F2ZSh7XG4gICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0XG4gICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMudGFyZ2V0IGFzIHN0cmluZywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgOiBVcmxUYXJnZXQuTm9uZSxcbiAgICAgICAgfSBhcyBVcmxNb2RhbFJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNtb2RhbEluc3RhbmNlLnNhdmUoe1xuICAgICAgICAgIHVybDogdGhpcy4jZ2V0RW1haWxVcmwoKSxcbiAgICAgICAgICB0YXJnZXQ6IFVybFRhcmdldC5Ob25lLFxuICAgICAgICB9IGFzIFVybE1vZGFsUmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuI21vZGFsSW5zdGFuY2UuY2FuY2VsKCk7XG4gIH1cblxuICAjZ2V0RW1haWxVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKFxuICAgICAgZW1haWxLZXkgK1xuICAgICAgdGhpcy5lbWFpbEFkZHJlc3MgK1xuICAgICAgKHRoaXMuc3ViamVjdCA/ICc/U3ViamVjdD0nICsgZW5jb2RlVVJJKHRoaXMuc3ViamVjdCkgOiAnJylcbiAgICApO1xuICB9XG5cbiAgI2lzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuYWN0aXZlVGFiID09PSAwKSB7XG4gICAgICByZXR1cm4gISF0aGlzLnVybCAmJiBTa3lWYWxpZGF0aW9uLmlzVXJsKHRoaXMudXJsKTtcbiAgICB9XG4gICAgcmV0dXJuICEhdGhpcy5lbWFpbEFkZHJlc3MgJiYgU2t5VmFsaWRhdGlvbi5pc0VtYWlsKHRoaXMuZW1haWxBZGRyZXNzKTtcbiAgfVxufVxuIiwiPHNreS1tb2RhbD5cbiAgPHNreS1tb2RhbC1oZWFkZXI+XG4gICAge3sgJ3NreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9oZWFkZXJfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gIDwvc2t5LW1vZGFsLWhlYWRlcj5cbiAgPHNreS1tb2RhbC1jb250ZW50PlxuICAgIDxza3ktdGFic2V0XG4gICAgICBkYXRhLXNreS1pZD1cInRlc3QtdGFic2V0XCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlVGFiXCJcbiAgICAgIChhY3RpdmVDaGFuZ2UpPVwiYWN0aXZlVGFiQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c2t5LXRhYiB0YWJIZWFkaW5nPVwiV2ViIHBhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1mb3JtLWdyb3VwIHNreS10ZXh0LWVkaXRvci11cmwtbW9kYWwtZmlyc3QtZmllbGRcIj5cbiAgICAgICAgICA8c2t5LWlucHV0LWJveD5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsIHNreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgW2Zvcl09XCJ1cmxJbnB1dC5pZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfdXJsX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcyB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidXJsXCJcbiAgICAgICAgICAgICAgc2t5SWRcbiAgICAgICAgICAgICAgI3VybElucHV0PVwic2t5SWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2t5LWlucHV0LWJveCBjbGFzcz1cInNreS1mb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIiBbZm9yXT1cInRhcmdldElucHV0LmlkXCI+XG4gICAgICAgICAgICB7eyAnc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX29wZW5fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzcz1cInNreS1mb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YXJnZXRcIlxuICAgICAgICAgICAgc2t5SWRcbiAgICAgICAgICAgICN0YXJnZXRJbnB1dD1cInNreUlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMFwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfY3VycmVudF9vcHRpb25fbGFiZWwnXG4gICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfbmV3X29wdGlvbl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICA8L3NreS10YWI+XG4gICAgICA8c2t5LXRhYiB0YWJIZWFkaW5nPVwiRW1haWwgYWRkcmVzc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZvcm0tZ3JvdXAgZmlyc3QtZmllbGRcIj5cbiAgICAgICAgICA8c2t5LWlucHV0LWJveD5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsIHNreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgW2Zvcl09XCJlbWFpbEFkZHJlc3NJbnB1dC5pZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfZW1haWxfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbWFpbEFkZHJlc3NcIlxuICAgICAgICAgICAgICBza3lJZFxuICAgICAgICAgICAgICAjZW1haWxBZGRyZXNzSW5wdXQ9XCJza3lJZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LWlucHV0LWJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxza3ktaW5wdXQtYm94IGNsYXNzPVwic2t5LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiIFtmb3JdPVwic3ViamVjdElucHV0LmlkXCI+XG4gICAgICAgICAgICB7eyAnc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX3N1YmplY3RfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YmplY3RcIlxuICAgICAgICAgICAgc2t5SWRcbiAgICAgICAgICAgICNzdWJqZWN0SW5wdXQ9XCJza3lJZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9za3ktaW5wdXQtYm94PlxuICAgICAgPC9za3ktdGFiPlxuICAgIDwvc2t5LXRhYnNldD5cbiAgPC9za3ktbW9kYWwtY29udGVudD5cbiAgPHNreS1tb2RhbC1mb290ZXI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdmFsaWRcIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgPlxuICAgICAge3sgJ3NreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9zYXZlX2J1dHRvbl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICB7eyAnc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2NhbmNlbF9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgPC9idXR0b24+XG4gIDwvc2t5LW1vZGFsLWZvb3Rlcj5cbjwvc2t5LW1vZGFsPlxuIl19
|