@softpak/components 0.3.7 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/esm2022/spx-alert/spx-alert.component.mjs +53 -43
  2. package/esm2022/spx-app-expiry/spx-app-expiry.component.mjs +57 -40
  3. package/esm2022/spx-app-update/spx-app-update.component.mjs +61 -55
  4. package/esm2022/spx-card/spx-card-item.component.mjs +37 -31
  5. package/esm2022/spx-card/spx-card-line.component.mjs +63 -40
  6. package/esm2022/spx-card/spx-card.component.mjs +52 -49
  7. package/esm2022/spx-change-details/spx-change-details.component.mjs +3 -5
  8. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +3 -6
  9. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +4 -7
  10. package/esm2022/spx-form-section/spx-form-section.component.mjs +19 -14
  11. package/esm2022/spx-form-view/spx-autocomplete-search.component.mjs +3 -5
  12. package/esm2022/spx-form-view/spx-form-view.component.mjs +141 -131
  13. package/esm2022/spx-inputs/spx-dropdown.component.mjs +35 -36
  14. package/esm2022/spx-inputs/spx-input-box.component.mjs +143 -125
  15. package/esm2022/spx-inputs/spx-input-date.component.mjs +84 -81
  16. package/esm2022/spx-inputs/spx-input-float.component.mjs +2 -5
  17. package/esm2022/spx-inputs/spx-input-radio.component.mjs +25 -25
  18. package/esm2022/spx-inputs/spx-input-text.component.mjs +65 -61
  19. package/esm2022/spx-inputs/spx-input-time-modal.component.mjs +73 -60
  20. package/esm2022/spx-inputs/spx-input-time.component.mjs +2 -5
  21. package/esm2022/spx-inputs/spx-input.component.mjs +223 -213
  22. package/esm2022/spx-navigation/spx-home-tile.component.mjs +40 -37
  23. package/esm2022/spx-navigation/spx-navigation.component.mjs +6 -10
  24. package/esm2022/spx-number-check/spx-number-check.component.mjs +47 -41
  25. package/esm2022/spx-patch/spx-patch.component.mjs +27 -21
  26. package/esm2022/spx-spinner/spx-spinner.component.mjs +143 -142
  27. package/esm2022/spx-stock-info/spx-stock-info.component.mjs +6 -9
  28. package/esm2022/spx-toaster/src/spx-toaster.component.mjs +91 -96
  29. package/esm2022/spx-update/src/spx-update-info.component.mjs +3 -5
  30. package/esm2022/spx-validation/spx-validate-control.component.mjs +4 -7
  31. package/fesm2022/softpak-components-spx-alert.mjs +52 -42
  32. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -1
  33. package/fesm2022/softpak-components-spx-app-expiry.mjs +56 -39
  34. package/fesm2022/softpak-components-spx-app-expiry.mjs.map +1 -1
  35. package/fesm2022/softpak-components-spx-app-update.mjs +60 -54
  36. package/fesm2022/softpak-components-spx-app-update.mjs.map +1 -1
  37. package/fesm2022/softpak-components-spx-card.mjs +148 -115
  38. package/fesm2022/softpak-components-spx-card.mjs.map +1 -1
  39. package/fesm2022/softpak-components-spx-change-details.mjs +2 -4
  40. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  41. package/fesm2022/softpak-components-spx-channel-selection.mjs +2 -5
  42. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  43. package/fesm2022/softpak-components-spx-check-digit.mjs +3 -6
  44. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  45. package/fesm2022/softpak-components-spx-form-section.mjs +18 -13
  46. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  47. package/fesm2022/softpak-components-spx-form-view.mjs +142 -133
  48. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  49. package/fesm2022/softpak-components-spx-inputs.mjs +643 -594
  50. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  51. package/fesm2022/softpak-components-spx-navigation.mjs +44 -44
  52. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  53. package/fesm2022/softpak-components-spx-number-check.mjs +46 -40
  54. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -1
  55. package/fesm2022/softpak-components-spx-patch.mjs +26 -20
  56. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -1
  57. package/fesm2022/softpak-components-spx-spinner.mjs +142 -141
  58. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -1
  59. package/fesm2022/softpak-components-spx-stock-info.mjs +5 -8
  60. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  61. package/fesm2022/softpak-components-spx-toaster.mjs +90 -95
  62. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -1
  63. package/fesm2022/softpak-components-spx-update.mjs +2 -4
  64. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  65. package/fesm2022/softpak-components-spx-validation.mjs +3 -6
  66. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -1
  67. package/package.json +12 -12
@@ -1,7 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
3
3
  import { spxValidatorRequired, SpxValidateControlComponent } from '@softpak/components/spx-validation';
4
- import { CommonModule } from '@angular/common';
5
4
  import { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';
6
5
  import { SpxFormButtonTypeEnum, SpxFormViewComponent } from '@softpak/components/spx-form-view';
7
6
  import { SpxButtonComponent } from '@softpak/components/spx-button';
@@ -14,9 +13,8 @@ import { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';
14
13
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
15
14
  import * as i0 from "@angular/core";
16
15
  import * as i1 from "@angular/forms";
17
- import * as i2 from "@angular/common";
18
- import * as i3 from "@fortawesome/angular-fontawesome";
19
- import * as i4 from "@ngx-translate/core";
16
+ import * as i2 from "@fortawesome/angular-fontawesome";
17
+ import * as i3 from "@ngx-translate/core";
20
18
  export const ctrlCategory = 'ctrlCategory';
21
19
  export const ctrlContainerStatus = 'ctrlContainerStatus';
22
20
  export const ctrlContainerStatusGroup = 'ctrlContainerStatusGroup';
@@ -229,12 +227,11 @@ export class SpxStockInfoComponent {
229
227
  });
230
228
  }
