igniteui-angular 18.2.4 → 18.2.6
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/calendar/common/calendar-view.directive.mjs +3 -2
- package/esm2022/lib/calendar/common/model.mjs +3 -2
- package/esm2022/lib/combo/combo.component.mjs +3 -3
- package/esm2022/lib/core/utils.mjs +23 -11
- package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +20 -22
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +5 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +5 -2
- package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +1 -1
- package/esm2022/lib/grids/grid-base.directive.mjs +7 -2
- package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +6 -8
- package/esm2022/lib/services/animation/angular-animation-player.mjs +4 -2
- package/esm2022/lib/tabs/tabs/tab-header.component.mjs +7 -5
- package/esm2022/lib/tabs/tabs/tabs.component.mjs +14 -10
- package/fesm2022/igniteui-angular.mjs +86 -61
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/tree/_tree-theme.scss +7 -1
- package/lib/core/styles/themes/generators/_base.scss +3 -2
- package/lib/core/styles/themes/generators/_bootstrap.scss +9 -6
- package/lib/core/styles/themes/generators/_fluent.scss +9 -6
- package/lib/core/styles/themes/generators/_indigo.scss +9 -6
- package/lib/directives/drag-drop/drag-drop.directive.d.ts +1 -0
- package/lib/grids/grid-base.directive.d.ts +1 -0
- package/lib/grids/pivot-grid/pivot-grid.component.d.ts +0 -1
- package/lib/tabs/tabs/tabs.component.d.ts +3 -1
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -5,6 +5,7 @@ import { IGX_CALENDAR_VIEW_ITEM, } from "../calendar.directives";
|
|
|
5
5
|
import { CalendarDay } from "../common/model";
|
|
6
6
|
import { getNextActiveDate, isDateInRanges } from "./helpers";
|
|
7
7
|
import { DateRangeType } from "../../core/dates";
|
|
8
|
+
import { isDate } from "../../core/utils";
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export var Direction;
|
|
10
11
|
(function (Direction) {
|
|
@@ -28,7 +29,7 @@ export class IgxCalendarViewDirective {
|
|
|
28
29
|
* @memberof IgxYearsViewComponent
|
|
29
30
|
*/
|
|
30
31
|
set date(value) {
|
|
31
|
-
if (!(value
|
|
32
|
+
if (!isDate(value))
|
|
32
33
|
return;
|
|
33
34
|
this._date = value;
|
|
34
35
|
}
|
|
@@ -297,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
297
298
|
type: HostListener,
|
|
298
299
|
args: ["blur"]
|
|
299
300
|
}] } });
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdmlldy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY29tbW9uL2NhbGVuZGFyLXZpZXcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUVaLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUNILHNCQUFzQixHQUd6QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFakQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNqQix5Q0FBUSxDQUFBO0lBQ1IsMENBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNoRCxjQUFjLENBQ2pCLENBQUM7QUFZRixNQUFNLE9BQWdCLHdCQUF3QjtJQVMxQyxJQUNjLGdCQUFnQjtRQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUVqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMs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QUFRLENBQUM7Z0JBYWhDLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVkvQixXQUFXO3NCQURwQixZQUFZO3VCQUFDLE9BQU87Z0JBU1gsVUFBVTtzQkFEbkIsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgRGlyZWN0aXZlLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIEluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IG5vb3AgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICAgIElHWF9DQUxFTkRBUl9WSUVXX0lURU0sXG4gICAgSWd4Q2FsZW5kYXJNb250aERpcmVjdGl2ZSxcbiAgICBJZ3hDYWxlbmRhclllYXJEaXJlY3RpdmUsXG59IGZyb20gXCIuLi9jYWxlbmRhci5kaXJlY3RpdmVzXCI7XG5pbXBvcnQgeyBDYWxlbmRhckRheSwgRGF5SW50ZXJ2YWwgfSBmcm9tIFwiLi4vY29tbW9uL21vZGVsXCI7XG5pbXBvcnQgeyBnZXROZXh0QWN0aXZlRGF0ZSwgaXNEYXRlSW5SYW5nZXMgfSBmcm9tIFwiLi9oZWxwZXJzXCI7XG5pbXBvcnQgeyBEYXRlUmFuZ2VUeXBlIH0gZnJvbSBcIi4uLy4uL2NvcmUvZGF0ZXNcIjtcblxuZXhwb3J0IGVudW0gRGlyZWN0aW9uIHtcbiAgICBORVhUID0gMSxcbiAgICBQUkVWID0gLTEsXG59XG5cbmV4cG9ydCBjb25zdCBEQVlfSU5URVJWQUxfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF5SW50ZXJ2YWw+KFxuICAgIFwiREFZX0lOVEVSVkFMXCIsXG4pO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQEhvc3RCaW5kaW5nKFwiYXR0ci5yb2xlXCIpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm9sZSA9ICdncmlkJztcblxuICAgIEBIb3N0QmluZGluZyhcImF0dHIudGFiSW5kZXhcIilcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0YWJJbmRleCA9IDA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hY3RpdmVEZXNjZW5kYW50JylcbiAgICBwcm90ZWN0ZWQgZ2V0IGFjdGl2ZURlc2NlbmRhbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkluZGV4ID09PSAtMSkgcmV0dXJuO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSB2aWV3IHNob3VsZCBiZSByZW5kZXJlZFxuICAgICAqIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIGFuZCBmb3JtYXQsIGlmIGFueS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZm9ybWF0VmlldzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgc3R5bGVzIHRvIHRoZSBhY3RpdmUgaXRlbSBvbiB2aWV3IGZvY3VzLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBzaG93QWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIGEgc2VsZWN0aW9uIGlzIG1hZGUgaW4gdGhlIHZpZXcuXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlIHRoZSBgZGF0ZWAgcHJvcGVydHkgaW4gdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAbWVtYmVyb2YgSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiBhIHBhZ2UgY2hhbmdlcyBpbiB0aGUgdmlldy5cbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdGhlIGBkYXRlYCBwcm9wZXJ0eSBpbiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBtZW1iZXJvZiBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmVcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGFjdGl2ZSBkYXRlIGhhcyBjaGFuZ2VkLlxuICAgICAqIEBtZW1iZXJvZiBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmVcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhY3RpdmVEYXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkcmVuKElHWF9DQUxFTkRBUl9WSUVXX0lURU0sIHsgcmVhZDogSUdYX0NBTEVOREFSX1ZJRVdfSVRFTSB9KVxuICAgIHB1YmxpYyB2aWV3SXRlbXM6IFF1ZXJ5TGlzdDxcbiAgICAgICAgSWd4Q2FsZW5kYXJNb250aERpcmVjdGl2ZSB8IElneENhbGVuZGFyWWVhckRpcmVjdGl2ZVxuICAgID47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9mb3JtYXR0ZXI6IEludGwuRGF0ZVRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9sb2NhbGUgPSBcImVuXCI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogRGF0ZSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIHNlbGVjdGVkIGRhdGUgb2YgdGhlIHZpZXcuXG4gICAgICogQnkgZGVmYXVsdCBpdCdzIHRoZSBjdXJyZW50IGRhdGUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBkYXRlID0gdGhpcy52aWV3LmRhdGU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4WWVhcnNWaWV3Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGRhdGUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuX2RhdGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGBsb2NhbGVgIG9mIHRoZSB2aWV3LlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYFwiZW5cImAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBsb2NhbGUgPSB0aGlzLnZpZXcubG9jYWxlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneENhbGVuZGFyVmlld0RpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBsb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgbG9jYWxlYCBvZiB0aGUgdmlldy5cbiAgICAgKiBFeHBlY3RzIGEgdmFsaWQgQkNQIDQ3IGxhbmd1YWdlIHRhZy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBcImVuXCJgLlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneENhbGVuZGFyVmlld0RpcmVjdGl2ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgbG9jYWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaW5pdEZvcm1hdHRlcigpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoREFZX0lOVEVSVkFMX1RPS0VOKSBwcm90ZWN0ZWQgZGF5SW50ZXJ2YWw/OiBEYXlJbnRlcnZhbCkge1xuICAgICAgICB0aGlzLmluaXRGb3JtYXR0ZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uYXJyb3dkb3duXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25LZXlkb3duQXJyb3dEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyhldmVudCwgRGlyZWN0aW9uLk5FWFQsIDMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKFwia2V5ZG93bi5hcnJvd3VwXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25LZXlkb3duQXJyb3dVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oZXZlbnQsIERpcmVjdGlvbi5QUkVWLCAzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uYXJyb3dyaWdodFwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5ZG93bkFycm93UmlnaHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvKGV2ZW50LCBEaXJlY3Rpb24uTkVYVCwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmFycm93bGVmdFwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5ZG93bkFycm93TGVmdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oZXZlbnQsIERpcmVjdGlvbi5QUkVWLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uaG9tZVwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5ZG93bkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5yYW5nZS5hdCgwKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlQ2hhbmdlZC5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmVuZFwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5ZG93bkVuZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLnJhbmdlLmF0KC0xKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlQ2hhbmdlZC5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmVudGVyXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25LZXlkb3duRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5kYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImZvY3VzXCIpXG4gICAgcHJvdGVjdGVkIGhhbmRsZUZvY3VzKCkge1xuICAgICAgICB0aGlzLnNob3dBY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKFwiYmx1clwiKVxuICAgIHByb3RlY3RlZCBoYW5kbGVCbHVyKCkge1xuICAgICAgICB0aGlzLnNob3dBY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdERhdGUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5kYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2OiBEYXRlKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG5hdmlnYXRlVG8oXG4gICAgICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuICAgICAgICBkaXJlY3Rpb246IERpcmVjdGlvbixcbiAgICAgICAgZGVsdGE6IG51bWJlcixcbiAgICApIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgZGF0ZSA9IGdldE5leHRBY3RpdmVEYXRlKFxuICAgICAgICAgICAgQ2FsZW5kYXJEYXkuZnJvbSh0aGlzLmRhdGUpLmFkZCh0aGlzLmRheUludGVydmFsLCBkaXJlY3Rpb24gKiBkZWx0YSksXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBvdXRPZlJhbmdlID0gIWlzRGF0ZUluUmFuZ2VzKGRhdGUsIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEYXRlUmFuZ2VUeXBlLkJldHdlZW4sXG4gICAgICAgICAgICAgICAgZGF0ZVJhbmdlOiBbdGhpcy5yYW5nZS5hdCgwKSwgdGhpcy5yYW5nZS5hdCgtMSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgICAgaWYgKG91dE9mUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChkYXRlLm5hdGl2ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRhdGUgPSBkYXRlLm5hdGl2ZTtcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlQ2hhbmdlZC5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0Rm9ybWF0dGVyKCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCByYW5nZSgpOiBEYXRlW107XG59XG4iXX0=
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdmlldy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY29tbW9uL2NhbGVuZGFyLXZpZXcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUVaLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUNILHNCQUFzQixHQUd6QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRTFDLE1BQU0sQ0FBTixJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDakIseUNBQVEsQ0FBQTtJQUNSLDBDQUFTLENBQUE7QUFDYixDQUFDLEVBSFcsU0FBUyxLQUFULFNBQVMsUUFHcEI7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FDaEQsY0FBYyxDQUNqQixDQUFDO0FBWUYsTUFBTSxPQUFnQix3QkFBd0I7SUFTMUMsSUFDYyxnQkFBZ0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FB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QUFZO3NCQURsQixZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhaEMsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBWS9CLFdBQVc7c0JBRHBCLFlBQVk7dUJBQUMsT0FBTztnQkFTWCxVQUFVO3NCQURuQixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gICAgSUdYX0NBTEVOREFSX1ZJRVdfSVRFTSxcbiAgICBJZ3hDYWxlbmRhck1vbnRoRGlyZWN0aXZlLFxuICAgIElneENhbGVuZGFyWWVhckRpcmVjdGl2ZSxcbn0gZnJvbSBcIi4uL2NhbGVuZGFyLmRpcmVjdGl2ZXNcIjtcbmltcG9ydCB7IENhbGVuZGFyRGF5LCBEYXlJbnRlcnZhbCB9IGZyb20gXCIuLi9jb21tb24vbW9kZWxcIjtcbmltcG9ydCB7IGdldE5leHRBY3RpdmVEYXRlLCBpc0RhdGVJblJhbmdlcyB9IGZyb20gXCIuL2hlbHBlcnNcIjtcbmltcG9ydCB7IERhdGVSYW5nZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRlc1wiO1xuaW1wb3J0IHsgaXNEYXRlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdXRpbHNcIjtcblxuZXhwb3J0IGVudW0gRGlyZWN0aW9uIHtcbiAgICBORVhUID0gMSxcbiAgICBQUkVWID0gLTEsXG59XG5cbmV4cG9ydCBjb25zdCBEQVlfSU5URVJWQUxfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF5SW50ZXJ2YWw+KFxuICAgIFwiREFZX0lOVEVSVkFMXCIsXG4pO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQEhvc3RCaW5kaW5nKFwiYXR0ci5yb2xlXCIpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm9sZSA9ICdncmlkJztcblxuICAgIEBIb3N0QmluZGluZyhcImF0dHIudGFiSW5kZXhcIilcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0YWJJbmRleCA9IDA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hY3RpdmVEZXNjZW5kYW50JylcbiAgICBwcm90ZWN0ZWQgZ2V0IGFjdGl2ZURlc2NlbmRhbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhYkluZGV4ID09PSAtMSkgcmV0dXJuO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuZ2V0VGltZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSB2aWV3IHNob3VsZCBiZSByZW5kZXJlZFxuICAgICAqIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIGFuZCBmb3JtYXQsIGlmIGFueS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZm9ybWF0VmlldzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgc3R5bGVzIHRvIHRoZSBhY3RpdmUgaXRlbSBvbiB2aWV3IGZvY3VzLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBzaG93QWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIGEgc2VsZWN0aW9uIGlzIG1hZGUgaW4gdGhlIHZpZXcuXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlIHRoZSBgZGF0ZWAgcHJvcGVydHkgaW4gdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAbWVtYmVyb2YgSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiBhIHBhZ2UgY2hhbmdlcyBpbiB0aGUgdmlldy5cbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdGhlIGBkYXRlYCBwcm9wZXJ0eSBpbiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBtZW1iZXJvZiBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmVcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGFjdGl2ZSBkYXRlIGhhcyBjaGFuZ2VkLlxuICAgICAqIEBtZW1iZXJvZiBJZ3hDYWxlbmRhclZpZXdEaXJlY3RpdmVcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhY3RpdmVEYXRlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkcmVuKElHWF9DQUxFTkRBUl9WSUVXX0lURU0sIHsgcmVhZDogSUdYX0NBTEVOREFSX1ZJRVdfSVRFTSB9KVxuICAgIHB1YmxpYyB2aWV3SXRlbXM6IFF1ZXJ5TGlzdDxcbiAgICAgICAgSWd4Q2FsZW5kYXJNb250aERpcmVjdGl2ZSB8IElneENhbGVuZGFyWWVhckRpcmVjdGl2ZVxuICAgID47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9mb3JtYXR0ZXI6IEludGwuRGF0ZVRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9sb2NhbGUgPSBcImVuXCI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogRGF0ZSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIHNlbGVjdGVkIGRhdGUgb2YgdGhlIHZpZXcuXG4gICAgICogQnkgZGVmYXVsdCBpdCdzIHRoZSBjdXJyZW50IGRhdGUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBkYXRlID0gdGhpcy52aWV3LmRhdGU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4WWVhcnNWaWV3Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGRhdGUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgaWYgKCFpc0RhdGUodmFsdWUpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5fZGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYGxvY2FsZWAgb2YgdGhlIHZpZXcuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgXCJlblwiYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGxvY2FsZSA9IHRoaXMudmlldy5sb2NhbGU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGxvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBsb2NhbGVgIG9mIHRoZSB2aWV3LlxuICAgICAqIEV4cGVjdHMgYSB2YWxpZCBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYFwiZW5cImAuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q2FsZW5kYXJWaWV3RGlyZWN0aXZlXG4gICAgICovXG4gICAgcHVibGljIHNldCBsb2NhbGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybWF0dGVyKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChEQVlfSU5URVJWQUxfVE9LRU4pIHByb3RlY3RlZCBkYXlJbnRlcnZhbD86IERheUludGVydmFsKSB7XG4gICAgICAgIHRoaXMuaW5pdEZvcm1hdHRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKFwia2V5ZG93bi5hcnJvd2Rvd25cIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBvbktleWRvd25BcnJvd0Rvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvKGV2ZW50LCBEaXJlY3Rpb24uTkVYVCwgMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duLmFycm93dXBcIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBvbktleWRvd25BcnJvd1VwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyhldmVudCwgRGlyZWN0aW9uLlBSRVYsIDMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKFwia2V5ZG93bi5hcnJvd3JpZ2h0XCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25LZXlkb3duQXJyb3dSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG8oZXZlbnQsIERpcmVjdGlvbi5ORVhULCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uYXJyb3dsZWZ0XCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25LZXlkb3duQXJyb3dMZWZ0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUbyhldmVudCwgRGlyZWN0aW9uLlBSRVYsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKFwia2V5ZG93bi5ob21lXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25LZXlkb3duSG9tZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLnJhbmdlLmF0KDApO1xuICAgICAgICB0aGlzLmFjdGl2ZURhdGVDaGFuZ2VkLmVtaXQodGhpcy5kYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uZW5kXCIsIFtcIiRldmVudFwiXSlcbiAgICBwdWJsaWMgb25LZXlkb3duRW5kKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuZGF0ZSA9IHRoaXMucmFuZ2UuYXQoLTEpO1xuICAgICAgICB0aGlzLmFjdGl2ZURhdGVDaGFuZ2VkLmVtaXQodGhpcy5kYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uZW50ZXJcIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBvbktleWRvd25FbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5kYXRlKTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLmRhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKFwiZm9jdXNcIilcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRm9jdXMoKSB7XG4gICAgICAgIHRoaXMuc2hvd0FjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoXCJibHVyXCIpXG4gICAgcHJvdGVjdGVkIGhhbmRsZUJsdXIoKSB7XG4gICAgICAgIHRoaXMuc2hvd0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0RGF0ZSh2YWx1ZTogRGF0ZSkge1xuICAgICAgICB0aGlzLmRhdGUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5kYXRlKTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLmRhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHY6IERhdGUpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbmF2aWdhdGVUbyhcbiAgICAgICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICAgICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uLFxuICAgICAgICBkZWx0YTogbnVtYmVyLFxuICAgICkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBjb25zdCBkYXRlID0gZ2V0TmV4dEFjdGl2ZURhdGUoXG4gICAgICAgICAgICBDYWxlbmRhckRheS5mcm9tKHRoaXMuZGF0ZSkuYWRkKHRoaXMuZGF5SW50ZXJ2YWwsIGRpcmVjdGlvbiAqIGRlbHRhKSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG91dE9mUmFuZ2UgPSAhaXNEYXRlSW5SYW5nZXMoZGF0ZSwgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IERhdGVSYW5nZVR5cGUuQmV0d2VlbixcbiAgICAgICAgICAgICAgICBkYXRlUmFuZ2U6IFt0aGlzLnJhbmdlLmF0KDApLCB0aGlzLnJhbmdlLmF0KC0xKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKTtcblxuICAgICAgICBpZiAob3V0T2ZSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KGRhdGUubmF0aXZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGF0ZSA9IGRhdGUubmF0aXZlO1xuICAgICAgICB0aGlzLmFjdGl2ZURhdGVDaGFuZ2VkLmVtaXQodGhpcy5kYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRGb3JtYXR0ZXIoKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHJhbmdlKCk6IERhdGVbXTtcbn1cbiJdfQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { isDate } from "../../core/utils";
|
|
1
2
|
export const daysInWeek = 7;
|
|
2
3
|
const millisecondsInDay = 86400000;
|
|
3
4
|
export function toCalendarDay(date) {
|
|
4
|
-
return date
|
|
5
|
+
return isDate(date) ? CalendarDay.from(date) : date;
|
|
5
6
|
}
|
|
6
7
|
function checkRollover(original, modified) {
|
|
7
8
|
return original.date !== modified.date
|
|
@@ -113,4 +114,4 @@ export class CalendarDay {
|
|
|
113
114
|
return `${this.native}`;
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY29tbW9uL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDO0FBRW5DLE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBa0I7SUFDNUMsT0FBTyxJQUFJLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEUsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLFFBQXFCLEVBQUUsUUFBcUI7SUFDL0QsT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJO1FBQ2xDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sT0FBTyxXQUFXO0lBR3BCLDhDQUE4QztJQUN2QyxNQUFNLEtBQUssS0FBSztRQUNuQixPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnRUFBZ0U7SUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFVO1FBQ3pCLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7U0FDdkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVksSUFBdUI7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QUFFLENBQUM7YUFDMUQsU0FBUyxDQUFDO1FBQ2YsTUFBTSxVQUFVLEdBQ1osQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBbUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFtQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNELENBQUM7SUFFTSxRQUFRO1FBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWRlZmluaXRpb25zICovXG5leHBvcnQgdHlwZSBEYXlQYXJhbWV0ZXIgPSBDYWxlbmRhckRheSB8IERhdGU7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyUmFuZ2VQYXJhbXMgPSB7XG4gICAgc3RhcnQ6IERheVBhcmFtZXRlcjtcbiAgICBlbmQ6IERheVBhcmFtZXRlciB8IG51bWJlcjtcbiAgICB1bml0PzogRGF5SW50ZXJ2YWw7XG59O1xuXG50eXBlIENhbGVuZGFyRGF5UGFyYW1zID0ge1xuICAgIHllYXI6IG51bWJlcjtcbiAgICBtb250aDogbnVtYmVyO1xuICAgIGRhdGU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBEYXlJbnRlcnZhbCA9IFwieWVhclwiIHwgXCJxdWFydGVyXCIgfCBcIm1vbnRoXCIgfCBcIndlZWtcIiB8IFwiZGF5XCI7XG5cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcbmNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbGVuZGFyRGF5KGRhdGU6IERheVBhcmFtZXRlcikge1xuICAgIHJldHVybiBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IENhbGVuZGFyRGF5LmZyb20oZGF0ZSkgOiBkYXRlO1xufVxuXG5mdW5jdGlvbiBjaGVja1JvbGxvdmVyKG9yaWdpbmFsOiBDYWxlbmRhckRheSwgbW9kaWZpZWQ6IENhbGVuZGFyRGF5KSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsLmRhdGUgIT09IG1vZGlmaWVkLmRhdGVcbiAgICAgICAgPyBtb2RpZmllZC5zZXQoeyBkYXRlOiAwIH0pXG4gICAgICAgIDogbW9kaWZpZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDYWxlbmRhckRheSB7XG4gICAgcHJpdmF0ZSBfZGF0ZSE6IERhdGU7XG5cbiAgICAvKiogQ29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgY3VycmVudCBkYXkuICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQgdG9kYXkoKSB7XG4gICAgICAgIHJldHVybiBDYWxlbmRhckRheS5mcm9tKG5ldyBEYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IENhbGVuZGFyRGF5IGluc3RhbmNlIGZyb20gYSBEYXRlIG9iamVjdC4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb20oZGF0ZTogRGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IENhbGVuZGFyRGF5KHtcbiAgICAgICAgICAgIHllYXI6IGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIG1vbnRoOiBkYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBkYXRlLmdldERhdGUoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoYXJnczogQ2FsZW5kYXJEYXlQYXJhbXMpIHtcbiAgICAgICAgdGhpcy5fZGF0ZSA9IG5ldyBEYXRlKGFyZ3MueWVhciwgYXJncy5tb250aCwgYXJncy5kYXRlID8/IDEpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGEgY29weSBvZiB0aGlzIGluc3RhbmNlLiAqL1xuICAgIHB1YmxpYyBjbG9uZSgpIHtcbiAgICAgICAgcmV0dXJuIENhbGVuZGFyRGF5LmZyb20odGhpcy5fZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSB3aXRoIHZhbHVlcyByZXBsYWNlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0KGFyZ3M6IFBhcnRpYWw8Q2FsZW5kYXJEYXlQYXJhbXM+KSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FsZW5kYXJEYXkoe1xuICAgICAgICAgICAgeWVhcjogYXJncy55ZWFyID8/IHRoaXMueWVhcixcbiAgICAgICAgICAgIG1vbnRoOiBhcmdzLm1vbnRoID8/IHRoaXMubW9udGgsXG4gICAgICAgICAgICBkYXRlOiBhcmdzLmRhdGUgPz8gdGhpcy5kYXRlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkKHVuaXQ6IERheUludGVydmFsLCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgc3dpdGNoICh1bml0KSB7XG4gICAgICAgICAgICBjYXNlIFwieWVhclwiOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5fZGF0ZS5zZXRGdWxsWWVhcihyZXN1bHQueWVhciArIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tSb2xsb3Zlcih0aGlzLCByZXN1bHQpO1xuICAgICAgICAgICAgY2FzZSBcInF1YXJ0ZXJcIjpcbiAgICAgICAgICAgICAgICByZXN1bHQuX2RhdGUuc2V0TW9udGgocmVzdWx0Lm1vbnRoICsgMyAqIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tSb2xsb3Zlcih0aGlzLCByZXN1bHQpO1xuICAgICAgICAgICAgY2FzZSBcIm1vbnRoXCI6XG4gICAgICAgICAgICAgICAgcmVzdWx0Ll9kYXRlLnNldE1vbnRoKHJlc3VsdC5tb250aCArIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tSb2xsb3Zlcih0aGlzLCByZXN1bHQpO1xuICAgICAgICAgICAgY2FzZSBcIndlZWtcIjpcbiAgICAgICAgICAgICAgICByZXN1bHQuX2RhdGUuc2V0RGF0ZShyZXN1bHQuZGF0ZSArIDcgKiB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgXCJkYXlcIjpcbiAgICAgICAgICAgICAgICByZXN1bHQuX2RhdGUuc2V0RGF0ZShyZXN1bHQuZGF0ZSArIHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVydmFsXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgdGhlIGRheSBvZiB0aGUgd2VlayAoU3VuZGF5ID0gMCkuICovXG4gICAgcHVibGljIGdldCBkYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlLmdldERheSgpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHRoZSBmdWxsIHllYXIuICovXG4gICAgcHVibGljIGdldCB5ZWFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHRoZSBtb250aC4gKi9cbiAgICBwdWJsaWMgZ2V0IG1vbnRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRNb250aCgpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHRoZSBkYXRlICovXG4gICAgcHVibGljIGdldCBkYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXREYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgdGhlIHRpbWVzdGFtcCBzaW5jZSBlcG9jaCBpbiBtaWxsaXNlY29uZHMuICovXG4gICAgcHVibGljIGdldCB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlLmdldFRpbWUoKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyB0aGUgY3VycmVudCB3ZWVrIG51bWJlci4gKi9cbiAgICBwdWJsaWMgZ2V0IHdlZWsoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IENhbGVuZGFyRGF5KHsgeWVhcjogdGhpcy55ZWFyLCBtb250aDogMCB9KVxuICAgICAgICAgICAgLnRpbWVzdGFtcDtcbiAgICAgICAgY29uc3QgY3VycmVudERheSA9XG4gICAgICAgICAgICAodGhpcy50aW1lc3RhbXAgLSBmaXJzdERheSArIG1pbGxpc2Vjb25kc0luRGF5KSAvIG1pbGxpc2Vjb25kc0luRGF5O1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKGN1cnJlbnREYXkgLyBkYXlzSW5XZWVrKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyB0aGUgdW5kZXJseWluZyBuYXRpdmUgZGF0ZSBpbnN0YW5jZS4gKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuX2RhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGN1cnJlbnQgZGF0ZSBpcyBhIHdlZWtlbmQgZGF5LlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBUaGlzIGlzIG5haXZlLCBzaW5jZSBpdCBkb2VzIG5vdCBhY2NvdW50IGZvciBsb2NhbGUgc3BlY2lmaWNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2Vla2VuZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF5IDwgMSB8fCB0aGlzLmRheSA+IDU7XG4gICAgfVxuXG4gICAgcHVibGljIGVxdWFsVG8odmFsdWU6IERheVBhcmFtZXRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lc3RhbXAgPT09IHRvQ2FsZW5kYXJEYXkodmFsdWUpLnRpbWVzdGFtcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ3JlYXRlclRoYW4odmFsdWU6IERheVBhcmFtZXRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lc3RhbXAgPiB0b0NhbGVuZGFyRGF5KHZhbHVlKS50aW1lc3RhbXA7XG4gICAgfVxuXG4gICAgcHVibGljIGxlc3NUaGFuKHZhbHVlOiBEYXlQYXJhbWV0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZXN0YW1wIDwgdG9DYWxlbmRhckRheSh2YWx1ZSkudGltZXN0YW1wO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubmF0aXZlfWA7XG4gICAgfVxufVxuIl19
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY29tbW9uL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQW1CMUMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztBQUVuQyxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQWtCO0lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLFFBQXFCLEVBQUUsUUFBcUI7SUFDL0QsT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJO1FBQ2xDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sT0FBTyxXQUFXO0lBR3BCLDhDQUE4QztJQUN2QyxNQUFNLEtBQUssS0FBSztRQUNuQixPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnRUFBZ0U7SUFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFVO1FBQ3pCLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFP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RSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDMUQsU0FBUyxDQUFDO1FBQ2YsTUFBTSxVQUFVLEdBQ1osQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBbUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFtQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQW1CO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNELENBQUM7SUFFTSxRQUFRO1FBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0RhdGUgfSBmcm9tIFwiLi4vLi4vY29yZS91dGlsc1wiO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWRlZmluaXRpb25zICovXG5leHBvcnQgdHlwZSBEYXlQYXJhbWV0ZXIgPSBDYWxlbmRhckRheSB8IERhdGU7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyUmFuZ2VQYXJhbXMgPSB7XG4gICAgc3RhcnQ6IERheVBhcmFtZXRlcjtcbiAgICBlbmQ6IERheVBhcmFtZXRlciB8IG51bWJlcjtcbiAgICB1bml0PzogRGF5SW50ZXJ2YWw7XG59O1xuXG50eXBlIENhbGVuZGFyRGF5UGFyYW1zID0ge1xuICAgIHllYXI6IG51bWJlcjtcbiAgICBtb250aDogbnVtYmVyO1xuICAgIGRhdGU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBEYXlJbnRlcnZhbCA9IFwieWVhclwiIHwgXCJxdWFydGVyXCIgfCBcIm1vbnRoXCIgfCBcIndlZWtcIiB8IFwiZGF5XCI7XG5cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcbmNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbGVuZGFyRGF5KGRhdGU6IERheVBhcmFtZXRlcikge1xuICAgIHJldHVybiBpc0RhdGUoZGF0ZSkgPyBDYWxlbmRhckRheS5mcm9tKGRhdGUpIDogZGF0ZTtcbn1cblxuZnVuY3Rpb24gY2hlY2tSb2xsb3ZlcihvcmlnaW5hbDogQ2FsZW5kYXJEYXksIG1vZGlmaWVkOiBDYWxlbmRhckRheSkge1xuICAgIHJldHVybiBvcmlnaW5hbC5kYXRlICE9PSBtb2RpZmllZC5kYXRlXG4gICAgICAgID8gbW9kaWZpZWQuc2V0KHsgZGF0ZTogMCB9KVxuICAgICAgICA6IG1vZGlmaWVkO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJEYXkge1xuICAgIHByaXZhdGUgX2RhdGUhOiBEYXRlO1xuXG4gICAgLyoqIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgZGF5LiAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHRvZGF5KCkge1xuICAgICAgICByZXR1cm4gQ2FsZW5kYXJEYXkuZnJvbShuZXcgRGF0ZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQ29uc3RydWN0cyBhIG5ldyBDYWxlbmRhckRheSBpbnN0YW5jZSBmcm9tIGEgRGF0ZSBvYmplY3QuICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tKGRhdGU6IERhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYWxlbmRhckRheSh7XG4gICAgICAgICAgICB5ZWFyOiBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICBtb250aDogZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgZGF0ZTogZGF0ZS5nZXREYXRlKCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGFyZ3M6IENhbGVuZGFyRGF5UGFyYW1zKSB7XG4gICAgICAgIHRoaXMuX2RhdGUgPSBuZXcgRGF0ZShhcmdzLnllYXIsIGFyZ3MubW9udGgsIGFyZ3MuZGF0ZSA/PyAxKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4gKi9cbiAgICBwdWJsaWMgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiBDYWxlbmRhckRheS5mcm9tKHRoaXMuX2RhdGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugd2l0aCB2YWx1ZXMgcmVwbGFjZWQuXG4gICAgICovXG4gICAgcHVibGljIHNldChhcmdzOiBQYXJ0aWFsPENhbGVuZGFyRGF5UGFyYW1zPikge1xuICAgICAgICByZXR1cm4gbmV3IENhbGVuZGFyRGF5KHtcbiAgICAgICAgICAgIHllYXI6IGFyZ3MueWVhciA/PyB0aGlzLnllYXIsXG4gICAgICAgICAgICBtb250aDogYXJncy5tb250aCA/PyB0aGlzLm1vbnRoLFxuICAgICAgICAgICAgZGF0ZTogYXJncy5kYXRlID8/IHRoaXMuZGF0ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCh1bml0OiBEYXlJbnRlcnZhbCwgdmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgICAgICAgY2FzZSBcInllYXJcIjpcbiAgICAgICAgICAgICAgICByZXN1bHQuX2RhdGUuc2V0RnVsbFllYXIocmVzdWx0LnllYXIgKyB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrUm9sbG92ZXIodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICAgIGNhc2UgXCJxdWFydGVyXCI6XG4gICAgICAgICAgICAgICAgcmVzdWx0Ll9kYXRlLnNldE1vbnRoKHJlc3VsdC5tb250aCArIDMgKiB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrUm9sbG92ZXIodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICAgIGNhc2UgXCJtb250aFwiOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5fZGF0ZS5zZXRNb250aChyZXN1bHQubW9udGggKyB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrUm9sbG92ZXIodGhpcywgcmVzdWx0KTtcbiAgICAgICAgICAgIGNhc2UgXCJ3ZWVrXCI6XG4gICAgICAgICAgICAgICAgcmVzdWx0Ll9kYXRlLnNldERhdGUocmVzdWx0LmRhdGUgKyA3ICogdmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlIFwiZGF5XCI6XG4gICAgICAgICAgICAgICAgcmVzdWx0Ll9kYXRlLnNldERhdGUocmVzdWx0LmRhdGUgKyB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlcnZhbFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHRoZSBkYXkgb2YgdGhlIHdlZWsgKFN1bmRheSA9IDApLiAqL1xuICAgIHB1YmxpYyBnZXQgZGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXREYXkoKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyB0aGUgZnVsbCB5ZWFyLiAqL1xuICAgIHB1YmxpYyBnZXQgeWVhcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyB0aGUgbW9udGguICovXG4gICAgcHVibGljIGdldCBtb250aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0TW9udGgoKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyB0aGUgZGF0ZSAqL1xuICAgIHB1YmxpYyBnZXQgZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHRoZSB0aW1lc3RhbXAgc2luY2UgZXBvY2ggaW4gbWlsbGlzZWNvbmRzLiAqL1xuICAgIHB1YmxpYyBnZXQgdGltZXN0YW1wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRUaW1lKCk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgdGhlIGN1cnJlbnQgd2VlayBudW1iZXIuICovXG4gICAgcHVibGljIGdldCB3ZWVrKCkge1xuICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBDYWxlbmRhckRheSh7IHllYXI6IHRoaXMueWVhciwgbW9udGg6IDAgfSlcbiAgICAgICAgICAgIC50aW1lc3RhbXA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXkgPVxuICAgICAgICAgICAgKHRoaXMudGltZXN0YW1wIC0gZmlyc3REYXkgKyBtaWxsaXNlY29uZHNJbkRheSkgLyBtaWxsaXNlY29uZHNJbkRheTtcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbChjdXJyZW50RGF5IC8gZGF5c0luV2Vlayk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgdGhlIHVuZGVybHlpbmcgbmF0aXZlIGRhdGUgaW5zdGFuY2UuICovXG4gICAgcHVibGljIGdldCBuYXRpdmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLl9kYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IGRhdGUgaXMgYSB3ZWVrZW5kIGRheS5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhpcyBpcyBuYWl2ZSwgc2luY2UgaXQgZG9lcyBub3QgYWNjb3VudCBmb3IgbG9jYWxlIHNwZWNpZmljcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHdlZWtlbmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheSA8IDEgfHwgdGhpcy5kYXkgPiA1O1xuICAgIH1cblxuICAgIHB1YmxpYyBlcXVhbFRvKHZhbHVlOiBEYXlQYXJhbWV0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZXN0YW1wID09PSB0b0NhbGVuZGFyRGF5KHZhbHVlKS50aW1lc3RhbXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdyZWF0ZXJUaGFuKHZhbHVlOiBEYXlQYXJhbWV0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGltZXN0YW1wID4gdG9DYWxlbmRhckRheSh2YWx1ZSkudGltZXN0YW1wO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZXNzVGhhbih2YWx1ZTogRGF5UGFyYW1ldGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVzdGFtcCA8IHRvQ2FsZW5kYXJEYXkodmFsdWUpLnRpbWVzdGFtcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLm5hdGl2ZX1gO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -349,7 +349,7 @@ export class IgxComboComponent extends IgxComboBaseDirective {
|
|
|
349
349
|
IgxComboAPIService,
|
|
350
350
|
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
|
|
351
351
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxComboComponent, multi: true }
|
|
352
|
-
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group
|
|
352
|
+
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\" *ngIf=\"displaySearchInput\">\n <igx-input-group>\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { 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.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: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }] }); }
|
|
353
353
|
}
|
|
354
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxComboComponent, decorators: [{
|
|
355
355
|
type: Component,
|
|
@@ -375,7 +375,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
375
375
|
IgxRippleDirective,
|
|
376
376
|
IgxComboFilteringPipe,
|
|
377
377
|
IgxComboGroupingPipe
|
|
378
|
-
], template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group
|
|
378
|
+
], template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\" *ngIf=\"displaySearchInput\">\n <igx-input-group>\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n" }]
|
|
379
379
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.IgxSelectionAPIService }, { type: i2.IgxComboAPIService }, { type: undefined, decorators: [{
|
|
380
380
|
type: Inject,
|
|
381
381
|
args: [DOCUMENT]
|
|
@@ -411,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
411
411
|
type: HostListener,
|
|
412
412
|
args: ['keydown.Alt.ArrowDown', ['$event']]
|
|
413
413
|
}] } });
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jb21iby9jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQytCLFNBQVMsRUFDM0MsUUFBUSxFQUFFLE1BQU0sRUFBWSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFXLGdCQUFnQixFQUM5RyxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXRGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFC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QkFDNUMsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBOZ0NsYXNzLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsIEluamVjdCwgSW5qZWN0b3IsIFZpZXdDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIERvQ2hlY2ssIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncywgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL2ljb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0l0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvRHJvcERvd25Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0ZpbHRlcmluZ1BpcGUsIElneENvbWJvR3JvdXBpbmdQaXBlIH0gZnJvbSAnLi9jb21iby5waXBlcyc7XG5pbXBvcnQgeyBJR1hfQ09NQk9fQ09NUE9ORU5ULCBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2NvbWJvLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWFkZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FQSVNlcnZpY2UgfSBmcm9tICcuL2NvbWJvLmFwaSc7XG5pbXBvcnQgeyBFZGl0b3JQcm92aWRlciB9IGZyb20gJy4uL2NvcmUvZWRpdC1wcm92aWRlcic7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwVHlwZSwgSUdYX0lOUFVUX0dST1VQX1RZUEUgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElneFN1ZmZpeERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvc3VmZml4L3N1ZmZpeC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2lucHV0L2lucHV0LmRpcmVjdGl2ZSc7XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaWd4LWNvbWJvJ3Mgc2VsZWN0aW9uIGlzIGNoYW5naW5nICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgYXJlIGN1cnJlbnRseSBzZWxlY3RlZCAqL1xuICAgIG9sZFZhbHVlOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3VmFsdWU6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IGFyZSBjdXJyZW50bHkgc2VsZWN0ZWQgKi9cbiAgICBvbGRTZWxlY3Rpb246IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgc2VsZWN0ZWQgYWZ0ZXIgdGhpcyBldmVudCAqL1xuICAgIG5ld1NlbGVjdGlvbjogYW55W107XG4gICAgLyoqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb24gKGlmIGFueSkgKi9cbiAgICByZW1vdmVkOiBhbnlbXTtcbiAgICAvKiogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgY29tYm8gdGV4dCBib3ggKi9cbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIC8qKiBUaGUgdXNlciBpbnRlcmFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgc2VsZWN0aW9uIGNoYW5nZSAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlneC1jb21ibydzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlYXJjaElucHV0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIHRleHQgdGhhdCBoYXMgYmVlbiB0eXBlZCBpbnRvIHRoZSBzZWFyY2ggaW5wdXQgKi9cbiAgICBzZWFyY2hUZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbWJvSXRlbUFkZGl0aW9uRXZlbnQgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgb2xkQ29sbGVjdGlvbjogYW55W107XG4gICAgYWRkZWRJdGVtOiBhbnk7XG4gICAgbmV3Q29sbGVjdGlvbjogYW55W107XG59XG5cbi8qKlxuICogV2hlbiBjYWxsZWQgd2l0aCBzZXRzIEEgJiBCLCByZXR1cm5zIEEgLSBCIChhcyBhcnJheSk7XG4gKlxuICogQGhpZGRlblxuICovXG5jb25zdCBkaWZmSW5TZXRzID0gKHNldDE6IFNldDxhbnk+LCBzZXQyOiBTZXQ8YW55Pik6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgc2V0MS5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgaWYgKCFzZXQyLmhhcyhlbnRyeSkpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogIFJlcHJlc2VudHMgYSBkcm9wLWRvd24gbGlzdCB0aGF0IHByb3ZpZGVzIGVkaXRhYmxlIGZ1bmN0aW9uYWxpdGllcywgYWxsb3dpbmcgdXNlcnMgdG8gY2hvb3NlIGFuIG9wdGlvbiBmcm9tIGEgcHJlZGVmaW5lZCBsaXN0LlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q29tYm9Nb2R1bGVcbiAqIEBpZ3hUaGVtZSBpZ3gtY29tYm8tdGhlbWVcbiAqIEBpZ3hLZXl3b3JkcyBjb21ib2JveCwgY29tYm8gc2VsZWN0aW9uXG4gKiBAaWd4R3JvdXAgR3JpZHMgJiBMaXN0c1xuICpcbiAqIEByZW1hcmtzXG4gKiBJdCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBmaWx0ZXIgaXRlbXMgYXMgd2VsbCBhcyBwZXJmb3JtIHNlbGVjdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBkYXRhLlxuICogQWRkaXRpb25hbGx5LCBpdCBleHBvc2VzIGtleWJvYXJkIG5hdmlnYXRpb24gYW5kIGN1c3RvbSBzdHlsaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWNvbWJvIFtpdGVtc01heEhlaWdodF09XCIyNTBcIiBbZGF0YV09XCJsb2NhdGlvbkRhdGFcIlxuICogIFtkaXNwbGF5S2V5XT1cIidmaWVsZCdcIiBbdmFsdWVLZXldPVwiJ2ZpZWxkJ1wiXG4gKiAgcGxhY2Vob2xkZXI9XCJMb2NhdGlvbihzKVwiIHNlYXJjaFBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCI+XG4gKiA8L2lneC1jb21ibz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1jb21ibycsXG4gICAgdGVtcGxhdGVVcmw6ICdjb21iby5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBJR1hfQ09NQk9fQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogSWd4Q29tYm9Db21wb25lbnQgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElneENvbWJvQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIElneElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIElneElucHV0RGlyZWN0aXZlLFxuICAgICAgICBJZ3hTdWZmaXhEaXJlY3RpdmUsXG4gICAgICAgIElneEljb25Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRHJvcERvd25Db21wb25lbnQsXG4gICAgICAgIElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUsXG4gICAgICAgIElneEZvck9mRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0l0ZW1Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvQWRkSXRlbUNvbXBvbmVudCxcbiAgICAgICAgSWd4QnV0dG9uRGlyZWN0aXZlLFxuICAgICAgICBJZ3hSaXBwbGVEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvRmlsdGVyaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9Hcm91cGluZ1BpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneENvbWJvQ29tcG9uZW50IGV4dGVuZHMgSWd4Q29tYm9CYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksIERvQ2hlY2ssIEVkaXRvclByb3ZpZGVyIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjb21ibydzIHNlYXJjaCBib3ggc2hvdWxkIGJlIGZvY3VzZWQgYWZ0ZXIgdGhlIGRyb3Bkb3duIGlzIG9wZW5lZC5cbiAgICAgKiBXaGVuIGBmYWxzZWAsIHRoZSBjb21ibydzIGxpc3QgaXRlbSBjb250YWluZXIgd2lsbCBiZSBmb2N1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgYXV0b0ZvY3VzU2VhcmNoID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgZmlsdGVyaW5nIGluIHRoZSBsaXN0LiBUaGUgZGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZUZpbHRlcmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVGaWx0ZXJpbmcgfHwgdGhpcy5maWx0ZXJpbmdPcHRpb25zLmZpbHRlcmFibGUgPT09IGZhbHNlO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGRpc2FibGVGaWx0ZXJpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZUZpbHRlcmluZyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHBsYWNlaG9sZGVyIHZhbHVlIGZvciB0aGUgY29tYm8gZHJvcGRvd24gc2VhcmNoIGZpZWxkXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDE4LjIuMC4gUmVwbGFjZWQgd2l0aCB2YWx1ZXMgaW4gdGhlIGxvY2FsaXphdGlvbiByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvU2VhcmNoUGxhY2Vob2xkZXIgPSB0aGlzLmNvbWJvLnNlYXJjaFBsYWNlaG9sZGVyO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtzZWFyY2hQbGFjZWhvbGRlcl09J25ld1BsYWNlSG9sZGVyJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGl0ZW0gc2VsZWN0aW9uIGlzIGNoYW5naW5nLCBiZWZvcmUgdGhlIHNlbGVjdGlvbiBjb21wbGV0ZXNcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChzZWxlY3Rpb25DaGFuZ2luZyk9J2hhbmRsZVNlbGVjdGlvbigpJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkcm9wZG93bjogSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyZWREYXRhKCk6IGFueVtdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVGaWx0ZXJpbmcgPyB0aGlzLmRhdGEgOiB0aGlzLl9maWx0ZXJlZERhdGE7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXQgZmlsdGVyZWREYXRhKHZhbDogYW55W10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkRGF0YSA9IHRoaXMuZ3JvdXBLZXkgPyAodmFsIHx8IFtdKS5maWx0ZXIoKGUpID0+IGUuaXNIZWFkZXIgIT09IHRydWUpIDogdmFsO1xuICAgICAgICB0aGlzLmNoZWNrTWF0Y2goKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ByZXZJbnB1dFZhbHVlID0gJyc7XG5cbiAgICBwcml2YXRlIF9kaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIHByaXZhdGUgX2Rpc2FibGVGaWx0ZXJpbmcgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBjb21ib0FQSTogSWd4Q29tYm9BUElTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElHWF9JTlBVVF9HUk9VUF9UWVBFKSBfaW5wdXRHcm91cFR5cGU6IElneElucHV0R3JvdXBUeXBlLFxuICAgICAgICBAT3B0aW9uYWwoKSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElneEljb25TZXJ2aWNlKSBfaWNvblNlcnZpY2U/OiBJZ3hJY29uU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSwgZG9jdW1lbnQsIF9pbnB1dEdyb3VwVHlwZSwgX2luamVjdG9yLCBfaWNvblNlcnZpY2UpO1xuICAgICAgICB0aGlzLmNvbWJvQVBJLnJlZ2lzdGVyKHRoaXMpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkFycm93RG93bihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZGlzcGxheVNlYXJjaElucHV0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZGlzYWJsZUZpbHRlcmluZyB8fCB0aGlzLmFsbG93Q3VzdG9tVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBQbGF0Zm9ybVV0aWwgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnRG93bicpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSB0aGlzLmRyb3Bkb3duLml0ZW1zWzBdO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBldmVudC5rZXkgPT09ICdFc2MnKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlU2VsZWN0QWxsKGV2dCkge1xuICAgICAgICBpZiAoZXZ0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5maWx0ZXIoeCA9PiB4ICE9PSB1bmRlZmluZWQpIDogW107XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIHNlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KHRoaXMuc2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWVLZXkgPyB0aGlzLnNlbGVjdGlvbi5tYXAoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVLZXldKSA6IHRoaXMuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGE/Lmxlbmd0aCAmJiB0aGlzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuX2Rpc3BsYXlUZXh0IHx8IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5zZWxlY3Rpb24sIFtdKTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZUtleSA/IHRoaXMuc2VsZWN0aW9uLm1hcChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUtleV0pIDogdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldEVkaXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb250ZXh0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbGVhckl0ZW1zKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcyh0cnVlLCBldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRFZGl0RWxlbWVudCgpLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGRlZmluZWQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdJdGVtcyBuZXcgaXRlbXMgdG8gYmUgc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0gY2xlYXJDdXJyZW50U2VsZWN0aW9uIGlmIHRydWUgY2xlYXIgcHJldmlvdXMgc2VsZWN0ZWQgaXRlbXNcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5zZWxlY3QoW1wiTmV3IFlvcmtcIiwgXCJOZXcgSmVyc2V5XCJdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KG5ld0l0ZW1zOiBBcnJheTxhbnk+LCBjbGVhckN1cnJlbnRTZWxlY3Rpb24/OiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChuZXdJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmFkZF9pdGVtcyh0aGlzLmlkLCBuZXdJdGVtcywgY2xlYXJDdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzZWxlY3QgZGVmaW5lZCBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIGl0ZW1zIHRvIGRlc2VsZWN0ZWRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5kZXNlbGVjdChbXCJOZXcgWW9ya1wiLCBcIk5ldyBKZXJzZXlcIl0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdChpdGVtczogQXJyYXk8YW55PiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZWxldGVfaXRlbXModGhpcy5pZCwgaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYWxsIChmaWx0ZXJlZCkgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZ25vcmVGaWx0ZXIgaWYgc2V0IHRvIHRydWUsIHNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2Ugc2VsZWN0cyBvbmx5IHRoZSBmaWx0ZXJlZCBvbmVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnNlbGVjdEFsbEl0ZW1zKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgYWxsVmlzaWJsZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyhpZ25vcmVGaWx0ZXIgPyB0aGlzLmRhdGEgOiB0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5hZGRfaXRlbXModGhpcy5pZCwgYWxsVmlzaWJsZSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IGFsbCAoZmlsdGVyZWQpIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWdub3JlRmlsdGVyIGlmIHNldCB0byB0cnVlLCBkZXNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2UgZGVzZWxlY3RzIG9ubHkgdGhlIGZpbHRlcmVkIG9uZXMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfZW1wdHkoKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCAhPT0gdGhpcy5kYXRhLmxlbmd0aCAmJiAhaWdub3JlRmlsdGVyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlX2l0ZW1zKHRoaXMuaWQsIHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyh0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMvRGVzZWxlY3RzIGEgc2luZ2xlIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtSUQgdGhlIGl0ZW1JRCBvZiB0aGUgc3BlY2lmaWMgaXRlbVxuICAgICAqIEBwYXJhbSBzZWxlY3QgSWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHNlbGVjdGVkICh0cnVlKSBvciBkZXNlbGVjdGVkIChmYWxzZSlcbiAgICAgKlxuICAgICAqIFdpdGhvdXQgc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gbnVsbDtcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oaXRlbXNbMF0sIHRydWUpO1xuICAgICAqIGBgYFxuICAgICAqIFdpdGggc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gJ2ZpZWxkJztcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oJ0Nvbm5lY3RpY3V0JywgdHJ1ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpdGVtSUQ6IGFueSwgc2VsZWN0ID0gdHJ1ZSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbUlEID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbaXRlbUlEXSwgZmFsc2UsIGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QoW2l0ZW1JRF0sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVPcGVuZWQoKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlckNoZWNrKCk7XG5cbiAgICAgICAgLy8gRGlzYWJsaW5nIGZvY3VzIG9mIHRoZSBzZWFyY2ggaW5wdXQgc2hvdWxkIGhhcHBlbiBvbmx5IHdoZW4gZHJvcCBkb3duIG9wZW5zLlxuICAgICAgICAvLyBEdXJpbmcga2V5Ym9hcmQgbmF2aWdhdGlvbiBpbnB1dCBzaG91bGQgcmVjZWl2ZSBmb2N1cywgZXZlbiB0aGUgYXV0b0ZvY3VzU2VhcmNoIGlzIGRpc2FibGVkLlxuICAgICAgICAvLyBUaGF0IGlzIHdoeSBpbiBzdWNoIGNhc2VzIGZvY3VzaW5nIG9mIHRoZSBkcm9wZG93bkNvbnRhaW5lciBoYXBwZW5zIG91dHNpZGUgZm9jdXNTZWFyY2hJbnB1dCBtZXRob2QuXG4gICAgICAgIGlmICh0aGlzLmF1dG9Gb2N1c1NlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCh7IG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBmb2N1c1NlYXJjaElucHV0KG9wZW5pbmc/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlTZWFyY2hJbnB1dCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvcGVuaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZXQ8YW55PiwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuY29udmVydEtleXNUb0l0ZW1zKGRpZmZJblNldHMoY3VycmVudFNlbGVjdGlvbiwgc2VsZWN0aW9uKSk7XG4gICAgICAgIGNvbnN0IGFkZGVkID0gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMoZGlmZkluU2V0cyhzZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBBcnJheS5mcm9tKHNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gQXJyYXkuZnJvbShjdXJyZW50U2VsZWN0aW9uIHx8IFtdKTtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMobmV3VmFsdWUpO1xuICAgICAgICBjb25zdCBvbGRTZWxlY3Rpb24gPSB0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhvbGRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dCh0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhuZXdWYWx1ZSksIG9sZFZhbHVlKTtcbiAgICAgICAgY29uc3QgYXJnczogSUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgIG9sZFZhbHVlLFxuICAgICAgICAgICAgbmV3U2VsZWN0aW9uLFxuICAgICAgICAgICAgb2xkU2VsZWN0aW9uLFxuICAgICAgICAgICAgYWRkZWQsXG4gICAgICAgICAgICByZW1vdmVkLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgIGRpc3BsYXlUZXh0LFxuICAgICAgICAgICAgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgYXJncy5uZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGFyZ3MubmV3VmFsdWU7XG4gICAgICAgICAgICBpZiAoZGlzcGxheVRleHQgIT09IGFyZ3MuZGlzcGxheVRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLl9kaXNwbGF5VGV4dCA9IGFyZ3MuZGlzcGxheVRleHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5zZWxlY3Rpb24sIGFyZ3Mub2xkU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soYXJncy5uZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JlbW90ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlclJlbW90ZUVudHJpZXMoZGlmZkluU2V0cyhzZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uOiBhbnlbXSwgb2xkU2VsZWN0aW9uOiBhbnlbXSkge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnZhbHVlS2V5ID8gbmV3U2VsZWN0aW9uLm1hcChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUtleV0pIDogbmV3U2VsZWN0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1JlbW90ZVxuICAgICAgICAgICAgPyB0aGlzLmdldFJlbW90ZVNlbGVjdGlvbihzZWxlY3Rpb24sIG9sZFNlbGVjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5jb25jYXREaXNwbGF5VGV4dChuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTZWFyY2hQbGFjZWhvbGRlclRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoUGxhY2Vob2xkZXIgfHxcbiAgICAgICAgICAgICh0aGlzLmRpc2FibGVGaWx0ZXJpbmcgPyB0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfY29tYm9fYWRkQ3VzdG9tVmFsdWVzX3BsYWNlaG9sZGVyIDogdGhpcy5yZXNvdXJjZVN0cmluZ3MuaWd4X2NvbWJvX2ZpbHRlcl9zZWFyY2hfcGxhY2Vob2xkZXIpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHBvcHVsYXRlZCBpbiB0aGUgY29tYm8ncyB0ZXh0IGJveCAqL1xuICAgIHByaXZhdGUgY29uY2F0RGlzcGxheVRleHQoc2VsZWN0aW9uOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kaXNwbGF5S2V5ICE9PSBudWxsICYmIHRoaXMuZGlzcGxheUtleSAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgIHNlbGVjdGlvbi5tYXAoZW50cnkgPT4gZW50cnlbdGhpcy5kaXNwbGF5S2V5XSkuam9pbignLCAnKSA6XG4gICAgICAgICAgICBzZWxlY3Rpb24uam9pbignLCAnKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiIsIjxpZ3gtaW5wdXQtZ3JvdXAgI2lucHV0R3JvdXAgW3R5cGVdPVwidHlwZVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiW2lneExhYmVsXVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4TGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtcHJlZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1wcmVmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cImlneC1oaW50LCBbaWd4SGludF1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWhpbnQsIFtpZ3hIaW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aW5wdXQgaWd4SW5wdXQgI2NvbWJvSW5wdXQgbmFtZT1cImNvbWJvSW5wdXRcIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIiByZWFkb25seVxuICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCIgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhZHJvcGRvd24uY29sbGFwc2VkXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJkcm9wZG93bi5saXN0SWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IGxhYmVsPy5pZCB8fCBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiIC8+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cImlneC1zdWZmaXhcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LXN1ZmZpeFwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aWd4LXN1ZmZpeCAqbmdJZj1cImRpc3BsYXlWYWx1ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jb21ib19jbGVhckl0ZW1zX3BsYWNlaG9sZGVyXCIgY2xhc3M9XCJpZ3gtY29tYm9fX2NsZWFyLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDbGVhckl0ZW1zKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNsZWFySWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xlYXJJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpZ3gtaWNvbiAqbmdJZj1cIiFjbGVhckljb25UZW1wbGF0ZVwiIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwiaW5wdXRfY2xlYXJcIj48L2lneC1pY29uPlxuICAgIDwvaWd4LXN1ZmZpeD5cbiAgICA8aWd4LXN1ZmZpeCBjbGFzcz1cImlneC1jb21ib19fdG9nZ2xlLWJ1dHRvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9nZ2xlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9nZ2xlSWNvblRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2xsYXBzZWR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8aWd4LWljb24gKm5nSWY9XCIhdG9nZ2xlSWNvblRlbXBsYXRlXCIgZmFtaWx5PVwiZGVmYXVsdFwiIFtuYW1lXT1cInRvZ2dsZUljb25cIj48L2lneC1pY29uPlxuICAgIDwvaWd4LXN1ZmZpeD5cbjwvaWd4LWlucHV0LWdyb3VwPlxuPGlneC1jb21iby1kcm9wLWRvd24gI2lneENvbWJvRHJvcERvd24gY2xhc3M9XCJpZ3gtY29tYm9fX2Ryb3AtZG93blwiXG4gICAgW2xhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnkgfHwgbGFiZWw/LmlkIHx8IHBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICBbd2lkdGhdPVwiaXRlbXNXaWR0aCB8fCAnMTAwJSdcIiAob3BlbmluZyk9XCJoYW5kbGVPcGVuaW5nKCRldmVudClcIiAoY2xvc2luZyk9XCJoYW5kbGVDbG9zaW5nKCRldmVudClcIlxuICAgIChvcGVuZWQpPVwiaGFuZGxlT3BlbmVkKClcIiAoY2xvc2VkKT1cImhhbmRsZUNsb3NlZCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1jb21ib19fc2VhcmNoXCI+XG4gICAgICAgIDxpZ3gtaW5wdXQtZ3JvdXAgKm5nSWY9XCJkaXNwbGF5U2VhcmNoSW5wdXRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZ3hJbnB1dCAjc2VhcmNoSW5wdXQgbmFtZT1cInNlYXJjaElucHV0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVJbnB1dENoYW5nZSgkZXZlbnQpXCIgKGtleXVwKT1cImhhbmRsZUtleVVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiIChmb2N1cyk9XCJkcm9wZG93bi5vbkJsdXIoJGV2ZW50KVwiIFthdHRyLnBsYWNlaG9sZGVyXT1cImdldFNlYXJjaFBsYWNlaG9sZGVyVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1sYWJlbD1cInNlYXJjaFwiLz5cbiAgICAgICAgICAgIDxpZ3gtc3VmZml4ICpuZ0lmPVwic2hvd1NlYXJjaENhc2VJY29uXCIgKGNsaWNrKT1cInRvZ2dsZUNhc2VTZW5zaXRpdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImZpbHRlcmluZ09wdGlvbnMuY2FzZVNlbnNpdGl2ZT8gJ2lneC1jb21ib19fY2FzZS1pY29uLS1hY3RpdmUnIDogJ2lneC1jb21ib19fY2FzZS1pY29uJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNhc2Vfc2Vuc2l0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiZmlsdGVyaW5nT3B0aW9ucy5jYXNlU2Vuc2l0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaWd4LWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9pZ3gtc3VmZml4PlxuICAgICAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICNkcm9wZG93bkl0ZW1Db250YWluZXIgY2xhc3M9XCJpZ3gtY29tYm9fX2NvbnRlbnRcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ2hpZGRlbidcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnJlbV09XCJpdGVtc01heEhlaWdodEluUmVtXCIgW2lneERyb3BEb3duSXRlbU5hdmlnYXRpb25dPVwiZHJvcGRvd25cIiAoZm9jdXMpPVwiZHJvcGRvd24ub25Gb2N1cygpXCJcbiAgICAgICAgW3RhYmluZGV4XT1cImRyb3Bkb3duLmNvbGxhcHNlZCA/IC0xIDogMFwiIFthdHRyLmlkXT1cImRyb3Bkb3duLmlkXCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImFjdGl2ZURlc2NlbmRhbnRcIj5cbiAgICAgICAgPGlneC1jb21iby1pdGVtIFtpdGVtSGVpZ2h0XT1cIml0ZW1IZWlnaHRcIiAqaWd4Rm9yPVwibGV0IGl0ZW0gb2YgZGF0YVxuICAgICAgICAgICAgfCBjb21ib0ZpbHRlcmluZzpmaWx0ZXJWYWx1ZTpkaXNwbGF5S2V5OmZpbHRlcmluZ09wdGlvbnM6ZmlsdGVyRnVuY3Rpb246ZGlzYWJsZUZpbHRlcmluZ1xuICAgICAgICAgICAgfCBjb21ib0dyb3VwaW5nOmdyb3VwS2V5OnZhbHVlS2V5Omdyb3VwU29ydGluZ0RpcmVjdGlvbjpjb21wYXJlQ29sbGF0b3I7XG4gICAgICAgICAgICBpbmRleCBhcyByb3dJbmRleDsgY29udGFpbmVyU2l6ZTogaXRlbXNNYXhIZWlnaHQ7IHNjcm9sbE9yaWVudGF0aW9uOiAndmVydGljYWwnOyBpdGVtU2l6ZTogaXRlbUhlaWdodFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiIFtpc0hlYWRlcl09XCJpdGVtPy5pc0hlYWRlclwiIFtpbmRleF09XCJyb3dJbmRleFwiIFtyb2xlXT1cIml0ZW0/LmlzSGVhZGVyPyAnZ3JvdXAnIDogJ29wdGlvbidcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5pc0hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJJdGVtVGVtcGxhdGUgPyBoZWFkZXJJdGVtVGVtcGxhdGUgOiBoZWFkZXJJdGVtQmFzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgZGF0YTogZGF0YSwgdmFsdWVLZXk6IHZhbHVlS2V5LCBncm91cEtleTogZ3JvdXBLZXksIGRpc3BsYXlLZXk6IGRpc3BsYXlLZXl9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwhLS0gaWYgaXRlbSBpcyAnbnVsbCcgaXQgc2hvdWxkIGJlIGRpc3BsYXllZCBhbmQgISEoaXRlbT8uaXNIZWFkZXIpIHdvdWxkIHJlc29sdmUgaXQgdG8gJ2ZhbHNlJyBhbmQgbm90IGRpc3BsYXkgaXQgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0/LmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgZGF0YTogZGF0YSwgdmFsdWVLZXk6IHZhbHVlS2V5LCBkaXNwbGF5S2V5OiBkaXNwbGF5S2V5fTtcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2lneC1jb21iby1pdGVtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtY29tYm9fX2FkZFwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMCB8fCBpc0FkZEJ1dHRvblZpc2libGUoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNvbWJvX19lbXB0eVwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGUgPyBlbXB0eVRlbXBsYXRlIDogZW1wdHlcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlneC1jb21iby1hZGQtaXRlbSBbaXRlbUhlaWdodF09XCJpdGVtSGVpZ2h0XCIgKm5nSWY9XCJpc0FkZEJ1dHRvblZpc2libGUoKVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiZHJvcGRvd24uY29sbGFwc2VkID8gLTEgOiBjdXN0b21WYWx1ZUZsYWcgPyAxIDogLTFcIiBjbGFzcz1cImlneC1jb21ib19fYWRkLWl0ZW1cIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jb21ib19hZGRDdXN0b21WYWx1ZXNfcGxhY2Vob2xkZXJcIiBbaW5kZXhdPVwidmlydHVhbFNjcm9sbENvbnRhaW5lci5pZ3hGb3JPZi5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRJdGVtVGVtcGxhdGUgPyBhZGRJdGVtVGVtcGxhdGUgOiBhZGRJdGVtRGVmYXVsdFwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaWd4LWNvbWJvLWFkZC1pdGVtPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9pZ3gtY29tYm8tZHJvcC1kb3duPlxuPG5nLXRlbXBsYXRlICNjb21wbGV4IGxldC1kaXNwbGF5IGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJkaXNwbGF5S2V5XCI+XG4gICAge3tkaXNwbGF5W2tleV19fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJpbWl0aXZlIGxldC1kaXNwbGF5PlxuICAgIHt7ZGlzcGxheX19XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICA8c3Bhbj57e3Jlc291cmNlU3RyaW5ncy5pZ3hfY29tYm9fZW1wdHlfbWVzc2FnZX19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYWRkSXRlbURlZmF1bHQgbGV0LWNvbnRyb2w+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uPVwiZmxhdFwiIGlneFJpcHBsZT57eyByZXNvdXJjZVN0cmluZ3MuaWd4X2NvbWJvX2FkZEN1c3RvbVZhbHVlc19wbGFjZWhvbGRlciB9fTwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVySXRlbUJhc2UgbGV0LWl0ZW0gbGV0LWtleT1cInZhbHVlS2V5XCIgbGV0LWdyb3VwS2V5PVwiZ3JvdXBLZXlcIj5cbiAgICB7eyBpdGVtW2tleV0gfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jb21iby9jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQytCLFNBQVMsRUFDM0MsUUFBUSxFQUFFLE1BQU0sRUFBWSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFXLGdCQUFnQixFQUM5RyxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXRGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFC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QkFDNUMsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBOZ0NsYXNzLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsIEluamVjdCwgSW5qZWN0b3IsIFZpZXdDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIERvQ2hlY2ssIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncywgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL2ljb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0l0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvRHJvcERvd25Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0ZpbHRlcmluZ1BpcGUsIElneENvbWJvR3JvdXBpbmdQaXBlIH0gZnJvbSAnLi9jb21iby5waXBlcyc7XG5pbXBvcnQgeyBJR1hfQ09NQk9fQ09NUE9ORU5ULCBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2NvbWJvLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWFkZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FQSVNlcnZpY2UgfSBmcm9tICcuL2NvbWJvLmFwaSc7XG5pbXBvcnQgeyBFZGl0b3JQcm92aWRlciB9IGZyb20gJy4uL2NvcmUvZWRpdC1wcm92aWRlcic7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwVHlwZSwgSUdYX0lOUFVUX0dST1VQX1RZUEUgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElneFN1ZmZpeERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvc3VmZml4L3N1ZmZpeC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2lucHV0L2lucHV0LmRpcmVjdGl2ZSc7XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaWd4LWNvbWJvJ3Mgc2VsZWN0aW9uIGlzIGNoYW5naW5nICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgYXJlIGN1cnJlbnRseSBzZWxlY3RlZCAqL1xuICAgIG9sZFZhbHVlOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3VmFsdWU6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IGFyZSBjdXJyZW50bHkgc2VsZWN0ZWQgKi9cbiAgICBvbGRTZWxlY3Rpb246IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgc2VsZWN0ZWQgYWZ0ZXIgdGhpcyBldmVudCAqL1xuICAgIG5ld1NlbGVjdGlvbjogYW55W107XG4gICAgLyoqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb24gKGlmIGFueSkgKi9cbiAgICByZW1vdmVkOiBhbnlbXTtcbiAgICAvKiogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgY29tYm8gdGV4dCBib3ggKi9cbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIC8qKiBUaGUgdXNlciBpbnRlcmFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgc2VsZWN0aW9uIGNoYW5nZSAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlneC1jb21ibydzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlYXJjaElucHV0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIHRleHQgdGhhdCBoYXMgYmVlbiB0eXBlZCBpbnRvIHRoZSBzZWFyY2ggaW5wdXQgKi9cbiAgICBzZWFyY2hUZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbWJvSXRlbUFkZGl0aW9uRXZlbnQgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgb2xkQ29sbGVjdGlvbjogYW55W107XG4gICAgYWRkZWRJdGVtOiBhbnk7XG4gICAgbmV3Q29sbGVjdGlvbjogYW55W107XG59XG5cbi8qKlxuICogV2hlbiBjYWxsZWQgd2l0aCBzZXRzIEEgJiBCLCByZXR1cm5zIEEgLSBCIChhcyBhcnJheSk7XG4gKlxuICogQGhpZGRlblxuICovXG5jb25zdCBkaWZmSW5TZXRzID0gKHNldDE6IFNldDxhbnk+LCBzZXQyOiBTZXQ8YW55Pik6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgc2V0MS5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgaWYgKCFzZXQyLmhhcyhlbnRyeSkpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogIFJlcHJlc2VudHMgYSBkcm9wLWRvd24gbGlzdCB0aGF0IHByb3ZpZGVzIGVkaXRhYmxlIGZ1bmN0aW9uYWxpdGllcywgYWxsb3dpbmcgdXNlcnMgdG8gY2hvb3NlIGFuIG9wdGlvbiBmcm9tIGEgcHJlZGVmaW5lZCBsaXN0LlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q29tYm9Nb2R1bGVcbiAqIEBpZ3hUaGVtZSBpZ3gtY29tYm8tdGhlbWVcbiAqIEBpZ3hLZXl3b3JkcyBjb21ib2JveCwgY29tYm8gc2VsZWN0aW9uXG4gKiBAaWd4R3JvdXAgR3JpZHMgJiBMaXN0c1xuICpcbiAqIEByZW1hcmtzXG4gKiBJdCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBmaWx0ZXIgaXRlbXMgYXMgd2VsbCBhcyBwZXJmb3JtIHNlbGVjdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBkYXRhLlxuICogQWRkaXRpb25hbGx5LCBpdCBleHBvc2VzIGtleWJvYXJkIG5hdmlnYXRpb24gYW5kIGN1c3RvbSBzdHlsaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWNvbWJvIFtpdGVtc01heEhlaWdodF09XCIyNTBcIiBbZGF0YV09XCJsb2NhdGlvbkRhdGFcIlxuICogIFtkaXNwbGF5S2V5XT1cIidmaWVsZCdcIiBbdmFsdWVLZXldPVwiJ2ZpZWxkJ1wiXG4gKiAgcGxhY2Vob2xkZXI9XCJMb2NhdGlvbihzKVwiIHNlYXJjaFBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCI+XG4gKiA8L2lneC1jb21ibz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1jb21ibycsXG4gICAgdGVtcGxhdGVVcmw6ICdjb21iby5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBJR1hfQ09NQk9fQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogSWd4Q29tYm9Db21wb25lbnQgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElneENvbWJvQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIElneElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIElneElucHV0RGlyZWN0aXZlLFxuICAgICAgICBJZ3hTdWZmaXhEaXJlY3RpdmUsXG4gICAgICAgIElneEljb25Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRHJvcERvd25Db21wb25lbnQsXG4gICAgICAgIElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUsXG4gICAgICAgIElneEZvck9mRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0l0ZW1Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvQWRkSXRlbUNvbXBvbmVudCxcbiAgICAgICAgSWd4QnV0dG9uRGlyZWN0aXZlLFxuICAgICAgICBJZ3hSaXBwbGVEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvRmlsdGVyaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9Hcm91cGluZ1BpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneENvbWJvQ29tcG9uZW50IGV4dGVuZHMgSWd4Q29tYm9CYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksIERvQ2hlY2ssIEVkaXRvclByb3ZpZGVyIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjb21ibydzIHNlYXJjaCBib3ggc2hvdWxkIGJlIGZvY3VzZWQgYWZ0ZXIgdGhlIGRyb3Bkb3duIGlzIG9wZW5lZC5cbiAgICAgKiBXaGVuIGBmYWxzZWAsIHRoZSBjb21ibydzIGxpc3QgaXRlbSBjb250YWluZXIgd2lsbCBiZSBmb2N1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgYXV0b0ZvY3VzU2VhcmNoID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgZmlsdGVyaW5nIGluIHRoZSBsaXN0LiBUaGUgZGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZUZpbHRlcmluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVGaWx0ZXJpbmcgfHwgdGhpcy5maWx0ZXJpbmdPcHRpb25zLmZpbHRlcmFibGUgPT09IGZhbHNlO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGRpc2FibGVGaWx0ZXJpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZUZpbHRlcmluZyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHBsYWNlaG9sZGVyIHZhbHVlIGZvciB0aGUgY29tYm8gZHJvcGRvd24gc2VhcmNoIGZpZWxkXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDE4LjIuMC4gUmVwbGFjZWQgd2l0aCB2YWx1ZXMgaW4gdGhlIGxvY2FsaXphdGlvbiByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvU2VhcmNoUGxhY2Vob2xkZXIgPSB0aGlzLmNvbWJvLnNlYXJjaFBsYWNlaG9sZGVyO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtzZWFyY2hQbGFjZWhvbGRlcl09J25ld1BsYWNlSG9sZGVyJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGl0ZW0gc2VsZWN0aW9uIGlzIGNoYW5naW5nLCBiZWZvcmUgdGhlIHNlbGVjdGlvbiBjb21wbGV0ZXNcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChzZWxlY3Rpb25DaGFuZ2luZyk9J2hhbmRsZVNlbGVjdGlvbigpJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkcm9wZG93bjogSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyZWREYXRhKCk6IGFueVtdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVGaWx0ZXJpbmcgPyB0aGlzLmRhdGEgOiB0aGlzLl9maWx0ZXJlZERhdGE7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXQgZmlsdGVyZWREYXRhKHZhbDogYW55W10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkRGF0YSA9IHRoaXMuZ3JvdXBLZXkgPyAodmFsIHx8IFtdKS5maWx0ZXIoKGUpID0+IGUuaXNIZWFkZXIgIT09IHRydWUpIDogdmFsO1xuICAgICAgICB0aGlzLmNoZWNrTWF0Y2goKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3ByZXZJbnB1dFZhbHVlID0gJyc7XG5cbiAgICBwcml2YXRlIF9kaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIHByaXZhdGUgX2Rpc2FibGVGaWx0ZXJpbmcgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBjb21ib0FQSTogSWd4Q29tYm9BUElTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogYW55LFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElHWF9JTlBVVF9HUk9VUF9UWVBFKSBfaW5wdXRHcm91cFR5cGU6IElneElucHV0R3JvdXBUeXBlLFxuICAgICAgICBAT3B0aW9uYWwoKSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElneEljb25TZXJ2aWNlKSBfaWNvblNlcnZpY2U/OiBJZ3hJY29uU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSwgZG9jdW1lbnQsIF9pbnB1dEdyb3VwVHlwZSwgX2luamVjdG9yLCBfaWNvblNlcnZpY2UpO1xuICAgICAgICB0aGlzLmNvbWJvQVBJLnJlZ2lzdGVyKHRoaXMpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQXJyb3dEb3duJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkFycm93RG93bihldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZGlzcGxheVNlYXJjaElucHV0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZGlzYWJsZUZpbHRlcmluZyB8fCB0aGlzLmFsbG93Q3VzdG9tVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBQbGF0Zm9ybVV0aWwgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnRG93bicpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSB0aGlzLmRyb3Bkb3duLml0ZW1zWzBdO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBldmVudC5rZXkgPT09ICdFc2MnKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlU2VsZWN0QWxsKGV2dCkge1xuICAgICAgICBpZiAoZXZ0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5maWx0ZXIoeCA9PiB4ICE9PSB1bmRlZmluZWQpIDogW107XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIHNlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KHRoaXMuc2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWVLZXkgPyB0aGlzLnNlbGVjdGlvbi5tYXAoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVLZXldKSA6IHRoaXMuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGE/Lmxlbmd0aCAmJiB0aGlzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuX2Rpc3BsYXlUZXh0IHx8IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5zZWxlY3Rpb24sIFtdKTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZUtleSA/IHRoaXMuc2VsZWN0aW9uLm1hcChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUtleV0pIDogdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldEVkaXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb250ZXh0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbGVhckl0ZW1zKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcyh0cnVlLCBldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRFZGl0RWxlbWVudCgpLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGRlZmluZWQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdJdGVtcyBuZXcgaXRlbXMgdG8gYmUgc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0gY2xlYXJDdXJyZW50U2VsZWN0aW9uIGlmIHRydWUgY2xlYXIgcHJldmlvdXMgc2VsZWN0ZWQgaXRlbXNcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5zZWxlY3QoW1wiTmV3IFlvcmtcIiwgXCJOZXcgSmVyc2V5XCJdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KG5ld0l0ZW1zOiBBcnJheTxhbnk+LCBjbGVhckN1cnJlbnRTZWxlY3Rpb24/OiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChuZXdJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmFkZF9pdGVtcyh0aGlzLmlkLCBuZXdJdGVtcywgY2xlYXJDdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzZWxlY3QgZGVmaW5lZCBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIGl0ZW1zIHRvIGRlc2VsZWN0ZWRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5kZXNlbGVjdChbXCJOZXcgWW9ya1wiLCBcIk5ldyBKZXJzZXlcIl0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdChpdGVtczogQXJyYXk8YW55PiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZWxldGVfaXRlbXModGhpcy5pZCwgaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYWxsIChmaWx0ZXJlZCkgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZ25vcmVGaWx0ZXIgaWYgc2V0IHRvIHRydWUsIHNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2Ugc2VsZWN0cyBvbmx5IHRoZSBmaWx0ZXJlZCBvbmVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnNlbGVjdEFsbEl0ZW1zKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgYWxsVmlzaWJsZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyhpZ25vcmVGaWx0ZXIgPyB0aGlzLmRhdGEgOiB0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5hZGRfaXRlbXModGhpcy5pZCwgYWxsVmlzaWJsZSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IGFsbCAoZmlsdGVyZWQpIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWdub3JlRmlsdGVyIGlmIHNldCB0byB0cnVlLCBkZXNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2UgZGVzZWxlY3RzIG9ubHkgdGhlIGZpbHRlcmVkIG9uZXMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfZW1wdHkoKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCAhPT0gdGhpcy5kYXRhLmxlbmd0aCAmJiAhaWdub3JlRmlsdGVyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlX2l0ZW1zKHRoaXMuaWQsIHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyh0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMvRGVzZWxlY3RzIGEgc2luZ2xlIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtSUQgdGhlIGl0ZW1JRCBvZiB0aGUgc3BlY2lmaWMgaXRlbVxuICAgICAqIEBwYXJhbSBzZWxlY3QgSWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHNlbGVjdGVkICh0cnVlKSBvciBkZXNlbGVjdGVkIChmYWxzZSlcbiAgICAgKlxuICAgICAqIFdpdGhvdXQgc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gbnVsbDtcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oaXRlbXNbMF0sIHRydWUpO1xuICAgICAqIGBgYFxuICAgICAqIFdpdGggc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gJ2ZpZWxkJztcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oJ0Nvbm5lY3RpY3V0JywgdHJ1ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpdGVtSUQ6IGFueSwgc2VsZWN0ID0gdHJ1ZSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbUlEID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdChbaXRlbUlEXSwgZmFsc2UsIGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QoW2l0ZW1JRF0sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVPcGVuZWQoKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlckNoZWNrKCk7XG5cbiAgICAgICAgLy8gRGlzYWJsaW5nIGZvY3VzIG9mIHRoZSBzZWFyY2ggaW5wdXQgc2hvdWxkIGhhcHBlbiBvbmx5IHdoZW4gZHJvcCBkb3duIG9wZW5zLlxuICAgICAgICAvLyBEdXJpbmcga2V5Ym9hcmQgbmF2aWdhdGlvbiBpbnB1dCBzaG91bGQgcmVjZWl2ZSBmb2N1cywgZXZlbiB0aGUgYXV0b0ZvY3VzU2VhcmNoIGlzIGRpc2FibGVkLlxuICAgICAgICAvLyBUaGF0IGlzIHdoeSBpbiBzdWNoIGNhc2VzIGZvY3VzaW5nIG9mIHRoZSBkcm9wZG93bkNvbnRhaW5lciBoYXBwZW5zIG91dHNpZGUgZm9jdXNTZWFyY2hJbnB1dCBtZXRob2QuXG4gICAgICAgIGlmICh0aGlzLmF1dG9Gb2N1c1NlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuZWQuZW1pdCh7IG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBmb2N1c1NlYXJjaElucHV0KG9wZW5pbmc/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlTZWFyY2hJbnB1dCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvcGVuaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZXQ8YW55PiwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuY29udmVydEtleXNUb0l0ZW1zKGRpZmZJblNldHMoY3VycmVudFNlbGVjdGlvbiwgc2VsZWN0aW9uKSk7XG4gICAgICAgIGNvbnN0IGFkZGVkID0gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMoZGlmZkluU2V0cyhzZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBBcnJheS5mcm9tKHNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IG9sZFZhbHVlID0gQXJyYXkuZnJvbShjdXJyZW50U2VsZWN0aW9uIHx8IFtdKTtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMobmV3VmFsdWUpO1xuICAgICAgICBjb25zdCBvbGRTZWxlY3Rpb24gPSB0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhvbGRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dCh0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhuZXdWYWx1ZSksIG9sZFZhbHVlKTtcbiAgICAgICAgY29uc3QgYXJnczogSUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgIG9sZFZhbHVlLFxuICAgICAgICAgICAgbmV3U2VsZWN0aW9uLFxuICAgICAgICAgICAgb2xkU2VsZWN0aW9uLFxuICAgICAgICAgICAgYWRkZWQsXG4gICAgICAgICAgICByZW1vdmVkLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgIGRpc3BsYXlUZXh0LFxuICAgICAgICAgICAgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgYXJncy5uZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGFyZ3MubmV3VmFsdWU7XG4gICAgICAgICAgICBpZiAoZGlzcGxheVRleHQgIT09IGFyZ3MuZGlzcGxheVRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLl9kaXNwbGF5VGV4dCA9IGFyZ3MuZGlzcGxheVRleHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5zZWxlY3Rpb24sIGFyZ3Mub2xkU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soYXJncy5uZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JlbW90ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlclJlbW90ZUVudHJpZXMoZGlmZkluU2V0cyhzZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uOiBhbnlbXSwgb2xkU2VsZWN0aW9uOiBhbnlbXSkge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnZhbHVlS2V5ID8gbmV3U2VsZWN0aW9uLm1hcChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUtleV0pIDogbmV3U2VsZWN0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1JlbW90ZVxuICAgICAgICAgICAgPyB0aGlzLmdldFJlbW90ZVNlbGVjdGlvbihzZWxlY3Rpb24sIG9sZFNlbGVjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5jb25jYXREaXNwbGF5VGV4dChuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTZWFyY2hQbGFjZWhvbGRlclRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoUGxhY2Vob2xkZXIgfHxcbiAgICAgICAgICAgICh0aGlzLmRpc2FibGVGaWx0ZXJpbmcgPyB0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfY29tYm9fYWRkQ3VzdG9tVmFsdWVzX3BsYWNlaG9sZGVyIDogdGhpcy5yZXNvdXJjZVN0cmluZ3MuaWd4X2NvbWJvX2ZpbHRlcl9zZWFyY2hfcGxhY2Vob2xkZXIpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHBvcHVsYXRlZCBpbiB0aGUgY29tYm8ncyB0ZXh0IGJveCAqL1xuICAgIHByaXZhdGUgY29uY2F0RGlzcGxheVRleHQoc2VsZWN0aW9uOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kaXNwbGF5S2V5ICE9PSBudWxsICYmIHRoaXMuZGlzcGxheUtleSAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgIHNlbGVjdGlvbi5tYXAoZW50cnkgPT4gZW50cnlbdGhpcy5kaXNwbGF5S2V5XSkuam9pbignLCAnKSA6XG4gICAgICAgICAgICBzZWxlY3Rpb24uam9pbignLCAnKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiIsIjxpZ3gtaW5wdXQtZ3JvdXAgI2lucHV0R3JvdXAgW3R5cGVdPVwidHlwZVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiW2lneExhYmVsXVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4TGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtcHJlZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1wcmVmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cImlneC1oaW50LCBbaWd4SGludF1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWhpbnQsIFtpZ3hIaW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aW5wdXQgaWd4SW5wdXQgI2NvbWJvSW5wdXQgbmFtZT1cImNvbWJvSW5wdXRcIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJkaXNwbGF5VmFsdWVcIiByZWFkb25seVxuICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCIgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhZHJvcGRvd24uY29sbGFwc2VkXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJkcm9wZG93bi5saXN0SWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IGxhYmVsPy5pZCB8fCBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiIC8+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cImlneC1zdWZmaXhcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LXN1ZmZpeFwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aWd4LXN1ZmZpeCAqbmdJZj1cImRpc3BsYXlWYWx1ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jb21ib19jbGVhckl0ZW1zX3BsYWNlaG9sZGVyXCIgY2xhc3M9XCJpZ3gtY29tYm9fX2NsZWFyLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDbGVhckl0ZW1zKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNsZWFySWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xlYXJJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpZ3gtaWNvbiAqbmdJZj1cIiFjbGVhckljb25UZW1wbGF0ZVwiIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwiaW5wdXRfY2xlYXJcIj48L2lneC1pY29uPlxuICAgIDwvaWd4LXN1ZmZpeD5cbiAgICA8aWd4LXN1ZmZpeCBjbGFzcz1cImlneC1jb21ib19fdG9nZ2xlLWJ1dHRvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9nZ2xlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9nZ2xlSWNvblRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2xsYXBzZWR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8aWd4LWljb24gKm5nSWY9XCIhdG9nZ2xlSWNvblRlbXBsYXRlXCIgZmFtaWx5PVwiZGVmYXVsdFwiIFtuYW1lXT1cInRvZ2dsZUljb25cIj48L2lneC1pY29uPlxuICAgIDwvaWd4LXN1ZmZpeD5cbjwvaWd4LWlucHV0LWdyb3VwPlxuPGlneC1jb21iby1kcm9wLWRvd24gI2lneENvbWJvRHJvcERvd24gY2xhc3M9XCJpZ3gtY29tYm9fX2Ryb3AtZG93blwiXG4gICAgW2xhYmVsbGVkQnldPVwiYXJpYUxhYmVsbGVkQnkgfHwgbGFiZWw/LmlkIHx8IHBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICBbd2lkdGhdPVwiaXRlbXNXaWR0aCB8fCAnMTAwJSdcIiAob3BlbmluZyk9XCJoYW5kbGVPcGVuaW5nKCRldmVudClcIiAoY2xvc2luZyk9XCJoYW5kbGVDbG9zaW5nKCRldmVudClcIlxuICAgIChvcGVuZWQpPVwiaGFuZGxlT3BlbmVkKClcIiAoY2xvc2VkKT1cImhhbmRsZUNsb3NlZCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1jb21ib19fc2VhcmNoXCIgKm5nSWY9XCJkaXNwbGF5U2VhcmNoSW5wdXRcIj5cbiAgICAgICAgPGlneC1pbnB1dC1ncm91cD5cbiAgICAgICAgICAgIDxpbnB1dCBpZ3hJbnB1dCAjc2VhcmNoSW5wdXQgbmFtZT1cInNlYXJjaElucHV0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVJbnB1dENoYW5nZSgkZXZlbnQpXCIgKGtleXVwKT1cImhhbmRsZUtleVVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiIChmb2N1cyk9XCJkcm9wZG93bi5vbkJsdXIoJGV2ZW50KVwiIFthdHRyLnBsYWNlaG9sZGVyXT1cImdldFNlYXJjaFBsYWNlaG9sZGVyVGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1sYWJlbD1cInNlYXJjaFwiLz5cbiAgICAgICAgICAgIDxpZ3gtc3VmZml4ICpuZ0lmPVwic2hvd1NlYXJjaENhc2VJY29uXCIgKGNsaWNrKT1cInRvZ2dsZUNhc2VTZW5zaXRpdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImZpbHRlcmluZ09wdGlvbnMuY2FzZVNlbnNpdGl2ZT8gJ2lneC1jb21ib19fY2FzZS1pY29uLS1hY3RpdmUnIDogJ2lneC1jb21ib19fY2FzZS1pY29uJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbWlseT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNhc2Vfc2Vuc2l0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiZmlsdGVyaW5nT3B0aW9ucy5jYXNlU2Vuc2l0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaWd4LWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9pZ3gtc3VmZml4PlxuICAgICAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICNkcm9wZG93bkl0ZW1Db250YWluZXIgY2xhc3M9XCJpZ3gtY29tYm9fX2NvbnRlbnRcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ2hpZGRlbidcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnJlbV09XCJpdGVtc01heEhlaWdodEluUmVtXCIgW2lneERyb3BEb3duSXRlbU5hdmlnYXRpb25dPVwiZHJvcGRvd25cIiAoZm9jdXMpPVwiZHJvcGRvd24ub25Gb2N1cygpXCJcbiAgICAgICAgW3RhYmluZGV4XT1cImRyb3Bkb3duLmNvbGxhcHNlZCA/IC0xIDogMFwiIFthdHRyLmlkXT1cImRyb3Bkb3duLmlkXCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImFjdGl2ZURlc2NlbmRhbnRcIj5cbiAgICAgICAgPGlneC1jb21iby1pdGVtIFtpdGVtSGVpZ2h0XT1cIml0ZW1IZWlnaHRcIiAqaWd4Rm9yPVwibGV0IGl0ZW0gb2YgZGF0YVxuICAgICAgICAgICAgfCBjb21ib0ZpbHRlcmluZzpmaWx0ZXJWYWx1ZTpkaXNwbGF5S2V5OmZpbHRlcmluZ09wdGlvbnM6ZmlsdGVyRnVuY3Rpb246ZGlzYWJsZUZpbHRlcmluZ1xuICAgICAgICAgICAgfCBjb21ib0dyb3VwaW5nOmdyb3VwS2V5OnZhbHVlS2V5Omdyb3VwU29ydGluZ0RpcmVjdGlvbjpjb21wYXJlQ29sbGF0b3I7XG4gICAgICAgICAgICBpbmRleCBhcyByb3dJbmRleDsgY29udGFpbmVyU2l6ZTogaXRlbXNNYXhIZWlnaHQ7IHNjcm9sbE9yaWVudGF0aW9uOiAndmVydGljYWwnOyBpdGVtU2l6ZTogaXRlbUhlaWdodFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiIFtpc0hlYWRlcl09XCJpdGVtPy5pc0hlYWRlclwiIFtpbmRleF09XCJyb3dJbmRleFwiIFtyb2xlXT1cIml0ZW0/LmlzSGVhZGVyPyAnZ3JvdXAnIDogJ29wdGlvbidcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5pc0hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJJdGVtVGVtcGxhdGUgPyBoZWFkZXJJdGVtVGVtcGxhdGUgOiBoZWFkZXJJdGVtQmFzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgZGF0YTogZGF0YSwgdmFsdWVLZXk6IHZhbHVlS2V5LCBncm91cEtleTogZ3JvdXBLZXksIGRpc3BsYXlLZXk6IGRpc3BsYXlLZXl9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwhLS0gaWYgaXRlbSBpcyAnbnVsbCcgaXQgc2hvdWxkIGJlIGRpc3BsYXllZCBhbmQgISEoaXRlbT8uaXNIZWFkZXIpIHdvdWxkIHJlc29sdmUgaXQgdG8gJ2ZhbHNlJyBhbmQgbm90IGRpc3BsYXkgaXQgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0/LmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgZGF0YTogZGF0YSwgdmFsdWVLZXk6IHZhbHVlS2V5LCBkaXNwbGF5S2V5OiBkaXNwbGF5S2V5fTtcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2lneC1jb21iby1pdGVtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtY29tYm9fX2FkZFwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMCB8fCBpc0FkZEJ1dHRvblZpc2libGUoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNvbWJvX19lbXB0eVwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGUgPyBlbXB0eVRlbXBsYXRlIDogZW1wdHlcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlneC1jb21iby1hZGQtaXRlbSBbaXRlbUhlaWdodF09XCJpdGVtSGVpZ2h0XCIgKm5nSWY9XCJpc0FkZEJ1dHRvblZpc2libGUoKVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiZHJvcGRvd24uY29sbGFwc2VkID8gLTEgOiBjdXN0b21WYWx1ZUZsYWcgPyAxIDogLTFcIiBjbGFzcz1cImlneC1jb21ib19fYWRkLWl0ZW1cIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jb21ib19hZGRDdXN0b21WYWx1ZXNfcGxhY2Vob2xkZXJcIiBbaW5kZXhdPVwidmlydHVhbFNjcm9sbENvbnRhaW5lci5pZ3hGb3JPZi5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRJdGVtVGVtcGxhdGUgPyBhZGRJdGVtVGVtcGxhdGUgOiBhZGRJdGVtRGVmYXVsdFwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaWd4LWNvbWJvLWFkZC1pdGVtPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9pZ3gtY29tYm8tZHJvcC1kb3duPlxuPG5nLXRlbXBsYXRlICNjb21wbGV4IGxldC1kaXNwbGF5IGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJkaXNwbGF5S2V5XCI+XG4gICAge3tkaXNwbGF5W2tleV19fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJpbWl0aXZlIGxldC1kaXNwbGF5PlxuICAgIHt7ZGlzcGxheX19XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICA8c3Bhbj57e3Jlc291cmNlU3RyaW5ncy5pZ3hfY29tYm9fZW1wdHlfbWVzc2FnZX19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYWRkSXRlbURlZmF1bHQgbGV0LWNvbnRyb2w+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uPVwiZmxhdFwiIGlneFJpcHBsZT57eyByZXNvdXJjZVN0cmluZ3MuaWd4X2NvbWJvX2FkZEN1c3RvbVZhbHVlc19wbGFjZWhvbGRlciB9fTwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVySXRlbUJhc2UgbGV0LWl0ZW0gbGV0LWtleT1cInZhbHVlS2V5XCIgbGV0LWdyb3VwS2V5PVwiZ3JvdXBLZXlcIj5cbiAgICB7eyBpdGVtW2tleV0gfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|