@seniorsistemas/platform-components 6.0.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/modules/advanced-filter/components/advanced-filter/advanced-filter.component.mjs +3 -3
- package/esm2022/modules/advanced-filter/components/form-filter/form-filter.component.mjs +39 -38
- package/esm2022/modules/advanced-filter/models/tab-view.mjs +12 -1
- package/esm2022/modules/advanced-filter/pipes/map-values.pipe.mjs +1 -1
- package/fesm2022/seniorsistemas-platform-components.mjs +97 -84
- package/fesm2022/seniorsistemas-platform-components.mjs.map +1 -1
- package/modules/advanced-filter/components/form-filter/form-filter.component.d.ts +2 -3
- package/modules/advanced-filter/models/tab-view.d.ts +6 -3
- package/modules/advanced-filter/pipes/map-values.pipe.d.ts +1 -1
- package/package.json +1 -1
package/esm2022/modules/advanced-filter/components/advanced-filter/advanced-filter.component.mjs
CHANGED
|
@@ -99,11 +99,11 @@ export class AdvancedFilterComponent {
|
|
|
99
99
|
this.totalFiltersActive = event;
|
|
100
100
|
}
|
|
101
101
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdvancedFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AdvancedFilterComponent, selector: "s-advanced-filter", inputs: { labelButton: "labelButton", onlyContent: "onlyContent", hideButtons: "hideButtons", canOpenFilter: "canOpenFilter", showActiveFiltersCountBadge: "showActiveFiltersCountBadge", filterAndSave: "filterAndSave", contextId: "contextId" }, host: { listeners: { "window:resize": "onResizeWindow($event)" } }, viewQueries: [{ propertyName: "modalComponent", first: true, predicate: FormFilterComponent, descendants: true }], ngImport: i0, template: "<s-button\n *ngIf=\"!onlyContent\"\n [id]=\"'filterButton'\"\n [disabled]=\"!canOpenFilter\"\n (clicked)=\"canOpenFilter ? toggleDialog() : ''\"\n iconClass=\"fa fa-filter\"\n priority=\"default\"\n [label]=\"labelButton\"\n [auxiliary]=\"true\"\n [tooltip]=\"appliedFiltersTooltip\"\n>\n <span\n *ngIf=\"totalFiltersActive && showActiveFiltersCountBadge\"\n class=\"sds-badge-number sds-color-primary custom-badge\"\n >{{ totalFiltersActive }}</span\n >\n</s-button>\n\n<section *ngIf=\"onlyContent\">\n <div class=\"only-content-wrapper\">\n <div class=\"header\">\n <h3>{{ 'platform.filter_service.filters' | translate }}</h3>\n <span (click)=\"close()\" class=\"close_btn pi pi-times\"></span>\n </div>\n <div class=\"app-form-filter\">\n <s-app-form-filter\n [showMessages]=\"false\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n (closeModalOutput)=\"close()\"\n [
|
|
102
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AdvancedFilterComponent, selector: "s-advanced-filter", inputs: { labelButton: "labelButton", onlyContent: "onlyContent", hideButtons: "hideButtons", canOpenFilter: "canOpenFilter", showActiveFiltersCountBadge: "showActiveFiltersCountBadge", filterAndSave: "filterAndSave", contextId: "contextId" }, host: { listeners: { "window:resize": "onResizeWindow($event)" } }, viewQueries: [{ propertyName: "modalComponent", first: true, predicate: FormFilterComponent, descendants: true }], ngImport: i0, template: "<s-button\n *ngIf=\"!onlyContent\"\n [id]=\"'filterButton'\"\n [disabled]=\"!canOpenFilter\"\n (clicked)=\"canOpenFilter ? toggleDialog() : ''\"\n iconClass=\"fa fa-filter\"\n priority=\"default\"\n [label]=\"labelButton\"\n [auxiliary]=\"true\"\n [tooltip]=\"appliedFiltersTooltip\"\n>\n <span\n *ngIf=\"totalFiltersActive && showActiveFiltersCountBadge\"\n class=\"sds-badge-number sds-color-primary custom-badge\"\n >{{ totalFiltersActive }}</span\n >\n</s-button>\n\n<section *ngIf=\"onlyContent\">\n <div class=\"only-content-wrapper\">\n <div class=\"header\">\n <h3>{{ 'platform.filter_service.filters' | translate }}</h3>\n <span (click)=\"close()\" class=\"close_btn pi pi-times\"></span>\n </div>\n <div class=\"app-form-filter\">\n <s-app-form-filter\n [showMessages]=\"false\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n (closeModalOutput)=\"close()\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n </div>\n <div class=\"filter-footer\" *ngIf=\"!error\">\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"close()\"\n ></s-button>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"onApplyFilters()\"\n ></s-button>\n </div>\n </div>\n</section>\n\n<p-dialog\n *ngIf=\"!onlyContent\"\n appendTo=\"body\"\n styleClass=\"filter-dialog\"\n [draggable]=\"false\"\n [modal]=\"true\"\n [(visible)]=\"showDialog\"\n [blockScroll]=\"true\"\n [closable]=\"false\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"w-full flex items-center justify-between\">\n <span>{{ 'platform.filter_service.filters' | translate }}</span>\n <span\n (click)=\"toggleDialog(); close()\"\n (keypress)=\"toggleDialog(); close()\"\n class=\"close_btn pi pi-times cursor-pointer\">\n </span>\n </div>\n </ng-template>\n\n <s-app-form-filter\n [showMessages]=\"true\"\n (errorOutput)=\"onError($event)\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n\n <ng-template pTemplate=\"footer\">\n <ng-container *ngIf=\"!error && !hideButtons\">\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"applyFilters()\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"toggleDialog(); close()\"\n ></s-button>\n </ng-container>\n </ng-template>\n</p-dialog>\n\n\n<p-toast key=\"filterServiceToastKey\" [baseZIndex]=\"5000\"></p-toast>\n", styles: [".custom-badge{position:absolute!important;right:-4px;top:-10px;height:20px;vertical-align:middle;display:table;min-width:22px}.filter-button{position:relative;border:solid 1px black;border-radius:1.5rem;background:transparent;padding:.5rem 1rem;cursor:pointer}.filter-dialog .ui-dialog-title{display:block!important;padding-right:0!important}.filter-footer{text-align:end;border-top:1px solid #e5eaea;padding:13px}.filter-dialog>.ui-dialog-content{height:300px;padding:10px!important}.app-form-filter{height:335px;max-height:335px;overflow:auto}.only-content-wrapper{background-color:#fff}.close_btn{align-content:center;justify-self:right;margin-left:auto}.close_btn:hover{cursor:pointer}.header{text-transform:uppercase;display:flex;width:100%;border-bottom:1px solid #e5eaea;padding:15px;margin-left:0}@media (min-width: 641px) and (max-width: 1024px){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:300px}}@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation: portrait){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:90%}}@media (min-width: 320px) and (max-width: 640px){.filter-dialog{width:95%;left:0;top:0;opacity:1;margin:auto;height:93%}.filter-dialog>.ui-dialog-content{height:85%}}@media (min-width: 320px) and (max-width: 640px) and (max-width: 360px){.filter-dialog button{padding:0!important}.filter-dialog>.ui-dialog-content{height:81%}}\n"], dependencies: [{ kind: "component", type: i1.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i6.FormFilterComponent, selector: "s-app-form-filter", inputs: ["showMessages", "contextId"], outputs: ["totalFiltersActiveOutput", "errorOutput", "showDialogOutput", "closeModalOutput"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
103
103
|
}
|
|
104
104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AdvancedFilterComponent, decorators: [{
|
|
105
105
|
type: Component,
|
|
106
|
-
args: [{ selector: 's-advanced-filter', encapsulation: ViewEncapsulation.None, template: "<s-button\n *ngIf=\"!onlyContent\"\n [id]=\"'filterButton'\"\n [disabled]=\"!canOpenFilter\"\n (clicked)=\"canOpenFilter ? toggleDialog() : ''\"\n iconClass=\"fa fa-filter\"\n priority=\"default\"\n [label]=\"labelButton\"\n [auxiliary]=\"true\"\n [tooltip]=\"appliedFiltersTooltip\"\n>\n <span\n *ngIf=\"totalFiltersActive && showActiveFiltersCountBadge\"\n class=\"sds-badge-number sds-color-primary custom-badge\"\n >{{ totalFiltersActive }}</span\n >\n</s-button>\n\n<section *ngIf=\"onlyContent\">\n <div class=\"only-content-wrapper\">\n <div class=\"header\">\n <h3>{{ 'platform.filter_service.filters' | translate }}</h3>\n <span (click)=\"close()\" class=\"close_btn pi pi-times\"></span>\n </div>\n <div class=\"app-form-filter\">\n <s-app-form-filter\n [showMessages]=\"false\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n (closeModalOutput)=\"close()\"\n [
|
|
106
|
+
args: [{ selector: 's-advanced-filter', encapsulation: ViewEncapsulation.None, template: "<s-button\n *ngIf=\"!onlyContent\"\n [id]=\"'filterButton'\"\n [disabled]=\"!canOpenFilter\"\n (clicked)=\"canOpenFilter ? toggleDialog() : ''\"\n iconClass=\"fa fa-filter\"\n priority=\"default\"\n [label]=\"labelButton\"\n [auxiliary]=\"true\"\n [tooltip]=\"appliedFiltersTooltip\"\n>\n <span\n *ngIf=\"totalFiltersActive && showActiveFiltersCountBadge\"\n class=\"sds-badge-number sds-color-primary custom-badge\"\n >{{ totalFiltersActive }}</span\n >\n</s-button>\n\n<section *ngIf=\"onlyContent\">\n <div class=\"only-content-wrapper\">\n <div class=\"header\">\n <h3>{{ 'platform.filter_service.filters' | translate }}</h3>\n <span (click)=\"close()\" class=\"close_btn pi pi-times\"></span>\n </div>\n <div class=\"app-form-filter\">\n <s-app-form-filter\n [showMessages]=\"false\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n (closeModalOutput)=\"close()\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n </div>\n <div class=\"filter-footer\" *ngIf=\"!error\">\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"close()\"\n ></s-button>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"onApplyFilters()\"\n ></s-button>\n </div>\n </div>\n</section>\n\n<p-dialog\n *ngIf=\"!onlyContent\"\n appendTo=\"body\"\n styleClass=\"filter-dialog\"\n [draggable]=\"false\"\n [modal]=\"true\"\n [(visible)]=\"showDialog\"\n [blockScroll]=\"true\"\n [closable]=\"false\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"w-full flex items-center justify-between\">\n <span>{{ 'platform.filter_service.filters' | translate }}</span>\n <span\n (click)=\"toggleDialog(); close()\"\n (keypress)=\"toggleDialog(); close()\"\n class=\"close_btn pi pi-times cursor-pointer\">\n </span>\n </div>\n </ng-template>\n\n <s-app-form-filter\n [showMessages]=\"true\"\n (errorOutput)=\"onError($event)\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n\n <ng-template pTemplate=\"footer\">\n <ng-container *ngIf=\"!error && !hideButtons\">\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"applyFilters()\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"toggleDialog(); close()\"\n ></s-button>\n </ng-container>\n </ng-template>\n</p-dialog>\n\n\n<p-toast key=\"filterServiceToastKey\" [baseZIndex]=\"5000\"></p-toast>\n", styles: [".custom-badge{position:absolute!important;right:-4px;top:-10px;height:20px;vertical-align:middle;display:table;min-width:22px}.filter-button{position:relative;border:solid 1px black;border-radius:1.5rem;background:transparent;padding:.5rem 1rem;cursor:pointer}.filter-dialog .ui-dialog-title{display:block!important;padding-right:0!important}.filter-footer{text-align:end;border-top:1px solid #e5eaea;padding:13px}.filter-dialog>.ui-dialog-content{height:300px;padding:10px!important}.app-form-filter{height:335px;max-height:335px;overflow:auto}.only-content-wrapper{background-color:#fff}.close_btn{align-content:center;justify-self:right;margin-left:auto}.close_btn:hover{cursor:pointer}.header{text-transform:uppercase;display:flex;width:100%;border-bottom:1px solid #e5eaea;padding:15px;margin-left:0}@media (min-width: 641px) and (max-width: 1024px){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:300px}}@media only screen and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation: portrait){.filter-dialog{width:75%}.filter-dialog>.ui-dialog-content{height:90%}}@media (min-width: 320px) and (max-width: 640px){.filter-dialog{width:95%;left:0;top:0;opacity:1;margin:auto;height:93%}.filter-dialog>.ui-dialog-content{height:85%}}@media (min-width: 320px) and (max-width: 640px) and (max-width: 360px){.filter-dialog button{padding:0!important}.filter-dialog>.ui-dialog-content{height:81%}}\n"] }]
|
|
107
107
|
}], propDecorators: { labelButton: [{
|
|
108
108
|
type: Input
|
|
109
109
|
}], onlyContent: [{
|
|
@@ -125,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
125
125
|
type: HostListener,
|
|
126
126
|
args: ['window:resize', ['$event']]
|
|
127
127
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9hZHZhbmNlZC1maWx0ZXIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvYWR2YW5jZWQtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9hZHZhbmNlZC1maWx0ZXIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvYWR2YW5jZWQtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7QUFFM0UsTUFBTSxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQVFuRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWhDLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDeEIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDckIsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO0lBQ25DLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUV2QixhQUFh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VztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQVlOLGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBMEI5QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWx0ZXIvZm9ybS1maWx0ZXIuY29tcG9uZW50JztcblxuY29uc3QgVFJBTlNMQVRFX1BSRUZJWCA9ICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtYWR2YW5jZWQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2VkLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkdmFuY2VkLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgQElucHV0KCkgbGFiZWxCdXR0b24gPSAnRmlsdGVycyc7XG4gIEBJbnB1dCgpIG9ubHlDb250ZW50ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVCdXR0b25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbk9wZW5GaWx0ZXIgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QWN0aXZlRmlsdGVyc0NvdW50QmFkZ2UgPSB0cnVlO1xuICBASW5wdXQoKSBmaWx0ZXJBbmRTYXZlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbnRleHRJZCA9ICcnXG5cbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBpc01vYmlsZSA9IGZhbHNlO1xuICB0YWJWaWV3T3JpZW50YXRpb24gPSAnbGVmdCc7XG4gIHRvdGFsRmlsdGVyc0FjdGl2ZSA9IDA7XG4gIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgZXJyb3IgPSBmYWxzZTtcbiAgY3VycmVudFRpY2tldCA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoRm9ybUZpbHRlckNvbXBvbmVudClcbiAgbW9kYWxDb21wb25lbnQ6IEZvcm1GaWx0ZXJDb21wb25lbnQ7XG5cbiAgbW9iaWxlQnV0dG9uQWN0aW9ucyA9IFtcbiAgICB7IGlkOiAnc2F2ZScsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzYXZlJyksIGNvbW1hbmQ6ICgpID0+IHRoaXMubW9kYWxDb21wb25lbnQuc2F2ZUZpbHRlcnMoKSB9LFxuICAgIHsgaWQ6ICdjbGVhcicsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdjbGVhcicpLCBjb21tYW5kOiAoKSA9PiB0aGlzLm1vZGFsQ29tcG9uZW50LmNsZWFyRmlsdGVycygpIH1cbiAgXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzTW9iaWxlID0gaW5uZXJXaWR0aCA8PSA2NDA7XG4gICAgdGhpcy50YWJWaWV3T3JpZW50YXRpb24gPSB0aGlzLmlzTW9iaWxlID8gJ3RvcCcgOiAnbGVmdCc7XG5cbiAgICBjb25zdCBzdWIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMubW9kYWxDb21wb25lbnQuZ2V0RmlsdGVycygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHYgPT4gdi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZVdpbmRvdyhldmVudDogYW55KSB7XG4gICAgY29uc3QgeyBpbm5lcldpZHRoIH0gPSBldmVudC50YXJnZXQ7XG4gICAgdGhpcy5pc01vYmlsZSA9IGlubmVyV2lkdGggPD0gNjQwO1xuICAgIHRoaXMudGFiVmlld09yaWVudGF0aW9uID0gdGhpcy5pc01vYmlsZSA/ICd0b3AnIDogJ2xlZnQnO1xuICB9XG5cbiAgZ2V0IGFwcGxpZWRGaWx0ZXJzVG9vbHRpcCgpIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgPiAxXG4gICAgICA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uYXBwbGllZF9maWx0ZXJzX21lc3NhZ2VgLCB7IHRvdGFsQWN0aXZlRmlsdGVyczogdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgfSlcbiAgICAgIDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtUUkFOU0xBVEVfUFJFRklYfS5hcHBsaWVkX2ZpbHRlcl9tZXNzYWdlYCwgeyB0b3RhbEFjdGl2ZUZpbHRlcnM6IHRoaXMudG90YWxGaWx0ZXJzQWN0aXZlIH0pO1xuICB9XG5cbiAgb25FcnJvcihldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuZXJyb3IgPSBldmVudDtcbiAgfVxuXG4gIHNhdmVGaWx0ZXJzKGZvcmNlU2F2ZSA9IGZhbHNlKSB7XG4gICAgdGhpcy5tb2RhbENvbXBvbmVudC5zYXZlRmlsdGVycyhmb3JjZVNhdmUpO1xuICB9XG5cbiAgc2F2ZUZpbHRlcnNXaXRoQ2FsbGJhY2tGdW5jdGlvbihjYWxsYmFja0Z1bmN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLm1vZGFsQ29tcG9uZW50LnNhdmVGaWx0ZXJzV2l0aENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2tGdW5jdGlvbik7XG4gIH1cblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5tb2RhbENvbXBvbmVudC5jbGVhckZpbHRlcnMoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMubW9kYWxDb21wb25lbnQuZ2V0RmlsdGVycygpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2U6ICdkYXNoYm9hcmQ6Y2xvc2UtbW9kYWwnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgbW9kYWxOYW1lOiAnYWR2YW5jZWQtZmlsdGVyLTEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnKidcbiAgICApO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLm1vZGFsQ29tcG9uZW50Lmhhc0NoYW5nZXMoKSkge1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsdGVyQW5kU2F2ZSkge1xuICAgICAgdGhpcy5tb2RhbENvbXBvbmVudC5zYXZlRmlsdGVycygpO1xuICAgIH1cblxuICAgIHRoaXMubW9kYWxDb21wb25lbnQuYXBwbHlGaWx0ZXJzKHRydWUpO1xuICB9XG5cbiAgb25BcHBseUZpbHRlcnMoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyQW5kU2F2ZSkge1xuICAgICAgdGhpcy5tb2RhbENvbXBvbmVudC5zYXZlRmlsdGVycygpO1xuICAgIH1cblxuICAgIHRoaXMubW9kYWxDb21wb25lbnQub25BcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIHRvZ2dsZURpYWxvZygpIHtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSAhdGhpcy5zaG93RGlhbG9nO1xuICB9XG5cbiAgdXBkYXRlVG90YWxGaWx0ZXJzQWN0aXZlKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvdGFsRmlsdGVyc0FjdGl2ZSA9IGV2ZW50O1xuICB9XG59XG4iLCI8cy1idXR0b25cbiAgKm5nSWY9XCIhb25seUNvbnRlbnRcIlxuICBbaWRdPVwiJ2ZpbHRlckJ1dHRvbidcIlxuICBbZGlzYWJsZWRdPVwiIWNhbk9wZW5GaWx0ZXJcIlxuICAoY2xpY2tlZCk9XCJjYW5PcGVuRmlsdGVyID8gdG9nZ2xlRGlhbG9nKCkgOiAnJ1wiXG4gIGljb25DbGFzcz1cImZhIGZhLWZpbHRlclwiXG4gIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gIFtsYWJlbF09XCJsYWJlbEJ1dHRvblwiXG4gIFthdXhpbGlhcnldPVwidHJ1ZVwiXG4gIFt0b29sdGlwXT1cImFwcGxpZWRGaWx0ZXJzVG9vbHRpcFwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJ0b3RhbEZpbHRlcnNBY3RpdmUgJiYgc2hvd0FjdGl2ZUZpbHRlcnNDb3VudEJhZGdlXCJcbiAgICBjbGFzcz1cInNkcy1iYWRnZS1udW1iZXIgc2RzLWNvbG9yLXByaW1hcnkgY3VzdG9tLWJhZGdlXCJcbiAgICA+e3sgdG90YWxGaWx0ZXJzQWN0aXZlIH19PC9zcGFuXG4gID5cbjwvcy1idXR0b24+XG5cbjxzZWN0aW9uICpuZ0lmPVwib25seUNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cIm9ubHktY29udGVudC13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgPGgzPnt7ICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5maWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiY2xvc2UoKVwiIGNsYXNzPVwiY2xvc2VfYnRuIHBpIHBpLXRpbWVzXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtZm9ybS1maWx0ZXJcIj5cbiAgICAgIDxzLWFwcC1mb3JtLWZpbHRlclxuICAgICAgICBbc2hvd01lc3NhZ2VzXT1cImZhbHNlXCJcbiAgICAgICAgKHRvdGFsRmlsdGVyc0FjdGl2ZU91dHB1dCk9XCJ1cGRhdGVUb3RhbEZpbHRlcnNBY3RpdmUoJGV2ZW50KVwiXG4gICAgICAgIChjbG9zZU1vZGFsT3V0cHV0KT1cImNsb3NlKClcIlxuICAgICAgICBbaXNNb2RhbF09XCJmYWxzZVwiXG4gICAgICAgIFtjb250ZXh0SWRdPVwiY29udGV4dElkXCJcbiAgICAgID48L3MtYXBwLWZvcm0tZmlsdGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItZm9vdGVyXCIgKm5nSWY9XCIhZXJyb3JcIj5cbiAgICAgIDxzLWJ1dHRvblxuICAgICAgICBwcmlvcml0eT1cImxpbmtcIlxuICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmNhbmNlbCcpXCJcbiAgICAgICAgKGNsaWNrZWQpPVwiY2xvc2UoKVwiXG4gICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgIDxzLWJ1dHRvblxuICAgICAgICAqbmdJZj1cImlzTW9iaWxlXCJcbiAgICAgICAgcHJpb3JpdHk9XCJkZWZhdWx0XCJcbiAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hY3Rpb25zJylcIlxuICAgICAgICBbYXV4aWxpYXJ5XT1cInRydWVcIlxuICAgICAgICBbbWVudU9wdGlvbnNdPVwibW9iaWxlQnV0dG9uQWN0aW9uc1wiXG4gICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cbiAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgcHJpb3JpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuY2xlYXInKVwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwiY2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgcHJpb3JpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2F2ZScpXCJcbiAgICAgICAgICAoY2xpY2tlZCk9XCJzYXZlRmlsdGVycygpXCJcbiAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxzLWJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgcHJpb3JpdHk9XCJwcmltYXJ5XCJcbiAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5maWx0ZXInKVwiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQXBwbHlGaWx0ZXJzKClcIlxuICAgICAgPjwvcy1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48cC1kaWFsb2dcbiAgKm5nSWY9XCIhb25seUNvbnRlbnRcIlxuICBhcHBlbmRUbz1cImJvZHlcIlxuICBzdHlsZUNsYXNzPVwiZmlsdGVyLWRpYWxvZ1wiXG4gIFtkcmFnZ2FibGVdPVwiZmFsc2VcIlxuICBbbW9kYWxdPVwidHJ1ZVwiXG4gIFsodmlzaWJsZSldPVwic2hvd0RpYWxvZ1wiXG4gIFtibG9ja1Njcm9sbF09XCJ0cnVlXCJcbiAgW2Nsb3NhYmxlXT1cImZhbHNlXCJcbj5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICA8c3Bhbj57eyAncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZmlsdGVycycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGlhbG9nKCk7IGNsb3NlKClcIlxuICAgICAgICAoa2V5cHJlc3MpPVwidG9nZ2xlRGlhbG9nKCk7IGNsb3NlKClcIlxuICAgICAgICBjbGFzcz1cImNsb3NlX2J0biBwaSBwaS10aW1lcyBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxzLWFwcC1mb3JtLWZpbHRlclxuICAgIFtzaG93TWVzc2FnZXNdPVwidHJ1ZVwiXG4gICAgKGVycm9yT3V0cHV0KT1cIm9uRXJyb3IoJGV2ZW50KVwiXG4gICAgKHRvdGFsRmlsdGVyc0FjdGl2ZU91dHB1dCk9XCJ1cGRhdGVUb3RhbEZpbHRlcnNBY3RpdmUoJGV2ZW50KVwiXG4gICAgW2lzTW9kYWxdPVwidHJ1ZVwiXG4gICAgW2NvbnRleHRJZF09XCJjb250ZXh0SWRcIlxuICA+PC9zLWFwcC1mb3JtLWZpbHRlcj5cblxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXJyb3IgJiYgIWhpZGVCdXR0b25zXCI+XG4gICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5maWx0ZXInKVwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxuICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgcHJpb3JpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5zYXZlJylcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwic2F2ZUZpbHRlcnMoKVwiXG4gICAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmNsZWFyJylcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwiY2xlYXJGaWx0ZXJzKClcIlxuICAgICAgICAgID48L3MtYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJpc01vYmlsZVwiXG4gICAgICAgICAgcHJpb3JpdHk9XCJkZWZhdWx0XCJcbiAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmFjdGlvbnMnKVwiXG4gICAgICAgICAgW2F1eGlsaWFyeV09XCJ0cnVlXCJcbiAgICAgICAgICBbbWVudU9wdGlvbnNdPVwibW9iaWxlQnV0dG9uQWN0aW9uc1wiXG4gICAgICAgID48L3MtYnV0dG9uPlxuICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICBwcmlvcml0eT1cImxpbmtcIlxuICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuY2FuY2VsJylcIlxuICAgICAgICAgIChjbGlja2VkKT1cInRvZ2dsZURpYWxvZygpOyBjbG9zZSgpXCJcbiAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9wLWRpYWxvZz5cblxuXG48cC10b2FzdCBrZXk9XCJmaWx0ZXJTZXJ2aWNlVG9hc3RLZXlcIiBbYmFzZVpJbmRleF09XCI1MDAwXCI+PC9wLXRvYXN0PlxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9hZHZhbmNlZC1maWx0ZXIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvYWR2YW5jZWQtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvbW9kdWxlcy9hZHZhbmNlZC1maWx0ZXIvY29tcG9uZW50cy9hZHZhbmNlZC1maWx0ZXIvYWR2YW5jZWQtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7QUFFM0UsTUFBTSxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQVFuRCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWhDLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDeEIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDckIsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO0lBQ25DLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUV2QixhQUFh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VztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQVlOLGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBMEI5QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWx0ZXIvZm9ybS1maWx0ZXIuY29tcG9uZW50JztcblxuY29uc3QgVFJBTlNMQVRFX1BSRUZJWCA9ICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtYWR2YW5jZWQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2VkLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkdmFuY2VkLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgQElucHV0KCkgbGFiZWxCdXR0b24gPSAnRmlsdGVycyc7XG4gIEBJbnB1dCgpIG9ubHlDb250ZW50ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVCdXR0b25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbk9wZW5GaWx0ZXIgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QWN0aXZlRmlsdGVyc0NvdW50QmFkZ2UgPSB0cnVlO1xuICBASW5wdXQoKSBmaWx0ZXJBbmRTYXZlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbnRleHRJZCA9ICcnXG5cbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBpc01vYmlsZSA9IGZhbHNlO1xuICB0YWJWaWV3T3JpZW50YXRpb24gPSAnbGVmdCc7XG4gIHRvdGFsRmlsdGVyc0FjdGl2ZSA9IDA7XG4gIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgZXJyb3IgPSBmYWxzZTtcbiAgY3VycmVudFRpY2tldCA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoRm9ybUZpbHRlckNvbXBvbmVudClcbiAgbW9kYWxDb21wb25lbnQ6IEZvcm1GaWx0ZXJDb21wb25lbnQ7XG5cbiAgbW9iaWxlQnV0dG9uQWN0aW9ucyA9IFtcbiAgICB7IGlkOiAnc2F2ZScsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzYXZlJyksIGNvbW1hbmQ6ICgpID0+IHRoaXMubW9kYWxDb21wb25lbnQuc2F2ZUZpbHRlcnMoKSB9LFxuICAgIHsgaWQ6ICdjbGVhcicsIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdjbGVhcicpLCBjb21tYW5kOiAoKSA9PiB0aGlzLm1vZGFsQ29tcG9uZW50LmNsZWFyRmlsdGVycygpIH1cbiAgXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzTW9iaWxlID0gaW5uZXJXaWR0aCA8PSA2NDA7XG4gICAgdGhpcy50YWJWaWV3T3JpZW50YXRpb24gPSB0aGlzLmlzTW9iaWxlID8gJ3RvcCcgOiAnbGVmdCc7XG5cbiAgICBjb25zdCBzdWIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMubW9kYWxDb21wb25lbnQuZ2V0RmlsdGVycygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHYgPT4gdi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZVdpbmRvdyhldmVudDogYW55KSB7XG4gICAgY29uc3QgeyBpbm5lcldpZHRoIH0gPSBldmVudC50YXJnZXQ7XG4gICAgdGhpcy5pc01vYmlsZSA9IGlubmVyV2lkdGggPD0gNjQwO1xuICAgIHRoaXMudGFiVmlld09yaWVudGF0aW9uID0gdGhpcy5pc01vYmlsZSA/ICd0b3AnIDogJ2xlZnQnO1xuICB9XG5cbiAgZ2V0IGFwcGxpZWRGaWx0ZXJzVG9vbHRpcCgpIHtcbiAgICByZXR1cm4gdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgPiAxXG4gICAgICA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7VFJBTlNMQVRFX1BSRUZJWH0uYXBwbGllZF9maWx0ZXJzX21lc3NhZ2VgLCB7IHRvdGFsQWN0aXZlRmlsdGVyczogdGhpcy50b3RhbEZpbHRlcnNBY3RpdmUgfSlcbiAgICAgIDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHtUUkFOU0xBVEVfUFJFRklYfS5hcHBsaWVkX2ZpbHRlcl9tZXNzYWdlYCwgeyB0b3RhbEFjdGl2ZUZpbHRlcnM6IHRoaXMudG90YWxGaWx0ZXJzQWN0aXZlIH0pO1xuICB9XG5cbiAgb25FcnJvcihldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuZXJyb3IgPSBldmVudDtcbiAgfVxuXG4gIHNhdmVGaWx0ZXJzKGZvcmNlU2F2ZSA9IGZhbHNlKSB7XG4gICAgdGhpcy5tb2RhbENvbXBvbmVudC5zYXZlRmlsdGVycyhmb3JjZVNhdmUpO1xuICB9XG5cbiAgc2F2ZUZpbHRlcnNXaXRoQ2FsbGJhY2tGdW5jdGlvbihjYWxsYmFja0Z1bmN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLm1vZGFsQ29tcG9uZW50LnNhdmVGaWx0ZXJzV2l0aENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2tGdW5jdGlvbik7XG4gIH1cblxuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5tb2RhbENvbXBvbmVudC5jbGVhckZpbHRlcnMoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMubW9kYWxDb21wb25lbnQuZ2V0RmlsdGVycygpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2U6ICdkYXNoYm9hcmQ6Y2xvc2UtbW9kYWwnLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgbW9kYWxOYW1lOiAnYWR2YW5jZWQtZmlsdGVyLTEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnKidcbiAgICApO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLm1vZGFsQ29tcG9uZW50Lmhhc0NoYW5nZXMoKSkge1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsdGVyQW5kU2F2ZSkge1xuICAgICAgdGhpcy5tb2RhbENvbXBvbmVudC5zYXZlRmlsdGVycygpO1xuICAgIH1cblxuICAgIHRoaXMubW9kYWxDb21wb25lbnQuYXBwbHlGaWx0ZXJzKHRydWUpO1xuICB9XG5cbiAgb25BcHBseUZpbHRlcnMoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyQW5kU2F2ZSkge1xuICAgICAgdGhpcy5tb2RhbENvbXBvbmVudC5zYXZlRmlsdGVycygpO1xuICAgIH1cblxuICAgIHRoaXMubW9kYWxDb21wb25lbnQub25BcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIHRvZ2dsZURpYWxvZygpIHtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSAhdGhpcy5zaG93RGlhbG9nO1xuICB9XG5cbiAgdXBkYXRlVG90YWxGaWx0ZXJzQWN0aXZlKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvdGFsRmlsdGVyc0FjdGl2ZSA9IGV2ZW50O1xuICB9XG59XG4iLCI8cy1idXR0b25cbiAgKm5nSWY9XCIhb25seUNvbnRlbnRcIlxuICBbaWRdPVwiJ2ZpbHRlckJ1dHRvbidcIlxuICBbZGlzYWJsZWRdPVwiIWNhbk9wZW5GaWx0ZXJcIlxuICAoY2xpY2tlZCk9XCJjYW5PcGVuRmlsdGVyID8gdG9nZ2xlRGlhbG9nKCkgOiAnJ1wiXG4gIGljb25DbGFzcz1cImZhIGZhLWZpbHRlclwiXG4gIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gIFtsYWJlbF09XCJsYWJlbEJ1dHRvblwiXG4gIFthdXhpbGlhcnldPVwidHJ1ZVwiXG4gIFt0b29sdGlwXT1cImFwcGxpZWRGaWx0ZXJzVG9vbHRpcFwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJ0b3RhbEZpbHRlcnNBY3RpdmUgJiYgc2hvd0FjdGl2ZUZpbHRlcnNDb3VudEJhZGdlXCJcbiAgICBjbGFzcz1cInNkcy1iYWRnZS1udW1iZXIgc2RzLWNvbG9yLXByaW1hcnkgY3VzdG9tLWJhZGdlXCJcbiAgICA+e3sgdG90YWxGaWx0ZXJzQWN0aXZlIH19PC9zcGFuXG4gID5cbjwvcy1idXR0b24+XG5cbjxzZWN0aW9uICpuZ0lmPVwib25seUNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cIm9ubHktY29udGVudC13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgPGgzPnt7ICdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5maWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiY2xvc2UoKVwiIGNsYXNzPVwiY2xvc2VfYnRuIHBpIHBpLXRpbWVzXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtZm9ybS1maWx0ZXJcIj5cbiAgICAgIDxzLWFwcC1mb3JtLWZpbHRlclxuICAgICAgICBbc2hvd01lc3NhZ2VzXT1cImZhbHNlXCJcbiAgICAgICAgKHRvdGFsRmlsdGVyc0FjdGl2ZU91dHB1dCk9XCJ1cGRhdGVUb3RhbEZpbHRlcnNBY3RpdmUoJGV2ZW50KVwiXG4gICAgICAgIChjbG9zZU1vZGFsT3V0cHV0KT1cImNsb3NlKClcIlxuICAgICAgICBbY29udGV4dElkXT1cImNvbnRleHRJZFwiXG4gICAgICA+PC9zLWFwcC1mb3JtLWZpbHRlcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWZvb3RlclwiICpuZ0lmPVwiIWVycm9yXCI+XG4gICAgICA8cy1idXR0b25cbiAgICAgICAgcHJpb3JpdHk9XCJsaW5rXCJcbiAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5jYW5jZWwnKVwiXG4gICAgICAgIChjbGlja2VkKT1cImNsb3NlKClcIlxuICAgICAgPjwvcy1idXR0b24+XG4gICAgICA8cy1idXR0b25cbiAgICAgICAgKm5nSWY9XCJpc01vYmlsZVwiXG4gICAgICAgIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuYWN0aW9ucycpXCJcbiAgICAgICAgW2F1eGlsaWFyeV09XCJ0cnVlXCJcbiAgICAgICAgW21lbnVPcHRpb25zXT1cIm1vYmlsZUJ1dHRvbkFjdGlvbnNcIlxuICAgICAgPjwvcy1idXR0b24+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XG4gICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgIHByaW9yaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmNsZWFyJylcIlxuICAgICAgICAgIChjbGlja2VkKT1cImNsZWFyRmlsdGVycygpXCJcbiAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgIHByaW9yaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLnNhdmUnKVwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwic2F2ZUZpbHRlcnMoKVwiXG4gICAgICAgID48L3MtYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8cy1idXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZmlsdGVyJylcIlxuICAgICAgICAoY2xpY2tlZCk9XCJvbkFwcGx5RmlsdGVycygpXCJcbiAgICAgID48L3MtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cblxuPHAtZGlhbG9nXG4gICpuZ0lmPVwiIW9ubHlDb250ZW50XCJcbiAgYXBwZW5kVG89XCJib2R5XCJcbiAgc3R5bGVDbGFzcz1cImZpbHRlci1kaWFsb2dcIlxuICBbZHJhZ2dhYmxlXT1cImZhbHNlXCJcbiAgW21vZGFsXT1cInRydWVcIlxuICBbKHZpc2libGUpXT1cInNob3dEaWFsb2dcIlxuICBbYmxvY2tTY3JvbGxdPVwidHJ1ZVwiXG4gIFtjbG9zYWJsZV09XCJmYWxzZVwiXG4+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPHNwYW4+e3sgJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmZpbHRlcnMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURpYWxvZygpOyBjbG9zZSgpXCJcbiAgICAgICAgKGtleXByZXNzKT1cInRvZ2dsZURpYWxvZygpOyBjbG9zZSgpXCJcbiAgICAgICAgY2xhc3M9XCJjbG9zZV9idG4gcGkgcGktdGltZXMgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8cy1hcHAtZm9ybS1maWx0ZXJcbiAgICBbc2hvd01lc3NhZ2VzXT1cInRydWVcIlxuICAgIChlcnJvck91dHB1dCk9XCJvbkVycm9yKCRldmVudClcIlxuICAgICh0b3RhbEZpbHRlcnNBY3RpdmVPdXRwdXQpPVwidXBkYXRlVG90YWxGaWx0ZXJzQWN0aXZlKCRldmVudClcIlxuICAgIFtjb250ZXh0SWRdPVwiY29udGV4dElkXCJcbiAgPjwvcy1hcHAtZm9ybS1maWx0ZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVycm9yICYmICFoaWRlQnV0dG9uc1wiPlxuICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBwcmlvcml0eT1cInByaW1hcnlcIlxuICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2UuZmlsdGVyJylcIlxuICAgICAgICAgIChjbGlja2VkKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgPjwvcy1idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cbiAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgIHByaW9yaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uZmlsdGVyX3NlcnZpY2Uuc2F2ZScpXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cInNhdmVGaWx0ZXJzKClcIlxuICAgICAgICAgID48L3MtYnV0dG9uPlxuICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgcHJpb3JpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5jbGVhcicpXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cImNsZWFyRmlsdGVycygpXCJcbiAgICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiaXNNb2JpbGVcIlxuICAgICAgICAgIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5maWx0ZXJfc2VydmljZS5hY3Rpb25zJylcIlxuICAgICAgICAgIFthdXhpbGlhcnldPVwidHJ1ZVwiXG4gICAgICAgICAgW21lbnVPcHRpb25zXT1cIm1vYmlsZUJ1dHRvbkFjdGlvbnNcIlxuICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgcHJpb3JpdHk9XCJsaW5rXCJcbiAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmZpbHRlcl9zZXJ2aWNlLmNhbmNlbCcpXCJcbiAgICAgICAgICAoY2xpY2tlZCk9XCJ0b2dnbGVEaWFsb2coKTsgY2xvc2UoKVwiXG4gICAgICAgID48L3MtYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvcC1kaWFsb2c+XG5cblxuPHAtdG9hc3Qga2V5PVwiZmlsdGVyU2VydmljZVRvYXN0S2V5XCIgW2Jhc2VaSW5kZXhdPVwiNTAwMFwiPjwvcC10b2FzdD5cbiJdfQ==
|