231
229
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxStockInfoComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
232
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxStockInfoComponent, isStandalone: true, selector: "spx-stock-info", inputs: { statusGroupsInPatch: "statusGroupsInPatch", containers: "containers", currentPage: "currentPage", faArrowLeft: "faArrowLeft", faArrowRight: "faArrowRight", faContainerStorage: "faContainerStorage", formGroup: "formGroup", loaded: "loaded", pageSize: "pageSize", suggestions: "suggestions", textCategory: "textCategory", textContainerInfo: "textContainerInfo", textContainerStatus: "textContainerStatus", textContainerStatusGroup: "textContainerStatusGroup", textContainerType: "textContainerType", textCustomer: "textCustomer", textDepot: "textDepot", textLocation: "textLocation", textNext: "textNext", textPage: "textPage", textPrevious: "textPrevious", textSearch: "textSearch", textNoResults: "textNoResults", textYouCanChangeYourFilters: "textYouCanChangeYourFilters" }, outputs: { spxBlurCategory: "spxBlurCategory", spxBlurContainerStatus: "spxBlurContainerStatus", spxBlurContainerStatusGroup: "spxBlurContainerStatusGroup", spxBlurContainerType: "spxBlurContainerType", spxBlurCustomer: "spxBlurCustomer", spxClickContainer: "spxClickContainer", spxPageChange: "spxPageChange", spxSearchCategory: "spxSearchCategory", spxSearchContainerStatus: "spxSearchContainerStatus", spxSearchContainerStatusGroup: "spxSearchContainerStatusGroup", spxSearchContainerType: "spxSearchContainerType", spxSearchCustomer: "spxSearchCustomer", spxSubmit: "spxSubmit" }, ngImport: i0, template: "<form *ngIf=\"!loaded\" [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>\n\n<div class=\"flex flex-col gap-3\" *ngIf=\"loaded\">\n <spx-pagination\n *ngIf=\"containers.length > 0\"\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n\n <spx-alert *ngIf=\"containers.length === 0\" [spxSeverity]=\"severityInfo\" [spxTitle]=\"textNoResults | translate | capitalize\">\n {{ textYouCanChangeYourFilters | translate | capitalize }}\n </spx-alert>\n\n <ng-container *ngFor=\"let container of containers; let i = index;\">\n <spx-card *ngIf=\"i < pageSize\" [hasContent]=\"false\" (clicked)=\"goToContainer(container)\">\n <div card-header class=\"card-header rounded-t-lg p-3 bg-sky-200\">\n <div class=\"flex flex-row space-x-3 items-center w-full\">\n <div\n class=\"card-header-icon-left flex basis-10 py-1.5 shrink-0 grow-0 place-items-center rounded bg-sky-400\">\n <fa-icon class=\"mx-auto\" [icon]=\"faContainerStorage\"></fa-icon>\n </div>\n \n <div class=\"card-header-text-middle grow\">\n <div class=\"block font-medium text-large\">{{ container.formatted.containerNumber }}</div>\n </div>\n \n <div\n class=\"card-header-icons-right text-sm text-gray-900 leading-5 flex flex-wrap items-stretch text-center font-bold\">\n <div *ngIf=\"container.containerStatus\" class=\"min-w-[36px] px-2 py-1 bg-white text-black\"> {{\n container.formatted.containerStatus }}</div>\n </div>\n </div>\n </div>\n <div card-lines class=\"grid grid-cols-2 gap-2\">\n <spx-card-line [text]=\"textContainerType | translate | capitalize\"\n [value]=\"container.formatted.containerType\"></spx-card-line>\n <spx-card-line [text]=\"textCategory | translate | capitalize\"\n [value]=\"container.formatted.category\"></spx-card-line>\n <spx-card-line [text]=\"textLocation | translate | capitalize\"\n [value]=\"container.formatted.location\"></spx-card-line>\n </div>\n </spx-card>\n </ng-container>\n\n <spx-pagination\n *ngIf=\"containers.length > 0\"\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxAlertComponent, selector: "spx-alert", inputs: ["spxAutoclose", "spxCloseable", "spxHideTitle", "spxTitle", "spxMarginTop", "spxSeverity", "tick"], outputs: ["spxClose"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxCardComponent, selector: "spx-card", inputs: ["clickable", "hasContent", "onDetailPage", "text", "unit", "tableView"], outputs: ["clicked"] }, { kind: "component", type: SpxCardLineComponent, selector: "spx-card-line", inputs: ["icon", "showPositiveOrNegative", "text", "value", "secondValue", "showProgress", "unit", "newOrderScreen"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxForm", "spxSuggestions"], outputs: ["spxBlur", "spxClick", "spxSearch"] }, { kind: "component", type: SpxPaginationComponent, selector: "spx-pagination", inputs: ["faArrowLeft", "faArrowRight", "spxPage", "spxMaxPages", "textNext", "textPage", "textPrevious"], outputs: ["spxPageChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
230
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxStockInfoComponent, isStandalone: true, selector: "spx-stock-info", inputs: { statusGroupsInPatch: "statusGroupsInPatch", containers: "containers", currentPage: "currentPage", faArrowLeft: "faArrowLeft", faArrowRight: "faArrowRight", faContainerStorage: "faContainerStorage", formGroup: "formGroup", loaded: "loaded", pageSize: "pageSize", suggestions: "suggestions", textCategory: "textCategory", textContainerInfo: "textContainerInfo", textContainerStatus: "textContainerStatus", textContainerStatusGroup: "textContainerStatusGroup", textContainerType: "textContainerType", textCustomer: "textCustomer", textDepot: "textDepot", textLocation: "textLocation", textNext: "textNext", textPage: "textPage", textPrevious: "textPrevious", textSearch: "textSearch", textNoResults: "textNoResults", textYouCanChangeYourFilters: "textYouCanChangeYourFilters" }, outputs: { spxBlurCategory: "spxBlurCategory", spxBlurContainerStatus: "spxBlurContainerStatus", spxBlurContainerStatusGroup: "spxBlurContainerStatusGroup", spxBlurContainerType: "spxBlurContainerType", spxBlurCustomer: "spxBlurCustomer", spxClickContainer: "spxClickContainer", spxPageChange: "spxPageChange", spxSearchCategory: "spxSearchCategory", spxSearchContainerStatus: "spxSearchContainerStatus", spxSearchContainerStatusGroup: "spxSearchContainerStatusGroup", spxSearchContainerType: "spxSearchContainerType", spxSearchCustomer: "spxSearchCustomer", spxSubmit: "spxSubmit" }, ngImport: i0, template: "@if (!loaded) {\n <form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n </form>\n}\n\n@if (loaded) {\n <div class=\"flex flex-col gap-3\">\n @if (containers.length > 0) {\n <spx-pagination\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n }\n @if (containers.length === 0) {\n <spx-alert [spxSeverity]=\"severityInfo\" [spxTitle]=\"textNoResults | translate | capitalize\">\n {{ textYouCanChangeYourFilters | translate | capitalize }}\n </spx-alert>\n }\n @for (container of containers; track container; let i = $index) {\n @if (i < pageSize) {\n <spx-card [hasContent]=\"false\" (clicked)=\"goToContainer(container)\">\n <div card-header class=\"card-header rounded-t-lg p-3 bg-sky-200\">\n <div class=\"flex flex-row space-x-3 items-center w-full\">\n <div\n class=\"card-header-icon-left flex basis-10 py-1.5 shrink-0 grow-0 place-items-center rounded bg-sky-400\">\n <fa-icon class=\"mx-auto\" [icon]=\"faContainerStorage\"></fa-icon>\n </div>\n <div class=\"card-header-text-middle grow\">\n <div class=\"block font-medium text-large\">{{ container.formatted.containerNumber }}</div>\n </div>\n <div\n class=\"card-header-icons-right text-sm text-gray-900 leading-5 flex flex-wrap items-stretch text-center font-bold\">\n @if (container.containerStatus) {\n <div class=\"min-w-[36px] px-2 py-1 bg-white text-black\"> {{\n container.formatted.containerStatus }}</div>\n }\n </div>\n </div>\n </div>\n <div card-lines class=\"grid grid-cols-2 gap-2\">\n <spx-card-line [text]=\"textContainerType | translate | capitalize\"\n [value]=\"container.formatted.containerType\"></spx-card-line>\n <spx-card-line [text]=\"textCategory | translate | capitalize\"\n [value]=\"container.formatted.category\"></spx-card-line>\n <spx-card-line [text]=\"textLocation | translate | capitalize\"\n [value]=\"container.formatted.location\"></spx-card-line>\n </div>\n </spx-card>\n }\n }\n @if (containers.length > 0) {\n <spx-pagination\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n }\n </div>\n}", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxAlertComponent, selector: "spx-alert", inputs: ["spxAutoclose", "spxCloseable", "spxHideTitle", "spxTitle", "spxMarginTop", "spxSeverity", "tick"], outputs: ["spxClose"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxCardComponent, selector: "spx-card", inputs: ["clickable", "hasContent", "onDetailPage", "text", "unit", "tableView"], outputs: ["clicked"] }, { kind: "component", type: SpxCardLineComponent, selector: "spx-card-line", inputs: ["icon", "showPositiveOrNegative", "text", "value", "secondValue", "showProgress", "unit", "newOrderScreen"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxForm", "spxSuggestions"], outputs: ["spxBlur", "spxClick", "spxSearch"] }, { kind: "component", type: SpxPaginationComponent, selector: "spx-pagination", inputs: ["faArrowLeft", "faArrowRight", "spxPage", "spxMaxPages", "textNext", "textPage", "textPrevious"], outputs: ["spxPageChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
233
231
  }
234
232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxStockInfoComponent, decorators: [{
235
233
  type: Component,
236
234
  args: [{ selector: 'spx-stock-info', standalone: true, imports: [
237
- CommonModule,
238
235
  FormsModule,
239
236
  FontAwesomeModule,
240
237
  ReactiveFormsModule,
@@ -247,8 +244,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
247
244
  SpxInputComponent,
248
245
  SpxPaginationComponent,
249
246
  SpxValidateControlComponent,
250
- TranslateModule,
251
- ], template: "<form *ngIf=\"!loaded\" [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>\n\n<div class=\"flex flex-col gap-3\" *ngIf=\"loaded\">\n <spx-pagination\n *ngIf=\"containers.length > 0\"\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n\n <spx-alert *ngIf=\"containers.length === 0\" [spxSeverity]=\"severityInfo\" [spxTitle]=\"textNoResults | translate | capitalize\">\n {{ textYouCanChangeYourFilters | translate | capitalize }}\n </spx-alert>\n\n <ng-container *ngFor=\"let container of containers; let i = index;\">\n <spx-card *ngIf=\"i < pageSize\" [hasContent]=\"false\" (clicked)=\"goToContainer(container)\">\n <div card-header class=\"card-header rounded-t-lg p-3 bg-sky-200\">\n <div class=\"flex flex-row space-x-3 items-center w-full\">\n <div\n class=\"card-header-icon-left flex basis-10 py-1.5 shrink-0 grow-0 place-items-center rounded bg-sky-400\">\n <fa-icon class=\"mx-auto\" [icon]=\"faContainerStorage\"></fa-icon>\n </div>\n \n <div class=\"card-header-text-middle grow\">\n <div class=\"block font-medium text-large\">{{ container.formatted.containerNumber }}</div>\n </div>\n \n <div\n class=\"card-header-icons-right text-sm text-gray-900 leading-5 flex flex-wrap items-stretch text-center font-bold\">\n <div *ngIf=\"container.containerStatus\" class=\"min-w-[36px] px-2 py-1 bg-white text-black\"> {{\n container.formatted.containerStatus }}</div>\n </div>\n </div>\n </div>\n <div card-lines class=\"grid grid-cols-2 gap-2\">\n <spx-card-line [text]=\"textContainerType | translate | capitalize\"\n [value]=\"container.formatted.containerType\"></spx-card-line>\n <spx-card-line [text]=\"textCategory | translate | capitalize\"\n [value]=\"container.formatted.category\"></spx-card-line>\n <spx-card-line [text]=\"textLocation | translate | capitalize\"\n [value]=\"container.formatted.location\"></spx-card-line>\n </div>\n </spx-card>\n </ng-container>\n\n <spx-pagination\n *ngIf=\"containers.length > 0\"\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n</div>" }]
247
+ TranslateModule
248
+ ], template: "@if (!loaded) {\n <form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n </form>\n}\n\n@if (loaded) {\n <div class=\"flex flex-col gap-3\">\n @if (containers.length > 0) {\n <spx-pagination\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n }\n @if (containers.length === 0) {\n <spx-alert [spxSeverity]=\"severityInfo\" [spxTitle]=\"textNoResults | translate | capitalize\">\n {{ textYouCanChangeYourFilters | translate | capitalize }}\n </spx-alert>\n }\n @for (container of containers; track container; let i = $index) {\n @if (i < pageSize) {\n <spx-card [hasContent]=\"false\" (clicked)=\"goToContainer(container)\">\n <div card-header class=\"card-header rounded-t-lg p-3 bg-sky-200\">\n <div class=\"flex flex-row space-x-3 items-center w-full\">\n <div\n class=\"card-header-icon-left flex basis-10 py-1.5 shrink-0 grow-0 place-items-center rounded bg-sky-400\">\n <fa-icon class=\"mx-auto\" [icon]=\"faContainerStorage\"></fa-icon>\n </div>\n <div class=\"card-header-text-middle grow\">\n <div class=\"block font-medium text-large\">{{ container.formatted.containerNumber }}</div>\n </div>\n <div\n class=\"card-header-icons-right text-sm text-gray-900 leading-5 flex flex-wrap items-stretch text-center font-bold\">\n @if (container.containerStatus) {\n <div class=\"min-w-[36px] px-2 py-1 bg-white text-black\"> {{\n container.formatted.containerStatus }}</div>\n }\n </div>\n </div>\n </div>\n <div card-lines class=\"grid grid-cols-2 gap-2\">\n <spx-card-line [text]=\"textContainerType | translate | capitalize\"\n [value]=\"container.formatted.containerType\"></spx-card-line>\n <spx-card-line [text]=\"textCategory | translate | capitalize\"\n [value]=\"container.formatted.category\"></spx-card-line>\n <spx-card-line [text]=\"textLocation | translate | capitalize\"\n [value]=\"container.formatted.location\"></spx-card-line>\n </div>\n </spx-card>\n }\n }\n @if (containers.length > 0) {\n <spx-pagination\n [spxPage]=\"currentPage\"\n [spxMaxPages]=\"(containers.length < (pageSize + 1)) ? (currentPage + 1) : currentPage\"\n [faArrowLeft]=\"faArrowLeft\"\n [faArrowRight]=\"faArrowRight\"\n [textPage]=\"textPage\"\n [textPrevious]=\"textPrevious\"\n [textNext]=\"textNext\"\n (spxPageChange)=\"onPageChange($event)\">\n </spx-pagination>\n }\n </div>\n}" }]
252
249
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { statusGroupsInPatch: [{
253
250
  type: Input
254
251
  }], containers: [{
@@ -324,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
324
321
  }], spxSubmit: [{
325
322
  type: Output
326
323
  }] } });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXN0b2NrLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1zdG9jay1pbmZvL3NweC1zdG9jay1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvY2staW5mby9zcHgtc3RvY2staW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBdUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUJBQXFCLEVBQTJCLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxx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SztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyw2QkFBNkI7c0JBQXRDLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkLCBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTcHhJbnB1dENvbXBvbmVudCwgU3B4SW5wdXRUeXBlRW51bSwgU3B4VmFsdWVQYWlyIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcbmltcG9ydCB7IFNweEZvcm1CdXR0b25UeXBlRW51bSwgU3B4Rm9ybUZpZWxkSSwgU3B4Rm9ybUksIFNweEZvcm1WaWV3Q29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtZm9ybS12aWV3JztcbmltcG9ydCB7IFNweEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWJ1dHRvbic7XG5pbXBvcnQgeyBTcHhTZXZlcml0eUVudW0sIHZhbHVlUGFpclRvVmFsdWUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1oZWxwZXJzJztcbmltcG9ydCB7IFNweFN0b2NrSW5mb1ZhbHVlSSB9IGZyb20gJy4vc3B4LXN0b2NrLWluZm8tdmFsdWUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNweFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1wYWdpbmF0aW9uJztcbmltcG9ydCB7IEljb25Qcm9wIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJztcbmltcG9ydCB7IFNweEFsZXJ0Q29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYWxlcnQnO1xuaW1wb3J0IHsgU3B4Q2FyZENvbXBvbmVudCwgU3B4Q2FyZExpbmVDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXJkJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuXG5leHBvcnQgY29uc3QgY3RybENhdGVnb3J5ID0gJ2N0cmxDYXRlZ29yeSc7XG5leHBvcnQgY29uc3QgY3RybENvbnRhaW5lclN0YXR1cyA9ICdjdHJsQ29udGFpbmVyU3RhdHVzJztcbmV4cG9ydCBjb25zdCBjdHJsQ29udGFpbmVyU3RhdHVzR3JvdXAgPSAnY3RybENvbnRhaW5lclN0YXR1c0dyb3VwJztcbmV4cG9ydCBjb25zdCBjdHJsQ29udGFpbmVyVHlwZSA9ICdjdHJsQ29udGFpbmVyVHlwZSc7XG5leHBvcnQgY29uc3QgY3RybEN1c3RvbWVyID0gJ2N0cmxDdXN0b21lcic7XG5leHBvcnQgY29uc3QgY3RybERlcG90ID0gJ2N0cmxEZXBvdCc7XG5leHBvcnQgY29uc3QgY3RybExvY2F0aW9uID0gJ2N0cmxMb2NhdGlvbic7XG5leHBvcnQgY29uc3Qgc2VjdGlvbkNvbnRhaW5lckluZm8gPSAnc2VjdGlvbkNvbnRhaW5lckluZm8nO1xuZXhwb3J0IGNvbnN0IHNlY3Rpb25DdXN0b21lciA9ICdzZWN0aW9uQ3VzdG9tZXInO1xuZXhwb3J0IGNvbnN0IHNlY3Rpb25Mb2NhdGlvbiA9ICdzZWN0aW9uTG9jYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHgtc3RvY2staW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcHgtc3RvY2staW5mby5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9udEF3ZXNvbWVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTcHhBbGVydENvbXBvbmVudCxcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gICAgU3B4Q2FyZENvbXBvbmVudCxcbiAgICBTcHhDYXJkTGluZUNvbXBvbmVudCxcbiAgICBTcHhGb3JtVmlld0NvbXBvbmVudCxcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcbiAgICBTcHhQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFNweFZhbGlkYXRlQ29udHJvbENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3B4U3RvY2tJbmZvQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RhdHVzR3JvdXBzSW5QYXRjaCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbnRhaW5lcnMhOiBhbnlbXTtcbiAgQElucHV0KCkgY3VycmVudFBhZ2UhOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZhQXJyb3dMZWZ0ITogSWNvblByb3A7XG4gIEBJbnB1dCgpIGZhQXJyb3dSaWdodCE6IEljb25Qcm9wO1xuICBASW5wdXQoKSBmYUNvbnRhaW5lclN0b3JhZ2UhOiBJY29uUHJvcDtcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBsb2FkZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBwYWdlU2l6ZSE6IG51bWJlcjtcbiAgQElucHV0KCkgc3VnZ2VzdGlvbnM6IGFueSA9IHt9O1xuICBASW5wdXQoKSB0ZXh0Q2F0ZWdvcnkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDb250YWluZXJJbmZvITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyU3RhdHVzITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyU3RhdHVzR3JvdXAhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDb250YWluZXJUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q3VzdG9tZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHREZXBvdCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dExvY2F0aW9uITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0TmV4dCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFBhZ2UhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRQcmV2aW91cyE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFNlYXJjaCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dE5vUmVzdWx0cyE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFlvdUNhbkNoYW5nZVlvdXJGaWx0ZXJzITogc3RyaW5nO1xuICBAT3V0cHV0KCkgc3B4Qmx1ckNhdGVnb3J5OiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDb250YWluZXJTdGF0dXM6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4Qmx1ckNvbnRhaW5lclN0YXR1c0dyb3VwOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDb250YWluZXJUeXBlOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhDbGlja0NvbnRhaW5lcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNweFBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDYXRlZ29yeTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDb250YWluZXJTdGF0dXM6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoQ29udGFpbmVyU3RhdHVzR3JvdXA6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoQ29udGFpbmVyVHlwZTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTdWJtaXQ6IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+KCk7XG4gIHNldmVyaXR5SW5mbyA9IFNweFNldmVyaXR5RW51bS5pbmZvO1xuXG5cbiAgZm9ybTogU3B4Rm9ybUkgPSB7XG4gICAgYnV0dG9uczogW1xuICAgICAge1xuICAgICAgICBzZXZlcml0eTogU3B4U2V2ZXJpdHlFbnVtLnN1Y2Nlc3MsXG4gICAgICAgIHR5cGU6IFNweEZvcm1CdXR0b25UeXBlRW51bS5zdWJtaXQsXG4gICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRTZWFyY2gsXG4gICAgICB9XG4gICAgXSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Mb2NhdGlvbixcbiAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgdGl0bGU6ICgpID0+IHRoaXMudGV4dExvY2F0aW9uLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxEZXBvdCxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHREZXBvdCxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtzcHhWYWxpZGF0b3JSZXF1aXJlZCgpXSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxMb2NhdGlvbixcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRMb2NhdGlvbixcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBzZWN0aW9uQ3VzdG9tZXIsXG4gICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgIHRpdGxlOiAoKSA9PiB0aGlzLnRleHRDdXN0b21lcixcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ3VzdG9tZXIsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q3VzdG9tZXIsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Db250YWluZXJJbmZvLFxuICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICB0aXRsZTogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVySW5mbyxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ2F0ZWdvcnksXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q2F0ZWdvcnksXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclN0YXR1cyxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRDb250YWluZXJTdGF0dXMsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclN0YXR1c0dyb3VwLFxuICAgICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudGV4dENvbnRhaW5lclN0YXR1c0dyb3VwLFxuICAgICAgICAgICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bS5hdXRvY29tcGxldGUsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICgpID0+IG51bGwsXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiAoKSA9PiBbXSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdGhpcy5zdGF0dXNHcm91cHNJblBhdGNoLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclR5cGUsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVyVHlwZSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiBudWxsLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogKCkgPT4gW10sXG4gICAgICAgICAgICByZWFkb25seTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBjYXBpdGFsaXplOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgXVxuICB9O1xuXG4gIGdldCBjdHJsQ2F0ZWdvcnkoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDYXRlZ29yeSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb250YWluZXJTdGF0dXMoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDb250YWluZXJTdGF0dXMpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ29udGFpbmVyU3RhdHVzR3JvdXAoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDb250YWluZXJTdGF0dXNHcm91cCkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb250YWluZXJUeXBlKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsQ29udGFpbmVyVHlwZSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDdXN0b21lcigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybEN1c3RvbWVyKSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybERlcG90KCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsRGVwb3QpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsTG9jYXRpb24oKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxMb2NhdGlvbikgYXMgRm9ybUNvbnRyb2w7IH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gU3B4Rm9ybVZpZXdDb21wb25lbnQuY3JlYXRlRm9ybSh0aGlzLmZvcm1CdWlsZGVyLCB0aGlzLmZvcm0uc2VjdGlvbnMpO1xuICB9XG5cbiAgZ2V0UmF3VmFsaWRhdG9ycyhmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gKGZvcm1Db250cm9sIGFzIGFueSkuX3Jhd1ZhbGlkYXRvcnM7XG4gIH1cblxuICBvbkJsdXIoZGF0YTogeyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9KSB7XG4gICAgaWYgKHZhbHVlUGFpclRvVmFsdWUoZGF0YS52YWx1ZVBhaXIpKSB7XG4gICAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDYXRlZ29yeSkge1xuICAgICAgICB0aGlzLnNweEJsdXJDYXRlZ29yeS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclN0YXR1cykge1xuICAgICAgICB0aGlzLnNweEJsdXJDb250YWluZXJTdGF0dXMuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDb250YWluZXJTdGF0dXNHcm91cCkge1xuICAgICAgICB0aGlzLnNweEJsdXJDb250YWluZXJTdGF0dXNHcm91cC5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclR5cGUpIHtcbiAgICAgICAgdGhpcy5zcHhCbHVyQ29udGFpbmVyVHlwZS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybEN1c3RvbWVyKSB7XG4gICAgICAgIHRoaXMuc3B4Qmx1ckN1c3RvbWVyLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKGRhdGE6IHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfSkge1xuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENhdGVnb3J5KSB7XG4gICAgICB0aGlzLnNweFNlYXJjaENhdGVnb3J5LmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDb250YWluZXJUeXBlKSB7XG4gICAgICB0aGlzLnNweFNlYXJjaENvbnRhaW5lclR5cGUuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclN0YXR1cykge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDb250YWluZXJTdGF0dXMuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclN0YXR1c0dyb3VwKSB7XG4gICAgICB0aGlzLnNweFNlYXJjaENvbnRhaW5lclN0YXR1c0dyb3VwLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDdXN0b21lcikge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDdXN0b21lci5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zcHhQYWdlQ2hhbmdlLmVtaXQocGFnZSk7XG4gIH1cblxuICBnb1RvQ29udGFpbmVyKGNvbnRhaW5lcjogYW55KSB7XG4gICAgdGhpcy5zcHhDbGlja0NvbnRhaW5lci5lbWl0KGNvbnRhaW5lcik7XG4gIH1cblxuICBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNweFN1Ym1pdC5lbWl0KHtcbiAgICAgIGN0cmxDYXRlZ29yeTogdGhpcy5jdHJsQ2F0ZWdvcnkudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyU3RhdHVzOiB0aGlzLmN0cmxDb250YWluZXJTdGF0dXMudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyU3RhdHVzR3JvdXA6IHRoaXMuY3RybENvbnRhaW5lclN0YXR1c0dyb3VwLnZhbHVlLFxuICAgICAgY3RybENvbnRhaW5lclR5cGU6IHRoaXMuY3RybENvbnRhaW5lclR5cGUudmFsdWUsXG4gICAgICBjdHJsQ3VzdG9tZXI6IHRoaXMuY3RybEN1c3RvbWVyLnZhbHVlLFxuICAgICAgY3RybERlcG90OiB0aGlzLmN0cmxEZXBvdC52YWx1ZSxcbiAgICAgIGN0cmxMb2NhdGlvbjogdGhpcy5jdHJsTG9jYXRpb24udmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtICpuZ0lmPVwiIWxvYWRlZFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJtYXgtdy1sZyBteC1hdXRvIGZsZXggZmxleC1jb2wgZ2FwLTNcIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxuICA8c3B4LWZvcm0tdmlld1xuICAgIFtzcHhGb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbc3B4Rm9ybV09XCJmb3JtXCJcbiAgICBbc3B4U3VnZ2VzdGlvbnNdPVwic3VnZ2VzdGlvbnNcIlxuICAgIChzcHhCbHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAoc3B4U2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIj5cbiAgPC9zcHgtZm9ybS12aWV3PlxuPC9mb3JtPlxuXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiICpuZ0lmPVwibG9hZGVkXCI+XG4gIDxzcHgtcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCJjb250YWluZXJzLmxlbmd0aCA+IDBcIlxuICAgICAgW3NweFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgW3NweE1heFBhZ2VzXT1cIihjb250YWluZXJzLmxlbmd0aCA8IChwYWdlU2l6ZSArIDEpKSA/IChjdXJyZW50UGFnZSArIDEpIDogY3VycmVudFBhZ2VcIlxuICAgICAgW2ZhQXJyb3dMZWZ0XT1cImZhQXJyb3dMZWZ0XCJcbiAgICAgIFtmYUFycm93UmlnaHRdPVwiZmFBcnJvd1JpZ2h0XCJcbiAgICAgIFt0ZXh0UGFnZV09XCJ0ZXh0UGFnZVwiXG4gICAgICBbdGV4dFByZXZpb3VzXT1cInRleHRQcmV2aW91c1wiXG4gICAgICBbdGV4dE5leHRdPVwidGV4dE5leHRcIlxuICAgICAgKHNweFBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cbiAgPC9zcHgtcGFnaW5hdGlvbj5cblxuICA8c3B4LWFsZXJ0ICpuZ0lmPVwiY29udGFpbmVycy5sZW5ndGggPT09IDBcIiBbc3B4U2V2ZXJpdHldPVwic2V2ZXJpdHlJbmZvXCIgW3NweFRpdGxlXT1cInRleHROb1Jlc3VsdHMgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCI+XG4gICAgICB7eyB0ZXh0WW91Q2FuQ2hhbmdlWW91ckZpbHRlcnMgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplIH19XG4gIDwvc3B4LWFsZXJ0PlxuXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbnRhaW5lciBvZiBjb250YWluZXJzOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgPHNweC1jYXJkICpuZ0lmPVwiaSA8IHBhZ2VTaXplXCIgW2hhc0NvbnRlbnRdPVwiZmFsc2VcIiAoY2xpY2tlZCk9XCJnb1RvQ29udGFpbmVyKGNvbnRhaW5lcilcIj5cbiAgICAgICAgICA8ZGl2IGNhcmQtaGVhZGVyIGNsYXNzPVwiY2FyZC1oZWFkZXIgcm91bmRlZC10LWxnIHAtMyBiZy1za3ktMjAwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHNwYWNlLXgtMyBpdGVtcy1jZW50ZXIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWhlYWRlci1pY29uLWxlZnQgZmxleCBiYXNpcy0xMCBweS0xLjUgc2hyaW5rLTAgZ3Jvdy0wIHBsYWNlLWl0ZW1zLWNlbnRlciByb3VuZGVkIGJnLXNreS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm14LWF1dG9cIiBbaWNvbl09XCJmYUNvbnRhaW5lclN0b3JhZ2VcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyLXRleHQtbWlkZGxlIGdyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgZm9udC1tZWRpdW0gdGV4dC1sYXJnZVwiPnt7IGNvbnRhaW5lci5mb3JtYXR0ZWQuY29udGFpbmVyTnVtYmVyIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgIFxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1oZWFkZXItaWNvbnMtcmlnaHQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGxlYWRpbmctNSBmbGV4IGZsZXgtd3JhcCBpdGVtcy1zdHJldGNoIHRleHQtY2VudGVyIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250YWluZXIuY29udGFpbmVyU3RhdHVzXCIgY2xhc3M9XCJtaW4tdy1bMzZweF0gcHgtMiBweS0xIGJnLXdoaXRlIHRleHQtYmxhY2tcIj4ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmZvcm1hdHRlZC5jb250YWluZXJTdGF0dXMgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNhcmQtbGluZXMgY2xhc3M9XCJncmlkIGdyaWQtY29scy0yIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxzcHgtY2FyZC1saW5lIFt0ZXh0XT1cInRleHRDb250YWluZXJUeXBlIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZVwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29udGFpbmVyLmZvcm1hdHRlZC5jb250YWluZXJUeXBlXCI+PC9zcHgtY2FyZC1saW5lPlxuICAgICAgICAgICAgICA8c3B4LWNhcmQtbGluZSBbdGV4dF09XCJ0ZXh0Q2F0ZWdvcnkgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb250YWluZXIuZm9ybWF0dGVkLmNhdGVnb3J5XCI+PC9zcHgtY2FyZC1saW5lPlxuICAgICAgICAgICAgICA8c3B4LWNhcmQtbGluZSBbdGV4dF09XCJ0ZXh0TG9jYXRpb24gfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb250YWluZXIuZm9ybWF0dGVkLmxvY2F0aW9uXCI+PC9zcHgtY2FyZC1saW5lPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9zcHgtY2FyZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNweC1wYWdpbmF0aW9uXG4gICAgICAqbmdJZj1cImNvbnRhaW5lcnMubGVuZ3RoID4gMFwiXG4gICAgICBbc3B4UGFnZV09XCJjdXJyZW50UGFnZVwiXG4gICAgICBbc3B4TWF4UGFnZXNdPVwiKGNvbnRhaW5lcnMubGVuZ3RoIDwgKHBhZ2VTaXplICsgMSkpID8gKGN1cnJlbnRQYWdlICsgMSkgOiBjdXJyZW50UGFnZVwiXG4gICAgICBbZmFBcnJvd0xlZnRdPVwiZmFBcnJvd0xlZnRcIlxuICAgICAgW2ZhQXJyb3dSaWdodF09XCJmYUFycm93UmlnaHRcIlxuICAgICAgW3RleHRQYWdlXT1cInRleHRQYWdlXCJcbiAgICAgIFt0ZXh0UHJldmlvdXNdPVwidGV4dFByZXZpb3VzXCJcbiAgICAgIFt0ZXh0TmV4dF09XCJ0ZXh0TmV4dFwiXG4gICAgICAoc3B4UGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3NweC1wYWdpbmF0aW9uPlxuPC9kaXY+Il19
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXN0b2NrLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1zdG9jay1pbmZvL3NweC1zdG9jay1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvY2staW5mby9zcHgtc3RvY2staW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBdUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkIsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFN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S0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyw2QkFBNkI7c0JBQXRDLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkLCBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uJztcblxuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQsIFNweElucHV0VHlwZUVudW0sIFNweFZhbHVlUGFpciB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cyc7XG5pbXBvcnQgeyBTcHhGb3JtQnV0dG9uVHlwZUVudW0sIFNweEZvcm1GaWVsZEksIFNweEZvcm1JLCBTcHhGb3JtVmlld0NvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldyc7XG5pbXBvcnQgeyBTcHhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1idXR0b24nO1xuaW1wb3J0IHsgU3B4U2V2ZXJpdHlFbnVtLCB2YWx1ZVBhaXJUb1ZhbHVlIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycyc7XG5pbXBvcnQgeyBTcHhTdG9ja0luZm9WYWx1ZUkgfSBmcm9tICcuL3NweC1zdG9jay1pbmZvLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTcHhQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBJY29uUHJvcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZSc7XG5pbXBvcnQgeyBTcHhBbGVydENvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWFsZXJ0JztcbmltcG9ydCB7IFNweENhcmRDb21wb25lbnQsIFNweENhcmRMaW5lQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtY2FyZCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNweENhcGl0YWxpemVQaXBlIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtY2FwaXRhbGl6ZSc7XG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcblxuZXhwb3J0IGNvbnN0IGN0cmxDYXRlZ29yeSA9ICdjdHJsQ2F0ZWdvcnknO1xuZXhwb3J0IGNvbnN0IGN0cmxDb250YWluZXJTdGF0dXMgPSAnY3RybENvbnRhaW5lclN0YXR1cyc7XG5leHBvcnQgY29uc3QgY3RybENvbnRhaW5lclN0YXR1c0dyb3VwID0gJ2N0cmxDb250YWluZXJTdGF0dXNHcm91cCc7XG5leHBvcnQgY29uc3QgY3RybENvbnRhaW5lclR5cGUgPSAnY3RybENvbnRhaW5lclR5cGUnO1xuZXhwb3J0IGNvbnN0IGN0cmxDdXN0b21lciA9ICdjdHJsQ3VzdG9tZXInO1xuZXhwb3J0IGNvbnN0IGN0cmxEZXBvdCA9ICdjdHJsRGVwb3QnO1xuZXhwb3J0IGNvbnN0IGN0cmxMb2NhdGlvbiA9ICdjdHJsTG9jYXRpb24nO1xuZXhwb3J0IGNvbnN0IHNlY3Rpb25Db250YWluZXJJbmZvID0gJ3NlY3Rpb25Db250YWluZXJJbmZvJztcbmV4cG9ydCBjb25zdCBzZWN0aW9uQ3VzdG9tZXIgPSAnc2VjdGlvbkN1c3RvbWVyJztcbmV4cG9ydCBjb25zdCBzZWN0aW9uTG9jYXRpb24gPSAnc2VjdGlvbkxvY2F0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LXN0b2NrLWluZm8nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3B4LXN0b2NrLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9udEF3ZXNvbWVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTcHhBbGVydENvbXBvbmVudCxcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gICAgU3B4Q2FyZENvbXBvbmVudCxcbiAgICBTcHhDYXJkTGluZUNvbXBvbmVudCxcbiAgICBTcHhGb3JtVmlld0NvbXBvbmVudCxcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcbiAgICBTcHhQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFNweFZhbGlkYXRlQ29udHJvbENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbl1cbn0pXG5leHBvcnQgY2xhc3MgU3B4U3RvY2tJbmZvQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RhdHVzR3JvdXBzSW5QYXRjaCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbnRhaW5lcnMhOiBhbnlbXTtcbiAgQElucHV0KCkgY3VycmVudFBhZ2UhOiBudW1iZXI7XG4gIEBJbnB1dCgpIGZhQXJyb3dMZWZ0ITogSWNvblByb3A7XG4gIEBJbnB1dCgpIGZhQXJyb3dSaWdodCE6IEljb25Qcm9wO1xuICBASW5wdXQoKSBmYUNvbnRhaW5lclN0b3JhZ2UhOiBJY29uUHJvcDtcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBsb2FkZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBwYWdlU2l6ZSE6IG51bWJlcjtcbiAgQElucHV0KCkgc3VnZ2VzdGlvbnM6IGFueSA9IHt9O1xuICBASW5wdXQoKSB0ZXh0Q2F0ZWdvcnkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDb250YWluZXJJbmZvITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyU3RhdHVzITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyU3RhdHVzR3JvdXAhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDb250YWluZXJUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q3VzdG9tZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHREZXBvdCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dExvY2F0aW9uITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0TmV4dCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFBhZ2UhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRQcmV2aW91cyE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFNlYXJjaCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dE5vUmVzdWx0cyE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFlvdUNhbkNoYW5nZVlvdXJGaWx0ZXJzITogc3RyaW5nO1xuICBAT3V0cHV0KCkgc3B4Qmx1ckNhdGVnb3J5OiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDb250YWluZXJTdGF0dXM6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4Qmx1ckNvbnRhaW5lclN0YXR1c0dyb3VwOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDb250YWluZXJUeXBlOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhDbGlja0NvbnRhaW5lcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNweFBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDYXRlZ29yeTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDb250YWluZXJTdGF0dXM6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoQ29udGFpbmVyU3RhdHVzR3JvdXA6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoQ29udGFpbmVyVHlwZTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTdWJtaXQ6IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+KCk7XG4gIHNldmVyaXR5SW5mbyA9IFNweFNldmVyaXR5RW51bS5pbmZvO1xuXG5cbiAgZm9ybTogU3B4Rm9ybUkgPSB7XG4gICAgYnV0dG9uczogW1xuICAgICAge1xuICAgICAgICBzZXZlcml0eTogU3B4U2V2ZXJpdHlFbnVtLnN1Y2Nlc3MsXG4gICAgICAgIHR5cGU6IFNweEZvcm1CdXR0b25UeXBlRW51bS5zdWJtaXQsXG4gICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRTZWFyY2gsXG4gICAgICB9XG4gICAgXSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Mb2NhdGlvbixcbiAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgdGl0bGU6ICgpID0+IHRoaXMudGV4dExvY2F0aW9uLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxEZXBvdCxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHREZXBvdCxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtzcHhWYWxpZGF0b3JSZXF1aXJlZCgpXSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxMb2NhdGlvbixcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRMb2NhdGlvbixcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBzZWN0aW9uQ3VzdG9tZXIsXG4gICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgIHRpdGxlOiAoKSA9PiB0aGlzLnRleHRDdXN0b21lcixcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ3VzdG9tZXIsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q3VzdG9tZXIsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Db250YWluZXJJbmZvLFxuICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICB0aXRsZTogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVySW5mbyxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ2F0ZWdvcnksXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q2F0ZWdvcnksXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclN0YXR1cyxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRDb250YWluZXJTdGF0dXMsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclN0YXR1c0dyb3VwLFxuICAgICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudGV4dENvbnRhaW5lclN0YXR1c0dyb3VwLFxuICAgICAgICAgICAgdHlwZTogKCkgPT4gU3B4SW5wdXRUeXBlRW51bS5hdXRvY29tcGxldGUsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICgpID0+IG51bGwsXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiAoKSA9PiBbXSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdGhpcy5zdGF0dXNHcm91cHNJblBhdGNoLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclR5cGUsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVyVHlwZSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiBudWxsLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogKCkgPT4gW10sXG4gICAgICAgICAgICByZWFkb25seTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBjYXBpdGFsaXplOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgXVxuICB9O1xuXG4gIGdldCBjdHJsQ2F0ZWdvcnkoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDYXRlZ29yeSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb250YWluZXJTdGF0dXMoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDb250YWluZXJTdGF0dXMpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ29udGFpbmVyU3RhdHVzR3JvdXAoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDb250YWluZXJTdGF0dXNHcm91cCkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb250YWluZXJUeXBlKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsQ29udGFpbmVyVHlwZSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDdXN0b21lcigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybEN1c3RvbWVyKSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybERlcG90KCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsRGVwb3QpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsTG9jYXRpb24oKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxMb2NhdGlvbikgYXMgRm9ybUNvbnRyb2w7IH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gU3B4Rm9ybVZpZXdDb21wb25lbnQuY3JlYXRlRm9ybSh0aGlzLmZvcm1CdWlsZGVyLCB0aGlzLmZvcm0uc2VjdGlvbnMpO1xuICB9XG5cbiAgZ2V0UmF3VmFsaWRhdG9ycyhmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gKGZvcm1Db250cm9sIGFzIGFueSkuX3Jhd1ZhbGlkYXRvcnM7XG4gIH1cblxuICBvbkJsdXIoZGF0YTogeyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9KSB7XG4gICAgaWYgKHZhbHVlUGFpclRvVmFsdWUoZGF0YS52YWx1ZVBhaXIpKSB7XG4gICAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDYXRlZ29yeSkge1xuICAgICAgICB0aGlzLnNweEJsdXJDYXRlZ29yeS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclN0YXR1cykge1xuICAgICAgICB0aGlzLnNweEJsdXJDb250YWluZXJTdGF0dXMuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDb250YWluZXJTdGF0dXNHcm91cCkge1xuICAgICAgICB0aGlzLnNweEJsdXJDb250YWluZXJTdGF0dXNHcm91cC5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclR5cGUpIHtcbiAgICAgICAgdGhpcy5zcHhCbHVyQ29udGFpbmVyVHlwZS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybEN1c3RvbWVyKSB7XG4gICAgICAgIHRoaXMuc3B4Qmx1ckN1c3RvbWVyLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKGRhdGE6IHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfSkge1xuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENhdGVnb3J5KSB7XG4gICAgICB0aGlzLnNweFNlYXJjaENhdGVnb3J5LmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDb250YWluZXJUeXBlKSB7XG4gICAgICB0aGlzLnNweFNlYXJjaENvbnRhaW5lclR5cGUuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclN0YXR1cykge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDb250YWluZXJTdGF0dXMuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclN0YXR1c0dyb3VwKSB7XG4gICAgICB0aGlzLnNweFNlYXJjaENvbnRhaW5lclN0YXR1c0dyb3VwLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDdXN0b21lcikge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDdXN0b21lci5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zcHhQYWdlQ2hhbmdlLmVtaXQocGFnZSk7XG4gIH1cblxuICBnb1RvQ29udGFpbmVyKGNvbnRhaW5lcjogYW55KSB7XG4gICAgdGhpcy5zcHhDbGlja0NvbnRhaW5lci5lbWl0KGNvbnRhaW5lcik7XG4gIH1cblxuICBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNweFN1Ym1pdC5lbWl0KHtcbiAgICAgIGN0cmxDYXRlZ29yeTogdGhpcy5jdHJsQ2F0ZWdvcnkudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyU3RhdHVzOiB0aGlzLmN0cmxDb250YWluZXJTdGF0dXMudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyU3RhdHVzR3JvdXA6IHRoaXMuY3RybENvbnRhaW5lclN0YXR1c0dyb3VwLnZhbHVlLFxuICAgICAgY3RybENvbnRhaW5lclR5cGU6IHRoaXMuY3RybENvbnRhaW5lclR5cGUudmFsdWUsXG4gICAgICBjdHJsQ3VzdG9tZXI6IHRoaXMuY3RybEN1c3RvbWVyLnZhbHVlLFxuICAgICAgY3RybERlcG90OiB0aGlzLmN0cmxEZXBvdC52YWx1ZSxcbiAgICAgIGN0cmxMb2NhdGlvbjogdGhpcy5jdHJsTG9jYXRpb24udmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAoIWxvYWRlZCkge1xuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwibWF4LXctbGcgbXgtYXV0byBmbGV4IGZsZXgtY29sIGdhcC0zXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgICA8c3B4LWZvcm0tdmlld1xuICAgICAgW3NweEZvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgW3NweEZvcm1dPVwiZm9ybVwiXG4gICAgICBbc3B4U3VnZ2VzdGlvbnNdPVwic3VnZ2VzdGlvbnNcIlxuICAgICAgKHNweEJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgKHNweFNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+XG4gICAgPC9zcHgtZm9ybS12aWV3PlxuICA8L2Zvcm0+XG59XG5cbkBpZiAobG9hZGVkKSB7XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCI+XG4gICAgQGlmIChjb250YWluZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIDxzcHgtcGFnaW5hdGlvblxuICAgICAgICBbc3B4UGFnZV09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgIFtzcHhNYXhQYWdlc109XCIoY29udGFpbmVycy5sZW5ndGggPCAocGFnZVNpemUgKyAxKSkgPyAoY3VycmVudFBhZ2UgKyAxKSA6IGN1cnJlbnRQYWdlXCJcbiAgICAgICAgW2ZhQXJyb3dMZWZ0XT1cImZhQXJyb3dMZWZ0XCJcbiAgICAgICAgW2ZhQXJyb3dSaWdodF09XCJmYUFycm93UmlnaHRcIlxuICAgICAgICBbdGV4dFBhZ2VdPVwidGV4dFBhZ2VcIlxuICAgICAgICBbdGV4dFByZXZpb3VzXT1cInRleHRQcmV2aW91c1wiXG4gICAgICAgIFt0ZXh0TmV4dF09XCJ0ZXh0TmV4dFwiXG4gICAgICAgIChzcHhQYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L3NweC1wYWdpbmF0aW9uPlxuICAgIH1cbiAgICBAaWYgKGNvbnRhaW5lcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICA8c3B4LWFsZXJ0IFtzcHhTZXZlcml0eV09XCJzZXZlcml0eUluZm9cIiBbc3B4VGl0bGVdPVwidGV4dE5vUmVzdWx0cyB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIj5cbiAgICAgICAge3sgdGV4dFlvdUNhbkNoYW5nZVlvdXJGaWx0ZXJzIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZSB9fVxuICAgICAgPC9zcHgtYWxlcnQ+XG4gICAgfVxuICAgIEBmb3IgKGNvbnRhaW5lciBvZiBjb250YWluZXJzOyB0cmFjayBjb250YWluZXI7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICBAaWYgKGkgPCBwYWdlU2l6ZSkge1xuICAgICAgICA8c3B4LWNhcmQgW2hhc0NvbnRlbnRdPVwiZmFsc2VcIiAoY2xpY2tlZCk9XCJnb1RvQ29udGFpbmVyKGNvbnRhaW5lcilcIj5cbiAgICAgICAgICA8ZGl2IGNhcmQtaGVhZGVyIGNsYXNzPVwiY2FyZC1oZWFkZXIgcm91bmRlZC10LWxnIHAtMyBiZy1za3ktMjAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBzcGFjZS14LTMgaXRlbXMtY2VudGVyIHctZnVsbFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWhlYWRlci1pY29uLWxlZnQgZmxleCBiYXNpcy0xMCBweS0xLjUgc2hyaW5rLTAgZ3Jvdy0wIHBsYWNlLWl0ZW1zLWNlbnRlciByb3VuZGVkIGJnLXNreS00MDBcIj5cbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cIm14LWF1dG9cIiBbaWNvbl09XCJmYUNvbnRhaW5lclN0b3JhZ2VcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXItdGV4dC1taWRkbGUgZ3Jvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJibG9jayBmb250LW1lZGl1bSB0ZXh0LWxhcmdlXCI+e3sgY29udGFpbmVyLmZvcm1hdHRlZC5jb250YWluZXJOdW1iZXIgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtaGVhZGVyLWljb25zLXJpZ2h0IHRleHQtc20gdGV4dC1ncmF5LTkwMCBsZWFkaW5nLTUgZmxleCBmbGV4LXdyYXAgaXRlbXMtc3RyZXRjaCB0ZXh0LWNlbnRlciBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbnRhaW5lci5jb250YWluZXJTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaW4tdy1bMzZweF0gcHgtMiBweS0xIGJnLXdoaXRlIHRleHQtYmxhY2tcIj4ge3tcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5mb3JtYXR0ZWQuY29udGFpbmVyU3RhdHVzIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2FyZC1saW5lcyBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcHgtY2FyZC1saW5lIFt0ZXh0XT1cInRleHRDb250YWluZXJUeXBlIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiY29udGFpbmVyLmZvcm1hdHRlZC5jb250YWluZXJUeXBlXCI+PC9zcHgtY2FyZC1saW5lPlxuICAgICAgICAgICAgPHNweC1jYXJkLWxpbmUgW3RleHRdPVwidGV4dENhdGVnb3J5IHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiY29udGFpbmVyLmZvcm1hdHRlZC5jYXRlZ29yeVwiPjwvc3B4LWNhcmQtbGluZT5cbiAgICAgICAgICAgIDxzcHgtY2FyZC1saW5lIFt0ZXh0XT1cInRleHRMb2NhdGlvbiB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvbnRhaW5lci5mb3JtYXR0ZWQubG9jYXRpb25cIj48L3NweC1jYXJkLWxpbmU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc3B4LWNhcmQ+XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAoY29udGFpbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICA8c3B4LXBhZ2luYXRpb25cbiAgICAgICAgW3NweFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICBbc3B4TWF4UGFnZXNdPVwiKGNvbnRhaW5lcnMubGVuZ3RoIDwgKHBhZ2VTaXplICsgMSkpID8gKGN1cnJlbnRQYWdlICsgMSkgOiBjdXJyZW50UGFnZVwiXG4gICAgICAgIFtmYUFycm93TGVmdF09XCJmYUFycm93TGVmdFwiXG4gICAgICAgIFtmYUFycm93UmlnaHRdPVwiZmFBcnJvd1JpZ2h0XCJcbiAgICAgICAgW3RleHRQYWdlXT1cInRleHRQYWdlXCJcbiAgICAgICAgW3RleHRQcmV2aW91c109XCJ0ZXh0UHJldmlvdXNcIlxuICAgICAgICBbdGV4dE5leHRdPVwidGV4dE5leHRcIlxuICAgICAgICAoc3B4UGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC9zcHgtcGFnaW5hdGlvbj5cbiAgICB9XG4gIDwvZGl2PlxufSJdfQ==
@@ -1,6 +1,5 @@
1
1
  import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
