@rosoftlab/ionic 1.0.0-alpha-4 → 1.0.0-alpha-6

Sign up to get free protection for your applications and to get access to all the features.
@@ -256,11 +256,11 @@ export class GenericIonicCrudComponent {
256
256
  }
257
257
  return rvalue;
258
258
  }
259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: GenericIonicCrudComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.IonicDialogService }, { token: i4.TranslateService }, { token: i5.Location }, { token: i0.Injector }, { token: i6.FormlyJsonschema }], target: i0.ɵɵFactoryTarget.Component }); }
260
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: GenericIonicCrudComponent, isStandalone: true, selector: "rslc-ionic-crud", ngImport: i0, template: "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n <ng-container *ngIf=\"!isLoading\">\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\n </form>\n </ng-container>\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button *ngIf=\"!isLoading\" slot=\"end\" fill=\"clear\" (click)=\"onSave()\"\n [disabled]=\"baseForm.invalid || !baseForm.dirty\">\n <ion-icon size=\"large\" name=\"save\"></ion-icon>\n </ion-button>\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i7.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i7.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i7.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i7.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i7.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i7.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i7.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i7.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i7.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
259
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: GenericIonicCrudComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.IonicDialogService }, { token: i4.TranslateService }, { token: i5.Location }, { token: i0.Injector }, { token: i6.FormlyJsonschema }], target: i0.ɵɵFactoryTarget.Component }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: GenericIonicCrudComponent, isStandalone: true, selector: "rslc-ionic-crud", ngImport: i0, template: "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n <ng-container *ngIf=\"!isLoading\">\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\n </form>\n </ng-container>\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button *ngIf=\"!isLoading\" slot=\"end\" fill=\"clear\" (click)=\"onSave()\"\n [disabled]=\"baseForm.invalid || !baseForm.dirty\">\n <ion-icon size=\"large\" name=\"save\"></ion-icon>\n </ion-button>\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i7.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i7.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i7.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i7.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i7.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i7.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i7.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i7.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i7.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
261
261
  }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: GenericIonicCrudComponent, decorators: [{
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: GenericIonicCrudComponent, decorators: [{
263
263
  type: Component,
264
264
  args: [{ standalone: true, selector: 'rslc-ionic-crud', imports: [RslIonicModuleModule], template: "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n <ng-container *ngIf=\"!isLoading\">\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\n </form>\n </ng-container>\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button *ngIf=\"!isLoading\" slot=\"end\" fill=\"clear\" (click)=\"onSave()\"\n [disabled]=\"baseForm.invalid || !baseForm.dirty\">\n <ion-icon size=\"large\" name=\"save\"></ion-icon>\n </ion-button>\n</ng-template>" }]
265
265
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.IonicDialogService }, { type: i4.TranslateService }, { type: i5.Location }, { type: i0.Injector }, { type: i6.FormlyJsonschema }]; } });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLWNydWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtY3J1ZC5jb21wb25lbnQvcnNsLWlvbmljLWNydWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtY3J1ZC5jb21wb25lbnQvcnNsLWlvbmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7QUFTckUsTUFBTSxPQUFPLHlCQUF5QjtJQWtCcEMsWUFBWTtJQUNaLFlBQ1MsRUFBc0IsRUFDdEIsTUFBYyxFQUNk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LEVBQUU7Z0JBQzNCLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2FBQy9EO1lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN6QixNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUM3RDtZQUNELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxNQUFNLEtBQUssRUFBRSxFQUFFO2dCQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN4RDtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0F0UVUseUJBQXlCO2tHQUF6Qix5QkFBeUIsMkVDcEJ0QyxtNkJBd0JjLHlERFBGLG9CQUFvQjs7MkZBR25CLHlCQUF5QjtrQkFSckMsU0FBUztpQ0FDSSxJQUFJLFlBQ04saUJBQWlCLFdBR2xCLENBQUMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seUpzb25zY2hlbWEgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJhc2VNb2RlbEZvcm1seSwgQmFzZVNlcnZpY2VGb3JtbHkgfSBmcm9tICdAcm9zb2Z0bGFiL2Zvcm1seSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25pY0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBSc2xJb25pY01vZHVsZU1vZHVsZSB9IGZyb20gJy4uLy4uL3JzbC1pb25pYy1tb2R1bGUubW9kdWxlJztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3JzbGMtaW9uaWMtY3J1ZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yc2wtaW9uaWMtY3J1ZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JzbC1pb25pYy1jcnVkLmNvbXBvbmVudC5jc3MnXSxcbiAgaW1wb3J0czogW1JzbElvbmljTW9kdWxlTW9kdWxlXVxuXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNJb25pY0NydWRDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VNb2RlbEZvcm1seSwgVSBleHRlbmRzIEJhc2VTZXJ2aWNlRm9ybWx5PFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGJhc2VGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIG1vZGVsOiBUO1xuICBvcmlnTW9kZWw6IFQ7XG4gIGlzRWRpdDogYm9vbGVhbjtcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgY2FuY2VsUm91dGU6IHN0cmluZztcbiAgZWRpdFJvdXRlOiBzdHJpbmc7XG4gIG1vZGVsU2VydmljZTogVVxuICBwdWJsaWMgY2hhbmdlVXJsUm91dGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdXG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge307XG4gIC8vI3JlZ2lvbiBEaWFsb2cgbWVzc2FnZXNcbiAgY29uZmlybVF1ZXN0aW9uOiBzdHJpbmdcbiAgY29uZmlybUJ1dHRvbjogc3RyaW5nXG4gIHNhdmVNZXNzYWdlOiBzdHJpbmdcbiAgLy8jZW5kcmVnaW9uXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBJb25pY0RpYWxvZ1NlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZm9ybWx5SnNvbnNjaGVtYTogRm9ybWx5SnNvbnNjaGVtYSxcbiAgKSB7XG5cbiAgICBjb25zdCBTRVJWSUNFX1RPS0VOID0gcm91dGUuc25hcHNob3QuZGF0YVsncmVxdWlyZWRTZXJ2aWNlJ107XG4gICAgdGhpcy5tb2RlbFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxVPig8YW55PlNFUlZJQ0VfVE9LRU4pO1xuXG4gICAgdGhpcy5tb2RlbFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxVPig8YW55PlNFUlZJQ0VfVE9LRU4pO1xuICAgIHRoaXMuY29uZmlybVF1ZXN0aW9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5EaXNjYXJkLlF1ZXN0aW9uJyk7XG4gICAgdGhpcy5jb25maXJtQnV0dG9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5EaXNjYXJkLkNvbmZpcm1CdXR0b24nKTtcbiAgICB0aGlzLnNhdmVNZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5TYXZlLk1lc3NhZ2UnKTtcbiAgfVxuXG4gIGlvblZpZXdXaWxsTGVhdmUoKSB7XG4gICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoKVxuICAgIHRoaXMuYmFzZUZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZnRlclNhdmUobW9kZWw6IFQpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5uZXh0KG1vZGVsKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYmVmb3JlU2F2ZShtb2RlbDogVCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQobW9kZWwpO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuICBpbml0Rm9ybShjdXN0b21JbmNsdWRlOiBzdHJpbmcgPSAnJywgbmV3TW9kZWxJZDogc3RyaW5nID0gbnVsbCwgbW9kZWw6IFQgPSBudWxsKSB7XG4gICAgaWYgKG1vZGVsID09PSBudWxsKSB7XG4gICAgICB0aGlzLm1vZGVsSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSA/PyBuZXdNb2RlbElkO1xuICAgICAgdGhpcy5pc0VkaXQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLm1vZGVsSWQpIHtcbiAgICAgICAgdGhpcy5tb2RlbFNlcnZpY2UuZ2V0KHRoaXMubW9kZWxJZCwgY3VzdG9tSW5jbHVkZSkuc3Vic2NyaWJlKCh2YWx1ZTogVCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmdlbmVyYXRlRm9ybSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlVXJsUm91dGUpIHtcbiAgICAgICAgICBjb25zdCBhZGRVcmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtdKS50b1N0cmluZygpO1xuICAgICAgICAgIHRoaXMuZWRpdFJvdXRlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbYWRkVXJsLnJlcGxhY2UoJ2FkZCcsICdlZGl0JyldKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZUZvcm0odGhpcy5tb2RlbFNlcnZpY2UubmV3TW9kZWwoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZWxJZCA9IG1vZGVsLmlkO1xuICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlO1xuICAgICAgdGhpcy5nZW5lcmF0ZUZvcm0obW9kZWwpXG4gICAgfVxuICB9XG4gIGdlbmVyYXRlRm9ybShtb2RlbD86IFQpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMubW9kZWxJZCA9IG1vZGVsLmlkO1xuICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcbiAgICB0aGlzLm9yaWdNb2RlbCA9IF8uY2xvbmVEZWVwKG1vZGVsKTs7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMubW9kZWwubW9kZWxDb25maWcuZm9ybVRpdGxlXG4gICAgdGhpcy5iYXNlRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTsvLz0gdGhpcy5tb2RlbFNlcnZpY2UudG9Gb3JtR3JvdXAodGhpcy5mYiwgbW9kZWwpO1xuICAgIHRoaXMuYWZ0ZXJGb3JtR2VuZXJhdGVkKCk7XG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLm1vZGVsU2VydmljZS5nZXRGb3JtbHlGaWVsZHModGhpcy5tb2RlbClcbiAgfVxuICBwdWJsaWMgYWZ0ZXJGb3JtR2VuZXJhdGVkKCkge1xuXG4gIH1cbiAgcHJpdmF0ZSBnZXRGcm9tR3JvdXAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwIHwgc3RyaW5nID0gbnVsbCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIGlmICghZm9ybUdyb3VwKVxuICAgICAgcmV0dXJuIHRoaXMuYmFzZUZvcm07XG4gICAgaWYgKGZvcm1Hcm91cCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApXG4gICAgICByZXR1cm4gZm9ybUdyb3VwO1xuICAgIHJldHVybiB0aGlzLmJhc2VGb3JtLmNvbnRyb2xzW2Zvcm1Hcm91cF0gYXMgVW50eXBlZEZvcm1Hcm91cDtcbiAgfVxuICB2YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwIHwgc3RyaW5nID0gbnVsbCkge1xuICAgIGNvbnN0IGZnID0gdGhpcy5nZXRGcm9tR3JvdXAoZm9ybUdyb3VwKVxuICAgIE9iamVjdC5rZXlzKGZnLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGZpZWxkKTtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmZy5nZXQoZmllbGQpO1xuICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGNvbnRyb2wpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGlzRmllbGRWYWxpZChmaWVsZDogc3RyaW5nLCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgfCBzdHJpbmcgPSBudWxsKSB7XG4gICAgY29uc3QgZmcgPSB0aGlzLmdldEZyb21Hcm91cChmb3JtR3JvdXApXG4gICAgY29uc3QgZmlsZWRDb250cm9sID0gZmcuZ2V0KGZpZWxkKVxuICAgIHJldHVybiAhZmlsZWRDb250cm9sLnZhbGlkICYmIGZpbGVkQ29udHJvbC50b3VjaGVkO1xuICB9XG5cbiAgaXNGaWVsZFZhbGlkRnJvbUFycmF5KGFycmF5SW5kZXg6IG51bWJlciwgZmllbGQ6IHN0cmluZywgYXJyYXlOYW1lOiBzdHJpbmcgPSAnZm9ybUFycmF5Jykge1xuICAgIGNvbnN0IGZpZWxkQ29udHJvbCA9IHRoaXMuYmFzZUZvcm0uZ2V0KGFycmF5TmFtZSkuZ2V0KFthcnJheUluZGV4XSkuZ2V0KGZpZWxkKVxuICAgIHJldHVybiAhZmllbGRDb250cm9sLnZhbGlkICYmIGZpZWxkQ29udHJvbC50b3VjaGVkO1xuICB9XG5cbiAgZGlzcGxheUZpZWxkQ3NzKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2hhcy1lcnJvcic6IHRoaXMuaXNGaWVsZFZhbGlkKGZpZWxkKSxcbiAgICAgICdoYXMtZmVlZGJhY2snOiB0aGlzLmlzRmllbGRWYWxpZChmaWVsZClcbiAgICB9O1xuICB9XG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLmNhbmNlbFJvdXRlXSk7XG4gIH1cbiAgb25TYXZlKCkge1xuICAgIHRoaXMuc2F2ZU1vZGVsKHRoaXMuYmFzZUZvcm0pXG4gIH1cbiAgb25TdWJtaXQobW9kZWwpIHtcbiAgICB0aGlzLnNhdmVNb2RlbCh0aGlzLmJhc2VGb3JtKVxuICB9XG5cbiAgc2F2ZU1vZGVsKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCB8IHN0cmluZyA9IG51bGwpIHtcbiAgICBjb25zdCBmZyA9IHRoaXMuZ2V0RnJvbUdyb3VwKGZvcm1Hcm91cClcbiAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICBpZiAoZmcpIHtcbiAgICAgIGlmIChmZy52YWxpZCkge1xuICAgICAgICB0aGlzLmJlZm9yZVNhdmUodGhpcy5tb2RlbCkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgIHRoaXMubW9kZWxTZXJ2aWNlLnNhdmUodGhpcy5tb2RlbCwgdGhpcy5tb2RlbElkLCB0aGlzLm9yaWdNb2RlbCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKG5ld01vZGVsOiBUKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbDtcbiAgICAgICAgICAgICAgdGhpcy5tb2RlbElkID0gbmV3TW9kZWwuaWQ7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRSb3V0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFuZ2VVcmxSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbdGhpcy5lZGl0Um91dGUsIHRoaXMubW9kZWxJZF0pLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmFmdGVyU2F2ZShuZXdNb2RlbCkuc3Vic2NyaWJlKCh2YWw6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBmcm9tKHRoaXMuZGlhbG9nU2VydmljZS5zaG93U2F2ZU1lc3NhZ2UodGhpcy5zYXZlTWVzc2FnZSkpLnN1YnNjcmliZShkID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy51cGRhdGVJbml0aWFsVmFsdWUoKVxuICAgICAgICAgICAgICAgICAgZmcubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvcnMoZXJyKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2VydmVyRXJyb3JzKGVycjogYW55KSB7XG4gICAgaWYgKGVyci5lcnJvcikge1xuICAgICAgaWYgKGVyci5lcnJvci5lcnJvcnMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbkVycm9ycyA9IGVyci5lcnJvci5lcnJvcnM7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbGlkYXRpb25FcnJvcnMpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmJhc2VGb3JtLmdldCh0aGlzLmZpcnN0Q2hhclRvTG93ZXJDYXNlKHByb3ApKTtcbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAvLyBhY3RpdmF0ZSB0aGUgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgIHNlcnZlckVycm9yOiB7IG1lc3NhZ2U6IHZhbGlkYXRpb25FcnJvcnNbcHJvcF0uam9pbignXFxuJykgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsaWRhdGlvbkVycm9ycyk7XG4gICAgICAgICAga2V5cy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmJhc2VGb3JtLmdldCh0aGlzLmZpcnN0Q2hhclRvTG93ZXJDYXNlKHByb3ApKTtcbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAvLyBhY3RpdmF0ZSB0aGUgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgIHNlcnZlckVycm9yOiB7IG1lc3NhZ2U6IHZhbGlkYXRpb25FcnJvcnNbcHJvcF0uam9pbignXFxuJykgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGZpcnN0Q2hhclRvTG93ZXJDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHN0cjsgLy8gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgaW5wdXQgaXMgZW1wdHlcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdENoYXIgPSBzdHIuY2hhckF0KDApLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcmVzdE9mU3RyaW5nID0gc3RyLnNsaWNlKDEpO1xuXG4gICAgcmV0dXJuIGZpcnN0Q2hhciArIHJlc3RPZlN0cmluZztcbiAgfVxuICBhc3luYyBjYW5EZWFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5iYXNlRm9ybS5kaXJ0eSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSh0aGlzLmNvbmZpcm1RdWVzdGlvbiwgbnVsbCwgdGhpcy5jb25maXJtQnV0dG9uKVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZ2V0RmlsZWROYW1lKGZpbGVkVHJhbnNsYXRpb25LZXk6IHN0cmluZykge1xuICAgIHJldHVybiB7IGZpZWxkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZpbGVkVHJhbnNsYXRpb25LZXkpIH07XG4gIH1cbiAgZ2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGVycm9yOiBhbnksIGZpZWxkTGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGdldEVycm9yTWVzc2FnZUZyb21BcnJheShhcnJheUluZGV4OiBudW1iZXIsIGZpZWxkOiBzdHJpbmcsIGZpbGVkVHJhbnNsYXRpb25LZXk6IHN0cmluZywgYXJyYXlOYW1lOiBzdHJpbmcgPSAnZm9ybUFycmF5Jyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy5iYXNlRm9ybS5nZXQoYXJyYXlOYW1lKS5nZXQoW2FycmF5SW5kZXhdKS5nZXQoZmllbGQpXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXJyb3JNZXNzYWdlRm9yRmllbGQoZmllbGRDb250cm9sLCBmaWxlZFRyYW5zbGF0aW9uS2V5KVxuICB9XG4gIGdldEVycm9yTWVzc2FnZShmaWVsZDogc3RyaW5nLCBmaWxlZFRyYW5zbGF0aW9uS2V5OiBzdHJpbmcsIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCB8IHN0cmluZyA9IG51bGwpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZnID0gdGhpcy5nZXRGcm9tR3JvdXAoZm9ybUdyb3VwKVxuICAgIHJldHVybiB0aGlzLmdldEVycm9yTWVzc2FnZUZvckZpZWxkKGZnLmdldChmaWVsZCksIGZpbGVkVHJhbnNsYXRpb25LZXkpXG4gIH1cbiAgZ2V0RXJyb3JNZXNzYWdlRm9yRmllbGQoZmllbGRDb250cm9sOiBhbnksIGZpbGVkVHJhbnNsYXRpb25LZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZENvbnRyb2wuZXJyb3JzO1xuICAgIGNvbnN0IGZpZWxkTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZpbGVkVHJhbnNsYXRpb25LZXkpO1xuICAgIGxldCBydmFsdWUgPSAnJztcbiAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgIGlmIChlcnJvclsncmVxdWlyZWQnXSA9PT0gdHJ1ZSkge1xuICAgICAgICBydmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdHZW5lcmFsLkZpZWxkLlJlcXVpcmVkJywgeyBmaWVsZDogZmllbGRMYWJlbCB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvclsnbWlubGVuZ3RoJ10pIHtcbiAgICAgICAgcnZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5GaWVsZC5NaW5MZW5ndGgnLCB7IGZpZWxkOiBmaWVsZExhYmVsLCByZXF1aXJlZExlbmd0aDogZXJyb3IubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yWydlbWFpbCddID09PSB0cnVlKSB7XG4gICAgICAgIHJ2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuRmllbGQuSW52YWxpZEVtYWlsJyk7XG4gICAgICB9XG4gICAgICBpZiAoZXJyb3JbJ3VybCddID09PSB0cnVlKSB7XG4gICAgICAgIHJ2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuRmllbGQuSW52YWxpZFVybCcpO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yWydzZXJ2ZXJFcnJvciddKSB7XG4gICAgICAgIHJ2YWx1ZSA9IGVycm9yWydzZXJ2ZXJFcnJvciddO1xuICAgICAgfVxuICAgICAgaWYgKHJ2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcnZhbHVlID0gdGhpcy5nZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IsIGZpZWxkTGFiZWwpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcnZhbHVlO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlciBbdHJhbnNsdWNlbnRdPVwidHJ1ZVwiPlxuICA8aW9uLXRvb2xiYXI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1tZW51LWJ1dHRvbj48L2lvbi1tZW51LWJ1dHRvbj5cbiAgICAgIDxpb24tYmFjay1idXR0b24+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclwiPjwvbmctY29udGFpbmVyPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgW2Z1bGxzY3JlZW5dPVwidHJ1ZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYmFzZUZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQobW9kZWwpXCI+XG4gICAgICA8Zm9ybWx5LWZvcm0gW2Zvcm1dPVwiYmFzZUZvcm1cIiBbZmllbGRzXT1cImZpZWxkc1wiIFttb2RlbF09XCJtb2RlbFwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIj48L2Zvcm1seS1mb3JtPlxuICAgIDwvZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG48L2lvbi1jb250ZW50PlxuXG48bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgPGlvbi10aXRsZSAgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj57e3RpdGxlIHx0cmFuc2xhdGV9fTwvaW9uLXRpdGxlPlxuICA8aW9uLWJ1dHRvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBzbG90PVwiZW5kXCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiYmFzZUZvcm0uaW52YWxpZCB8fCAhYmFzZUZvcm0uZGlydHlcIj5cbiAgICA8aW9uLWljb24gc2l6ZT1cImxhcmdlXCIgbmFtZT1cInNhdmVcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPiJdfQ==
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLWNydWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtY3J1ZC5jb21wb25lbnQvcnNsLWlvbmljLWNydWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtY3J1ZC5jb21wb25lbnQvcnNsLWlvbmljLWNydWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7QUFTckUsTUFBTSxPQUFPLHlCQUF5QjtJQWtCcEMsWUFBWTtJQUNaLFlBQ1MsRUFBc0IsRUFDdEIsTUFBYyxFQUNk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LEVBQUU7Z0JBQzNCLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2FBQy9EO1lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN6QixNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUM3RDtZQUNELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxNQUFNLEtBQUssRUFBRSxFQUFFO2dCQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN4RDtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzsrR0F0UVUseUJBQXlCO21HQUF6Qix5QkFBeUIsMkVDcEJ0QyxtNkJBd0JjLHlERFBGLG9CQUFvQjs7NEZBR25CLHlCQUF5QjtrQkFSckMsU0FBUztpQ0FDSSxJQUFJLFlBQ04saUJBQWlCLFdBR2xCLENBQUMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seUpzb25zY2hlbWEgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJhc2VNb2RlbEZvcm1seSwgQmFzZVNlcnZpY2VGb3JtbHkgfSBmcm9tICdAcm9zb2Z0bGFiL2Zvcm1seSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25pY0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBSc2xJb25pY01vZHVsZU1vZHVsZSB9IGZyb20gJy4uLy4uL3JzbC1pb25pYy1tb2R1bGUubW9kdWxlJztcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3JzbGMtaW9uaWMtY3J1ZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yc2wtaW9uaWMtY3J1ZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JzbC1pb25pYy1jcnVkLmNvbXBvbmVudC5jc3MnXSxcbiAgaW1wb3J0czogW1JzbElvbmljTW9kdWxlTW9kdWxlXVxuXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNJb25pY0NydWRDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VNb2RlbEZvcm1seSwgVSBleHRlbmRzIEJhc2VTZXJ2aWNlRm9ybWx5PFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGJhc2VGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIG1vZGVsOiBUO1xuICBvcmlnTW9kZWw6IFQ7XG4gIGlzRWRpdDogYm9vbGVhbjtcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgY2FuY2VsUm91dGU6IHN0cmluZztcbiAgZWRpdFJvdXRlOiBzdHJpbmc7XG4gIG1vZGVsU2VydmljZTogVVxuICBwdWJsaWMgY2hhbmdlVXJsUm91dGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdXG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge307XG4gIC8vI3JlZ2lvbiBEaWFsb2cgbWVzc2FnZXNcbiAgY29uZmlybVF1ZXN0aW9uOiBzdHJpbmdcbiAgY29uZmlybUJ1dHRvbjogc3RyaW5nXG4gIHNhdmVNZXNzYWdlOiBzdHJpbmdcbiAgLy8jZW5kcmVnaW9uXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBJb25pY0RpYWxvZ1NlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZm9ybWx5SnNvbnNjaGVtYTogRm9ybWx5SnNvbnNjaGVtYSxcbiAgKSB7XG5cbiAgICBjb25zdCBTRVJWSUNFX1RPS0VOID0gcm91dGUuc25hcHNob3QuZGF0YVsncmVxdWlyZWRTZXJ2aWNlJ107XG4gICAgdGhpcy5tb2RlbFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxVPig8YW55PlNFUlZJQ0VfVE9LRU4pO1xuXG4gICAgdGhpcy5tb2RlbFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxVPig8YW55PlNFUlZJQ0VfVE9LRU4pO1xuICAgIHRoaXMuY29uZmlybVF1ZXN0aW9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5EaXNjYXJkLlF1ZXN0aW9uJyk7XG4gICAgdGhpcy5jb25maXJtQnV0dG9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5EaXNjYXJkLkNvbmZpcm1CdXR0b24nKTtcbiAgICB0aGlzLnNhdmVNZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5TYXZlLk1lc3NhZ2UnKTtcbiAgfVxuXG4gIGlvblZpZXdXaWxsTGVhdmUoKSB7XG4gICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoKVxuICAgIHRoaXMuYmFzZUZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZnRlclNhdmUobW9kZWw6IFQpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5uZXh0KG1vZGVsKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYmVmb3JlU2F2ZShtb2RlbDogVCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQobW9kZWwpO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuICBpbml0Rm9ybShjdXN0b21JbmNsdWRlOiBzdHJpbmcgPSAnJywgbmV3TW9kZWxJZDogc3RyaW5nID0gbnVsbCwgbW9kZWw6IFQgPSBudWxsKSB7XG4gICAgaWYgKG1vZGVsID09PSBudWxsKSB7XG4gICAgICB0aGlzLm1vZGVsSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSA/PyBuZXdNb2RlbElkO1xuICAgICAgdGhpcy5pc0VkaXQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLm1vZGVsSWQpIHtcbiAgICAgICAgdGhpcy5tb2RlbFNlcnZpY2UuZ2V0KHRoaXMubW9kZWxJZCwgY3VzdG9tSW5jbHVkZSkuc3Vic2NyaWJlKCh2YWx1ZTogVCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmdlbmVyYXRlRm9ybSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlVXJsUm91dGUpIHtcbiAgICAgICAgICBjb25zdCBhZGRVcmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtdKS50b1N0cmluZygpO1xuICAgICAgICAgIHRoaXMuZWRpdFJvdXRlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbYWRkVXJsLnJlcGxhY2UoJ2FkZCcsICdlZGl0JyldKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5nZW5lcmF0ZUZvcm0odGhpcy5tb2RlbFNlcnZpY2UubmV3TW9kZWwoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZWxJZCA9IG1vZGVsLmlkO1xuICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlO1xuICAgICAgdGhpcy5nZW5lcmF0ZUZvcm0obW9kZWwpXG4gICAgfVxuICB9XG4gIGdlbmVyYXRlRm9ybShtb2RlbD86IFQpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMubW9kZWxJZCA9IG1vZGVsLmlkO1xuICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcbiAgICB0aGlzLm9yaWdNb2RlbCA9IF8uY2xvbmVEZWVwKG1vZGVsKTs7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMubW9kZWwubW9kZWxDb25maWcuZm9ybVRpdGxlXG4gICAgdGhpcy5iYXNlRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTsvLz0gdGhpcy5tb2RlbFNlcnZpY2UudG9Gb3JtR3JvdXAodGhpcy5mYiwgbW9kZWwpO1xuICAgIHRoaXMuYWZ0ZXJGb3JtR2VuZXJhdGVkKCk7XG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLm1vZGVsU2VydmljZS5nZXRGb3JtbHlGaWVsZHModGhpcy5tb2RlbClcbiAgfVxuICBwdWJsaWMgYWZ0ZXJGb3JtR2VuZXJhdGVkKCkge1xuXG4gIH1cbiAgcHJpdmF0ZSBnZXRGcm9tR3JvdXAoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwIHwgc3RyaW5nID0gbnVsbCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIGlmICghZm9ybUdyb3VwKVxuICAgICAgcmV0dXJuIHRoaXMuYmFzZUZvcm07XG4gICAgaWYgKGZvcm1Hcm91cCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApXG4gICAgICByZXR1cm4gZm9ybUdyb3VwO1xuICAgIHJldHVybiB0aGlzLmJhc2VGb3JtLmNvbnRyb2xzW2Zvcm1Hcm91cF0gYXMgVW50eXBlZEZvcm1Hcm91cDtcbiAgfVxuICB2YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwIHwgc3RyaW5nID0gbnVsbCkge1xuICAgIGNvbnN0IGZnID0gdGhpcy5nZXRGcm9tR3JvdXAoZm9ybUdyb3VwKVxuICAgIE9iamVjdC5rZXlzKGZnLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGZpZWxkKTtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmZy5nZXQoZmllbGQpO1xuICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVBbGxGb3JtRmllbGRzKGNvbnRyb2wpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGlzRmllbGRWYWxpZChmaWVsZDogc3RyaW5nLCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgfCBzdHJpbmcgPSBudWxsKSB7XG4gICAgY29uc3QgZmcgPSB0aGlzLmdldEZyb21Hcm91cChmb3JtR3JvdXApXG4gICAgY29uc3QgZmlsZWRDb250cm9sID0gZmcuZ2V0KGZpZWxkKVxuICAgIHJldHVybiAhZmlsZWRDb250cm9sLnZhbGlkICYmIGZpbGVkQ29udHJvbC50b3VjaGVkO1xuICB9XG5cbiAgaXNGaWVsZFZhbGlkRnJvbUFycmF5KGFycmF5SW5kZXg6IG51bWJlciwgZmllbGQ6IHN0cmluZywgYXJyYXlOYW1lOiBzdHJpbmcgPSAnZm9ybUFycmF5Jykge1xuICAgIGNvbnN0IGZpZWxkQ29udHJvbCA9IHRoaXMuYmFzZUZvcm0uZ2V0KGFycmF5TmFtZSkuZ2V0KFthcnJheUluZGV4XSkuZ2V0KGZpZWxkKVxuICAgIHJldHVybiAhZmllbGRDb250cm9sLnZhbGlkICYmIGZpZWxkQ29udHJvbC50b3VjaGVkO1xuICB9XG5cbiAgZGlzcGxheUZpZWxkQ3NzKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2hhcy1lcnJvcic6IHRoaXMuaXNGaWVsZFZhbGlkKGZpZWxkKSxcbiAgICAgICdoYXMtZmVlZGJhY2snOiB0aGlzLmlzRmllbGRWYWxpZChmaWVsZClcbiAgICB9O1xuICB9XG4gIG9uQ2FuY2VsKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLmNhbmNlbFJvdXRlXSk7XG4gIH1cbiAgb25TYXZlKCkge1xuICAgIHRoaXMuc2F2ZU1vZGVsKHRoaXMuYmFzZUZvcm0pXG4gIH1cbiAgb25TdWJtaXQobW9kZWwpIHtcbiAgICB0aGlzLnNhdmVNb2RlbCh0aGlzLmJhc2VGb3JtKVxuICB9XG5cbiAgc2F2ZU1vZGVsKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCB8IHN0cmluZyA9IG51bGwpIHtcbiAgICBjb25zdCBmZyA9IHRoaXMuZ2V0RnJvbUdyb3VwKGZvcm1Hcm91cClcbiAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICBpZiAoZmcpIHtcbiAgICAgIGlmIChmZy52YWxpZCkge1xuICAgICAgICB0aGlzLmJlZm9yZVNhdmUodGhpcy5tb2RlbCkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgIHRoaXMubW9kZWxTZXJ2aWNlLnNhdmUodGhpcy5tb2RlbCwgdGhpcy5tb2RlbElkLCB0aGlzLm9yaWdNb2RlbCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKG5ld01vZGVsOiBUKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBuZXdNb2RlbDtcbiAgICAgICAgICAgICAgdGhpcy5tb2RlbElkID0gbmV3TW9kZWwuaWQ7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmVkaXRSb3V0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFZGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGFuZ2VVcmxSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbdGhpcy5lZGl0Um91dGUsIHRoaXMubW9kZWxJZF0pLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmFmdGVyU2F2ZShuZXdNb2RlbCkuc3Vic2NyaWJlKCh2YWw6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBmcm9tKHRoaXMuZGlhbG9nU2VydmljZS5zaG93U2F2ZU1lc3NhZ2UodGhpcy5zYXZlTWVzc2FnZSkpLnN1YnNjcmliZShkID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy51cGRhdGVJbml0aWFsVmFsdWUoKVxuICAgICAgICAgICAgICAgICAgZmcubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvcnMoZXJyKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUFsbEZvcm1GaWVsZHMoZm9ybUdyb3VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2VydmVyRXJyb3JzKGVycjogYW55KSB7XG4gICAgaWYgKGVyci5lcnJvcikge1xuICAgICAgaWYgKGVyci5lcnJvci5lcnJvcnMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbkVycm9ycyA9IGVyci5lcnJvci5lcnJvcnM7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbGlkYXRpb25FcnJvcnMpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmJhc2VGb3JtLmdldCh0aGlzLmZpcnN0Q2hhclRvTG93ZXJDYXNlKHByb3ApKTtcbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAvLyBhY3RpdmF0ZSB0aGUgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgIHNlcnZlckVycm9yOiB7IG1lc3NhZ2U6IHZhbGlkYXRpb25FcnJvcnNbcHJvcF0uam9pbignXFxuJykgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsaWRhdGlvbkVycm9ycyk7XG4gICAgICAgICAga2V5cy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmJhc2VGb3JtLmdldCh0aGlzLmZpcnN0Q2hhclRvTG93ZXJDYXNlKHByb3ApKTtcbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAvLyBhY3RpdmF0ZSB0aGUgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgIHNlcnZlckVycm9yOiB7IG1lc3NhZ2U6IHZhbGlkYXRpb25FcnJvcnNbcHJvcF0uam9pbignXFxuJykgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGZpcnN0Q2hhclRvTG93ZXJDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHN0cjsgLy8gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgaW5wdXQgaXMgZW1wdHlcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdENoYXIgPSBzdHIuY2hhckF0KDApLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcmVzdE9mU3RyaW5nID0gc3RyLnNsaWNlKDEpO1xuXG4gICAgcmV0dXJuIGZpcnN0Q2hhciArIHJlc3RPZlN0cmluZztcbiAgfVxuICBhc3luYyBjYW5EZWFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5iYXNlRm9ybS5kaXJ0eSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSh0aGlzLmNvbmZpcm1RdWVzdGlvbiwgbnVsbCwgdGhpcy5jb25maXJtQnV0dG9uKVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZ2V0RmlsZWROYW1lKGZpbGVkVHJhbnNsYXRpb25LZXk6IHN0cmluZykge1xuICAgIHJldHVybiB7IGZpZWxkOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZpbGVkVHJhbnNsYXRpb25LZXkpIH07XG4gIH1cbiAgZ2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGVycm9yOiBhbnksIGZpZWxkTGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGdldEVycm9yTWVzc2FnZUZyb21BcnJheShhcnJheUluZGV4OiBudW1iZXIsIGZpZWxkOiBzdHJpbmcsIGZpbGVkVHJhbnNsYXRpb25LZXk6IHN0cmluZywgYXJyYXlOYW1lOiBzdHJpbmcgPSAnZm9ybUFycmF5Jyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy5iYXNlRm9ybS5nZXQoYXJyYXlOYW1lKS5nZXQoW2FycmF5SW5kZXhdKS5nZXQoZmllbGQpXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXJyb3JNZXNzYWdlRm9yRmllbGQoZmllbGRDb250cm9sLCBmaWxlZFRyYW5zbGF0aW9uS2V5KVxuICB9XG4gIGdldEVycm9yTWVzc2FnZShmaWVsZDogc3RyaW5nLCBmaWxlZFRyYW5zbGF0aW9uS2V5OiBzdHJpbmcsIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCB8IHN0cmluZyA9IG51bGwpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZnID0gdGhpcy5nZXRGcm9tR3JvdXAoZm9ybUdyb3VwKVxuICAgIHJldHVybiB0aGlzLmdldEVycm9yTWVzc2FnZUZvckZpZWxkKGZnLmdldChmaWVsZCksIGZpbGVkVHJhbnNsYXRpb25LZXkpXG4gIH1cbiAgZ2V0RXJyb3JNZXNzYWdlRm9yRmllbGQoZmllbGRDb250cm9sOiBhbnksIGZpbGVkVHJhbnNsYXRpb25LZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZENvbnRyb2wuZXJyb3JzO1xuICAgIGNvbnN0IGZpZWxkTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZpbGVkVHJhbnNsYXRpb25LZXkpO1xuICAgIGxldCBydmFsdWUgPSAnJztcbiAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgIGlmIChlcnJvclsncmVxdWlyZWQnXSA9PT0gdHJ1ZSkge1xuICAgICAgICBydmFsdWUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdHZW5lcmFsLkZpZWxkLlJlcXVpcmVkJywgeyBmaWVsZDogZmllbGRMYWJlbCB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvclsnbWlubGVuZ3RoJ10pIHtcbiAgICAgICAgcnZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnR2VuZXJhbC5GaWVsZC5NaW5MZW5ndGgnLCB7IGZpZWxkOiBmaWVsZExhYmVsLCByZXF1aXJlZExlbmd0aDogZXJyb3IubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yWydlbWFpbCddID09PSB0cnVlKSB7XG4gICAgICAgIHJ2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuRmllbGQuSW52YWxpZEVtYWlsJyk7XG4gICAgICB9XG4gICAgICBpZiAoZXJyb3JbJ3VybCddID09PSB0cnVlKSB7XG4gICAgICAgIHJ2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuRmllbGQuSW52YWxpZFVybCcpO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yWydzZXJ2ZXJFcnJvciddKSB7XG4gICAgICAgIHJ2YWx1ZSA9IGVycm9yWydzZXJ2ZXJFcnJvciddO1xuICAgICAgfVxuICAgICAgaWYgKHJ2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcnZhbHVlID0gdGhpcy5nZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IsIGZpZWxkTGFiZWwpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcnZhbHVlO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlciBbdHJhbnNsdWNlbnRdPVwidHJ1ZVwiPlxuICA8aW9uLXRvb2xiYXI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1tZW51LWJ1dHRvbj48L2lvbi1tZW51LWJ1dHRvbj5cbiAgICAgIDxpb24tYmFjay1idXR0b24+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclwiPjwvbmctY29udGFpbmVyPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgW2Z1bGxzY3JlZW5dPVwidHJ1ZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYmFzZUZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQobW9kZWwpXCI+XG4gICAgICA8Zm9ybWx5LWZvcm0gW2Zvcm1dPVwiYmFzZUZvcm1cIiBbZmllbGRzXT1cImZpZWxkc1wiIFttb2RlbF09XCJtb2RlbFwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIj48L2Zvcm1seS1mb3JtPlxuICAgIDwvZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG48L2lvbi1jb250ZW50PlxuXG48bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgPGlvbi10aXRsZSAgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj57e3RpdGxlIHx0cmFuc2xhdGV9fTwvaW9uLXRpdGxlPlxuICA8aW9uLWJ1dHRvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBzbG90PVwiZW5kXCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiYmFzZUZvcm0uaW52YWxpZCB8fCAhYmFzZUZvcm0uZGlydHlcIj5cbiAgICA8aW9uLWljb24gc2l6ZT1cImxhcmdlXCIgbmFtZT1cInNhdmVcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -251,10 +251,10 @@ export class RslIonicDataTableComponent {
251
251
  });
