@entake/particle 18.0.3 → 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/app/modules/icons/components/icon-select.component.d.ts +2 -2
- package/app/modules/icons/models/particle-icons-brands.model.d.ts +21 -0
- package/app/modules/icons/models/particle-icons-regular.model.d.ts +6 -174
- package/app/modules/icons/models/particle-icons-solid.model.d.ts +13 -317
- package/app/modules/icons/services/icons.service.d.ts +1 -5
- package/esm2022/app/modules/icons/components/icon-select.component.mjs +3 -4
- package/esm2022/app/modules/icons/models/particle-icons-brands.model.mjs +24 -0
- package/esm2022/app/modules/icons/models/particle-icons-regular.model.mjs +13 -287
- package/esm2022/app/modules/icons/models/particle-icons-solid.model.mjs +26 -518
- package/esm2022/app/modules/icons/particle-icons.module.mjs +3 -3
- package/esm2022/app/modules/icons/services/icons.service.mjs +5 -9
- package/esm2022/app/modules/layout/components/layout-full-framing/layout-full-framing.component.mjs +2 -2
- package/esm2022/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.mjs +2 -2
- package/esm2022/app/modules/tooltip/tooltip.directive.mjs +2 -2
- package/fesm2022/entake-particle.mjs +78 -1135
- package/fesm2022/entake-particle.mjs.map +1 -1
- package/package.json +1 -1
- package/app/modules/icons/models/particle-icons-light.model.d.ts +0 -197
- package/esm2022/app/modules/icons/models/particle-icons-light.model.mjs +0 -310
|
@@ -55,7 +55,6 @@ export class IconSelectComponent {
|
|
|
55
55
|
solid: 'Solid',
|
|
56
56
|
regular: 'Regular',
|
|
57
57
|
brands: 'Brands',
|
|
58
|
-
light: 'Light',
|
|
59
58
|
customIcons: 'Custom Icons',
|
|
60
59
|
previousPage: 'Previous Page',
|
|
61
60
|
nextPage: 'Next Page',
|
|
@@ -343,7 +342,7 @@ export class IconSelectComponent {
|
|
|
343
342
|
useExisting: forwardRef(() => IconSelectComponent),
|
|
344
343
|
multi: true
|
|
345
344
|
}
|
|
346
|
-
], viewQueries: [{ propertyName: "iconScrollContainer", first: true, predicate: ["iconScrollContainer"], descendants: true }], ngImport: i0, template: "<!-- choose button -->\r\n<button [ngClass]=\"buttonColorClass ? buttonColorClass : 'content_color'\"\r\n [ngStyle]=\"{\r\n 'width': buttonSizing,\r\n 'min-width': buttonSizing,\r\n 'height': buttonSizing,\r\n 'min-height': buttonSizing\r\n }\"\r\n (click)=\"openDialog()\"\r\n [particleTooltip]=\"(_internalValue | async)?.prefix + ' ' + (_internalValue | async)?.name\"\r\n [tooltipDisabled]=\"(_internalValue | async) === undefined\"\r\n [disabled]=\"disabled\"\r\n class=\"access wis_button bg_overlay brdr brad_3\"\r\n [attr.aria-label]=\"text.selectAnIcon\">\r\n <ng-container *ngIf=\"!showDialog else placeholderIcon\">\r\n <div *ngIf=\"_internalValue | async as selectedIcon else noSelection\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} wis_icon\"></i>\r\n </div>\r\n <ng-template #noSelection>\r\n <div><i class=\"fas fa-icons opacity_20\"></i></div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderIcon>\r\n <div><i class=\"fas fa-spinner fa-spin\"></i></div>\r\n </ng-template>\r\n</button>\r\n\r\n<!-- TODO: at some point, maybe implement infinite scroll to icons -->\r\n\r\n<!-- picker dialog -->\r\n<particle-dialog [title]=\"text.selectAnIcon\"\r\n [object]=\"showDialog\"\r\n [width]=\"'850px'\"\r\n [height]=\"'500px'\"\r\n (closed)=\"closeDialog()\">\r\n <div class=\"row height100\">\r\n\r\n <!-- FILTERS -->\r\n <div class=\"col min_w250 bg_overlay brdr border_right mobile_hide\">\r\n <div class=\"row_block width100\">\r\n <ng-container *ngIf=\"_filter | async as filter\">\r\n <!-- all icons -->\r\n <div class=\"mar_5 pad_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'all' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'all' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.seeAllIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'all' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.seeAllIcons}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- fontawesome icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.fontAwesomeIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.all}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- custom icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.customIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">All</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">Solid</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">Regular</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'light', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'light' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.light + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'light'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.light}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- ICONS -->\r\n <div class=\"col size_2 column\">\r\n <div class=\"col content_color_dark_1 pad_x5\">\r\n <!-- paginator -->\r\n <div *ngIf=\"totalPages$ | async as totalPages\"\r\n class=\"col v_center mar_10\">\r\n <button *ngIf=\"canPaginatePrevious$ | async else disabledPreviousButton\"\r\n (click)=\"paginatePrevious()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n <ng-template #disabledPreviousButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n </ng-template>\r\n <div\r\n class=\"text sm bolder center\"\r\n style=\"min-width:65px;\">\r\n {{(_activePage | async)! + 1}} / {{totalPages}}\r\n </div>\r\n <button *ngIf=\"canPaginateNext$ | async else disabledNextButton\"\r\n (click)=\"paginateNext()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n <ng-template #disabledNextButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- search -->\r\n <div class=\"col size_1 wis_search mar_10\">\r\n <input #iconSearchInput\r\n [ngModel]=\"_searchText | async\"\r\n (input)=\"_searchText.next(iconSearchInput.value)\"\r\n (keyup.enter)=\"_searchInputEnterKeyup.next($any(null))\"\r\n class=\"access input md bg_overlay brdr content_color\"\r\n [attr.aria-label]=\"text.searchIcons\" [placeholder]=\"text.searchIcons + '...'\" />\r\n <button *ngIf=\"(canSearch$ | async) && (_searchClick | async)\"\r\n (click)=\"clearSearch()\" aria-label=\"Clear search\"\r\n class=\"access btn circle_18px overlay wis_clear_btn\">\r\n <span class=\"icon grow\"><i class=\"fas fa-times fa-sm\"></i></span>\r\n </button>\r\n <button *ngIf=\"canSearch$ | async else disabledSearchButton\"\r\n (click)=\"_searchClick.next(iconSearchInput.value); _activePage.next(0)\"\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n <ng-template #disabledSearchButton>\r\n <button disabled\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- icons -->\r\n <div #iconScrollContainer class=\"col size_1 top_left scroll_y pad_5\" style=\"scroll-behavior: smooth\">\r\n <ng-container *ngIf=\"paginatedIcons$ | async as icons else noResults\">\r\n <div class=\"row wrap top_left\" style=\"align-items:stretch;\">\r\n <ng-container *ngFor=\"let icon of paginatedIcons$ | async\">\r\n <div class=\"col size_1 min_w75 mar_5\">\r\n <button class=\"access wis_icon_btn\" (click)=\"handleIconSelect(icon)\" [attr.aria-label]=\"text.select + ' ' + icon.name\">\r\n <div [ngClass]=\"((_internalValue | async)?.prefix === icon.prefix) && ((_internalValue | async)?.name === icon.name) ? 'ok_button_color' : 'content_color'\"\r\n class=\"wis_icon_btn_preview square_50px brad_3 bg_overlay brdr mar_bot5\">\r\n <i class=\"{{icon.prefix}} {{icon.name}}\"></i>\r\n </div>\r\n <div class=\"text sm center faded\">{{icon.name}}</div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"row column min_h300 center_center\">\r\n <particle-endpoint-state\r\n [empty]=\"true\"\r\n [emptyIcon]=\"'fas fa-search fa-3x mar_bot5'\"\r\n [text]=\"{emptyText: text.couldntFindAnything, emptySubtext: text.modifySearchCriteria}\">\r\n </particle-endpoint-state>\r\n <button class=\"access btnset clear mar_10\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"clearSearch()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"_internalValue | async as selectedIcon\"\r\n class=\"col space_between bg_overlay brdr border_top pad_x5 wis_selection_bar\">\r\n <div class=\"col v_center mar_10\">\r\n <div class=\"text md faded mar_right10 mobile_hide\">{{text.selection}}:</div>\r\n <div class=\"v_center\" *ngIf=\"showIconSelectionPreview\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} fa-fw mar_right5\" style=\"font-size:16px;\"></i>\r\n <div class=\"text md bold\">{{selectedIcon.prefix}} {{selectedIcon.name}}</div>\r\n </div>\r\n </div>\r\n <div class=\"col v_center mar_10\">\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow save_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.confirm\"\r\n (click)=\"handleIconSelectConfirm()\"\r\n >\r\n <div>{{text.confirm}}</div>\r\n <div class=\"brdr border_left mar_left10 pad_left10\"><i class=\"fas fa-check\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".wis_button{width:40px;min-width:40px;height:40px;min-height:40px;cursor:pointer;transition:all .1s ease}.wis_button:disabled{cursor:default;opacity:1!important}.wis_button:hover:not(:disabled){filter:brightness(1.05)}.wis_button svg{transition:transform .1s ease}.wis_button:hover:not(:disabled) .wis_icon{transform:scale(1.15)}@supports not (-ms-high-contrast:none){.wis_button svg{width:75%;height:75%}}.wis_search{position:relative}.wis_search input{padding-right:40px!important}.wis_search .wis_search_btn{position:absolute;right:0;top:0;z-index:var(--z-frame);border-top-left-radius:0;border-bottom-left-radius:0;height:100%;width:32px}.wis_search .wis_clear_btn{position:absolute;right:40px;top:7px;z-index:var(--z-frame)}.wis_filter_btn{width:100%;padding:5px 10px;border-radius:3px}.wis_filter_btn:not(:hover):not(.selected){background-color:inherit;color:inherit}.wis_icon_btn{cursor:pointer;transition:all .1s ease;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;border:none;border-radius:3px;padding:5px 2px;background-color:inherit;color:inherit}.wis_icon_btn:hover{background-color:#7878781a}.wis_icon_btn_preview{transition:all .1s ease}.wis_selection_bar{z-index:var(--z-frame);box-shadow:0 -6px 10px -8px #00000040;animation-name:slideUpSelectionBar;animation-duration:.2s;transform-origin:bottom center}@keyframes slideUpSelectionBar{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[particleTooltip]", inputs: ["particleTooltip", "tooltipPosition", "tooltipDisabled"] }, { kind: "component", type: i5.DialogComponent, selector: "particle-dialog", inputs: ["object", "title", "titleClass", "showTitle", "allowClose", "bodyClass", "height", "width", "borderRadius", "text"], outputs: ["closed", "opened"] }, { kind: "component", type: i6.EndpointStateComponent, selector: "particle-endpoint-state", inputs: ["loading", "loadingIcon", "empty", "emptyIcon", "error", "errorIcon", "loadingOverlay", "loadingOverlayIcon", "text"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
345
|
+
], viewQueries: [{ propertyName: "iconScrollContainer", first: true, predicate: ["iconScrollContainer"], descendants: true }], ngImport: i0, template: "<!-- choose button -->\r\n<button [ngClass]=\"buttonColorClass ? buttonColorClass : 'content_color'\"\r\n [ngStyle]=\"{\r\n 'width': buttonSizing,\r\n 'min-width': buttonSizing,\r\n 'height': buttonSizing,\r\n 'min-height': buttonSizing\r\n }\"\r\n (click)=\"openDialog()\"\r\n [particleTooltip]=\"(_internalValue | async)?.prefix + ' ' + (_internalValue | async)?.name\"\r\n [tooltipDisabled]=\"(_internalValue | async) === undefined\"\r\n [disabled]=\"disabled\"\r\n class=\"access wis_button bg_overlay brdr brad_3\"\r\n [attr.aria-label]=\"text.selectAnIcon\">\r\n <ng-container *ngIf=\"!showDialog else placeholderIcon\">\r\n <div *ngIf=\"_internalValue | async as selectedIcon else noSelection\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} wis_icon\"></i>\r\n </div>\r\n <ng-template #noSelection>\r\n <div><i class=\"fas fa-icons opacity_20\"></i></div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderIcon>\r\n <div><i class=\"fas fa-spinner fa-spin\"></i></div>\r\n </ng-template>\r\n</button>\r\n\r\n<!-- TODO: at some point, maybe implement infinite scroll to icons -->\r\n\r\n<!-- picker dialog -->\r\n<particle-dialog [title]=\"text.selectAnIcon\"\r\n [object]=\"showDialog\"\r\n [width]=\"'850px'\"\r\n [height]=\"'500px'\"\r\n (closed)=\"closeDialog()\">\r\n <div class=\"row height100\">\r\n\r\n <!-- FILTERS -->\r\n <div class=\"col min_w250 bg_overlay brdr border_right mobile_hide\">\r\n <div class=\"row_block width100\">\r\n <ng-container *ngIf=\"_filter | async as filter\">\r\n <!-- all icons -->\r\n <div class=\"mar_5 pad_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'all' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'all' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.seeAllIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'all' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.seeAllIcons}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- fontawesome icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.fontAwesomeIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.all}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- custom icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.customIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">All</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- ICONS -->\r\n <div class=\"col size_2 column\">\r\n <div class=\"col content_color_dark_1 pad_x5\">\r\n <!-- paginator -->\r\n <div *ngIf=\"totalPages$ | async as totalPages\"\r\n class=\"col v_center mar_10\">\r\n <button *ngIf=\"canPaginatePrevious$ | async else disabledPreviousButton\"\r\n (click)=\"paginatePrevious()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n <ng-template #disabledPreviousButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n </ng-template>\r\n <div\r\n class=\"text sm bolder center\"\r\n style=\"min-width:65px;\">\r\n {{(_activePage | async)! + 1}} / {{totalPages}}\r\n </div>\r\n <button *ngIf=\"canPaginateNext$ | async else disabledNextButton\"\r\n (click)=\"paginateNext()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n <ng-template #disabledNextButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- search -->\r\n <div class=\"col size_1 wis_search mar_10\">\r\n <input #iconSearchInput\r\n [ngModel]=\"_searchText | async\"\r\n (input)=\"_searchText.next(iconSearchInput.value)\"\r\n (keyup.enter)=\"_searchInputEnterKeyup.next($any(null))\"\r\n class=\"access input md bg_overlay brdr content_color\"\r\n [attr.aria-label]=\"text.searchIcons\" [placeholder]=\"text.searchIcons + '...'\" />\r\n <button *ngIf=\"(canSearch$ | async) && (_searchClick | async)\"\r\n (click)=\"clearSearch()\" aria-label=\"Clear search\"\r\n class=\"access btn circle_18px overlay wis_clear_btn\">\r\n <span class=\"icon grow\"><i class=\"fas fa-times fa-sm\"></i></span>\r\n </button>\r\n <button *ngIf=\"canSearch$ | async else disabledSearchButton\"\r\n (click)=\"_searchClick.next(iconSearchInput.value); _activePage.next(0)\"\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n <ng-template #disabledSearchButton>\r\n <button disabled\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- icons -->\r\n <div #iconScrollContainer class=\"col size_1 top_left scroll_y pad_5\" style=\"scroll-behavior: smooth\">\r\n <ng-container *ngIf=\"paginatedIcons$ | async as icons else noResults\">\r\n <div class=\"row wrap top_left\" style=\"align-items:stretch;\">\r\n <ng-container *ngFor=\"let icon of paginatedIcons$ | async\">\r\n <div class=\"col size_1 min_w75 mar_5\">\r\n <button class=\"access wis_icon_btn\" (click)=\"handleIconSelect(icon)\" [attr.aria-label]=\"text.select + ' ' + icon.name\">\r\n <div [ngClass]=\"((_internalValue | async)?.prefix === icon.prefix) && ((_internalValue | async)?.name === icon.name) ? 'ok_button_color' : 'content_color'\"\r\n class=\"wis_icon_btn_preview square_50px brad_3 bg_overlay brdr mar_bot5\">\r\n <i class=\"{{icon.prefix}} {{icon.name}}\"></i>\r\n </div>\r\n <div class=\"text sm center faded\">{{icon.name}}</div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"row column min_h300 center_center\">\r\n <particle-endpoint-state\r\n [empty]=\"true\"\r\n [emptyIcon]=\"'fas fa-search fa-3x mar_bot5'\"\r\n [text]=\"{emptyText: text.couldntFindAnything, emptySubtext: text.modifySearchCriteria}\">\r\n </particle-endpoint-state>\r\n <button class=\"access btnset clear mar_10\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"clearSearch()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"_internalValue | async as selectedIcon\"\r\n class=\"col space_between bg_overlay brdr border_top pad_x5 wis_selection_bar\">\r\n <div class=\"col v_center mar_10\">\r\n <div class=\"text md faded mar_right10 mobile_hide\">{{text.selection}}:</div>\r\n <div class=\"v_center\" *ngIf=\"showIconSelectionPreview\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} fa-fw mar_right5\" style=\"font-size:16px;\"></i>\r\n <div class=\"text md bold\">{{selectedIcon.prefix}} {{selectedIcon.name}}</div>\r\n </div>\r\n </div>\r\n <div class=\"col v_center mar_10\">\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow save_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.confirm\"\r\n (click)=\"handleIconSelectConfirm()\"\r\n >\r\n <div>{{text.confirm}}</div>\r\n <div class=\"brdr border_left mar_left10 pad_left10\"><i class=\"fas fa-check\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".wis_button{width:40px;min-width:40px;height:40px;min-height:40px;cursor:pointer;transition:all .1s ease}.wis_button:disabled{cursor:default;opacity:1!important}.wis_button:hover:not(:disabled){filter:brightness(1.05)}.wis_button svg{transition:transform .1s ease}.wis_button:hover:not(:disabled) .wis_icon{transform:scale(1.15)}@supports not (-ms-high-contrast:none){.wis_button svg{width:75%;height:75%}}.wis_search{position:relative}.wis_search input{padding-right:40px!important}.wis_search .wis_search_btn{position:absolute;right:0;top:0;z-index:var(--z-frame);border-top-left-radius:0;border-bottom-left-radius:0;height:100%;width:32px}.wis_search .wis_clear_btn{position:absolute;right:40px;top:7px;z-index:var(--z-frame)}.wis_filter_btn{width:100%;padding:5px 10px;border-radius:3px}.wis_filter_btn:not(:hover):not(.selected){background-color:inherit;color:inherit}.wis_icon_btn{cursor:pointer;transition:all .1s ease;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;border:none;border-radius:3px;padding:5px 2px;background-color:inherit;color:inherit}.wis_icon_btn:hover{background-color:#7878781a}.wis_icon_btn_preview{transition:all .1s ease}.wis_selection_bar{z-index:var(--z-frame);box-shadow:0 -6px 10px -8px #00000040;animation-name:slideUpSelectionBar;animation-duration:.2s;transform-origin:bottom center}@keyframes slideUpSelectionBar{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[particleTooltip]", inputs: ["particleTooltip", "tooltipPosition", "tooltipDisabled"] }, { kind: "component", type: i5.DialogComponent, selector: "particle-dialog", inputs: ["object", "title", "titleClass", "showTitle", "allowClose", "bodyClass", "height", "width", "borderRadius", "text"], outputs: ["closed", "opened"] }, { kind: "component", type: i6.EndpointStateComponent, selector: "particle-endpoint-state", inputs: ["loading", "loadingIcon", "empty", "emptyIcon", "error", "errorIcon", "loadingOverlay", "loadingOverlayIcon", "text"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
347
346
|
}
|
|
348
347
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: IconSelectComponent, decorators: [{
|
|
349
348
|
type: Component,
|
|
@@ -353,7 +352,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
353
352
|
useExisting: forwardRef(() => IconSelectComponent),
|
|
354
353
|
multi: true
|
|
355
354
|
}
|
|
356
|
-
], template: "<!-- choose button -->\r\n<button [ngClass]=\"buttonColorClass ? buttonColorClass : 'content_color'\"\r\n [ngStyle]=\"{\r\n 'width': buttonSizing,\r\n 'min-width': buttonSizing,\r\n 'height': buttonSizing,\r\n 'min-height': buttonSizing\r\n }\"\r\n (click)=\"openDialog()\"\r\n [particleTooltip]=\"(_internalValue | async)?.prefix + ' ' + (_internalValue | async)?.name\"\r\n [tooltipDisabled]=\"(_internalValue | async) === undefined\"\r\n [disabled]=\"disabled\"\r\n class=\"access wis_button bg_overlay brdr brad_3\"\r\n [attr.aria-label]=\"text.selectAnIcon\">\r\n <ng-container *ngIf=\"!showDialog else placeholderIcon\">\r\n <div *ngIf=\"_internalValue | async as selectedIcon else noSelection\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} wis_icon\"></i>\r\n </div>\r\n <ng-template #noSelection>\r\n <div><i class=\"fas fa-icons opacity_20\"></i></div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderIcon>\r\n <div><i class=\"fas fa-spinner fa-spin\"></i></div>\r\n </ng-template>\r\n</button>\r\n\r\n<!-- TODO: at some point, maybe implement infinite scroll to icons -->\r\n\r\n<!-- picker dialog -->\r\n<particle-dialog [title]=\"text.selectAnIcon\"\r\n [object]=\"showDialog\"\r\n [width]=\"'850px'\"\r\n [height]=\"'500px'\"\r\n (closed)=\"closeDialog()\">\r\n <div class=\"row height100\">\r\n\r\n <!-- FILTERS -->\r\n <div class=\"col min_w250 bg_overlay brdr border_right mobile_hide\">\r\n <div class=\"row_block width100\">\r\n <ng-container *ngIf=\"_filter | async as filter\">\r\n <!-- all icons -->\r\n <div class=\"mar_5 pad_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'all' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'all' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.seeAllIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'all' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.seeAllIcons}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- fontawesome icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.fontAwesomeIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.all}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- custom icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.customIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">All</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">Solid</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">Regular</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'light', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'light' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.light + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'light'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.light}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- ICONS -->\r\n <div class=\"col size_2 column\">\r\n <div class=\"col content_color_dark_1 pad_x5\">\r\n <!-- paginator -->\r\n <div *ngIf=\"totalPages$ | async as totalPages\"\r\n class=\"col v_center mar_10\">\r\n <button *ngIf=\"canPaginatePrevious$ | async else disabledPreviousButton\"\r\n (click)=\"paginatePrevious()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n <ng-template #disabledPreviousButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n </ng-template>\r\n <div\r\n class=\"text sm bolder center\"\r\n style=\"min-width:65px;\">\r\n {{(_activePage | async)! + 1}} / {{totalPages}}\r\n </div>\r\n <button *ngIf=\"canPaginateNext$ | async else disabledNextButton\"\r\n (click)=\"paginateNext()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n <ng-template #disabledNextButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- search -->\r\n <div class=\"col size_1 wis_search mar_10\">\r\n <input #iconSearchInput\r\n [ngModel]=\"_searchText | async\"\r\n (input)=\"_searchText.next(iconSearchInput.value)\"\r\n (keyup.enter)=\"_searchInputEnterKeyup.next($any(null))\"\r\n class=\"access input md bg_overlay brdr content_color\"\r\n [attr.aria-label]=\"text.searchIcons\" [placeholder]=\"text.searchIcons + '...'\" />\r\n <button *ngIf=\"(canSearch$ | async) && (_searchClick | async)\"\r\n (click)=\"clearSearch()\" aria-label=\"Clear search\"\r\n class=\"access btn circle_18px overlay wis_clear_btn\">\r\n <span class=\"icon grow\"><i class=\"fas fa-times fa-sm\"></i></span>\r\n </button>\r\n <button *ngIf=\"canSearch$ | async else disabledSearchButton\"\r\n (click)=\"_searchClick.next(iconSearchInput.value); _activePage.next(0)\"\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n <ng-template #disabledSearchButton>\r\n <button disabled\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- icons -->\r\n <div #iconScrollContainer class=\"col size_1 top_left scroll_y pad_5\" style=\"scroll-behavior: smooth\">\r\n <ng-container *ngIf=\"paginatedIcons$ | async as icons else noResults\">\r\n <div class=\"row wrap top_left\" style=\"align-items:stretch;\">\r\n <ng-container *ngFor=\"let icon of paginatedIcons$ | async\">\r\n <div class=\"col size_1 min_w75 mar_5\">\r\n <button class=\"access wis_icon_btn\" (click)=\"handleIconSelect(icon)\" [attr.aria-label]=\"text.select + ' ' + icon.name\">\r\n <div [ngClass]=\"((_internalValue | async)?.prefix === icon.prefix) && ((_internalValue | async)?.name === icon.name) ? 'ok_button_color' : 'content_color'\"\r\n class=\"wis_icon_btn_preview square_50px brad_3 bg_overlay brdr mar_bot5\">\r\n <i class=\"{{icon.prefix}} {{icon.name}}\"></i>\r\n </div>\r\n <div class=\"text sm center faded\">{{icon.name}}</div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"row column min_h300 center_center\">\r\n <particle-endpoint-state\r\n [empty]=\"true\"\r\n [emptyIcon]=\"'fas fa-search fa-3x mar_bot5'\"\r\n [text]=\"{emptyText: text.couldntFindAnything, emptySubtext: text.modifySearchCriteria}\">\r\n </particle-endpoint-state>\r\n <button class=\"access btnset clear mar_10\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"clearSearch()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"_internalValue | async as selectedIcon\"\r\n class=\"col space_between bg_overlay brdr border_top pad_x5 wis_selection_bar\">\r\n <div class=\"col v_center mar_10\">\r\n <div class=\"text md faded mar_right10 mobile_hide\">{{text.selection}}:</div>\r\n <div class=\"v_center\" *ngIf=\"showIconSelectionPreview\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} fa-fw mar_right5\" style=\"font-size:16px;\"></i>\r\n <div class=\"text md bold\">{{selectedIcon.prefix}} {{selectedIcon.name}}</div>\r\n </div>\r\n </div>\r\n <div class=\"col v_center mar_10\">\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow save_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.confirm\"\r\n (click)=\"handleIconSelectConfirm()\"\r\n >\r\n <div>{{text.confirm}}</div>\r\n <div class=\"brdr border_left mar_left10 pad_left10\"><i class=\"fas fa-check\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".wis_button{width:40px;min-width:40px;height:40px;min-height:40px;cursor:pointer;transition:all .1s ease}.wis_button:disabled{cursor:default;opacity:1!important}.wis_button:hover:not(:disabled){filter:brightness(1.05)}.wis_button svg{transition:transform .1s ease}.wis_button:hover:not(:disabled) .wis_icon{transform:scale(1.15)}@supports not (-ms-high-contrast:none){.wis_button svg{width:75%;height:75%}}.wis_search{position:relative}.wis_search input{padding-right:40px!important}.wis_search .wis_search_btn{position:absolute;right:0;top:0;z-index:var(--z-frame);border-top-left-radius:0;border-bottom-left-radius:0;height:100%;width:32px}.wis_search .wis_clear_btn{position:absolute;right:40px;top:7px;z-index:var(--z-frame)}.wis_filter_btn{width:100%;padding:5px 10px;border-radius:3px}.wis_filter_btn:not(:hover):not(.selected){background-color:inherit;color:inherit}.wis_icon_btn{cursor:pointer;transition:all .1s ease;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;border:none;border-radius:3px;padding:5px 2px;background-color:inherit;color:inherit}.wis_icon_btn:hover{background-color:#7878781a}.wis_icon_btn_preview{transition:all .1s ease}.wis_selection_bar{z-index:var(--z-frame);box-shadow:0 -6px 10px -8px #00000040;animation-name:slideUpSelectionBar;animation-duration:.2s;transform-origin:bottom center}@keyframes slideUpSelectionBar{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}\n"] }]
|
|
355
|
+
], template: "<!-- choose button -->\r\n<button [ngClass]=\"buttonColorClass ? buttonColorClass : 'content_color'\"\r\n [ngStyle]=\"{\r\n 'width': buttonSizing,\r\n 'min-width': buttonSizing,\r\n 'height': buttonSizing,\r\n 'min-height': buttonSizing\r\n }\"\r\n (click)=\"openDialog()\"\r\n [particleTooltip]=\"(_internalValue | async)?.prefix + ' ' + (_internalValue | async)?.name\"\r\n [tooltipDisabled]=\"(_internalValue | async) === undefined\"\r\n [disabled]=\"disabled\"\r\n class=\"access wis_button bg_overlay brdr brad_3\"\r\n [attr.aria-label]=\"text.selectAnIcon\">\r\n <ng-container *ngIf=\"!showDialog else placeholderIcon\">\r\n <div *ngIf=\"_internalValue | async as selectedIcon else noSelection\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} wis_icon\"></i>\r\n </div>\r\n <ng-template #noSelection>\r\n <div><i class=\"fas fa-icons opacity_20\"></i></div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #placeholderIcon>\r\n <div><i class=\"fas fa-spinner fa-spin\"></i></div>\r\n </ng-template>\r\n</button>\r\n\r\n<!-- TODO: at some point, maybe implement infinite scroll to icons -->\r\n\r\n<!-- picker dialog -->\r\n<particle-dialog [title]=\"text.selectAnIcon\"\r\n [object]=\"showDialog\"\r\n [width]=\"'850px'\"\r\n [height]=\"'500px'\"\r\n (closed)=\"closeDialog()\">\r\n <div class=\"row height100\">\r\n\r\n <!-- FILTERS -->\r\n <div class=\"col min_w250 bg_overlay brdr border_right mobile_hide\">\r\n <div class=\"row_block width100\">\r\n <ng-container *ngIf=\"_filter | async as filter\">\r\n <!-- all icons -->\r\n <div class=\"mar_5 pad_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'all' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'all' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.seeAllIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'all' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.seeAllIcons}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- fontawesome icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.fontAwesomeIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.all}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'fontawesome' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'fontawesome' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.fontAwesomeIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'fontawesome' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_10\"></div>\r\n <!-- custom icons -->\r\n <div class=\"mar_5\">\r\n <div class=\"text md bolder\" style=\"padding:10px 10px 5px 15px;\">{{text.customIcons}}</div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'all', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'all' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'all'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">All</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'solid', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'solid' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.solid + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'solid'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.solid}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'regular', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'regular' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.regular + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'regular'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.regular}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n <div class=\"mar_5\">\r\n <button (click)=\"handleFilterSelect({ style: 'brands', type: 'particle' })\"\r\n [ngClass]=\"{ 'selected': filter.type === 'particle' && filter.style === 'brands' }\"\r\n class=\"access list_btn row space_between wis_filter_btn bg_overlay_rev brdr\"\r\n [attr.aria-label]=\"text.filterBy + ' ' + text.brands + ' ' + text.customIcons\">\r\n <div class=\"v_center\">\r\n <div class=\"circle_16px bg_overlay_rev brdr mar_right10\">\r\n <div *ngIf=\"filter.type === 'particle' && filter.style === 'brands'\" class=\"circle_8px ok_button_color\"></div>\r\n </div>\r\n <div class=\"text md\">{{text.brands}}</div>\r\n </div>\r\n <div class=\"go_icon\"><i class=\"fas fa-chevron-right fa-fw fa-sm opacity_60\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- ICONS -->\r\n <div class=\"col size_2 column\">\r\n <div class=\"col content_color_dark_1 pad_x5\">\r\n <!-- paginator -->\r\n <div *ngIf=\"totalPages$ | async as totalPages\"\r\n class=\"col v_center mar_10\">\r\n <button *ngIf=\"canPaginatePrevious$ | async else disabledPreviousButton\"\r\n (click)=\"paginatePrevious()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n <ng-template #disabledPreviousButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.previousPage\">\r\n <span class=\"icon slide_left\"><i class=\"fas fa-arrow-left\"></i></span>\r\n </button>\r\n </ng-template>\r\n <div\r\n class=\"text sm bolder center\"\r\n style=\"min-width:65px;\">\r\n {{(_activePage | async)! + 1}} / {{totalPages}}\r\n </div>\r\n <button *ngIf=\"canPaginateNext$ | async else disabledNextButton\"\r\n (click)=\"paginateNext()\"\r\n class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n <ng-template #disabledNextButton>\r\n <button disabled class=\"access btn square_24px bg_overlay brdr ok_button_color\"\r\n [attr.aria-label]=\"text.nextPage\">\r\n <span class=\"icon slide_right\"><i class=\"fas fa-arrow-right\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- search -->\r\n <div class=\"col size_1 wis_search mar_10\">\r\n <input #iconSearchInput\r\n [ngModel]=\"_searchText | async\"\r\n (input)=\"_searchText.next(iconSearchInput.value)\"\r\n (keyup.enter)=\"_searchInputEnterKeyup.next($any(null))\"\r\n class=\"access input md bg_overlay brdr content_color\"\r\n [attr.aria-label]=\"text.searchIcons\" [placeholder]=\"text.searchIcons + '...'\" />\r\n <button *ngIf=\"(canSearch$ | async) && (_searchClick | async)\"\r\n (click)=\"clearSearch()\" aria-label=\"Clear search\"\r\n class=\"access btn circle_18px overlay wis_clear_btn\">\r\n <span class=\"icon grow\"><i class=\"fas fa-times fa-sm\"></i></span>\r\n </button>\r\n <button *ngIf=\"canSearch$ | async else disabledSearchButton\"\r\n (click)=\"_searchClick.next(iconSearchInput.value); _activePage.next(0)\"\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n <ng-template #disabledSearchButton>\r\n <button disabled\r\n class=\"access btn square_28px bg_overlay brdr ok_button_color brad_3 wis_search_btn\"\r\n [attr.aria-label]=\"text.submitSearch\" type=\"submit\">\r\n <span class=\"icon grow\"><i class=\"fas fa-search fa-sm\"></i></span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- icons -->\r\n <div #iconScrollContainer class=\"col size_1 top_left scroll_y pad_5\" style=\"scroll-behavior: smooth\">\r\n <ng-container *ngIf=\"paginatedIcons$ | async as icons else noResults\">\r\n <div class=\"row wrap top_left\" style=\"align-items:stretch;\">\r\n <ng-container *ngFor=\"let icon of paginatedIcons$ | async\">\r\n <div class=\"col size_1 min_w75 mar_5\">\r\n <button class=\"access wis_icon_btn\" (click)=\"handleIconSelect(icon)\" [attr.aria-label]=\"text.select + ' ' + icon.name\">\r\n <div [ngClass]=\"((_internalValue | async)?.prefix === icon.prefix) && ((_internalValue | async)?.name === icon.name) ? 'ok_button_color' : 'content_color'\"\r\n class=\"wis_icon_btn_preview square_50px brad_3 bg_overlay brdr mar_bot5\">\r\n <i class=\"{{icon.prefix}} {{icon.name}}\"></i>\r\n </div>\r\n <div class=\"text sm center faded\">{{icon.name}}</div>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #noResults>\r\n <div class=\"row column min_h300 center_center\">\r\n <particle-endpoint-state\r\n [empty]=\"true\"\r\n [emptyIcon]=\"'fas fa-search fa-3x mar_bot5'\"\r\n [text]=\"{emptyText: text.couldntFindAnything, emptySubtext: text.modifySearchCriteria}\">\r\n </particle-endpoint-state>\r\n <button class=\"access btnset clear mar_10\"\r\n [attr.aria-label]=\"text.close\"\r\n (click)=\"clearSearch()\">\r\n <div class=\"circle_20px ptl_brdr_color ptl_brdr_size ptl_input_bg_color\">\r\n <i class=\"fas fa-times\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"_internalValue | async as selectedIcon\"\r\n class=\"col space_between bg_overlay brdr border_top pad_x5 wis_selection_bar\">\r\n <div class=\"col v_center mar_10\">\r\n <div class=\"text md faded mar_right10 mobile_hide\">{{text.selection}}:</div>\r\n <div class=\"v_center\" *ngIf=\"showIconSelectionPreview\">\r\n <i class=\"{{selectedIcon.prefix}} {{selectedIcon.name}} fa-fw mar_right5\" style=\"font-size:16px;\"></i>\r\n <div class=\"text md bold\">{{selectedIcon.prefix}} {{selectedIcon.name}}</div>\r\n </div>\r\n </div>\r\n <div class=\"col v_center mar_10\">\r\n <button\r\n type=\"button\"\r\n class=\"access btnset spaced md hov_glow save_button_color ptl_brdr_radius\"\r\n [attr.aria-label]=\"text.confirm\"\r\n (click)=\"handleIconSelectConfirm()\"\r\n >\r\n <div>{{text.confirm}}</div>\r\n <div class=\"brdr border_left mar_left10 pad_left10\"><i class=\"fas fa-check\"></i></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</particle-dialog>\r\n", styles: [".wis_button{width:40px;min-width:40px;height:40px;min-height:40px;cursor:pointer;transition:all .1s ease}.wis_button:disabled{cursor:default;opacity:1!important}.wis_button:hover:not(:disabled){filter:brightness(1.05)}.wis_button svg{transition:transform .1s ease}.wis_button:hover:not(:disabled) .wis_icon{transform:scale(1.15)}@supports not (-ms-high-contrast:none){.wis_button svg{width:75%;height:75%}}.wis_search{position:relative}.wis_search input{padding-right:40px!important}.wis_search .wis_search_btn{position:absolute;right:0;top:0;z-index:var(--z-frame);border-top-left-radius:0;border-bottom-left-radius:0;height:100%;width:32px}.wis_search .wis_clear_btn{position:absolute;right:40px;top:7px;z-index:var(--z-frame)}.wis_filter_btn{width:100%;padding:5px 10px;border-radius:3px}.wis_filter_btn:not(:hover):not(.selected){background-color:inherit;color:inherit}.wis_icon_btn{cursor:pointer;transition:all .1s ease;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;border:none;border-radius:3px;padding:5px 2px;background-color:inherit;color:inherit}.wis_icon_btn:hover{background-color:#7878781a}.wis_icon_btn_preview{transition:all .1s ease}.wis_selection_bar{z-index:var(--z-frame);box-shadow:0 -6px 10px -8px #00000040;animation-name:slideUpSelectionBar;animation-duration:.2s;transform-origin:bottom center}@keyframes slideUpSelectionBar{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}\n"] }]
|
|
357
356
|
}], ctorParameters: () => [{ type: i1.IconsService }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
|
|
358
357
|
type: Input
|
|
359
358
|
}], disabled: [{
|
|
@@ -374,4 +373,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
374
373
|
type: ViewChild,
|
|
375
374
|
args: ['iconScrollContainer']
|
|
376
375
|
}] } });
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ljb25zL2NvbXBvbmVudHMvaWNvbi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ljb25zL2NvbXBvbmVudHMvaWNvbi1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUkxRDs7R0FFRztBQWFILE1BQU0sT0FBTyxtQkFBbUI7SUFpUFY7SUFBK0I7SUEvT25EOzs7T0FHRztJQUNLLE1BQU0sQ0FBVSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXZDOzs7T0FHRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxLQUFLLEVBQUcsQ0FBQztZQUNYLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENB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Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixzSkM5QkgscXNrQkFnVEE7OzJGRGhSYSxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpSEFlRyxLQUFLO3NCQURSLEtBQUs7Z0JBZ0JGLFFBQVE7c0JBRFgsS0FBSztnQkFTTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQTRCTixNQUFNO3NCQURMLE1BQU07Z0JBT1AsUUFBUTtzQkFEUCxNQUFNO2dCQU9QLE1BQU07c0JBREwsTUFBTTtnQkFPUCxtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSWNvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWNvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7SWNvblNlbGVjdFRleHR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIFBhcnRpY2xlIEljb24gU2VsZWN0IGNvbXBvbmVudCBwcm92aWRlcyBhIGJ1dHRvbiBhbmQgYW4gaWNvbiBwaWNrZXIgdGhhdCBpbmNsdWRlcyBhbGwgb2YgdGhlIFBhcnRpY2xlIEljb25zIGFzIHdlbGwgYXMgdGhlIEZBUyBpY29ucy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGFydGljbGUtaWNvbi1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnaWNvbi1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ljb24tc2VsZWN0LmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEljb25TZWxlY3RDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEljb25TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5IHBlciBwYWdlXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBQQUdFX1NJWkUgPSA0ODtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgaWNvbiBzZWxlY3RcclxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHNldFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgaWYgKHZhbHVlKSAge1xyXG4gICAgICBjb25zdCBbcHJlZml4LCBuYW1lXSA9IHZhbHVlLnNwbGl0KCcgJyk7XHJcbiAgICAgIHRoaXMuX2ludGVybmFsVmFsdWUubmV4dCh7IHByZWZpeCwgbmFtZSB9KTtcclxuICAgICAgdGhpcy5zaG93SWNvblNlbGVjdGlvblByZXZpZXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRpc2FibGVkXHJcbiAgICogQHBhcmFtIGRpc2FibGVkIHdoZXRoZXIgb3Igbm90IHRoZSBpY29uIHBpY2tlciBzaG91bGQgYmUgZGlzYWJsZWRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbG9yIGNsYXNzIG9mIHRoZSBidXR0b25cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIGJ1dHRvbkNvbG9yQ2xhc3M6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgdmFsdWUgdG8gc2V0IHRvIHRoZSBidXR0b24ncyB3aWR0aCwgbWluLXdpZHRoLCBoZWlnaHQgYW5kIG1pbi1oZWlnaHRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIGJ1dHRvblNpemluZyA9ICc0MHB4JztcclxuXHJcbiAgQElucHV0KClcclxuICB0ZXh0OiBJY29uU2VsZWN0VGV4dCA9IHtcclxuICAgIHNlbGVjdEFuSWNvbjogJ1NlbGVjdCBhbiBJY29uJyxcclxuICAgIHNlZUFsbEljb25zOiAnU2VlIEFsbCBJY29ucycsXHJcbiAgICBmb250QXdlc29tZUljb25zOiAnRm9udCBBd2Vzb21lIEljb25zJyxcclxuICAgIGFsbDogJ0FsbCcsXHJcbiAgICBzb2xpZDogJ1NvbGlkJyxcclxuICAgIHJlZ3VsYXI6ICdSZWd1bGFyJyxcclxuICAgIGJyYW5kczogJ0JyYW5kcycsXHJcbiAgICBsaWdodDogJ0xpZ2h0JyxcclxuICAgIGN1c3RvbUljb25zOiAnQ3VzdG9tIEljb25zJyxcclxuICAgIHByZXZpb3VzUGFnZTogJ1ByZXZpb3VzIFBhZ2UnLFxyXG4gICAgbmV4dFBhZ2U6ICdOZXh0IFBhZ2UnLFxyXG4gICAgc2VhcmNoSWNvbnM6ICdTZWFyY2ggSWNvbnMnLFxyXG4gICAgc3VibWl0U2VhcmNoOiAnU3VibWl0IFNlYXJjaCcsXHJcbiAgICBjbGVhclJlc3VsdHM6ICdDbGVhciBSZXN1bHRzJyxcclxuICAgIGNvdWxkbnRGaW5kQW55dGhpbmc6ICdXZSBjb3VsZG5cXCd0IGZpbmQgYW55dGhpbmcnLFxyXG4gICAgbW9kaWZ5U2VhcmNoQ3JpdGVyaWE6ICdQbGVhc2UgdHJ5IG1vZGlmeWluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYScsXHJcbiAgICBzZWxlY3Rpb246ICdTZWxlY3Rpb24nLFxyXG4gICAgY29uZmlybTogJ0NvbmZpcm0nLFxyXG4gICAgc2VsZWN0OiAnU2VsZWN0JyxcclxuICAgIGNsb3NlOiAnQ2xvc2UnXHJcbiAgfSBhcyBJY29uU2VsZWN0VGV4dDtcclxuXHJcbiAgLyoqXHJcbiAgICogSWNvbiBzZWxlY3Qgb3BlbmVkIGV2ZW50IGVtaXR0ZXJcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEljb24gc2VsZWN0ZWQgZXZlbnQgZW1pdHRlclxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGlhbG9nIGNsb3NlZCBldmVudCBlbWl0dGVyXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzY3JvbGxhYmxlIGljb24gY29udGFpbmVyXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnaWNvblNjcm9sbENvbnRhaW5lcicpXHJcbiAgaWNvblNjcm9sbENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogQmVoYXZpb3JTdWJqZWN0IHRyYWNraW5nIHRoZSBpbnB1dCB2YWx1ZSBkZXN0cnVjdGVkIGludG8gaXRzIHByZWZpeCBhbmQgY2xhc3MgbmFtZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IF9pbnRlcm5hbFZhbHVlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IHByZWZpeDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfT4obnVsbCBhcyBhbnkpO1xyXG5cclxuICAvKipcclxuICAgKiBCZWhhdmlvclN1YmplY3QgdHJhY2tpbmcgdGhlIGN1cnJlbnQgZmlsdGVyIHZhbHVlIHNlbGVjdGlvbiBmb3IgaWNvbnNcclxuICAgKi9cclxuICByZWFkb25seSBfZmlsdGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDwge1xyXG4gICAgc3R5bGU6ICdhbGwnIHwgJ3NvbGlkJyB8ICdyZWd1bGFyJyB8ICdsaWdodCcgfCAnYnJhbmRzJyxcclxuICAgIHR5cGU6ICdhbGwnIHwgJ3BhcnRpY2xlJyB8ICdmb250YXdlc29tZSdcclxuICB9Pih7IHN0eWxlOiAnYWxsJywgdHlwZTogJ2FsbCcgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlaGF2aW9yU3ViamVjdCB0cmFja2luZyB0aGUgY3VycmVudCBpY29uIHNlYXJjaCB0ZXh0IHZhbHVlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgX3NlYXJjaFRleHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQmVoYXZpb3JTdWJqZWN0IHRoYXQgZW1pdHMgd2hlbiBzZWFyY2ggYnV0dG9uIGhhcyBiZWVuIGNsaWNrZWRcclxuICAgKi9cclxuICByZWFkb25seSBfc2VhcmNoQ2xpY2sgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQmVoYXZpb3JTdWJqZWN0IHRyYWNraW5nIHRoZSBhY3RpdmUgcGFnaW5hdGlvbiBwYWdlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgX2FjdGl2ZVBhZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJqZWN0IHRoYXQgZW1pdHMgb24gc2VhcmNoIGlucHV0IGVudGVyIGtleXVwXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgX3NlYXJjaElucHV0RW50ZXJLZXl1cCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIGFycmF5IG9mIGFsbCBpY29ucyAoYXMgc3RyaW5ncykgdGhhdCBtZWV0IHRoZSBjdXJyZW50IGZpbHRlci9zZWFyY2ggY3JpdGVyaWEgYXMgYW4gT2JzZXJ2YWJsZVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpY29ucyQ6IE9ic2VydmFibGU8QXJyYXk8eyBwcmVmaXg6IHN0cmluZywgbmFtZTogc3RyaW5nIH0+PiA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgdGhpcy5fZmlsdGVyLFxyXG4gICAgdGhpcy5fc2VhcmNoQ2xpY2tcclxuICBdKS5waXBlKFxyXG4gICAgbWFwKChbZmlsdGVyLCBzZWFyY2hUZXh0XSkgPT4gdGhpcy5zZXJ2aWNlLmdldEljb25zKFxyXG4gICAgICBmaWx0ZXIudHlwZSxcclxuICAgICAgZmlsdGVyLnN0eWxlLFxyXG4gICAgICBzZWFyY2hUZXh0XHJcbiAgICApKVxyXG4gICk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBjb3VudCBvZiB0b3RhbCBwYWdpbmF0b3IgcGFnZXMgYXMgYW4gT2JzZXJ2YWJsZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHRvdGFsUGFnZXMkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLmljb25zJC5waXBlKFxyXG4gICAgbWFwKGljb25zID0+IGljb25zLmxlbmd0aFxyXG4gICAgICA/IE1hdGguY2VpbChpY29ucy5sZW5ndGggLyBJY29uU2VsZWN0Q29tcG9uZW50LlBBR0VfU0laRSlcclxuICAgICAgOiAwXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHBlcmZvcm0gYW4gaWNvbiB0ZXh0IHNlYXJjaFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGNhblNlYXJjaCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9zZWFyY2hUZXh0LnBpcGUoXHJcbiAgICBtYXAoc2VhcmNoVGV4dCA9PiAhIXNlYXJjaFRleHQudHJpbSgpLmxlbmd0aClcclxuICApO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gcGFnaW5hdGUgdG8gdGhlIHByZXZpb3VzIHBhZ2VcclxuICAgKi9cclxuICByZWFkb25seSBjYW5QYWdpbmF0ZVByZXZpb3VzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2FjdGl2ZVBhZ2UucGlwZShcclxuICAgIG1hcChhY3RpdmVQYWdlID0+IGFjdGl2ZVBhZ2UgPiAwKVxyXG4gICk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBwYWdpbmF0ZSB0byB0aGUgbmV4dCBwYWdlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgY2FuUGFnaW5hdGVOZXh0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMudG90YWxQYWdlcyQucGlwZShcclxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuX2FjdGl2ZVBhZ2UpLFxyXG4gICAgbWFwKChbdG90YWxQYWdlcywgYWN0aXZlUGFnZV0pID0+IGFjdGl2ZVBhZ2UgPCAodG90YWxQYWdlcyAtIDEpKVxyXG4gICk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhZ2luYXRlZCBpY29ucyBhcnJheSBhcyBhbiBPYnNlcnZhYmxlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcGFnaW5hdGVkSWNvbnMkOiBPYnNlcnZhYmxlPEFycmF5PHsgcHJlZml4OiBzdHJpbmcsIG5hbWU6IHN0cmluZyB9Pj4gPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgIHRoaXMuX2FjdGl2ZVBhZ2UsXHJcbiAgICB0aGlzLmljb25zJFxyXG4gIF0pLnBpcGUoXHJcbiAgICBtYXAoKFthY3RpdmVQYWdlLCBpY29uc10pID0+IHtcclxuICAgICAgbGV0IHBhZ2luYXRlZEljb25zOiBBcnJheTx7IHByZWZpeDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfT4gPSBudWxsIGFzIGFueTtcclxuXHJcbiAgICAgIGlmIChhY3RpdmVQYWdlID49IDAgJiYgaWNvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgcGFnaW5hdGVkSWNvbnMgPSBpY29ucy5zbGljZShcclxuICAgICAgICAgIEljb25TZWxlY3RDb21wb25lbnQuUEFHRV9TSVpFICogYWN0aXZlUGFnZSxcclxuICAgICAgICAgIEljb25TZWxlY3RDb21wb25lbnQuUEFHRV9TSVpFICogKGFjdGl2ZVBhZ2UgKyAxKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBwYWdpbmF0ZWRJY29ucztcclxuICAgIH0pLFxyXG4gICAgdGFwKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaWNvblNjcm9sbENvbnRhaW5lcikge1xyXG4gICAgICAgIHRoaXMuaWNvblNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JqZWN0IHRoYXQgY29udHJvbHMgd2hldGhlciB0byBzaG93IHRoZSBkaWFsb2cgb3Igbm90XHJcbiAgICovXHJcbiAgc2hvd0RpYWxvZzogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBpY29uIHNlbGVjdGlvbiBwcmV2aWV3XHJcbiAgICovXHJcbiAgc2hvd0ljb25TZWxlY3Rpb25QcmV2aWV3ID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwdGlvbiBvYmplY3QgdG8gc3RvcmUgc2VhcmNoIGlucHV0IGVudGVyIGtleXVwIHN1YnNjcmlwdGlvblxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBpY29uIHNlbGVjdFxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgaWNvbiBwaWNrZXIgaXMgZGlzYWJsZWRcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIGNhbGwgb24gY2hhbmdlXHJcbiAgICovXHJcbiAgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIGNhbGwgb24gdG91Y2hcclxuICAgKi9cclxuICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBEZXBlbmRlbmN5IGluamVjdGlvbiBzaXRlXHJcbiAgICogQHBhcmFtIHNlcnZpY2UgdGhlIEljb25zU2VydmljZVxyXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiB0aGUgQW5ndWxhciBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogSWNvbnNTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLl9zZWFyY2hJbnB1dEVudGVyS2V5dXAucGlwZShcclxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jYW5TZWFyY2gkKVxyXG4gICAgKS5zdWJzY3JpYmUoKFtfX18sIGNhblNlYXJjaF0pID0+IHtcclxuICAgICAgaWYgKGNhblNlYXJjaCkge1xyXG4gICAgICAgIHRoaXMuX3NlYXJjaENsaWNrLm5leHQodGhpcy5fc2VhcmNoVGV4dC5nZXRWYWx1ZSgpKTtcclxuICAgICAgICB0aGlzLl9hY3RpdmVQYWdlLm5leHQoMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRpc2FibGVkXHJcbiAgICovXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVzdHJveSBjb21wb25lbnQsIHVuc3Vic2NyaWJlIGZyb20gc2VhcmNoIGlucHV0IGVudGVyIGtleXVwIHN1YnNjcmlwdGlvblxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyaXRlIHRoZSBpbnB1dCB2YWx1ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gd3JpdGVcclxuICAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBvbkNoYW5nZSBmdW5jdGlvblxyXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gcmVnaXN0ZXJcclxuICAgKi9cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVyIG9uVG91Y2hlZCBmdW5jdGlvblxyXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gcmVnaXN0ZXJcclxuICAgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRpc2FibGVkIHN0YXRlXHJcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgd2hldGhlciBvciBub3QgdGhlIGljb24gcGlja2VyIHNob3VsZCBiZSBkaXNhYmxlZFxyXG4gICAqL1xyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiB0aGUgaWNvbiBzZWxlY3QgZGlhbG9nXHJcbiAgICovXHJcbiAgb3BlbkRpYWxvZygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IHt9O1xyXG4gICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XHJcblxyXG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0ljb25TZWxlY3Rpb25QcmV2aWV3ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2UgdGhlIGljb24gc2VsZWN0IGRpYWxvZ1xyXG4gICAqL1xyXG4gIGNsb3NlRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgbGV0IGludGVybmFsVmFsdWUgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IFtwcmVmaXgsIG5hbWVdID0gdGhpcy5fdmFsdWUuc3BsaXQoJyAnKTtcclxuICAgICAgaW50ZXJuYWxWYWx1ZSA9IHsgcHJlZml4LCBuYW1lIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faW50ZXJuYWxWYWx1ZS5uZXh0KGludGVybmFsVmFsdWUgYXMgYW55KTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyA9IG51bGw7XHJcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgZmlsdGVyIHNlbGVjdFxyXG4gICAqIEBwYXJhbSBmaWx0ZXIgdGhlIHNlbGVjdGVkIGZpbHRlclxyXG4gICAqL1xyXG4gIGhhbmRsZUZpbHRlclNlbGVjdChcclxuICAgIGZpbHRlcjogeyBzdHlsZTogJ2FsbCcgfCAnc29saWQnIHwgJ3JlZ3VsYXInIHwgJ2xpZ2h0JyB8ICdicmFuZHMnLFxyXG4gICAgdHlwZTogJ2FsbCcgfCAncGFydGljbGUnIHwgJ2ZvbnRhd2Vzb21lJyB9XHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWx0ZXIubmV4dChmaWx0ZXIpO1xyXG4gICAgdGhpcy5fYWN0aXZlUGFnZS5uZXh0KDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGludGVybmFsIHZhbHVlIG9uIGljb24gc2VsZWN0XHJcbiAgICogQHBhcmFtIGljb24gdGhlIHNlbGVjdGVkIGljb25cclxuICAgKi9cclxuICBoYW5kbGVJY29uU2VsZWN0KGljb246IHsgcHJlZml4OiBzdHJpbmcsIG5hbWU6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbnRlcm5hbFZhbHVlLm5leHQoaWNvbik7XHJcbiAgICB0aGlzLnNob3dJY29uU2VsZWN0aW9uUHJldmlldyA9IGZhbHNlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3dJY29uU2VsZWN0aW9uUHJldmlldyA9IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JpdGUgdmFsdWUgb24gY29uZmlybVxyXG4gICAqL1xyXG4gIGhhbmRsZUljb25TZWxlY3RDb25maXJtKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaWNvbiA9IHRoaXMuX2ludGVybmFsVmFsdWUuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMudXBkYXRlTW9kZWwoYCR7aWNvbi5wcmVmaXh9ICR7aWNvbi5uYW1lfWApO1xyXG4gICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR28gdG8gdGhlIG5leHQgcGFnaW5hdGlvbiBwYWdlXHJcbiAgICovXHJcbiAgcGFnaW5hdGVOZXh0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWN0aXZlUGFnZS5uZXh0KHRoaXMuX2FjdGl2ZVBhZ2UuZ2V0VmFsdWUoKSArIDEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR28gdG8gdGhlIHByZXZpb3VzIHBhZ2luYXRpb24gcGFnZVxyXG4gICAqL1xyXG4gIHBhZ2luYXRlUHJldmlvdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hY3RpdmVQYWdlLm5leHQodGhpcy5fYWN0aXZlUGFnZS5nZXRWYWx1ZSgpIC0gMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzZWFyY2ggdGV4dCBhbmQgcmVzZXQgcGFnaW5hdG9yXHJcbiAgICovXHJcbiAgY2xlYXJTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZWFyY2hUZXh0Lm5leHQoJycpO1xyXG4gICAgdGhpcy5fc2VhcmNoQ2xpY2submV4dCgnJyk7XHJcbiAgICB0aGlzLl9hY3RpdmVQYWdlLm5leHQoMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgbW9kZWxcclxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgbW9kZWxcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlTW9kZWwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWVCZWZvcmVVcGRhdGUgPSB0aGlzLl92YWx1ZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgaWYgKHZhbHVlQmVmb3JlVXBkYXRlICE9PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoeyB2YWx1ZTogdGhpcy5fdmFsdWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBmaWx0ZXJpbmcvcGFnaW5hdGlvbiBCZWhhdmlvclN1YmplY3QgdmFsdWVzXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZmlsdGVyLm5leHQoeyBzdHlsZTogJ2FsbCcsIHR5cGU6ICdhbGwnIH0pO1xyXG4gICAgdGhpcy5fc2VhcmNoVGV4dC5uZXh0KCcnKTtcclxuICAgIHRoaXMuX3NlYXJjaENsaWNrLm5leHQoJycpO1xyXG4gICAgdGhpcy5fYWN0aXZlUGFnZS5uZXh0KDApO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIGNob29zZSBidXR0b24gLS0+XHJcbjxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ29sb3JDbGFzcyA/IGJ1dHRvbkNvbG9yQ2xhc3MgOiAnY29udGVudF9jb2xvcidcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogYnV0dG9uU2l6aW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAnbWluLXdpZHRoJzogYnV0dG9uU2l6aW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogYnV0dG9uU2l6aW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAnbWluLWhlaWdodCc6IGJ1dHRvblNpemluZ1xyXG4gICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5EaWFsb2coKVwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCIoX2ludGVybmFsVmFsdWUgfCBhc3luYyk/LnByZWZpeCArICcgJyArIChfaW50ZXJuYWxWYWx1ZSB8IGFzeW5jKT8ubmFtZVwiXHJcbiAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIoX2ludGVybmFsVmFsdWUgfCBhc3luYykgPT09IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyB3aXNfYnV0dG9uIGJnX292ZXJsYXkgYnJkciBicmFkXzNcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zZWxlY3RBbkljb25cIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dEaWFsb2cgZWxzZSBwbGFjZWhvbGRlckljb25cIj5cclxuICAgIDxkaXYgKm5nSWY9XCJfaW50ZXJuYWxWYWx1ZSB8IGFzeW5jIGFzIHNlbGVjdGVkSWNvbiBlbHNlIG5vU2VsZWN0aW9uXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3tzZWxlY3RlZEljb24ucHJlZml4fX0ge3tzZWxlY3RlZEljb24ubmFtZX19IHdpc19pY29uXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI25vU2VsZWN0aW9uPlxyXG4gICAgICA8ZGl2PjxpIGNsYXNzPVwiZmFzIGZhLWljb25zIG9wYWNpdHlfMjBcIj48L2k+PC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJJY29uPlxyXG4gICAgPGRpdj48aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+PC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9idXR0b24+XHJcblxyXG48IS0tIFRPRE86IGF0IHNvbWUgcG9pbnQsIG1heWJlIGltcGxlbWVudCBpbmZpbml0ZSBzY3JvbGwgdG8gaWNvbnMgLS0+XHJcblxyXG48IS0tIHBpY2tlciBkaWFsb2cgLS0+XHJcbjxwYXJ0aWNsZS1kaWFsb2cgW3RpdGxlXT1cInRleHQuc2VsZWN0QW5JY29uXCJcclxuICBbb2JqZWN0XT1cInNob3dEaWFsb2dcIlxyXG4gIFt3aWR0aF09XCInODUwcHgnXCJcclxuICBbaGVpZ2h0XT1cIic1MDBweCdcIlxyXG4gIChjbG9zZWQpPVwiY2xvc2VEaWFsb2coKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBoZWlnaHQxMDBcIj5cclxuXHJcbiAgICAgIDwhLS0gRklMVEVSUyAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBtaW5fdzI1MCBiZ19vdmVybGF5IGJyZHIgYm9yZGVyX3JpZ2h0IG1vYmlsZV9oaWRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd19ibG9jayB3aWR0aDEwMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9maWx0ZXIgfCBhc3luYyBhcyBmaWx0ZXJcIj5cclxuICAgICAgICAgICAgPCEtLSBhbGwgaWNvbnMgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNSBwYWRfNVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUZpbHRlclNlbGVjdCh7IHN0eWxlOiAnYWxsJywgdHlwZTogJ2FsbCcgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBmaWx0ZXIudHlwZSA9PT0gJ2FsbCcgJiYgZmlsdGVyLnN0eWxlID09PSAnYWxsJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnNlZUFsbEljb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidl9jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdhbGwnICYmIGZpbHRlci5zdHlsZSA9PT0gJ2FsbCdcIiBjbGFzcz1cImNpcmNsZV84cHggb2tfYnV0dG9uX2NvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZFwiPnt7dGV4dC5zZWVBbGxJY29uc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb19pY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodCBmYS1mdyBmYS1zbSBvcGFjaXR5XzYwXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnX292ZXJsYXkgYnJkciBociBtYXJfMTBcIj48L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBmb250YXdlc29tZSBpY29ucyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgbWQgYm9sZGVyXCIgc3R5bGU9XCJwYWRkaW5nOjEwcHggMTBweCA1cHggMTVweDtcIj57e3RleHQuZm9udEF3ZXNvbWVJY29uc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVGaWx0ZXJTZWxlY3QoeyBzdHlsZTogJ2FsbCcsIHR5cGU6ICdmb250YXdlc29tZScgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGZpbHRlci50eXBlID09PSAnZm9udGF3ZXNvbWUnICYmIGZpbHRlci5zdHlsZSA9PT0gJ2FsbCcgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuZmlsdGVyQnkgKyAnICcgKyB0ZXh0LmZvbnRBd2Vzb21lSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2ZvbnRhd2Vzb21lJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdhbGwnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LmFsbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRmlsdGVyU2VsZWN0KHsgc3R5bGU6ICdzb2xpZCcsIHR5cGU6ICdmb250YXdlc29tZScgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGZpbHRlci50eXBlID09PSAnZm9udGF3ZXNvbWUnICYmICBmaWx0ZXIuc3R5bGUgPT09ICdzb2xpZCcgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuZmlsdGVyQnkgKyAnICcgKyB0ZXh0LnNvbGlkICsgJyAnICsgdGV4dC5mb250QXdlc29tZUljb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2X2NlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVfMTZweCBiZ19vdmVybGF5X3JldiBicmRyIG1hcl9yaWdodDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ3NvbGlkJ1wiIGNsYXNzPVwiY2lyY2xlXzhweCBva19idXR0b25fY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZFwiPnt7dGV4dC5zb2xpZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRmlsdGVyU2VsZWN0KHsgc3R5bGU6ICdyZWd1bGFyJywgdHlwZTogJ2ZvbnRhd2Vzb21lJyB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ3JlZ3VsYXInIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBsaXN0X2J0biByb3cgc3BhY2VfYmV0d2VlbiB3aXNfZmlsdGVyX2J0biBiZ19vdmVybGF5X3JldiBicmRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmZpbHRlckJ5ICsgJyAnICsgdGV4dC5yZWd1bGFyICsgJyAnICsgdGV4dC5mb250QXdlc29tZUljb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2X2NlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVfMTZweCBiZ19vdmVybGF5X3JldiBicmRyIG1hcl9yaWdodDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ3JlZ3VsYXInXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LnJlZ3VsYXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvX2ljb25cIj48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0IGZhLWZ3IGZhLXNtIG9wYWNpdHlfNjBcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFyXzVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUZpbHRlclNlbGVjdCh7IHN0eWxlOiAnYnJhbmRzJywgdHlwZTogJ2ZvbnRhd2Vzb21lJyB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ2JyYW5kcycgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuZmlsdGVyQnkgKyAnICcgKyB0ZXh0LmJyYW5kcyArICcgJyArIHRleHQuZm9udEF3ZXNvbWVJY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidl9jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXzE2cHggYmdfb3ZlcmxheV9yZXYgYnJkciBtYXJfcmlnaHQxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZm9udGF3ZXNvbWUnICYmICBmaWx0ZXIuc3R5bGUgPT09ICdicmFuZHMnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LmJyYW5kc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnX292ZXJsYXkgYnJkciBociBtYXJfMTBcIj48L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBjdXN0b20gaWNvbnMgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kIGJvbGRlclwiIHN0eWxlPVwicGFkZGluZzoxMHB4IDEwcHggNXB4IDE1cHg7XCI+e3t0ZXh0LmN1c3RvbUljb25zfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFyXzVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUZpbHRlclNlbGVjdCh7IHN0eWxlOiAnYWxsJywgdHlwZTogJ3BhcnRpY2xlJyB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogZmlsdGVyLnR5cGUgPT09ICdwYXJ0aWNsZScgJiYgZmlsdGVyLnN0eWxlID09PSAnYWxsJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgbGlzdF9idG4gcm93IHNwYWNlX2JldHdlZW4gd2lzX2ZpbHRlcl9idG4gYmdfb3ZlcmxheV9yZXYgYnJkclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5maWx0ZXJCeSArICcgJyArIHRleHQuY3VzdG9tSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdhbGwnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+QWxsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRmlsdGVyU2VsZWN0KHsgc3R5bGU6ICdzb2xpZCcsIHR5cGU6ICdwYXJ0aWNsZScgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGZpbHRlci50eXBlID09PSAncGFydGljbGUnICYmIGZpbHRlci5zdHlsZSA9PT0gJ3NvbGlkJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgbGlzdF9idG4gcm93IHNwYWNlX2JldHdlZW4gd2lzX2ZpbHRlcl9idG4gYmdfb3ZlcmxheV9yZXYgYnJkclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5maWx0ZXJCeSArICcgJyArIHRleHQuc29saWQgKyAnICcgKyB0ZXh0LmN1c3RvbUljb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2X2NlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVfMTZweCBiZ19vdmVybGF5X3JldiBicmRyIG1hcl9yaWdodDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdwYXJ0aWNsZScgJiYgZmlsdGVyLnN0eWxlID09PSAnc29saWQnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+U29saWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb19pY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodCBmYS1mdyBmYS1zbSBvcGFjaXR5XzYwXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVGaWx0ZXJTZWxlY3QoeyBzdHlsZTogJ3JlZ3VsYXInLCB0eXBlOiAncGFydGljbGUnIH0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdyZWd1bGFyJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgbGlzdF9idG4gcm93IHNwYWNlX2JldHdlZW4gd2lzX2ZpbHRlcl9idG4gYmdfb3ZlcmxheV9yZXYgYnJkclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5maWx0ZXJCeSArICcgJyArIHRleHQucmVndWxhciArICcgJyArIHRleHQuY3VzdG9tSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdyZWd1bGFyJ1wiIGNsYXNzPVwiY2lyY2xlXzhweCBva19idXR0b25fY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZFwiPlJlZ3VsYXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb19pY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodCBmYS1mdyBmYS1zbSBvcGFjaXR5XzYwXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVGaWx0ZXJTZWxlY3QoeyBzdHlsZTogJ2xpZ2h0JywgdHlwZTogJ3BhcnRpY2xlJyB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogZmlsdGVyLnR5cGUgPT09ICdwYXJ0aWNsZScgJiYgZmlsdGVyLnN0eWxlID09PSAnbGlnaHQnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBsaXN0X2J0biByb3cgc3BhY2VfYmV0d2VlbiB3aXNfZmlsdGVyX2J0biBiZ19vdmVybGF5X3JldiBicmRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmZpbHRlckJ5ICsgJyAnICsgdGV4dC5saWdodCArICcgJyArIHRleHQuY3VzdG9tSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdsaWdodCdcIiBjbGFzcz1cImNpcmNsZV84cHggb2tfYnV0dG9uX2NvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgbWRcIj57e3RleHQubGlnaHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvX2ljb25cIj48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0IGZhLWZ3IGZhLXNtIG9wYWNpdHlfNjBcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIElDT05TIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIHNpemVfMiBjb2x1bW5cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbnRlbnRfY29sb3JfZGFya18xIHBhZF94NVwiPlxyXG4gICAgICAgICAgPCEtLSBwYWdpbmF0b3IgLS0+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidG90YWxQYWdlcyQgfCBhc3luYyBhcyB0b3RhbFBhZ2VzXCJcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wgdl9jZW50ZXIgbWFyXzEwXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5QYWdpbmF0ZVByZXZpb3VzJCB8IGFzeW5jIGVsc2UgZGlzYWJsZWRQcmV2aW91c0J1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2luYXRlUHJldmlvdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuIHNxdWFyZV8yNHB4IGJnX292ZXJsYXkgYnJkciBva19idXR0b25fY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5wcmV2aW91c1BhZ2VcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gc2xpZGVfbGVmdFwiPjxpIGNsYXNzPVwiZmFzIGZhLWFycm93LWxlZnRcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNhYmxlZFByZXZpb3VzQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gZGlzYWJsZWQgY2xhc3M9XCJhY2Nlc3MgYnRuIHNxdWFyZV8yNHB4IGJnX292ZXJsYXkgYnJkciBva19idXR0b25fY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnByZXZpb3VzUGFnZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHNsaWRlX2xlZnRcIj48aSBjbGFzcz1cImZhcyBmYS1hcnJvdy1sZWZ0XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dCBzbSBib2xkZXIgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDo2NXB4O1wiPlxyXG4gICAgICAgICAgICAgIHt7KF9hY3RpdmVQYWdlIHwgYXN5bmMpISArIDF9fSAvIHt7dG90YWxQYWdlc319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuUGFnaW5hdGVOZXh0JCB8IGFzeW5jIGVsc2UgZGlzYWJsZWROZXh0QnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnaW5hdGVOZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0biBzcXVhcmVfMjRweCBiZ19vdmVybGF5IGJyZHIgb2tfYnV0dG9uX2NvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQubmV4dFBhZ2VcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gc2xpZGVfcmlnaHRcIj48aSBjbGFzcz1cImZhcyBmYS1hcnJvdy1yaWdodFwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc2FibGVkTmV4dEJ1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGRpc2FibGVkIGNsYXNzPVwiYWNjZXNzIGJ0biBzcXVhcmVfMjRweCBiZ19vdmVybGF5IGJyZHIgb2tfYnV0dG9uX2NvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5uZXh0UGFnZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHNsaWRlX3JpZ2h0XCI+PGkgY2xhc3M9XCJmYXMgZmEtYXJyb3ctcmlnaHRcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIHNlYXJjaCAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgc2l6ZV8xIHdpc19zZWFyY2ggbWFyXzEwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjaWNvblNlYXJjaElucHV0XHJcbiAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJfc2VhcmNoVGV4dCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJfc2VhcmNoVGV4dC5uZXh0KGljb25TZWFyY2hJbnB1dC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIl9zZWFyY2hJbnB1dEVudGVyS2V5dXAubmV4dCgkYW55KG51bGwpKVwiXHJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBpbnB1dCBtZCBiZ19vdmVybGF5IGJyZHIgY29udGVudF9jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuc2VhcmNoSWNvbnNcIiBbcGxhY2Vob2xkZXJdPVwidGV4dC5zZWFyY2hJY29ucyArICcuLi4nXCIgLz5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjYW5TZWFyY2gkIHwgYXN5bmMpICYmIChfc2VhcmNoQ2xpY2sgfCBhc3luYylcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCIgYXJpYS1sYWJlbD1cIkNsZWFyIHNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuIGNpcmNsZV8xOHB4IG92ZXJsYXkgd2lzX2NsZWFyX2J0blwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBncm93XCI+PGkgY2xhc3M9XCJmYXMgZmEtdGltZXMgZmEtc21cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhblNlYXJjaCQgfCBhc3luYyBlbHNlIGRpc2FibGVkU2VhcmNoQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlYXJjaENsaWNrLm5leHQoaWNvblNlYXJjaElucHV0LnZhbHVlKTsgX2FjdGl2ZVBhZ2UubmV4dCgwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuIHNxdWFyZV8yOHB4IGJnX292ZXJsYXkgYnJkciBva19idXR0b25fY29sb3IgYnJhZF8zIHdpc19zZWFyY2hfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuc3VibWl0U2VhcmNoXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBncm93XCI+PGkgY2xhc3M9XCJmYXMgZmEtc2VhcmNoIGZhLXNtXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRTZWFyY2hCdXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuIHNxdWFyZV8yOHB4IGJnX292ZXJsYXkgYnJkciBva19idXR0b25fY29sb3IgYnJhZF8zIHdpc19zZWFyY2hfYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zdWJtaXRTZWFyY2hcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gZ3Jvd1wiPjxpIGNsYXNzPVwiZmFzIGZhLXNlYXJjaCBmYS1zbVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIGljb25zIC0tPlxyXG4gICAgICAgIDxkaXYgI2ljb25TY3JvbGxDb250YWluZXIgY2xhc3M9XCJjb2wgc2l6ZV8xIHRvcF9sZWZ0IHNjcm9sbF95IHBhZF81XCIgc3R5bGU9XCJzY3JvbGwtYmVoYXZpb3I6IHNtb290aFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2luYXRlZEljb25zJCB8IGFzeW5jIGFzIGljb25zIGVsc2Ugbm9SZXN1bHRzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgd3JhcCB0b3BfbGVmdFwiIHN0eWxlPVwiYWxpZ24taXRlbXM6c3RyZXRjaDtcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpY29uIG9mIHBhZ2luYXRlZEljb25zJCB8IGFzeW5jXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHNpemVfMSBtaW5fdzc1IG1hcl81XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY2Nlc3Mgd2lzX2ljb25fYnRuXCIgKGNsaWNrKT1cImhhbmRsZUljb25TZWxlY3QoaWNvbilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuc2VsZWN0ICsgJyAnICsgaWNvbi5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCIoKF9pbnRlcm5hbFZhbHVlIHwgYXN5bmMpPy5wcmVmaXggPT09IGljb24ucHJlZml4KSAmJiAoKF9pbnRlcm5hbFZhbHVlIHwgYXN5bmMpPy5uYW1lID09PSBpY29uLm5hbWUpID8gJ29rX2J1dHRvbl9jb2xvcicgOiAnY29udGVudF9jb2xvcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXNfaWNvbl9idG5fcHJldmlldyBzcXVhcmVfNTBweCBicmFkXzMgYmdfb3ZlcmxheSBicmRyIG1hcl9ib3Q1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7aWNvbi5wcmVmaXh9fSB7e2ljb24ubmFtZX19XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IHNtIGNlbnRlciBmYWRlZFwiPnt7aWNvbi5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9SZXN1bHRzPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbHVtbiBtaW5faDMwMCBjZW50ZXJfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHBhcnRpY2xlLWVuZHBvaW50LXN0YXRlXHJcbiAgICAgICAgICAgICAgICBbZW1wdHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW1wdHlJY29uXT1cIidmYXMgZmEtc2VhcmNoIGZhLTN4IG1hcl9ib3Q1J1wiXHJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCJ7ZW1wdHlUZXh0OiB0ZXh0LmNvdWxkbnRGaW5kQW55dGhpbmcsIGVtcHR5U3VidGV4dDogdGV4dC5tb2RpZnlTZWFyY2hDcml0ZXJpYX1cIj5cclxuICAgICAgICAgICAgICA8L3BhcnRpY2xlLWVuZHBvaW50LXN0YXRlPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IGNsZWFyIG1hcl8xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuY2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVfMjBweCBwdGxfYnJkcl9jb2xvciBwdGxfYnJkcl9zaXplIHB0bF9pbnB1dF9iZ19jb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIl9pbnRlcm5hbFZhbHVlIHwgYXN5bmMgYXMgc2VsZWN0ZWRJY29uXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwiY29sIHNwYWNlX2JldHdlZW4gYmdfb3ZlcmxheSBicmRyIGJvcmRlcl90b3AgcGFkX3g1IHdpc19zZWxlY3Rpb25fYmFyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIG1hcl8xMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZCBmYWRlZCBtYXJfcmlnaHQxMCBtb2JpbGVfaGlkZVwiPnt7dGV4dC5zZWxlY3Rpb259fTo8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCIgKm5nSWY9XCJzaG93SWNvblNlbGVjdGlvblByZXZpZXdcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7c2VsZWN0ZWRJY29uLnByZWZpeH19IHt7c2VsZWN0ZWRJY29uLm5hbWV9fSBmYS1mdyBtYXJfcmlnaHQ1XCIgc3R5bGU9XCJmb250LXNpemU6MTZweDtcIj48L2k+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgbWQgYm9sZFwiPnt7c2VsZWN0ZWRJY29uLnByZWZpeH19IHt7c2VsZWN0ZWRJY29uLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB2X2NlbnRlciBtYXJfMTBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0bnNldCBzcGFjZWQgbWQgaG92X2dsb3cgc2F2ZV9idXR0b25fY29sb3IgcHRsX2JyZHJfcmFkaXVzXCJcclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuY29uZmlybVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUljb25TZWxlY3RDb25maXJtKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdj57e3RleHQuY29uZmlybX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZHIgYm9yZGVyX2xlZnQgbWFyX2xlZnQxMCBwYWRfbGVmdDEwXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hlY2tcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvcGFydGljbGUtZGlhbG9nPlxyXG4iXX0=
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ljb25zL2NvbXBvbmVudHMvaWNvbi1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ljb25zL2NvbXBvbmVudHMvaWNvbi1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUkxRDs7R0FFRztBQWFILE1BQU0sT0FBTyxtQkFBbUI7SUFnUFY7SUFBK0I7SUE5T25EOzs7T0FHRztJQUNLLE1BQU0sQ0FBVSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXZDOzs7T0FHRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxLQUFLLEVBQUcsQ0FBQztZQUNYLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENB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VSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysc0pDOUJILDR0a0JBZ1RBOzsyRkRoUmEsbUJBQW1CO2tCQVovQixTQUFTOytCQUNFLHNCQUFzQixhQUdyQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUhBZUcsS0FBSztzQkFEUixLQUFLO2dCQWdCRixRQUFRO3NCQURYLEtBQUs7Z0JBU04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBT04sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkEyQk4sTUFBTTtzQkFETCxNQUFNO2dCQU9QLFFBQVE7c0JBRFAsTUFBTTtnQkFPUCxNQUFNO3NCQURMLE1BQU07Z0JBT1AsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEljb25zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb25TZWxlY3RUZXh0fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3BhcnRpY2xlLWNvbXBvbmVudC10ZXh0Lm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBQYXJ0aWNsZSBJY29uIFNlbGVjdCBjb21wb25lbnQgcHJvdmlkZXMgYSBidXR0b24gYW5kIGFuIGljb24gcGlja2VyIHRoYXQgaW5jbHVkZXMgYWxsIG9mIHRoZSBQYXJ0aWNsZSBJY29ucyBhcyB3ZWxsIGFzIHRoZSBGQVMgaWNvbnMuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3BhcnRpY2xlLWljb24tc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJ2ljb24tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pY29uLXNlbGVjdC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJY29uU2VsZWN0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJY29uU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBudW1iZXIgb2YgaXRlbXMgdG8gZGlzcGxheSBwZXIgcGFnZVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUEFHRV9TSVpFID0gNDg7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgdmFsdWUgb2YgdGhlIGljb24gc2VsZWN0XHJcbiAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh2YWx1ZSkgIHtcclxuICAgICAgY29uc3QgW3ByZWZpeCwgbmFtZV0gPSB2YWx1ZS5zcGxpdCgnICcpO1xyXG4gICAgICB0aGlzLl9pbnRlcm5hbFZhbHVlLm5leHQoeyBwcmVmaXgsIG5hbWUgfSk7XHJcbiAgICAgIHRoaXMuc2hvd0ljb25TZWxlY3Rpb25QcmV2aWV3ID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBkaXNhYmxlZFxyXG4gICAqIEBwYXJhbSBkaXNhYmxlZCB3aGV0aGVyIG9yIG5vdCB0aGUgaWNvbiBwaWNrZXIgc2hvdWxkIGJlIGRpc2FibGVkXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb2xvciBjbGFzcyBvZiB0aGUgYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBidXR0b25Db2xvckNsYXNzOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHZhbHVlIHRvIHNldCB0byB0aGUgYnV0dG9uJ3Mgd2lkdGgsIG1pbi13aWR0aCwgaGVpZ2h0IGFuZCBtaW4taGVpZ2h0XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBidXR0b25TaXppbmcgPSAnNDBweCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGV4dDogSWNvblNlbGVjdFRleHQgPSB7XHJcbiAgICBzZWxlY3RBbkljb246ICdTZWxlY3QgYW4gSWNvbicsXHJcbiAgICBzZWVBbGxJY29uczogJ1NlZSBBbGwgSWNvbnMnLFxyXG4gICAgZm9udEF3ZXNvbWVJY29uczogJ0ZvbnQgQXdlc29tZSBJY29ucycsXHJcbiAgICBhbGw6ICdBbGwnLFxyXG4gICAgc29saWQ6ICdTb2xpZCcsXHJcbiAgICByZWd1bGFyOiAnUmVndWxhcicsXHJcbiAgICBicmFuZHM6ICdCcmFuZHMnLFxyXG4gICAgY3VzdG9tSWNvbnM6ICdDdXN0b20gSWNvbnMnLFxyXG4gICAgcHJldmlvdXNQYWdlOiAnUHJldmlvdXMgUGFnZScsXHJcbiAgICBuZXh0UGFnZTogJ05leHQgUGFnZScsXHJcbiAgICBzZWFyY2hJY29uczogJ1NlYXJjaCBJY29ucycsXHJcbiAgICBzdWJtaXRTZWFyY2g6ICdTdWJtaXQgU2VhcmNoJyxcclxuICAgIGNsZWFyUmVzdWx0czogJ0NsZWFyIFJlc3VsdHMnLFxyXG4gICAgY291bGRudEZpbmRBbnl0aGluZzogJ1dlIGNvdWxkblxcJ3QgZmluZCBhbnl0aGluZycsXHJcbiAgICBtb2RpZnlTZWFyY2hDcml0ZXJpYTogJ1BsZWFzZSB0cnkgbW9kaWZ5aW5nIHlvdXIgc2VhcmNoIGNyaXRlcmlhJyxcclxuICAgIHNlbGVjdGlvbjogJ1NlbGVjdGlvbicsXHJcbiAgICBjb25maXJtOiAnQ29uZmlybScsXHJcbiAgICBzZWxlY3Q6ICdTZWxlY3QnLFxyXG4gICAgY2xvc2U6ICdDbG9zZSdcclxuICB9IGFzIEljb25TZWxlY3RUZXh0O1xyXG5cclxuICAvKipcclxuICAgKiBJY29uIHNlbGVjdCBvcGVuZWQgZXZlbnQgZW1pdHRlclxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWNvbiBzZWxlY3RlZCBldmVudCBlbWl0dGVyXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBEaWFsb2cgY2xvc2VkIGV2ZW50IGVtaXR0ZXJcclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHNjcm9sbGFibGUgaWNvbiBjb250YWluZXJcclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdpY29uU2Nyb2xsQ29udGFpbmVyJylcclxuICBpY29uU2Nyb2xsQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiA9IG51bGwgYXMgYW55O1xyXG5cclxuICAvKipcclxuICAgKiBCZWhhdmlvclN1YmplY3QgdHJhY2tpbmcgdGhlIGlucHV0IHZhbHVlIGRlc3RydWN0ZWQgaW50byBpdHMgcHJlZml4IGFuZCBjbGFzcyBuYW1lXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgX2ludGVybmFsVmFsdWUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgcHJlZml4OiBzdHJpbmcsIG5hbWU6IHN0cmluZyB9PihudWxsIGFzIGFueSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlaGF2aW9yU3ViamVjdCB0cmFja2luZyB0aGUgY3VycmVudCBmaWx0ZXIgdmFsdWUgc2VsZWN0aW9uIGZvciBpY29uc1xyXG4gICAqL1xyXG4gIHJlYWRvbmx5IF9maWx0ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCB7XHJcbiAgICBzdHlsZTogJ2FsbCcgfCAnc29saWQnIHwgJ3JlZ3VsYXInIHwgJ2JyYW5kcycsXHJcbiAgICB0eXBlOiAnYWxsJyB8ICdwYXJ0aWNsZScgfCAnZm9udGF3ZXNvbWUnXHJcbiAgfT4oeyBzdHlsZTogJ2FsbCcsIHR5cGU6ICdhbGwnIH0pO1xyXG5cclxuICAvKipcclxuICAgKiBCZWhhdmlvclN1YmplY3QgdHJhY2tpbmcgdGhlIGN1cnJlbnQgaWNvbiBzZWFyY2ggdGV4dCB2YWx1ZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IF9zZWFyY2hUZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlaGF2aW9yU3ViamVjdCB0aGF0IGVtaXRzIHdoZW4gc2VhcmNoIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgX3NlYXJjaENsaWNrID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJlaGF2aW9yU3ViamVjdCB0cmFja2luZyB0aGUgYWN0aXZlIHBhZ2luYXRpb24gcGFnZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IF9hY3RpdmVQYWdlID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViamVjdCB0aGF0IGVtaXRzIG9uIHNlYXJjaCBpbnB1dCBlbnRlciBrZXl1cFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IF9zZWFyY2hJbnB1dEVudGVyS2V5dXAgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhcnJheSBvZiBhbGwgaWNvbnMgKGFzIHN0cmluZ3MpIHRoYXQgbWVldCB0aGUgY3VycmVudCBmaWx0ZXIvc2VhcmNoIGNyaXRlcmlhIGFzIGFuIE9ic2VydmFibGVcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbnMkOiBPYnNlcnZhYmxlPEFycmF5PHsgcHJlZml4OiBzdHJpbmcsIG5hbWU6IHN0cmluZyB9Pj4gPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgIHRoaXMuX2ZpbHRlcixcclxuICAgIHRoaXMuX3NlYXJjaENsaWNrXHJcbiAgXSkucGlwZShcclxuICAgIG1hcCgoW2ZpbHRlciwgc2VhcmNoVGV4dF0pID0+IHRoaXMuc2VydmljZS5nZXRJY29ucyhcclxuICAgICAgZmlsdGVyLnR5cGUsXHJcbiAgICAgIGZpbHRlci5zdHlsZSxcclxuICAgICAgc2VhcmNoVGV4dFxyXG4gICAgKSlcclxuICApO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgY291bnQgb2YgdG90YWwgcGFnaW5hdG9yIHBhZ2VzIGFzIGFuIE9ic2VydmFibGVcclxuICAgKi9cclxuICByZWFkb25seSB0b3RhbFBhZ2VzJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5pY29ucyQucGlwZShcclxuICAgIG1hcChpY29ucyA9PiBpY29ucy5sZW5ndGhcclxuICAgICAgPyBNYXRoLmNlaWwoaWNvbnMubGVuZ3RoIC8gSWNvblNlbGVjdENvbXBvbmVudC5QQUdFX1NJWkUpXHJcbiAgICAgIDogMFxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBwZXJmb3JtIGFuIGljb24gdGV4dCBzZWFyY2hcclxuICAgKi9cclxuICByZWFkb25seSBjYW5TZWFyY2gkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fc2VhcmNoVGV4dC5waXBlKFxyXG4gICAgbWFwKHNlYXJjaFRleHQgPT4gISFzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGgpXHJcbiAgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHBhZ2luYXRlIHRvIHRoZSBwcmV2aW91cyBwYWdlXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgY2FuUGFnaW5hdGVQcmV2aW91cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9hY3RpdmVQYWdlLnBpcGUoXHJcbiAgICBtYXAoYWN0aXZlUGFnZSA9PiBhY3RpdmVQYWdlID4gMClcclxuICApO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gcGFnaW5hdGUgdG8gdGhlIG5leHQgcGFnZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGNhblBhZ2luYXRlTmV4dCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnRvdGFsUGFnZXMkLnBpcGUoXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLl9hY3RpdmVQYWdlKSxcclxuICAgIG1hcCgoW3RvdGFsUGFnZXMsIGFjdGl2ZVBhZ2VdKSA9PiBhY3RpdmVQYWdlIDwgKHRvdGFsUGFnZXMgLSAxKSlcclxuICApO1xyXG5cclxuICAvKipcclxuICAgKiBQYWdpbmF0ZWQgaWNvbnMgYXJyYXkgYXMgYW4gT2JzZXJ2YWJsZVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHBhZ2luYXRlZEljb25zJDogT2JzZXJ2YWJsZTxBcnJheTx7IHByZWZpeDogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfT4+ID0gY29tYmluZUxhdGVzdChbXHJcbiAgICB0aGlzLl9hY3RpdmVQYWdlLFxyXG4gICAgdGhpcy5pY29ucyRcclxuICBdKS5waXBlKFxyXG4gICAgbWFwKChbYWN0aXZlUGFnZSwgaWNvbnNdKSA9PiB7XHJcbiAgICAgIGxldCBwYWdpbmF0ZWRJY29uczogQXJyYXk8eyBwcmVmaXg6IHN0cmluZywgbmFtZTogc3RyaW5nIH0+ID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gICAgICBpZiAoYWN0aXZlUGFnZSA+PSAwICYmIGljb25zLmxlbmd0aCkge1xyXG4gICAgICAgIHBhZ2luYXRlZEljb25zID0gaWNvbnMuc2xpY2UoXHJcbiAgICAgICAgICBJY29uU2VsZWN0Q29tcG9uZW50LlBBR0VfU0laRSAqIGFjdGl2ZVBhZ2UsXHJcbiAgICAgICAgICBJY29uU2VsZWN0Q29tcG9uZW50LlBBR0VfU0laRSAqIChhY3RpdmVQYWdlICsgMSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcGFnaW5hdGVkSWNvbnM7XHJcbiAgICB9KSxcclxuICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmljb25TY3JvbGxDb250YWluZXIpIHtcclxuICAgICAgICB0aGlzLmljb25TY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9iamVjdCB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgdG8gc2hvdyB0aGUgZGlhbG9nIG9yIG5vdFxyXG4gICAqL1xyXG4gIHNob3dEaWFsb2c6IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgaWNvbiBzZWxlY3Rpb24gcHJldmlld1xyXG4gICAqL1xyXG4gIHNob3dJY29uU2VsZWN0aW9uUHJldmlldyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpcHRpb24gb2JqZWN0IHRvIHN0b3JlIHNlYXJjaCBpbnB1dCBlbnRlciBrZXl1cCBzdWJzY3JpcHRpb25cclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgaWNvbiBzZWxlY3RcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBvciBub3QgdGhlIGljb24gcGlja2VyIGlzIGRpc2FibGVkXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0byBjYWxsIG9uIGNoYW5nZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0byBjYWxsIG9uIHRvdWNoXHJcbiAgICovXHJcbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVwZW5kZW5jeSBpbmplY3Rpb24gc2l0ZVxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlIHRoZSBJY29uc1NlcnZpY2VcclxuICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgdGhlIEFuZ3VsYXIgQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IEljb25zU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5fc2VhcmNoSW5wdXRFbnRlcktleXVwLnBpcGUoXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuY2FuU2VhcmNoJClcclxuICAgICkuc3Vic2NyaWJlKChbX19fLCBjYW5TZWFyY2hdKSA9PiB7XHJcbiAgICAgIGlmIChjYW5TZWFyY2gpIHtcclxuICAgICAgICB0aGlzLl9zZWFyY2hDbGljay5uZXh0KHRoaXMuX3NlYXJjaFRleHQuZ2V0VmFsdWUoKSk7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlUGFnZS5uZXh0KDApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBkaXNhYmxlZFxyXG4gICAqL1xyXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc3Ryb3kgY29tcG9uZW50LCB1bnN1YnNjcmliZSBmcm9tIHNlYXJjaCBpbnB1dCBlbnRlciBrZXl1cCBzdWJzY3JpcHRpb25cclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZSB0aGUgaW5wdXQgdmFsdWVcclxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHdyaXRlXHJcbiAgICovXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgb25DaGFuZ2UgZnVuY3Rpb25cclxuICAgKiBAcGFyYW0gZm4gdGhlIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBvblRvdWNoZWQgZnVuY3Rpb25cclxuICAgKiBAcGFyYW0gZm4gdGhlIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBkaXNhYmxlZCBzdGF0ZVxyXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIHdoZXRoZXIgb3Igbm90IHRoZSBpY29uIHBpY2tlciBzaG91bGQgYmUgZGlzYWJsZWRcclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gdGhlIGljb24gc2VsZWN0IGRpYWxvZ1xyXG4gICAqL1xyXG4gIG9wZW5EaWFsb2coKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICB0aGlzLnNob3dEaWFsb2cgPSB7fTtcclxuICAgICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNob3dJY29uU2VsZWN0aW9uUHJldmlldyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlIHRoZSBpY29uIHNlbGVjdCBkaWFsb2dcclxuICAgKi9cclxuICBjbG9zZURpYWxvZygpOiB2b2lkIHtcclxuICAgIGxldCBpbnRlcm5hbFZhbHVlID0gbnVsbDtcclxuICAgIGlmICh0aGlzLl92YWx1ZSkge1xyXG4gICAgICBjb25zdCBbcHJlZml4LCBuYW1lXSA9IHRoaXMuX3ZhbHVlLnNwbGl0KCcgJyk7XHJcbiAgICAgIGludGVybmFsVmFsdWUgPSB7IHByZWZpeCwgbmFtZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2ludGVybmFsVmFsdWUubmV4dChpbnRlcm5hbFZhbHVlIGFzIGFueSk7XHJcbiAgICB0aGlzLnNob3dEaWFsb2cgPSBudWxsO1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGZpbHRlciBzZWxlY3RcclxuICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBzZWxlY3RlZCBmaWx0ZXJcclxuICAgKi9cclxuICBoYW5kbGVGaWx0ZXJTZWxlY3QoXHJcbiAgICBmaWx0ZXI6IHsgc3R5bGU6ICdhbGwnIHwgJ3NvbGlkJyB8ICdyZWd1bGFyJyB8ICdicmFuZHMnLFxyXG4gICAgdHlwZTogJ2FsbCcgfCAncGFydGljbGUnIHwgJ2ZvbnRhd2Vzb21lJyB9XHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWx0ZXIubmV4dChmaWx0ZXIpO1xyXG4gICAgdGhpcy5fYWN0aXZlUGFnZS5uZXh0KDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGludGVybmFsIHZhbHVlIG9uIGljb24gc2VsZWN0XHJcbiAgICogQHBhcmFtIGljb24gdGhlIHNlbGVjdGVkIGljb25cclxuICAgKi9cclxuICBoYW5kbGVJY29uU2VsZWN0KGljb246IHsgcHJlZml4OiBzdHJpbmcsIG5hbWU6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbnRlcm5hbFZhbHVlLm5leHQoaWNvbik7XHJcbiAgICB0aGlzLnNob3dJY29uU2VsZWN0aW9uUHJldmlldyA9IGZhbHNlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3dJY29uU2VsZWN0aW9uUHJldmlldyA9IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JpdGUgdmFsdWUgb24gY29uZmlybVxyXG4gICAqL1xyXG4gIGhhbmRsZUljb25TZWxlY3RDb25maXJtKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaWNvbiA9IHRoaXMuX2ludGVybmFsVmFsdWUuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMudXBkYXRlTW9kZWwoYCR7aWNvbi5wcmVmaXh9ICR7aWNvbi5uYW1lfWApO1xyXG4gICAgdGhpcy5jbG9zZURpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR28gdG8gdGhlIG5leHQgcGFnaW5hdGlvbiBwYWdlXHJcbiAgICovXHJcbiAgcGFnaW5hdGVOZXh0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWN0aXZlUGFnZS5uZXh0KHRoaXMuX2FjdGl2ZVBhZ2UuZ2V0VmFsdWUoKSArIDEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR28gdG8gdGhlIHByZXZpb3VzIHBhZ2luYXRpb24gcGFnZVxyXG4gICAqL1xyXG4gIHBhZ2luYXRlUHJldmlvdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hY3RpdmVQYWdlLm5leHQodGhpcy5fYWN0aXZlUGFnZS5nZXRWYWx1ZSgpIC0gMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzZWFyY2ggdGV4dCBhbmQgcmVzZXQgcGFnaW5hdG9yXHJcbiAgICovXHJcbiAgY2xlYXJTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZWFyY2hUZXh0Lm5leHQoJycpO1xyXG4gICAgdGhpcy5fc2VhcmNoQ2xpY2submV4dCgnJyk7XHJcbiAgICB0aGlzLl9hY3RpdmVQYWdlLm5leHQoMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgbW9kZWxcclxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgbW9kZWxcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlTW9kZWwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWVCZWZvcmVVcGRhdGUgPSB0aGlzLl92YWx1ZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgaWYgKHZhbHVlQmVmb3JlVXBkYXRlICE9PSB0aGlzLl92YWx1ZSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoeyB2YWx1ZTogdGhpcy5fdmFsdWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBmaWx0ZXJpbmcvcGFnaW5hdGlvbiBCZWhhdmlvclN1YmplY3QgdmFsdWVzXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZmlsdGVyLm5leHQoeyBzdHlsZTogJ2FsbCcsIHR5cGU6ICdhbGwnIH0pO1xyXG4gICAgdGhpcy5fc2VhcmNoVGV4dC5uZXh0KCcnKTtcclxuICAgIHRoaXMuX3NlYXJjaENsaWNrLm5leHQoJycpO1xyXG4gICAgdGhpcy5fYWN0aXZlUGFnZS5uZXh0KDApO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIGNob29zZSBidXR0b24gLS0+XHJcbjxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ29sb3JDbGFzcyA/IGJ1dHRvbkNvbG9yQ2xhc3MgOiAnY29udGVudF9jb2xvcidcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogYnV0dG9uU2l6aW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAnbWluLXdpZHRoJzogYnV0dG9uU2l6aW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogYnV0dG9uU2l6aW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAnbWluLWhlaWdodCc6IGJ1dHRvblNpemluZ1xyXG4gICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5EaWFsb2coKVwiXHJcbiAgICAgICAgW3BhcnRpY2xlVG9vbHRpcF09XCIoX2ludGVybmFsVmFsdWUgfCBhc3luYyk/LnByZWZpeCArICcgJyArIChfaW50ZXJuYWxWYWx1ZSB8IGFzeW5jKT8ubmFtZVwiXHJcbiAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIoX2ludGVybmFsVmFsdWUgfCBhc3luYykgPT09IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBjbGFzcz1cImFjY2VzcyB3aXNfYnV0dG9uIGJnX292ZXJsYXkgYnJkciBicmFkXzNcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zZWxlY3RBbkljb25cIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dEaWFsb2cgZWxzZSBwbGFjZWhvbGRlckljb25cIj5cclxuICAgIDxkaXYgKm5nSWY9XCJfaW50ZXJuYWxWYWx1ZSB8IGFzeW5jIGFzIHNlbGVjdGVkSWNvbiBlbHNlIG5vU2VsZWN0aW9uXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3tzZWxlY3RlZEljb24ucHJlZml4fX0ge3tzZWxlY3RlZEljb24ubmFtZX19IHdpc19pY29uXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI25vU2VsZWN0aW9uPlxyXG4gICAgICA8ZGl2PjxpIGNsYXNzPVwiZmFzIGZhLWljb25zIG9wYWNpdHlfMjBcIj48L2k+PC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXJJY29uPlxyXG4gICAgPGRpdj48aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+PC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9idXR0b24+XHJcblxyXG48IS0tIFRPRE86IGF0IHNvbWUgcG9pbnQsIG1heWJlIGltcGxlbWVudCBpbmZpbml0ZSBzY3JvbGwgdG8gaWNvbnMgLS0+XHJcblxyXG48IS0tIHBpY2tlciBkaWFsb2cgLS0+XHJcbjxwYXJ0aWNsZS1kaWFsb2cgW3RpdGxlXT1cInRleHQuc2VsZWN0QW5JY29uXCJcclxuICBbb2JqZWN0XT1cInNob3dEaWFsb2dcIlxyXG4gIFt3aWR0aF09XCInODUwcHgnXCJcclxuICBbaGVpZ2h0XT1cIic1MDBweCdcIlxyXG4gIChjbG9zZWQpPVwiY2xvc2VEaWFsb2coKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBoZWlnaHQxMDBcIj5cclxuXHJcbiAgICAgIDwhLS0gRklMVEVSUyAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBtaW5fdzI1MCBiZ19vdmVybGF5IGJyZHIgYm9yZGVyX3JpZ2h0IG1vYmlsZV9oaWRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd19ibG9jayB3aWR0aDEwMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9maWx0ZXIgfCBhc3luYyBhcyBmaWx0ZXJcIj5cclxuICAgICAgICAgICAgPCEtLSBhbGwgaWNvbnMgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNSBwYWRfNVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUZpbHRlclNlbGVjdCh7IHN0eWxlOiAnYWxsJywgdHlwZTogJ2FsbCcgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBmaWx0ZXIudHlwZSA9PT0gJ2FsbCcgJiYgZmlsdGVyLnN0eWxlID09PSAnYWxsJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnNlZUFsbEljb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidl9jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdhbGwnICYmIGZpbHRlci5zdHlsZSA9PT0gJ2FsbCdcIiBjbGFzcz1cImNpcmNsZV84cHggb2tfYnV0dG9uX2NvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZFwiPnt7dGV4dC5zZWVBbGxJY29uc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb19pY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodCBmYS1mdyBmYS1zbSBvcGFjaXR5XzYwXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnX292ZXJsYXkgYnJkciBociBtYXJfMTBcIj48L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBmb250YXdlc29tZSBpY29ucyAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgbWQgYm9sZGVyXCIgc3R5bGU9XCJwYWRkaW5nOjEwcHggMTBweCA1cHggMTVweDtcIj57e3RleHQuZm9udEF3ZXNvbWVJY29uc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVGaWx0ZXJTZWxlY3QoeyBzdHlsZTogJ2FsbCcsIHR5cGU6ICdmb250YXdlc29tZScgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGZpbHRlci50eXBlID09PSAnZm9udGF3ZXNvbWUnICYmIGZpbHRlci5zdHlsZSA9PT0gJ2FsbCcgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuZmlsdGVyQnkgKyAnICcgKyB0ZXh0LmZvbnRBd2Vzb21lSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2ZvbnRhd2Vzb21lJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdhbGwnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LmFsbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRmlsdGVyU2VsZWN0KHsgc3R5bGU6ICdzb2xpZCcsIHR5cGU6ICdmb250YXdlc29tZScgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGZpbHRlci50eXBlID09PSAnZm9udGF3ZXNvbWUnICYmICBmaWx0ZXIuc3R5bGUgPT09ICdzb2xpZCcgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuZmlsdGVyQnkgKyAnICcgKyB0ZXh0LnNvbGlkICsgJyAnICsgdGV4dC5mb250QXdlc29tZUljb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2X2NlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVfMTZweCBiZ19vdmVybGF5X3JldiBicmRyIG1hcl9yaWdodDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ3NvbGlkJ1wiIGNsYXNzPVwiY2lyY2xlXzhweCBva19idXR0b25fY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZFwiPnt7dGV4dC5zb2xpZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRmlsdGVyU2VsZWN0KHsgc3R5bGU6ICdyZWd1bGFyJywgdHlwZTogJ2ZvbnRhd2Vzb21lJyB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ3JlZ3VsYXInIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBsaXN0X2J0biByb3cgc3BhY2VfYmV0d2VlbiB3aXNfZmlsdGVyX2J0biBiZ19vdmVybGF5X3JldiBicmRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmZpbHRlckJ5ICsgJyAnICsgdGV4dC5yZWd1bGFyICsgJyAnICsgdGV4dC5mb250QXdlc29tZUljb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2X2NlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVfMTZweCBiZ19vdmVybGF5X3JldiBicmRyIG1hcl9yaWdodDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ3JlZ3VsYXInXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LnJlZ3VsYXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvX2ljb25cIj48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXJpZ2h0IGZhLWZ3IGZhLXNtIG9wYWNpdHlfNjBcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFyXzVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUZpbHRlclNlbGVjdCh7IHN0eWxlOiAnYnJhbmRzJywgdHlwZTogJ2ZvbnRhd2Vzb21lJyB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogZmlsdGVyLnR5cGUgPT09ICdmb250YXdlc29tZScgJiYgIGZpbHRlci5zdHlsZSA9PT0gJ2JyYW5kcycgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuZmlsdGVyQnkgKyAnICcgKyB0ZXh0LmJyYW5kcyArICcgJyArIHRleHQuZm9udEF3ZXNvbWVJY29uc1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidl9jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2lyY2xlXzE2cHggYmdfb3ZlcmxheV9yZXYgYnJkciBtYXJfcmlnaHQxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZm9udGF3ZXNvbWUnICYmICBmaWx0ZXIuc3R5bGUgPT09ICdicmFuZHMnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LmJyYW5kc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnX292ZXJsYXkgYnJkciBociBtYXJfMTBcIj48L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBjdXN0b20gaWNvbnMgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kIGJvbGRlclwiIHN0eWxlPVwicGFkZGluZzoxMHB4IDEwcHggNXB4IDE1cHg7XCI+e3t0ZXh0LmN1c3RvbUljb25zfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFyXzVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUZpbHRlclNlbGVjdCh7IHN0eWxlOiAnYWxsJywgdHlwZTogJ3BhcnRpY2xlJyB9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogZmlsdGVyLnR5cGUgPT09ICdwYXJ0aWNsZScgJiYgZmlsdGVyLnN0eWxlID09PSAnYWxsJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgbGlzdF9idG4gcm93IHNwYWNlX2JldHdlZW4gd2lzX2ZpbHRlcl9idG4gYmdfb3ZlcmxheV9yZXYgYnJkclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5maWx0ZXJCeSArICcgJyArIHRleHQuY3VzdG9tSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdhbGwnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+QWxsPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJfNVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlRmlsdGVyU2VsZWN0KHsgc3R5bGU6ICdzb2xpZCcsIHR5cGU6ICdwYXJ0aWNsZScgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGZpbHRlci50eXBlID09PSAncGFydGljbGUnICYmIGZpbHRlci5zdHlsZSA9PT0gJ3NvbGlkJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgbGlzdF9idG4gcm93IHNwYWNlX2JldHdlZW4gd2lzX2ZpbHRlcl9idG4gYmdfb3ZlcmxheV9yZXYgYnJkclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5maWx0ZXJCeSArICcgJyArIHRleHQuc29saWQgKyAnICcgKyB0ZXh0LmN1c3RvbUljb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2X2NlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaXJjbGVfMTZweCBiZ19vdmVybGF5X3JldiBicmRyIG1hcl9yaWdodDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdwYXJ0aWNsZScgJiYgZmlsdGVyLnN0eWxlID09PSAnc29saWQnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LnNvbGlkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb19pY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodCBmYS1mdyBmYS1zbSBvcGFjaXR5XzYwXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVGaWx0ZXJTZWxlY3QoeyBzdHlsZTogJ3JlZ3VsYXInLCB0eXBlOiAncGFydGljbGUnIH0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQnOiBmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdyZWd1bGFyJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgbGlzdF9idG4gcm93IHNwYWNlX2JldHdlZW4gd2lzX2ZpbHRlcl9idG4gYmdfb3ZlcmxheV9yZXYgYnJkclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5maWx0ZXJCeSArICcgJyArIHRleHQucmVndWxhciArICcgJyArIHRleHQuY3VzdG9tSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdyZWd1bGFyJ1wiIGNsYXNzPVwiY2lyY2xlXzhweCBva19idXR0b25fY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZFwiPnt7dGV4dC5yZWd1bGFyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb19pY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodCBmYS1mdyBmYS1zbSBvcGFjaXR5XzYwXCI+PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcl81XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVGaWx0ZXJTZWxlY3QoeyBzdHlsZTogJ2JyYW5kcycsIHR5cGU6ICdwYXJ0aWNsZScgfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCc6IGZpbHRlci50eXBlID09PSAncGFydGljbGUnICYmIGZpbHRlci5zdHlsZSA9PT0gJ2JyYW5kcycgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGxpc3RfYnRuIHJvdyBzcGFjZV9iZXR3ZWVuIHdpc19maWx0ZXJfYnRuIGJnX292ZXJsYXlfcmV2IGJyZHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQuZmlsdGVyQnkgKyAnICcgKyB0ZXh0LmJyYW5kcyArICcgJyArIHRleHQuY3VzdG9tSWNvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZfY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8xNnB4IGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyX3JpZ2h0MTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3BhcnRpY2xlJyAmJiBmaWx0ZXIuc3R5bGUgPT09ICdicmFuZHMnXCIgY2xhc3M9XCJjaXJjbGVfOHB4IG9rX2J1dHRvbl9jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kXCI+e3t0ZXh0LmJyYW5kc319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29faWNvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHQgZmEtZncgZmEtc20gb3BhY2l0eV82MFwiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSUNPTlMgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wgc2l6ZV8yIGNvbHVtblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgY29udGVudF9jb2xvcl9kYXJrXzEgcGFkX3g1XCI+XHJcbiAgICAgICAgICA8IS0tIHBhZ2luYXRvciAtLT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0b3RhbFBhZ2VzJCB8IGFzeW5jIGFzIHRvdGFsUGFnZXNcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImNvbCB2X2NlbnRlciBtYXJfMTBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhblBhZ2luYXRlUHJldmlvdXMkIHwgYXN5bmMgZWxzZSBkaXNhYmxlZFByZXZpb3VzQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnaW5hdGVQcmV2aW91cygpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG4gc3F1YXJlXzI0cHggYmdfb3ZlcmxheSBicmRyIG9rX2J1dHRvbl9jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnByZXZpb3VzUGFnZVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBzbGlkZV9sZWZ0XCI+PGkgY2xhc3M9XCJmYXMgZmEtYXJyb3ctbGVmdFwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc2FibGVkUHJldmlvdXNCdXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZCBjbGFzcz1cImFjY2VzcyBidG4gc3F1YXJlXzI0cHggYmdfb3ZlcmxheSBicmRyIG9rX2J1dHRvbl9jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHQucHJldmlvdXNQYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gc2xpZGVfbGVmdFwiPjxpIGNsYXNzPVwiZmFzIGZhLWFycm93LWxlZnRcIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0IHNtIGJvbGRlciBjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOjY1cHg7XCI+XHJcbiAgICAgICAgICAgICAge3soX2FjdGl2ZVBhZ2UgfCBhc3luYykhICsgMX19IC8ge3t0b3RhbFBhZ2VzfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5QYWdpbmF0ZU5leHQkIHwgYXN5bmMgZWxzZSBkaXNhYmxlZE5leHRCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYWdpbmF0ZU5leHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuIHNxdWFyZV8yNHB4IGJnX292ZXJsYXkgYnJkciBva19idXR0b25fY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5uZXh0UGFnZVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBzbGlkZV9yaWdodFwiPjxpIGNsYXNzPVwiZmFzIGZhLWFycm93LXJpZ2h0XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWROZXh0QnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gZGlzYWJsZWQgY2xhc3M9XCJhY2Nlc3MgYnRuIHNxdWFyZV8yNHB4IGJnX292ZXJsYXkgYnJkciBva19idXR0b25fY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0Lm5leHRQYWdlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gc2xpZGVfcmlnaHRcIj48aSBjbGFzcz1cImZhcyBmYS1hcnJvdy1yaWdodFwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gc2VhcmNoIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBzaXplXzEgd2lzX3NlYXJjaCBtYXJfMTBcIj5cclxuICAgICAgICAgICAgPGlucHV0ICNpY29uU2VhcmNoSW5wdXRcclxuICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIl9zZWFyY2hUZXh0IHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIl9zZWFyY2hUZXh0Lm5leHQoaWNvblNlYXJjaElucHV0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiX3NlYXJjaElucHV0RW50ZXJLZXl1cC5uZXh0KCRhbnkobnVsbCkpXCJcclxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGlucHV0IG1kIGJnX292ZXJsYXkgYnJkciBjb250ZW50X2NvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zZWFyY2hJY29uc1wiIFtwbGFjZWhvbGRlcl09XCJ0ZXh0LnNlYXJjaEljb25zICsgJy4uLidcIiAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiKGNhblNlYXJjaCQgfCBhc3luYykgJiYgKF9zZWFyY2hDbGljayB8IGFzeW5jKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIiBhcmlhLWxhYmVsPVwiQ2xlYXIgc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG4gY2lyY2xlXzE4cHggb3ZlcmxheSB3aXNfY2xlYXJfYnRuXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGdyb3dcIj48aSBjbGFzcz1cImZhcyBmYS10aW1lcyBmYS1zbVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuU2VhcmNoJCB8IGFzeW5jIGVsc2UgZGlzYWJsZWRTZWFyY2hCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfc2VhcmNoQ2xpY2submV4dChpY29uU2VhcmNoSW5wdXQudmFsdWUpOyBfYWN0aXZlUGFnZS5uZXh0KDApXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG4gc3F1YXJlXzI4cHggYmdfb3ZlcmxheSBicmRyIG9rX2J1dHRvbl9jb2xvciBicmFkXzMgd2lzX3NlYXJjaF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zdWJtaXRTZWFyY2hcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGdyb3dcIj48aSBjbGFzcz1cImZhcyBmYS1zZWFyY2ggZmEtc21cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNhYmxlZFNlYXJjaEJ1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjY2VzcyBidG4gc3F1YXJlXzI4cHggYmdfb3ZlcmxheSBicmRyIG9rX2J1dHRvbl9jb2xvciBicmFkXzMgd2lzX3NlYXJjaF9idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LnN1Ym1pdFNlYXJjaFwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBncm93XCI+PGkgY2xhc3M9XCJmYXMgZmEtc2VhcmNoIGZhLXNtXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gaWNvbnMgLS0+XHJcbiAgICAgICAgPGRpdiAjaWNvblNjcm9sbENvbnRhaW5lciBjbGFzcz1cImNvbCBzaXplXzEgdG9wX2xlZnQgc2Nyb2xsX3kgcGFkXzVcIiBzdHlsZT1cInNjcm9sbC1iZWhhdmlvcjogc21vb3RoXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnaW5hdGVkSWNvbnMkIHwgYXN5bmMgYXMgaWNvbnMgZWxzZSBub1Jlc3VsdHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3cmFwIHRvcF9sZWZ0XCIgc3R5bGU9XCJhbGlnbi1pdGVtczpzdHJldGNoO1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGljb24gb2YgcGFnaW5hdGVkSWNvbnMkIHwgYXN5bmNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgc2l6ZV8xIG1pbl93NzUgbWFyXzVcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjY2VzcyB3aXNfaWNvbl9idG5cIiAoY2xpY2spPVwiaGFuZGxlSWNvblNlbGVjdChpY29uKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5zZWxlY3QgKyAnICcgKyBpY29uLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIigoX2ludGVybmFsVmFsdWUgfCBhc3luYyk/LnByZWZpeCA9PT0gaWNvbi5wcmVmaXgpICYmICgoX2ludGVybmFsVmFsdWUgfCBhc3luYyk/Lm5hbWUgPT09IGljb24ubmFtZSkgPyAnb2tfYnV0dG9uX2NvbG9yJyA6ICdjb250ZW50X2NvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndpc19pY29uX2J0bl9wcmV2aWV3IHNxdWFyZV81MHB4IGJyYWRfMyBiZ19vdmVybGF5IGJyZHIgbWFyX2JvdDVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tpY29uLnByZWZpeH19IHt7aWNvbi5uYW1lfX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgc20gY2VudGVyIGZhZGVkXCI+e3tpY29uLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub1Jlc3VsdHM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY29sdW1uIG1pbl9oMzAwIGNlbnRlcl9jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8cGFydGljbGUtZW5kcG9pbnQtc3RhdGVcclxuICAgICAgICAgICAgICAgIFtlbXB0eV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtlbXB0eUljb25dPVwiJ2ZhcyBmYS1zZWFyY2ggZmEtM3ggbWFyX2JvdDUnXCJcclxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIntlbXB0eVRleHQ6IHRleHQuY291bGRudEZpbmRBbnl0aGluZywgZW1wdHlTdWJ0ZXh0OiB0ZXh0Lm1vZGlmeVNlYXJjaENyaXRlcmlhfVwiPlxyXG4gICAgICAgICAgICAgIDwvcGFydGljbGUtZW5kcG9pbnQtc3RhdGU+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFjY2VzcyBidG5zZXQgY2xlYXIgbWFyXzEwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5jbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNpcmNsZV8yMHB4IHB0bF9icmRyX2NvbG9yIHB0bF9icmRyX3NpemUgcHRsX2lucHV0X2JnX2NvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX2ludGVybmFsVmFsdWUgfCBhc3luYyBhcyBzZWxlY3RlZEljb25cIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJjb2wgc3BhY2VfYmV0d2VlbiBiZ19vdmVybGF5IGJyZHIgYm9yZGVyX3RvcCBwYWRfeDUgd2lzX3NlbGVjdGlvbl9iYXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdl9jZW50ZXIgbWFyXzEwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IG1kIGZhZGVkIG1hcl9yaWdodDEwIG1vYmlsZV9oaWRlXCI+e3t0ZXh0LnNlbGVjdGlvbn19OjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidl9jZW50ZXJcIiAqbmdJZj1cInNob3dJY29uU2VsZWN0aW9uUHJldmlld1wiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tzZWxlY3RlZEljb24ucHJlZml4fX0ge3tzZWxlY3RlZEljb24ubmFtZX19IGZhLWZ3IG1hcl9yaWdodDVcIiBzdHlsZT1cImZvbnQtc2l6ZToxNnB4O1wiPjwvaT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCBtZCBib2xkXCI+e3tzZWxlY3RlZEljb24ucHJlZml4fX0ge3tzZWxlY3RlZEljb24ubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHZfY2VudGVyIG1hcl8xMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IHNwYWNlZCBtZCBob3ZfZ2xvdyBzYXZlX2J1dHRvbl9jb2xvciBwdGxfYnJkcl9yYWRpdXNcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5jb25maXJtXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSWNvblNlbGVjdENvbmZpcm0oKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2Pnt7dGV4dC5jb25maXJtfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJkciBib3JkZXJfbGVmdCBtYXJfbGVmdDEwIHBhZF9sZWZ0MTBcIj48aSBjbGFzcz1cImZhcyBmYS1jaGVja1wiPjwvaT48L2Rpdj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9wYXJ0aWNsZS1kaWFsb2c+XHJcbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Particle Icons - Brand
|
|
3
|
+
*/
|
|
4
|
+
export class ParticleIconsBrand {
|
|
5
|
+
/**
|
|
6
|
+
* ptl fa-entake
|
|
7
|
+
*/
|
|
8
|
+
static ptbEntake = {
|
|
9
|
+
prefix: 'ptb',
|
|
10
|
+
iconName: 'entake',
|
|
11
|
+
icon: [
|
|
12
|
+
1024, 1024,
|
|
13
|
+
[],
|
|
14
|
+
null, 'M635.904 139.264c-8.704 63.488-32.256 131.584-59.904 173.056-37.888 57.344-83.968 87.552-160.768 107.52-122.88 31.232-179.712 57.344-230.912 105.984-35.328 33.28-71.168 86.016-63.488 93.696 2.56 2.048 29.696 15.872 60.416 29.696l55.808 25.6 13.824-18.432c16.896-23.552 50.688-54.272 71.168-65.024 52.736-27.136 162.304-62.976 220.672-72.192l22.528-3.072-27.648 29.696c-14.848 16.896-35.84 43.52-46.592 59.392-17.408 27.648-48.128 95.232-44.544 99.328 1.024 1.024 18.944-8.704 39.936-20.992 66.56-39.936 115.712-53.248 169.984-46.592 44.032 5.632 45.056 7.68 17.92 45.568-13.312 18.432-31.744 49.152-41.984 68.096-17.408 34.816-32.768 86.528-26.624 92.16 1.536 1.536 14.848-6.144 30.208-17.408 30.72-23.552 49.152-31.744 71.168-31.744 16.384 0 18.944 5.632 6.656 15.872-10.24 8.704-32.768 52.736-32.768 64.512 0 6.656 11.776 15.36 37.888 28.16l37.888 18.944 12.8-13.824c53.76-57.856 88.576-185.344 76.8-285.184l-4.096-35.84-25.088 46.080c-24.064 43.008-67.072 94.72-79.872 94.72-3.584 0-5.12-1.536-4.096-4.096 39.424-76.288 52.736-118.784 58.368-185.344 3.584-39.424-4.608-111.104-13.312-119.808-3.584-3.584-5.12-2.048-5.12 2.56 0 15.872-40.96 92.16-61.952 114.688-11.776 12.8-23.040 23.040-25.6 23.040-2.048 0 2.56-15.872 10.752-35.328 29.696-69.12 37.888-109.568 38.4-182.272 0-72.192-9.216-113.664-36.864-168.96-15.872-31.232-47.616-79.36-52.224-79.36-2.048 0-6.144 20.992-9.728 47.104z'
|
|
15
|
+
]
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Full list of light icons
|
|
19
|
+
*/
|
|
20
|
+
static icons = [
|
|
21
|
+
ParticleIconsBrand.ptbEntake
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljbGUtaWNvbnMtYnJhbmRzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ljb25zL21vZGVscy9wYXJ0aWNsZS1pY29ucy1icmFuZHMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsR0FBRztRQUNqQixNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxJQUFJO1lBQ1YsRUFBRTtZQUNGLElBQUksRUFBRSw4MkNBQTgyQztTQUNyM0M7S0FDRixDQUFDO0lBRUY7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBSyxHQUFHO1FBQ2Isa0JBQWtCLENBQUMsU0FBUztLQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYXJ0aWNsZSBJY29ucyAtIEJyYW5kXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJ0aWNsZUljb25zQnJhbmQge1xuXG4gIC8qKlxuICAgKiBwdGwgZmEtZW50YWtlXG4gICAqL1xuICBzdGF0aWMgcHRiRW50YWtlID0ge1xuICAgIHByZWZpeDogJ3B0YicsXG4gICAgaWNvbk5hbWU6ICdlbnRha2UnLFxuICAgIGljb246IFtcbiAgICAgIDEwMjQsIDEwMjQsXG4gICAgICBbXSxcbiAgICAgIG51bGwsICdNNjM1LjkwNCAxMzkuMjY0Yy04LjcwNCA2My40ODgtMzIuMjU2IDEzMS41ODQtNTkuOTA0IDE3My4wNTYtMzcuODg4IDU3LjM0NC04My45NjggODcuNTUyLTE2MC43NjggMTA3LjUyLTEyMi44OCAzMS4yMzItMTc5LjcxMiA1Ny4zNDQtMjMwLjkxMiAxMDUuOTg0LTM1LjMyOCAzMy4yOC03MS4xNjggODYuMDE2LTYzLjQ4OCA5My42OTYgMi41NiAyLjA0OCAyOS42OTYgMTUuODcyIDYwLjQxNiAyOS42OTZsNTUuODA4IDI1LjYgMTMuODI0LTE4LjQzMmMxNi44OTYtMjMuNTUyIDUwLjY4OC01NC4yNzIgNzEuMTY4LTY1LjAyNCA1Mi43MzYtMjcuMTM2IDE2Mi4zMDQtNjIuOTc2IDIyMC42NzItNzIuMTkybDIyLjUyOC0zLjA3Mi0yNy42NDggMjkuNjk2Yy0xNC44NDggMTYuODk2LTM1Ljg0IDQzLjUyLTQ2LjU5MiA1OS4zOTItMTcuNDA4IDI3LjY0OC00OC4xMjggOTUuMjMyLTQ0LjU0NCA5OS4zMjggMS4wMjQgMS4wMjQgMTguOTQ0LTguNzA0IDM5LjkzNi0yMC45OTIgNjYuNTYtMzkuOTM2IDExNS43MTItNTMuMjQ4IDE2OS45ODQtNDYuNTkyIDQ0LjAzMiA1LjYzMiA0NS4wNTYgNy42OCAxNy45MiA0NS41NjgtMTMuMzEyIDE4LjQzMi0zMS43NDQgNDkuMTUyLTQxLjk4NCA2OC4wOTYtMTcuNDA4IDM0LjgxNi0zMi43NjggODYuNTI4LTI2LjYyNCA5Mi4xNiAxLjUzNiAxLjUzNiAxNC44NDgtNi4xNDQgMzAuMjA4LTE3LjQwOCAzMC43Mi0yMy41NTIgNDkuMTUyLTMxLjc0NCA3MS4xNjgtMzEuNzQ0IDE2LjM4NCAwIDE4Ljk0NCA1LjYzMiA2LjY1NiAxNS44NzItMTAuMjQgOC43MDQtMzIuNzY4IDUyLjczNi0zMi43NjggNjQuNTEyIDAgNi42NTYgMTEuNzc2IDE1LjM2IDM3Ljg4OCAyOC4xNmwzNy44ODggMTguOTQ0IDEyLjgtMTMuODI0YzUzLjc2LTU3Ljg1NiA4OC41NzYtMTg1LjM0NCA3Ni44LTI4NS4xODRsLTQuMDk2LTM1Ljg0LTI1LjA4OCA0Ni4wODBjLTI0LjA2NCA0My4wMDgtNjcuMDcyIDk0LjcyLTc5Ljg3MiA5NC43Mi0zLjU4NCAwLTUuMTItMS41MzYtNC4wOTYtNC4wOTYgMzkuNDI0LTc2LjI4OCA1Mi43MzYtMTE4Ljc4NCA1OC4zNjgtMTg1LjM0NCAzLjU4NC0zOS40MjQtNC42MDgtMTExLjEwNC0xMy4zMTItMTE5LjgwOC0zLjU4NC0zLjU4NC01LjEyLTIuMDQ4LTUuMTIgMi41NiAwIDE1Ljg3Mi00MC45NiA5Mi4xNi02MS45NTIgMTE0LjY4OC0xMS43NzYgMTIuOC0yMy4wNDAgMjMuMDQwLTI1LjYgMjMuMDQwLTIuMDQ4IDAgMi41Ni0xNS44NzIgMTAuNzUyLTM1LjMyOCAyOS42OTYtNjkuMTIgMzcuODg4LTEwOS41NjggMzguNC0xODIuMjcyIDAtNzIuMTkyLTkuMjE2LTExMy42NjQtMzYuODY0LTE2OC45Ni0xNS44NzItMzEuMjMyLTQ3LjYxNi03OS4zNi01Mi4yMjQtNzkuMzYtMi4wNDggMC02LjE0NCAyMC45OTItOS43MjggNDcuMTA0eidcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIEZ1bGwgbGlzdCBvZiBsaWdodCBpY29uc1xuICAgKi9cbiAgc3RhdGljIGljb25zID0gW1xuICAgIFBhcnRpY2xlSWNvbnNCcmFuZC5wdGJFbnRha2VcbiAgXTtcblxufVxuIl19
|