2
  import { SpxAlertComponent } from '@softpak/components/spx-alert';
3
- import { NgFor, NgIf } from '@angular/common';
4
3
  import { SpxToasterAutoCloseSpeedEnum } from './spx-toaster-autoclose-speed';
5
4
  import * as i0 from "@angular/core";
6
5
  export class SpxToasterComponent {
@@ -52,112 +51,108 @@ export class SpxToasterComponent {
52
51
  }
53
52
  }
54
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxToasterComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxToasterComponent, isStandalone: true, selector: "spx-toaster", inputs: { messages: "messages", spxAutoclose: "spxAutoclose" }, outputs: { spxClose: "spxClose" }, host: { properties: { "class.spx-toasts-displayer": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
56
- <div
57
- *ngIf="messages && messages.length > 0"
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxToasterComponent, isStandalone: true, selector: "spx-toaster", inputs: { messages: "messages", spxAutoclose: "spxAutoclose" }, outputs: { spxClose: "spxClose" }, host: { properties: { "class.spx-toasts-displayer": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: `
55
+ @if (messages && messages.length > 0) {
56
+ <div
58
57
  class="flex flex-col gap-2 fixed bottom-16 left-0 right-0 mx-auto px-3 z-50">
59
58
  <style>
60
- .progress-bar-container {
61
- width: 100%;
62
- height: 5px;
63
- background-color: #ccc;
64
- margin-top: 8px;
65
- border-radius: 2px;
66
- overflow: hidden;
67
- }
68
-
69
- .progress-bar {
70
- height: 100%;
71
- background-color: #76c7c0;
72
- animation-name: progress;
73
- animation-timing-function: ease-in-out;
74
- animation-fill-mode: forwards;
75
- animation-duration: 5000;
76
- }
77
-
78
- @keyframes progress {
79
- from {
80
- width: 0%;
81
- }
82
- to {
83
- width: 100%;
84
- }
85
- }
86
- </style>
87
- <spx-alert
88
- *ngFor="let message of messages"
89
- [spxAutoclose]="message.autoClose"
90
- [spxCloseable]="message.closeable"
91
- [spxSeverity]="message.severity"
92
- [spxTitle]="message.title"
93
- (spxClose)="handleClose(message.id)"
94
- (click)="handleClose(message.id)"
95
- [id]="message.id"
96
- >{{message.message}}
97
- <!-- <div *ngIf="message.autoClose" class="progress-bar-container">
98
- <div class="progress-bar"></div>
99
- </div> -->
100
- </spx-alert>
101
-
102
- </div>`, isInline: true, styles: ["\n .progress-bar-container {\n width: 100%;\n height: 5px;\n background-color: #ccc;\n margin-top: 8px;\n border-radius: 2px;\n overflow: hidden;\n }\n\n .progress-bar {\n height: 100%;\n background-color: #76c7c0;\n animation-name: progress;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n animation-duration: 5000;\n }\n\n @keyframes progress {\n from {\n width: 0%;\n }\n to {\n width: 100%;\n }\n }\n "], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxAlertComponent, selector: "spx-alert", inputs: ["spxAutoclose", "spxCloseable", "spxHideTitle", "spxTitle", "spxMarginTop", "spxSeverity", "tick"], outputs: ["spxClose"] }] }); }
59
+ .progress-bar-container {
60
+ width: 100%;
61
+ height: 5px;
62
+ background-color: #ccc;
63
+ margin-top: 8px;
64
+ border-radius: 2px;
65
+ overflow: hidden;
66
+ }
67
+ .progress-bar {
68
+ height: 100%;
69
+ background-color: #76c7c0;
70
+ animation-name: progress;
71
+ animation-timing-function: ease-in-out;
72
+ animation-fill-mode: forwards;
73
+ animation-duration: 5000;
74
+ }
75
+ @keyframes progress {
76
+ from {
77
+ width: 0%;
78
+ }
79
+ to {
80
+ width: 100%;
81
+ }
82
+ }
83
+ </style>
84
+ @for (message of messages; track message) {
85
+ <spx-alert
86
+ [spxAutoclose]="message.autoClose"
87
+ [spxCloseable]="message.closeable"
88
+ [spxSeverity]="message.severity"
89
+ [spxTitle]="message.title"
90
+ (spxClose)="handleClose(message.id)"
91
+ (click)="handleClose(message.id)"
92
+ [id]="message.id"
93
+ >{{message.message}}
94
+ <!-- <div *ngIf="message.autoClose" class="progress-bar-container">
95
+ <div class="progress-bar"></div>
96
+ </div> -->
97
+ </spx-alert>
98
+ }
99
+ </div>
100
+ }`, isInline: true, styles: ["\n .progress-bar-container {\n width: 100%;\n height: 5px;\n background-color: #ccc;\n margin-top: 8px;\n border-radius: 2px;\n overflow: hidden;\n }\n .progress-bar {\n height: 100%;\n background-color: #76c7c0;\n animation-name: progress;\n animation-timing-function: ease-in-out;\n animation-fill-mode: forwards;\n animation-duration: 5000;\n }\n @keyframes progress {\n from {\n width: 0%;\n }\n to {\n width: 100%;\n }\n }\n "], dependencies: [{ kind: "component", type: SpxAlertComponent, selector: "spx-alert", inputs: ["spxAutoclose", "spxCloseable", "spxHideTitle", "spxTitle", "spxMarginTop", "spxSeverity", "tick"], outputs: ["spxClose"] }] }); }
103
101
  }
104
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxToasterComponent, decorators: [{
105
103
  type: Component,
106
104
  args: [{
107
105
  selector: 'spx-toaster',
108
106
  template: `