252
252
  return result;
253
253
  }
254
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicDataTableComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.Location }, { token: i0.Injector }, { token: i4.NavController }, { token: i5.IonicDialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
255
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: RslIonicDataTableComponent, isStandalone: true, selector: "app-rsl-ionic-data-table", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", defaultSortDirection: "defaultSortDirection", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", deleteDisableRule: "deleteDisableRule", hasAdd: "hasAdd", canDelete: "canDelete", canEdit: "canEdit", model: "model", modelService: "modelService" }, viewQueries: [{ propertyName: "actionsTmpl", first: true, predicate: ["actionsTmpl"], descendants: true, static: true }], ngImport: i0, template: "<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ngx-datatable class=\"material fullscreen rls-server-scrolling\" style=\"top: 115px\" [rows]=\"data\" [columns]=\"columns\"\n [columnMode]=\"ColumnMode.standard\" [headerHeight]=\"headerHeight\" [rowHeight]=\"rowHeight\" [scrollbarV]=\"true\"\n [loadingIndicator]=\"isLoading\" [scrollbarH]=\"true\" (scroll)=\"onScroll($event.offsetY)\"\n >\n </ngx-datatable>\n \n <ng-template #actionsTmpl let-row=\"row\" let-value=\"value\">\n <ion-button fill=\"clear\" *ngIf=\"canEdit\" (click)='editModel(row)'>\n <ion-icon slot=\"icon-only\" name=\"create\" (click)='editModel(row)'></ion-icon>\n </ion-button>\n <ion-button fill=\"clear\" *ngIf=\"deleteEnabled(row)\" (click)='deleteModel(row)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='deleteModel(row)'></ion-icon>\n </ion-button>\n </ng-template>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\" *ngIf=\"hasAdd\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>", styles: [".rls-server-scrolling{height:calc(100vh - 110px)}::ng-deep .progress-linear{position:fixed!important;bottom:0}::ng-deep .actions-cell{padding:5px 0 0 .9rem!important}::ng-deep .align-right{text-align:right!important}\n"], dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i4.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i4.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: i4.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i4.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i4.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }] }); }
254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RslIonicDataTableComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.Location }, { token: i0.Injector }, { token: i4.NavController }, { token: i5.IonicDialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: RslIonicDataTableComponent, isStandalone: true, selector: "app-rsl-ionic-data-table", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", defaultSortDirection: "defaultSortDirection", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", deleteDisableRule: "deleteDisableRule", hasAdd: "hasAdd", canDelete: "canDelete", canEdit: "canEdit", model: "model", modelService: "modelService" }, viewQueries: [{ propertyName: "actionsTmpl", first: true, predicate: ["actionsTmpl"], descendants: true, static: true }], ngImport: i0, template: "<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ngx-datatable class=\"material fullscreen rls-server-scrolling\" style=\"top: 115px\" [rows]=\"data\" [columns]=\"columns\"\n [columnMode]=\"ColumnMode.standard\" [headerHeight]=\"headerHeight\" [rowHeight]=\"rowHeight\" [scrollbarV]=\"true\"\n [loadingIndicator]=\"isLoading\" [scrollbarH]=\"true\" (scroll)=\"onScroll($event.offsetY)\"\n >\n </ngx-datatable>\n \n <ng-template #actionsTmpl let-row=\"row\" let-value=\"value\">\n <ion-button fill=\"clear\" *ngIf=\"canEdit\" (click)='editModel(row)'>\n <ion-icon slot=\"icon-only\" name=\"create\" (click)='editModel(row)'></ion-icon>\n </ion-button>\n <ion-button fill=\"clear\" *ngIf=\"deleteEnabled(row)\" (click)='deleteModel(row)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='deleteModel(row)'></ion-icon>\n </ion-button>\n </ng-template>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\" *ngIf=\"hasAdd\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>", styles: [".rls-server-scrolling{height:calc(100vh - 110px)}::ng-deep .progress-linear{position:fixed!important;bottom:0}::ng-deep .actions-cell{padding:5px 0 0 .9rem!important}::ng-deep .align-right{text-align:right!important}\n"], dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i4.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i4.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: i4.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i4.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i4.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }] }); }
256
256
  }
