@kms-ngx-ui/presentational 18.0.2 → 18.0.4
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/assets/icons.json +1 -1
- package/esm2022/lib/enums/colors.enum.mjs +35 -0
- package/esm2022/lib/enums/iconSize.enum.mjs +23 -0
- package/esm2022/lib/models/index.mjs +1 -2
- package/esm2022/lib/ui/back-to-top/back-to-top.component.mjs +10 -5
- package/esm2022/lib/ui/color-input/color-input.component.mjs +1 -1
- package/esm2022/lib/ui/dropdown-from-data/dropdown-from-data.component.mjs +2 -2
- package/esm2022/lib/ui/file-input/file-input.component.mjs +8 -8
- package/esm2022/lib/ui/flyout/flyout.component.mjs +2 -2
- package/esm2022/lib/ui/icon/icon.component.mjs +17 -29
- package/esm2022/lib/ui/image-slider/image-slider.component.mjs +1 -1
- package/esm2022/lib/ui/kms-accordion-item/kms-accordion-item.component.mjs +5 -4
- package/esm2022/lib/ui/password/password.component.mjs +4 -4
- package/esm2022/lib/ui/time-input/time-input.component.mjs +9 -8
- package/esm2022/lib/ui/tooltip-icon/tooltip-icon.component.mjs +10 -22
- package/esm2022/public-api.mjs +3 -2
- package/fesm2022/kms-ngx-ui-presentational.mjs +91 -102
- package/fesm2022/kms-ngx-ui-presentational.mjs.map +1 -1
- package/lib/enums/colors.enum.d.ts +23 -0
- package/lib/enums/iconSize.enum.d.ts +13 -0
- package/lib/models/index.d.ts +0 -1
- package/lib/ui/back-to-top/back-to-top.component.d.ts +4 -0
- package/lib/ui/file-input/file-input.component.d.ts +2 -2
- package/lib/ui/icon/icon.component.d.ts +10 -21
- package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +1 -1
- package/lib/ui/password/password.component.d.ts +1 -1
- package/lib/ui/time-input/time-input.component.d.ts +2 -2
- package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +8 -9
- package/package.json +1 -1
- package/public-api.d.ts +2 -1
- package/src/assets/icons.json +1 -1
- package/src/assets/sprite.svg +1 -1
- package/src/lib/ui/back-to-top/back-to-top.component.scss +8 -3
- package/src/lib/ui/card/card.component.scss +4 -4
- package/src/lib/ui/icon/icon.component.scss +30 -92
- package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.scss +28 -60
- package/src/lib/ui/password/password.component.scss +0 -7
- package/src/lib/ui/slide-toggle/slide-toggle.component.scss +1 -1
- package/src/lib/ui/tooltip-icon/tooltip-icon.component.scss +5 -1
- package/esm2022/lib/models/iconSize.enum.mjs +0 -17
- package/esm2022/lib/ui/icon/iconSize.enum.mjs +0 -29
- package/lib/models/iconSize.enum.d.ts +0 -15
- package/lib/ui/icon/iconSize.enum.d.ts +0 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
["alert-outline", "arrow-down", "arrow-left", "arrow-right-left", "arrow-right", "arrow-top", "arrows-left", "calendar", "camera", "cardealer", "checkbox_active", "checkbox_inactive", "checkbox_inner", "checkmark-circle", "checkmark-filled", "chevron-down", "chevron-left", "chevron-right", "chevron-top", "circle", "clock", "close-circle", "close", "cog", "collapse-right", "create", "credit", "diamond", "download", "drag1", "edit-circle", "efficiency", "electro-cable", "ellipse", "end", "export-all", "facebook", "file-download", "file-upload", "floating_button", "floating_button_clear", "ic-invoice", "ic-policy", "ic_GEZ", "ic_abbrechen-filled", "ic_abbrechen", "ic_back", "ic_bereifung", "ic_bezeichnung", "ic_booking", "ic_cancel_form", "ic_car", "ic_check", "ic_check_form", "ic_co2", "ic_credit-card", "ic_edit", "ic_equipment", "ic_eye", "ic_eye_active", "ic_filter", "ic_form_error", "ic_form_finished", "ic_gkm", "ic_heart", "ic_heart_filled", "ic_historie", "ic_home", "ic_home_new", "ic_inclusivekm", "ic_info", "ic_kraftstoff", "ic_language", "ic_last", "ic_laufleistung", "ic_left", "ic_lkm
|
|
1
|
+
["alert-outline", "arrow-down", "arrow-left", "arrow-right-left", "arrow-right", "arrow-top", "arrows-left", "calendar", "camera", "cardealer", "checkbox_active", "checkbox_inactive", "checkbox_inner", "checkmark-circle", "checkmark-filled", "chevron-down", "chevron-left", "chevron-right", "chevron-top", "circle", "clock", "close-circle", "close", "cog", "collapse-right", "create", "credit", "diamond", "download", "drag1", "edit-circle", "efficiency", "electro-cable", "ellipse", "end", "export-all", "facebook", "file-download", "file-upload", "floating_button", "floating_button_clear", "ic-invoice", "ic-policy", "ic_GEZ", "ic_abbrechen-filled", "ic_abbrechen", "ic_back", "ic_bereifung", "ic_bezeichnung", "ic_booking", "ic_cancel_form", "ic_car", "ic_check", "ic_check_form", "ic_co2", "ic_credit-card", "ic_edit", "ic_equipment", "ic_eye", "ic_eye_active", "ic_filter", "ic_form_error", "ic_form_finished", "ic_gkm", "ic_heart", "ic_heart_filled", "ic_historie", "ic_home", "ic_home_new", "ic_inclusivekm", "ic_info", "ic_kraftstoff", "ic_language", "ic_last", "ic_laufleistung", "ic_left", "ic_lkm", "ic_lock", "ic_menu", "ic_minus", "ic_new-car", "ic_pickup", "ic_pin", "ic_plus-circle", "ic_plus", "ic_radiobutton_active", "ic_radiobutton_inactive", "ic_redirect", "ic_return", "ic_schaltung", "ic_settings", "ic_shops", "ic_side_front", "ic_side_front_left", "ic_side_front_left_tire", "ic_side_front_right", "ic_side_front_right_tire", "ic_side_front_zoomed", "ic_side_rear", "ic_side_rear_left", "ic_side_rear_left_tire", "ic_side_rear_right", "ic_side_rear_right_tire", "ic_slider", "ic_spezification", "ic_steuer_versicherung", "ic_tool", "ic_tooltip_drag", "ic_used-car", "ic_vertrag", "ic_wartung_verschleiss", "ic_zulassung", "image", "instagram", "kms-logo-white", "kms-logo", "linkedin", "mail", "map", "mileage", "move-list-left", "move-list-right", "palette", "pdf", "polestar", "position", "price-tag", "profile-filled", "profile", "profile2", "question-circle", "question-filled", "question", "rent", "search", "security", "special_entry", "star-outline", "star", "start", "submenu-dots", "subscription", "support", "trash", "tumblr", "twitter", "tyre", "upload", "user-circle", "users", "water", "whatsapp", "width", "xing", "youtube", "zahlung_active", "zahlungsanforderung"]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export var Color;
|
|
2
|
+
(function (Color) {
|
|
3
|
+
Color["PRIMARY"] = "--kms-primary";
|
|
4
|
+
Color["SECONDARY"] = "--kms-secondary";
|
|
5
|
+
Color["TERTIARY"] = "--kms-tertiary";
|
|
6
|
+
Color["SUCCESS"] = "--kms-success";
|
|
7
|
+
Color["ALERT"] = "--kms-alert";
|
|
8
|
+
Color["ERROR"] = "--kms-error";
|
|
9
|
+
Color["DISABLED"] = "--kms-disabled";
|
|
10
|
+
Color["WHITE"] = "--kms-white";
|
|
11
|
+
Color["BLACK"] = "--kms-black";
|
|
12
|
+
})(Color || (Color = {}));
|
|
13
|
+
export const ColorsArr = [
|
|
14
|
+
Color.PRIMARY,
|
|
15
|
+
Color.SECONDARY,
|
|
16
|
+
Color.TERTIARY,
|
|
17
|
+
Color.SUCCESS,
|
|
18
|
+
Color.ALERT,
|
|
19
|
+
Color.ERROR,
|
|
20
|
+
Color.DISABLED,
|
|
21
|
+
Color.WHITE,
|
|
22
|
+
Color.BLACK,
|
|
23
|
+
];
|
|
24
|
+
export const ColorsLabelsArr = {
|
|
25
|
+
[Color.PRIMARY]: 'PRIMARY',
|
|
26
|
+
[Color.SECONDARY]: 'SECONDARY',
|
|
27
|
+
[Color.TERTIARY]: 'TERTIARY',
|
|
28
|
+
[Color.SUCCESS]: 'SUCCESS',
|
|
29
|
+
[Color.ALERT]: 'ALERT',
|
|
30
|
+
[Color.ERROR]: 'ERROR',
|
|
31
|
+
[Color.DISABLED]: 'DISABLED',
|
|
32
|
+
[Color.WHITE]: 'WHITE',
|
|
33
|
+
[Color.BLACK]: 'BLACK',
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvZW51bXMvY29sb3JzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksS0FVWDtBQVZELFdBQVksS0FBSztJQUNmLGtDQUF5QixDQUFBO0lBQ3pCLHNDQUE2QixDQUFBO0lBQzdCLG9DQUEyQixDQUFBO0lBQzNCLGtDQUF5QixDQUFBO0lBQ3pCLDhCQUFxQixDQUFBO0lBQ3JCLDhCQUFxQixDQUFBO0lBQ3JCLG9DQUEyQixDQUFBO0lBQzNCLDhCQUFxQixDQUFBO0lBQ3JCLDhCQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxLQUFLLEtBQUwsS0FBSyxRQVVoQjtBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixLQUFLLENBQUMsT0FBTztJQUNiLEtBQUssQ0FBQyxTQUFTO0lBQ2YsS0FBSyxDQUFDLFFBQVE7SUFDZCxLQUFLLENBQUMsT0FBTztJQUNiLEtBQUssQ0FBQyxLQUFLO0lBQ1gsS0FBSyxDQUFDLEtBQUs7SUFDWCxLQUFLLENBQUMsUUFBUTtJQUNkLEtBQUssQ0FBQyxLQUFLO0lBQ1gsS0FBSyxDQUFDLEtBQUs7Q0FDWixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVM7SUFDMUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVztJQUM5QixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVO0lBQzVCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFNBQVM7SUFDMUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztJQUN0QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQ3RCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVU7SUFDNUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztJQUN0QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDb2xvciB7XG4gIFBSSU1BUlkgPSAnLS1rbXMtcHJpbWFyeScsXG4gIFNFQ09OREFSWSA9ICctLWttcy1zZWNvbmRhcnknLFxuICBURVJUSUFSWSA9ICctLWttcy10ZXJ0aWFyeScsXG4gIFNVQ0NFU1MgPSAnLS1rbXMtc3VjY2VzcycsXG4gIEFMRVJUID0gJy0ta21zLWFsZXJ0JyxcbiAgRVJST1IgPSAnLS1rbXMtZXJyb3InLFxuICBESVNBQkxFRCA9ICctLWttcy1kaXNhYmxlZCcsXG4gIFdISVRFID0gJy0ta21zLXdoaXRlJyxcbiAgQkxBQ0sgPSAnLS1rbXMtYmxhY2snLFxufVxuXG5leHBvcnQgY29uc3QgQ29sb3JzQXJyID0gW1xuICBDb2xvci5QUklNQVJZLFxuICBDb2xvci5TRUNPTkRBUlksXG4gIENvbG9yLlRFUlRJQVJZLFxuICBDb2xvci5TVUNDRVNTLFxuICBDb2xvci5BTEVSVCxcbiAgQ29sb3IuRVJST1IsXG4gIENvbG9yLkRJU0FCTEVELFxuICBDb2xvci5XSElURSxcbiAgQ29sb3IuQkxBQ0ssXG5dO1xuXG5leHBvcnQgY29uc3QgQ29sb3JzTGFiZWxzQXJyID0ge1xuICBbQ29sb3IuUFJJTUFSWV06ICdQUklNQVJZJyxcbiAgW0NvbG9yLlNFQ09OREFSWV06ICdTRUNPTkRBUlknLFxuICBbQ29sb3IuVEVSVElBUlldOiAnVEVSVElBUlknLFxuICBbQ29sb3IuU1VDQ0VTU106ICdTVUNDRVNTJyxcbiAgW0NvbG9yLkFMRVJUXTogJ0FMRVJUJyxcbiAgW0NvbG9yLkVSUk9SXTogJ0VSUk9SJyxcbiAgW0NvbG9yLkRJU0FCTEVEXTogJ0RJU0FCTEVEJyxcbiAgW0NvbG9yLldISVRFXTogJ1dISVRFJyxcbiAgW0NvbG9yLkJMQUNLXTogJ0JMQUNLJyxcbn07XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright KMS GmbH
|
|
3
|
+
*/
|
|
4
|
+
export var IconSizePx;
|
|
5
|
+
(function (IconSizePx) {
|
|
6
|
+
IconSizePx[IconSizePx["XXS"] = 16] = "XXS";
|
|
7
|
+
IconSizePx[IconSizePx["XS"] = 20] = "XS";
|
|
8
|
+
IconSizePx[IconSizePx["SM"] = 32] = "SM";
|
|
9
|
+
IconSizePx[IconSizePx["MD"] = 64] = "MD";
|
|
10
|
+
IconSizePx[IconSizePx["LG"] = 128] = "LG";
|
|
11
|
+
IconSizePx[IconSizePx["XL"] = 256] = "XL";
|
|
12
|
+
IconSizePx[IconSizePx["XXL"] = 512] = "XXL";
|
|
13
|
+
})(IconSizePx || (IconSizePx = {}));
|
|
14
|
+
export const IconSizesArr = [
|
|
15
|
+
IconSizePx.XXS,
|
|
16
|
+
IconSizePx.XS,
|
|
17
|
+
IconSizePx.SM,
|
|
18
|
+
IconSizePx.MD,
|
|
19
|
+
IconSizePx.LG,
|
|
20
|
+
IconSizePx.XL,
|
|
21
|
+
IconSizePx.XXL,
|
|
22
|
+
];
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvblNpemUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9lbnVtcy9pY29uU2l6ZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsTUFBTSxDQUFOLElBQVksVUFRWDtBQVJELFdBQVksVUFBVTtJQUNwQiwwQ0FBUSxDQUFBO0lBQ1Isd0NBQU8sQ0FBQTtJQUNQLHdDQUFPLENBQUE7SUFDUCx3Q0FBTyxDQUFBO0lBQ1AseUNBQVEsQ0FBQTtJQUNSLHlDQUFRLENBQUE7SUFDUiwyQ0FBUyxDQUFBO0FBQ1gsQ0FBQyxFQVJXLFVBQVUsS0FBVixVQUFVLFFBUXJCO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLFVBQVUsQ0FBQyxHQUFHO0lBQ2QsVUFBVSxDQUFDLEVBQUU7SUFDYixVQUFVLENBQUMsRUFBRTtJQUNiLFVBQVUsQ0FBQyxFQUFFO0lBQ2IsVUFBVSxDQUFDLEVBQUU7SUFDYixVQUFVLENBQUMsRUFBRTtJQUNiLFVBQVUsQ0FBQyxHQUFHO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNvcHlyaWdodCBLTVMgR21iSFxuICovXG5cbmV4cG9ydCBlbnVtIEljb25TaXplUHgge1xuICBYWFMgPSAxNixcbiAgWFMgPSAyMCxcbiAgU00gPSAzMixcbiAgTUQgPSA2NCxcbiAgTEcgPSAxMjgsXG4gIFhMID0gMjU2LFxuICBYWEwgPSA1MTIsXG59XG5cbmV4cG9ydCBjb25zdCBJY29uU2l6ZXNBcnIgPSBbXG4gIEljb25TaXplUHguWFhTLFxuICBJY29uU2l6ZVB4LlhTLFxuICBJY29uU2l6ZVB4LlNNLFxuICBJY29uU2l6ZVB4Lk1ELFxuICBJY29uU2l6ZVB4LkxHLFxuICBJY29uU2l6ZVB4LlhMLFxuICBJY29uU2l6ZVB4LlhYTCxcbl07XG4iXX0=
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export * from './iconSize.enum';
|
|
2
1
|
export * from './image-snippet.model';
|
|
3
2
|
export * from './is-value.function';
|
|
4
3
|
export * from './types/attached-file-dto.model';
|
|
5
4
|
export * from './types/nullable.type';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ltYWdlLXNuaXBwZXQubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy12YWx1ZS5mdW5jdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2F0dGFjaGVkLWZpbGUtZHRvLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbnVsbGFibGUudHlwZSc7XG4iXX0=
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @copyright KMS GmbH
|
|
3
3
|
*/
|
|
4
|
-
import { Component, HostListener, Inject, PLATFORM_ID } from '@angular/core';
|
|
5
4
|
import { isPlatformBrowser } from '@angular/common';
|
|
5
|
+
import { Component, HostListener, Inject, PLATFORM_ID } from '@angular/core';
|
|
6
|
+
import { Color } from '../../enums/colors.enum';
|
|
7
|
+
import { IconSizePx } from '../../enums/iconSize.enum';
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
7
9
|
import * as i1 from "@angular/common";
|
|
8
|
-
import * as i2 from "
|
|
10
|
+
import * as i2 from "../../directives/size.directive";
|
|
11
|
+
import * as i3 from "../icon/icon.component";
|
|
9
12
|
export class BackToTopComponent {
|
|
10
13
|
constructor(platformId) {
|
|
11
14
|
this.platformId = platformId;
|
|
15
|
+
this.IconSizePx = IconSizePx;
|
|
16
|
+
this.Color = Color;
|
|
12
17
|
}
|
|
13
18
|
onWindowScroll() {
|
|
14
19
|
if (isPlatformBrowser(this.platformId)) {
|
|
@@ -36,11 +41,11 @@ export class BackToTopComponent {
|
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
43
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BackToTopComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BackToTopComponent, selector: "kms-back-to-top", host: { listeners: { "window:scroll": "onWindowScroll()" } }, ngImport: i0, template: "<div\n class=\"scrollToTop\"\n [ngClass]=\"{ show: windowScrolled }\"\n (click)=\"scrollToTop()\"\n>\n <div class=\"scrollToTop-inner\">\n <kms-icon
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BackToTopComponent, selector: "kms-back-to-top", host: { listeners: { "window:scroll": "onWindowScroll()" } }, ngImport: i0, template: "<div\n class=\"scrollToTop\"\n [ngClass]=\"{ show: windowScrolled }\"\n (click)=\"scrollToTop()\"\n>\n <div class=\"scrollToTop-inner\">\n <kms-icon\n icon=\"floating_button_clear\"\n [color]=\"Color.WHITE\"\n [size]=\"IconSizePx.SM\"\n ></kms-icon>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.SizeDirective, selector: "[size]", inputs: ["size"] }, { kind: "component", type: i3.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "size", "dontUseSprite", "color"] }] }); }
|
|
40
45
|
}
|
|
41
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BackToTopComponent, decorators: [{
|
|
42
47
|
type: Component,
|
|
43
|
-
args: [{ selector: 'kms-back-to-top', template: "<div\n class=\"scrollToTop\"\n [ngClass]=\"{ show: windowScrolled }\"\n (click)=\"scrollToTop()\"\n>\n <div class=\"scrollToTop-inner\">\n <kms-icon
|
|
48
|
+
args: [{ selector: 'kms-back-to-top', template: "<div\n class=\"scrollToTop\"\n [ngClass]=\"{ show: windowScrolled }\"\n (click)=\"scrollToTop()\"\n>\n <div class=\"scrollToTop-inner\">\n <kms-icon\n icon=\"floating_button_clear\"\n [color]=\"Color.WHITE\"\n [size]=\"IconSizePx.SM\"\n ></kms-icon>\n </div>\n</div>\n" }]
|
|
44
49
|
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
45
50
|
type: Inject,
|
|
46
51
|
args: [PLATFORM_ID]
|
|
@@ -48,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
48
53
|
type: HostListener,
|
|
49
54
|
args: ['window:scroll', []]
|
|
50
55
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay10by10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2JhY2stdG8tdG9wL2JhY2stdG8tdG9wLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9iYWNrLXRvLXRvcC9iYWNrLXRvLXRvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFNdkQsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUF3QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBSDFELGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsVUFBSyxHQUFHLEtBQUssQ0FBQztJQUUrQyxDQUFDO0lBRzlELGNBQWM7UUFDWixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQ0UsTUFBTSxDQUFDLE9BQU87Z0JBQ2QsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTO2dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQzdCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxJQUNMLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUN2QyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVM7Z0JBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsRUFDNUIsQ0FBQztnQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxDQUFDLFNBQVMsWUFBWTtnQkFDcEIsTUFBTSxhQUFhLEdBQ2pCLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNoRSxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMzQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDOytHQXRDVSxrQkFBa0Isa0JBTVQsV0FBVzttR0FOcEIsa0JBQWtCLHFIQ2IvQix3U0FhQTs7NEZEQWEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGlCQUFpQjs7MEJBU2QsTUFBTTsyQkFBQyxXQUFXO3lDQUcvQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjb3B5cmlnaHQgS01TIEdtYkhcbiAqL1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuLi8uLi9lbnVtcy9jb2xvcnMuZW51bSc7XG5pbXBvcnQgeyBJY29uU2l6ZVB4IH0gZnJvbSAnLi4vLi4vZW51bXMvaWNvblNpemUuZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ttcy1iYWNrLXRvLXRvcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYWNrLXRvLXRvcC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEJhY2tUb1RvcENvbXBvbmVudCB7XG4gIHdpbmRvd1Njcm9sbGVkPzogYm9vbGVhbjtcblxuICBJY29uU2l6ZVB4ID0gSWNvblNpemVQeDtcbiAgQ29sb3IgPSBDb2xvcjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwdWJsaWMgcGxhdGZvcm1JZDogT2JqZWN0KSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSlcbiAgb25XaW5kb3dTY3JvbGwoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgd2luZG93LnNjcm9sbFkgfHxcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fFxuICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA+IDEwMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMud2luZG93U2Nyb2xsZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKHRoaXMud2luZG93U2Nyb2xsZWQgJiYgd2luZG93LnNjcm9sbFkpIHx8XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHxcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPCAxMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMud2luZG93U2Nyb2xsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb1RvcCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgKGZ1bmN0aW9uIHNtb290aHNjcm9sbCgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNjcm9sbCA9XG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDtcbiAgICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPiAwKSB7XG4gICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShzbW9vdGhzY3JvbGwpO1xuICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBjdXJyZW50U2Nyb2xsIC0gY3VycmVudFNjcm9sbCAvIDgpO1xuICAgICAgICB9XG4gICAgICB9KSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNjcm9sbFRvVG9wXCJcbiAgW25nQ2xhc3NdPVwieyBzaG93OiB3aW5kb3dTY3JvbGxlZCB9XCJcbiAgKGNsaWNrKT1cInNjcm9sbFRvVG9wKClcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2Nyb2xsVG9Ub3AtaW5uZXJcIj5cbiAgICA8a21zLWljb25cbiAgICAgIGljb249XCJmbG9hdGluZ19idXR0b25fY2xlYXJcIlxuICAgICAgW2NvbG9yXT1cIkNvbG9yLldISVRFXCJcbiAgICAgIFtzaXplXT1cIkljb25TaXplUHguU01cIlxuICAgID48L2ttcy1pY29uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -55,7 +55,7 @@ export class ColorInputComponent extends FormControlParentComponent {
|
|
|
55
55
|
useExisting: forwardRef(() => ColorInputComponent),
|
|
56
56
|
multi: true,
|
|
57
57
|
},
|
|
58
|
-
], usesInheritance: true, ngImport: i0, template: "\n<form [formGroup]=\"form\" *ngIf=\"formInitialized\">\n <div>\n <mat-form-field class=\"colorInput\">\n <kms-tooltip-icon [tooltipText]=\"tooltipText\" *ngIf=\"tooltipText\"></kms-tooltip-icon>\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" [(ngModel)]=\"value\" matInput formControlName=\"color\" [placeholder]=\"placeholder\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n <input type=\"color\" [value]=\"value && matchesHex(value) ? value : '#ffffff'\" (change)=\"updateSelectedColor($event)\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n </mat-form-field>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.TooltipIconComponent, selector: "kms-tooltip-icon", inputs: ["tooltipText", "placement", "delay", "iconSize", "
|
|
58
|
+
], usesInheritance: true, ngImport: i0, template: "\n<form [formGroup]=\"form\" *ngIf=\"formInitialized\">\n <div>\n <mat-form-field class=\"colorInput\">\n <kms-tooltip-icon [tooltipText]=\"tooltipText\" *ngIf=\"tooltipText\"></kms-tooltip-icon>\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" [(ngModel)]=\"value\" matInput formControlName=\"color\" [placeholder]=\"placeholder\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n <input type=\"color\" [value]=\"value && matchesHex(value) ? value : '#ffffff'\" (change)=\"updateSelectedColor($event)\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n </mat-form-field>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.TooltipIconComponent, selector: "kms-tooltip-icon", inputs: ["tooltipText", "placement", "delay", "iconSize", "tooltipAlwaysVisible"] }] }); }
|
|
59
59
|
}
|
|
60
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColorInputComponent, decorators: [{
|
|
61
61
|
type: Component,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, forwardRef, Input, } from '@angular/core';
|
|
2
2
|
import { NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
3
|
-
import { EnumValues } from 'enum-values
|
|
3
|
+
import { EnumValues } from 'enum-values';
|
|
4
4
|
import { FormControlParentComponent } from '../../parent-components/form-control.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/forms";
|
|
@@ -198,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
198
198
|
}], disableOptions: [{
|
|
199
199
|
type: Input
|
|
200
200
|
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEdBRWxCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7OztBQUU1Rjs7R0FFRztBQVlILE1BQU0sT0FBTyx5QkFDWCxTQUFRLDBCQUEwQjtJQXdDbEMsWUFDUyxXQUErQixFQUMvQixRQUFtQjtRQUUxQixLQUFLLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSHRCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBMUI1QiwyRUFBMkU7UUFDbEUsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFPdEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRXJDLHFCQUFxQjtRQUNaLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFekIsU0FBSSxHQUFVLEVBQUUsQ0FBQztRQUNqQixXQUFNLEdBQVUsRUFBRSxDQUFDO1FBRTFCLFdBQU0sR0FBRyxNQUFNLENBQUM7SUFPaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2pDLFlBQVksRUFBRSxFQUFFO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLGVBQWU7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ25CLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZTthQUNuQyxDQUFDLENBQUM7UUFFTCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FDcEMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUN0QyxDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUNwQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3BDLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRXRELDZKQUE2SjtnQkFDN0osSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO2dCQUV6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3BCLFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQ3RCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxHQUFRO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FDbEMsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFO29CQUNoRSxHQUFHLEVBQUUsR0FBRztpQkFDVCxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBeUIsQ0FBQztJQUN0RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sQ0FDTCxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUMzRSxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLE9BQU8sQ0FDWixJQUFJLENBQUMsTUFBTTtZQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUN6RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQzdDLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBeUI7UUFDMUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQzsrR0F2TFUseUJBQXlCO21HQUF6Qix5QkFBeUIsbWZBUnpCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLHNFQy9CSCw2bkNBcUNBOzs0RkRKYSx5QkFBeUI7a0JBWHJDLFNBQVM7K0JBQ0Usd0JBQXdCLGFBRXZCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjsrR0FPUSxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUFycmF5LFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IEVudW1WYWx1ZXMgfSBmcm9tICdlbnVtLXZhbHVlcy9zcmMvZW51bVZhbHVlcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIERyb3Bkb3duIGZyb20gZGF0YSBjb21wb25lbnQge0BsaW5rIGh0dHBzOi8vbGVhc2VwbGFuLWRldi5yZW50b2ZmaWNlLmRlL3N0eWxlZ3VpZGUjdWktZWxlbWVudHN9XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ttcy1kcm9wZG93bi1mcm9tLWRhdGEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcm9wZG93bkZyb21EYXRhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRnJvbURhdGFDb21wb25lbnRcbiAgZXh0ZW5kcyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlc1xue1xuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYSBlbnVtIHNldC4gQ2FuIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAnb3B0aW9uc1BsYWluQXJyYXknIHRvIHNldCBkaWZlcmVudCB2YWx1ZXMgYnkgaW5kZXhcbiAgQElucHV0KCkgb3B0aW9uc0VudW06IGFueTtcblxuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYSBzaW1wbGUgYXJyYXkgb2YgZWxlbWVudHNcbiAgQElucHV0KCkgb3B0aW9uc1BsYWluQXJyYXk6IGFueVtdO1xuXG4gIC8vIHN0cnVjdHVyZWQgZGF0YSBhcyBhbiBhcnJheSBvZiBvYmplY3RzIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgaW5wdXQgJ21hcEtleScgYW5kICdtYXBWYWx1ZSdcbiAgQElucHV0KCkgb3B0aW9uc09iakFycmF5OiBhbnlbXTtcbiAgLy8ga2V5IGlkZW50aWZpZXIgb2YgdGhlIG9iai4gSWYgbWFwVmFsdWUgZG9lc250IGV4aXN0LCBtYXBLZXkgaXMgYWxzbyB0aGUgdmFsdWVcbiAgQElucHV0KCkgbWFwS2V5PzogYW55O1xuICAvLyB2YWx1ZSBpZGVudGlmaWVyIG9mIHRoZSBvYmpcbiAgQElucHV0KCkgbWFwVmFsdWU/OiBhbnk7XG5cbiAgLy8gb3B0aW9ucyBmb3IgdGhlIGRyb3Bkb3duIGhhdmUgYSBudWxsIHZhbHVlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5XG4gIEBJbnB1dCgpIGhhc051bGxPcHRpb24gPSBmYWxzZTtcblxuICAvLyBwcmVzZWxlY3RlZCBrZXlzIG9mIHRoZSBkcm9wZG93blxuICBASW5wdXQoKSBwcmVzZWxlY3RlZEtleXM6IGFueTtcblxuICAvLyB0cmFuc2xhdGlvbiBvYmplY3QgZm9yIHRoZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXJcbiAgQElucHV0KCkgdHJhbnNsYXRpb24/OiBJVHJhbnNsYXRpb247XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZUVudW1JbmRleEFzVmFsdWUgPSBmYWxzZTtcblxuICAvLyBtdWx0aXBsZSBzZWxlY3Rpb25cbiAgQElucHV0KCkgbXVsdGlwbGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZWxlY3RBbGxUZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlT3B0aW9ucyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBrZXlzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gIE9iamVjdCA9IE9iamVjdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlciwgcmVuZGVyZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2sgdXNlZCB0byBzeW5jIGNoYW5nZXMgb24gc2V0IExhYmVsIGFuZCBUeXBlXG4gICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zUGxhaW5BcnJheTtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgfVxuICAgIHRoaXMuc2V0S2V5VmFsdWVzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGRyb3Bkb3duRGF0YTogW10sXG4gICAgfSk7XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZS5kcm9wZG93bkRhdGE7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLmRyb3Bkb3duRGF0YSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcmVzZWxlY3RlZEtleXMpXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGRyb3Bkb3duRGF0YTogdGhpcy5wcmVzZWxlY3RlZEtleXMsXG4gICAgICB9KTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICAvKipcbiAgICogdHJhbnNvZnJtcyB0aGUgZGF0YSB2YWx1ZXMgdG8gdGhlIGNvcnJlY3QgZm9ybWF0IGZvciBiZSB1c2VkIGJ5IHRoZSB0ZW1wbGF0ZVxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIHByaXZhdGUgc2V0S2V5VmFsdWVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wdGlvbnNPYmpBcnJheSAmJiB0aGlzLm1hcEtleSAmJiB0aGlzLm1hcFZhbHVlKSB7XG4gICAgICB0aGlzLmtleXMgPSB0aGlzLm9wdGlvbnNPYmpBcnJheS5tYXAoKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBLZXl9YF0pO1xuICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLm9wdGlvbnNPYmpBcnJheS5tYXAoXG4gICAgICAgIChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwVmFsdWV9YF1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnNPYmpBcnJheSAmJiB0aGlzLm1hcEtleSkge1xuICAgICAgdGhpcy5rZXlzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwS2V5fWBdKTtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKFxuICAgICAgICAob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcEtleX1gXVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9uc0VudW0pIHtcbiAgICAgIHRoaXMua2V5cyA9IEVudW1WYWx1ZXMuZ2V0TmFtZXModGhpcy5vcHRpb25zRW51bSk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zUGxhaW5BcnJheSkge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBFbnVtVmFsdWVzLmdldFZhbHVlcyh0aGlzLm9wdGlvbnNFbnVtKTtcblxuICAgICAgICAvLyB2YXIgd2hvIGRlZmluZXMgaWYgZW51bSBpcyBjb21wb25lZCBqdXN0IHdpdGgga2V5cyBvciBrZXlWYWx1ZXMuIEUuZyBlbnVtIEtleUVudW0geyBWQUxVRTEsIFZBTFVFMiB9IG9yIGVudW0gS2V5VmFsdWVFbnVtIHsgVkFMVUU0ID0gJ1Y0JywgVkFMVUU1ID0gJ1Y1JyB9XG4gICAgICAgIGxldCBrZXlWYWx1ZUVudW0gPSBmYWxzZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMua2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpICE9PSB2YWx1ZXNbaV0pIHtcbiAgICAgICAgICAgIGtleVZhbHVlRW51bSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChrZXlWYWx1ZUVudW0gfHwgdGhpcy51c2VFbnVtSW5kZXhBc1ZhbHVlKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMgPSBFbnVtVmFsdWVzLmdldE5hbWVzKHRoaXMub3B0aW9uc0VudW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc051bGxPcHRpb24gPT09IHRydWUpIHRoaXMua2V5cy51bnNoaWZ0KG51bGwpO1xuICAgIGlmICh0aGlzLmhhc051bGxPcHRpb24gPT09IHRydWUpIHRoaXMudmFsdWVzLnVuc2hpZnQobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZHJvcGRvd24gYmFzZWQgaWYgdHJhbnNsYXRpb24gaXMgc2V0XG4gICAqIEBwYXJhbSBrZXlcbiAgICovXG4gIHB1YmxpYyBzZXREaXNwbGF5S2V5KGtleTogYW55KSB7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRpb24pIHtcbiAgICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uLmlzUHJlZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnNlcnZpY2U/Lmluc3RhbnQ/LihcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLnBhdGggKyAnLicgKyBrZXlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50cmFuc2xhdGlvbi51c2VLZXlBc1ZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnNlcnZpY2U/Lmluc3RhbnQ/Lih0aGlzLnRyYW5zbGF0aW9uLnBhdGgsIHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4odGhpcy50cmFuc2xhdGlvbi5wYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZHJvcGRvd25EYXRhOiB2YWx1ZSxcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VsZWN0SXRlbUVtaXR0ZXIuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEVsZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMuZHJvcGRvd25EYXRhIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGFsbEVsZW1lbnRzQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52YWx1ZXMgJiYgdGhpcy5zZWxlY3RlZEVsZW1lbnRzPy52YWx1ZT8ubGVuZ3RoID09PSB0aGlzLnZhbHVlcy5sZW5ndGhcbiAgICApO1xuICB9XG5cbiAgaXNDaGVja2JveEluZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICB0aGlzLnZhbHVlcyAmJlxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHM/LnZhbHVlPy5sZW5ndGggPCB0aGlzLnZhbHVlcy5sZW5ndGggJiZcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzPy52YWx1ZT8ubGVuZ3RoICE9PSAwXG4gICAgKTtcbiAgfVxuXG4gIHRvZ2dsZUFsbFNlbGVjdGlvbihjaGFuZ2U6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZS5jaGVja2VkKSB7XG4gICAgICB0aGlzLmNoZWNrQWxsRmlsdGVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZHJvcGRvd25EYXRhLnNldFZhbHVlKFtdKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0FsbEZpbHRlcnMoKSB7XG4gICAgaWYgKHRoaXMudmFsdWVzKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZHJvcGRvd25EYXRhLnNldFZhbHVlKHRoaXMudmFsdWVzKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdGhhdCBkZWZpbmVzIHRoZSB0cmFuc2xhdGlvbiBvYmplY3QgaW4gdGVtcGxhdGVcbiAqL1xuaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XG4gIHBhdGg6IHN0cmluZztcbiAgaXNQcmVmaXg/OiBib29sZWFuO1xuICB1c2VLZXlBc1ZhbHVlPzogYm9vbGVhbjtcbiAgc2VydmljZTogYW55O1xufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgIFthdHRyLnJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbZmxvYXRMYWJlbF09XCJwbGFjZWhvbGRlciA/ICdhbHdheXMnIDogJ2F1dG8nXCJcbiAgPlxuICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICA8bWF0LXNlbGVjdFxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIGRpc2FibGVPcHRpb25DZW50ZXJpbmdcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidmFsdWVDaGFuZ2VkKCRldmVudD8udmFsdWUpXCJcbiAgICAgICNjaGlsZFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgPlxuICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAqbmdJZj1cInNlbGVjdEFsbFRleHQgJiYgIWRpc2FibGVPcHRpb25zXCJcbiAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWZyb20tZGF0YV9fY2hlY2tib3hcIlxuICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc0NoZWNrYm94SW5kZXRlcm1pbmF0ZSgpXCJcbiAgICAgICAgW2NoZWNrZWRdPVwiYWxsRWxlbWVudHNDaGVja2VkKClcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIHt7IHNlbGVjdEFsbFRleHQgfX1cbiAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlc1tpXVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlT3B0aW9uc1wiXG4gICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiKGhhc051bGxPcHRpb24gJiYgaSAhPSAwKSB8fCAhaGFzTnVsbE9wdGlvblwiPnt7XG4gICAgICAgICAgc2V0RGlzcGxheUtleShrZXkpXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZm9ybT5cbiJdfQ==
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEdBRWxCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7QUFFNUY7O0dBRUc7QUFZSCxNQUFNLE9BQU8seUJBQ1gsU0FBUSwwQkFBMEI7SUF3Q2xDLFlBQ1MsV0FBK0IsRUFDL0IsUUFBbUI7UUFFMUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUh0QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTFCNUIsMkVBQTJFO1FBQ2xFLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBT3RCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUVyQyxxQkFBcUI7UUFDWixhQUFRLEdBQUcsS0FBSyxDQUFD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O3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1BcnJheSxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBFbnVtVmFsdWVzIH0gZnJvbSAnZW51bS12YWx1ZXMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJlbnQtY29tcG9uZW50cy9mb3JtLWNvbnRyb2wuY29tcG9uZW50JztcblxuLyoqXG4gKiBEcm9wZG93biBmcm9tIGRhdGEgY29tcG9uZW50IHtAbGluayBodHRwczovL2xlYXNlcGxhbi1kZXYucmVudG9mZmljZS5kZS9zdHlsZWd1aWRlI3VpLWVsZW1lbnRzfVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrbXMtZHJvcGRvd24tZnJvbS1kYXRhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWZyb20tZGF0YS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHJvcGRvd25Gcm9tRGF0YUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkZyb21EYXRhQ29tcG9uZW50XG4gIGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXNcbntcbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgZW51bSBzZXQuIENhbiBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggJ29wdGlvbnNQbGFpbkFycmF5JyB0byBzZXQgZGlmZXJlbnQgdmFsdWVzIGJ5IGluZGV4XG4gIEBJbnB1dCgpIG9wdGlvbnNFbnVtOiBhbnk7XG5cbiAgLy8gc3RydWN0dXJlZCBkYXRhIGFzIGEgc2ltcGxlIGFycmF5IG9mIGVsZW1lbnRzXG4gIEBJbnB1dCgpIG9wdGlvbnNQbGFpbkFycmF5OiBhbnlbXTtcblxuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGlucHV0ICdtYXBLZXknIGFuZCAnbWFwVmFsdWUnXG4gIEBJbnB1dCgpIG9wdGlvbnNPYmpBcnJheTogYW55W107XG4gIC8vIGtleSBpZGVudGlmaWVyIG9mIHRoZSBvYmouIElmIG1hcFZhbHVlIGRvZXNudCBleGlzdCwgbWFwS2V5IGlzIGFsc28gdGhlIHZhbHVlXG4gIEBJbnB1dCgpIG1hcEtleT86IGFueTtcbiAgLy8gdmFsdWUgaWRlbnRpZmllciBvZiB0aGUgb2JqXG4gIEBJbnB1dCgpIG1hcFZhbHVlPzogYW55O1xuXG4gIC8vIG9wdGlvbnMgZm9yIHRoZSBkcm9wZG93biBoYXZlIGEgbnVsbCB2YWx1ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcnJheVxuICBASW5wdXQoKSBoYXNOdWxsT3B0aW9uID0gZmFsc2U7XG5cbiAgLy8gcHJlc2VsZWN0ZWQga2V5cyBvZiB0aGUgZHJvcGRvd25cbiAgQElucHV0KCkgcHJlc2VsZWN0ZWRLZXlzOiBhbnk7XG5cbiAgLy8gdHJhbnNsYXRpb24gb2JqZWN0IGZvciB0aGUgbGFiZWwgYW5kIHBsYWNlaG9sZGVyXG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uPzogSVRyYW5zbGF0aW9uO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSB1c2VFbnVtSW5kZXhBc1ZhbHVlID0gZmFsc2U7XG5cbiAgLy8gbXVsdGlwbGUgc2VsZWN0aW9uXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2VsZWN0QWxsVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZU9wdGlvbnMgPSBmYWxzZTtcblxuICBwdWJsaWMga2V5czogYW55W10gPSBbXTtcbiAgcHVibGljIHZhbHVlczogYW55W10gPSBbXTtcblxuICBPYmplY3QgPSBPYmplY3Q7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgc3VwZXIoZm9ybUJ1aWxkZXIsIHJlbmRlcmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rIHVzZWQgdG8gc3luYyBjaGFuZ2VzIG9uIHNldCBMYWJlbCBhbmQgVHlwZVxuICAgKiBAcGFyYW0gY2hhbmdlc1xuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnNQbGFpbkFycmF5KSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgICB0aGlzLmtleXMgPSB0aGlzLm9wdGlvbnNQbGFpbkFycmF5O1xuICAgIH1cbiAgICB0aGlzLnNldEtleVZhbHVlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBkcm9wZG93bkRhdGE6IFtdLFxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0gdmFsdWUuZHJvcGRvd25EYXRhO1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZS5kcm9wZG93bkRhdGEpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJlc2VsZWN0ZWRLZXlzKVxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBkcm9wZG93bkRhdGE6IHRoaXMucHJlc2VsZWN0ZWRLZXlzLFxuICAgICAgfSk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyYW5zb2ZybXMgdGhlIGRhdGEgdmFsdWVzIHRvIHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgYmUgdXNlZCBieSB0aGUgdGVtcGxhdGVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHNldEtleVZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkgJiYgdGhpcy5tYXBWYWx1ZSkge1xuICAgICAgdGhpcy5rZXlzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwS2V5fWBdKTtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKFxuICAgICAgICAob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcFZhbHVlfWBdXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkpIHtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcCgob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcEtleX1gXSk7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcChcbiAgICAgICAgKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBLZXl9YF1cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnNFbnVtKSB7XG4gICAgICB0aGlzLmtleXMgPSBFbnVtVmFsdWVzLmdldE5hbWVzKHRoaXMub3B0aW9uc0VudW0pO1xuICAgICAgaWYgKHRoaXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLm9wdGlvbnNQbGFpbkFycmF5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gRW51bVZhbHVlcy5nZXRWYWx1ZXModGhpcy5vcHRpb25zRW51bSk7XG5cbiAgICAgICAgLy8gdmFyIHdobyBkZWZpbmVzIGlmIGVudW0gaXMgY29tcG9uZWQganVzdCB3aXRoIGtleXMgb3Iga2V5VmFsdWVzLiBFLmcgZW51bSBLZXlFbnVtIHsgVkFMVUUxLCBWQUxVRTIgfSBvciBlbnVtIEtleVZhbHVlRW51bSB7IFZBTFVFNCA9ICdWNCcsIFZBTFVFNSA9ICdWNScgfVxuICAgICAgICBsZXQga2V5VmFsdWVFbnVtID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSAhPT0gdmFsdWVzW2ldKSB7XG4gICAgICAgICAgICBrZXlWYWx1ZUVudW0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5VmFsdWVFbnVtIHx8IHRoaXMudXNlRW51bUluZGV4QXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gRW51bVZhbHVlcy5nZXROYW1lcyh0aGlzLm9wdGlvbnNFbnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLmtleXMudW5zaGlmdChudWxsKTtcbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLnZhbHVlcy51bnNoaWZ0KG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCB0aGUgdmFsdWUgb2YgdGhlIGRyb3Bkb3duIGJhc2VkIGlmIHRyYW5zbGF0aW9uIGlzIHNldFxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBwdWJsaWMgc2V0RGlzcGxheUtleShrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uKSB7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbi5pc1ByZWZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4oXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5wYXRoICsgJy4nICsga2V5XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHJhbnNsYXRpb24udXNlS2V5QXNWYWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4odGhpcy50cmFuc2xhdGlvbi5wYXRoLCB7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VydmljZT8uaW5zdGFudD8uKHRoaXMudHJhbnNsYXRpb24ucGF0aCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICB2YWx1ZUNoYW5nZWQodmFsdWU6IGFueSkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGRyb3Bkb3duRGF0YTogdmFsdWUsXG4gICAgfSk7XG4gICAgdGhpcy5vblNlbGVjdEl0ZW1FbWl0dGVyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRFbGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duRGF0YSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBhbGxFbGVtZW50c0NoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudmFsdWVzICYmIHRoaXMuc2VsZWN0ZWRFbGVtZW50cz8udmFsdWU/Lmxlbmd0aCA9PT0gdGhpcy52YWx1ZXMubGVuZ3RoXG4gICAgKTtcbiAgfVxuXG4gIGlzQ2hlY2tib3hJbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgdGhpcy52YWx1ZXMgJiZcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzPy52YWx1ZT8ubGVuZ3RoIDwgdGhpcy52YWx1ZXMubGVuZ3RoICYmXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50cz8udmFsdWU/Lmxlbmd0aCAhPT0gMFxuICAgICk7XG4gIH1cblxuICB0b2dnbGVBbGxTZWxlY3Rpb24oY2hhbmdlOiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2UuY2hlY2tlZCkge1xuICAgICAgdGhpcy5jaGVja0FsbEZpbHRlcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duRGF0YS5zZXRWYWx1ZShbXSk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBbGxGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLnZhbHVlcykge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRyb3Bkb3duRGF0YS5zZXRWYWx1ZSh0aGlzLnZhbHVlcyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRoYXQgZGVmaW5lcyB0aGUgdHJhbnNsYXRpb24gb2JqZWN0IGluIHRlbXBsYXRlXG4gKi9cbmludGVyZmFjZSBJVHJhbnNsYXRpb24ge1xuICBwYXRoOiBzdHJpbmc7XG4gIGlzUHJlZml4PzogYm9vbGVhbjtcbiAgdXNlS2V5QXNWYWx1ZT86IGJvb2xlYW47XG4gIHNlcnZpY2U6IGFueTtcbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Zsb2F0TGFiZWxdPVwicGxhY2Vob2xkZXIgPyAnYWx3YXlzJyA6ICdhdXRvJ1wiXG4gID5cbiAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1zZWxlY3RcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZCgkZXZlbnQ/LnZhbHVlKVwiXG4gICAgICAjY2hpbGRcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgID5cbiAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RBbGxUZXh0ICYmICFkaXNhYmxlT3B0aW9uc1wiXG4gICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1mcm9tLWRhdGFfX2NoZWNrYm94XCJcbiAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNDaGVja2JveEluZGV0ZXJtaW5hdGUoKVwiXG4gICAgICAgIFtjaGVja2VkXT1cImFsbEVsZW1lbnRzQ2hlY2tlZCgpXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQWxsU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICB7eyBzZWxlY3RBbGxUZXh0IH19XG4gICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5czsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZXNbaV1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZU9wdGlvbnNcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIihoYXNOdWxsT3B0aW9uICYmIGkgIT0gMCkgfHwgIWhhc051bGxPcHRpb25cIj57e1xuICAgICAgICAgIHNldERpc3BsYXlLZXkoa2V5KVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
import {
|
|
1
|
+
import { Component, EventEmitter, forwardRef, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, } from '@angular/forms';
|
|
3
|
+
import { IconSizePx } from '../../enums/iconSize.enum';
|
|
3
4
|
import { isValue } from '../../models/is-value.function';
|
|
4
|
-
import { IconSizePx } from '../icon/iconSize.enum';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/forms";
|
|
7
7
|
import * as i2 from "@angular/common";
|
|
@@ -97,7 +97,7 @@ export class FileInputComponent {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
else {
|
|
100
|
-
console.warn(
|
|
100
|
+
console.warn('No file selected');
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
@@ -128,7 +128,7 @@ export class FileInputComponent {
|
|
|
128
128
|
Filename: name ? name : '',
|
|
129
129
|
ImageAsDataURL: content ? content : '',
|
|
130
130
|
ImageLink: imageLink ? imageLink : '',
|
|
131
|
-
Text: text ? text : ''
|
|
131
|
+
Text: text ? text : '',
|
|
132
132
|
};
|
|
133
133
|
}
|
|
134
134
|
/**
|
|
@@ -154,7 +154,7 @@ export class FileInputComponent {
|
|
|
154
154
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
155
155
|
ngOnInit() { }
|
|
156
156
|
ngOnDestroy() {
|
|
157
|
-
this.subscriptions.forEach(s => s.unsubscribe());
|
|
157
|
+
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
158
158
|
}
|
|
159
159
|
registerOnChange(fn) {
|
|
160
160
|
this.onChange = fn;
|
|
@@ -193,7 +193,7 @@ export class FileInputComponent {
|
|
|
193
193
|
useExisting: forwardRef(() => FileInputComponent),
|
|
194
194
|
multi: true,
|
|
195
195
|
},
|
|
196
|
-
], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\" (change)=\"newImageLoading=true\" class=\"fileInput\"> \n\n <div *ngIf=\"form.value.Filename && previewImage\">\n <div *ngIf=\"newImageLoading\">\n {{ 'file-input.loading' | translate }}\n </div>\n <div *ngIf=\"!newImageLoading\">\n <div class=\"\">\n <div class=\"\">\n <img *ngIf=\"form.value.ImageLink && form.value.ImageLink !== '' && !(form.value.ImageAsDataURL && form.value.ImageAsDataURL !== '')\" [src]=\"form.value.ImageAsDataURL\" [src]=\"form.value.ImageLink\" style=\"height: 40px; width: fit-content;\" />\n <img *ngIf=\"form.value.ImageAsDataURL && form.value.ImageAsDataURL !== ''\" [src]=\"form.value.ImageAsDataURL\" style=\"height: 40px; width: fit-content;\" />\n </div>\n <div class=\"\">{{form.value.Filename}}</div>\n <div class=\"\">\n <div (click)=\"removeFromList()\" *ngIf=\"allowRemove\">\n <kms-icon icon=\"trash\" [size]=\"IconSizePx.TINY\" iconClass=\"color-black\"></kms-icon> \n {{ 'file-input.remove' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!previewImage\">\n <div class=\"\">{{form.value.Filename}}</div>\n </div>\n\n <button (click)=\"selectImageOverlay()\" class=\"button-primary-font-color\" mat-stroked-button>\n <span>{{ label }}</span>\n </button>\n <input\n type=\"file\"\n [accept]=\"acceptedFileMimetypes\"\n style=\"display: none\"\n #fileInput\n (click)=\"clearInputValue($event)\"\n (change)=\"selectImage($event)\"\n />\n\n <input type=\"hidden\" [formControl]=\"form.controls['ImageIdent']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageLink']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Filename']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageAsDataURL']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Text']\" />\n\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.SizeDirective, selector: "[size]", inputs: ["size"] }, { kind: "component", type: i5.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "
|
|
196
|
+
], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\" (change)=\"newImageLoading=true\" class=\"fileInput\"> \n\n <div *ngIf=\"form.value.Filename && previewImage\">\n <div *ngIf=\"newImageLoading\">\n {{ 'file-input.loading' | translate }}\n </div>\n <div *ngIf=\"!newImageLoading\">\n <div class=\"\">\n <div class=\"\">\n <img *ngIf=\"form.value.ImageLink && form.value.ImageLink !== '' && !(form.value.ImageAsDataURL && form.value.ImageAsDataURL !== '')\" [src]=\"form.value.ImageAsDataURL\" [src]=\"form.value.ImageLink\" style=\"height: 40px; width: fit-content;\" />\n <img *ngIf=\"form.value.ImageAsDataURL && form.value.ImageAsDataURL !== ''\" [src]=\"form.value.ImageAsDataURL\" style=\"height: 40px; width: fit-content;\" />\n </div>\n <div class=\"\">{{form.value.Filename}}</div>\n <div class=\"\">\n <div (click)=\"removeFromList()\" *ngIf=\"allowRemove\">\n <kms-icon icon=\"trash\" [size]=\"IconSizePx.TINY\" iconClass=\"color-black\"></kms-icon> \n {{ 'file-input.remove' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!previewImage\">\n <div class=\"\">{{form.value.Filename}}</div>\n </div>\n\n <button (click)=\"selectImageOverlay()\" class=\"button-primary-font-color\" mat-stroked-button>\n <span>{{ label }}</span>\n </button>\n <input\n type=\"file\"\n [accept]=\"acceptedFileMimetypes\"\n style=\"display: none\"\n #fileInput\n (click)=\"clearInputValue($event)\"\n (change)=\"selectImage($event)\"\n />\n\n <input type=\"hidden\" [formControl]=\"form.controls['ImageIdent']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageLink']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Filename']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageAsDataURL']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Text']\" />\n\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.SizeDirective, selector: "[size]", inputs: ["size"] }, { kind: "component", type: i5.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "size", "dontUseSprite", "color"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
|
|
197
197
|
}
|
|
198
198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileInputComponent, decorators: [{
|
|
199
199
|
type: Component,
|
|
@@ -229,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
229
229
|
}], formDataChanged: [{
|
|
230
230
|
type: Output
|
|
231
231
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBYSxZQUFZLEVBQUUsTUFBTSxFQUFxQyxNQUFNLGVBQWUsQ0FBQztBQUVwSixPQUFPLEVBR0gsa0JBQWtCLEVBRWxCLGFBQWEsRUFDYixpQkFBaUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQU14QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQUVuRCxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBb0IvQixNQUFNLE9BQU8sa0JBQWtCO0lBNEIzQjs7Ozs7OztPQU9HO0lBQ0gsWUFDVyxXQUErQixFQUMvQixNQUFzQixFQUN0QixFQUFxQjtJQUM1Qiw2Q0FBNkM7SUFDdEMsUUFBbUI7UUFKbkIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRXJCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFyQ3JCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixnQkFBVyxHQUFHLElBQUksQ0FBQztR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QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDakQsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLGtJQ3BDTCxzbUVBNENPOzs0RkRMTSxrQkFBa0I7a0JBbEI5QixTQUFTOytCQUNJLGdCQUFnQixhQUdmO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzRLQUs4QixTQUFTO3NCQUF2QyxTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsS0FBSztzQkFBYixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFlSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIFJlbmRlcmVyMiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIEFwcGxpY2F0aW9uUmVmLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgVW50eXBlZEZvcm1Hcm91cCxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLy9pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJY29uU2l6ZSB9IGZyb20gJy4uLy4uL21vZGVscy9pY29uU2l6ZS5lbnVtJztcbmltcG9ydCB7IEF0dGFjaGVkRmlsZURUTyB9IGZyb20gJy4uLy4uL21vZGVscy90eXBlcy9hdHRhY2hlZC1maWxlLWR0by5tb2RlbCc7XG5pbXBvcnQgeyBpc1ZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2lzLXZhbHVlLmZ1bmN0aW9uJztcbmltcG9ydCB7IEljb25TaXplUHggfSBmcm9tICcuLi9pY29uL2ljb25TaXplLmVudW0nO1xuXG4vLyBNYXggc2l6ZSBpbiBieXRlcyBvZiB1cGxvYWRlZCBpbWFnZVxuY29uc3QgTUFYX1NJWkVfQllURVMgPSAyMDk3MTUyO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1maWxlLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcblxuZXhwb3J0IGNsYXNzIEZpbGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICAgIFxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIHB1YmxpYyBmaWxlSW5wdXQ6IGFueTtcblxuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgXG4gICAgQElucHV0KCkgcHJldmlld0ltYWdlID0gdHJ1ZTsgXG4gICAgQElucHV0KCkgYWxsb3dSZW1vdmUgPSB0cnVlOyBcbiAgICBASW5wdXQoKSBwcmV2aWV3SW1hZ2VUZXh0ID0gJyc7IFxuICAgIEBJbnB1dCgpIG1heFNpemVCeXRlcyA9IE1BWF9TSVpFX0JZVEVTOyBcbiAgICBASW5wdXQoKSByZXNpemVQaXhlbHMgPSAwOyBcbiAgICBASW5wdXQoKSBhY2NlcHRlZEZpbGVNaW1ldHlwZXMgPSAnaW1hZ2UvanBlZywgaW1hZ2UvanBnLCBpbWFnZS9wbmcnOyBcblxuICAgIGZvcm09IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBJbWFnZUlkZW50OiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgSW1hZ2VMaW5rOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgRmlsZW5hbWU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBJbWFnZUFzRGF0YVVSTDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIFRleHQ6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICAgIH0pO1xuXG4gICAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgICBuZXdJbWFnZUxvYWRpbmcgPSBmYWxzZVxuXG4gICAgSWNvblNpemVQeCA9IEljb25TaXplUHg7XG5cbiAgICBAT3V0cHV0KCkgZm9ybURhdGFDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8VW50eXBlZEZvcm1Hcm91cD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtQnVpbGRlciBcbiAgICAgKiBAcGFyYW0gYXBwUmVmIFxuICAgICAqIEBwYXJhbSBjZCBcbiAgICAgKiBAcGFyYW0gdHJhbnNsYXRlU2VydmljZSBcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIgXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLCBcbiAgICAgICAgcHVibGljIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIC8vcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgICAgICBcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQ2xpY2sgb24gYnV0dG9uIHRyaWdnZXJzIGZpbGUtaW5wdXQgdG8gb3BlbiBPUyBmaWxlIGRpYWxvZ1xuICAgICAqL1xuICAgIHNlbGVjdEltYWdlT3ZlcmxheSgpIHtcbiAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG1hbmFnZSB0aGUgaW5wdXQgaW1hZ2VcbiAgICAgKiBSZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBmaWxlIGV4Y2VlZHMgbWF4aW11bSB3YW50ZWQgZmlsZXNpemUgKE1iKS4gXG4gICAgICogQHBhcmFtIGV2XG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBzZWxlY3RJbWFnZShldjogYW55KSB7XG4gICAgICAgIGlmIChldi50YXJnZXQuZmlsZXMgJiYgZXYudGFyZ2V0LmZpbGVzWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlOkZpbGUgPSBldi50YXJnZXQuZmlsZXNbMF07XG5cbiAgICAgICAgICAgIGlmIChmaWxlLnNpemUgPiB0aGlzLm1heFNpemVCeXRlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJbnB1dFZhbHVlKGV2KTtcbiAgICAgICAgICAgICAgICAvL2FsZXJ0KHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdlcnJvcnMuZmlsZVRvb0JpZycpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubmV3SW1hZ2VMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmKHRoaXMucmVzaXplUGl4ZWxzID4gMCl7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ29VcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgICAgICAgICAgICAgICAgICBpbWdFbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzaXplZExvZ28gPSB0aGlzLnJlc2l6ZUltYWdlKGltZ0VsLCB0aGlzLnJlc2l6ZVBpeGVscyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdGaWxlID0gdGhpcy5nZW5lcmF0ZU1vZGVsKGZpbGUubmFtZSwgcmVzaXplZExvZ28sIHRoaXMudmFsdWUuSW1hZ2VJZGVudCwgdGhpcy52YWx1ZS5JbWFnZUxpbmssIHRoaXMudmFsdWUuVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlPW5ld0ZpbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ltYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGltZ0VsLnNyYyA9IGxvZ29Vcmw7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RmlsZSA9IHRoaXMuZ2VuZXJhdGVNb2RlbChmaWxlLm5hbWUsIGUudGFyZ2V0LnJlc3VsdCwgdGhpcy52YWx1ZS5JbWFnZUlkZW50LCB0aGlzLnZhbHVlLkltYWdlTGluaywgdGhpcy52YWx1ZS5UZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWU9bmV3RmlsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3SW1hZ2VMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJObyBmaWxlIHNlbGVjdGVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzaXplIGFuIGltYWdlXG4gICAgICogQHBhcmFtIGltZ0VsXG4gICAgICogQHBhcmFtIHdhbnRlZFdpZHRoIGFzIG51bWJlclxuICAgICAqIEByZXR1cm5zIHN0cmluZyBcbiAgICAgKi9cbiAgICAgcHJpdmF0ZSByZXNpemVJbWFnZShpbWdFbDogYW55LCB3YW50ZWRXaWR0aDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY29uc3QgYXNwZWN0ID0gaW1nRWwud2lkdGggLyBpbWdFbC5oZWlnaHQ7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHdhbnRlZFdpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gd2FudGVkV2lkdGggLyBhc3BlY3Q7XG4gICAgICAgIGlmIChpc1ZhbHVlKGN0eCkpIGN0eC5kcmF3SW1hZ2UoaW1nRWwsIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGUgZGVmYXVsdCBvYmplY3RcbiAgICAgKiBAcGFyYW0gbmFtZSBhcyBzdHJpbmdcbiAgICAgKiBAcGFyYW0gY29udGVudCBhcyBzdHJpbmdcbiAgICAgKiBAcmV0dXJucyBBdHRhY2hlZEZpbGVEVE9cbiAgICAgKi9cbiAgICBnZW5lcmF0ZU1vZGVsKG5hbWU/OiBzdHJpbmcsIGNvbnRlbnQ/OiBzdHJpbmcsIGlkZW50Pzogc3RyaW5nLCBpbWFnZUxpbms/OiBzdHJpbmcsIHRleHQ/OiBzdHJpbmcpe1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgSW1hZ2VJZGVudDogaWRlbnQgPyBpZGVudCA6ICcnLFxuICAgICAgICAgICAgRmlsZW5hbWU6IG5hbWUgPyBuYW1lIDogJycsXG4gICAgICAgICAgICBJbWFnZUFzRGF0YVVSTDogY29udGVudCA/IGNvbnRlbnQgOiAnJyxcbiAgICAgICAgICAgIEltYWdlTGluazogaW1hZ2VMaW5rID8gaW1hZ2VMaW5rIDogJycsXG4gICAgICAgICAgICBUZXh0OiB0ZXh0ID8gdGV4dCA6ICcnXG4gICAgICAgIH0gYXMgQXR0YWNoZWRGaWxlRFRPO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBpbWFnZSBcbiAgICAgKi9cbiAgICAgcmVtb3ZlRnJvbUxpc3QoKXtcbiAgICAgICAgdGhpcy52YWx1ZT0gdGhpcy5nZW5lcmF0ZU1vZGVsKCcnLCcnLCAnJywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB2YWx1ZVxuICAgICAqL1xuICAgICAgICBnZXQgdmFsdWUoKTogQXR0YWNoZWRGaWxlRFRPIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXQgdmFsdWVcbiAgICAgKi9cbiAgICBzZXQgdmFsdWUodmFsdWU6IEF0dGFjaGVkRmlsZURUTykge1xuICAgICAgICB0aGlzLmZvcm0uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5mb3JtRGF0YUNoYW5nZWQuZW1pdCh0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgbmdPbkluaXQoKSB7fVxuXG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH0gICBcblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBBdHRhY2hlZEZpbGVEVE8gfCBudWxsKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYWRqYWNlbnQtb3ZlcmxvYWQtc2lnbmF0dXJlc1xuICAgIHZhbGlkYXRlKF86IFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkID8gbnVsbCA6IHsgc3R5bGVzOiB7IHZhbGlkOiBmYWxzZSB9IH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT25DbGljayBldmVudCBsaXN0ZW5lciBvZiBpbnB1dCNmaWxlSW5wdXQgdG8gY2xlYXIgaGlzIGlucHV0IHZhbHVlXG4gICAgICovXG4gICAgY2xlYXJJbnB1dFZhbHVlKGV2OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGV2LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBlbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKGNoYW5nZSk9XCJuZXdJbWFnZUxvYWRpbmc9dHJ1ZVwiIGNsYXNzPVwiZmlsZUlucHV0XCI+IFxuXG4gICAgPGRpdiAqbmdJZj1cImZvcm0udmFsdWUuRmlsZW5hbWUgJiYgcHJldmlld0ltYWdlXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJuZXdJbWFnZUxvYWRpbmdcIj5cbiAgICAgICAgICAgIHt7ICdmaWxlLWlucHV0LmxvYWRpbmcnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIW5ld0ltYWdlTG9hZGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImZvcm0udmFsdWUuSW1hZ2VMaW5rICYmIGZvcm0udmFsdWUuSW1hZ2VMaW5rICE9PSAnJyAmJiAhKGZvcm0udmFsdWUuSW1hZ2VBc0RhdGFVUkwgJiYgZm9ybS52YWx1ZS5JbWFnZUFzRGF0YVVSTCAhPT0gJycpXCIgW3NyY109XCJmb3JtLnZhbHVlLkltYWdlQXNEYXRhVVJMXCIgW3NyY109XCJmb3JtLnZhbHVlLkltYWdlTGlua1wiIHN0eWxlPVwiaGVpZ2h0OiA0MHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImZvcm0udmFsdWUuSW1hZ2VBc0RhdGFVUkwgJiYgZm9ybS52YWx1ZS5JbWFnZUFzRGF0YVVSTCAhPT0gJydcIiBbc3JjXT1cImZvcm0udmFsdWUuSW1hZ2VBc0RhdGFVUkxcIiBzdHlsZT1cImhlaWdodDogNDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7Zm9ybS52YWx1ZS5GaWxlbmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJyZW1vdmVGcm9tTGlzdCgpXCIgKm5nSWY9XCJhbGxvd1JlbW92ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGttcy1pY29uIGljb249XCJ0cmFzaFwiIFtzaXplXT1cIkljb25TaXplUHguVElOWVwiIGljb25DbGFzcz1cImNvbG9yLWJsYWNrXCI+PC9rbXMtaWNvbj4gXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnZmlsZS1pbnB1dC5yZW1vdmUnIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhcHJldmlld0ltYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj57e2Zvcm0udmFsdWUuRmlsZW5hbWV9fTwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwic2VsZWN0SW1hZ2VPdmVybGF5KClcIiBjbGFzcz1cImJ1dHRvbi1wcmltYXJ5LWZvbnQtY29sb3JcIiBtYXQtc3Ryb2tlZC1idXR0b24+XG4gICAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlTWltZXR5cGVzXCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dFZhbHVlKCRldmVudClcIlxuICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEltYWdlKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydJbWFnZUlkZW50J11cIiAvPlxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ0ltYWdlTGluayddXCIgLz5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydGaWxlbmFtZSddXCIgLz5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydJbWFnZUFzRGF0YVVSTCddXCIgLz5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydUZXh0J11cIiAvPlxuXG48L2Zvcm0+Il19
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCxhQUFhLEVBQ2IsaUJBQWlCLEVBRWpCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBR3pELHNDQUFzQztBQUN0QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFtQi9CLE1BQU0sT0FBTyxrQkFBa0I7SUE0QjdCOzs7Ozs7O09BT0c7SUFDSCxZQUNTLFdBQStCLEVBQy9CLE1BQXNCLEVBQ3RCLEVBQXFCO0lBQzVCLDZDQUE2QztJQUN0QyxRQUFtQjtRQUpuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFFckIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQXRDbkIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FB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TyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7Z0JBQ2pELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixrSUM3Q0gsc21FQTRDTzs7NEZER00sa0JBQWtCO2tCQWpCOUIsU0FBUzsrQkFDRSxnQkFBZ0IsYUFHZjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs0S0FHOEIsU0FBUztzQkFBdkMsU0FBUzt1QkFBQyxXQUFXO2dCQUViLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBZUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBVbnR5cGVkRm9ybUdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSWNvblNpemVQeCB9IGZyb20gJy4uLy4uL2VudW1zL2ljb25TaXplLmVudW0nO1xuaW1wb3J0IHsgaXNWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9pcy12YWx1ZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBBdHRhY2hlZEZpbGVEVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdHlwZXMvYXR0YWNoZWQtZmlsZS1kdG8ubW9kZWwnO1xuXG4vLyBNYXggc2l6ZSBpbiBieXRlcyBvZiB1cGxvYWRlZCBpbWFnZVxuY29uc3QgTUFYX1NJWkVfQllURVMgPSAyMDk3MTUyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrbXMtZmlsZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWxlSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIHB1YmxpYyBmaWxlSW5wdXQ6IGFueTtcblxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIEBJbnB1dCgpIHByZXZpZXdJbWFnZSA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93UmVtb3ZlID0gdHJ1ZTtcbiAgQElucHV0KCkgcHJldmlld0ltYWdlVGV4dCA9ICcnO1xuICBASW5wdXQoKSBtYXhTaXplQnl0ZXMgPSBNQVhfU0laRV9CWVRFUztcbiAgQElucHV0KCkgcmVzaXplUGl4ZWxzID0gMDtcbiAgQElucHV0KCkgYWNjZXB0ZWRGaWxlTWltZXR5cGVzID0gJ2ltYWdlL2pwZWcsIGltYWdlL2pwZywgaW1hZ2UvcG5nJztcblxuICBmb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgSW1hZ2VJZGVudDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gICAgSW1hZ2VMaW5rOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKSxcbiAgICBGaWxlbmFtZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gICAgSW1hZ2VBc0RhdGFVUkw6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICAgIFRleHQ6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICB9KTtcblxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBuZXdJbWFnZUxvYWRpbmcgPSBmYWxzZTtcblxuICBJY29uU2l6ZVB4ID0gSWNvblNpemVQeDtcblxuICBAT3V0cHV0KCkgZm9ybURhdGFDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8VW50eXBlZEZvcm1Hcm91cD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICogQHBhcmFtIGZvcm1CdWlsZGVyXG4gICAqIEBwYXJhbSBhcHBSZWZcbiAgICogQHBhcmFtIGNkXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVTZXJ2aWNlXG4gICAqIEBwYXJhbSByZW5kZXJlclxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHVibGljIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAvL3ByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgLyoqXG4gICAqICBDbGljayBvbiBidXR0b24gdHJpZ2dlcnMgZmlsZS1pbnB1dCB0byBvcGVuIE9TIGZpbGUgZGlhbG9nXG4gICAqL1xuICBzZWxlY3RJbWFnZU92ZXJsYXkoKSB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIG1hbmFnZSB0aGUgaW5wdXQgaW1hZ2VcbiAgICogUmV0dXJucyBhbiBlcnJvciBpZiB0aGUgZmlsZSBleGNlZWRzIG1heGltdW0gd2FudGVkIGZpbGVzaXplIChNYikuXG4gICAqIEBwYXJhbSBldlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc2VsZWN0SW1hZ2UoZXY6IGFueSkge1xuICAgIGlmIChldi50YXJnZXQuZmlsZXMgJiYgZXYudGFyZ2V0LmZpbGVzWzBdKSB7XG4gICAgICBjb25zdCBmaWxlOiBGaWxlID0gZXYudGFyZ2V0LmZpbGVzWzBdO1xuXG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhTaXplQnl0ZXMpIHtcbiAgICAgICAgdGhpcy5jbGVhcklucHV0VmFsdWUoZXYpO1xuICAgICAgICAvL2FsZXJ0KHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdlcnJvcnMuZmlsZVRvb0JpZycpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXdJbWFnZUxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZVBpeGVscyA+IDApIHtcbiAgICAgICAgICBjb25zdCBsb2dvVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgICAgICBjb25zdCBpbWdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgICAgICAgIGltZ0VsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNpemVkTG9nbyA9IHRoaXMucmVzaXplSW1hZ2UoaW1nRWwsIHRoaXMucmVzaXplUGl4ZWxzKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB0aGlzLmdlbmVyYXRlTW9kZWwoXG4gICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgcmVzaXplZExvZ28sXG4gICAgICAgICAgICAgIHRoaXMudmFsdWUuSW1hZ2VJZGVudCxcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZS5JbWFnZUxpbmssXG4gICAgICAgICAgICAgIHRoaXMudmFsdWUuVGV4dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXdGaWxlO1xuICAgICAgICAgICAgdGhpcy5uZXdJbWFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW1nRWwuc3JjID0gbG9nb1VybDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdGaWxlID0gdGhpcy5nZW5lcmF0ZU1vZGVsKFxuICAgICAgICAgICAgICBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgIGUudGFyZ2V0LnJlc3VsdCxcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZS5JbWFnZUlkZW50LFxuICAgICAgICAgICAgICB0aGlzLnZhbHVlLkltYWdlTGluayxcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZS5UZXh0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ld0ZpbGU7XG4gICAgICAgICAgICB0aGlzLm5ld0ltYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignTm8gZmlsZSBzZWxlY3RlZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNpemUgYW4gaW1hZ2VcbiAgICogQHBhcmFtIGltZ0VsXG4gICAqIEBwYXJhbSB3YW50ZWRXaWR0aCBhcyBudW1iZXJcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHJlc2l6ZUltYWdlKGltZ0VsOiBhbnksIHdhbnRlZFdpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCBhc3BlY3QgPSBpbWdFbC53aWR0aCAvIGltZ0VsLmhlaWdodDtcbiAgICBjYW52YXMud2lkdGggPSB3YW50ZWRXaWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gd2FudGVkV2lkdGggLyBhc3BlY3Q7XG4gICAgaWYgKGlzVmFsdWUoY3R4KSkgY3R4LmRyYXdJbWFnZShpbWdFbCwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGRlZmF1bHQgb2JqZWN0XG4gICAqIEBwYXJhbSBuYW1lIGFzIHN0cmluZ1xuICAgKiBAcGFyYW0gY29udGVudCBhcyBzdHJpbmdcbiAgICogQHJldHVybnMgQXR0YWNoZWRGaWxlRFRPXG4gICAqL1xuICBnZW5lcmF0ZU1vZGVsKFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgY29udGVudD86IHN0cmluZyxcbiAgICBpZGVudD86IHN0cmluZyxcbiAgICBpbWFnZUxpbms/OiBzdHJpbmcsXG4gICAgdGV4dD86IHN0cmluZ1xuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgSW1hZ2VJZGVudDogaWRlbnQgPyBpZGVudCA6ICcnLFxuICAgICAgRmlsZW5hbWU6IG5hbWUgPyBuYW1lIDogJycsXG4gICAgICBJbWFnZUFzRGF0YVVSTDogY29udGVudCA/IGNvbnRlbnQgOiAnJyxcbiAgICAgIEltYWdlTGluazogaW1hZ2VMaW5rID8gaW1hZ2VMaW5rIDogJycsXG4gICAgICBUZXh0OiB0ZXh0ID8gdGV4dCA6ICcnLFxuICAgIH0gYXMgQXR0YWNoZWRGaWxlRFRPO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBpbWFnZVxuICAgKi9cbiAgcmVtb3ZlRnJvbUxpc3QoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2VuZXJhdGVNb2RlbCgnJywgJycsICcnLCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHZhbHVlXG4gICAqL1xuICBnZXQgdmFsdWUoKTogQXR0YWNoZWRGaWxlRFRPIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCB2YWx1ZVxuICAgKi9cbiAgc2V0IHZhbHVlKHZhbHVlOiBBdHRhY2hlZEZpbGVEVE8pIHtcbiAgICB0aGlzLmZvcm0uc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkLmVtaXQodGhpcy5mb3JtKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBBdHRhY2hlZEZpbGVEVE8gfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2FkamFjZW50LW92ZXJsb2FkLXNpZ25hdHVyZXNcbiAgdmFsaWRhdGUoXzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZCA/IG51bGwgOiB7IHN0eWxlczogeyB2YWxpZDogZmFsc2UgfSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE9uQ2xpY2sgZXZlbnQgbGlzdGVuZXIgb2YgaW5wdXQjZmlsZUlucHV0IHRvIGNsZWFyIGhpcyBpbnB1dCB2YWx1ZVxuICAgKi9cbiAgY2xlYXJJbnB1dFZhbHVlKGV2OiBhbnkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXYudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgZWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoY2hhbmdlKT1cIm5ld0ltYWdlTG9hZGluZz10cnVlXCIgY2xhc3M9XCJmaWxlSW5wdXRcIj4gXG5cbiAgICA8ZGl2ICpuZ0lmPVwiZm9ybS52YWx1ZS5GaWxlbmFtZSAmJiBwcmV2aWV3SW1hZ2VcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm5ld0ltYWdlTG9hZGluZ1wiPlxuICAgICAgICAgICAge3sgJ2ZpbGUtaW5wdXQubG9hZGluZycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbmV3SW1hZ2VMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiZm9ybS52YWx1ZS5JbWFnZUxpbmsgJiYgZm9ybS52YWx1ZS5JbWFnZUxpbmsgIT09ICcnICYmICEoZm9ybS52YWx1ZS5JbWFnZUFzRGF0YVVSTCAmJiBmb3JtLnZhbHVlLkltYWdlQXNEYXRhVVJMICE9PSAnJylcIiBbc3JjXT1cImZvcm0udmFsdWUuSW1hZ2VBc0RhdGFVUkxcIiBbc3JjXT1cImZvcm0udmFsdWUuSW1hZ2VMaW5rXCIgc3R5bGU9XCJoZWlnaHQ6IDQwcHg7IHdpZHRoOiBmaXQtY29udGVudDtcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiZm9ybS52YWx1ZS5JbWFnZUFzRGF0YVVSTCAmJiBmb3JtLnZhbHVlLkltYWdlQXNEYXRhVVJMICE9PSAnJ1wiIFtzcmNdPVwiZm9ybS52YWx1ZS5JbWFnZUFzRGF0YVVSTFwiIHN0eWxlPVwiaGVpZ2h0OiA0MHB4OyB3aWR0aDogZml0LWNvbnRlbnQ7XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+e3tmb3JtLnZhbHVlLkZpbGVuYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInJlbW92ZUZyb21MaXN0KClcIiAqbmdJZj1cImFsbG93UmVtb3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8a21zLWljb24gaWNvbj1cInRyYXNoXCIgW3NpemVdPVwiSWNvblNpemVQeC5USU5ZXCIgaWNvbkNsYXNzPVwiY29sb3ItYmxhY2tcIj48L2ttcy1pY29uPiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdmaWxlLWlucHV0LnJlbW92ZScgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFwcmV2aWV3SW1hZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnt7Zm9ybS52YWx1ZS5GaWxlbmFtZX19PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uIChjbGljayk9XCJzZWxlY3RJbWFnZU92ZXJsYXkoKVwiIGNsYXNzPVwiYnV0dG9uLXByaW1hcnktZm9udC1jb2xvclwiIG1hdC1zdHJva2VkLWJ1dHRvbj5cbiAgICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRlZEZpbGVNaW1ldHlwZXNcIlxuICAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgIChjbGljayk9XCJjbGVhcklucHV0VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgIChjaGFuZ2UpPVwic2VsZWN0SW1hZ2UoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ0ltYWdlSWRlbnQnXVwiIC8+XG4gICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9sc1snSW1hZ2VMaW5rJ11cIiAvPlxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ0ZpbGVuYW1lJ11cIiAvPlxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ0ltYWdlQXNEYXRhVVJMJ11cIiAvPlxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ1RleHQnXVwiIC8+XG5cbjwvZm9ybT4iXX0=
|
|
@@ -45,7 +45,7 @@ export class FlyoutComponent {
|
|
|
45
45
|
this.targetHeight = `${contentHeight}px`;
|
|
46
46
|
}
|
|
47
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlyoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlyoutComponent, selector: "kms-flyout", inputs: { icon: "icon", headerCssClass: "headerCssClass", bodyCssClass: "bodyCssClass", headerTitle: "headerTitle", headerText: "headerText", hasButtonForMore: "hasButtonForMore", moreText: "moreText", lessText: "lessText" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "flyoutHeader", first: true, predicate: ["flyoutHeader"], descendants: true }], ngImport: i0, template: "<div class=\"flyout\" [ngClass]=\"{ 'is-active': isDropdownOpened }\">\n <div\n class=\"flyout-header\"\n (click)=\"toggleDropdownHeader()\"\n [ngClass]=\"headerCssClass\"\n >\n <span [innerHtml]=\"headerTitle | kmsSafeHtml\"></span>\n <span [innerHtml]=\"headerText | kmsSafeHtml\"></span>\n\n <ng-content select=\"[header]\"></ng-content>\n\n <div\n *ngIf=\"hasButtonForMore\"\n (click)=\"toggleDropdown()\"\n class=\"flyout-header-more\"\n >\n <span *ngIf=\"!isDropdownOpened\">\n {{ moreText }}\n <kms-icon [icon]=\"'chevron-down'\" [size]=\"16\"> </kms-icon>\n </span>\n <span *ngIf=\"isDropdownOpened\">\n {{ lessText }}\n <kms-icon [icon]=\"'chevron-top'\" [size]=\"16\"> </kms-icon>\n </span>\n </div>\n </div>\n <div\n class=\"flyout-body\"\n [ngClass]=\"bodyCssClass\"\n tabindex=\"0\"\n [@dropdownAnimation]=\"{\n value: isDropdownOpened,\n params: { targetHeight: targetHeight, animationTime: '500' }\n }\"\n getMaxHeight=\"inner\"\n (sumOfHeight)=\"setDropdownListHeight($event)\"\n #flyoutHeader\n >\n <div class=\"inner\" #content *ngIf=\"isDropdownOpened || !hasButtonForMore\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.GetMaxHeightDirective, selector: "[getMaxHeight]", inputs: ["getMaxHeight"], outputs: ["maxHeightChanged", "sumOfHeight"] }, { kind: "directive", type: i3.SizeDirective, selector: "[size]", inputs: ["size"] }, { kind: "component", type: i4.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlyoutComponent, selector: "kms-flyout", inputs: { icon: "icon", headerCssClass: "headerCssClass", bodyCssClass: "bodyCssClass", headerTitle: "headerTitle", headerText: "headerText", hasButtonForMore: "hasButtonForMore", moreText: "moreText", lessText: "lessText" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "flyoutHeader", first: true, predicate: ["flyoutHeader"], descendants: true }], ngImport: i0, template: "<div class=\"flyout\" [ngClass]=\"{ 'is-active': isDropdownOpened }\">\n <div\n class=\"flyout-header\"\n (click)=\"toggleDropdownHeader()\"\n [ngClass]=\"headerCssClass\"\n >\n <span [innerHtml]=\"headerTitle | kmsSafeHtml\"></span>\n <span [innerHtml]=\"headerText | kmsSafeHtml\"></span>\n\n <ng-content select=\"[header]\"></ng-content>\n\n <div\n *ngIf=\"hasButtonForMore\"\n (click)=\"toggleDropdown()\"\n class=\"flyout-header-more\"\n >\n <span *ngIf=\"!isDropdownOpened\">\n {{ moreText }}\n <kms-icon [icon]=\"'chevron-down'\" [size]=\"16\"> </kms-icon>\n </span>\n <span *ngIf=\"isDropdownOpened\">\n {{ lessText }}\n <kms-icon [icon]=\"'chevron-top'\" [size]=\"16\"> </kms-icon>\n </span>\n </div>\n </div>\n <div\n class=\"flyout-body\"\n [ngClass]=\"bodyCssClass\"\n tabindex=\"0\"\n [@dropdownAnimation]=\"{\n value: isDropdownOpened,\n params: { targetHeight: targetHeight, animationTime: '500' }\n }\"\n getMaxHeight=\"inner\"\n (sumOfHeight)=\"setDropdownListHeight($event)\"\n #flyoutHeader\n >\n <div class=\"inner\" #content *ngIf=\"isDropdownOpened || !hasButtonForMore\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.GetMaxHeightDirective, selector: "[getMaxHeight]", inputs: ["getMaxHeight"], outputs: ["maxHeightChanged", "sumOfHeight"] }, { kind: "directive", type: i3.SizeDirective, selector: "[size]", inputs: ["size"] }, { kind: "component", type: i4.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "size", "dontUseSprite", "color"] }, { kind: "pipe", type: i5.SafeHtmlPipe, name: "kmsSafeHtml" }], animations: [
|
|
49
49
|
trigger('dropdownAnimation', [
|
|
50
50
|
state('true', style({
|
|
51
51
|
height: '{{targetHeight}}',
|
|
@@ -117,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
117
117
|
type: ViewChild,
|
|
118
118
|
args: ['flyoutHeader']
|
|
119
119
|
}] } });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9mbHlvdXQvZmx5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9mbHlvdXQvZmx5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBc0N4RSxNQUFNLE9BQU8sZUFBZTtJQXBDNUI7UUFxQ1csU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUV6QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsaUJBQVksR0FBRyxHQUFHLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFWixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsYUFBUSxHQUFHLEVBQUUsQ0FBQztLQTZCeEI7SUF2QkM7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCLENBQUMsYUFBcUI7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLGFBQWEsSUFBSSxDQUFDO0lBQzNDLENBQUM7K0dBMUNVLGVBQWU7bUdBQWYsZUFBZSx1ZEMzQzVCLDZ3Q0EyQ0Esa3FCRGhDYztZQUNWLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtnQkFDM0IsS0FBSyxDQUNILE1BQU0sRUFDTixLQUFLLENBQUM7b0JBQ0osTUFBTSxFQUFFLGtCQUFrQjtvQkFDMUIsVUFBVSxFQUFFLHdDQUF3QztpQkFDckQsQ0FBQyxFQUNGO29CQUNFLE1BQU0sRUFBRTt3QkFDTixZQUFZLEVBQUUsT0FBTzt3QkFDckIsYUFBYSxFQUFFLElBQUk7cUJBQ3BCO2lCQUNGLENBQ0Y7Z0JBQ0QsS0FBSyxDQUNILE9BQU8sRUFDUCxLQUFLLENBQUM7b0JBQ0osTUFBTSxFQUFFLENBQUM7b0JBQ1QsVUFBVSxFQUFFLHdDQUF3QztpQkFDckQsQ0FBQyxFQUNGO29CQUNFLE1BQU0sRUFBRTt3QkFDTixZQUFZLEVBQUUsT0FBTzt3QkFDckIsT0FBTyxFQUFFLENBQUM7d0JBQ1YsYUFBYSxFQUFFLElBQUk7cUJBQ3BCO2lCQUNGLENBQ0Y7YUFDRixDQUFDO1NBQ0g7OzRGQUVVLGVBQWU7a0JBcEMzQixTQUFTOytCQUNFLFlBQVksY0FHVjt3QkFDVixPQUFPLENBQUMsbUJBQW1CLEVBQUU7NEJBQzNCLEtBQUssQ0FDSCxNQUFNLEVBQ04sS0FBSyxDQUFDO2dDQUNKLE1BQU0sRUFBRSxrQkFBa0I7Z0NBQzFCLFVBQVUsRUFBRSx3Q0FBd0M7NkJBQ3JELENBQUMsRUFDRjtnQ0FDRSxNQUFNLEVBQUU7b0NBQ04sWUFBWSxFQUFFLE9BQU87b0NBQ3JCLGFBQWEsRUFBRSxJQUFJO2lDQUNwQjs2QkFDRixDQUNGOzRCQUNELEtBQUssQ0FDSCxPQUFPLEVBQ1AsS0FBSyxDQUFDO2dDQUNKLE1BQU0sRUFBRSxDQUFDO2dDQUNULFVBQVUsRUFBRSx3Q0FBd0M7NkJBQ3JELENBQUMsRUFDRjtnQ0FDRSxNQUFNLEVBQUU7b0NBQ04sWUFBWSxFQUFFLE9BQU87b0NBQ3JCLE9BQU8sRUFBRSxDQUFDO29DQUNWLGFBQWEsRUFBRSxJQUFJO2lDQUNwQjs2QkFDRixDQUNGO3lCQUNGLENBQUM7cUJBQ0g7OEJBR1EsSUFBSTtzQkFBWixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFZ0IsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVPLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNvcHlyaWdodCBLTVMgR21iSFxuICovXG5cbmltcG9ydCB7IHN0YXRlLCBzdHlsZSwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ttcy1mbHlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmx5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmx5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdkcm9wZG93bkFuaW1hdGlvbicsIFtcbiAgICAgIHN0YXRlKFxuICAgICAgICAndHJ1ZScsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBoZWlnaHQ6ICd7e3RhcmdldEhlaWdodH19JyxcbiAgICAgICAgICB0cmFuc2l0aW9uOiAnaGVpZ2h0IHt7YW5pbWF0aW9uVGltZX19bXMgZWFzZS1pbi1vdXQnLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgdGFyZ2V0SGVpZ2h0OiAnMzAwcHgnLFxuICAgICAgICAgICAgYW5pbWF0aW9uVGltZTogMzAwMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgc3RhdGUoXG4gICAgICAgICdmYWxzZScsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgdHJhbnNpdGlvbjogJ2hlaWdodCB7e2FuaW1hdGlvblRpbWV9fW1zIGVhc2UtaW4tb3V0JyxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIHRhcmdldEhlaWdodDogJzMwMHB4JyxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICBhbmltYXRpb25UaW1lOiAzMDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZseW91dENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGljb24gPSAnZmlsdGVyJztcblxuICBpc0Ryb3Bkb3duT3BlbmVkID0gZmFsc2U7XG4gIHRhcmdldEhlaWdodCA9ICcwJztcbiAgYW5pbWF0aW9uVGltZSA9IDUwMDA7XG5cbiAgQElucHV0KCkgaGVhZGVyQ3NzQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgYm9keUNzc0NsYXNzID0gJyc7XG5cbiAgQElucHV0KCkgaGVhZGVyVGl0bGUgPSAnJztcbiAgQElucHV0KCkgaGVhZGVyVGV4dCA9ICcnO1xuICBASW5wdXQoKSBoYXNCdXR0b25Gb3JNb3JlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1vcmVUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIGxlc3NUZXh0ID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudCcpIGNvbnRlbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnZmx5b3V0SGVhZGVyJykgZmx5b3V0SGVhZGVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcGVuL2Nsb3NlIGRyb3Bkb3duIGlmIGNsaWNrIG9uIGhlYWRlci5cbiAgICogRXhjZXB0LCBpZiBtb2RlIGlzIHNldCB0byBoYXNCdXR0b25Gb3JNb3JlLiBXaGVuIHRoZXJlIGlzIGEgZXh0cmEgYnV0dG9uIHRvIG9wZW4vY2xvc2VcbiAgICovXG4gIHRvZ2dsZURyb3Bkb3duSGVhZGVyKCkge1xuICAgIGlmICghdGhpcy5oYXNCdXR0b25Gb3JNb3JlKSB7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gb3IgY2xvc2UgdGhlIGRyb3Bkb3duXG4gICAqL1xuICB0b2dnbGVEcm9wZG93bigpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuZWQgPSAhdGhpcy5pc0Ryb3Bkb3duT3BlbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaGVpZ2h0IG9mIHRoZSBkcm9wZG93biBsaXN0IGl0ZW1zIGR5bmFtaWMgLSBuZWVkZWQgZm9yIHRoZSBhbmltYXRpb25cbiAgICovXG4gIHNldERyb3Bkb3duTGlzdEhlaWdodChjb250ZW50SGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRhcmdldEhlaWdodCA9IGAke2NvbnRlbnRIZWlnaHR9cHhgO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmx5b3V0XCIgW25nQ2xhc3NdPVwieyAnaXMtYWN0aXZlJzogaXNEcm9wZG93bk9wZW5lZCB9XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZseW91dC1oZWFkZXJcIlxuICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bkhlYWRlcigpXCJcbiAgICBbbmdDbGFzc109XCJoZWFkZXJDc3NDbGFzc1wiXG4gID5cbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImhlYWRlclRpdGxlIHwga21zU2FmZUh0bWxcIj48L3NwYW4+XG4gICAgPHNwYW4gW2lubmVySHRtbF09XCJoZWFkZXJUZXh0IHwga21zU2FmZUh0bWxcIj48L3NwYW4+XG5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGVhZGVyXVwiPjwvbmctY29udGVudD5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiaGFzQnV0dG9uRm9yTW9yZVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgICBjbGFzcz1cImZseW91dC1oZWFkZXItbW9yZVwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhaXNEcm9wZG93bk9wZW5lZFwiPlxuICAgICAgICB7eyBtb3JlVGV4dCB9fVxuICAgICAgICA8a21zLWljb24gW2ljb25dPVwiJ2NoZXZyb24tZG93bidcIiBbc2l6ZV09XCIxNlwiPiA8L2ttcy1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0Ryb3Bkb3duT3BlbmVkXCI+XG4gICAgICAgIHt7IGxlc3NUZXh0IH19XG4gICAgICAgIDxrbXMtaWNvbiBbaWNvbl09XCInY2hldnJvbi10b3AnXCIgW3NpemVdPVwiMTZcIj4gPC9rbXMtaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZseW91dC1ib2R5XCJcbiAgICBbbmdDbGFzc109XCJib2R5Q3NzQ2xhc3NcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW0Bkcm9wZG93bkFuaW1hdGlvbl09XCJ7XG4gICAgICB2YWx1ZTogaXNEcm9wZG93bk9wZW5lZCxcbiAgICAgIHBhcmFtczogeyB0YXJnZXRIZWlnaHQ6IHRhcmdldEhlaWdodCwgYW5pbWF0aW9uVGltZTogJzUwMCcgfVxuICAgIH1cIlxuICAgIGdldE1heEhlaWdodD1cImlubmVyXCJcbiAgICAoc3VtT2ZIZWlnaHQpPVwic2V0RHJvcGRvd25MaXN0SGVpZ2h0KCRldmVudClcIlxuICAgICNmbHlvdXRIZWFkZXJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiICNjb250ZW50ICpuZ0lmPVwiaXNEcm9wZG93bk9wZW5lZCB8fCAhaGFzQnV0dG9uRm9yTW9yZVwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|