109
- <div
110
- *ngIf="messages && messages.length > 0"
107
+ @if (messages && messages.length > 0) {
108
+ <div
111
109
  class="flex flex-col gap-2 fixed bottom-16 left-0 right-0 mx-auto px-3 z-50">
112
110
  <style>
113
- .progress-bar-container {
114
- width: 100%;
115
- height: 5px;
116
- background-color: #ccc;
117
- margin-top: 8px;
118
- border-radius: 2px;
119
- overflow: hidden;
120
- }
121
-
122
- .progress-bar {
123
- height: 100%;
124
- background-color: #76c7c0;
125
- animation-name: progress;
126
- animation-timing-function: ease-in-out;
127
- animation-fill-mode: forwards;
128
- animation-duration: 5000;
129
- }
130
-
131
- @keyframes progress {
132
- from {
133
- width: 0%;
134
- }
135
- to {
136
- width: 100%;
137
- }
138
- }
139
- </style>
140
- <spx-alert
141
- *ngFor="let message of messages"
142
- [spxAutoclose]="message.autoClose"
143
- [spxCloseable]="message.closeable"
144
- [spxSeverity]="message.severity"
145
- [spxTitle]="message.title"
146
- (spxClose)="handleClose(message.id)"
147
- (click)="handleClose(message.id)"
148
- [id]="message.id"
149
- >{{message.message}}
150
- <!-- <div *ngIf="message.autoClose" class="progress-bar-container">
151
- <div class="progress-bar"></div>
152
- </div> -->
153
- </spx-alert>
154
-
155
- </div>`,
111
+ .progress-bar-container {
112
+ width: 100%;
113
+ height: 5px;
114
+ background-color: #ccc;
115
+ margin-top: 8px;
116
+ border-radius: 2px;
117
+ overflow: hidden;
118
+ }
119
+ .progress-bar {
120
+ height: 100%;
121
+ background-color: #76c7c0;
122
+ animation-name: progress;
123
+ animation-timing-function: ease-in-out;
124
+ animation-fill-mode: forwards;
125
+ animation-duration: 5000;
126
+ }
127
+ @keyframes progress {
128
+ from {
129
+ width: 0%;
130
+ }
131
+ to {
132
+ width: 100%;
133
+ }
134
+ }
135
+ </style>
136
+ @for (message of messages; track message) {
137
+ <spx-alert
138
+ [spxAutoclose]="message.autoClose"
139
+ [spxCloseable]="message.closeable"
140
+ [spxSeverity]="message.severity"
141
+ [spxTitle]="message.title"
142
+ (spxClose)="handleClose(message.id)"
143
+ (click)="handleClose(message.id)"
144
+ [id]="message.id"
145
+ >{{message.message}}
146
+ <!-- <div *ngIf="message.autoClose" class="progress-bar-container">
147
+ <div class="progress-bar"></div>
148
+ </div> -->
149
+ </spx-alert>
150
+ }
151
+ </div>
152
+ }`,
156
153
  standalone: true,
157
154
  imports: [
158
- NgIf,
159
- NgFor,
160
- SpxAlertComponent,
155
+ SpxAlertComponent
161
156
  ],
162
157
  }]