257
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicDataTableComponent, decorators: [{
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RslIonicDataTableComponent, decorators: [{
258
258
  type: Component,
259
259
  args: [{ standalone: true, selector: 'app-rsl-ionic-data-table', imports: [RslIonicModuleModule], template: "<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ngx-datatable class=\"material fullscreen rls-server-scrolling\" style=\"top: 115px\" [rows]=\"data\" [columns]=\"columns\"\n [columnMode]=\"ColumnMode.standard\" [headerHeight]=\"headerHeight\" [rowHeight]=\"rowHeight\" [scrollbarV]=\"true\"\n [loadingIndicator]=\"isLoading\" [scrollbarH]=\"true\" (scroll)=\"onScroll($event.offsetY)\"\n >\n </ngx-datatable>\n \n <ng-template #actionsTmpl let-row=\"row\" let-value=\"value\">\n <ion-button fill=\"clear\" *ngIf=\"canEdit\" (click)='editModel(row)'>\n <ion-icon slot=\"icon-only\" name=\"create\" (click)='editModel(row)'></ion-icon>\n </ion-button>\n <ion-button fill=\"clear\" *ngIf=\"deleteEnabled(row)\" (click)='deleteModel(row)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='deleteModel(row)'></ion-icon>\n </ion-button>\n </ng-template>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\" *ngIf=\"hasAdd\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>", styles: [".rls-server-scrolling{height:calc(100vh - 110px)}::ng-deep .progress-linear{position:fixed!important;bottom:0}::ng-deep .actions-cell{padding:5px 0 0 .9rem!important}::ng-deep .align-right{text-align:right!important}\n"] }]
260
260
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.Location }, { type: i0.Injector }, { type: i4.NavController }, { type: i5.IonicDialogService }, { type: i0.ElementRef }]; }, propDecorators: { actionsTmpl: [{
@@ -289,4 +289,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
289
289
  }], modelService: [{
290
290
  type: Input
291
291
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtZGF0YS10YWJsZS9yc2wtaW9uaWMtZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL3JzbC1pb25pYy1kYXRhLXRhYmxlL3JzbC1pb25pYy1kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLGNBQWMsRUFBMEIsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEtBQUssU0FBUyxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQVNyRSxNQUFNLE9BQU8sMEJBQTBCO0lBbUNyQyxZQUNTLE1BQWMsRUFDZCxLQUFxQixFQUNyQixTQUEyQixF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S0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCYXNlUXVlcnlEYXRhLCBCYXNlU2VydmljZSwgUnVsZSB9IGZyb20gJ0Byb3NvZnRsYWIvY29yZSc7XG5pbXBvcnQgeyBCYXNlTW9kZWxGb3JtbHkgfSBmcm9tICdAcm9zb2Z0bGFiL2Zvcm1seSc7XG5pbXBvcnQgeyBDb2x1bW5Nb2RlLCBTZWxlY3Rpb25UeXBlIH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xuaW1wb3J0ICogYXMganNvbkxvZ2ljIGZyb20gJ2pzb24tbG9naWMtanMvbG9naWMuanMnO1xuaW1wb3J0IHsgSW9uaWNEYXRhVGFibGVMYXlvdXRDb25maWcgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lvbmljLWRhdGF0YWJsZS1sYXlvdXQnO1xuaW1wb3J0IHsgSW9uaWNEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW9uaWMtZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnNsSW9uaWNNb2R1bGVNb2R1bGUgfSBmcm9tICcuLi8uLi9yc2wtaW9uaWMtbW9kdWxlLm1vZHVsZSc7XG5leHBvcnQgZGVjbGFyZSB0eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJyB8ICcnO1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYXBwLXJzbC1pb25pYy1kYXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JzbC1pb25pYy1kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnNsLWlvbmljLWRhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1JzbElvbmljTW9kdWxlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUnNsSW9uaWNEYXRhVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VNb2RlbEZvcm1seSwgVSBleHRlbmRzIEJhc2VTZXJ2aWNlPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbnNUbXBsJywgeyBzdGF0aWM6IHRydWUgfSkgYWN0aW9uc1RtcGw6IFRlbXBsYXRlUmVmPGFueT47XG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93U2VyYWNoOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IHN0cmluZztcbiAgQElucHV0KCkgY3VzdG9tSW5jbHVkZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0U29ydDogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0U29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbiAgQElucHV0KCkgZGVsZXRlUHJvcGVydHlOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlZmF1bHRGaWx0ZXI6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd0hlYWRlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgZGVsZXRlRGlzYWJsZVJ1bGU6IFJ1bGVbXTtcbiAgQElucHV0KCkgaGFzQWRkOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5EZWxldGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkVkaXQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgbW9kZWw6IFQ7XG4gIEBJbnB1dCgpIG1vZGVsU2VydmljZTogVVxuXG4gIGRhdGE6IGFueVtdID0gW107XG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMTtcbiAgcGFnZVNpemU6IG51bWJlciA9IDMwXG5cbiAgYmFzZVBhdGg6IHN0cmluZztcblxuICBjb2x1bW5zID0gW107XG4gIGFsbENvbHVtbnMgPSBbXTtcbiAgQ29sdW1uTW9kZSA9IENvbHVtbk1vZGU7XG4gIFNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25UeXBlO1xuXG4gIHJlYWRvbmx5IGhlYWRlckhlaWdodCA9IDUwO1xuICByZWFkb25seSByb3dIZWlnaHQgPSA1MDtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBmaWx0ZXJWYWx1ZTogc3RyaW5nO1xuICBvbGRPZmZzZXRZOiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IElvbmljRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG5cbiAgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdzaG93U2VyYWNoJywgZmFsc2UpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3NlYXJjaEZpZWxkcycsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2N1c3RvbUluY2x1ZGUnLCBudWxsKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWZhdWx0U29ydCcsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlZmF1bHRTb3J0RGlyZWN0aW9uJywgJycpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlbGV0ZVByb3BlcnR5TmFtZScsICduYW1lJyk7XG4gICAgdGhpcy5zZXRWYWx1ZUZyb21TbmFwc2hvdCh0aGlzLCB0aGlzLnJvdXRlLnNuYXBzaG90LCAnZGVmYXVsdEZpbHRlcicsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3Nob3dIZWFkZXInLCB0cnVlKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWxldGVEaXNhYmxlUnVsZScsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2hhc0FkZCcsIHRydWUpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2NhbkRlbGV0ZScsIHRydWUpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2NhbkVkaXQnLCB0cnVlKTtcbiAgICBpZiAoIXRoaXMubW9kZWxTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBTRVJWSUNFX1RPS0VOID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydyZXF1aXJlZFNlcnZpY2UnXTtcbiAgICAgIHRoaXMubW9kZWxTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8VT4oPGFueT5TRVJWSUNFX1RPS0VOKTtcbiAgICB9XG4gICAgdGhpcy5tb2RlbCA9IHRoaXMubW9kZWxTZXJ2aWNlLm5ld01vZGVsKClcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5tb2RlbC5tb2RlbENvbmZpZy5mb3JtVGl0bGVcbiAgICB0aGlzLmdldExpc3RMYXlvdXQoKVxuXG4gICAgY29uc3QgY3VycmVudFVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10gPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKS5tYXAoc2VnbWVudCA9PiBuZXcgVXJsU2VnbWVudChzZWdtZW50LCB7fSkpO1xuICAgIHRoaXMuYmFzZVBhdGggPSBjdXJyZW50VXJsU2VnbWVudHMubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoKS5qb2luKCcvJyk7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgLy8gTmF2aWdhdGlvbiB0byBhbm90aGVyIHBhZ2UgaXMgYWJvdXQgdG8gb2NjdXJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gMVxuICAgICAgICAvLyBQZXJmb3JtIGFjdGlvbnMgb3IgdXBkYXRlIGNvbXBvbmVudCBhcyBuZWVkZWRcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgLy8gdGhpcy5vblNjcm9sbCgwKTtcbiAgfVxuICBzZXRWYWx1ZUZyb21TbmFwc2hvdDxUPihjb21wb25lbnQ6IGFueSwgc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoY29tcG9uZW50W2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGRhdGFGcm9tU25hcHNob3QgPSBzbmFwc2hvdC5kYXRhW2tleV07XG4gICAgICBpZiAoZGF0YUZyb21TbmFwc2hvdCA9PT0gbnVsbCB8fCBkYXRhRnJvbVNuYXBzaG90ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0YUZyb21TbmFwc2hvdCA9IHNuYXBzaG90LnBhcmFtc1trZXldO1xuICAgICAgfVxuICAgICAgY29tcG9uZW50W2tleV0gPSBkYXRhRnJvbVNuYXBzaG90ICE9PSB1bmRlZmluZWQgPyBkYXRhRnJvbVNuYXBzaG90IDogZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfVxuICBvblNjcm9sbChvZmZzZXRZOiBudW1iZXIpIHtcbiAgICBpZiAob2Zmc2V0WSkge1xuICAgICAgaWYgKHRoaXMub2xkT2Zmc2V0WSAhPT0gb2Zmc2V0WSkge1xuICAgICAgICB0aGlzLm9sZE9mZnNldFkgPSBvZmZzZXRZO1xuICAgICAgICBjb25zdCB2aWV3SGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAtIHRoaXMuaGVhZGVySGVpZ2h0O1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nICYmIG9mZnNldFkgKyB2aWV3SGVpZ2h0ID49IHRoaXMuZGF0YS5sZW5ndGggKiB0aGlzLnJvd0hlaWdodCkge1xuICAgICAgICAgIC8vIHRvdGFsIG51bWJlciBvZiByZXN1bHRzIHRvIGxvYWRcbiAgICAgICAgICBsZXQgbGltaXQgPSB0aGlzLnBhZ2VTaXplO1xuXG4gICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGFueSByZXN1bHRzIHlldFxuICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiByb3dzIHRoYXQgZml0IHdpdGhpbiB2aWV3cG9ydFxuICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSBNYXRoLmNlaWwodmlld0hlaWdodCAvIHRoaXMucm93SGVpZ2h0KTtcblxuICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBsaW1pdCB0byBwYWdlU2l6ZSBzdWNoIHRoYXQgd2UgZmlsbCB0aGUgZmlyc3QgcGFnZSBlbnRpcmVseVxuICAgICAgICAgICAgLy8gKG90aGVyd2lzZSwgd2Ugd29uJ3QgYmUgYWJsZSB0byBzY3JvbGwgcGFzdCBpdClcbiAgICAgICAgICAgIGxpbWl0ID0gTWF0aC5tYXgocGFnZVNpemUsIHRoaXMucGFnZVNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLnBhZ2VJbmRleFxuICAgICAgICAgIHRoaXMucGFnZVNpemUgPSBsaW1pdFxuICAgICAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICAgICAgICAvLyB0aGlzLmxvYWRQYWdlKGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBhc3luYyBpb25WaWV3V2lsbEVudGVyKCkge1xuICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuICBhc3luYyBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG4gIGxvYWREYXRhKGV2ZW50ID0gbnVsbCkge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcbiAgICBsZXQgc29ydHMgPSAnJztcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuZGVmYXVsdFNvcnQpIHtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgc29ydHMgPSAnLScgKyB0aGlzLmRlZmF1bHRTb3J0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc29ydHMgPSB0aGlzLmRlZmF1bHRTb3J0O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zaG93U2VyYWNoKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSkge1xuICAgICAgICBjb25zdCB5ID0gJygnICsgdGhpcy5zZWFyY2hGaWVsZHMucmVwbGFjZSgnLCcsICd8JykgKyAnKSc7XG4gICAgICAgIGZpbHRlcnMucHVzaCh5ICsgJ0A9KicgKyB0aGlzLmZpbHRlclZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZGVmYXVsdEZpbHRlcikge1xuICAgICAgZmlsdGVycy5wdXNoKHRoaXMuZGVmYXVsdEZpbHRlcilcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJzVmFsdWUgPSBmaWx0ZXJzLmpvaW4oJywgJyk7XG4gICAgICB0aGlzLm1vZGVsU2VydmljZS5nZXRBbGwodGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZVNpemUsIHNvcnRzLCBmaWx0ZXJzVmFsdWUsIHRoaXMuY3VzdG9tSW5jbHVkZSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEJhc2VRdWVyeURhdGE8VD4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggIT09IHJlc3BvbnNlLmdldE1ldGEoKS5tZXRhLmNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCsrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gaWYgKHRoaXMuZmlsdGVyVmFsdWUpXG4gICAgICAgICAgLy8gICB0aGlzLmRhdGEgPSByZXNwb25zZS5nZXRNb2RlbHMoKTtcbiAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgY29uc3Qgcm93cyA9IFsuLi50aGlzLmRhdGEsIC4uLnJlc3BvbnNlLmdldE1vZGVscygpXTtcbiAgICAgICAgICB0aGlzLmRhdGEgPSByb3dzO1xuICAgICAgICAgIC8vIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5jb25jYXQoKTtcblxuICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICB9LCA3MDApO1xuICB9XG4gIGFzeW5jIGhhbmRsZVJlZnJlc2goZXZlbnQpIHtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XG4gIH1cbiAgb25BZGQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5iYXNlUGF0aClcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5iYXNlUGF0aCArICcvYWRkJ10pXG4gICAgLy8gdGhpcy5uYXZDdHJsLm5hdmlnYXRlRm9yd2FyZCh0aGlzLmJhc2VQYXRoICsgJy9hZGQnKTtcbiAgfVxuICBlZGl0TW9kZWwobW9kZWw6IEJhc2VNb2RlbEZvcm1seSkge1xuICAgIGlmICh0aGlzLmNhbkVkaXQpXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5iYXNlUGF0aCArICcvZWRpdC8nLCBtb2RlbC5pZF0pO1xuICAgIC8vIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUZvcndhcmQodGhpcy5iYXNlUGF0aCArICcvZWRpdC8nICsgbW9kZWwuaWQpO1xuICB9XG4gIGdldExpc3RMYXlvdXQoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5tb2RlbFNlcnZpY2UubmV3TW9kZWwoKTsgICAgXG4gICAgfVxuICAgIHRoaXMuYWxsQ29sdW1ucz1bXTtcbiAgICB0aGlzLmNvbHVtbnM9W107XG4gICAgdGhpcy5hbGxDb2x1bW5zID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnSW9uaWNEYXRhVGFibGVMYXlvdXQnLCB0aGlzLm1vZGVsKS5tYXAoKGl0ZW06IElvbmljRGF0YVRhYmxlTGF5b3V0Q29uZmlnKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0uaXNUcmFuc2xhdGVkKSB7XG4gICAgICAgIGl0ZW0ubmFtZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoaXRlbS5uYW1lKTtcbiAgICAgICAgaXRlbS5pc1RyYW5zbGF0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWxsQ29sdW1ucy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG5cbiAgICBpZiAodGhpcy5jYW5EZWxldGUgfHwgdGhpcy5jYW5FZGl0KSB7XG4gICAgICB0aGlzLmFsbENvbHVtbnMucHVzaCh7XG4gICAgICAgIGNlbGxUZW1wbGF0ZTogdGhpcy5hY3Rpb25zVG1wbCxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGNlbGxDbGFzczogJ2FjdGlvbnMtY2VsbCcsXG4gICAgICAgIGRyYWdnYWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAvLyB3aWR0aDogMTAwLFxuICAgICAgICAvLyBtYXhXaWR0aDogMTAwLFxuICAgICAgICAvLyBtaW5XaWR0aDogMTAwXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmFsbENvbHVtbnMuZmlsdGVyKChpdGVtOiBJb25pY0RhdGFUYWJsZUxheW91dENvbmZpZykgPT4gaXRlbS52aXNpYmxlKTtcbiAgICAvLyBTb3J0IHRoZSBjb2x1bW5zIGFycmF5IGJ5IHRoZSBvcmRlciBwcm9wZXJ0eVxuXG4gIH1cbiAgZGVsZXRlTW9kZWwobW9kZWwpIHtcbiAgICBjb25zdCBtc2cgPSAnRG8geW91IHdhbnQgdG8gZGVsZXRlICcgKyBtb2RlbFt0aGlzLmRlbGV0ZVByb3BlcnR5TmFtZV0gKyAnPyc7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0obXNnKS50aGVuKFxuICAgICAgKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsU2VydmljZS5kZWxldGUobW9kZWwuaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wRGF0YSA9IFtdO1xuICAgICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZE9iamVjdC5lbWl0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5kYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICB0ZW1wRGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRlbXBEYXRhO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgZGVsZXRlRW5hYmxlZChtb2RlbDogVCkge1xuICAgIGlmICh0aGlzLmNhbkRlbGV0ZSkge1xuICAgICAgaWYgKHRoaXMuZGVsZXRlRGlzYWJsZVJ1bGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVSdWxlKHRoaXMuZGVsZXRlRGlzYWJsZVJ1bGUsIG1vZGVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZXZhbHVhdGVSdWxlKHJ1bGVzOiBSdWxlW10sIG1vZGVsOiBUKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgcnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgIGxldCBqc29uUnVsZTogYW55O1xuICAgICAgaWYgKHR5cGVvZiBydWxlLnJ1bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGpzb25SdWxlID0gSlNPTi5wYXJzZShydWxlLnJ1bGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAganNvblJ1bGUgPSBydWxlLnJ1bGU7XG4gICAgICB9XG4gICAgICBpZiAocnVsZS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSAneycgKyBydWxlLnBhcmFtZXRlcnMubWFwKChpdGVtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXR1cm4gJ1wiJyArIGl0ZW0gKyAnXCI6XCInICsgbW9kZWxbaXRlbV0gKyAnXCInO1xuICAgICAgICB9KS5qb2luKCcsJykgKyAnfSc7XG4gICAgICAgIHJlc3VsdCA9IGpzb25Mb2dpYy5hcHBseShqc29uUnVsZSwgSlNPTi5wYXJzZShkYXRhKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBqc29uTG9naWMuYXBwbHkoanNvblJ1bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG59XG4iLCI8aW9uLWhlYWRlciAqbmdJZj1cInNob3dIZWFkZXJcIj5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tbWVudS1idXR0b24+PC9pb24tbWVudS1idXR0b24+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9pb24tdG9vbGJhcj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWFyY2hcIj48L25nLWNvbnRhaW5lcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IFtmdWxsc2NyZWVuXT1cInRydWVcIj5cblxuICA8aW9uLXJlZnJlc2hlciBzbG90PVwiZml4ZWRcIiAoaW9uUmVmcmVzaCk9XCJoYW5kbGVSZWZyZXNoKCRldmVudClcIj5cbiAgICA8aW9uLXJlZnJlc2hlci1jb250ZW50PjwvaW9uLXJlZnJlc2hlci1jb250ZW50PlxuICA8L2lvbi1yZWZyZXNoZXI+XG5cbiAgPG5neC1kYXRhdGFibGUgY2xhc3M9XCJtYXRlcmlhbCBmdWxsc2NyZWVuIHJscy1zZXJ2ZXItc2Nyb2xsaW5nXCIgc3R5bGU9XCJ0b3A6IDExNXB4XCIgW3Jvd3NdPVwiZGF0YVwiIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtjb2x1bW5Nb2RlXT1cIkNvbHVtbk1vZGUuc3RhbmRhcmRcIiBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodFwiIFtyb3dIZWlnaHRdPVwicm93SGVpZ2h0XCIgW3Njcm9sbGJhclZdPVwidHJ1ZVwiXG4gICAgW2xvYWRpbmdJbmRpY2F0b3JdPVwiaXNMb2FkaW5nXCIgW3Njcm9sbGJhckhdPVwidHJ1ZVwiIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50Lm9mZnNldFkpXCJcbiAgID5cbiAgPC9uZ3gtZGF0YXRhYmxlPlxuICBcbiAgPG5nLXRlbXBsYXRlICNhY3Rpb25zVG1wbCBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIj5cbiAgICA8aW9uLWJ1dHRvbiAgZmlsbD1cImNsZWFyXCIgKm5nSWY9XCJjYW5FZGl0XCIgKGNsaWNrKT0nZWRpdE1vZGVsKHJvdyknPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY3JlYXRlXCIgKGNsaWNrKT0nZWRpdE1vZGVsKHJvdyknPjwvaW9uLWljb24+XG4gICAgPC9pb24tYnV0dG9uPlxuICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiICpuZ0lmPVwiZGVsZXRlRW5hYmxlZChyb3cpXCIgKGNsaWNrKT0nZGVsZXRlTW9kZWwocm93KSc+XG4gICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRyYXNoXCIgKGNsaWNrKT0nZGVsZXRlTW9kZWwocm93KSc+PC9pb24taWNvbj5cbiAgICA8L2lvbi1idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICA8aW9uLXRpdGxlIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+e3t0aXRsZX19PC9pb24tdGl0bGU+XG4gIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwib25BZGQoKVwiIGZpbGw9XCJjbGVhclwiICpuZ0lmPVwiaGFzQWRkXCI+XG4gICAgPGlvbi1pY29uIHNpemU9XCJsYXJnZVwiIG5hbWU9XCJhZGRcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGlvbi10b29sYmFyICpuZ0lmPVwic2hvd1NlcmFjaFwiPlxuICAgIDxpb24tc2VhcmNoYmFyIFtkZWJvdW5jZV09XCIxMDAwXCIgKGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiPjwvaW9uLXNlYXJjaGJhcj5cbiAgPC9pb24tdG9vbGJhcj5cbjwvbmctdGVtcGxhdGU+Il19
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLWRhdGEtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtZGF0YS10YWJsZS9yc2wtaW9uaWMtZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL3JzbC1pb25pYy1kYXRhLXRhYmxlL3JzbC1pb25pYy1kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLGNBQWMsRUFBMEIsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEtBQUssU0FBUyxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7OztBQVNyRSxNQUFNLE9BQU8sMEJBQTBCO0lBbUNyQyxZQUNTLE1BQWMsRUFDZCxLQUFxQixFQUNyQixTQUEyQixF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S0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCYXNlUXVlcnlEYXRhLCBCYXNlU2VydmljZSwgUnVsZSB9IGZyb20gJ0Byb3NvZnRsYWIvY29yZSc7XG5pbXBvcnQgeyBCYXNlTW9kZWxGb3JtbHkgfSBmcm9tICdAcm9zb2Z0bGFiL2Zvcm1seSc7XG5pbXBvcnQgeyBDb2x1bW5Nb2RlLCBTZWxlY3Rpb25UeXBlIH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xuaW1wb3J0ICogYXMganNvbkxvZ2ljIGZyb20gJ2pzb24tbG9naWMtanMvbG9naWMuanMnO1xuaW1wb3J0IHsgSW9uaWNEYXRhVGFibGVMYXlvdXRDb25maWcgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lvbmljLWRhdGF0YWJsZS1sYXlvdXQnO1xuaW1wb3J0IHsgSW9uaWNEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW9uaWMtZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnNsSW9uaWNNb2R1bGVNb2R1bGUgfSBmcm9tICcuLi8uLi9yc2wtaW9uaWMtbW9kdWxlLm1vZHVsZSc7XG5leHBvcnQgZGVjbGFyZSB0eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJyB8ICcnO1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYXBwLXJzbC1pb25pYy1kYXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JzbC1pb25pYy1kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcnNsLWlvbmljLWRhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1JzbElvbmljTW9kdWxlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUnNsSW9uaWNEYXRhVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VNb2RlbEZvcm1seSwgVSBleHRlbmRzIEJhc2VTZXJ2aWNlPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbnNUbXBsJywgeyBzdGF0aWM6IHRydWUgfSkgYWN0aW9uc1RtcGw6IFRlbXBsYXRlUmVmPGFueT47XG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93U2VyYWNoOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IHN0cmluZztcbiAgQElucHV0KCkgY3VzdG9tSW5jbHVkZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0U29ydDogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0U29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbjtcbiAgQElucHV0KCkgZGVsZXRlUHJvcGVydHlOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlZmF1bHRGaWx0ZXI6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd0hlYWRlcjogYm9vbGVhbjtcbiAgQElucHV0KCkgZGVsZXRlRGlzYWJsZVJ1bGU6IFJ1bGVbXTtcbiAgQElucHV0KCkgaGFzQWRkOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5EZWxldGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkVkaXQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgbW9kZWw6IFQ7XG4gIEBJbnB1dCgpIG1vZGVsU2VydmljZTogVVxuXG4gIGRhdGE6IGFueVtdID0gW107XG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMTtcbiAgcGFnZVNpemU6IG51bWJlciA9IDMwXG5cbiAgYmFzZVBhdGg6IHN0cmluZztcblxuICBjb2x1bW5zID0gW107XG4gIGFsbENvbHVtbnMgPSBbXTtcbiAgQ29sdW1uTW9kZSA9IENvbHVtbk1vZGU7XG4gIFNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25UeXBlO1xuXG4gIHJlYWRvbmx5IGhlYWRlckhlaWdodCA9IDUwO1xuICByZWFkb25seSByb3dIZWlnaHQgPSA1MDtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBmaWx0ZXJWYWx1ZTogc3RyaW5nO1xuICBvbGRPZmZzZXRZOiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IElvbmljRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG5cbiAgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdzaG93U2VyYWNoJywgZmFsc2UpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3NlYXJjaEZpZWxkcycsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2N1c3RvbUluY2x1ZGUnLCBudWxsKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWZhdWx0U29ydCcsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlZmF1bHRTb3J0RGlyZWN0aW9uJywgJycpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlbGV0ZVByb3BlcnR5TmFtZScsICduYW1lJyk7XG4gICAgdGhpcy5zZXRWYWx1ZUZyb21TbmFwc2hvdCh0aGlzLCB0aGlzLnJvdXRlLnNuYXBzaG90LCAnZGVmYXVsdEZpbHRlcicsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3Nob3dIZWFkZXInLCB0cnVlKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWxldGVEaXNhYmxlUnVsZScsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2hhc0FkZCcsIHRydWUpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2NhbkRlbGV0ZScsIHRydWUpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2NhbkVkaXQnLCB0cnVlKTtcbiAgICBpZiAoIXRoaXMubW9kZWxTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBTRVJWSUNFX1RPS0VOID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydyZXF1aXJlZFNlcnZpY2UnXTtcbiAgICAgIHRoaXMubW9kZWxTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8VT4oPGFueT5TRVJWSUNFX1RPS0VOKTtcbiAgICB9XG4gICAgdGhpcy5tb2RlbCA9IHRoaXMubW9kZWxTZXJ2aWNlLm5ld01vZGVsKClcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5tb2RlbC5tb2RlbENvbmZpZy5mb3JtVGl0bGVcbiAgICB0aGlzLmdldExpc3RMYXlvdXQoKVxuXG4gICAgY29uc3QgY3VycmVudFVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10gPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKS5tYXAoc2VnbWVudCA9PiBuZXcgVXJsU2VnbWVudChzZWdtZW50LCB7fSkpO1xuICAgIHRoaXMuYmFzZVBhdGggPSBjdXJyZW50VXJsU2VnbWVudHMubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoKS5qb2luKCcvJyk7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgLy8gTmF2aWdhdGlvbiB0byBhbm90aGVyIHBhZ2UgaXMgYWJvdXQgdG8gb2NjdXJcbiAgICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICAgIHRoaXMucGFnZUluZGV4ID0gMVxuICAgICAgICAvLyBQZXJmb3JtIGFjdGlvbnMgb3IgdXBkYXRlIGNvbXBvbmVudCBhcyBuZWVkZWRcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgLy8gdGhpcy5vblNjcm9sbCgwKTtcbiAgfVxuICBzZXRWYWx1ZUZyb21TbmFwc2hvdDxUPihjb21wb25lbnQ6IGFueSwgc25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoY29tcG9uZW50W2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGRhdGFGcm9tU25hcHNob3QgPSBzbmFwc2hvdC5kYXRhW2tleV07XG4gICAgICBpZiAoZGF0YUZyb21TbmFwc2hvdCA9PT0gbnVsbCB8fCBkYXRhRnJvbVNuYXBzaG90ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0YUZyb21TbmFwc2hvdCA9IHNuYXBzaG90LnBhcmFtc1trZXldO1xuICAgICAgfVxuICAgICAgY29tcG9uZW50W2tleV0gPSBkYXRhRnJvbVNuYXBzaG90ICE9PSB1bmRlZmluZWQgPyBkYXRhRnJvbVNuYXBzaG90IDogZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfVxuICBvblNjcm9sbChvZmZzZXRZOiBudW1iZXIpIHtcbiAgICBpZiAob2Zmc2V0WSkge1xuICAgICAgaWYgKHRoaXMub2xkT2Zmc2V0WSAhPT0gb2Zmc2V0WSkge1xuICAgICAgICB0aGlzLm9sZE9mZnNldFkgPSBvZmZzZXRZO1xuICAgICAgICBjb25zdCB2aWV3SGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAtIHRoaXMuaGVhZGVySGVpZ2h0O1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nICYmIG9mZnNldFkgKyB2aWV3SGVpZ2h0ID49IHRoaXMuZGF0YS5sZW5ndGggKiB0aGlzLnJvd0hlaWdodCkge1xuICAgICAgICAgIC8vIHRvdGFsIG51bWJlciBvZiByZXN1bHRzIHRvIGxvYWRcbiAgICAgICAgICBsZXQgbGltaXQgPSB0aGlzLnBhZ2VTaXplO1xuXG4gICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGFueSByZXN1bHRzIHlldFxuICAgICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiByb3dzIHRoYXQgZml0IHdpdGhpbiB2aWV3cG9ydFxuICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSBNYXRoLmNlaWwodmlld0hlaWdodCAvIHRoaXMucm93SGVpZ2h0KTtcblxuICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBsaW1pdCB0byBwYWdlU2l6ZSBzdWNoIHRoYXQgd2UgZmlsbCB0aGUgZmlyc3QgcGFnZSBlbnRpcmVseVxuICAgICAgICAgICAgLy8gKG90aGVyd2lzZSwgd2Ugd29uJ3QgYmUgYWJsZSB0byBzY3JvbGwgcGFzdCBpdClcbiAgICAgICAgICAgIGxpbWl0ID0gTWF0aC5tYXgocGFnZVNpemUsIHRoaXMucGFnZVNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLnBhZ2VJbmRleFxuICAgICAgICAgIHRoaXMucGFnZVNpemUgPSBsaW1pdFxuICAgICAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICAgICAgICAvLyB0aGlzLmxvYWRQYWdlKGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBhc3luYyBpb25WaWV3V2lsbEVudGVyKCkge1xuICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuICBhc3luYyBoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG4gIGxvYWREYXRhKGV2ZW50ID0gbnVsbCkge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBbXTtcbiAgICBsZXQgc29ydHMgPSAnJztcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuZGVmYXVsdFNvcnQpIHtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uID09PSAnZGVzYycpIHtcbiAgICAgICAgc29ydHMgPSAnLScgKyB0aGlzLmRlZmF1bHRTb3J0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc29ydHMgPSB0aGlzLmRlZmF1bHRTb3J0O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zaG93U2VyYWNoKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSkge1xuICAgICAgICBjb25zdCB5ID0gJygnICsgdGhpcy5zZWFyY2hGaWVsZHMucmVwbGFjZSgnLCcsICd8JykgKyAnKSc7XG4gICAgICAgIGZpbHRlcnMucHVzaCh5ICsgJ0A9KicgKyB0aGlzLmZpbHRlclZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZGVmYXVsdEZpbHRlcikge1xuICAgICAgZmlsdGVycy5wdXNoKHRoaXMuZGVmYXVsdEZpbHRlcilcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJzVmFsdWUgPSBmaWx0ZXJzLmpvaW4oJywgJyk7XG4gICAgICB0aGlzLm1vZGVsU2VydmljZS5nZXRBbGwodGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZVNpemUsIHNvcnRzLCBmaWx0ZXJzVmFsdWUsIHRoaXMuY3VzdG9tSW5jbHVkZSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEJhc2VRdWVyeURhdGE8VD4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggIT09IHJlc3BvbnNlLmdldE1ldGEoKS5tZXRhLmNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCsrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gaWYgKHRoaXMuZmlsdGVyVmFsdWUpXG4gICAgICAgICAgLy8gICB0aGlzLmRhdGEgPSByZXNwb25zZS5nZXRNb2RlbHMoKTtcbiAgICAgICAgICAvLyBlbHNlXG4gICAgICAgICAgY29uc3Qgcm93cyA9IFsuLi50aGlzLmRhdGEsIC4uLnJlc3BvbnNlLmdldE1vZGVscygpXTtcbiAgICAgICAgICB0aGlzLmRhdGEgPSByb3dzO1xuICAgICAgICAgIC8vIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5jb25jYXQoKTtcblxuICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICB9LCA3MDApO1xuICB9XG4gIGFzeW5jIGhhbmRsZVJlZnJlc2goZXZlbnQpIHtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XG4gIH1cbiAgb25BZGQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5iYXNlUGF0aClcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5iYXNlUGF0aCArICcvYWRkJ10pXG4gICAgLy8gdGhpcy5uYXZDdHJsLm5hdmlnYXRlRm9yd2FyZCh0aGlzLmJhc2VQYXRoICsgJy9hZGQnKTtcbiAgfVxuICBlZGl0TW9kZWwobW9kZWw6IEJhc2VNb2RlbEZvcm1seSkge1xuICAgIGlmICh0aGlzLmNhbkVkaXQpXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5iYXNlUGF0aCArICcvZWRpdC8nLCBtb2RlbC5pZF0pO1xuICAgIC8vIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUZvcndhcmQodGhpcy5iYXNlUGF0aCArICcvZWRpdC8nICsgbW9kZWwuaWQpO1xuICB9XG4gIGdldExpc3RMYXlvdXQoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5tb2RlbFNlcnZpY2UubmV3TW9kZWwoKTsgICAgXG4gICAgfVxuICAgIHRoaXMuYWxsQ29sdW1ucz1bXTtcbiAgICB0aGlzLmNvbHVtbnM9W107XG4gICAgdGhpcy5hbGxDb2x1bW5zID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnSW9uaWNEYXRhVGFibGVMYXlvdXQnLCB0aGlzLm1vZGVsKS5tYXAoKGl0ZW06IElvbmljRGF0YVRhYmxlTGF5b3V0Q29uZmlnKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0uaXNUcmFuc2xhdGVkKSB7XG4gICAgICAgIGl0ZW0ubmFtZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoaXRlbS5uYW1lKTtcbiAgICAgICAgaXRlbS5pc1RyYW5zbGF0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWxsQ29sdW1ucy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG5cbiAgICBpZiAodGhpcy5jYW5EZWxldGUgfHwgdGhpcy5jYW5FZGl0KSB7XG4gICAgICB0aGlzLmFsbENvbHVtbnMucHVzaCh7XG4gICAgICAgIGNlbGxUZW1wbGF0ZTogdGhpcy5hY3Rpb25zVG1wbCxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGNlbGxDbGFzczogJ2FjdGlvbnMtY2VsbCcsXG4gICAgICAgIGRyYWdnYWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAvLyB3aWR0aDogMTAwLFxuICAgICAgICAvLyBtYXhXaWR0aDogMTAwLFxuICAgICAgICAvLyBtaW5XaWR0aDogMTAwXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmFsbENvbHVtbnMuZmlsdGVyKChpdGVtOiBJb25pY0RhdGFUYWJsZUxheW91dENvbmZpZykgPT4gaXRlbS52aXNpYmxlKTtcbiAgICAvLyBTb3J0IHRoZSBjb2x1bW5zIGFycmF5IGJ5IHRoZSBvcmRlciBwcm9wZXJ0eVxuXG4gIH1cbiAgZGVsZXRlTW9kZWwobW9kZWwpIHtcbiAgICBjb25zdCBtc2cgPSAnRG8geW91IHdhbnQgdG8gZGVsZXRlICcgKyBtb2RlbFt0aGlzLmRlbGV0ZVByb3BlcnR5TmFtZV0gKyAnPyc7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0obXNnKS50aGVuKFxuICAgICAgKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsU2VydmljZS5kZWxldGUobW9kZWwuaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wRGF0YSA9IFtdO1xuICAgICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZE9iamVjdC5lbWl0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5kYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICB0ZW1wRGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRlbXBEYXRhO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgZGVsZXRlRW5hYmxlZChtb2RlbDogVCkge1xuICAgIGlmICh0aGlzLmNhbkRlbGV0ZSkge1xuICAgICAgaWYgKHRoaXMuZGVsZXRlRGlzYWJsZVJ1bGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVSdWxlKHRoaXMuZGVsZXRlRGlzYWJsZVJ1bGUsIG1vZGVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZXZhbHVhdGVSdWxlKHJ1bGVzOiBSdWxlW10sIG1vZGVsOiBUKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgcnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgIGxldCBqc29uUnVsZTogYW55O1xuICAgICAgaWYgKHR5cGVvZiBydWxlLnJ1bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGpzb25SdWxlID0gSlNPTi5wYXJzZShydWxlLnJ1bGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAganNvblJ1bGUgPSBydWxlLnJ1bGU7XG4gICAgICB9XG4gICAgICBpZiAocnVsZS5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSAneycgKyBydWxlLnBhcmFtZXRlcnMubWFwKChpdGVtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXR1cm4gJ1wiJyArIGl0ZW0gKyAnXCI6XCInICsgbW9kZWxbaXRlbV0gKyAnXCInO1xuICAgICAgICB9KS5qb2luKCcsJykgKyAnfSc7XG4gICAgICAgIHJlc3VsdCA9IGpzb25Mb2dpYy5hcHBseShqc29uUnVsZSwgSlNPTi5wYXJzZShkYXRhKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBqc29uTG9naWMuYXBwbHkoanNvblJ1bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG59XG4iLCI8aW9uLWhlYWRlciAqbmdJZj1cInNob3dIZWFkZXJcIj5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tbWVudS1idXR0b24+PC9pb24tbWVudS1idXR0b24+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9pb24tdG9vbGJhcj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWFyY2hcIj48L25nLWNvbnRhaW5lcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IFtmdWxsc2NyZWVuXT1cInRydWVcIj5cblxuICA8aW9uLXJlZnJlc2hlciBzbG90PVwiZml4ZWRcIiAoaW9uUmVmcmVzaCk9XCJoYW5kbGVSZWZyZXNoKCRldmVudClcIj5cbiAgICA8aW9uLXJlZnJlc2hlci1jb250ZW50PjwvaW9uLXJlZnJlc2hlci1jb250ZW50PlxuICA8L2lvbi1yZWZyZXNoZXI+XG5cbiAgPG5neC1kYXRhdGFibGUgY2xhc3M9XCJtYXRlcmlhbCBmdWxsc2NyZWVuIHJscy1zZXJ2ZXItc2Nyb2xsaW5nXCIgc3R5bGU9XCJ0b3A6IDExNXB4XCIgW3Jvd3NdPVwiZGF0YVwiIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtjb2x1bW5Nb2RlXT1cIkNvbHVtbk1vZGUuc3RhbmRhcmRcIiBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodFwiIFtyb3dIZWlnaHRdPVwicm93SGVpZ2h0XCIgW3Njcm9sbGJhclZdPVwidHJ1ZVwiXG4gICAgW2xvYWRpbmdJbmRpY2F0b3JdPVwiaXNMb2FkaW5nXCIgW3Njcm9sbGJhckhdPVwidHJ1ZVwiIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50Lm9mZnNldFkpXCJcbiAgID5cbiAgPC9uZ3gtZGF0YXRhYmxlPlxuICBcbiAgPG5nLXRlbXBsYXRlICNhY3Rpb25zVG1wbCBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIj5cbiAgICA8aW9uLWJ1dHRvbiAgZmlsbD1cImNsZWFyXCIgKm5nSWY9XCJjYW5FZGl0XCIgKGNsaWNrKT0nZWRpdE1vZGVsKHJvdyknPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY3JlYXRlXCIgKGNsaWNrKT0nZWRpdE1vZGVsKHJvdyknPjwvaW9uLWljb24+XG4gICAgPC9pb24tYnV0dG9uPlxuICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiICpuZ0lmPVwiZGVsZXRlRW5hYmxlZChyb3cpXCIgKGNsaWNrKT0nZGVsZXRlTW9kZWwocm93KSc+XG4gICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRyYXNoXCIgKGNsaWNrKT0nZGVsZXRlTW9kZWwocm93KSc+PC9pb24taWNvbj5cbiAgICA8L2lvbi1idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICA8aW9uLXRpdGxlIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+e3t0aXRsZX19PC9pb24tdGl0bGU+XG4gIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwib25BZGQoKVwiIGZpbGw9XCJjbGVhclwiICpuZ0lmPVwiaGFzQWRkXCI+XG4gICAgPGlvbi1pY29uIHNpemU9XCJsYXJnZVwiIG5hbWU9XCJhZGRcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGlvbi10b29sYmFyICpuZ0lmPVwic2hvd1NlcmFjaFwiPlxuICAgIDxpb24tc2VhcmNoYmFyIFtkZWJvdW5jZV09XCIxMDAwXCIgKGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiPjwvaW9uLXNlYXJjaGJhcj5cbiAgPC9pb24tdG9vbGJhcj5cbjwvbmctdGVtcGxhdGU+Il19
@@ -237,10 +237,10 @@ export class RslIonicGridComponent {
237
237
  });
238
238
  return result;
239
239
  }
240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicGridComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.Location }, { token: i0.Injector }, { token: i4.LoadingController }, { token: i4.NavController }, { token: i5.IonicDialogService }, { token: i3.DatePipe }, { token: i3.DecimalPipe }, { token: i3.PercentPipe }], target: i0.ɵɵFactoryTarget.Component }); }
241
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: RslIonicGridComponent, isStandalone: true, selector: "rsl-ionic-grid", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", defaultSortDirection: "defaultSortDirection", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", deleteDisableRule: "deleteDisableRule", model: "model", modelService: "modelService" }, ngImport: i0, template: "<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ion-list>\n <ng-container *ngFor=\"let item of data\">\n <ion-item-sliding>\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n <ion-item-options *ngIf=\"deleteEnabled(item)\" side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\" (click)='deleteModel(item)'></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ng-container>\n </ion-list>\n <ion-infinite-scroll threshold=\"100px\" (ionInfinite)=\"loadData($event)\">\n <ion-infinite-scroll-content loadingSpinner=\"bubbles\" loadingText=\"Loading more data...\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>\n\n<ng-template #listItem let-item='item'>\n <ion-item button (click)='editModel(item)'>\n <ion-label>\n <ng-container *ngFor=\"let row of gridLayout\">\n <h2 *ngIf=\"row.primary\"> {{getCelValue(item,row.key)}} </h2>\n <h3 *ngIf=\"!row.primary\">{{getCelValue(item,row.key)}} </h3>\n </ng-container>\n </ion-label>\n </ion-item>\n</ng-template>", dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: i4.IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }, { kind: "component", type: i4.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i4.IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: i4.IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: i4.IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i4.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i4.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i4.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: i4.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i4.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i4.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
240
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RslIonicGridComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }, { token: i3.Location }, { token: i0.Injector }, { token: i4.LoadingController }, { token: i4.NavController }, { token: i5.IonicDialogService }, { token: i3.DatePipe }, { token: i3.DecimalPipe }, { token: i3.PercentPipe }], target: i0.ɵɵFactoryTarget.Component }); }
241
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: RslIonicGridComponent, isStandalone: true, selector: "rsl-ionic-grid", inputs: { showSerach: "showSerach", searchFields: "searchFields", customInclude: "customInclude", defaultSort: "defaultSort", defaultSortDirection: "defaultSortDirection", deletePropertyName: "deletePropertyName", defaultFilter: "defaultFilter", showHeader: "showHeader", deleteDisableRule: "deleteDisableRule", model: "model", modelService: "modelService" }, ngImport: i0, template: "<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ion-list>\n <ng-container *ngFor=\"let item of data\">\n <ion-item-sliding>\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n <ion-item-options *ngIf=\"deleteEnabled(item)\" side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\" (click)='deleteModel(item)'></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ng-container>\n </ion-list>\n <ion-infinite-scroll threshold=\"100px\" (ionInfinite)=\"loadData($event)\">\n <ion-infinite-scroll-content loadingSpinner=\"bubbles\" loadingText=\"Loading more data...\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>\n\n<ng-template #listItem let-item='item'>\n <ion-item button (click)='editModel(item)'>\n <ion-label>\n <ng-container *ngFor=\"let row of gridLayout\">\n <h2 *ngIf=\"row.primary\"> {{getCelValue(item,row.key)}} </h2>\n <h3 *ngIf=\"!row.primary\">{{getCelValue(item,row.key)}} </h3>\n </ng-container>\n </ion-label>\n </ion-item>\n</ng-template>", dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i4.IonInfiniteScroll, selector: "ion-infinite-scroll", inputs: ["disabled", "position", "threshold"] }, { kind: "component", type: i4.IonInfiniteScrollContent, selector: "ion-infinite-scroll-content", inputs: ["loadingSpinner", "loadingText"] }, { kind: "component", type: i4.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i4.IonItemOption, selector: "ion-item-option", inputs: ["color", "disabled", "download", "expandable", "href", "mode", "rel", "target", "type"] }, { kind: "component", type: i4.IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: i4.IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i4.IonMenuButton, selector: "ion-menu-button", inputs: ["autoHide", "color", "disabled", "menu", "mode", "type"] }, { kind: "component", type: i4.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i4.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: i4.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i4.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i4.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
242
242
  }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicGridComponent, decorators: [{
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RslIonicGridComponent, decorators: [{
244
244
  type: Component,
245
245
  args: [{ standalone: true, selector: 'rsl-ionic-grid', imports: [RslIonicModuleModule], template: "<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ion-list>\n <ng-container *ngFor=\"let item of data\">\n <ion-item-sliding>\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n <ion-item-options *ngIf=\"deleteEnabled(item)\" side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\" (click)='deleteModel(item)'></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ng-container>\n </ion-list>\n <ion-infinite-scroll threshold=\"100px\" (ionInfinite)=\"loadData($event)\">\n <ion-infinite-scroll-content loadingSpinner=\"bubbles\" loadingText=\"Loading more data...\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>\n\n<ng-template #listItem let-item='item'>\n <ion-item button (click)='editModel(item)'>\n <ion-label>\n <ng-container *ngFor=\"let row of gridLayout\">\n <h2 *ngIf=\"row.primary\"> {{getCelValue(item,row.key)}} </h2>\n <h3 *ngIf=\"!row.primary\">{{getCelValue(item,row.key)}} </h3>\n </ng-container>\n </ion-label>\n </ion-item>\n</ng-template>" }]
246
246
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }, { type: i3.Location }, { type: i0.Injector }, { type: i4.LoadingController }, { type: i4.NavController }, { type: i5.IonicDialogService }, { type: i3.DatePipe }, { type: i3.DecimalPipe }, { type: i3.PercentPipe }]; }, propDecorators: { showSerach: [{
@@ -266,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
266
266
  }], modelService: [{
267
267
  type: Input
268
268
  }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtZ3JpZC9yc2wtaW9uaWMtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL3JzbC1pb25pYy1ncmlkL3JzbC1pb25pYy1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBMEIsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUE4QixnQkFBZ0IsRUFBUSxNQUFNLGlCQUFpQixDQUFDO0FBRXJGLE9BQU8sS0FBSyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFRckUsTUFBTSxPQUFPLHFCQUFxQjtJQW9CaEMsWUFDUyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBMkIsRUFDM0IsUUFBa0IsRUFDakIsUUFBa0IsRUFD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QUFDO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzhHQXBQVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixrYkNsQmxDLHltRUEwRGMsMkNEMUNGLG9CQUFvQjs7MkZBRW5CLHFCQUFxQjtrQkFOakMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sZ0JBQWdCLFdBRWpCLENBQUMsb0JBQW9CLENBQUM7K1dBSXRCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUsIERlY2ltYWxQaXBlLCBMb2NhdGlvbiwgUGVyY2VudFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvYWRpbmdDb250cm9sbGVyLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmFzZVF1ZXJ5RGF0YSwgQmFzZVNlcnZpY2UsIEdyaWRMYXlvdXRGb3JtYXQsIFJ1bGUgfSBmcm9tICdAcm9zb2Z0bGFiL2NvcmUnO1xuaW1wb3J0IHsgQmFzZU1vZGVsRm9ybWx5IH0gZnJvbSAnQHJvc29mdGxhYi9mb3JtbHknO1xuaW1wb3J0ICogYXMganNvbkxvZ2ljIGZyb20gJ2pzb24tbG9naWMtanMvbG9naWMuanMnO1xuaW1wb3J0IHsgSW9uaWNMaXN0TGF5b3V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJb25pY0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBSc2xJb25pY01vZHVsZU1vZHVsZSB9IGZyb20gJy4uLy4uL3JzbC1pb25pYy1tb2R1bGUubW9kdWxlJztcbmV4cG9ydCBkZWNsYXJlIHR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnIHwgJyc7XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdyc2wtaW9uaWMtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yc2wtaW9uaWMtZ3JpZC5jb21wb25lbnQuaHRtbCcsICBcbiAgaW1wb3J0czogW1JzbElvbmljTW9kdWxlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUnNsSW9uaWNHcmlkQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlTW9kZWxGb3JtbHksIFUgZXh0ZW5kcyBCYXNlU2VydmljZTxUPj4gaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd1NlcmFjaDogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VhcmNoRmllbGRzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1c3RvbUluY2x1ZGU6IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdFNvcnQ6IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdFNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gIEBJbnB1dCgpIGRlbGV0ZVByb3BlcnR5TmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0RmlsdGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRlbGV0ZURpc2FibGVSdWxlOiBSdWxlW107XG4gIEBJbnB1dCgpIG1vZGVsOiBUO1xuICBASW5wdXQoKSBtb2RlbFNlcnZpY2U6IFVcblxuICBkYXRhOiBhbnlbXSA9IFtdO1xuICBwYWdlSW5kZXg6IG51bWJlciA9IDE7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAzMFxuXG4gIGdyaWRMYXlvdXQ6IElvbmljTGlzdExheW91dENvbmZpZ1tdXG4gIGJhc2VQYXRoOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGxvYWRpbmdDdHJsOiBMb2FkaW5nQ29udHJvbGxlcixcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IElvbmljRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIG51bWJlclBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgcGVyY2VudFBpcGU6IFBlcmNlbnRQaXBlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdzaG93U2VyYWNoJywgZmFsc2UpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3NlYXJjaEZpZWxkcycsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2N1c3RvbUluY2x1ZGUnLCBudWxsKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWZhdWx0U29ydCcsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlZmF1bHRTb3J0RGlyZWN0aW9uJywgJycpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlbGV0ZVByb3BlcnR5TmFtZScsICduYW1lJyk7XG4gICAgdGhpcy5zZXRWYWx1ZUZyb21TbmFwc2hvdCh0aGlzLCB0aGlzLnJvdXRlLnNuYXBzaG90LCAnZGVmYXVsdEZpbHRlcicsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3Nob3dIZWFkZXInLCB0cnVlKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWxldGVEaXNhYmxlUnVsZScsIG51bGwpO1xuXG4gICAgLy8gdGhpcy5zaG93U2VyYWNoID0gcm91dGUuc25hcHNob3QuZGF0YVsnc2hvd1NlcmFjaCddIHx8IGZhbHNlO1xuICAgIC8vIHRoaXMuc2VhcmNoRmllbGRzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydzZWFyY2hGaWVsZHMnXSB8fCBudWxsO1xuXG4gICAgLy8gdGhpcy5jdXN0b21JbmNsdWRlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydjdXN0b21JbmNsdWRlJ10gfHwgbnVsbDtcblxuICAgIC8vIHRoaXMuZGVmYXVsdFNvcnQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2RlZmF1bHRTb3J0J10gfHwgbnVsbDtcbiAgICAvLyB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydkZWZhdWx0U29ydERpcmVjdGlvbiddIHx8ICcnO1xuXG4gICAgLy8gdGhpcy5kZWxldGVQcm9wZXJ0eU5hbWUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2RlbGV0ZVByb3BlcnR5TmFtZSddIHx8ICduYW1lJztcbiAgICAvLyB0aGlzLmRlZmF1bHRGaWx0ZXIgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2RlZmF1bHRGaWx0ZXInXSB8fCBudWxsO1xuXG4gICAgaWYgKCF0aGlzLm1vZGVsU2VydmljZSkge1xuICAgICAgY29uc3QgU0VSVklDRV9UT0tFTiA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsncmVxdWlyZWRTZXJ2aWNlJ107XG4gICAgICB0aGlzLm1vZGVsU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFU+KDxhbnk+U0VSVklDRV9UT0tFTik7XG4gICAgfVxuICAgIHRoaXMubW9kZWwgPSB0aGlzLm1vZGVsU2VydmljZS5uZXdNb2RlbCgpXG4gICAgdGhpcy50aXRsZSA9IHRoaXMubW9kZWwubW9kZWxDb25maWcuZm9ybVRpdGxlXG4gICAgdGhpcy5nZXRMaXN0TGF5b3V0KClcblxuICAgIGNvbnN0IGN1cnJlbnRVcmxTZWdtZW50czogVXJsU2VnbWVudFtdID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykubWFwKHNlZ21lbnQgPT4gbmV3IFVybFNlZ21lbnQoc2VnbWVudCwge30pKTtcbiAgICB0aGlzLmJhc2VQYXRoID0gY3VycmVudFVybFNlZ21lbnRzLm1hcChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIC8vIE5hdmlnYXRpb24gdG8gYW5vdGhlciBwYWdlIGlzIGFib3V0IHRvIG9jY3VyXG4gICAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICAgICAgLy8gUGVyZm9ybSBhY3Rpb25zIG9yIHVwZGF0ZSBjb21wb25lbnQgYXMgbmVlZGVkXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgc2V0VmFsdWVGcm9tU25hcHNob3Q8VD4oY29tcG9uZW50OiBhbnksIHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKGNvbXBvbmVudFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBkYXRhRnJvbVNuYXBzaG90ID0gc25hcHNob3QuZGF0YVtrZXldO1xuICAgICAgaWYgKCFkYXRhRnJvbVNuYXBzaG90KVxuICAgICAgICBkYXRhRnJvbVNuYXBzaG90ID0gc25hcHNob3QucGFyYW1zW2tleV07XG4gICAgICBjb21wb25lbnRba2V5XSA9IGRhdGFGcm9tU25hcHNob3QgIT09IHVuZGVmaW5lZCA/IGRhdGFGcm9tU25hcHNob3QgOiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9XG4gIGFzeW5jIGlvblZpZXdXaWxsRW50ZXIoKSB7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgY29uc3QgbG9hZGluZyA9IGF3YWl0IHRoaXMubG9hZGluZ0N0cmwuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuTG9hZGluZycpLFxuICAgICAgc3Bpbm5lcjogJ2NpcmNsZXMnLFxuICAgIH0pO1xuICAgIGxvYWRpbmcucHJlc2VudCgpO1xuICAgIHRoaXMubG9hZERhdGEobnVsbCwgbnVsbCwgbG9hZGluZyk7XG4gIH1cbiAgYXN5bmMgaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgY29uc3QgbG9hZGluZyA9IGF3YWl0IHRoaXMubG9hZGluZ0N0cmwuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuTG9hZGluZycpLFxuICAgICAgc3Bpbm5lcjogJ2NpcmNsZXMnLFxuICAgIH0pO1xuICAgIGxvYWRpbmcucHJlc2VudCgpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgdGhpcy5sb2FkRGF0YShudWxsLCBxdWVyeSwgbG9hZGluZyk7XG4gICAgLy8gdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhLmZpbHRlcigoZCkgPT4gZC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkpID4gLTEpO1xuICB9XG4gIGxvYWREYXRhKGV2ZW50ID0gbnVsbCwgZmlsdGVyVmFsdWUgPSB1bmRlZmluZWQsIGxvYWRpbmcgPSBudWxsKSB7XG4gICAgY29uc3QgZmlsdGVycyA9IFtdO1xuICAgIGxldCBzb3J0cyA9ICcnO1xuICAgIGlmICh0aGlzLmRlZmF1bHRTb3J0KSB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgIHNvcnRzID0gJy0nICsgdGhpcy5kZWZhdWx0U29ydDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvcnRzID0gdGhpcy5kZWZhdWx0U29ydDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd1NlcmFjaCkge1xuICAgICAgaWYgKGZpbHRlclZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHkgPSAnKCcgKyB0aGlzLnNlYXJjaEZpZWxkcy5yZXBsYWNlKCcsJywgJ3wnKSArICcpJztcbiAgICAgICAgZmlsdGVycy5wdXNoKHkgKyAnQD0qJyArIGZpbHRlclZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZGVmYXVsdEZpbHRlcikge1xuICAgICAgZmlsdGVycy5wdXNoKHRoaXMuZGVmYXVsdEZpbHRlcilcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJzVmFsdWUgPSBmaWx0ZXJzLmpvaW4oJywgJyk7XG4gICAgICB0aGlzLm1vZGVsU2VydmljZS5nZXRBbGwodGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZVNpemUsIHNvcnRzLCBmaWx0ZXJzVmFsdWUsIHRoaXMuY3VzdG9tSW5jbHVkZSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEJhc2VRdWVyeURhdGE8VD4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggIT09IHJlc3BvbnNlLmdldE1ldGEoKS5tZXRhLmNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCsrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpbHRlclZhbHVlIHx8IGxvYWRpbmcpXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5nZXRNb2RlbHMoKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KHJlc3BvbnNlLmdldE1vZGVscygpKTtcblxuICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgaWYgKGxvYWRpbmcpXG4gICAgICAgICAgICBsb2FkaW5nLmRpc21pc3MoKVxuICAgICAgICB9KVxuICAgIH0sIDcwMCk7XG4gIH1cbiAgYXN5bmMgaGFuZGxlUmVmcmVzaChldmVudCkge1xuICAgIGNvbnN0IGxvYWRpbmcgPSBhd2FpdCB0aGlzLmxvYWRpbmdDdHJsLmNyZWF0ZSh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdHZW5lcmFsLkxvYWRpbmcnKSxcbiAgICAgIHNwaW5uZXI6ICdjaXJjbGVzJyxcbiAgICB9KTtcbiAgICBsb2FkaW5nLnByZXNlbnQoKTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICB0aGlzLmxvYWREYXRhKG51bGwsIG51bGwsIGxvYWRpbmcpO1xuICAgIGV2ZW50LnRhcmdldC5jb21wbGV0ZSgpO1xuICB9XG4gIG9uQWRkKCkge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuYmFzZVBhdGgpXG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlRm9yd2FyZCh0aGlzLmJhc2VQYXRoICsgJy9hZGQnKTtcbiAgfVxuICBlZGl0TW9kZWwobW9kZWw6IEJhc2VNb2RlbEZvcm1seSkge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUZvcndhcmQodGhpcy5iYXNlUGF0aCArICcvZWRpdC8nICsgbW9kZWwuaWQpO1xuICB9XG4gIGdldExpc3RMYXlvdXQoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5tb2RlbFNlcnZpY2UubmV3TW9kZWwoKTtcbiAgICB9XG4gICAgdGhpcy5ncmlkTGF5b3V0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnSW9uaWNMaXN0TGF5b3V0JywgdGhpcy5tb2RlbCk7XG4gIH1cbiAgZGVsZXRlTW9kZWwobW9kZWwpIHtcbiAgICBjb25zdCBtc2cgPSAnRG8geW91IHdhbnQgdG8gZGVsZXRlICcgKyBtb2RlbFt0aGlzLmRlbGV0ZVByb3BlcnR5TmFtZV0gKyAnPyc7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0obXNnKS50aGVuKFxuICAgICAgKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsU2VydmljZS5kZWxldGUobW9kZWwuaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wRGF0YSA9IFtdO1xuICAgICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZE9iamVjdC5lbWl0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5kYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICB0ZW1wRGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRlbXBEYXRhO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG4gIGdldENlbFZhbHVlKHJvdzogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCFyb3cpXG4gICAgICByZXR1cm4gXCJcIjtcbiAgICAvLyBpZiAocHJvcGVydHlOYW1lID09ICdrb21wZXRlbnplblN0ZGV2JylcbiAgICAvLyAgIGNvbnNvbGUubG9nKHByb3BlcnR5TmFtZSk7XG4gICAgaWYgKHByb3BlcnR5TmFtZS5pbmRleE9mKCcuJykgPT09IC0xKSB7XG4gICAgICB2YXIgZ3JpZExheW91dCA9IHRoaXMuZ3JpZExheW91dC5maW5kKGYgPT4gZi5rZXkuaW5kZXhPZihwcm9wZXJ0eU5hbWUpID4gLTEpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0ZWRWYWx1ZShncmlkTGF5b3V0LCByb3dbcHJvcGVydHlOYW1lXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByb3AgPSBwcm9wZXJ0eU5hbWUuc3BsaXQoJy4nKVswXTtcbiAgICAgIGNvbnN0IHN1YlByb3AgPSBwcm9wZXJ0eU5hbWUucmVwbGFjZShwcm9wICsgJy4nLCAnJyk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDZWxWYWx1ZShyb3dbcHJvcF0sIHN1YlByb3ApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldEZvcm1hdGVkVmFsdWUoZ3JpZExheW91dDogSW9uaWNMaXN0TGF5b3V0Q29uZmlnLCB2YWx1ZTogYW55KSB7XG5cbiAgICBpZiAoZ3JpZExheW91dCkge1xuICAgICAgc3dpdGNoIChncmlkTGF5b3V0LmZvcm1hdGluZykge1xuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQuZGF0ZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGdyaWRMYXlvdXQuY3VzdG9tRm9ybWF0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBHcmlkTGF5b3V0Rm9ybWF0Lm51bWJlcjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5udW1iZXJQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZ3JpZExheW91dC5jdXN0b21Gb3JtYXQpO1xuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQucGVyY2VudDpcbiAgICAgICAgICBjb25zdCB2YWx1ZVByYyA9IHZhbHVlIC8gMTAwO1xuICAgICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnRQaXBlLnRyYW5zZm9ybSh2YWx1ZVByYywgZ3JpZExheW91dC5jdXN0b21Gb3JtYXQpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZGVsZXRlRW5hYmxlZChtb2RlbDogVCkge1xuICAgIGlmICh0aGlzLmRlbGV0ZURpc2FibGVSdWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZVJ1bGUodGhpcy5kZWxldGVEaXNhYmxlUnVsZSwgbW9kZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBldmFsdWF0ZVJ1bGUocnVsZXM6IFJ1bGVbXSwgbW9kZWw6IFQpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBydWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgbGV0IGpzb25SdWxlOiBhbnk7XG4gICAgICBpZiAodHlwZW9mIHJ1bGUucnVsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAganNvblJ1bGUgPSBKU09OLnBhcnNlKHJ1bGUucnVsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqc29uUnVsZSA9IHJ1bGUucnVsZTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9ICd7JyArIHJ1bGUucGFyYW1ldGVycy5tYXAoKGl0ZW06IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiAnXCInICsgaXRlbSArICdcIjpcIicgKyBtb2RlbFtpdGVtXSArICdcIic7XG4gICAgICAgIH0pLmpvaW4oJywnKSArICd9JztcbiAgICAgICAgcmVzdWx0ID0ganNvbkxvZ2ljLmFwcGx5KGpzb25SdWxlLCBKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGpzb25Mb2dpYy5hcHBseShqc29uUnVsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXIgKm5nSWY9XCJzaG93SGVhZGVyXCI+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLW1lbnUtYnV0dG9uPjwvaW9uLW1lbnUtYnV0dG9uPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvbj48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyXCI+PC9uZy1jb250YWluZXI+XG4gIDwvaW9uLXRvb2xiYXI+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoXCI+PC9uZy1jb250YWluZXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBbZnVsbHNjcmVlbl09XCJ0cnVlXCI+XG5cbiAgPGlvbi1yZWZyZXNoZXIgc2xvdD1cImZpeGVkXCIgKGlvblJlZnJlc2gpPVwiaGFuZGxlUmVmcmVzaCgkZXZlbnQpXCI+XG4gICAgPGlvbi1yZWZyZXNoZXItY29udGVudD48L2lvbi1yZWZyZXNoZXItY29udGVudD5cbiAgPC9pb24tcmVmcmVzaGVyPlxuXG4gIDxpb24tbGlzdD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIj5cbiAgICAgIDxpb24taXRlbS1zbGlkaW5nPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8aW9uLWl0ZW0tb3B0aW9ucyAqbmdJZj1cImRlbGV0ZUVuYWJsZWQoaXRlbSlcIiBzaWRlPVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwidHJhc2hcIiAoY2xpY2spPSdkZWxldGVNb2RlbChpdGVtKSc+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1pdGVtLW9wdGlvbj5cbiAgICAgICAgPC9pb24taXRlbS1vcHRpb25zPlxuICAgICAgPC9pb24taXRlbS1zbGlkaW5nPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2lvbi1saXN0PlxuICA8aW9uLWluZmluaXRlLXNjcm9sbCB0aHJlc2hvbGQ9XCIxMDBweFwiIChpb25JbmZpbml0ZSk9XCJsb2FkRGF0YSgkZXZlbnQpXCI+XG4gICAgPGlvbi1pbmZpbml0ZS1zY3JvbGwtY29udGVudCBsb2FkaW5nU3Bpbm5lcj1cImJ1YmJsZXNcIiBsb2FkaW5nVGV4dD1cIkxvYWRpbmcgbW9yZSBkYXRhLi4uXCI+XG4gICAgPC9pb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnQ+XG4gIDwvaW9uLWluZmluaXRlLXNjcm9sbD5cblxuPC9pb24tY29udGVudD5cblxuPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gIDxpb24tdGl0bGUgIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+e3t0aXRsZSB8dHJhbnNsYXRlfX08L2lvbi10aXRsZT5cbiAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIChjbGljayk9XCJvbkFkZCgpXCIgZmlsbD1cImNsZWFyXCI+XG4gICAgPGlvbi1pY29uIHNpemU9XCJsYXJnZVwiIG5hbWU9XCJhZGRcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGlvbi10b29sYmFyICpuZ0lmPVwic2hvd1NlcmFjaFwiPlxuICAgIDxpb24tc2VhcmNoYmFyIFtkZWJvdW5jZV09XCIxMDAwXCIgKGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiPjwvaW9uLXNlYXJjaGJhcj5cbiAgPC9pb24tdG9vbGJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW0gbGV0LWl0ZW09J2l0ZW0nPlxuICA8aW9uLWl0ZW0gYnV0dG9uIChjbGljayk9J2VkaXRNb2RlbChpdGVtKSc+XG4gICAgPGlvbi1sYWJlbD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBncmlkTGF5b3V0XCI+XG4gICAgICAgIDxoMiAqbmdJZj1cInJvdy5wcmltYXJ5XCI+IHt7Z2V0Q2VsVmFsdWUoaXRlbSxyb3cua2V5KX19IDwvaDI+XG4gICAgICAgIDxoMyAqbmdJZj1cIiFyb3cucHJpbWFyeVwiPnt7Z2V0Q2VsVmFsdWUoaXRlbSxyb3cua2V5KX19IDwvaDM+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cbjwvbmctdGVtcGxhdGU+Il19
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtZ3JpZC9yc2wtaW9uaWMtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL3JzbC1pb25pYy1ncmlkL3JzbC1pb25pYy1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBMEIsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUE4QixnQkFBZ0IsRUFBUSxNQUFNLGlCQUFpQixDQUFDO0FBRXJGLE9BQU8sS0FBSyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFRckUsTUFBTSxPQUFPLHFCQUFxQjtJQW9CaEMsWUFDUyxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBMkIsRUFDM0IsUUFBa0IsRUFDakIsUUFBa0IsRUFD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QUFDO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOytHQXBQVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixrYkNsQmxDLHltRUEwRGMsMkNEMUNGLG9CQUFvQjs7NEZBRW5CLHFCQUFxQjtrQkFOakMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sZ0JBQWdCLFdBRWpCLENBQUMsb0JBQW9CLENBQUM7K1dBSXRCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUsIERlY2ltYWxQaXBlLCBMb2NhdGlvbiwgUGVyY2VudFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvYWRpbmdDb250cm9sbGVyLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmFzZVF1ZXJ5RGF0YSwgQmFzZVNlcnZpY2UsIEdyaWRMYXlvdXRGb3JtYXQsIFJ1bGUgfSBmcm9tICdAcm9zb2Z0bGFiL2NvcmUnO1xuaW1wb3J0IHsgQmFzZU1vZGVsRm9ybWx5IH0gZnJvbSAnQHJvc29mdGxhYi9mb3JtbHknO1xuaW1wb3J0ICogYXMganNvbkxvZ2ljIGZyb20gJ2pzb24tbG9naWMtanMvbG9naWMuanMnO1xuaW1wb3J0IHsgSW9uaWNMaXN0TGF5b3V0Q29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJb25pY0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBSc2xJb25pY01vZHVsZU1vZHVsZSB9IGZyb20gJy4uLy4uL3JzbC1pb25pYy1tb2R1bGUubW9kdWxlJztcbmV4cG9ydCBkZWNsYXJlIHR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnIHwgJyc7XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdyc2wtaW9uaWMtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yc2wtaW9uaWMtZ3JpZC5jb21wb25lbnQuaHRtbCcsICBcbiAgaW1wb3J0czogW1JzbElvbmljTW9kdWxlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgUnNsSW9uaWNHcmlkQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlTW9kZWxGb3JtbHksIFUgZXh0ZW5kcyBCYXNlU2VydmljZTxUPj4gaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd1NlcmFjaDogYm9vbGVhbjtcbiAgQElucHV0KCkgc2VhcmNoRmllbGRzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1c3RvbUluY2x1ZGU6IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdFNvcnQ6IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdFNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XG4gIEBJbnB1dCgpIGRlbGV0ZVByb3BlcnR5TmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0RmlsdGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRlbGV0ZURpc2FibGVSdWxlOiBSdWxlW107XG4gIEBJbnB1dCgpIG1vZGVsOiBUO1xuICBASW5wdXQoKSBtb2RlbFNlcnZpY2U6IFVcblxuICBkYXRhOiBhbnlbXSA9IFtdO1xuICBwYWdlSW5kZXg6IG51bWJlciA9IDE7XG4gIHBhZ2VTaXplOiBudW1iZXIgPSAzMFxuXG4gIGdyaWRMYXlvdXQ6IElvbmljTGlzdExheW91dENvbmZpZ1tdXG4gIGJhc2VQYXRoOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGxvYWRpbmdDdHJsOiBMb2FkaW5nQ29udHJvbGxlcixcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IElvbmljRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIG51bWJlclBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgcGVyY2VudFBpcGU6IFBlcmNlbnRQaXBlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdzaG93U2VyYWNoJywgZmFsc2UpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3NlYXJjaEZpZWxkcycsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2N1c3RvbUluY2x1ZGUnLCBudWxsKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWZhdWx0U29ydCcsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlZmF1bHRTb3J0RGlyZWN0aW9uJywgJycpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ2RlbGV0ZVByb3BlcnR5TmFtZScsICduYW1lJyk7XG4gICAgdGhpcy5zZXRWYWx1ZUZyb21TbmFwc2hvdCh0aGlzLCB0aGlzLnJvdXRlLnNuYXBzaG90LCAnZGVmYXVsdEZpbHRlcicsIG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVGcm9tU25hcHNob3QodGhpcywgdGhpcy5yb3V0ZS5zbmFwc2hvdCwgJ3Nob3dIZWFkZXInLCB0cnVlKTtcbiAgICB0aGlzLnNldFZhbHVlRnJvbVNuYXBzaG90KHRoaXMsIHRoaXMucm91dGUuc25hcHNob3QsICdkZWxldGVEaXNhYmxlUnVsZScsIG51bGwpO1xuXG4gICAgLy8gdGhpcy5zaG93U2VyYWNoID0gcm91dGUuc25hcHNob3QuZGF0YVsnc2hvd1NlcmFjaCddIHx8IGZhbHNlO1xuICAgIC8vIHRoaXMuc2VhcmNoRmllbGRzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydzZWFyY2hGaWVsZHMnXSB8fCBudWxsO1xuXG4gICAgLy8gdGhpcy5jdXN0b21JbmNsdWRlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydjdXN0b21JbmNsdWRlJ10gfHwgbnVsbDtcblxuICAgIC8vIHRoaXMuZGVmYXVsdFNvcnQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2RlZmF1bHRTb3J0J10gfHwgbnVsbDtcbiAgICAvLyB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhWydkZWZhdWx0U29ydERpcmVjdGlvbiddIHx8ICcnO1xuXG4gICAgLy8gdGhpcy5kZWxldGVQcm9wZXJ0eU5hbWUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2RlbGV0ZVByb3BlcnR5TmFtZSddIHx8ICduYW1lJztcbiAgICAvLyB0aGlzLmRlZmF1bHRGaWx0ZXIgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2RlZmF1bHRGaWx0ZXInXSB8fCBudWxsO1xuXG4gICAgaWYgKCF0aGlzLm1vZGVsU2VydmljZSkge1xuICAgICAgY29uc3QgU0VSVklDRV9UT0tFTiA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsncmVxdWlyZWRTZXJ2aWNlJ107XG4gICAgICB0aGlzLm1vZGVsU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFU+KDxhbnk+U0VSVklDRV9UT0tFTik7XG4gICAgfVxuICAgIHRoaXMubW9kZWwgPSB0aGlzLm1vZGVsU2VydmljZS5uZXdNb2RlbCgpXG4gICAgdGhpcy50aXRsZSA9IHRoaXMubW9kZWwubW9kZWxDb25maWcuZm9ybVRpdGxlXG4gICAgdGhpcy5nZXRMaXN0TGF5b3V0KClcblxuICAgIGNvbnN0IGN1cnJlbnRVcmxTZWdtZW50czogVXJsU2VnbWVudFtdID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykubWFwKHNlZ21lbnQgPT4gbmV3IFVybFNlZ21lbnQoc2VnbWVudCwge30pKTtcbiAgICB0aGlzLmJhc2VQYXRoID0gY3VycmVudFVybFNlZ21lbnRzLm1hcChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIC8vIE5hdmlnYXRpb24gdG8gYW5vdGhlciBwYWdlIGlzIGFib3V0IHRvIG9jY3VyXG4gICAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICAgICAgLy8gUGVyZm9ybSBhY3Rpb25zIG9yIHVwZGF0ZSBjb21wb25lbnQgYXMgbmVlZGVkXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgc2V0VmFsdWVGcm9tU25hcHNob3Q8VD4oY29tcG9uZW50OiBhbnksIHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKGNvbXBvbmVudFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBkYXRhRnJvbVNuYXBzaG90ID0gc25hcHNob3QuZGF0YVtrZXldO1xuICAgICAgaWYgKCFkYXRhRnJvbVNuYXBzaG90KVxuICAgICAgICBkYXRhRnJvbVNuYXBzaG90ID0gc25hcHNob3QucGFyYW1zW2tleV07XG4gICAgICBjb21wb25lbnRba2V5XSA9IGRhdGFGcm9tU25hcHNob3QgIT09IHVuZGVmaW5lZCA/IGRhdGFGcm9tU25hcHNob3QgOiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9XG4gIGFzeW5jIGlvblZpZXdXaWxsRW50ZXIoKSB7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgY29uc3QgbG9hZGluZyA9IGF3YWl0IHRoaXMubG9hZGluZ0N0cmwuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuTG9hZGluZycpLFxuICAgICAgc3Bpbm5lcjogJ2NpcmNsZXMnLFxuICAgIH0pO1xuICAgIGxvYWRpbmcucHJlc2VudCgpO1xuICAgIHRoaXMubG9hZERhdGEobnVsbCwgbnVsbCwgbG9hZGluZyk7XG4gIH1cbiAgYXN5bmMgaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgY29uc3QgbG9hZGluZyA9IGF3YWl0IHRoaXMubG9hZGluZ0N0cmwuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0dlbmVyYWwuTG9hZGluZycpLFxuICAgICAgc3Bpbm5lcjogJ2NpcmNsZXMnLFxuICAgIH0pO1xuICAgIGxvYWRpbmcucHJlc2VudCgpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5wYWdlSW5kZXggPSAxXG4gICAgdGhpcy5sb2FkRGF0YShudWxsLCBxdWVyeSwgbG9hZGluZyk7XG4gICAgLy8gdGhpcy5yZXN1bHRzID0gdGhpcy5kYXRhLmZpbHRlcigoZCkgPT4gZC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkpID4gLTEpO1xuICB9XG4gIGxvYWREYXRhKGV2ZW50ID0gbnVsbCwgZmlsdGVyVmFsdWUgPSB1bmRlZmluZWQsIGxvYWRpbmcgPSBudWxsKSB7XG4gICAgY29uc3QgZmlsdGVycyA9IFtdO1xuICAgIGxldCBzb3J0cyA9ICcnO1xuICAgIGlmICh0aGlzLmRlZmF1bHRTb3J0KSB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgIHNvcnRzID0gJy0nICsgdGhpcy5kZWZhdWx0U29ydDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvcnRzID0gdGhpcy5kZWZhdWx0U29ydDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd1NlcmFjaCkge1xuICAgICAgaWYgKGZpbHRlclZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHkgPSAnKCcgKyB0aGlzLnNlYXJjaEZpZWxkcy5yZXBsYWNlKCcsJywgJ3wnKSArICcpJztcbiAgICAgICAgZmlsdGVycy5wdXNoKHkgKyAnQD0qJyArIGZpbHRlclZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZGVmYXVsdEZpbHRlcikge1xuICAgICAgZmlsdGVycy5wdXNoKHRoaXMuZGVmYXVsdEZpbHRlcilcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJzVmFsdWUgPSBmaWx0ZXJzLmpvaW4oJywgJyk7XG4gICAgICB0aGlzLm1vZGVsU2VydmljZS5nZXRBbGwodGhpcy5wYWdlSW5kZXgsIHRoaXMucGFnZVNpemUsIHNvcnRzLCBmaWx0ZXJzVmFsdWUsIHRoaXMuY3VzdG9tSW5jbHVkZSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEJhc2VRdWVyeURhdGE8VD4pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYWdlSW5kZXggIT09IHJlc3BvbnNlLmdldE1ldGEoKS5tZXRhLmNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCsrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpbHRlclZhbHVlIHx8IGxvYWRpbmcpXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSByZXNwb25zZS5nZXRNb2RlbHMoKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KHJlc3BvbnNlLmdldE1vZGVscygpKTtcblxuICAgICAgICAgIGlmIChldmVudCkgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7XG4gICAgICAgICAgaWYgKGxvYWRpbmcpXG4gICAgICAgICAgICBsb2FkaW5nLmRpc21pc3MoKVxuICAgICAgICB9KVxuICAgIH0sIDcwMCk7XG4gIH1cbiAgYXN5bmMgaGFuZGxlUmVmcmVzaChldmVudCkge1xuICAgIGNvbnN0IGxvYWRpbmcgPSBhd2FpdCB0aGlzLmxvYWRpbmdDdHJsLmNyZWF0ZSh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdHZW5lcmFsLkxvYWRpbmcnKSxcbiAgICAgIHNwaW5uZXI6ICdjaXJjbGVzJyxcbiAgICB9KTtcbiAgICBsb2FkaW5nLnByZXNlbnQoKTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDFcbiAgICB0aGlzLmxvYWREYXRhKG51bGwsIG51bGwsIGxvYWRpbmcpO1xuICAgIGV2ZW50LnRhcmdldC5jb21wbGV0ZSgpO1xuICB9XG4gIG9uQWRkKCkge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuYmFzZVBhdGgpXG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlRm9yd2FyZCh0aGlzLmJhc2VQYXRoICsgJy9hZGQnKTtcbiAgfVxuICBlZGl0TW9kZWwobW9kZWw6IEJhc2VNb2RlbEZvcm1seSkge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUZvcndhcmQodGhpcy5iYXNlUGF0aCArICcvZWRpdC8nICsgbW9kZWwuaWQpO1xuICB9XG4gIGdldExpc3RMYXlvdXQoKSB7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5tb2RlbFNlcnZpY2UubmV3TW9kZWwoKTtcbiAgICB9XG4gICAgdGhpcy5ncmlkTGF5b3V0ID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnSW9uaWNMaXN0TGF5b3V0JywgdGhpcy5tb2RlbCk7XG4gIH1cbiAgZGVsZXRlTW9kZWwobW9kZWwpIHtcbiAgICBjb25zdCBtc2cgPSAnRG8geW91IHdhbnQgdG8gZGVsZXRlICcgKyBtb2RlbFt0aGlzLmRlbGV0ZVByb3BlcnR5TmFtZV0gKyAnPyc7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0obXNnKS50aGVuKFxuICAgICAgKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmRhdGEpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsU2VydmljZS5kZWxldGUobW9kZWwuaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wRGF0YSA9IFtdO1xuICAgICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZE9iamVjdC5lbWl0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5kYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICB0ZW1wRGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHRlbXBEYXRhO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG4gIGdldENlbFZhbHVlKHJvdzogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCFyb3cpXG4gICAgICByZXR1cm4gXCJcIjtcbiAgICAvLyBpZiAocHJvcGVydHlOYW1lID09ICdrb21wZXRlbnplblN0ZGV2JylcbiAgICAvLyAgIGNvbnNvbGUubG9nKHByb3BlcnR5TmFtZSk7XG4gICAgaWYgKHByb3BlcnR5TmFtZS5pbmRleE9mKCcuJykgPT09IC0xKSB7XG4gICAgICB2YXIgZ3JpZExheW91dCA9IHRoaXMuZ3JpZExheW91dC5maW5kKGYgPT4gZi5rZXkuaW5kZXhPZihwcm9wZXJ0eU5hbWUpID4gLTEpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0ZWRWYWx1ZShncmlkTGF5b3V0LCByb3dbcHJvcGVydHlOYW1lXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByb3AgPSBwcm9wZXJ0eU5hbWUuc3BsaXQoJy4nKVswXTtcbiAgICAgIGNvbnN0IHN1YlByb3AgPSBwcm9wZXJ0eU5hbWUucmVwbGFjZShwcm9wICsgJy4nLCAnJyk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDZWxWYWx1ZShyb3dbcHJvcF0sIHN1YlByb3ApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldEZvcm1hdGVkVmFsdWUoZ3JpZExheW91dDogSW9uaWNMaXN0TGF5b3V0Q29uZmlnLCB2YWx1ZTogYW55KSB7XG5cbiAgICBpZiAoZ3JpZExheW91dCkge1xuICAgICAgc3dpdGNoIChncmlkTGF5b3V0LmZvcm1hdGluZykge1xuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQuZGF0ZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGdyaWRMYXlvdXQuY3VzdG9tRm9ybWF0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBHcmlkTGF5b3V0Rm9ybWF0Lm51bWJlcjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5udW1iZXJQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZ3JpZExheW91dC5jdXN0b21Gb3JtYXQpO1xuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQucGVyY2VudDpcbiAgICAgICAgICBjb25zdCB2YWx1ZVByYyA9IHZhbHVlIC8gMTAwO1xuICAgICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnRQaXBlLnRyYW5zZm9ybSh2YWx1ZVByYywgZ3JpZExheW91dC5jdXN0b21Gb3JtYXQpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZGVsZXRlRW5hYmxlZChtb2RlbDogVCkge1xuICAgIGlmICh0aGlzLmRlbGV0ZURpc2FibGVSdWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZVJ1bGUodGhpcy5kZWxldGVEaXNhYmxlUnVsZSwgbW9kZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBldmFsdWF0ZVJ1bGUocnVsZXM6IFJ1bGVbXSwgbW9kZWw6IFQpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZTtcbiAgICBydWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgbGV0IGpzb25SdWxlOiBhbnk7XG4gICAgICBpZiAodHlwZW9mIHJ1bGUucnVsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAganNvblJ1bGUgPSBKU09OLnBhcnNlKHJ1bGUucnVsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqc29uUnVsZSA9IHJ1bGUucnVsZTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9ICd7JyArIHJ1bGUucGFyYW1ldGVycy5tYXAoKGl0ZW06IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiAnXCInICsgaXRlbSArICdcIjpcIicgKyBtb2RlbFtpdGVtXSArICdcIic7XG4gICAgICAgIH0pLmpvaW4oJywnKSArICd9JztcbiAgICAgICAgcmVzdWx0ID0ganNvbkxvZ2ljLmFwcGx5KGpzb25SdWxlLCBKU09OLnBhcnNlKGRhdGEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGpzb25Mb2dpYy5hcHBseShqc29uUnVsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXIgKm5nSWY9XCJzaG93SGVhZGVyXCI+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLW1lbnUtYnV0dG9uPjwvaW9uLW1lbnUtYnV0dG9uPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvbj48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyXCI+PC9uZy1jb250YWluZXI+XG4gIDwvaW9uLXRvb2xiYXI+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoXCI+PC9uZy1jb250YWluZXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBbZnVsbHNjcmVlbl09XCJ0cnVlXCI+XG5cbiAgPGlvbi1yZWZyZXNoZXIgc2xvdD1cImZpeGVkXCIgKGlvblJlZnJlc2gpPVwiaGFuZGxlUmVmcmVzaCgkZXZlbnQpXCI+XG4gICAgPGlvbi1yZWZyZXNoZXItY29udGVudD48L2lvbi1yZWZyZXNoZXItY29udGVudD5cbiAgPC9pb24tcmVmcmVzaGVyPlxuXG4gIDxpb24tbGlzdD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIj5cbiAgICAgIDxpb24taXRlbS1zbGlkaW5nPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8aW9uLWl0ZW0tb3B0aW9ucyAqbmdJZj1cImRlbGV0ZUVuYWJsZWQoaXRlbSlcIiBzaWRlPVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1pdGVtLW9wdGlvbiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwidHJhc2hcIiAoY2xpY2spPSdkZWxldGVNb2RlbChpdGVtKSc+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1pdGVtLW9wdGlvbj5cbiAgICAgICAgPC9pb24taXRlbS1vcHRpb25zPlxuICAgICAgPC9pb24taXRlbS1zbGlkaW5nPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2lvbi1saXN0PlxuICA8aW9uLWluZmluaXRlLXNjcm9sbCB0aHJlc2hvbGQ9XCIxMDBweFwiIChpb25JbmZpbml0ZSk9XCJsb2FkRGF0YSgkZXZlbnQpXCI+XG4gICAgPGlvbi1pbmZpbml0ZS1zY3JvbGwtY29udGVudCBsb2FkaW5nU3Bpbm5lcj1cImJ1YmJsZXNcIiBsb2FkaW5nVGV4dD1cIkxvYWRpbmcgbW9yZSBkYXRhLi4uXCI+XG4gICAgPC9pb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnQ+XG4gIDwvaW9uLWluZmluaXRlLXNjcm9sbD5cblxuPC9pb24tY29udGVudD5cblxuPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gIDxpb24tdGl0bGUgIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+e3t0aXRsZSB8dHJhbnNsYXRlfX08L2lvbi10aXRsZT5cbiAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIChjbGljayk9XCJvbkFkZCgpXCIgZmlsbD1cImNsZWFyXCI+XG4gICAgPGlvbi1pY29uIHNpemU9XCJsYXJnZVwiIG5hbWU9XCJhZGRcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGlvbi10b29sYmFyICpuZ0lmPVwic2hvd1NlcmFjaFwiPlxuICAgIDxpb24tc2VhcmNoYmFyIFtkZWJvdW5jZV09XCIxMDAwXCIgKGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiPjwvaW9uLXNlYXJjaGJhcj5cbiAgPC9pb24tdG9vbGJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW0gbGV0LWl0ZW09J2l0ZW0nPlxuICA8aW9uLWl0ZW0gYnV0dG9uIChjbGljayk9J2VkaXRNb2RlbChpdGVtKSc+XG4gICAgPGlvbi1sYWJlbD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBncmlkTGF5b3V0XCI+XG4gICAgICAgIDxoMiAqbmdJZj1cInJvdy5wcmltYXJ5XCI+IHt7Z2V0Q2VsVmFsdWUoaXRlbSxyb3cua2V5KX19IDwvaDI+XG4gICAgICAgIDxoMyAqbmdJZj1cIiFyb3cucHJpbWFyeVwiPnt7Z2V0Q2VsVmFsdWUoaXRlbSxyb3cua2V5KX19IDwvaDM+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cbjwvbmctdGVtcGxhdGU+Il19