@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1318-c → 1.5.1318-e
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/assets/i18n/en.json +33 -1
- package/assets/i18n/es.json +34 -2
- package/assets/styles/main.min.css +1 -1
- package/assets/styles/main.min.css.map +1 -1
- package/assets/styles/micro.min.css +1 -0
- package/assets/styles/micro.min.css.map +1 -0
- package/esm2022/assets/i18n/en.json +33 -1
- package/esm2022/assets/i18n/es.json +34 -2
- package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +2 -2
- package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +9 -4
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +13 -8
- package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +3 -3
- package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +1 -1
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +2 -2
- package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +2 -2
- package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +4 -2
- package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +177 -91
- package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +2 -2
- package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +3 -2
- package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +2 -2
- package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +2 -2
- package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +2 -2
- package/esm2022/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.mjs +2 -2
- package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +30 -9
- package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +1 -1
- package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +1 -1
- package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +5 -7
- package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +66 -8
- package/esm2022/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.mjs +51 -0
- package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +66 -24
- package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +11 -17
- package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +33 -15
- package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +9 -3
- package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +2 -2
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +6 -3
- package/esm2022/lib/services/projection/projection.service.mjs +1 -1
- package/esm2022/lib/utils/formControl.mjs +6 -4
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +712 -387
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
- package/lib/components/bmb-dropdown/bmb-dropdown.component.d.ts +3 -2
- package/lib/components/bmb-dropzone/bmb-dropzone.component.d.ts +39 -20
- package/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.d.ts +3 -2
- package/lib/components/bmb-progress-bar/bmb-progress-bar.component.d.ts +8 -2
- package/lib/components/bmb-tables/bmb-tables.component.d.ts +8 -1
- package/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.d.ts +13 -0
- package/lib/components/bmb-text-editor/bmb-text-editor.component.d.ts +10 -4
- package/lib/components/bmb-text-link/bmb-text-link.component.d.ts +1 -2
- package/lib/components/bmb-value-counter/bmb-value-counter.component.d.ts +10 -4
- package/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.d.ts +2 -1
- package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.d.ts +2 -1
- package/lib/utils/formControl.d.ts +2 -2
- package/package.json +4 -4
- package/esm2022/lib/services/calendar.service.mjs +0 -51
- package/esm2022/lib/services/index.mjs +0 -3
- package/esm2022/lib/services/native-modal.service.mjs +0 -60
- package/esm2022/lib/services/notification.service.mjs +0 -84
- package/esm2022/lib/services/projection.service.mjs +0 -49
- package/esm2022/lib/services/tabs.service.mjs +0 -30
- package/esm2022/lib/services/theme.service.mjs +0 -30
- package/esm2022/lib/services/toast.service.mjs +0 -24
- package/lib/services/calendar.service.d.ts +0 -15
- package/lib/services/index.d.ts +0 -2
- package/lib/services/native-modal.service.d.ts +0 -18
- package/lib/services/notification.service.d.ts +0 -20
- package/lib/services/projection.service.d.ts +0 -31
- package/lib/services/tabs.service.d.ts +0 -13
- package/lib/services/theme.service.d.ts +0 -11
- package/lib/services/toast.service.d.ts +0 -9
|
@@ -36,6 +36,7 @@ export class BmbDropdownComponent {
|
|
|
36
36
|
this.isFilterable = input(false);
|
|
37
37
|
this.inputId = input(this.name());
|
|
38
38
|
this.customValidation = input();
|
|
39
|
+
this.customFilterFunction = input(null);
|
|
39
40
|
this.control = model(newFormControlByType());
|
|
40
41
|
this.onValueChange = output();
|
|
41
42
|
this.onFocus = output();
|
|
@@ -140,6 +141,7 @@ export class BmbDropdownComponent {
|
|
|
140
141
|
items: this.parsedOptions(),
|
|
141
142
|
isKeyboardEvent: this.isKeyboardEvent,
|
|
142
143
|
enableFilter: this.isFilterable(),
|
|
144
|
+
customFilterFunction: this.customFilterFunction(),
|
|
143
145
|
},
|
|
144
146
|
focusOnOpen: true,
|
|
145
147
|
};
|
|
@@ -159,7 +161,7 @@ export class BmbDropdownComponent {
|
|
|
159
161
|
return showError(this.control());
|
|
160
162
|
}
|
|
161
163
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbDropdownComponent, deps: [{ token: i1.BmbProjectionContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: BmbDropdownComponent, isStandalone: true, selector: "bmb-dropdown", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, preferredOptions: { classPropertyName: "preferredOptions", publicName: "preferredOptions", isSignal: true, isRequired: false, transformFunction: null }, isMultiSelect: { classPropertyName: "isMultiSelect", publicName: "isMultiSelect", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, isFilterable: { classPropertyName: "isFilterable", publicName: "isFilterable", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, isModalOpen: { classPropertyName: "isModalOpen", publicName: "isModalOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", onValueChange: "onValueChange", onFocus: "onFocus", isModalOpen: "isModalOpenChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentDiv"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\n class=\"bmb_dropdown\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"getValidInitialValues()\"\n [label]=\"label()!\"\n [errorMessage]=\"errorMessage()\"\n [helperMessage]=\"helperText()\"\n [isRequired]=\"required()\"\n [isDisabled]=\"disabled()\"\n [control]=\"control()\"\n [showError]=\"shouldShowError\"\n [tooltip]=\"tooltip()\"\n [tooltipPosition]=\"tooltipPosition()\"\n [customValidation]=\"customValidation()\"\n>\n <div #contentDiv>\n <bmb-input-content\n class=\"bmb_dropdown-field\"\n type=\"text\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [icon]=\"getIcon()\"\n [control]=\"selectionControl\"\n [isReadOnly]=\"true\"\n [placeholder]=\"placeholder()\"\n [isError]=\"shouldShowError\"\n (click)=\"openList()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"handleValidity()\"\n (onFocus)=\"handleFocus($event)\"\n >\n <ng-template #customContent>\n <label [htmlFor]=\"inputId()\">\n <bmb-icon\n class=\"bmb_field-actions\"\n icon=\"keyboard_arrow_down\"\n (click)=\"openList()\"\n [size]=\"24\"\n />\n </label>\n </ng-template>\n </bmb-input-content>\n </div>\n <input\n hidden\n type=\"text\"\n [id]=\"getUUID('id')\"\n [name]=\"name()\"\n [formControl]=\"control()\"\n />\n</bmb-input-validator>\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: BmbDropdownComponent, isStandalone: true, selector: "bmb-dropdown", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, preferredOptions: { classPropertyName: "preferredOptions", publicName: "preferredOptions", isSignal: true, isRequired: false, transformFunction: null }, isMultiSelect: { classPropertyName: "isMultiSelect", publicName: "isMultiSelect", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, isFilterable: { classPropertyName: "isFilterable", publicName: "isFilterable", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, customFilterFunction: { classPropertyName: "customFilterFunction", publicName: "customFilterFunction", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, isModalOpen: { classPropertyName: "isModalOpen", publicName: "isModalOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", onValueChange: "onValueChange", onFocus: "onFocus", isModalOpen: "isModalOpenChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentDiv"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\n class=\"bmb_dropdown\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"getValidInitialValues()\"\n [label]=\"label()!\"\n [errorMessage]=\"errorMessage()\"\n [helperMessage]=\"helperText()\"\n [isRequired]=\"required()\"\n [isDisabled]=\"disabled()\"\n [control]=\"control()\"\n [showError]=\"shouldShowError\"\n [tooltip]=\"tooltip()\"\n [tooltipPosition]=\"tooltipPosition()\"\n [customValidation]=\"customValidation()\"\n>\n <div #contentDiv>\n <bmb-input-content\n class=\"bmb_dropdown-field\"\n type=\"text\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [icon]=\"getIcon()\"\n [control]=\"selectionControl\"\n [isReadOnly]=\"true\"\n [placeholder]=\"placeholder()\"\n [isError]=\"shouldShowError\"\n (click)=\"openList()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"handleValidity()\"\n (onFocus)=\"handleFocus($event)\"\n >\n <ng-template #customContent>\n <label [htmlFor]=\"inputId()\">\n <bmb-icon\n class=\"bmb_field-actions\"\n icon=\"keyboard_arrow_down\"\n (click)=\"openList()\"\n [size]=\"24\"\n />\n </label>\n </ng-template>\n </bmb-input-content>\n </div>\n <input\n hidden\n type=\"text\"\n [id]=\"getUUID('id')\"\n [name]=\"name()\"\n [formControl]=\"control()\"\n />\n</bmb-input-validator>\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "isMultipleFile", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
163
165
|
}
|
|
164
166
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BmbDropdownComponent, decorators: [{
|
|
165
167
|
type: Component,
|
|
@@ -174,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
174
176
|
type: ViewChild,
|
|
175
177
|
args: ['contentDiv', { static: true }]
|
|
176
178
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIscUJBQXFCLEdBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFNBQVMsR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxN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LElBQUksZUFBZTtRQUNqQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQTVMVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnOEZDL0RqQywwNkNBb0RBLHdSREFJLFlBQVksK0JBQ1osZ0JBQWdCLDZKQUNoQixtQkFBbUIsMGtCQUNuQiwwQkFBMEIscWJBQzFCLHdCQUF3Qjs7NEZBT2Ysb0JBQW9CO2tCQWZoQyxTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQix3QkFBd0I7cUJBQ3pCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO2dHQXVDTSxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgbW9kZWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgY29tcHV0ZWQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCbWJJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWljb24vYm1iLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIGNvbnZlcnRMaXN0VG9TZWxlY3RMaXN0LFxuICBnZXRTZWxlY3RlZFZhbHVlcyxcbiAgZ2V0VmFsaWRJbml0aWFsVmFsdWVzLFxufSBmcm9tICcuLi8uLi91dGlscy9kcm9wZG93bic7XG5pbXBvcnQge1xuICBJQm1iSW5wdXRFcnJvcixcbiAgSUJtYklucHV0VG9vbHRpcFBvc2l0aW9uLFxufSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbWJEcm9wZG93bkNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi91dGlscy9ibWItZHJvcGRvd24tY29udGVudC9ibWItZHJvcGRvd24tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSURyb3Bkb3duSXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEJtYklucHV0Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQtY29udGVudC9ibWItaW5wdXQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRVVUlEIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtcbiAgYXNzaWduTmV3Rm9ybUNvbnRyb2wsXG4gIGhhbmRsZVZhbGlkaXR5LFxuICBuZXdGb3JtQ29udHJvbEJ5VHlwZSxcbiAgc2hvd0Vycm9yLFxufSBmcm9tICcuLi8uLi91dGlscy9mb3JtQ29udHJvbCc7XG5pbXBvcnQgeyBCbWJJbnB1dFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQtdmFsaWRhdG9yL2JtYi1pbnB1dC12YWxpZGF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYlByb2plY3Rpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2plY3Rpb24vcHJvamVjdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJQm1iRHJvcGRvd25JdGVtIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBzZWxlY3RlZFRleHQ/OiBzdHJpbmc7IC8vaW50ZXJuYWxcbiAgaWNvbj86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi1kcm9wZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQm1iSWNvbkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEJtYklucHV0VmFsaWRhdG9yQ29tcG9uZW50LFxuICAgIEJtYklucHV0Q29udGVudENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ibWItZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHJlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBzaG93SWNvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgaWNvbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBvcHRpb25zID0gaW5wdXQ8c3RyaW5nW10gfCBJQm1iRHJvcGRvd25JdGVtW10+KFtdKTtcbiAgaGVscGVyVGV4dCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBlcnJvck1lc3NhZ2UgPSBpbnB1dDxzdHJpbmcgfCBJQm1iSW5wdXRFcnJvcj4oJycpO1xuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBuYW1lID0gaW5wdXQ8c3RyaW5nPihnZXRVVUlEKCkpO1xuICBwcmVmZXJyZWRPcHRpb25zID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcbiAgaXNNdWx0aVNlbGVjdCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdG9vbHRpcCA9IGlucHV0PHN0cmluZz4oJycpO1xuICB0b29sdGlwUG9zaXRpb24gPSBpbnB1dDxJQm1iSW5wdXRUb29sdGlwUG9zaXRpb24+KHtcbiAgICBhbGlnbjogJ2Fib3ZlJyxcbiAgICBqdXN0aWZ5OiAnYmVmb3JlJyxcbiAgfSk7XG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICB2YWx1ZSA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPignJyk7XG4gIGlzRmlsdGVyYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaW5wdXRJZCA9IGlucHV0PHN0cmluZz4odGhpcy5uYW1lKCkpO1xuICBjdXN0b21WYWxpZGF0aW9uID0gaW5wdXQ8VmFsaWRhdG9yRm4+KCk7XG5cbiAgY29udHJvbCA9IG1vZGVsPEZvcm1Db250cm9sPihuZXdGb3JtQ29udHJvbEJ5VHlwZSgpKTtcblxuICBvblZhbHVlQ2hhbmdlID0gb3V0cHV0PGFueT4oKTtcbiAgb25Gb2N1cyA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gIHV1aWQ6IHN0cmluZyA9IGdldFVVSUQoKTtcbiAgaXNNb2RhbE9wZW4gPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIHNlbGVjdGlvbkNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKG5ldyBGb3JtQ29udHJvbCgpKTtcbiAgc2VsZWN0ZWRJY29uOiBzdHJpbmcgPSAnJztcbiAgaXNLZXlib2FyZEV2ZW50OiBib29sZWFuID0gZmFsc2U7XG4gIGlzQ29udHJvbE51bGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFyc2VkT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5pdE9wdGlvbnModGhpcy5vcHRpb25zKCkpKTtcbiAgc2VsZWN0ZWRJdGVtOiBJRHJvcGRvd25JdGVtIHwgbnVsbCA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudERpdicsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRlbnRSZWYhOiBFbGVtZW50UmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9qZWN0aW9uU2VydmljZTogQm1iUHJvamVjdGlvbkNvbnRlbnRTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5jb250cm9sKCkpIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXQoYXNzaWduTmV3Rm9ybUNvbnRyb2wodGhpcy5uYW1lKCksIHRoaXMuY29udHJvbCgpKSEpO1xuICAgICAgdGhpcy5pc0NvbnRyb2xOdWxsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodGhpcy5jb250cm9sKCk/LnZhbHVlKSkge1xuICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbCgpXG4gICAgICA/LnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmdldFZhbGlkSW5pdGlhbFZhbHVlcygpKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uQ29udHJvbCh2YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250cm9sKCkgIT09IG51bGwpIHtcbiAgICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10pIHtcbiAgICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUodGhpcy5nZXRWYWxpZEluaXRpYWxWYWx1ZXMoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW5pdE9wdGlvbnMobGlzdDogc3RyaW5nW10gfCBJQm1iRHJvcGRvd25JdGVtW10pOiBJRHJvcGRvd25JdGVtW10ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gY29udmVydExpc3RUb1NlbGVjdExpc3QoXG4gICAgICBsaXN0LFxuICAgICAgdGhpcy5pY29uKCksXG4gICAgICB0aGlzLnNob3dJY29uKCksXG4gICAgKTtcblxuICAgIGxldCBwYXJzZWRJdGVtcyA9IG5ld0l0ZW1zLm1hcCgoZWxlbWVudDogSURyb3Bkb3duSXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZWxlbWVudCxcbiAgICAgICAgaWNvbjogIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIHRoaXMuc2hvd0ljb24oKSA/IGVsZW1lbnQuaWNvbiEgOiAnJyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGVsZW1lbnQpO1xuICAgICAgICAgIHRoaXMucHJvamVjdGlvblNlcnZpY2UuY2xvc2VDb250ZW50KCk7XG4gICAgICAgIH0sXG4gICAgICB9IGFzIElEcm9wZG93bkl0ZW07XG4gICAgfSk7XG5cbiAgICBpZiAoISF0aGlzLnByZWZlcnJlZE9wdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHByZWZlcnJlZEl0ZW1zOiBJRHJvcGRvd25JdGVtW10gPSBwYXJzZWRJdGVtcy5maWx0ZXIoKGVsZW1lbnQpID0+XG4gICAgICAgIHRoaXMucHJlZmVycmVkT3B0aW9ucygpLmluY2x1ZGVzKGVsZW1lbnQudmFsdWUhKSxcbiAgICAgICk7XG5cbiAgICAgIHBhcnNlZEl0ZW1zID0gWy4uLm5ldyBTZXQoWy4uLnByZWZlcnJlZEl0ZW1zLCAuLi5wYXJzZWRJdGVtc10pXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VkSXRlbXM7XG4gIH1cblxuICBoYW5kbGVGb2N1cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMub25Gb2N1cy5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGdldFVVSUQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmFtZX1fJHt0aGlzLm5hbWUoKX1fJHt0aGlzLnV1aWR9YDtcbiAgfVxuXG4gIGdldEljb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCgpICYmIHRoaXMuc2hvd0ljb24oKSlcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWNvbiB8fCB0aGlzLmljb24oKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXRWYWxpZEluaXRpYWxWYWx1ZXMoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgIHJldHVybiBnZXRWYWxpZEluaXRpYWxWYWx1ZXMoXG4gICAgICB0aGlzLmNvbnRyb2woKS52YWx1ZSxcbiAgICAgIHRoaXMudmFsdWUoKSxcbiAgICAgIHRoaXMub3B0aW9ucygpLFxuICAgICAgdGhpcy5pc011bHRpU2VsZWN0KCksXG4gICAgKTtcbiAgfVxuXG4gIHNldFNlbGVjdGlvbkNvbnRyb2woY29udHJvbFZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICghIWNvbnRyb2xWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdCgpKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnBhcnNlZE9wdGlvbnMoKS5maWx0ZXIoKHsgdmFsdWUgfSkgPT5cbiAgICAgICAgICBjb250cm9sVmFsdWUuaW5jbHVkZXModmFsdWUhKSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy5tYXAoKGVsZW1lbnQpID0+IGAgJHtlbGVtZW50LnNlbGVjdGVkVGV4dH1gKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5wYXJzZWRPcHRpb25zKCkuZmluZChcbiAgICAgICAgKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGNvbnRyb2xWYWx1ZSxcbiAgICAgICk7XG4gICAgICBpZiAoISFpdGVtKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZShpdGVtPy5zZWxlY3RlZFRleHQpO1xuICAgICAgICBpZiAodGhpcy5zaG93SWNvbigpKSB0aGlzLnNlbGVjdGVkSWNvbiA9IGl0ZW0uaWNvbjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgaWYgKHRoaXMuc2hvd0ljb24oKSkgdGhpcy5zZWxlY3RlZEljb24gPSB0aGlzLmljb24oKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkVmFsdWUoZWxlbWVudDogSURyb3Bkb3duSXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTXVsdGlTZWxlY3QoKSkge1xuICAgICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoXG4gICAgICAgIGdldFNlbGVjdGVkVmFsdWVzKHRoaXMuY29udHJvbCgpLnZhbHVlLCBlbGVtZW50LnZhbHVlISksXG4gICAgICApO1xuICAgIH0gZWxzZSB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZShlbGVtZW50LnZhbHVlISk7XG5cbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmNvbnRyb2woKS52YWx1ZSk7XG4gIH1cblxuICBvcGVuTGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgY29udGVudDogQm1iRHJvcGRvd25Db250ZW50Q29tcG9uZW50LFxuICAgICAgdGFyZ2V0UmVmOiB0aGlzLmNvbnRlbnRSZWY/Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICBmaXhTaXplVG9SZWY6IHRydWUsXG4gICAgICBzaG93QmFja2Ryb3A6IGZhbHNlLFxuICAgICAgaW5wdXRDb250ZXh0OiB7XG4gICAgICAgIHNlbGVjdGVkT3B0aW9uOiB0aGlzLmNvbnRyb2woKS52YWx1ZSxcbiAgICAgICAgaXRlbXM6IHRoaXMucGFyc2VkT3B0aW9ucygpLFxuICAgICAgICBpc0tleWJvYXJkRXZlbnQ6IHRoaXMuaXNLZXlib2FyZEV2ZW50LFxuICAgICAgICBlbmFibGVGaWx0ZXI6IHRoaXMuaXNGaWx0ZXJhYmxlKCksXG4gICAgICB9LFxuICAgICAgZm9jdXNPbk9wZW46IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLnByb2plY3Rpb25TZXJ2aWNlLm9wZW5Db250ZW50KGRhdGEpO1xuICB9XG5cbiAgLy8gS2V5Ym9hcmRzIGV2ZW50c1xuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlib2FyZHMgPSBbJyAnLCAnQXJyb3dEb3duJywgJ0Rvd24nXTtcblxuICAgIGlmIChrZXlib2FyZHMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgdGhpcy5vcGVuTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVZhbGlkaXR5KCk6IHZvaWQge1xuICAgIGhhbmRsZVZhbGlkaXR5KHRoaXMuY29udHJvbCgpKTtcbiAgfVxuXG4gIGdldCBzaG91bGRTaG93RXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNob3dFcnJvcih0aGlzLmNvbnRyb2woKSk7XG4gIH1cbn1cbiIsIjxibWItaW5wdXQtdmFsaWRhdG9yXG4gIGNsYXNzPVwiYm1iX2Ryb3Bkb3duXCJcbiAgW2lucHV0SWRdPVwiaW5wdXRJZCgpXCJcbiAgW25hbWVdPVwibmFtZSgpXCJcbiAgW3ZhbHVlXT1cImdldFZhbGlkSW5pdGlhbFZhbHVlcygpXCJcbiAgW2xhYmVsXT1cImxhYmVsKCkhXCJcbiAgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2UoKVwiXG4gIFtoZWxwZXJNZXNzYWdlXT1cImhlbHBlclRleHQoKVwiXG4gIFtpc1JlcXVpcmVkXT1cInJlcXVpcmVkKClcIlxuICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCJcbiAgW3Nob3dFcnJvcl09XCJzaG91bGRTaG93RXJyb3JcIlxuICBbdG9vbHRpcF09XCJ0b29sdGlwKClcIlxuICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbigpXCJcbiAgW2N1c3RvbVZhbGlkYXRpb25dPVwiY3VzdG9tVmFsaWRhdGlvbigpXCJcbj5cbiAgPGRpdiAjY29udGVudERpdj5cbiAgICA8Ym1iLWlucHV0LWNvbnRlbnRcbiAgICAgIGNsYXNzPVwiYm1iX2Ryb3Bkb3duLWZpZWxkXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFtpbnB1dElkXT1cImlucHV0SWQoKVwiXG4gICAgICBbbmFtZV09XCJuYW1lKClcIlxuICAgICAgW2ljb25dPVwiZ2V0SWNvbigpXCJcbiAgICAgIFtjb250cm9sXT1cInNlbGVjdGlvbkNvbnRyb2xcIlxuICAgICAgW2lzUmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICBbaXNFcnJvcl09XCJzaG91bGRTaG93RXJyb3JcIlxuICAgICAgKGNsaWNrKT1cIm9wZW5MaXN0KClcIlxuICAgICAgKG9uS2V5RG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAob25CbHVyKT1cImhhbmRsZVZhbGlkaXR5KClcIlxuICAgICAgKG9uRm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21Db250ZW50PlxuICAgICAgICA8bGFiZWwgW2h0bWxGb3JdPVwiaW5wdXRJZCgpXCI+XG4gICAgICAgICAgPGJtYi1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImJtYl9maWVsZC1hY3Rpb25zXCJcbiAgICAgICAgICAgIGljb249XCJrZXlib2FyZF9hcnJvd19kb3duXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTGlzdCgpXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2JtYi1pbnB1dC1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGlucHV0XG4gICAgaGlkZGVuXG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtpZF09XCJnZXRVVUlEKCdpZCcpXCJcbiAgICBbbmFtZV09XCJuYW1lKClcIlxuICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sKClcIlxuICAvPlxuPC9ibWItaW5wdXQtdmFsaWRhdG9yPlxuIl19
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIscUJBQXFCLEdBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFNBQVMsR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxN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QUM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBbE1VLG9CQUFvQjttR0FBcEIsb0JBQW9CLHFtR0MvRGpDLDA2Q0FvREEsd1JEQUksWUFBWSwrQkFDWixnQkFBZ0IsNkpBQ2hCLG1CQUFtQiwwa0JBQ25CLDBCQUEwQix1Y0FDMUIsd0JBQXdCOzs0RkFPZixvQkFBb0I7a0JBZmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLHdCQUF3QjtxQkFDekIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7Z0dBMENNLFVBQVU7c0JBQXBELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBtb2RlbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBjb21wdXRlZCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgY29udmVydExpc3RUb1NlbGVjdExpc3QsXG4gIGdldFNlbGVjdGVkVmFsdWVzLFxuICBnZXRWYWxpZEluaXRpYWxWYWx1ZXMsXG59IGZyb20gJy4uLy4uL3V0aWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7XG4gIElCbWJJbnB1dEVycm9yLFxuICBJQm1iSW5wdXRUb29sdGlwUG9zaXRpb24sXG59IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL3V0aWxzL2JtYi1kcm9wZG93bi1jb250ZW50L2JtYi1kcm9wZG93bi1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC1jb250ZW50L2JtYi1pbnB1dC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQge1xuICBhc3NpZ25OZXdGb3JtQ29udHJvbCxcbiAgaGFuZGxlVmFsaWRpdHksXG4gIG5ld0Zvcm1Db250cm9sQnlUeXBlLFxuICBzaG93RXJyb3IsXG59IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1Db250cm9sJztcbmltcG9ydCB7IEJtYklucHV0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC12YWxpZGF0b3IvYm1iLWlucHV0LXZhbGlkYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iUHJvamVjdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdGlvbi9wcm9qZWN0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElCbWJEcm9wZG93bkl0ZW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHNlbGVjdGVkVGV4dD86IHN0cmluZzsgLy9pbnRlcm5hbFxuICBpY29uPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYm1iLWRyb3Bkb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCbWJJY29uQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQm1iSW5wdXRWYWxpZGF0b3JDb21wb25lbnQsXG4gICAgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wZG93bi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHNob3dJY29uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xuICBpY29uID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXSB8IElCbWJEcm9wZG93bkl0ZW1bXT4oW10pO1xuICBoZWxwZXJUZXh0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGVycm9yTWVzc2FnZSA9IGlucHV0PHN0cmluZyB8IElCbWJJbnB1dEVycm9yPignJyk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XG4gIHByZWZlcnJlZE9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBpc011bHRpU2VsZWN0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICB0b29sdGlwID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PElCbWJJbnB1dFRvb2x0aXBQb3NpdGlvbj4oe1xuICAgIGFsaWduOiAnYWJvdmUnLFxuICAgIGp1c3RpZnk6ICdiZWZvcmUnLFxuICB9KTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHZhbHVlID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCcnKTtcbiAgaXNGaWx0ZXJhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpbnB1dElkID0gaW5wdXQ8c3RyaW5nPih0aGlzLm5hbWUoKSk7XG4gIGN1c3RvbVZhbGlkYXRpb24gPSBpbnB1dDxWYWxpZGF0b3JGbj4oKTtcbiAgY3VzdG9tRmlsdGVyRnVuY3Rpb24gPSBpbnB1dDxcbiAgICAoKGl0ZW06IElEcm9wZG93bkl0ZW0sIGZpbHRlcjogc3RyaW5nKSA9PiBib29sZWFuKSB8IG51bGxcbiAgPihudWxsKTtcblxuICBjb250cm9sID0gbW9kZWw8Rm9ybUNvbnRyb2w+KG5ld0Zvcm1Db250cm9sQnlUeXBlKCkpO1xuXG4gIG9uVmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICBvbkZvY3VzID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgdXVpZDogc3RyaW5nID0gZ2V0VVVJRCgpO1xuICBpc01vZGFsT3BlbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgc2VsZWN0aW9uQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobmV3IEZvcm1Db250cm9sKCkpO1xuICBzZWxlY3RlZEljb246IHN0cmluZyA9ICcnO1xuICBpc0tleWJvYXJkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNDb250cm9sTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJzZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbml0T3B0aW9ucyh0aGlzLm9wdGlvbnMoKSkpO1xuICBzZWxlY3RlZEl0ZW06IElEcm9wZG93bkl0ZW0gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCdjb250ZW50RGl2JywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudFJlZiE6IEVsZW1lbnRSZWY8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3Rpb25TZXJ2aWNlOiBCbWJQcm9qZWN0aW9uQ29udGVudFNlcnZpY2UsXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCgpKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0KGFzc2lnbk5ld0Zvcm1Db250cm9sKHRoaXMubmFtZSgpLCB0aGlzLmNvbnRyb2woKSkhKTtcbiAgICAgIHRoaXMuaXNDb250cm9sTnVsbCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzTXVsdGlTZWxlY3QoKSAmJiBBcnJheS5pc0FycmF5KHRoaXMuY29udHJvbCgpPy52YWx1ZSkpIHtcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKCcnKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2woKVxuICAgICAgPy52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5nZXRWYWxpZEluaXRpYWxWYWx1ZXMoKSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkNvbnRyb2wodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udHJvbCgpICE9PSBudWxsKSB7XG4gICAgICBpZiAoY2hhbmdlc1snb3B0aW9ucyddKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKHRoaXMuZ2V0VmFsaWRJbml0aWFsVmFsdWVzKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGluaXRPcHRpb25zKGxpc3Q6IHN0cmluZ1tdIHwgSUJtYkRyb3Bkb3duSXRlbVtdKTogSURyb3Bkb3duSXRlbVtdIHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IGNvbnZlcnRMaXN0VG9TZWxlY3RMaXN0KFxuICAgICAgbGlzdCxcbiAgICAgIHRoaXMuaWNvbigpLFxuICAgICAgdGhpcy5zaG93SWNvbigpLFxuICAgICk7XG5cbiAgICBsZXQgcGFyc2VkSXRlbXMgPSBuZXdJdGVtcy5tYXAoKGVsZW1lbnQ6IElEcm9wZG93bkl0ZW0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgIGljb246ICF0aGlzLmlzTXVsdGlTZWxlY3QoKSAmJiB0aGlzLnNob3dJY29uKCkgPyBlbGVtZW50Lmljb24hIDogJycsXG4gICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShlbGVtZW50KTtcbiAgICAgICAgICB0aGlzLnByb2plY3Rpb25TZXJ2aWNlLmNsb3NlQ29udGVudCgpO1xuICAgICAgICB9LFxuICAgICAgfSBhcyBJRHJvcGRvd25JdGVtO1xuICAgIH0pO1xuXG4gICAgaWYgKCEhdGhpcy5wcmVmZXJyZWRPcHRpb25zKCkubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwcmVmZXJyZWRJdGVtczogSURyb3Bkb3duSXRlbVtdID0gcGFyc2VkSXRlbXMuZmlsdGVyKChlbGVtZW50KSA9PlxuICAgICAgICB0aGlzLnByZWZlcnJlZE9wdGlvbnMoKS5pbmNsdWRlcyhlbGVtZW50LnZhbHVlISksXG4gICAgICApO1xuXG4gICAgICBwYXJzZWRJdGVtcyA9IFsuLi5uZXcgU2V0KFsuLi5wcmVmZXJyZWRJdGVtcywgLi4ucGFyc2VkSXRlbXNdKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlZEl0ZW1zO1xuICB9XG5cbiAgaGFuZGxlRm9jdXModmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm9uRm9jdXMuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBnZXRVVUlEKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25hbWV9XyR7dGhpcy5uYW1lKCl9XyR7dGhpcy51dWlkfWA7XG4gIH1cblxuICBnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzTXVsdGlTZWxlY3QoKSAmJiB0aGlzLnNob3dJY29uKCkpXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEljb24gfHwgdGhpcy5pY29uKCk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0VmFsaWRJbml0aWFsVmFsdWVzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZ2V0VmFsaWRJbml0aWFsVmFsdWVzKFxuICAgICAgdGhpcy5jb250cm9sKCkudmFsdWUsXG4gICAgICB0aGlzLnZhbHVlKCksXG4gICAgICB0aGlzLm9wdGlvbnMoKSxcbiAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdCgpLFxuICAgICk7XG4gIH1cblxuICBzZXRTZWxlY3Rpb25Db250cm9sKGNvbnRyb2xWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoISFjb250cm9sVmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmlzTXVsdGlTZWxlY3QoKSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5wYXJzZWRPcHRpb25zKCkuZmlsdGVyKCh7IHZhbHVlIH0pID0+XG4gICAgICAgICAgY29udHJvbFZhbHVlLmluY2x1ZGVzKHZhbHVlISksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sLnNldFZhbHVlKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMubWFwKChlbGVtZW50KSA9PiBgICR7ZWxlbWVudC5zZWxlY3RlZFRleHR9YCksXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMucGFyc2VkT3B0aW9ucygpLmZpbmQoXG4gICAgICAgICh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBjb250cm9sVmFsdWUsXG4gICAgICApO1xuICAgICAgaWYgKCEhaXRlbSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuc2V0VmFsdWUoaXRlbT8uc2VsZWN0ZWRUZXh0KTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0ljb24oKSkgdGhpcy5zZWxlY3RlZEljb24gPSBpdGVtLmljb247XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIGlmICh0aGlzLnNob3dJY29uKCkpIHRoaXMuc2VsZWN0ZWRJY29uID0gdGhpcy5pY29uKCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZFZhbHVlKGVsZW1lbnQ6IElEcm9wZG93bkl0ZW0pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0KCkpIHtcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKFxuICAgICAgICBnZXRTZWxlY3RlZFZhbHVlcyh0aGlzLmNvbnRyb2woKS52YWx1ZSwgZWxlbWVudC52YWx1ZSEpLFxuICAgICAgKTtcbiAgICB9IGVsc2UgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoZWxlbWVudC52YWx1ZSEpO1xuXG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodGhpcy5jb250cm9sKCkudmFsdWUpO1xuICB9XG5cbiAgb3Blbkxpc3QoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGNvbnRlbnQ6IEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCxcbiAgICAgIHRhcmdldFJlZjogdGhpcy5jb250ZW50UmVmPy5uYXRpdmVFbGVtZW50LFxuICAgICAgZml4U2l6ZVRvUmVmOiB0cnVlLFxuICAgICAgc2hvd0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgIGlucHV0Q29udGV4dDoge1xuICAgICAgICBzZWxlY3RlZE9wdGlvbjogdGhpcy5jb250cm9sKCkudmFsdWUsXG4gICAgICAgIGl0ZW1zOiB0aGlzLnBhcnNlZE9wdGlvbnMoKSxcbiAgICAgICAgaXNLZXlib2FyZEV2ZW50OiB0aGlzLmlzS2V5Ym9hcmRFdmVudCxcbiAgICAgICAgZW5hYmxlRmlsdGVyOiB0aGlzLmlzRmlsdGVyYWJsZSgpLFxuICAgICAgICBjdXN0b21GaWx0ZXJGdW5jdGlvbjogdGhpcy5jdXN0b21GaWx0ZXJGdW5jdGlvbigpLFxuICAgICAgfSxcbiAgICAgIGZvY3VzT25PcGVuOiB0cnVlLFxuICAgIH07XG4gICAgdGhpcy5wcm9qZWN0aW9uU2VydmljZS5vcGVuQ29udGVudChkYXRhKTtcbiAgfVxuXG4gIC8vIEtleWJvYXJkcyBldmVudHNcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5Ym9hcmRzID0gWycgJywgJ0Fycm93RG93bicsICdEb3duJ107XG5cbiAgICBpZiAoa2V5Ym9hcmRzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIHRoaXMub3Blbkxpc3QoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVWYWxpZGl0eSgpOiB2b2lkIHtcbiAgICBoYW5kbGVWYWxpZGl0eSh0aGlzLmNvbnRyb2woKSk7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzaG93RXJyb3IodGhpcy5jb250cm9sKCkpO1xuICB9XG59XG4iLCI8Ym1iLWlucHV0LXZhbGlkYXRvclxuICBjbGFzcz1cImJtYl9kcm9wZG93blwiXG4gIFtpbnB1dElkXT1cImlucHV0SWQoKVwiXG4gIFtuYW1lXT1cIm5hbWUoKVwiXG4gIFt2YWx1ZV09XCJnZXRWYWxpZEluaXRpYWxWYWx1ZXMoKVwiXG4gIFtsYWJlbF09XCJsYWJlbCgpIVwiXG4gIFtlcnJvck1lc3NhZ2VdPVwiZXJyb3JNZXNzYWdlKClcIlxuICBbaGVscGVyTWVzc2FnZV09XCJoZWxwZXJUZXh0KClcIlxuICBbaXNSZXF1aXJlZF09XCJyZXF1aXJlZCgpXCJcbiAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFtjb250cm9sXT1cImNvbnRyb2woKVwiXG4gIFtzaG93RXJyb3JdPVwic2hvdWxkU2hvd0Vycm9yXCJcbiAgW3Rvb2x0aXBdPVwidG9vbHRpcCgpXCJcbiAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24oKVwiXG4gIFtjdXN0b21WYWxpZGF0aW9uXT1cImN1c3RvbVZhbGlkYXRpb24oKVwiXG4+XG4gIDxkaXYgI2NvbnRlbnREaXY+XG4gICAgPGJtYi1pbnB1dC1jb250ZW50XG4gICAgICBjbGFzcz1cImJtYl9kcm9wZG93bi1maWVsZFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbaW5wdXRJZF09XCJpbnB1dElkKClcIlxuICAgICAgW25hbWVdPVwibmFtZSgpXCJcbiAgICAgIFtpY29uXT1cImdldEljb24oKVwiXG4gICAgICBbY29udHJvbF09XCJzZWxlY3Rpb25Db250cm9sXCJcbiAgICAgIFtpc1JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgW2lzRXJyb3JdPVwic2hvdWxkU2hvd0Vycm9yXCJcbiAgICAgIChjbGljayk9XCJvcGVuTGlzdCgpXCJcbiAgICAgIChvbktleURvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKG9uQmx1cik9XCJoYW5kbGVWYWxpZGl0eSgpXCJcbiAgICAgIChvbkZvY3VzKT1cImhhbmRsZUZvY3VzKCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tQ29udGVudD5cbiAgICAgICAgPGxhYmVsIFtodG1sRm9yXT1cImlucHV0SWQoKVwiPlxuICAgICAgICAgIDxibWItaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJibWJfZmllbGQtYWN0aW9uc1wiXG4gICAgICAgICAgICBpY29uPVwia2V5Ym9hcmRfYXJyb3dfZG93blwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3Blbkxpc3QoKVwiXG4gICAgICAgICAgICBbc2l6ZV09XCIyNFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9ibWItaW5wdXQtY29udGVudD5cbiAgPC9kaXY+XG4gIDxpbnB1dFxuICAgIGhpZGRlblxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbaWRdPVwiZ2V0VVVJRCgnaWQnKVwiXG4gICAgW25hbWVdPVwibmFtZSgpXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbCgpXCJcbiAgLz5cbjwvYm1iLWlucHV0LXZhbGlkYXRvcj5cbiJdfQ==
|