163
158
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { hostClass: [{
@@ -170,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
170
165
  }], spxAutoclose: [{
171
166
  type: Input
172
167
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXRvYXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC10b2FzdGVyL3NyYy9zcHgtdG9hc3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUE0RDdFLE1BQU0sT0FBTyxtQkFBbUI7SUFNNUIsWUFBb0IsUUFBbUIsRUFBVSxFQUFjO1FBQTNDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBTHBCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFbEQsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRFLFVBQUssR0FBVyxDQUFDLENBQUM7SUFHbEIsQ0FBQztJQUdELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEgsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3hDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNwQixrQ0FBa0M7d0JBQ2xDLHNEQUFzRDt3QkFDdEQsMkNBQTJDO3dCQUMzQyxVQUFVLENBQUMsR0FBRyxFQUFFOzRCQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO3dCQUNoQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUMxQixDQUFDO29CQUNELE9BQU8sT0FBTyxDQUFDO2dCQUNuQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDTCxDQUFDO0lBR0QsZUFBZSxDQUFDLFNBQWlCLEVBQUUsRUFBVTtRQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUdJLFdBQVcsQ0FBQyxFQUFVO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxjQUE0QyxFQUFFLFdBQW1CO1FBQy9GLFFBQVEsY0FBYyxFQUFFLENBQUM7WUFDckIsS0FBSyw0QkFBNEIsQ0FBQyxPQUFPO2dCQUNyQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuRSxLQUFLLDRCQUE0QixDQUFDLElBQUk7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BFO2dCQUNJLE9BQU8sY0FBYyxDQUFDO1FBQzlCLENBQUM7SUFDTCxDQUFDOytHQXZEUSxtQkFBbUI7bUdBQW5CLG1CQUFtQix5UUF4RGxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQStDSCwyMUJBR0gsSUFBSSw2RkFDSixLQUFLLG1IQUNMLGlCQUFpQjs7NEZBSVosbUJBQW1CO2tCQTFEL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQStDSDtvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxpQkFBaUI7cUJBRXBCO2lCQUNKO3VHQUU4QyxTQUFTO3NCQUFuRCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFDaEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNweFRvYXN0ZXJNZXNzYWdlSSB9IGZyb20gJy4vc3B4LXRvYXN0ZXItbWVzc2FnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3B4QWxlcnRDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1hbGVydCc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTcHhUb2FzdGVyQXV0b0Nsb3NlU3BlZWRFbnVtIH0gZnJvbSAnLi9zcHgtdG9hc3Rlci1hdXRvY2xvc2Utc3BlZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NweC10b2FzdGVyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgXG4gICAgICAgICpuZ0lmPVwibWVzc2FnZXMgJiYgbWVzc2FnZXMubGVuZ3RoID4gMFwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBmaXhlZCBib3R0b20tMTYgbGVmdC0wIHJpZ2h0LTAgbXgtYXV0byBweC0zIHotNTBcIj5cbiAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogNXB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzc2YzdjMDtcbiAgICAgICAgICAgICAgICBhbmltYXRpb24tbmFtZTogcHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiA1MDAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAa2V5ZnJhbWVzIHByb2dyZXNzIHtcbiAgICAgICAgICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0byB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9zdHlsZT5cbiAgICAgICAgPHNweC1hbGVydFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXNcIlxuICAgICAgICAgICAgW3NweEF1dG9jbG9zZV09XCJtZXNzYWdlLmF1dG9DbG9zZVwiXG4gICAgICAgICAgICBbc3B4Q2xvc2VhYmxlXT1cIm1lc3NhZ2UuY2xvc2VhYmxlXCJcbiAgICAgICAgICAgIFtzcHhTZXZlcml0eV09XCJtZXNzYWdlLnNldmVyaXR5XCJcbiAgICAgICAgICAgIFtzcHhUaXRsZV09XCJtZXNzYWdlLnRpdGxlXCJcbiAgICAgICAgICAgIChzcHhDbG9zZSk9XCJoYW5kbGVDbG9zZShtZXNzYWdlLmlkKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xvc2UobWVzc2FnZS5pZClcIlxuICAgICAgICAgICAgW2lkXT1cIm1lc3NhZ2UuaWRcIlxuICAgICAgICAgICAgPnt7bWVzc2FnZS5tZXNzYWdlfX1cbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIm1lc3NhZ2UuYXV0b0Nsb3NlXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhclwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L3NweC1hbGVydD5cbiAgICAgICAgXG4gICAgPC9kaXY+YCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIFNweEFsZXJ0Q29tcG9uZW50LFxuXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU3B4VG9hc3RlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zcHgtdG9hc3RzLWRpc3BsYXllcicpIGhvc3RDbGFzcyA9IHRydWU7XG4gICAgQElucHV0KCkgbWVzc2FnZXMhOiBTcHhUb2FzdGVyTWVzc2FnZUlbXTtcbiAgICBAT3V0cHV0KCkgc3B4Q2xvc2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQElucHV0KCkgc3B4QXV0b2Nsb3NlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY291bnQ6IG51bWJlciA9IDA7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IFxuXG4gICAgfVxuXG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMubWFwKG0gPT4gKHsgLi4ubSwgYXV0b0Nsb3NlOiB0aGlzLmNhbGNUb2FzdGVyQXV0b2Nsb3NlU3BlZWQobS5hdXRvQ2xvc2UsIG0ubWVzc2FnZSkgfSkpO1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcy5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLmF1dG9DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobWVzc2FnZS5hdXRvQ2xvc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zaG93UHJvZ3Jlc3NCYXIobWVzc2FnZS5hdXRvQ2xvc2UsIG1lc3NhZ2UuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnNob3dQcm9ncmVzc0Jhcig2MDAwMDAsIG1lc3NhZ2UuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNsb3NlKG1lc3NhZ2UuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBtZXNzYWdlLmF1dG9DbG9zZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAgIFxuXG4gICAgc2hvd1Byb2dyZXNzQmFyKGF1dG9jbG9zZTogbnVtYmVyLCBpZDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFsZXJ0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBzcHgtYWxlcnRbaWQ9XCIke2lkfVwiXWApO1xuICAgICAgICBjb25zb2xlLmxvZyhhbGVydEVsZW1lbnQpO1xuICAgICAgICBpZiAoYWxlcnRFbGVtZW50KSB7XG4gICAgICAgICAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgc3B4LWFsZXJ0IGVsZW1lbnQgd2l0aCBJRCAke2lkfSBub3QgZm91bmQuYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuXG4gICAgcHVibGljIGhhbmRsZUNsb3NlKGlkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zcHhDbG9zZS5lbWl0KGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGNUb2FzdGVyQXV0b2Nsb3NlU3BlZWQoYXV0b0Nsb3NlU3BlZWQ6IFNweFRvYXN0ZXJBdXRvQ2xvc2VTcGVlZEVudW0sIG1lc3NhZ2VUZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBzd2l0Y2ggKGF1dG9DbG9zZVNwZWVkKSB7XG4gICAgICAgICAgICBjYXNlIFNweFRvYXN0ZXJBdXRvQ2xvc2VTcGVlZEVudW0uREVGQVVMVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobWVzc2FnZVRleHQubGVuZ3RoICogNTAsIDIwMDApLCA3MDAwKTtcbiAgICAgICAgICAgIGNhc2UgU3B4VG9hc3RlckF1dG9DbG9zZVNwZWVkRW51bS5TTE9XOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChtZXNzYWdlVGV4dC5sZW5ndGggKiA2MCwgMzAwMCksIDEwMDAwKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dG9DbG9zZVNwZWVkO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXRvYXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC10b2FzdGVyL3NyYy9zcHgtdG9hc3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBd0Q3RSxNQUFNLE9BQU8sbUJBQW1CO0lBTTVCLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUxwQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWxELGFBQVEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV0RSxVQUFLLEdBQVcsQ0FBQyxDQUFDO0lBR2xCLENBQUM7SUFHRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RILElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN4QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDcEIsa0NBQWtDO3dCQUNsQyxzREFBc0Q7d0JBQ3RELDJDQUEyQzt3QkFDM0MsVUFBVSxDQUFDLEdBQUcsRUFBRTs0QkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTt3QkFDaEMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztvQkFDRCxPQUFPLE9BQU8sQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0wsQ0FBQztJQUdELGVBQWUsQ0FBQyxTQUFpQixFQUFFLEVBQVU7UUFDekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFHSSxXQUFXLENBQUMsRUFBVTtRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8seUJBQXlCLENBQUMsY0FBNEMsRUFBRSxXQUFtQjtRQUMvRixRQUFRLGNBQWMsRUFBRSxDQUFDO1lBQ3JCLEtBQUssNEJBQTRCLENBQUMsT0FBTztnQkFDckMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkUsS0FBSyw0QkFBNEIsQ0FBQyxJQUFJO2dCQUNsQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRTtnQkFDSSxPQUFPLGNBQWMsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQzsrR0F2RFEsbUJBQW1CO21HQUFuQixtQkFBbUIseVFBcERsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQThDUixxcEJBR0YsaUJBQWlCOzs0RkFHUixtQkFBbUI7a0JBdEQvQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUE4Q1I7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDVCxpQkFBaUI7cUJBQ3BCO2lCQUNBO3VHQUU4QyxTQUFTO3NCQUFuRCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFDaEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNweFRvYXN0ZXJNZXNzYWdlSSB9IGZyb20gJy4vc3B4LXRvYXN0ZXItbWVzc2FnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3B4QWxlcnRDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1hbGVydCc7XG5cbmltcG9ydCB7IFNweFRvYXN0ZXJBdXRvQ2xvc2VTcGVlZEVudW0gfSBmcm9tICcuL3NweC10b2FzdGVyLWF1dG9jbG9zZS1zcGVlZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc3B4LXRvYXN0ZXInLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgQGlmIChtZXNzYWdlcyAmJiBtZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBmaXhlZCBib3R0b20tMTYgbGVmdC0wIHJpZ2h0LTAgbXgtYXV0byBweC0zIHotNTBcIj5cbiAgICAgICAgPHN0eWxlPlxuICAgICAgICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDVweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzZjN2MwO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogcHJvZ3Jlc3M7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiA1MDAwO1xuICAgICAgfVxuICAgICAgQGtleWZyYW1lcyBwcm9ncmVzcyB7XG4gICAgICBmcm9tIHtcbiAgICAgIHdpZHRoOiAwJTtcbiAgICB9XG4gICAgdG8ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICB9XG4gICAgPC9zdHlsZT5cbiAgICBAZm9yIChtZXNzYWdlIG9mIG1lc3NhZ2VzOyB0cmFjayBtZXNzYWdlKSB7XG4gICAgICA8c3B4LWFsZXJ0XG4gICAgICAgIFtzcHhBdXRvY2xvc2VdPVwibWVzc2FnZS5hdXRvQ2xvc2VcIlxuICAgICAgICBbc3B4Q2xvc2VhYmxlXT1cIm1lc3NhZ2UuY2xvc2VhYmxlXCJcbiAgICAgICAgW3NweFNldmVyaXR5XT1cIm1lc3NhZ2Uuc2V2ZXJpdHlcIlxuICAgICAgICBbc3B4VGl0bGVdPVwibWVzc2FnZS50aXRsZVwiXG4gICAgICAgIChzcHhDbG9zZSk9XCJoYW5kbGVDbG9zZShtZXNzYWdlLmlkKVwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDbG9zZShtZXNzYWdlLmlkKVwiXG4gICAgICAgIFtpZF09XCJtZXNzYWdlLmlkXCJcbiAgICAgICAgPnt7bWVzc2FnZS5tZXNzYWdlfX1cbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwibWVzc2FnZS5hdXRvQ2xvc2VcIiBjbGFzcz1cInByb2dyZXNzLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhclwiPjwvZGl2PlxuICAgICAgPC9kaXY+IC0tPlxuICAgIDwvc3B4LWFsZXJ0PlxuICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9YCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICBTcHhBbGVydENvbXBvbmVudFxuXSxcbn0pXG5leHBvcnQgY2xhc3MgU3B4VG9hc3RlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zcHgtdG9hc3RzLWRpc3BsYXllcicpIGhvc3RDbGFzcyA9IHRydWU7XG4gICAgQElucHV0KCkgbWVzc2FnZXMhOiBTcHhUb2FzdGVyTWVzc2FnZUlbXTtcbiAgICBAT3V0cHV0KCkgc3B4Q2xvc2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQElucHV0KCkgc3B4QXV0b2Nsb3NlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY291bnQ6IG51bWJlciA9IDA7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IFxuXG4gICAgfVxuXG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMubWFwKG0gPT4gKHsgLi4ubSwgYXV0b0Nsb3NlOiB0aGlzLmNhbGNUb2FzdGVyQXV0b2Nsb3NlU3BlZWQobS5hdXRvQ2xvc2UsIG0ubWVzc2FnZSkgfSkpO1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlcy5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLmF1dG9DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobWVzc2FnZS5hdXRvQ2xvc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zaG93UHJvZ3Jlc3NCYXIobWVzc2FnZS5hdXRvQ2xvc2UsIG1lc3NhZ2UuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnNob3dQcm9ncmVzc0Jhcig2MDAwMDAsIG1lc3NhZ2UuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNsb3NlKG1lc3NhZ2UuaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBtZXNzYWdlLmF1dG9DbG9zZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAgIFxuXG4gICAgc2hvd1Byb2dyZXNzQmFyKGF1dG9jbG9zZTogbnVtYmVyLCBpZDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFsZXJ0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBzcHgtYWxlcnRbaWQ9XCIke2lkfVwiXWApO1xuICAgICAgICBjb25zb2xlLmxvZyhhbGVydEVsZW1lbnQpO1xuICAgICAgICBpZiAoYWxlcnRFbGVtZW50KSB7XG4gICAgICAgICAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgc3B4LWFsZXJ0IGVsZW1lbnQgd2l0aCBJRCAke2lkfSBub3QgZm91bmQuYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuXG4gICAgcHVibGljIGhhbmRsZUNsb3NlKGlkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zcHhDbG9zZS5lbWl0KGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGNUb2FzdGVyQXV0b2Nsb3NlU3BlZWQoYXV0b0Nsb3NlU3BlZWQ6IFNweFRvYXN0ZXJBdXRvQ2xvc2VTcGVlZEVudW0sIG1lc3NhZ2VUZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBzd2l0Y2ggKGF1dG9DbG9zZVNwZWVkKSB7XG4gICAgICAgICAgICBjYXNlIFNweFRvYXN0ZXJBdXRvQ2xvc2VTcGVlZEVudW0uREVGQVVMVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobWVzc2FnZVRleHQubGVuZ3RoICogNTAsIDIwMDApLCA3MDAwKTtcbiAgICAgICAgICAgIGNhc2UgU3B4VG9hc3RlckF1dG9DbG9zZVNwZWVkRW51bS5TTE9XOlxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChtZXNzYWdlVGV4dC5sZW5ndGggKiA2MCwgMzAwMCksIDEwMDAwKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dG9DbG9zZVNwZWVkO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,4 +1,3 @@
1
- import { CommonModule } from '@angular/common';
2
1
  import { Component, Input } from '@angular/core';
3
2
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
3
  import { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';
@@ -49,7 +48,7 @@ export class SpxUpdateInfoComponent {
49
48
  <spx-input [formControl]="ctrlAppStoreVersion" [spxLabel]="txtAppStoreVersion | capitalize"
50
49
  [spxReadonly]="true"></spx-input>
51
50
  </div>
52
- </form>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutocomplete", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
51
+ </form>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutocomplete", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
53
52
  }
54
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxUpdateInfoComponent, decorators: [{
55
54
  type: Component,
@@ -69,11 +68,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
69
68
  </form>`,
70
69
  standalone: true,
71
70
  imports: [
72
- CommonModule,
73
71
  FormsModule,
74
72
  ReactiveFormsModule,
75
73
  SpxCapitalizePipe,
76
- SpxInputComponent,
74
+ SpxInputComponent
77
75
  ]
78
76
  }]
79
77
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { txtAppStoreVersion: [{
@@ -85,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
85
83
  }], txtVersion: [{
86
84
  type: Input
87
85
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXVwZGF0ZS1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdXBkYXRlL3NyYy9zcHgtdXBkYXRlLWluZm8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQXVDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFFbkUsTUFBTSxtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQztBQUM5QyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDOUIsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNsRCxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztBQXlCMUMsTUFBTSxPQUFPLHNCQUFzQjtJQU9qQyxJQUFJLGlCQUFpQixLQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFnQixDQUFDLENBQUMsQ0FBQztJQUNoRyxJQUFJLHFCQUFxQixLQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFnQixDQUFDLENBQUMsQ0FBQztJQUN4RyxJQUFJLHFCQUFxQixLQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDOUYsSUFBSSxtQkFBbUIsS0FBa0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFcEcsWUFDbUIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQXVCLEVBQUUsT0FBZSxFQUFFLFdBQW1CLEVBQUUsT0FBZTtRQUNuRixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQzlCLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztZQUNsQyxLQUFLLEVBQUUsV0FBVztTQUNuQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDO1lBQ2xDLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztZQUNoQyxLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDOytHQXBDVSxzQkFBc0I7bUdBQXRCLHNCQUFzQix1TkFyQnZCOzs7Ozs7Ozs7OztVQVdGLDJEQUdOLFlBQVksOEJBQ1osV0FBVywyWUFDWCxtQkFBbUIsOFZBQ25CLGlCQUFpQixtREFDakIsaUJBQWlCOzs0RkFHUixzQkFBc0I7a0JBdkJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7VUFXRjtvQkFDUixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsaUJBQWlCO3FCQUNsQjtpQkFDRjtnRkFHVSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcbmltcG9ydCB7IFNweElucHV0Q29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcblxuY29uc3QgY3RybEFwcFN0b3JlVmVyc2lvbiA9ICdhcHBTdG9yZVZlcnNpb24nO1xuY29uc3QgY3RybENoYW5uZWwgPSAnY2hhbm5lbCc7XG5jb25zdCBjdHJsTmV4dFZlcnNpb25OdW1iZXIgPSAnbmV4dFZlcnNpb25OdW1iZXInO1xuY29uc3QgY3RybFZlcnNpb25OdW1iZXIgPSAndmVyc2lvbk51bWJlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC11cGRhdGUtaW5mbycsXG4gIHRlbXBsYXRlOiBgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgeGw6Z3JpZC1jb2xzLTMgZ2FwLTNcIj5cbiAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxWZXJzaW9uTnVtYmVyXCIgW3NweExhYmVsXT1cInR4dFZlcnNpb24gfCBjYXBpdGFsaXplXCJcbiAgICAgICAgW3NweFJlYWRvbmx5XT1cInRydWVcIj48L3NweC1pbnB1dD5cbiAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxOZXh0VmVyc2lvbk51bWJlclwiIFtzcHhMYWJlbF09XCJ0eHROZXh0VmVyc2lvbiB8IGNhcGl0YWxpemVcIlxuICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxuICAgICAgPHNweC1pbnB1dCBbZm9ybUNvbnRyb2xdPVwiY3RybENvbmZpZ3VyZWRDaGFubmVsXCIgW3NweExhYmVsXT1cInR4dENoYW5uZWwgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgW3NweFJlYWRvbmx5XT1cInRydWVcIj48L3NweC1pbnB1dD5cbiAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxBcHBTdG9yZVZlcnNpb25cIiBbc3B4TGFiZWxdPVwidHh0QXBwU3RvcmVWZXJzaW9uIHwgY2FwaXRhbGl6ZVwiXG4gICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5gLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3B4VXBkYXRlSW5mb0NvbXBvbmVudCB7XG4gIGZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHR4dEFwcFN0b3JlVmVyc2lvbiE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0Q2hhbm5lbCE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0TmV4dFZlcnNpb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dFZlcnNpb24hOiBzdHJpbmc7XG4gIFxuICBnZXQgY3RybFZlcnNpb25OdW1iZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsVmVyc2lvbk51bWJlcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxOZXh0VmVyc2lvbk51bWJlcigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxOZXh0VmVyc2lvbk51bWJlcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxDaGFubmVsKSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybEFwcFN0b3JlVmVyc2lvbigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxBcHBTdG9yZVZlcnNpb24pIGFzIEZvcm1Db250cm9sOyB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgW2N0cmxBcHBTdG9yZVZlcnNpb25dOiBbbnVsbCwgW11dLFxuICAgICAgW2N0cmxDaGFubmVsXTogW251bGwsIFtdXSxcbiAgICAgIFtjdHJsTmV4dFZlcnNpb25OdW1iZXJdOiBbbnVsbCwgW11dLFxuICAgICAgW2N0cmxWZXJzaW9uTnVtYmVyXTogW251bGwsIFtdXSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZShhcHBTdG9yZVZlcnNpb246IHN0cmluZywgY2hhbm5lbDogc3RyaW5nLCBuZXh0VmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmN0cmxWZXJzaW9uTnVtYmVyLnNldFZhbHVlKHtcbiAgICAgIHZhbHVlOiB2ZXJzaW9uLFxuICAgIH0pO1xuICAgIHRoaXMuY3RybE5leHRWZXJzaW9uTnVtYmVyLnNldFZhbHVlKHtcbiAgICAgIHZhbHVlOiBuZXh0VmVyc2lvbixcbiAgICB9KTtcbiAgICB0aGlzLmN0cmxDb25maWd1cmVkQ2hhbm5lbC5zZXRWYWx1ZSh7XG4gICAgICB2YWx1ZTogY2hhbm5lbCxcbiAgICB9KTtcbiAgICB0aGlzLmN0cmxBcHBTdG9yZVZlcnNpb24uc2V0VmFsdWUoe1xuICAgICAgdmFsdWU6IGFwcFN0b3JlVmVyc2lvbixcbiAgICB9KTtcbiAgfVxufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXVwZGF0ZS1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtdXBkYXRlL3NyYy9zcHgtdXBkYXRlLWluZm8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBdUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQUVuRSxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDO0FBQzlDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUM5QixNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0FBQ2xELE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0FBd0IxQyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLElBQUksaUJBQWlCLEtBQWtCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLElBQUkscUJBQXFCLEtBQWtCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLElBQUkscUJBQXFCLEtBQWtCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFnQixDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLG1CQUFtQixLQUFrQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFnQixDQUFDLENBQUMsQ0FBQztJQUVwRyxZQUNtQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUV6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2pDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDakMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDekIsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBdUIsRUFBRSxPQUFlLEVBQUUsV0FBbUIsRUFBRSxPQUFlO1FBQ25GLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDOUIsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDO1lBQ2xDLEtBQUssRUFBRSxXQUFXO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7WUFDbEMsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1lBQ2hDLEtBQUssRUFBRSxlQUFlO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBcENVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHVOQXBCdkI7Ozs7Ozs7Ozs7O1VBV0YsMkRBR04sV0FBVywyWUFDWCxtQkFBbUIsOFZBQ25CLGlCQUFpQixtREFDakIsaUJBQWlCOzs0RkFHUixzQkFBc0I7a0JBdEJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7VUFXRjtvQkFDUixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjtxQkFDcEI7aUJBQ0E7Z0ZBR1Usa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTcHhDYXBpdGFsaXplUGlwZSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWNhcGl0YWxpemUnO1xuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1pbnB1dHMnO1xuXG5jb25zdCBjdHJsQXBwU3RvcmVWZXJzaW9uID0gJ2FwcFN0b3JlVmVyc2lvbic7XG5jb25zdCBjdHJsQ2hhbm5lbCA9ICdjaGFubmVsJztcbmNvbnN0IGN0cmxOZXh0VmVyc2lvbk51bWJlciA9ICduZXh0VmVyc2lvbk51bWJlcic7XG5jb25zdCBjdHJsVmVyc2lvbk51bWJlciA9ICd2ZXJzaW9uTnVtYmVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LXVwZGF0ZS1pbmZvJyxcbiAgdGVtcGxhdGU6IGA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cIm10LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiB4bDpncmlkLWNvbHMtMyBnYXAtM1wiPlxuICAgICAgPHNweC1pbnB1dCBbZm9ybUNvbnRyb2xdPVwiY3RybFZlcnNpb25OdW1iZXJcIiBbc3B4TGFiZWxdPVwidHh0VmVyc2lvbiB8IGNhcGl0YWxpemVcIlxuICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxuICAgICAgPHNweC1pbnB1dCBbZm9ybUNvbnRyb2xdPVwiY3RybE5leHRWZXJzaW9uTnVtYmVyXCIgW3NweExhYmVsXT1cInR4dE5leHRWZXJzaW9uIHwgY2FwaXRhbGl6ZVwiXG4gICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XG4gICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsQ29uZmlndXJlZENoYW5uZWxcIiBbc3B4TGFiZWxdPVwidHh0Q2hhbm5lbCB8IGNhcGl0YWxpemVcIlxuICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxuICAgICAgPHNweC1pbnB1dCBbZm9ybUNvbnRyb2xdPVwiY3RybEFwcFN0b3JlVmVyc2lvblwiIFtzcHhMYWJlbF09XCJ0eHRBcHBTdG9yZVZlcnNpb24gfCBjYXBpdGFsaXplXCJcbiAgICAgICAgW3NweFJlYWRvbmx5XT1cInRydWVcIj48L3NweC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPmAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNweENhcGl0YWxpemVQaXBlLFxuICAgIFNweElucHV0Q29tcG9uZW50XG5dXG59KVxuZXhwb3J0IGNsYXNzIFNweFVwZGF0ZUluZm9Db21wb25lbnQge1xuICBmb3JtITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSB0eHRBcHBTdG9yZVZlcnNpb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dENoYW5uZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dE5leHRWZXJzaW9uITogc3RyaW5nO1xuICBASW5wdXQoKSB0eHRWZXJzaW9uITogc3RyaW5nO1xuICBcbiAgZ2V0IGN0cmxWZXJzaW9uTnVtYmVyKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybS5nZXQoY3RybFZlcnNpb25OdW1iZXIpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsTmV4dFZlcnNpb25OdW1iZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsTmV4dFZlcnNpb25OdW1iZXIpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ29uZmlndXJlZENoYW5uZWwoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsQ2hhbm5lbCkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxBcHBTdG9yZVZlcnNpb24oKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsQXBwU3RvcmVWZXJzaW9uKSBhcyBGb3JtQ29udHJvbDsgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICApIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIFtjdHJsQXBwU3RvcmVWZXJzaW9uXTogW251bGwsIFtdXSxcbiAgICAgIFtjdHJsQ2hhbm5lbF06IFtudWxsLCBbXV0sXG4gICAgICBbY3RybE5leHRWZXJzaW9uTnVtYmVyXTogW251bGwsIFtdXSxcbiAgICAgIFtjdHJsVmVyc2lvbk51bWJlcl06IFtudWxsLCBbXV0sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGUoYXBwU3RvcmVWZXJzaW9uOiBzdHJpbmcsIGNoYW5uZWw6IHN0cmluZywgbmV4dFZlcnNpb246IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5jdHJsVmVyc2lvbk51bWJlci5zZXRWYWx1ZSh7XG4gICAgICB2YWx1ZTogdmVyc2lvbixcbiAgICB9KTtcbiAgICB0aGlzLmN0cmxOZXh0VmVyc2lvbk51bWJlci5zZXRWYWx1ZSh7XG4gICAgICB2YWx1ZTogbmV4dFZlcnNpb24sXG4gICAgfSk7XG4gICAgdGhpcy5jdHJsQ29uZmlndXJlZENoYW5uZWwuc2V0VmFsdWUoe1xuICAgICAgdmFsdWU6IGNoYW5uZWwsXG4gICAgfSk7XG4gICAgdGhpcy5jdHJsQXBwU3RvcmVWZXJzaW9uLnNldFZhbHVlKHtcbiAgICAgIHZhbHVlOiBhcHBTdG9yZVZlcnNpb24sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==