@softpak/components 18.6.13 → 18.6.14

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.
@@ -241,7 +241,7 @@ export class SpxAppUpdateComponent {
241
241
  }
242
242
  </form>
243
243
  </div>
244
- </ion-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.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", "spxAlertMessageSeverity", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxProgressBarComponent, selector: "spx-progress-bar", inputs: ["spxPercentage", "spxTitle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
244
+ </ion-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.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", "spxAlert", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxProgressBarComponent, selector: "spx-progress-bar", inputs: ["spxPercentage", "spxTitle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
245
245
  }
246
246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxAppUpdateComponent, decorators: [{
247
247
  type: Component,
@@ -317,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
317
317
  }], spxAppId: [{
318
318
  type: Input
319
319
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWFwcC11cGRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1hcHAtdXBkYXRlL3NweC1hcHAtdXBkYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUF1QyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUU1RCxNQUFNLHFCQUFxQixHQUFHLHVCQUF1QixDQUFDO0FBQ3RELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFDOUMsTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUIsQ0FBQztBQUN0RCxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBNkNsRCxNQUFNLE9BQU8scUJBQXFCO0lBdUJoQyxZQUNtQixNQUFjLEVBQ2QsY0FBaUMsRUFDakMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGFBQTRCO1FBTDVCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFYL0Msc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsc0JBQWlCLEdBQWUsSUFBSSxDQUFDO1FBQ3JDLGlCQUFZLEdBQVcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBVWpELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDakMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQy9CLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsS0FBa0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDaEcsSUFBSSxxQkFBcUIsS0FBa0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDeEcsSUFBSSxxQkFBcUIsS0FBa0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDeEcsSUFBSSxtQkFBbUIsS0FBa0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFcEcsSUFBSTtRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ2hCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1NBQ2pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTFDLElBQUksVUFBVSxFQUFFLFFBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNuQywrQkFBK0I7WUFDL0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUVsQixnQkFBZ0I7WUFDaEIsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDN0QsSUFBSSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUNuRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYTtnQkFDeEYsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXpELElBQUksV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNoQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO3dCQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3BCLE9BQU8sRUFBRSxHQUFHLFdBQVcsSUFBSSxXQUFXLElBQUk7cUJBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNYLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUNELGNBQWM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDaEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLEtBQUs7Z0JBQ0wsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO2FBQzlELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUk7UUFDaEIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRWxCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsc0JBQXNCO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDO29CQUNoQixXQUFXLEVBQUUsSUFBSTtvQkFDakIsVUFBVSxFQUFFLENBQUM7b0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqRSxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sa0JBQWtCO2dCQUNsQixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7b0JBQzlELElBQUksQ0FBQyxZQUFZLENBQUM7d0JBQ2hCLFVBQVUsRUFBRSxVQUFVLElBQUksQ0FBQzt3QkFDM0IsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDcEgsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDO3dCQUNoQixXQUFXLEVBQUUsSUFBSTt3QkFDakIsS0FBSzt3QkFDTCxVQUFVLEVBQUUsR0FBRzt3QkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUM7cUJBQ3BFLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUNoQixXQUFXLEVBQUUsSUFBSTtvQkFDakIsVUFBVSxFQUFFLEdBQUc7b0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUN2RyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixLQUFLO2dCQUNMLFVBQVUsRUFBRSxHQUFHO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQzthQUM5RCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNELE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRS9ELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztnQkFDOUIsS0FBSyxFQUFFLGFBQWEsRUFBRSxjQUFjO2FBQ3JDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxLQUFLO2FBQ2xDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDcEQsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztnQkFDaEMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQzlELENBQUMsQ0FBQztZQUVILENBQUM7Z0JBQ0MsTUFBTSxLQUFLLEdBQUcsZUFBZSxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3ZFLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3ZFLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMxRCxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3RELEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFBQSxDQUFDO1lBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLE1BS3BCO1FBQ0MsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsMEJBQTBCO1lBQzFCLHdDQUF3QztZQUN4QyxpQ0FBaUM7WUFDakMsT0FBTztZQUNQLEtBQUs7UUFDUCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsMERBQTBEO1FBQzFELFVBQVUsQ0FBQyxZQUFZLENBQU0saUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFDRSxVQUFVLENBQUMsVUFBVSxDQUFNLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGFBQWEsRUFDbEIsQ0FBQztnQkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQU0saUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixVQUFVLENBQUMsWUFBWSxDQUFNLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQzdELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRU8sZUFBZTtRQUNyQixVQUFVLENBQUMsVUFBVSxDQUFNLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUMzQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7K0dBdE9VLHFCQUFxQjttR0FBckIscUJBQXFCLG9tQkEvQnRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkE2QkssMkRBckNiLFdBQVcsMllBQ1gsV0FBVywrZkFDWCxtQkFBbUIsOFZBQ25CLGlCQUFpQixtREFDakIsaUJBQWlCLGdrQkFDakIsdUJBQXVCLG1HQUN2QixlQUFlOzs0RkFpQ04scUJBQXFCO2tCQTNDakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGVBQWU7cUJBQ2xCO29CQUNDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBNkJLO2lCQUNoQjs2TkFFVSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcclxuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1pbnB1dHMnO1xyXG5pbXBvcnQgeyBTcHhQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXByb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IFNweFN0b3JhZ2UsIFNweFN0b3JhZ2VLZXlFbnVtIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvcmFnZSc7XHJcbmltcG9ydCB7IERldmljZSB9IGZyb20gJ0BjYXBhY2l0b3IvZGV2aWNlJztcclxuaW1wb3J0IHsgRGVwbG95IH0gZnJvbSAnY29yZG92YS1wbHVnaW4taW9uaWMvZGlzdC9uZ3gnO1xyXG5pbXBvcnQgeyBnZXRDdXJyZW50U2NvcGUgfSBmcm9tICdAc2VudHJ5L2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbmNvbnN0IGN0cmxOZXh0VmVyc2lvbk51bWJlciA9ICdjdHJsTmV4dFZlcnNpb25OdW1iZXInO1xyXG5jb25zdCBjdHJsVmVyc2lvbk51bWJlciA9ICdjdHJsVmVyc2lvbk51bWJlcic7XHJcbmNvbnN0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCA9ICdjdHJsQ29uZmlndXJlZENoYW5uZWwnO1xyXG5jb25zdCBjdHJsQXBwU3RvcmVWZXJzaW9uID0gJ2N0cmxBcHBTdG9yZVZlcnNpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcHgtYXBwLXVwZGF0ZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIElvbmljTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNweENhcGl0YWxpemVQaXBlLFxyXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXHJcbiAgICBTcHhQcm9ncmVzc0JhckNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG5dLFxyXG4gIHRlbXBsYXRlOiBgPGlvbi1oZWFkZXI+XHJcbiAgICA8aW9uLXRvb2xiYXI+XHJcbiAgICAgIDxpb24tdGl0bGU+XHJcbiAgICAgICAge3sgdHh0VXBkYXRlIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZSB9fVxyXG4gICAgICA8L2lvbi10aXRsZT5cclxuICAgIDwvaW9uLXRvb2xiYXI+XHJcbiAgPC9pb24taGVhZGVyPlxyXG4gIFxyXG4gIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1jb250ZW50LS11cGRcIiBbZnVsbHNjcmVlbl09XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cclxuICAgICAgPHNweC1wcm9ncmVzcy1iYXIgW3NweFBlcmNlbnRhZ2VdPVwiZGVsYXllZFBlcmNlbnRhZ2VcIiBbc3B4VGl0bGVdPVwidXBkYXRlU3RhdHVzIHwgY2FwaXRhbGl6ZVwiPlxyXG4gICAgICA8L3NweC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgIEBpZiAoY3RybEFwcFN0b3JlVmVyc2lvbi52YWx1ZSAmJiBjdHJsQXBwU3RvcmVWZXJzaW9uLnZhbHVlLnZhbHVlKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiB4bDpncmlkLWNvbHMtMyBnYXAtM1wiPlxyXG4gICAgICAgICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsQXBwU3RvcmVWZXJzaW9uXCIgW3NweExhYmVsXT1cInR4dEFwcFN0b3JlVmVyc2lvbiB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxyXG4gICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxyXG4gICAgICAgICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsQ29uZmlndXJlZENoYW5uZWxcIiBbc3B4TGFiZWxdPVwidHh0Q2hhbm5lbCB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxyXG4gICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxyXG4gICAgICAgICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsVmVyc2lvbk51bWJlclwiIFtzcHhMYWJlbF09XCJ0eHRWZXJzaW9uIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XHJcbiAgICAgICAgICAgIEBpZiAoY3RybE5leHRWZXJzaW9uTnVtYmVyLnZhbHVlICYmIGN0cmxOZXh0VmVyc2lvbk51bWJlci52YWx1ZS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxOZXh0VmVyc2lvbk51bWJlclwiIFtzcHhMYWJlbF09XCJ0eHROZXh0VmVyc2lvbiB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxyXG4gICAgICAgICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9pb24tY29udGVudD5gLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3B4QXBwVXBkYXRlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzcHhIb21lVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNweElzU2lnbmVkSW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRleHRDaGVja2luZ0ZvclVwZGF0ZXMhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGV4dERvd25sb2FkaW5nVXBkYXRlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRleHRFcnJvcldoaWxlVXBkYXRpbmdBcHAhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGV4dEZpbmlzaGVkVXBkYXRpbmchOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGV4dE5vVXBkYXRlc0F2YWlsYWJsZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB0ZXh0VW5leHBlY3RlZEVycm9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR4dEFwcFN0b3JlVmVyc2lvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB0eHRDaGFubmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR4dE5leHRWZXJzaW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR4dFVwZGF0ZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB0eHRWZXJzaW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNweEFwcElkITogc3RyaW5nO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGRlbGF5ZWRQZXJjZW50YWdlOiBudW1iZXIgPSAwO1xyXG4gIHBlcmNlbnRhZ2U6IG51bWJlciA9IDA7XHJcbiAgc3luY1RydWNrSW50ZXJ2YWw6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIHVwZGF0ZVN0YXR1czogc3RyaW5nID0gdGhpcy50ZXh0Q2hlY2tpbmdGb3JVcGRhdGVzO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVwbG95OiBEZXBsb3ksXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2N0cmxOZXh0VmVyc2lvbk51bWJlcl06IFtudWxsLCBbXV0sXHJcbiAgICAgIFtjdHJsVmVyc2lvbk51bWJlcl06IFtudWxsLCBbXV0sXHJcbiAgICAgIFtjdHJsQ29uZmlndXJlZENoYW5uZWxdOiBbbnVsbCwgW11dLFxyXG4gICAgICBbY3RybEFwcFN0b3JlVmVyc2lvbl06IFtudWxsLCBbXV0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBjdHJsVmVyc2lvbk51bWJlcigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxWZXJzaW9uTnVtYmVyKSBhcyBGb3JtQ29udHJvbDsgfVxyXG4gIGdldCBjdHJsTmV4dFZlcnNpb25OdW1iZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsTmV4dFZlcnNpb25OdW1iZXIpIGFzIEZvcm1Db250cm9sOyB9XHJcbiAgZ2V0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxDb25maWd1cmVkQ2hhbm5lbCkgYXMgRm9ybUNvbnRyb2w7IH1cclxuICBnZXQgY3RybEFwcFN0b3JlVmVyc2lvbigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxBcHBTdG9yZVZlcnNpb24pIGFzIEZvcm1Db250cm9sOyB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLmRlbGF5ZWRQZXJjZW50YWdlID0gMDtcclxuICAgIHRoaXMucGVyY2VudGFnZSA9IDA7XHJcbiAgICB0aGlzLnBlcmZvcm1BdXRvbWF0aWNVcGRhdGUoKS50aGVuKCgpID0+IHsgfSk7XHJcbiAgICB0aGlzLnN0YXJ0TG9hZGVyU3luYygpO1xyXG4gICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xyXG4gICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLnRleHRDaGVja2luZ0ZvclVwZGF0ZXMpLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdG9wTG9hZGVyU3luYygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcGVyZm9ybUF1dG9tYXRpY1VwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGRldmljZUluZm8gPSBhd2FpdCBEZXZpY2UuZ2V0SW5mbygpO1xyXG5cclxuICAgIGlmIChkZXZpY2VJbmZvPy5wbGF0Zm9ybSA9PT0gJ3dlYicpIHtcclxuICAgICAgLy8gTG9jYWw/IFNraXAgdGhlIHVwZGF0ZSBwYWdlLlxyXG4gICAgICB0aGlzLmNsb3NlVXBkYXRlU2NyZWVuKCk7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUluZm8oKTtcclxuXHJcbiAgICAgIC8vIFN0YXJ0IHVwZ3JhZGVcclxuICAgICAgY29uc3QgY3VycmVudFZlcnNpb24gPSBhd2FpdCB0aGlzLmRlcGxveS5nZXRDdXJyZW50VmVyc2lvbigpO1xyXG4gICAgICBpZiAoY3VycmVudFZlcnNpb24/LmJpbmFyeVZlcnNpb25OYW1lKSB7XHJcbiAgICAgICAgY29uc3QgYmluYXJ5R3JvdXAgPSBjdXJyZW50VmVyc2lvbi5iaW5hcnlWZXJzaW9uTmFtZS5zdWJzdHJpbmcoMCwgMyk7IC8vIGUuZy4gXCIxLjRcIlxyXG4gICAgICAgIGNvbnN0IGNoYW5uZWxHcm91cCA9IGN1cnJlbnRWZXJzaW9uLmNoYW5uZWwuc3BsaXQoJy0nKVsxXS5zdWJzdHJpbmcoMCwgMyk7IC8vIGUuZy4gXCIxLjRcIlxyXG4gICAgICAgIGNvbnN0IGNoYW5uZWxUeXBlID0gY3VycmVudFZlcnNpb24uY2hhbm5lbC5zcGxpdCgnLScpWzBdO1xyXG5cclxuICAgICAgICBpZiAoYmluYXJ5R3JvdXAgIT0gY2hhbm5lbEdyb3VwKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmRlcGxveS5jb25maWd1cmUoe1xyXG4gICAgICAgICAgICBhcHBJZDogdGhpcy5zcHhBcHBJZCxcclxuICAgICAgICAgICAgY2hhbm5lbDogYCR7Y2hhbm5lbFR5cGV9LSR7YmluYXJ5R3JvdXB9LnhgXHJcbiAgICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zeW5jKCkudGhlbigoKSA9PiB7IH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3luYygpLnRoZW4oKCkgPT4geyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zeW5jKCkudGhlbigoKSA9PiB7IH0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEVuZCB1cGdyYWRlXHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcclxuICAgICAgICBjbG9zZVNjcmVlbjogdHJ1ZSxcclxuICAgICAgICBlcnJvcixcclxuICAgICAgICBwZXJjZW50YWdlOiAxMDAsXHJcbiAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0VW5leHBlY3RlZEVycm9yKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc3luYygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudXBkYXRlSW5mbygpO1xyXG5cclxuICAgICAgY29uc3QgdXBkYXRlQXZhaWxhYmxlSW5mbyA9IGF3YWl0IHRoaXMuZGVwbG95LmNoZWNrRm9yVXBkYXRlKCk7XHJcbiAgICAgIGlmICghdXBkYXRlQXZhaWxhYmxlSW5mby5hdmFpbGFibGUpIHtcclxuICAgICAgICAvLyBObyB1cGRhdGUgYXZhaWxhYmxlXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgY2xvc2VTY3JlZW46IHRydWUsXHJcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0Tm9VcGRhdGVzQXZhaWxhYmxlKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBEb3dubG9hZCB1cGRhdGVcclxuICAgICAgICBhd2FpdCB0aGlzLmRlcGxveS5zeW5jKHsgdXBkYXRlTWV0aG9kOiAnYXV0bycgfSwgKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgICAgcGVyY2VudGFnZTogcGVyY2VudGFnZSA/PyAwLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLnRleHREb3dubG9hZGluZ1VwZGF0ZSwgeyBwZXJjZW50YWdlLCB2ZXJzaW9uOiB1cGRhdGVBdmFpbGFibGVJbmZvLmJ1aWxkIH0pLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICAgIGNsb3NlU2NyZWVuOiB0cnVlLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLnRleHRFcnJvcldoaWxlVXBkYXRpbmdBcHApLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgIGNsb3NlU2NyZWVuOiB0cnVlLFxyXG4gICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0RmluaXNoZWRVcGRhdGluZywgeyB2ZXJzaW9uOiB1cGRhdGVBdmFpbGFibGVJbmZvLmJ1aWxkIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgLy8gQ2F0Y2ggdW5leHBlY3RlZCBwbHVnLWluIGVycm9yc1xyXG4gICAgICB0aGlzLmNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgY2xvc2VTY3JlZW46IHRydWUsXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgcGVyY2VudGFnZTogMTAwLFxyXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMudGV4dFVuZXhwZWN0ZWRFcnJvcilcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUluZm8oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IGF3YWl0IHRoaXMuZGVwbG95LmdldEN1cnJlbnRWZXJzaW9uKCk7XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgdGhpcy5kZXBsb3kuZ2V0Q29uZmlndXJhdGlvbigpO1xyXG4gICAgY29uc3QgdXBkYXRlQXZhaWxhYmxlSW5mbyA9IGF3YWl0IHRoaXMuZGVwbG95LmNoZWNrRm9yVXBkYXRlKCk7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRWZXJzaW9uKSB7XHJcbiAgICAgIHRoaXMuY3RybFZlcnNpb25OdW1iZXIuc2V0VmFsdWUoe1xyXG4gICAgICAgIHZhbHVlOiBjb25maWd1cmF0aW9uPy5jdXJyZW50QnVpbGRJZCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY3RybE5leHRWZXJzaW9uTnVtYmVyLnNldFZhbHVlKHtcclxuICAgICAgICB2YWx1ZTogdXBkYXRlQXZhaWxhYmxlSW5mbz8uYnVpbGRcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY3RybENvbmZpZ3VyZWRDaGFubmVsLnNldFZhbHVlKHtcclxuICAgICAgICB2YWx1ZTogY29uZmlndXJhdGlvbiA/IGNvbmZpZ3VyYXRpb24uY2hhbm5lbCA6IG51bGxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY3RybEFwcFN0b3JlVmVyc2lvbi5zZXRWYWx1ZSh7XHJcbiAgICAgICAgdmFsdWU6IGNvbmZpZ3VyYXRpb24gPyBjb25maWd1cmF0aW9uLmJpbmFyeVZlcnNpb25OYW1lIDogbnVsbFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHtcclxuICAgICAgICBjb25zdCBzY29wZSA9IGdldEN1cnJlbnRTY29wZSgpO1xyXG4gICAgICAgIHNjb3BlLnNldFRhZygndmVyc2lvbl9iaW5hcnlfY29kZScsIGN1cnJlbnRWZXJzaW9uPy5iaW5hcnlWZXJzaW9uQ29kZSk7XHJcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX2JpbmFyeV9uYW1lJywgY3VycmVudFZlcnNpb24/LmJpbmFyeVZlcnNpb25OYW1lKTtcclxuICAgICAgICBzY29wZS5zZXRUYWcoJ3ZlcnNpb25fYnVpbGRfaWQnLCBjdXJyZW50VmVyc2lvbj8uYnVpbGRJZCk7XHJcbiAgICAgICAgc2NvcGUuc2V0VGFnKCdjaGFubmVsX3R5cGUnLCBjdXJyZW50VmVyc2lvbj8uY2hhbm5lbCk7XHJcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX3NuYXBzaG90X2lkJywgY3VycmVudFZlcnNpb24/LnZlcnNpb25JZCk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLnRpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlU3RhdHVzKHN0YXR1czoge1xyXG4gICAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBjbG9zZVNjcmVlbj86IGJvb2xlYW47XHJcbiAgICBwZXJjZW50YWdlOiBudW1iZXI7XHJcbiAgfSkge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0dXMgPSBzdGF0dXMudGV4dDtcclxuICAgIHRoaXMucGVyY2VudGFnZSA9IHN0YXR1cy5wZXJjZW50YWdlO1xyXG4gICAgaWYgKHN0YXR1cy5jbG9zZVNjcmVlbikge1xyXG4gICAgICB0aGlzLmNsb3NlVXBkYXRlU2NyZWVuKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzLmVycm9yKSB7XHJcbiAgICAgIC8vIHRoaXMuYXBwU3RvcmUuZGlzcGF0Y2goXHJcbiAgICAgIC8vICAgc2hhcmVkVG9hc3RlckFjdGlvbnMuQ1JFQVRFX0VSUk9SKHtcclxuICAgICAgLy8gICAgIG1lc3NhZ2VUZXh0OiBzdGF0dXMuZXJyb3IsXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLnRpY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VVcGRhdGVTY3JlZW4oKSB7XHJcbiAgICAvLyBBbGxvd2luZyBzb21lIHRpbWUgdG8gbWFrZSBhIHNjcmVlbnNob3Qgb2YgdmVyc2lvbiBpbmZvXHJcbiAgICBTcHhTdG9yYWdlLmNsZWFyU2V0dGluZzxhbnk+KFNweFN0b3JhZ2VLZXlFbnVtLnVwZGF0ZUluUHJvZ3Jlc3MpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBTcHhTdG9yYWdlLmdldFNldHRpbmc8YW55PihTcHhTdG9yYWdlS2V5RW51bS5hZnRlclNpZ25JbikgJiZcclxuICAgICAgICB0aGlzLnNweElzU2lnbmVkSW5cclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChbU3B4U3RvcmFnZS5nZXRTZXR0aW5nPGFueT4oU3B4U3RvcmFnZUtleUVudW0uYWZ0ZXJTaWduSW4pXSk7XHJcbiAgICAgICAgU3B4U3RvcmFnZS5jbGVhclNldHRpbmc8YW55PihTcHhTdG9yYWdlS2V5RW51bS5hZnRlclNpZ25JbilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KFt0aGlzLnNweEhvbWVVcmxdKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0TG9hZGVyU3luYygpIHtcclxuICAgIFNweFN0b3JhZ2Uuc2V0U2V0dGluZzxhbnk+KFNweFN0b3JhZ2VLZXlFbnVtLnVwZGF0ZUluUHJvZ3Jlc3MsICcxJyk7XHJcbiAgICBpZiAodGhpcy5zeW5jVHJ1Y2tJbnRlcnZhbCA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnN5bmNUcnVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVsYXllZFBlcmNlbnRhZ2UgPSB0aGlzLnBlcmNlbnRhZ2U7XHJcbiAgICAgIH0sIDIwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0b3BMb2FkZXJTeW5jKCkge1xyXG4gICAgaWYgKHRoaXMuc3luY1RydWNrSW50ZXJ2YWwgIT09IG51bGwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnN5bmNUcnVja0ludGVydmFsKTtcclxuICAgICAgdGhpcy5zeW5jVHJ1Y2tJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWFwcC11cGRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1hcHAtdXBkYXRlL3NweC1hcHAtdXBkYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUF1QyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQWlCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUU1RCxNQUFNLHFCQUFxQixHQUFHLHVCQUF1QixDQUFDO0FBQ3RELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFDOUMsTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUIsQ0FBQztBQUN0RCxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBNkNsRCxNQUFNLE9BQU8scUJBQXFCO0lBdUJoQyxZQUNtQixNQUFjLEVBQ2QsY0FBaUMsRUFDakMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hC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c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcclxuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1pbnB1dHMnO1xyXG5pbXBvcnQgeyBTcHhQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXByb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IFNweFN0b3JhZ2UsIFNweFN0b3JhZ2VLZXlFbnVtIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvcmFnZSc7XHJcbmltcG9ydCB7IERldmljZSB9IGZyb20gJ0BjYXBhY2l0b3IvZGV2aWNlJztcclxuaW1wb3J0IHsgRGVwbG95IH0gZnJvbSAnY29yZG92YS1wbHVnaW4taW9uaWMvZGlzdC9uZ3gnO1xyXG5pbXBvcnQgeyBnZXRDdXJyZW50U2NvcGUgfSBmcm9tICdAc2VudHJ5L2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuXHJcbmNvbnN0IGN0cmxOZXh0VmVyc2lvbk51bWJlciA9ICdjdHJsTmV4dFZlcnNpb25OdW1iZXInO1xyXG5jb25zdCBjdHJsVmVyc2lvbk51bWJlciA9ICdjdHJsVmVyc2lvbk51bWJlcic7XHJcbmNvbnN0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCA9ICdjdHJsQ29uZmlndXJlZENoYW5uZWwnO1xyXG5jb25zdCBjdHJsQXBwU3RvcmVWZXJzaW9uID0gJ2N0cmxBcHBTdG9yZVZlcnNpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcHgtYXBwLXVwZGF0ZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIElvbmljTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNweENhcGl0YWxpemVQaXBlLFxyXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXHJcbiAgICBTcHhQcm9ncmVzc0JhckNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG5dLFxyXG4gIHRlbXBsYXRlOiBgPGlvbi1oZWFkZXI+XHJcbiAgICA8aW9uLXRvb2xiYXI+XHJcbiAgICAgIDxpb24tdGl0bGU+XHJcbiAgICAgICAge3sgdHh0VXBkYXRlIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZSB9fVxyXG4gICAgICA8L2lvbi10aXRsZT5cclxuICAgIDwvaW9uLXRvb2xiYXI+XHJcbiAgPC9pb24taGVhZGVyPlxyXG4gIFxyXG4gIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1jb250ZW50LS11cGRcIiBbZnVsbHNjcmVlbl09XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cclxuICAgICAgPHNweC1wcm9ncmVzcy1iYXIgW3NweFBlcmNlbnRhZ2VdPVwiZGVsYXllZFBlcmNlbnRhZ2VcIiBbc3B4VGl0bGVdPVwidXBkYXRlU3RhdHVzIHwgY2FwaXRhbGl6ZVwiPlxyXG4gICAgICA8L3NweC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgIEBpZiAoY3RybEFwcFN0b3JlVmVyc2lvbi52YWx1ZSAmJiBjdHJsQXBwU3RvcmVWZXJzaW9uLnZhbHVlLnZhbHVlKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiB4bDpncmlkLWNvbHMtMyBnYXAtM1wiPlxyXG4gICAgICAgICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsQXBwU3RvcmVWZXJzaW9uXCIgW3NweExhYmVsXT1cInR4dEFwcFN0b3JlVmVyc2lvbiB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxyXG4gICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxyXG4gICAgICAgICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsQ29uZmlndXJlZENoYW5uZWxcIiBbc3B4TGFiZWxdPVwidHh0Q2hhbm5lbCB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxyXG4gICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxyXG4gICAgICAgICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsVmVyc2lvbk51bWJlclwiIFtzcHhMYWJlbF09XCJ0eHRWZXJzaW9uIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XHJcbiAgICAgICAgICAgIEBpZiAoY3RybE5leHRWZXJzaW9uTnVtYmVyLnZhbHVlICYmIGN0cmxOZXh0VmVyc2lvbk51bWJlci52YWx1ZS52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxOZXh0VmVyc2lvbk51bWJlclwiIFtzcHhMYWJlbF09XCJ0eHROZXh0VmVyc2lvbiB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxyXG4gICAgICAgICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9mb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9pb24tY29udGVudD5gLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3B4QXBwVXBkYXRlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzcHhIb21lVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNweElzU2lnbmVkSW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRleHRDaGVja2luZ0ZvclVwZGF0ZXMhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGV4dERvd25sb2FkaW5nVXBkYXRlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRleHRFcnJvcldoaWxlVXBkYXRpbmdBcHAhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGV4dEZpbmlzaGVkVXBkYXRpbmchOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdGV4dE5vVXBkYXRlc0F2YWlsYWJsZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB0ZXh0VW5leHBlY3RlZEVycm9yITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR4dEFwcFN0b3JlVmVyc2lvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB0eHRDaGFubmVsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR4dE5leHRWZXJzaW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR4dFVwZGF0ZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB0eHRWZXJzaW9uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNweEFwcElkITogc3RyaW5nO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGRlbGF5ZWRQZXJjZW50YWdlOiBudW1iZXIgPSAwO1xyXG4gIHBlcmNlbnRhZ2U6IG51bWJlciA9IDA7XHJcbiAgc3luY1RydWNrSW50ZXJ2YWw6IGFueSB8IG51bGwgPSBudWxsO1xyXG4gIHVwZGF0ZVN0YXR1czogc3RyaW5nID0gdGhpcy50ZXh0Q2hlY2tpbmdGb3JVcGRhdGVzO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVwbG95OiBEZXBsb3ksXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2N0cmxOZXh0VmVyc2lvbk51bWJlcl06IFtudWxsLCBbXV0sXHJcbiAgICAgIFtjdHJsVmVyc2lvbk51bWJlcl06IFtudWxsLCBbXV0sXHJcbiAgICAgIFtjdHJsQ29uZmlndXJlZENoYW5uZWxdOiBbbnVsbCwgW11dLFxyXG4gICAgICBbY3RybEFwcFN0b3JlVmVyc2lvbl06IFtudWxsLCBbXV0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBjdHJsVmVyc2lvbk51bWJlcigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxWZXJzaW9uTnVtYmVyKSBhcyBGb3JtQ29udHJvbDsgfVxyXG4gIGdldCBjdHJsTmV4dFZlcnNpb25OdW1iZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsTmV4dFZlcnNpb25OdW1iZXIpIGFzIEZvcm1Db250cm9sOyB9XHJcbiAgZ2V0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxDb25maWd1cmVkQ2hhbm5lbCkgYXMgRm9ybUNvbnRyb2w7IH1cclxuICBnZXQgY3RybEFwcFN0b3JlVmVyc2lvbigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxBcHBTdG9yZVZlcnNpb24pIGFzIEZvcm1Db250cm9sOyB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLmRlbGF5ZWRQZXJjZW50YWdlID0gMDtcclxuICAgIHRoaXMucGVyY2VudGFnZSA9IDA7XHJcbiAgICB0aGlzLnBlcmZvcm1BdXRvbWF0aWNVcGRhdGUoKS50aGVuKCgpID0+IHsgfSk7XHJcbiAgICB0aGlzLnN0YXJ0TG9hZGVyU3luYygpO1xyXG4gICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xyXG4gICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLnRleHRDaGVja2luZ0ZvclVwZGF0ZXMpLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdG9wTG9hZGVyU3luYygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcGVyZm9ybUF1dG9tYXRpY1VwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGRldmljZUluZm8gPSBhd2FpdCBEZXZpY2UuZ2V0SW5mbygpO1xyXG5cclxuICAgIGlmIChkZXZpY2VJbmZvPy5wbGF0Zm9ybSA9PT0gJ3dlYicpIHtcclxuICAgICAgLy8gTG9jYWw/IFNraXAgdGhlIHVwZGF0ZSBwYWdlLlxyXG4gICAgICB0aGlzLmNsb3NlVXBkYXRlU2NyZWVuKCk7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUluZm8oKTtcclxuXHJcbiAgICAgIC8vIFN0YXJ0IHVwZ3JhZGVcclxuICAgICAgY29uc3QgY3VycmVudFZlcnNpb24gPSBhd2FpdCB0aGlzLmRlcGxveS5nZXRDdXJyZW50VmVyc2lvbigpO1xyXG4gICAgICBpZiAoY3VycmVudFZlcnNpb24/LmJpbmFyeVZlcnNpb25OYW1lKSB7XHJcbiAgICAgICAgY29uc3QgYmluYXJ5R3JvdXAgPSBjdXJyZW50VmVyc2lvbi5iaW5hcnlWZXJzaW9uTmFtZS5zdWJzdHJpbmcoMCwgMyk7IC8vIGUuZy4gXCIxLjRcIlxyXG4gICAgICAgIGNvbnN0IGNoYW5uZWxHcm91cCA9IGN1cnJlbnRWZXJzaW9uLmNoYW5uZWwuc3BsaXQoJy0nKVsxXS5zdWJzdHJpbmcoMCwgMyk7IC8vIGUuZy4gXCIxLjRcIlxyXG4gICAgICAgIGNvbnN0IGNoYW5uZWxUeXBlID0gY3VycmVudFZlcnNpb24uY2hhbm5lbC5zcGxpdCgnLScpWzBdO1xyXG5cclxuICAgICAgICBpZiAoYmluYXJ5R3JvdXAgIT0gY2hhbm5lbEdyb3VwKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmRlcGxveS5jb25maWd1cmUoe1xyXG4gICAgICAgICAgICBhcHBJZDogdGhpcy5zcHhBcHBJZCxcclxuICAgICAgICAgICAgY2hhbm5lbDogYCR7Y2hhbm5lbFR5cGV9LSR7YmluYXJ5R3JvdXB9LnhgXHJcbiAgICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zeW5jKCkudGhlbigoKSA9PiB7IH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3luYygpLnRoZW4oKCkgPT4geyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zeW5jKCkudGhlbigoKSA9PiB7IH0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEVuZCB1cGdyYWRlXHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcclxuICAgICAgICBjbG9zZVNjcmVlbjogdHJ1ZSxcclxuICAgICAgICBlcnJvcixcclxuICAgICAgICBwZXJjZW50YWdlOiAxMDAsXHJcbiAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0VW5leHBlY3RlZEVycm9yKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc3luYygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudXBkYXRlSW5mbygpO1xyXG5cclxuICAgICAgY29uc3QgdXBkYXRlQXZhaWxhYmxlSW5mbyA9IGF3YWl0IHRoaXMuZGVwbG95LmNoZWNrRm9yVXBkYXRlKCk7XHJcbiAgICAgIGlmICghdXBkYXRlQXZhaWxhYmxlSW5mby5hdmFpbGFibGUpIHtcclxuICAgICAgICAvLyBObyB1cGRhdGUgYXZhaWxhYmxlXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgY2xvc2VTY3JlZW46IHRydWUsXHJcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0Tm9VcGRhdGVzQXZhaWxhYmxlKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBEb3dubG9hZCB1cGRhdGVcclxuICAgICAgICBhd2FpdCB0aGlzLmRlcGxveS5zeW5jKHsgdXBkYXRlTWV0aG9kOiAnYXV0bycgfSwgKHBlcmNlbnRhZ2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgICAgcGVyY2VudGFnZTogcGVyY2VudGFnZSA/PyAwLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLnRleHREb3dubG9hZGluZ1VwZGF0ZSwgeyBwZXJjZW50YWdlLCB2ZXJzaW9uOiB1cGRhdGVBdmFpbGFibGVJbmZvLmJ1aWxkIH0pLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICAgIGNsb3NlU2NyZWVuOiB0cnVlLFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLnRleHRFcnJvcldoaWxlVXBkYXRpbmdBcHApLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgIGNsb3NlU2NyZWVuOiB0cnVlLFxyXG4gICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0RmluaXNoZWRVcGRhdGluZywgeyB2ZXJzaW9uOiB1cGRhdGVBdmFpbGFibGVJbmZvLmJ1aWxkIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgLy8gQ2F0Y2ggdW5leHBlY3RlZCBwbHVnLWluIGVycm9yc1xyXG4gICAgICB0aGlzLmNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgY2xvc2VTY3JlZW46IHRydWUsXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgcGVyY2VudGFnZTogMTAwLFxyXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMudGV4dFVuZXhwZWN0ZWRFcnJvcilcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUluZm8oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IGF3YWl0IHRoaXMuZGVwbG95LmdldEN1cnJlbnRWZXJzaW9uKCk7XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gYXdhaXQgdGhpcy5kZXBsb3kuZ2V0Q29uZmlndXJhdGlvbigpO1xyXG4gICAgY29uc3QgdXBkYXRlQXZhaWxhYmxlSW5mbyA9IGF3YWl0IHRoaXMuZGVwbG95LmNoZWNrRm9yVXBkYXRlKCk7XHJcblxyXG4gICAgaWYgKGN1cnJlbnRWZXJzaW9uKSB7XHJcbiAgICAgIHRoaXMuY3RybFZlcnNpb25OdW1iZXIuc2V0VmFsdWUoe1xyXG4gICAgICAgIHZhbHVlOiBjb25maWd1cmF0aW9uPy5jdXJyZW50QnVpbGRJZCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY3RybE5leHRWZXJzaW9uTnVtYmVyLnNldFZhbHVlKHtcclxuICAgICAgICB2YWx1ZTogdXBkYXRlQXZhaWxhYmxlSW5mbz8uYnVpbGRcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY3RybENvbmZpZ3VyZWRDaGFubmVsLnNldFZhbHVlKHtcclxuICAgICAgICB2YWx1ZTogY29uZmlndXJhdGlvbiA/IGNvbmZpZ3VyYXRpb24uY2hhbm5lbCA6IG51bGxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY3RybEFwcFN0b3JlVmVyc2lvbi5zZXRWYWx1ZSh7XHJcbiAgICAgICAgdmFsdWU6IGNvbmZpZ3VyYXRpb24gPyBjb25maWd1cmF0aW9uLmJpbmFyeVZlcnNpb25OYW1lIDogbnVsbFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHtcclxuICAgICAgICBjb25zdCBzY29wZSA9IGdldEN1cnJlbnRTY29wZSgpO1xyXG4gICAgICAgIHNjb3BlLnNldFRhZygndmVyc2lvbl9iaW5hcnlfY29kZScsIGN1cnJlbnRWZXJzaW9uPy5iaW5hcnlWZXJzaW9uQ29kZSk7XHJcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX2JpbmFyeV9uYW1lJywgY3VycmVudFZlcnNpb24/LmJpbmFyeVZlcnNpb25OYW1lKTtcclxuICAgICAgICBzY29wZS5zZXRUYWcoJ3ZlcnNpb25fYnVpbGRfaWQnLCBjdXJyZW50VmVyc2lvbj8uYnVpbGRJZCk7XHJcbiAgICAgICAgc2NvcGUuc2V0VGFnKCdjaGFubmVsX3R5cGUnLCBjdXJyZW50VmVyc2lvbj8uY2hhbm5lbCk7XHJcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX3NuYXBzaG90X2lkJywgY3VycmVudFZlcnNpb24/LnZlcnNpb25JZCk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLnRpY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlU3RhdHVzKHN0YXR1czoge1xyXG4gICAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBjbG9zZVNjcmVlbj86IGJvb2xlYW47XHJcbiAgICBwZXJjZW50YWdlOiBudW1iZXI7XHJcbiAgfSkge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0dXMgPSBzdGF0dXMudGV4dDtcclxuICAgIHRoaXMucGVyY2VudGFnZSA9IHN0YXR1cy5wZXJjZW50YWdlO1xyXG4gICAgaWYgKHN0YXR1cy5jbG9zZVNjcmVlbikge1xyXG4gICAgICB0aGlzLmNsb3NlVXBkYXRlU2NyZWVuKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3RhdHVzLmVycm9yKSB7XHJcbiAgICAgIC8vIHRoaXMuYXBwU3RvcmUuZGlzcGF0Y2goXHJcbiAgICAgIC8vICAgc2hhcmVkVG9hc3RlckFjdGlvbnMuQ1JFQVRFX0VSUk9SKHtcclxuICAgICAgLy8gICAgIG1lc3NhZ2VUZXh0OiBzdGF0dXMuZXJyb3IsXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLnRpY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VVcGRhdGVTY3JlZW4oKSB7XHJcbiAgICAvLyBBbGxvd2luZyBzb21lIHRpbWUgdG8gbWFrZSBhIHNjcmVlbnNob3Qgb2YgdmVyc2lvbiBpbmZvXHJcbiAgICBTcHhTdG9yYWdlLmNsZWFyU2V0dGluZzxhbnk+KFNweFN0b3JhZ2VLZXlFbnVtLnVwZGF0ZUluUHJvZ3Jlc3MpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBTcHhTdG9yYWdlLmdldFNldHRpbmc8YW55PihTcHhTdG9yYWdlS2V5RW51bS5hZnRlclNpZ25JbikgJiZcclxuICAgICAgICB0aGlzLnNweElzU2lnbmVkSW5cclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChbU3B4U3RvcmFnZS5nZXRTZXR0aW5nPGFueT4oU3B4U3RvcmFnZUtleUVudW0uYWZ0ZXJTaWduSW4pXSk7XHJcbiAgICAgICAgU3B4U3RvcmFnZS5jbGVhclNldHRpbmc8YW55PihTcHhTdG9yYWdlS2V5RW51bS5hZnRlclNpZ25JbilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KFt0aGlzLnNweEhvbWVVcmxdKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0TG9hZGVyU3luYygpIHtcclxuICAgIFNweFN0b3JhZ2Uuc2V0U2V0dGluZzxhbnk+KFNweFN0b3JhZ2VLZXlFbnVtLnVwZGF0ZUluUHJvZ3Jlc3MsICcxJyk7XHJcbiAgICBpZiAodGhpcy5zeW5jVHJ1Y2tJbnRlcnZhbCA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnN5bmNUcnVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGVsYXllZFBlcmNlbnRhZ2UgPSB0aGlzLnBlcmNlbnRhZ2U7XHJcbiAgICAgIH0sIDIwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0b3BMb2FkZXJTeW5jKCkge1xyXG4gICAgaWYgKHRoaXMuc3luY1RydWNrSW50ZXJ2YWwgIT09IG51bGwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnN5bmNUcnVja0ludGVydmFsKTtcclxuICAgICAgdGhpcy5zeW5jVHJ1Y2tJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -68,7 +68,7 @@ export class SpxCheckDigitComponent {
68
68
  return formControl._rawValidators;
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxCheckDigitComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxCheckDigitComponent, isStandalone: true, selector: "spx-check-digit", inputs: { txtCheckDigit: "txtCheckDigit", txtContainer: "txtContainer", txtPrefix: "txtPrefix" }, viewQueries: [{ propertyName: "ctrlContainerNumberRef", first: true, predicate: ["ctrlContainerNumberRef"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\">\r\n <spx-input\r\n #ctrlContainerNumberRef\r\n [formControl]=\"ctrlContainerNumber\"\r\n [spxAutofocus]=\"true\"\r\n [spxCapitalize]=\"true\"\r\n [spxLabel]=\"txtContainer\"\r\n [spxPattern]=\"'[0-9]*'\"\r\n [spxRequired]=\"true\"\r\n [spxShowValidationMessages]=\"ctrlContainerNumber && ctrlContainerNumber.errors && ctrlContainerNumber.touched\"\r\n [spxType]=\"inputTypeOverlayNumber\"\r\n [spxValidators]=\"getRawValidators(ctrlContainerNumber)\">\r\n <spx-validate-control [control]=\"ctrlContainerNumber\" [label]=\"txtContainer\"></spx-validate-control>\r\n </spx-input>\r\n <spx-input\r\n [formControl]=\"ctrlContainerPrefix\"\r\n [spxCapitalize]=\"true\"\r\n [spxLabel]=\"txtPrefix\"\r\n [spxRequired]=\"true\"\r\n [spxShowValidationMessages]=\"ctrlContainerPrefix && ctrlContainerPrefix.errors && ctrlContainerPrefix.touched\"\r\n [spxType]=\"inputTypeText\"\r\n [spxValidators]=\"getRawValidators(ctrlContainerPrefix)\">\r\n <spx-validate-control [control]=\"ctrlContainerPrefix\" [label]=\"txtPrefix\"></spx-validate-control>\r\n </spx-input>\r\n @if (ctrlCheckDigit.value) {\r\n <spx-input\r\n [formControl]=\"ctrlCheckDigit\"\r\n [spxLabel]=\"txtCheckDigit\"\r\n [spxReadonly]=\"true\"\r\n [spxType]=\"inputTypeText\">\r\n </spx-input>\r\n }\r\n</form>", 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: "component", type: SpxValidateControlComponent, selector: "spx-validate-control", inputs: ["control", "label", "submitTried"] }, { 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", "spxAlertMessageSeverity", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxCheckDigitComponent, isStandalone: true, selector: "spx-check-digit", inputs: { txtCheckDigit: "txtCheckDigit", txtContainer: "txtContainer", txtPrefix: "txtPrefix" }, viewQueries: [{ propertyName: "ctrlContainerNumberRef", first: true, predicate: ["ctrlContainerNumberRef"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\">\r\n <spx-input\r\n #ctrlContainerNumberRef\r\n [formControl]=\"ctrlContainerNumber\"\r\n [spxAutofocus]=\"true\"\r\n [spxCapitalize]=\"true\"\r\n [spxLabel]=\"txtContainer\"\r\n [spxPattern]=\"'[0-9]*'\"\r\n [spxRequired]=\"true\"\r\n [spxShowValidationMessages]=\"ctrlContainerNumber && ctrlContainerNumber.errors && ctrlContainerNumber.touched\"\r\n [spxType]=\"inputTypeOverlayNumber\"\r\n [spxValidators]=\"getRawValidators(ctrlContainerNumber)\">\r\n <spx-validate-control [control]=\"ctrlContainerNumber\" [label]=\"txtContainer\"></spx-validate-control>\r\n </spx-input>\r\n <spx-input\r\n [formControl]=\"ctrlContainerPrefix\"\r\n [spxCapitalize]=\"true\"\r\n [spxLabel]=\"txtPrefix\"\r\n [spxRequired]=\"true\"\r\n [spxShowValidationMessages]=\"ctrlContainerPrefix && ctrlContainerPrefix.errors && ctrlContainerPrefix.touched\"\r\n [spxType]=\"inputTypeText\"\r\n [spxValidators]=\"getRawValidators(ctrlContainerPrefix)\">\r\n <spx-validate-control [control]=\"ctrlContainerPrefix\" [label]=\"txtPrefix\"></spx-validate-control>\r\n </spx-input>\r\n @if (ctrlCheckDigit.value) {\r\n <spx-input\r\n [formControl]=\"ctrlCheckDigit\"\r\n [spxLabel]=\"txtCheckDigit\"\r\n [spxReadonly]=\"true\"\r\n [spxType]=\"inputTypeText\">\r\n </spx-input>\r\n }\r\n</form>", 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: "component", type: SpxValidateControlComponent, selector: "spx-validate-control", inputs: ["control", "label", "submitTried"] }, { 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", "spxAlert", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
72
72
  }
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxCheckDigitComponent, decorators: [{
74
74
  type: Component,
@@ -84,7 +84,7 @@ export class SpxAutocompleteSearchComponent {
84
84
  });
85
85
  }
86
86
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxAutocompleteSearchComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxAutocompleteSearchComponent, isStandalone: true, selector: "spx-autocomplete-search", inputs: { spxSuggestions: "spxSuggestions", spxField: "spxField", txtOptions: "txtOptions", txtQuery: "txtQuery", txtSubmit: "txtSubmit", spxValuePair: "spxValuePair" }, outputs: { spxCancel: "spxCancel", spxSearch: "spxSearch", spxSubmit: "spxSubmit" }, ngImport: i0, template: "<form class=\"bg-black fixed pt-16 z-50 top-0 left-0 right-0 bottom-0\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"h-full w-full px-3 flex flex-col gap-3\">\r\n <div class=\"grow flex flex-col gap-3 overflow-y-auto\">\r\n <spx-input [formControl]=\"ctrlQuery\" [spxLabel]=\"txtQuery\" [spxType]=\"inputTypeText\">\r\n </spx-input>\r\n <spx-input [formControl]=\"ctrlOptions\" [spxLabel]=\"txtOptions\" [spxSuggestions]=\"spxSuggestions\"\r\n [spxType]=\"inputTypeRadio\">\r\n </spx-input>\r\n </div>\r\n <div class=\"py-3 flex flex-col gap-3\">\r\n <spx-button [spxFullWidth]=\"true\" [spxSeverity]=\"severitySuccess\">\r\n Save\r\n </spx-button>\r\n <spx-button [spxFullWidth]=\"true\" [spxSeverity]=\"severityError\" [spxType]=\"'button'\" (spxClick)=\"onCancel()\">\r\n Cancel\r\n </spx-button>\r\n </div>\r\n </div>\r\n</form>", 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: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { 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", "spxAlertMessageSeverity", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpxAutocompleteSearchComponent, isStandalone: true, selector: "spx-autocomplete-search", inputs: { spxSuggestions: "spxSuggestions", spxField: "spxField", txtOptions: "txtOptions", txtQuery: "txtQuery", txtSubmit: "txtSubmit", spxValuePair: "spxValuePair" }, outputs: { spxCancel: "spxCancel", spxSearch: "spxSearch", spxSubmit: "spxSubmit" }, ngImport: i0, template: "<form class=\"bg-black fixed pt-16 z-50 top-0 left-0 right-0 bottom-0\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"h-full w-full px-3 flex flex-col gap-3\">\r\n <div class=\"grow flex flex-col gap-3 overflow-y-auto\">\r\n <spx-input [formControl]=\"ctrlQuery\" [spxLabel]=\"txtQuery\" [spxType]=\"inputTypeText\">\r\n </spx-input>\r\n <spx-input [formControl]=\"ctrlOptions\" [spxLabel]=\"txtOptions\" [spxSuggestions]=\"spxSuggestions\"\r\n [spxType]=\"inputTypeRadio\">\r\n </spx-input>\r\n </div>\r\n <div class=\"py-3 flex flex-col gap-3\">\r\n <spx-button [spxFullWidth]=\"true\" [spxSeverity]=\"severitySuccess\">\r\n Save\r\n </spx-button>\r\n <spx-button [spxFullWidth]=\"true\" [spxSeverity]=\"severityError\" [spxType]=\"'button'\" (spxClick)=\"onCancel()\">\r\n Cancel\r\n </spx-button>\r\n </div>\r\n </div>\r\n</form>", 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: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { 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", "spxAlert", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }] }); }
88
88
  }
89
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxAutocompleteSearchComponent, decorators: [{
90
90
  type: Component,
@@ -177,7 +177,7 @@ export class SpxFormViewComponent {
177
177
  </spx-button>
178
178
  }
179
179
  </div>
180
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: SpxAutocompleteSearchComponent, selector: "spx-autocomplete-search", inputs: ["spxSuggestions", "spxField", "txtOptions", "txtQuery", "txtSubmit", "spxValuePair"], outputs: ["spxCancel", "spxSearch", "spxSubmit"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxFormSectionComponent, selector: "spx-form-section", inputs: ["spxIndex", "spxIndexSecondary", "spxTitle", "spxShowTitle"] }, { 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", "spxAlertMessageSeverity", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxValidateControlComponent, selector: "spx-validate-control", inputs: ["control", "label", "submitTried"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
180
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: SpxAutocompleteSearchComponent, selector: "spx-autocomplete-search", inputs: ["spxSuggestions", "spxField", "txtOptions", "txtQuery", "txtSubmit", "spxValuePair"], outputs: ["spxCancel", "spxSearch", "spxSubmit"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxFormSectionComponent, selector: "spx-form-section", inputs: ["spxIndex", "spxIndexSecondary", "spxTitle", "spxShowTitle"] }, { 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", "spxAlert", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxValidateControlComponent, selector: "spx-validate-control", inputs: ["control", "label", "submitTried"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
181
181
  }
182
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxFormViewComponent, decorators: [{
183
183
  type: Component,
@@ -294,4 +294,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
294
294
  type: ViewChildren,
295
295
  args: [SpxInputComponent]
296
296
  }] } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUF3QixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0csT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBMkMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0csT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBb0dwRSxNQUFNLE9BQU8sb0JBQW9CO0lBb0IvQixZQUFZLENBQUMsR0FBVztRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFv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cUZOLG9CQUFvQjtrQkFqR2hDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLDhCQUE4Qjt3QkFDOUIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQiwyQkFBMkI7d0JBQzNCLGVBQWU7cUJBQ2xCO29CQUNDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUZYO2lCQUNBO2dGQUVVLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQzBCLFNBQVM7c0JBQXpDLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcHhGb3JtU2VjdGlvbkkgfSBmcm9tICcuL3NweC1mb3JtLXNlY3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXNlY3Rpb24nO1xyXG5pbXBvcnQgeyBTcHhJbnB1dENvbXBvbmVudCwgU3B4SW5wdXRUeXBlRW51bSwgU3B4VmFsdWVQYWlyIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcclxuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3B4Rm9ybUZpZWxkSSB9IGZyb20gJy4vc3B4LWZvcm0tZmllbGQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3B4QXV0b2NvbXBsZXRlU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9zcHgtYXV0b2NvbXBsZXRlLXNlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFNweEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWJ1dHRvbic7XHJcbmltcG9ydCB7IFNweEZvcm1JIH0gZnJvbSAnLi9zcHgtZm9ybS5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcHgtZm9ybS12aWV3JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNweEF1dG9jb21wbGV0ZVNlYXJjaENvbXBvbmVudCxcclxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFNweENhcGl0YWxpemVQaXBlLFxyXG4gICAgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQsXHJcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcclxuICAgIFNweFZhbGlkYXRlQ29udHJvbENvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG5dLFxyXG4gIHRlbXBsYXRlOiBgQGlmIChhdXRvY29tcGxldGVGaWVsZCkge1xyXG4gIDxzcHgtYXV0b2NvbXBsZXRlLXNlYXJjaFxyXG4gICAgW3NweEZpZWxkXT1cImF1dG9jb21wbGV0ZUZpZWxkXCJcclxuICAgIFtzcHhTdWdnZXN0aW9uc109XCJ0aGlzLnNweFN1Z2dlc3Rpb25zW2F1dG9jb21wbGV0ZUZpZWxkLmtleV1cIlxyXG4gICAgW3NweFZhbHVlUGFpcl09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChhdXRvY29tcGxldGVGaWVsZC5rZXkpKS52YWx1ZVwiXHJcbiAgICBbdHh0T3B0aW9uc109XCInT3B0aW9ucydcIlxyXG4gICAgW3R4dFF1ZXJ5XT1cIidRdWVyeSdcIlxyXG4gICAgW3R4dFN1Ym1pdF09XCInU2F2ZSdcIlxyXG4gICAgKHNweENhbmNlbCk9XCJvbkF1dG9jb21wbGV0ZUNhbmNlbCgpXCJcclxuICAgIChzcHhTZWFyY2gpPVwib25BdXRvY29tcGxldGVTZWFyY2goJGV2ZW50KVwiXHJcbiAgICAoc3B4U3VibWl0KT1cIm9uQXV0b2NvbXBsZXRlU2F2ZSgkZXZlbnQpXCI+XHJcbiAgPC9zcHgtYXV0b2NvbXBsZXRlLXNlYXJjaD5cclxufVxyXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxyXG4gIEBmb3IgKHNweFNlY3Rpb24gb2Ygc3B4Rm9ybS5zZWN0aW9uczsgdHJhY2sgc3B4U2VjdGlvbjsgbGV0IHNweFNlY3Rpb25JbmRleCA9ICRpbmRleCkge1xyXG4gICAgPHNweC1mb3JtLXNlY3Rpb25cclxuICAgICAgW3NweFNob3dUaXRsZV09XCIhc3B4U2VjdGlvbi5zaG93VGl0bGUgfHwgc3B4U2VjdGlvbi5zaG93VGl0bGUoKVwiXHJcbiAgICAgIFtzcHhJbmRleF09XCJzcHhTZWN0aW9uSW5kZXggKyAxXCJcclxuICAgICAgW3NweFRpdGxlXT1cInNweFNlY3Rpb24udGl0bGUgPyAoc3B4U2VjdGlvbi50aXRsZSgpIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZSkgOiB1bmRlZmluZWRcIj5cclxuICAgICAgQGZvciAoc3B4RmllbGQgb2Ygc3B4U2VjdGlvbi5maWVsZHM7IHRyYWNrIHNweEZpZWxkOyBsZXQgc3B4RmllbGRJbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgIEBpZiAoc3B4RmllbGQuc2hvdyA9PT0gdW5kZWZpbmVkIHx8IHNweEZpZWxkLnNob3coKSkge1xyXG4gICAgICAgICAgQGlmIChzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVCdXR0b24pIHtcclxuICAgICAgICAgICAgPHNweC1idXR0b25cclxuICAgICAgICAgICAgICBbc3B4RnVsbFdpZHRoXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtzcHhTZXZlcml0eV09XCJzcHhGaWVsZC5zZXZlcml0eSA/IHNweEZpZWxkLnNldmVyaXR5KCkgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgIFtzcHhUeXBlXT1cIididXR0b24nXCJcclxuICAgICAgICAgICAgICAoc3B4Q2xpY2spPVwib25DbGljayhzcHhGaWVsZClcIlxyXG4gICAgICAgICAgICA+e3sgKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCB0cmFuc2xhdGUgIHwgY2FwaXRhbGl6ZSB9fTwvc3B4LWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoc3B4RmllbGQudHlwZSgpID09PSB0eXBlT3ZlcmxheSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVPdmVybGF5TnVtYmVyIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUZsb2F0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWJlciB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVUZXh0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVOdW1lcmljS2V5Ym9hcmQpIHtcclxuICAgICAgICAgICAgPHNweC1pbnB1dFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiXHJcbiAgICAgICAgICAgICAgW3NweEF1dG9mb2N1c109XCJzcHhGaWVsZC5hdXRvZm9jdXMgPyBzcHhGaWVsZC5hdXRvZm9jdXMoKSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbc3B4Q2FwaXRhbGl6ZV09XCJzcHhGaWVsZC5jYXBpdGFsaXplID8gc3B4RmllbGQuY2FwaXRhbGl6ZSgpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzcHhMYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IHRyYW5zbGF0ZSAgfCBjYXBpdGFsaXplXCJcclxuICAgICAgICAgICAgICBbc3B4TmFtZV09XCJzcHhGaWVsZC5rZXlcIlxyXG4gICAgICAgICAgICAgIFtzcHhQYXR0ZXJuXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWVyaWNLZXlib2FyZCA/ICdcXFxcZConIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxyXG4gICAgICAgICAgICAgIFtzcHhTaG93U2VhcmNoXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgW3NweFNob3dIZWxwXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbc3B4U2hvd1ZhbGlkYXRpb25NZXNzYWdlc109XCJ0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLmVycm9ycyAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEudG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgW3NweFN0ZXBdPVwic3B4RmllbGQuc3RlcCA/IHNweEZpZWxkLnN0ZXAoKSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgW3NweFR5cGVdPVwic3B4RmllbGQudHlwZSgpXCJcclxuICAgICAgICAgICAgICBbc3B4VmFsaWRhdG9yc109XCJnZXRSYXdWYWxpZGF0b3JzKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxyXG4gICAgICAgICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcclxuICAgICAgICAgICAgICAoc3B4Qmx1cik9XCJvbkJsdXIoc3B4RmllbGQpXCJcclxuICAgICAgICAgICAgICAoc3B4U2VhcmNoKT1cIm9uU2VhcmNoKHNweEZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgIDxzcHgtdmFsaWRhdGUtY29udHJvbCBbY29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiIFtsYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KXwgdHJhbnNsYXRlICB8IGNhcGl0YWxpemVcIj48L3NweC12YWxpZGF0ZS1jb250cm9sPlxyXG4gICAgICAgICAgICA8L3NweC1pbnB1dD5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoc3B4RmllbGQudHlwZSgpID09PSB0eXBlUmFkaW8pIHtcclxuICAgICAgICAgICAgPHNweC1pbnB1dFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiXHJcbiAgICAgICAgICAgICAgW3NweExhYmVsXT1cIihzcHhGaWVsZC5sYWJlbCA/IHNweEZpZWxkLmxhYmVsKCkgOiBzcHhGaWVsZC5rZXkpIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW3NweE5hbWVdPVwic3B4RmllbGQua2V5XCJcclxuICAgICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxyXG4gICAgICAgICAgICAgIFtzcHhTaG93SGVscF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW3NweFNob3dWYWxpZGF0aW9uTWVzc2FnZXNdPVwidGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS5lcnJvcnMgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcclxuICAgICAgICAgICAgICBbc3B4VHlwZV09XCJ0eXBlUmFkaW9cIlxyXG4gICAgICAgICAgICAgIFtzcHhWYWxpZGF0b3JzXT1cImdldFJhd1ZhbGlkYXRvcnModGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiPlxyXG4gICAgICAgICAgICAgIDxzcHgtdmFsaWRhdGUtY29udHJvbCBbY29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiIFtsYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIj48L3NweC12YWxpZGF0ZS1jb250cm9sPlxyXG4gICAgICAgICAgICA8L3NweC1pbnB1dD5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvc3B4LWZvcm0tc2VjdGlvbj5cclxuICB9XHJcblxyXG4gIEBmb3IgKHNweEJ1dHRvbiBvZiBzcHhGb3JtLmJ1dHRvbnM7IHRyYWNrIHNweEJ1dHRvbikge1xyXG4gICAgPHNweC1idXR0b25cclxuICAgICAgW3NweEZ1bGxXaWR0aF09XCJ0cnVlXCJcclxuICAgICAgW3NweFNldmVyaXR5XT1cInNweEJ1dHRvbi5zZXZlcml0eVwiXHJcbiAgICAgIFtzcHhUeXBlXT1cInNweEJ1dHRvbi50eXBlXCJcclxuICAgICAgKHNweENsaWNrKT1cInNweEJ1dHRvbi5vbkNsaWNrID8gc3B4QnV0dG9uLm9uQ2xpY2soKSA6IHVuZGVmaW5lZFwiPlxyXG4gICAgICB7eyAoKHNweEJ1dHRvbiAmJiBzcHhCdXR0b24ubGFiZWwpID8gc3B4QnV0dG9uLmxhYmVsKCkgOiAnJykgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplIH19XHJcbiAgICA8L3NweC1idXR0b24+XHJcbiAgfVxyXG48L2Rpdj5cclxuYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNweEZvcm1WaWV3Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzcHhGb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc3B4Rm9ybSE6IFNweEZvcm1JO1xyXG4gIEBJbnB1dCgpIHNweFN1Z2dlc3Rpb25zITogYW55O1xyXG4gIEBPdXRwdXQoKSBzcHhCbHVyOiBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PigpO1xyXG4gIEBPdXRwdXQoKSBzcHhDbGljazogRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4oKTtcclxuICBAT3V0cHV0KCkgc3B4U2VhcmNoOiBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PigpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oU3B4SW5wdXRDb21wb25lbnQpIHNweElucHV0cyE6IFF1ZXJ5TGlzdDxTcHhJbnB1dENvbXBvbmVudD47XHJcbiAgYXV0b2NvbXBsZXRlRmllbGQ/OiBTcHhGb3JtRmllbGRJO1xyXG5cclxuICB0eXBlQXV0b2NvbXBsZXRlID0gU3B4SW5wdXRUeXBlRW51bS5hdXRvY29tcGxldGU7XHJcbiAgdHlwZUJ1dHRvbiA9IFNweElucHV0VHlwZUVudW0uYnV0dG9uO1xyXG4gIHR5cGVGbG9hdCA9IFNweElucHV0VHlwZUVudW0uZmxvYXQ7XHJcbiAgdHlwZU51bWJlciA9IFNweElucHV0VHlwZUVudW0ubnVtYmVyO1xyXG4gIHR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XHJcbiAgdHlwZVRleHQgPSBTcHhJbnB1dFR5cGVFbnVtLnRleHQ7XHJcbiAgdHlwZU51bWVyaWNLZXlib2FyZCA9IFNweElucHV0VHlwZUVudW0udGV4dE51bWVyaWNLZXlib2FyZDtcclxuICB0eXBlT3ZlcmxheSA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheTtcclxuICB0eXBlT3ZlcmxheU51bWJlciA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheU51bWJlcjtcclxuXHJcbiAgc2V0QXV0b2ZvY3VzKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc3B4SW5wdXRzLmZpbmQoaW5wdXQgPT4gaW5wdXQuc3B4TmFtZSA9PT0ga2V5KTtcclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICBmaWVsZC5zZXRGb2N1c0luKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IFNweEZvcm1GaWVsZEkpIHtcclxuICAgIHRoaXMuc3B4Qmx1ci5lbWl0KHtcclxuICAgICAgZmllbGQsXHJcbiAgICAgIHZhbHVlUGFpcjogdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KGZpZWxkLmtleSkhLnZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XHJcbiAgICB0aGlzLnNweENsaWNrLmVtaXQoe1xyXG4gICAgICBmaWVsZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BdXRvY29tcGxldGVDYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgb25BdXRvY29tcGxldGVTZWFyY2godmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55Pik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlRmllbGQpIHtcclxuICAgICAgdGhpcy5zcHhTZWFyY2guZW1pdCh7XHJcbiAgICAgICAgZmllbGQ6IHRoaXMuYXV0b2NvbXBsZXRlRmllbGQsXHJcbiAgICAgICAgdmFsdWVQYWlyLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQXV0b2NvbXBsZXRlU2F2ZSh2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+KSB7XHJcbiAgICB0aGlzLnNweEZvcm1Hcm91cC5nZXQodGhpcy5hdXRvY29tcGxldGVGaWVsZCEua2V5KT8uc2V0VmFsdWUodmFsdWVQYWlyKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChmaWVsZDogU3B4Rm9ybUZpZWxkSSkge1xyXG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZCA9IGZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmF3VmFsaWRhdG9ycyhmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGVcclxuICAgIHJldHVybiAoZm9ybUNvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIGhhc1JlcXVpcmVkRmllbGQoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIGlmIChhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGFic3RyYWN0Q29udHJvbC52YWxpZGF0b3Ioe30gYXMgQWJzdHJhY3RDb250cm9sKTtcclxuICAgICAgaWYgKHZhbGlkYXRvciAmJiB2YWxpZGF0b3JbJ3JlcXVpcmVkJ10pIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbnRyb2xOYW1lIGluIChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXSkge1xyXG4gICAgICAgIGlmICgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ11bY29udHJvbE5hbWVdKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEZpZWxkKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGluaXRpYWxGb3JtVmFsdWUoc2VjdGlvbnM6IFNweEZvcm1TZWN0aW9uSVtdKSB7XHJcbiAgICBjb25zdCBmb3JtT2JqZWN0OiBhbnkgPSB7fTtcclxuICAgIHNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICAgIGZvcm1PYmplY3RbZmllbGQua2V5XSA9IFtmaWVsZC5kZWZhdWx0VmFsdWUgPyBmaWVsZC5kZWZhdWx0VmFsdWUoKSA6IG51bGwsIGZpZWxkLnZhbGlkYXRvcnMgPyBbLi4uZmllbGQudmFsaWRhdG9ycygpXSA6IFtdXTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtT2JqZWN0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUZvcm0oZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBzZWN0aW9uczogU3B4Rm9ybVNlY3Rpb25JW10pOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIGZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuaW5pdGlhbEZvcm1WYWx1ZShzZWN0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWZvcm0tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldy9zcHgtZm9ybS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUF3QixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0csT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBMkMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0csT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7O0FBb0dwRSxNQUFNLE9BQU8sb0JBQW9CO0lBb0IvQixZQUFZLENBQUMsR0FBVztRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFv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cUZOLG9CQUFvQjtrQkFqR2hDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLDhCQUE4Qjt3QkFDOUIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQiwyQkFBMkI7d0JBQzNCLGVBQWU7cUJBQ2xCO29CQUNDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUZYO2lCQUNBO2dGQUVVLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQzBCLFNBQVM7c0JBQXpDLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcHhGb3JtU2VjdGlvbkkgfSBmcm9tICcuL3NweC1mb3JtLXNlY3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXNlY3Rpb24nO1xyXG5pbXBvcnQgeyBTcHhJbnB1dENvbXBvbmVudCwgU3B4SW5wdXRUeXBlRW51bSwgU3B4VmFsdWVQYWlyIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcclxuaW1wb3J0IHsgU3B4Q2FwaXRhbGl6ZVBpcGUgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1jYXBpdGFsaXplJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3B4Rm9ybUZpZWxkSSB9IGZyb20gJy4vc3B4LWZvcm0tZmllbGQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3B4QXV0b2NvbXBsZXRlU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9zcHgtYXV0b2NvbXBsZXRlLXNlYXJjaC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFNweEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWJ1dHRvbic7XHJcbmltcG9ydCB7IFNweEZvcm1JIH0gZnJvbSAnLi9zcHgtZm9ybS5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcHgtZm9ybS12aWV3JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNweEF1dG9jb21wbGV0ZVNlYXJjaENvbXBvbmVudCxcclxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFNweENhcGl0YWxpemVQaXBlLFxyXG4gICAgU3B4Rm9ybVNlY3Rpb25Db21wb25lbnQsXHJcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcclxuICAgIFNweFZhbGlkYXRlQ29udHJvbENvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG5dLFxyXG4gIHRlbXBsYXRlOiBgQGlmIChhdXRvY29tcGxldGVGaWVsZCkge1xyXG4gIDxzcHgtYXV0b2NvbXBsZXRlLXNlYXJjaFxyXG4gICAgW3NweEZpZWxkXT1cImF1dG9jb21wbGV0ZUZpZWxkXCJcclxuICAgIFtzcHhTdWdnZXN0aW9uc109XCJ0aGlzLnNweFN1Z2dlc3Rpb25zW2F1dG9jb21wbGV0ZUZpZWxkLmtleV1cIlxyXG4gICAgW3NweFZhbHVlUGFpcl09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChhdXRvY29tcGxldGVGaWVsZC5rZXkpKS52YWx1ZVwiXHJcbiAgICBbdHh0T3B0aW9uc109XCInT3B0aW9ucydcIlxyXG4gICAgW3R4dFF1ZXJ5XT1cIidRdWVyeSdcIlxyXG4gICAgW3R4dFN1Ym1pdF09XCInU2F2ZSdcIlxyXG4gICAgKHNweENhbmNlbCk9XCJvbkF1dG9jb21wbGV0ZUNhbmNlbCgpXCJcclxuICAgIChzcHhTZWFyY2gpPVwib25BdXRvY29tcGxldGVTZWFyY2goJGV2ZW50KVwiXHJcbiAgICAoc3B4U3VibWl0KT1cIm9uQXV0b2NvbXBsZXRlU2F2ZSgkZXZlbnQpXCI+XHJcbiAgPC9zcHgtYXV0b2NvbXBsZXRlLXNlYXJjaD5cclxufVxyXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxyXG4gIEBmb3IgKHNweFNlY3Rpb24gb2Ygc3B4Rm9ybS5zZWN0aW9uczsgdHJhY2sgc3B4U2VjdGlvbjsgbGV0IHNweFNlY3Rpb25JbmRleCA9ICRpbmRleCkge1xyXG4gICAgPHNweC1mb3JtLXNlY3Rpb25cclxuICAgICAgW3NweFNob3dUaXRsZV09XCIhc3B4U2VjdGlvbi5zaG93VGl0bGUgfHwgc3B4U2VjdGlvbi5zaG93VGl0bGUoKVwiXHJcbiAgICAgIFtzcHhJbmRleF09XCJzcHhTZWN0aW9uSW5kZXggKyAxXCJcclxuICAgICAgW3NweFRpdGxlXT1cInNweFNlY3Rpb24udGl0bGUgPyAoc3B4U2VjdGlvbi50aXRsZSgpIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZSkgOiB1bmRlZmluZWRcIj5cclxuICAgICAgQGZvciAoc3B4RmllbGQgb2Ygc3B4U2VjdGlvbi5maWVsZHM7IHRyYWNrIHNweEZpZWxkOyBsZXQgc3B4RmllbGRJbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgIEBpZiAoc3B4RmllbGQuc2hvdyA9PT0gdW5kZWZpbmVkIHx8IHNweEZpZWxkLnNob3coKSkge1xyXG4gICAgICAgICAgQGlmIChzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVCdXR0b24pIHtcclxuICAgICAgICAgICAgPHNweC1idXR0b25cclxuICAgICAgICAgICAgICBbc3B4RnVsbFdpZHRoXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtzcHhTZXZlcml0eV09XCJzcHhGaWVsZC5zZXZlcml0eSA/IHNweEZpZWxkLnNldmVyaXR5KCkgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgIFtzcHhUeXBlXT1cIididXR0b24nXCJcclxuICAgICAgICAgICAgICAoc3B4Q2xpY2spPVwib25DbGljayhzcHhGaWVsZClcIlxyXG4gICAgICAgICAgICA+e3sgKHNweEZpZWxkLmxhYmVsID8gc3B4RmllbGQubGFiZWwoKSA6IHNweEZpZWxkLmtleSkgfCB0cmFuc2xhdGUgIHwgY2FwaXRhbGl6ZSB9fTwvc3B4LWJ1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoc3B4RmllbGQudHlwZSgpID09PSB0eXBlT3ZlcmxheSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVPdmVybGF5TnVtYmVyIHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUZsb2F0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWJlciB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVUZXh0IHx8IHNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZSB8fCBzcHhGaWVsZC50eXBlKCkgPT09IHR5cGVOdW1lcmljS2V5Ym9hcmQpIHtcclxuICAgICAgICAgICAgPHNweC1pbnB1dFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiXHJcbiAgICAgICAgICAgICAgW3NweEF1dG9mb2N1c109XCJzcHhGaWVsZC5hdXRvZm9jdXMgPyBzcHhGaWVsZC5hdXRvZm9jdXMoKSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbc3B4Q2FwaXRhbGl6ZV09XCJzcHhGaWVsZC5jYXBpdGFsaXplID8gc3B4RmllbGQuY2FwaXRhbGl6ZSgpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzcHhMYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IHRyYW5zbGF0ZSAgfCBjYXBpdGFsaXplXCJcclxuICAgICAgICAgICAgICBbc3B4TmFtZV09XCJzcHhGaWVsZC5rZXlcIlxyXG4gICAgICAgICAgICAgIFtzcHhQYXR0ZXJuXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZU51bWVyaWNLZXlib2FyZCA/ICdcXFxcZConIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxyXG4gICAgICAgICAgICAgIFtzcHhTaG93U2VhcmNoXT1cInNweEZpZWxkLnR5cGUoKSA9PT0gdHlwZUF1dG9jb21wbGV0ZVwiXHJcbiAgICAgICAgICAgICAgW3NweFNob3dIZWxwXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbc3B4U2hvd1ZhbGlkYXRpb25NZXNzYWdlc109XCJ0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLmVycm9ycyAmJiB0aGlzLnNweEZvcm1Hcm91cC5nZXQoc3B4RmllbGQua2V5KSEudG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgW3NweFN0ZXBdPVwic3B4RmllbGQuc3RlcCA/IHNweEZpZWxkLnN0ZXAoKSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgW3NweFR5cGVdPVwic3B4RmllbGQudHlwZSgpXCJcclxuICAgICAgICAgICAgICBbc3B4VmFsaWRhdG9yc109XCJnZXRSYXdWYWxpZGF0b3JzKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxyXG4gICAgICAgICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcclxuICAgICAgICAgICAgICAoc3B4Qmx1cik9XCJvbkJsdXIoc3B4RmllbGQpXCJcclxuICAgICAgICAgICAgICAoc3B4U2VhcmNoKT1cIm9uU2VhcmNoKHNweEZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgIDxzcHgtdmFsaWRhdGUtY29udHJvbCBbY29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiIFtsYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KXwgdHJhbnNsYXRlICB8IGNhcGl0YWxpemVcIj48L3NweC12YWxpZGF0ZS1jb250cm9sPlxyXG4gICAgICAgICAgICA8L3NweC1pbnB1dD5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoc3B4RmllbGQudHlwZSgpID09PSB0eXBlUmFkaW8pIHtcclxuICAgICAgICAgICAgPHNweC1pbnB1dFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiXHJcbiAgICAgICAgICAgICAgW3NweExhYmVsXT1cIihzcHhGaWVsZC5sYWJlbCA/IHNweEZpZWxkLmxhYmVsKCkgOiBzcHhGaWVsZC5rZXkpIHwgdHJhbnNsYXRlIHwgY2FwaXRhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgW3NweE5hbWVdPVwic3B4RmllbGQua2V5XCJcclxuICAgICAgICAgICAgICBbc3B4UmVhZG9ubHldPVwic3B4RmllbGQucmVhZG9ubHkgPyBzcHhGaWVsZC5yZWFkb25seSgpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzcHhSZXF1aXJlZF09XCJoYXNSZXF1aXJlZEZpZWxkKHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpISlcIlxyXG4gICAgICAgICAgICAgIFtzcHhTaG93SGVscF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW3NweFNob3dWYWxpZGF0aW9uTWVzc2FnZXNdPVwidGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhICYmIHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpIS5lcnJvcnMgJiYgdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgIFtzcHhTdWdnZXN0aW9uc109XCJzcHhGaWVsZC5zdWdnZXN0aW9uc0ZpeGVkID8gc3B4RmllbGQuc3VnZ2VzdGlvbnNGaXhlZCgpIDogdGhpcy5zcHhTdWdnZXN0aW9uc1tzcHhGaWVsZC5rZXldXCJcclxuICAgICAgICAgICAgICBbc3B4VHlwZV09XCJ0eXBlUmFkaW9cIlxyXG4gICAgICAgICAgICAgIFtzcHhWYWxpZGF0b3JzXT1cImdldFJhd1ZhbGlkYXRvcnModGhpcy5zcHhGb3JtR3JvdXAuZ2V0KHNweEZpZWxkLmtleSkhKVwiPlxyXG4gICAgICAgICAgICAgIDxzcHgtdmFsaWRhdGUtY29udHJvbCBbY29udHJvbF09XCIkYW55KHRoaXMuc3B4Rm9ybUdyb3VwLmdldChzcHhGaWVsZC5rZXkpKVwiIFtsYWJlbF09XCIoc3B4RmllbGQubGFiZWwgPyBzcHhGaWVsZC5sYWJlbCgpIDogc3B4RmllbGQua2V5KSB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIj48L3NweC12YWxpZGF0ZS1jb250cm9sPlxyXG4gICAgICAgICAgICA8L3NweC1pbnB1dD5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvc3B4LWZvcm0tc2VjdGlvbj5cclxuICB9XHJcblxyXG4gIEBmb3IgKHNweEJ1dHRvbiBvZiBzcHhGb3JtLmJ1dHRvbnM7IHRyYWNrIHNweEJ1dHRvbikge1xyXG4gICAgPHNweC1idXR0b25cclxuICAgICAgW3NweEZ1bGxXaWR0aF09XCJ0cnVlXCJcclxuICAgICAgW3NweFNldmVyaXR5XT1cInNweEJ1dHRvbi5zZXZlcml0eVwiXHJcbiAgICAgIFtzcHhUeXBlXT1cInNweEJ1dHRvbi50eXBlXCJcclxuICAgICAgKHNweENsaWNrKT1cInNweEJ1dHRvbi5vbkNsaWNrID8gc3B4QnV0dG9uLm9uQ2xpY2soKSA6IHVuZGVmaW5lZFwiPlxyXG4gICAgICB7eyAoKHNweEJ1dHRvbiAmJiBzcHhCdXR0b24ubGFiZWwpID8gc3B4QnV0dG9uLmxhYmVsKCkgOiAnJykgfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplIH19XHJcbiAgICA8L3NweC1idXR0b24+XHJcbiAgfVxyXG48L2Rpdj5cclxuYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNweEZvcm1WaWV3Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzcHhGb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc3B4Rm9ybSE6IFNweEZvcm1JO1xyXG4gIEBJbnB1dCgpIHNweFN1Z2dlc3Rpb25zITogYW55O1xyXG4gIEBPdXRwdXQoKSBzcHhCbHVyOiBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PigpO1xyXG4gIEBPdXRwdXQoKSBzcHhDbGljazogRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IFNweEZvcm1GaWVsZEkgfT4oKTtcclxuICBAT3V0cHV0KCkgc3B4U2VhcmNoOiBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9PigpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oU3B4SW5wdXRDb21wb25lbnQpIHNweElucHV0cyE6IFF1ZXJ5TGlzdDxTcHhJbnB1dENvbXBvbmVudD47XHJcbiAgYXV0b2NvbXBsZXRlRmllbGQ/OiBTcHhGb3JtRmllbGRJO1xyXG5cclxuICB0eXBlQXV0b2NvbXBsZXRlID0gU3B4SW5wdXRUeXBlRW51bS5hdXRvY29tcGxldGU7XHJcbiAgdHlwZUJ1dHRvbiA9IFNweElucHV0VHlwZUVudW0uYnV0dG9uO1xyXG4gIHR5cGVGbG9hdCA9IFNweElucHV0VHlwZUVudW0uZmxvYXQ7XHJcbiAgdHlwZU51bWJlciA9IFNweElucHV0VHlwZUVudW0ubnVtYmVyO1xyXG4gIHR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XHJcbiAgdHlwZVRleHQgPSBTcHhJbnB1dFR5cGVFbnVtLnRleHQ7XHJcbiAgdHlwZU51bWVyaWNLZXlib2FyZCA9IFNweElucHV0VHlwZUVudW0udGV4dE51bWVyaWNLZXlib2FyZDtcclxuICB0eXBlT3ZlcmxheSA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheTtcclxuICB0eXBlT3ZlcmxheU51bWJlciA9IFNweElucHV0VHlwZUVudW0ub3ZlcmxheU51bWJlcjtcclxuXHJcbiAgc2V0QXV0b2ZvY3VzKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuc3B4SW5wdXRzLmZpbmQoaW5wdXQgPT4gaW5wdXQuc3B4TmFtZSA9PT0ga2V5KTtcclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICBmaWVsZC5zZXRGb2N1c0luKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZmllbGQ6IFNweEZvcm1GaWVsZEkpIHtcclxuICAgIHRoaXMuc3B4Qmx1ci5lbWl0KHtcclxuICAgICAgZmllbGQsXHJcbiAgICAgIHZhbHVlUGFpcjogdGhpcy5zcHhGb3JtR3JvdXAuZ2V0KGZpZWxkLmtleSkhLnZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKGZpZWxkOiBTcHhGb3JtRmllbGRJKSB7XHJcbiAgICB0aGlzLnNweENsaWNrLmVtaXQoe1xyXG4gICAgICBmaWVsZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BdXRvY29tcGxldGVDYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUZpZWxkID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgb25BdXRvY29tcGxldGVTZWFyY2godmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55Pik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlRmllbGQpIHtcclxuICAgICAgdGhpcy5zcHhTZWFyY2guZW1pdCh7XHJcbiAgICAgICAgZmllbGQ6IHRoaXMuYXV0b2NvbXBsZXRlRmllbGQsXHJcbiAgICAgICAgdmFsdWVQYWlyLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQXV0b2NvbXBsZXRlU2F2ZSh2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+KSB7XHJcbiAgICB0aGlzLnNweEZvcm1Hcm91cC5nZXQodGhpcy5hdXRvY29tcGxldGVGaWVsZCEua2V5KT8uc2V0VmFsdWUodmFsdWVQYWlyKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlRmllbGQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChmaWVsZDogU3B4Rm9ybUZpZWxkSSkge1xyXG4gICAgdGhpcy5hdXRvY29tcGxldGVGaWVsZCA9IGZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmF3VmFsaWRhdG9ycyhmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGVcclxuICAgIHJldHVybiAoZm9ybUNvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIGhhc1JlcXVpcmVkRmllbGQoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIGlmIChhYnN0cmFjdENvbnRyb2wudmFsaWRhdG9yKSB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9IGFic3RyYWN0Q29udHJvbC52YWxpZGF0b3Ioe30gYXMgQWJzdHJhY3RDb250cm9sKTtcclxuICAgICAgaWYgKHZhbGlkYXRvciAmJiB2YWxpZGF0b3JbJ3JlcXVpcmVkJ10pIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbnRyb2xOYW1lIGluIChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXSkge1xyXG4gICAgICAgIGlmICgoYWJzdHJhY3RDb250cm9sIGFzIGFueSlbJ2NvbnRyb2xzJ11bY29udHJvbE5hbWVdKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEZpZWxkKChhYnN0cmFjdENvbnRyb2wgYXMgYW55KVsnY29udHJvbHMnXVtjb250cm9sTmFtZV0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGluaXRpYWxGb3JtVmFsdWUoc2VjdGlvbnM6IFNweEZvcm1TZWN0aW9uSVtdKSB7XHJcbiAgICBjb25zdCBmb3JtT2JqZWN0OiBhbnkgPSB7fTtcclxuICAgIHNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICAgIGZvcm1PYmplY3RbZmllbGQua2V5XSA9IFtmaWVsZC5kZWZhdWx0VmFsdWUgPyBmaWVsZC5kZWZhdWx0VmFsdWUoKSA6IG51bGwsIGZpZWxkLnZhbGlkYXRvcnMgPyBbLi4uZmllbGQudmFsaWRhdG9ycygpXSA6IFtdXTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtT2JqZWN0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZUZvcm0oZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBzZWN0aW9uczogU3B4Rm9ybVNlY3Rpb25JW10pOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIGZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuaW5pdGlhbEZvcm1WYWx1ZShzZWN0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYWxlcnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1oZWxwZXJzL2lucHV0LWFsZXJ0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3B4U2V2ZXJpdHlFbnVtIH0gZnJvbSBcIi4vc3B4LXNldmVyaXR5LmVudW1cIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3B4SW5wdXRBbGVydEkge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBzZXZlcml0eTogU3B4U2V2ZXJpdHlFbnVtO1xyXG59Il19
@@ -1,4 +1,5 @@
1
1
  export * from './calc-check-digit.function';
2
2
  export * from './spx-severity.enum';
3
3
  export * from './value-pair-to-value.function';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYWxjLWNoZWNrLWRpZ2l0LmZ1bmN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcHgtc2V2ZXJpdHkuZW51bSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmFsdWUtcGFpci10by12YWx1ZS5mdW5jdGlvbic7XHJcbiJdfQ==
4
+ export * from './input-alert.interface';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NhbGMtY2hlY2stZGlnaXQuZnVuY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3NweC1zZXZlcml0eS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi92YWx1ZS1wYWlyLXRvLXZhbHVlLmZ1bmN0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1hbGVydC5pbnRlcmZhY2UnO1xyXG4iXX0=
@@ -65,7 +65,7 @@ export class SpxInputBoxComponent {
65
65
  }
66
66
  }
67
67
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpxInputBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputBoxComponent, isStandalone: true, selector: "spx-input-box", inputs: { spxCompact: "spxCompact", spxFocused: "spxFocused", spxLabel: "spxLabel", spxReadonly: "spxReadonly", spxRequired: "spxRequired", spxShowClear: "spxShowClear", spxShowEdit: "spxShowEdit", spxShowHelp: "spxShowHelp", spxShowLabel: "spxShowLabel", spxShowSearch: "spxShowSearch", spxAlertMessageSeverity: "spxAlertMessageSeverity", spxShowValidationMessages: "spxShowValidationMessages", spxValue: "spxValue" }, outputs: { spxClear: "spxClear", spxSearch: "spxSearch", spxFocus: "spxFocus", spxFocusOut: "spxFocusOut", spxEdit: "spxEdit", spxHelp: "spxHelp" }, host: { listeners: { "focusin": "handleFocusIn($event)", "focusout": "handleFocusOut($event)", "document:click": "handleWindowClick($event)" } }, ngImport: i0, template: `<div class="flex rounded w-full gap-3"
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SpxInputBoxComponent, isStandalone: true, selector: "spx-input-box", inputs: { spxCompact: "spxCompact", spxFocused: "spxFocused", spxLabel: "spxLabel", spxReadonly: "spxReadonly", spxRequired: "spxRequired", spxShowClear: "spxShowClear", spxShowEdit: "spxShowEdit", spxShowHelp: "spxShowHelp", spxShowLabel: "spxShowLabel", spxShowSearch: "spxShowSearch", spxAlert: "spxAlert", spxShowValidationMessages: "spxShowValidationMessages", spxValue: "spxValue" }, outputs: { spxClear: "spxClear", spxSearch: "spxSearch", spxFocus: "spxFocus", spxFocusOut: "spxFocusOut", spxEdit: "spxEdit", spxHelp: "spxHelp" }, host: { listeners: { "focusin": "handleFocusIn($event)", "focusout": "handleFocusOut($event)", "document:click": "handleWindowClick($event)" } }, ngImport: i0, template: `<div class="flex rounded w-full gap-3"
69
69
  [class.rounded-none]="this.spxShowValidationMessages"
70
70
  [class.rounded-t]="this.spxShowValidationMessages"
71
71
  [class.outline-none]="this.spxFocused && !this.spxReadonly"
@@ -140,14 +140,16 @@ export class SpxInputBoxComponent {
140
140
  <ng-content select="[validation-messages]"></ng-content>
141
141
  </div>
142
142
  }
143
- @else if(this.spxAlertMessageSeverity) {
144
- <div [class.bg-red-700]="this.spxAlertMessageSeverity === spxSeverityEnum.error"
145
- [class.bg-green-700]="this.spxAlertMessageSeverity === spxSeverityEnum.success"
146
- [class.bg-blue-700]="this.spxAlertMessageSeverity === spxSeverityEnum.info"
147
- [class.bg-gray-400]="this.spxAlertMessageSeverity === spxSeverityEnum.unknown"
148
- [class.bg-amber-700]="this.spxAlertMessageSeverity === spxSeverityEnum.warning"
143
+ @else if(this.spxAlert) {
144
+ <div [class.bg-red-700]="this.spxAlert.severity === spxSeverityEnum.error"
145
+ [class.bg-green-700]="this.spxAlert.severity === spxSeverityEnum.success"
146
+ [class.bg-blue-700]="this.spxAlert.severity === spxSeverityEnum.info"
147
+ [class.bg-gray-400]="this.spxAlert.severity === spxSeverityEnum.unknown"
148
+ [class.bg-amber-700]="this.spxAlert.severity === spxSeverityEnum.warning"
149
149
  class="rounded-b text-white p-3">
150
- <ng-content select="[validation-messages]"></ng-content>
150
+ <div>
151
+ {{spxAlert.text}}
152
+ </div>
151
153
  </div>
152
154
  }
153
155
  `, isInline: true, dependencies: [{ kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] }); }
@@ -236,14 +238,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
236
238
  <ng-content select="[validation-messages]"></ng-content>
237
239
  </div>
238
240
  }
239
- @else if(this.spxAlertMessageSeverity) {
240
- <div [class.bg-red-700]="this.spxAlertMessageSeverity === spxSeverityEnum.error"
241
- [class.bg-green-700]="this.spxAlertMessageSeverity === spxSeverityEnum.success"
242
- [class.bg-blue-700]="this.spxAlertMessageSeverity === spxSeverityEnum.info"
243
- [class.bg-gray-400]="this.spxAlertMessageSeverity === spxSeverityEnum.unknown"
244
- [class.bg-amber-700]="this.spxAlertMessageSeverity === spxSeverityEnum.warning"
241
+ @else if(this.spxAlert) {
242
+ <div [class.bg-red-700]="this.spxAlert.severity === spxSeverityEnum.error"
243
+ [class.bg-green-700]="this.spxAlert.severity === spxSeverityEnum.success"
244
+ [class.bg-blue-700]="this.spxAlert.severity === spxSeverityEnum.info"
245
+ [class.bg-gray-400]="this.spxAlert.severity === spxSeverityEnum.unknown"
246
+ [class.bg-amber-700]="this.spxAlert.severity === spxSeverityEnum.warning"
245
247
  class="rounded-b text-white p-3">
246
- <ng-content select="[validation-messages]"></ng-content>
248
+ <div>
249
+ {{spxAlert.text}}
250
+ </div>
247
251
  </div>
248
252
  }
249
253
  `,
@@ -268,7 +272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
268
272
  type: Input
269
273
  }], spxShowSearch: [{
270
274
  type: Input
271
- }], spxAlertMessageSeverity: [{
275
+ }], spxAlert: [{
272
276
  type: Input
273
277
  }], spxShowValidationMessages: [{
274
278
  type: Input
@@ -296,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
296
300
  type: HostListener,
297
301
  args: ['document:click', ["$event"]]
298
302
  }] } });
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWlucHV0LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cy9zcHgtaW5wdXQtYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFnR2xFLE1BQU0sT0FBTyxvQkFBb0I7SUF5Qk0sYUFBYSxDQUFDLEVBQVM7UUFDMUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDcUMsY0FBYyxDQUFDLEVBQWM7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUE0QixDQUFDO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxhQUE0QixDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBQzJDLGlCQUFpQixDQUFDLEVBQVM7UUFDckUsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUs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QkFBakIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQzhCLGFBQWE7c0JBQWpELFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUdHLGNBQWM7c0JBQW5ELFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9RLGlCQUFpQjtzQkFBNUQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNweEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWJ1dHRvbic7XHJcbmltcG9ydCB7IFNweFZhbHVlUGFpciB9IGZyb20gJy4vc3B4LXZhbHVlLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBmYUVkaXQsIGZhUXVlc3Rpb24sIGZhU2VhcmNoLCBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcclxuaW1wb3J0IHsgU3B4U2V2ZXJpdHlFbnVtIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NweC1pbnB1dC1ib3gnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgU3B4QnV0dG9uQ29tcG9uZW50LFxyXG4gICAgRm9udEF3ZXNvbWVNb2R1bGVcclxuXSxcclxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJmbGV4IHJvdW5kZWQgdy1mdWxsIGdhcC0zXCJcclxuICAgICAgW2NsYXNzLnJvdW5kZWQtbm9uZV09XCJ0aGlzLnNweFNob3dWYWxpZGF0aW9uTWVzc2FnZXNcIlxyXG4gICAgICBbY2xhc3Mucm91bmRlZC10XT1cInRoaXMuc3B4U2hvd1ZhbGlkYXRpb25NZXNzYWdlc1wiXHJcbiAgICAgIFtjbGFzcy5vdXRsaW5lLW5vbmVdPVwidGhpcy5zcHhGb2N1c2VkICYmICF0aGlzLnNweFJlYWRvbmx5XCJcclxuICAgICAgW2NsYXNzLnJpbmctMl09XCJ0aGlzLnNweEZvY3VzZWQgJiYgIXRoaXMuc3B4UmVhZG9ubHlcIlxyXG4gICAgICBbY2xhc3MucmluZy1vZmZzZXQtMl09XCJ0aGlzLnNweEZvY3VzZWQgJiYgIXRoaXMuc3B4UmVhZG9ubHlcIlxyXG4gICAgICBbY2xhc3MucmluZy1ibHVlLTUwMF09XCJ0aGlzLnNweEZvY3VzZWQgJiYgIXRoaXMuc3B4UmVhZG9ubHlcIlxyXG4gICAgICBbY2xhc3MuYmctd2hpdGVdPVwiIXRoaXMuc3B4UmVhZG9ubHlcIlxyXG4gICAgICBbY2xhc3MuYmctZ3JheS0zMDBdPVwidGhpcy5zcHhSZWFkb25seVwiXHJcbiAgICAgIFtjbGFzcy5jdXJzb3Itbm90LWFsbG93ZWRdPVwidGhpcy5zcHhSZWFkb25seVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1hdXRvIHAtM1wiXHJcbiAgICAgICAgW2NsYXNzLnAtMF09XCJ0aGlzLnNweENvbXBhY3RcIlxyXG4gICAgICAgIFtjbGFzcy5mbGV4XT1cInRoaXMuc3B4Q29tcGFjdFwiXHJcbiAgICAgICAgW2NsYXNzLml0ZW1zLWNlbnRlcl09XCJ0aGlzLnNweENvbXBhY3RcIj5cclxuICAgICAgICBAaWYgKHRoaXMuc3B4U2hvd0xhYmVsKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkIHRleHQtc20gbWItMSB0ZXh0LWdyYXktODAwXCJcclxuICAgICAgICAgICAgW2NsYXNzLm1iLTBdPVwidGhpcy5zcHhDb21wYWN0XCJcclxuICAgICAgICAgICAgW2NsYXNzLnB4LTNdPVwidGhpcy5zcHhDb21wYWN0XCI+XHJcbiAgICAgICAgICAgIHt7dGhpcy5zcHhMYWJlbH19IEBpZiAoc3B4UmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC04MDBcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250cm9sc11cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm9uZSBnYXAtMSBwLTFcIj5cclxuICAgICAgQGlmICh0aGlzLnNweFNob3dFZGl0KSB7XHJcbiAgICAgICAgPHNweC1idXR0b25cclxuICAgICAgICAgIChzcHhDbGljayk9XCJvbkVkaXQoKVwiXHJcbiAgICAgICAgICBbc3B4RnVsbEhlaWdodF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzcHhTaXplXT1cIid4bCdcIlxyXG4gICAgICAgICAgW3NweFR5cGVdPVwiJ2J1dHRvbidcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhRWRpdFwiIGNsYXNzPVwiYmxvY2sgdGV4dC14bFwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L3NweC1idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmICh0aGlzLnNweFNob3dIZWxwKSB7XHJcbiAgICAgICAgPHNweC1idXR0b25cclxuICAgICAgICAgIChzcHhDbGljayk9XCJvbkhlbHAoKVwiXHJcbiAgICAgICAgICBbc3B4RnVsbEhlaWdodF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzcHhEaXNhYmxlZF09XCJ0aGlzLnNweFJlYWRvbmx5XCJcclxuICAgICAgICAgIFtzcHhTaXplXT1cIid4bCdcIlxyXG4gICAgICAgICAgW3NweFRhYkluZGV4XT1cIi0xXCJcclxuICAgICAgICAgIFtzcHhUeXBlXT1cIididXR0b24nXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVF1ZXN0aW9uXCIgY2xhc3M9XCJibG9jayB0ZXh0LXhsXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvc3B4LWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHRoaXMuc3B4U2hvd1NlYXJjaCkge1xyXG4gICAgICAgIDxzcHgtYnV0dG9uXHJcbiAgICAgICAgICAoc3B4Q2xpY2spPVwib25TZWFyY2goKVwiXHJcbiAgICAgICAgICBbc3B4RnVsbEhlaWdodF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzcHhEaXNhYmxlZF09XCJ0aGlzLnNweFJlYWRvbmx5XCJcclxuICAgICAgICAgIFtzcHhTaXplXT1cIid4bCdcIlxyXG4gICAgICAgICAgW3NweFRhYkluZGV4XT1cIi0xXCJcclxuICAgICAgICAgIFtzcHhUeXBlXT1cIididXR0b24nXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVNlYXJjaFwiIGNsYXNzPVwiYmxvY2sgdGV4dC14bFwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L3NweC1idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmICh0aGlzLnNweFNob3dDbGVhcikge1xyXG4gICAgICAgIDxzcHgtYnV0dG9uXHJcbiAgICAgICAgICAoc3B4Q2xpY2spPVwib25DbGVhcigpXCJcclxuICAgICAgICAgIFtzcHhEaXNhYmxlZF09XCJ0aGlzLnNweFJlYWRvbmx5IHx8ICF0aGlzLnNweFZhbHVlPy52YWx1ZVwiXHJcbiAgICAgICAgICBbc3B4RnVsbEhlaWdodF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzcHhTaXplXT1cIid4bCdcIlxyXG4gICAgICAgICAgW3NweFRhYkluZGV4XT1cIi0xXCJcclxuICAgICAgICAgIFtzcHhUeXBlXT1cIididXR0b24nXCI+XHJcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVRpbWVzXCIgY2xhc3M9XCJibG9jayB0ZXh0LXhsXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvc3B4LWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAodGhpcy5zcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1yZWQtNjAwIHJvdW5kZWQtYiB0ZXh0LXdoaXRlIHAtM1wiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt2YWxpZGF0aW9uLW1lc3NhZ2VzXVwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZih0aGlzLnNweEFsZXJ0TWVzc2FnZVNldmVyaXR5KSB7XHJcbiAgICAgIDxkaXYgIFtjbGFzcy5iZy1yZWQtNzAwXT1cInRoaXMuc3B4QWxlcnRNZXNzYWdlU2V2ZXJpdHkgPT09IHNweFNldmVyaXR5RW51bS5lcnJvclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1ncmVlbi03MDBdPVwidGhpcy5zcHhBbGVydE1lc3NhZ2VTZXZlcml0eSA9PT0gc3B4U2V2ZXJpdHlFbnVtLnN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYmctYmx1ZS03MDBdPVwidGhpcy5zcHhBbGVydE1lc3NhZ2VTZXZlcml0eSA9PT0gc3B4U2V2ZXJpdHlFbnVtLmluZm9cIlxyXG4gICAgICAgICAgICBbY2xhc3MuYmctZ3JheS00MDBdPVwidGhpcy5zcHhBbGVydE1lc3NhZ2VTZXZlcml0eSA9PT0gc3B4U2V2ZXJpdHlFbnVtLnVua25vd25cIlxyXG4gICAgICAgICAgICBbY2xhc3MuYmctYW1iZXItNzAwXT1cInRoaXMuc3B4QWxlcnRNZXNzYWdlU2V2ZXJpdHkgPT09IHNweFNldmVyaXR5RW51bS53YXJuaW5nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWIgdGV4dC13aGl0ZSBwLTNcIj5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt2YWxpZGF0aW9uLW1lc3NhZ2VzXVwiPjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3B4SW5wdXRCb3hDb21wb25lbnQge1xyXG4gIGZhRWRpdCA9IGZhRWRpdDtcclxuICBmYVNlYXJjaCA9IGZhU2VhcmNoO1xyXG4gIGZhUXVlc3Rpb24gPSBmYVF1ZXN0aW9uO1xyXG4gIGZhVGltZXMgPSBmYVRpbWVzO1xyXG4gIHNweFNldmVyaXR5RW51bSA9IFNweFNldmVyaXR5RW51bTtcclxuICBASW5wdXQoKSBzcHhDb21wYWN0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzcHhGb2N1c2VkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc3B4TGFiZWw/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3B4UmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzcHhSZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc3B4U2hvd0NsZWFyID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzcHhTaG93RWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc3B4U2hvd0hlbHA/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNweFNob3dMYWJlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgc3B4U2hvd1NlYXJjaD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc3B4QWxlcnRNZXNzYWdlU2V2ZXJpdHk/OiBTcHhTZXZlcml0eUVudW07XHJcbiAgQElucHV0KCkgc3B4U2hvd1ZhbGlkYXRpb25NZXNzYWdlcz86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIHNweFZhbHVlPzogU3B4VmFsdWVQYWlyPGFueT47XHJcbiAgQE91dHB1dCgpIHNweENsZWFyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHNweFNlYXJjaDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBzcHhGb2N1czogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBzcHhGb2N1c091dDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBzcHhFZGl0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHNweEhlbHA6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgW1wiJGV2ZW50XCJdKSBoYW5kbGVGb2N1c0luKGV2OiBFdmVudCkge1xyXG4gICAgdGhpcy5lbWl0Rm9jdXNJbigpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFtcIiRldmVudFwiXSkgaGFuZGxlRm9jdXNPdXQoZXY6IEZvY3VzRXZlbnQpIHtcclxuICAgIGNvbnN0IHRoaXNFbCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHJlbGF0ZWRFbGVtZW50ID0gZXYucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghcmVsYXRlZEVsZW1lbnQgfHwgIXRoaXNFbC5jb250YWlucyhyZWxhdGVkRWxlbWVudCkpIHtcclxuICAgICAgdGhpcy5lbWl0Rm9jdXNPdXQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbXCIkZXZlbnRcIl0pIGhhbmRsZVdpbmRvd0NsaWNrKGV2OiBFdmVudCkge1xyXG4gICAgaWYgKGV2LmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCkpIHtcclxuICAgICAgdGhpcy5lbWl0Rm9jdXNJbigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbWl0Rm9jdXNPdXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKSB7XHJcbiAgICB0aGlzLnNweENsZWFyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zcHhTZWFyY2guZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0KCkge1xyXG4gICAgdGhpcy5zcHhFZGl0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uSGVscCgpIHtcclxuICAgIHRoaXMuc3B4SGVscC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRGb2N1c0luKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNweEZvY3VzZWQpIHtcclxuICAgICAgdGhpcy5zcHhGb2N1cy5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRGb2N1c091dCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNweEZvY3VzZWQpIHtcclxuICAgICAgdGhpcy5zcHhGb2N1c091dC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWlucHV0LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cy9zcHgtaW5wdXQtYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFtR2xFLE1BQU0sT0FBTyxvQkFBb0I7SUF5Qk0sYUFBYSxDQUFDLEVBQVM7UUFDMUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDcUMsY0FBYyxDQUFDLEVBQWM7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUE0QixDQUFDO1FBQ3ZELE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxhQUE0QixDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBQzJDLGlCQUFpQixDQUFDLEVBQVM7UUFDckUsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUs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O3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDOEIsYUFBYTtzQkFBakQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBR0csY0FBYztzQkFBbkQsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBT1EsaUJBQWlCO3NCQUE1RCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcclxuaW1wb3J0IHsgU3B4VmFsdWVQYWlyIH0gZnJvbSAnLi9zcHgtdmFsdWUtaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcbmltcG9ydCB7IGZhRWRpdCwgZmFRdWVzdGlvbiwgZmFTZWFyY2gsIGZhVGltZXMgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xyXG5pbXBvcnQgeyBTcHhTZXZlcml0eUVudW0gfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1oZWxwZXJzJztcclxuaW1wb3J0IHsgU3B4SW5wdXRBbGVydEkgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1oZWxwZXJzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3B4LWlucHV0LWJveCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXHJcbiAgICBGb250QXdlc29tZU1vZHVsZVxyXG5dLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImZsZXggcm91bmRlZCB3LWZ1bGwgZ2FwLTNcIlxyXG4gICAgICBbY2xhc3Mucm91bmRlZC1ub25lXT1cInRoaXMuc3B4U2hvd1ZhbGlkYXRpb25NZXNzYWdlc1wiXHJcbiAgICAgIFtjbGFzcy5yb3VuZGVkLXRdPVwidGhpcy5zcHhTaG93VmFsaWRhdGlvbk1lc3NhZ2VzXCJcclxuICAgICAgW2NsYXNzLm91dGxpbmUtbm9uZV09XCJ0aGlzLnNweEZvY3VzZWQgJiYgIXRoaXMuc3B4UmVhZG9ubHlcIlxyXG4gICAgICBbY2xhc3MucmluZy0yXT1cInRoaXMuc3B4Rm9jdXNlZCAmJiAhdGhpcy5zcHhSZWFkb25seVwiXHJcbiAgICAgIFtjbGFzcy5yaW5nLW9mZnNldC0yXT1cInRoaXMuc3B4Rm9jdXNlZCAmJiAhdGhpcy5zcHhSZWFkb25seVwiXHJcbiAgICAgIFtjbGFzcy5yaW5nLWJsdWUtNTAwXT1cInRoaXMuc3B4Rm9jdXNlZCAmJiAhdGhpcy5zcHhSZWFkb25seVwiXHJcbiAgICAgIFtjbGFzcy5iZy13aGl0ZV09XCIhdGhpcy5zcHhSZWFkb25seVwiXHJcbiAgICAgIFtjbGFzcy5iZy1ncmF5LTMwMF09XCJ0aGlzLnNweFJlYWRvbmx5XCJcclxuICAgICAgW2NsYXNzLmN1cnNvci1ub3QtYWxsb3dlZF09XCJ0aGlzLnNweFJlYWRvbmx5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWF1dG8gcC0zXCJcclxuICAgICAgICBbY2xhc3MucC0wXT1cInRoaXMuc3B4Q29tcGFjdFwiXHJcbiAgICAgICAgW2NsYXNzLmZsZXhdPVwidGhpcy5zcHhDb21wYWN0XCJcclxuICAgICAgICBbY2xhc3MuaXRlbXMtY2VudGVyXT1cInRoaXMuc3B4Q29tcGFjdFwiPlxyXG4gICAgICAgIEBpZiAodGhpcy5zcHhTaG93TGFiZWwpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGQgdGV4dC1zbSBtYi0xIHRleHQtZ3JheS04MDBcIlxyXG4gICAgICAgICAgICBbY2xhc3MubWItMF09XCJ0aGlzLnNweENvbXBhY3RcIlxyXG4gICAgICAgICAgICBbY2xhc3MucHgtM109XCJ0aGlzLnNweENvbXBhY3RcIj5cclxuICAgICAgICAgICAge3t0aGlzLnNweExhYmVsfX0gQGlmIChzcHhSZXF1aXJlZCkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTgwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NvbnRyb2xzXVwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1ub25lIGdhcC0xIHAtMVwiPlxyXG4gICAgICBAaWYgKHRoaXMuc3B4U2hvd0VkaXQpIHtcclxuICAgICAgICA8c3B4LWJ1dHRvblxyXG4gICAgICAgICAgKHNweENsaWNrKT1cIm9uRWRpdCgpXCJcclxuICAgICAgICAgIFtzcHhGdWxsSGVpZ2h0XT1cInRydWVcIlxyXG4gICAgICAgICAgW3NweFNpemVdPVwiJ3hsJ1wiXHJcbiAgICAgICAgICBbc3B4VHlwZV09XCInYnV0dG9uJ1wiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFFZGl0XCIgY2xhc3M9XCJibG9jayB0ZXh0LXhsXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvc3B4LWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHRoaXMuc3B4U2hvd0hlbHApIHtcclxuICAgICAgICA8c3B4LWJ1dHRvblxyXG4gICAgICAgICAgKHNweENsaWNrKT1cIm9uSGVscCgpXCJcclxuICAgICAgICAgIFtzcHhGdWxsSGVpZ2h0XT1cInRydWVcIlxyXG4gICAgICAgICAgW3NweERpc2FibGVkXT1cInRoaXMuc3B4UmVhZG9ubHlcIlxyXG4gICAgICAgICAgW3NweFNpemVdPVwiJ3hsJ1wiXHJcbiAgICAgICAgICBbc3B4VGFiSW5kZXhdPVwiLTFcIlxyXG4gICAgICAgICAgW3NweFR5cGVdPVwiJ2J1dHRvbidcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhUXVlc3Rpb25cIiBjbGFzcz1cImJsb2NrIHRleHQteGxcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9zcHgtYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAodGhpcy5zcHhTaG93U2VhcmNoKSB7XHJcbiAgICAgICAgPHNweC1idXR0b25cclxuICAgICAgICAgIChzcHhDbGljayk9XCJvblNlYXJjaCgpXCJcclxuICAgICAgICAgIFtzcHhGdWxsSGVpZ2h0XT1cInRydWVcIlxyXG4gICAgICAgICAgW3NweERpc2FibGVkXT1cInRoaXMuc3B4UmVhZG9ubHlcIlxyXG4gICAgICAgICAgW3NweFNpemVdPVwiJ3hsJ1wiXHJcbiAgICAgICAgICBbc3B4VGFiSW5kZXhdPVwiLTFcIlxyXG4gICAgICAgICAgW3NweFR5cGVdPVwiJ2J1dHRvbidcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhU2VhcmNoXCIgY2xhc3M9XCJibG9jayB0ZXh0LXhsXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvc3B4LWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHRoaXMuc3B4U2hvd0NsZWFyKSB7XHJcbiAgICAgICAgPHNweC1idXR0b25cclxuICAgICAgICAgIChzcHhDbGljayk9XCJvbkNsZWFyKClcIlxyXG4gICAgICAgICAgW3NweERpc2FibGVkXT1cInRoaXMuc3B4UmVhZG9ubHkgfHwgIXRoaXMuc3B4VmFsdWU/LnZhbHVlXCJcclxuICAgICAgICAgIFtzcHhGdWxsSGVpZ2h0XT1cInRydWVcIlxyXG4gICAgICAgICAgW3NweFNpemVdPVwiJ3hsJ1wiXHJcbiAgICAgICAgICBbc3B4VGFiSW5kZXhdPVwiLTFcIlxyXG4gICAgICAgICAgW3NweFR5cGVdPVwiJ2J1dHRvbidcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhVGltZXNcIiBjbGFzcz1cImJsb2NrIHRleHQteGxcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9zcHgtYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmICh0aGlzLnNweFNob3dWYWxpZGF0aW9uTWVzc2FnZXMpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImJnLXJlZC02MDAgcm91bmRlZC1iIHRleHQtd2hpdGUgcC0zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3ZhbGlkYXRpb24tbWVzc2FnZXNdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIEBlbHNlIGlmKHRoaXMuc3B4QWxlcnQpIHtcclxuICAgICAgPGRpdiAgW2NsYXNzLmJnLXJlZC03MDBdPVwidGhpcy5zcHhBbGVydC5zZXZlcml0eSA9PT0gc3B4U2V2ZXJpdHlFbnVtLmVycm9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLmJnLWdyZWVuLTcwMF09XCJ0aGlzLnNweEFsZXJ0LnNldmVyaXR5ID09PSBzcHhTZXZlcml0eUVudW0uc3VjY2Vzc1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1ibHVlLTcwMF09XCJ0aGlzLnNweEFsZXJ0LnNldmVyaXR5ID09PSBzcHhTZXZlcml0eUVudW0uaW5mb1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1ncmF5LTQwMF09XCJ0aGlzLnNweEFsZXJ0LnNldmVyaXR5ID09PSBzcHhTZXZlcml0eUVudW0udW5rbm93blwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1hbWJlci03MDBdPVwidGhpcy5zcHhBbGVydC5zZXZlcml0eSA9PT0gc3B4U2V2ZXJpdHlFbnVtLndhcm5pbmdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQtYiB0ZXh0LXdoaXRlIHAtM1wiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAge3tzcHhBbGVydC50ZXh0fX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcHhJbnB1dEJveENvbXBvbmVudCB7XHJcbiAgZmFFZGl0ID0gZmFFZGl0O1xyXG4gIGZhU2VhcmNoID0gZmFTZWFyY2g7XHJcbiAgZmFRdWVzdGlvbiA9IGZhUXVlc3Rpb247XHJcbiAgZmFUaW1lcyA9IGZhVGltZXM7XHJcbiAgc3B4U2V2ZXJpdHlFbnVtID0gU3B4U2V2ZXJpdHlFbnVtO1xyXG4gIEBJbnB1dCgpIHNweENvbXBhY3Q/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNweEZvY3VzZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzcHhMYWJlbD86IHN0cmluZztcclxuICBASW5wdXQoKSBzcHhSZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNweFJlcXVpcmVkPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzcHhTaG93Q2xlYXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNweFNob3dFZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzcHhTaG93SGVscD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc3B4U2hvd0xhYmVsID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzcHhTaG93U2VhcmNoPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzcHhBbGVydD86IFNweElucHV0QWxlcnRJO1xyXG4gIEBJbnB1dCgpIHNweFNob3dWYWxpZGF0aW9uTWVzc2FnZXM/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzcHhWYWx1ZT86IFNweFZhbHVlUGFpcjxhbnk+O1xyXG4gIEBPdXRwdXQoKSBzcHhDbGVhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBzcHhTZWFyY2g6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgc3B4Rm9jdXM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgc3B4Rm9jdXNPdXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgc3B4RWRpdDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBzcHhIZWxwOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNpbicsIFtcIiRldmVudFwiXSkgaGFuZGxlRm9jdXNJbihldjogRXZlbnQpIHtcclxuICAgIHRoaXMuZW1pdEZvY3VzSW4oKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnLCBbXCIkZXZlbnRcIl0pIGhhbmRsZUZvY3VzT3V0KGV2OiBGb2N1c0V2ZW50KSB7XHJcbiAgICBjb25zdCB0aGlzRWwgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByZWxhdGVkRWxlbWVudCA9IGV2LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXJlbGF0ZWRFbGVtZW50IHx8ICF0aGlzRWwuY29udGFpbnMocmVsYXRlZEVsZW1lbnQpKSB7XHJcbiAgICAgIHRoaXMuZW1pdEZvY3VzT3V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgW1wiJGV2ZW50XCJdKSBoYW5kbGVXaW5kb3dDbGljayhldjogRXZlbnQpIHtcclxuICAgIGlmIChldi5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgIHRoaXMuZW1pdEZvY3VzSW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW1pdEZvY3VzT3V0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyKCkge1xyXG4gICAgdGhpcy5zcHhDbGVhci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCgpIHtcclxuICAgIHRoaXMuc3B4U2VhcmNoLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uRWRpdCgpIHtcclxuICAgIHRoaXMuc3B4RWRpdC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkhlbHAoKSB7XHJcbiAgICB0aGlzLnNweEhlbHAuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0Rm9jdXNJbigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zcHhGb2N1c2VkKSB7XHJcbiAgICAgIHRoaXMuc3B4Rm9jdXMuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0Rm9jdXNPdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zcHhGb2N1c2VkKSB7XHJcbiAgICAgIHRoaXMuc3B4Rm9jdXNPdXQuZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=