@seniorsistemas/angular-components 19.9.14-develop-f9c6cf7e → 19.9.14-develop-23365630
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/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +1 -0
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +0 -1
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +3 -3
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +12 -7
- package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -5
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +11 -6
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +2 -4
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -76,6 +76,7 @@ export declare class CountryPhonePickerComponent implements OnInit, ControlValue
|
|
|
76
76
|
set value(value: PhoneSelectionData);
|
|
77
77
|
get open(): boolean;
|
|
78
78
|
set open(open: boolean);
|
|
79
|
+
private _detachDropdownPortal;
|
|
79
80
|
onClickout(event: MouseEvent): void;
|
|
80
81
|
onKeydown(event: KeyboardEvent): void;
|
|
81
82
|
writeValue(value: PhoneSelectionData): void;
|
|
@@ -29,7 +29,6 @@ export declare class LookupComponent implements ControlValueAccessor, OnChanges,
|
|
|
29
29
|
protected rowType: string;
|
|
30
30
|
indicatorLogo: LoadingStateIndicators;
|
|
31
31
|
static nextId: number;
|
|
32
|
-
protected hasSearched: boolean;
|
|
33
32
|
alertConfig?: LookupAlertConfig;
|
|
34
33
|
formControlName?: string;
|
|
35
34
|
id: string;
|
|
@@ -206,7 +206,7 @@ export class ChipsComponent {
|
|
|
206
206
|
useExisting: forwardRef(() => ChipsComponent),
|
|
207
207
|
multi: true,
|
|
208
208
|
},
|
|
209
|
-
], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border
|
|
209
|
+
], queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "chipItems", predicate: ChipItemComponent, descendants: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-offset-[-2px] focus-within:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [class.border-grayscale-30]=\"!disabled\"\n [class.bg-grayscale-0]=\"!disabled\"\n [class.border-grayscale-20]=\"disabled\"\n [class.bg-grayscale-5]=\"disabled\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"], dependencies: [{ kind: "component", type: ChipItemComponent, selector: "s-chip-item", inputs: ["dataRender", "objectField", "disabled", "templateRef", "itemIndex", "showTooltip", "maxLengthRenderWithoutTooltip", "showRemove", "removeIconClass", "hidePointerEvents"], outputs: ["clickRemove", "chipClicked"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }] });
|
|
210
210
|
}
|
|
211
211
|
__decorate([
|
|
212
212
|
CheckDisabled()
|
|
@@ -222,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
222
222
|
useExisting: forwardRef(() => ChipsComponent),
|
|
223
223
|
multi: true,
|
|
224
224
|
},
|
|
225
|
-
], standalone: true, imports: [ChipItemComponent, FormsModule, KeyFilter], template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border
|
|
225
|
+
], standalone: true, imports: [ChipItemComponent, FormsModule, KeyFilter], template: "<ul\n role=\"list\"\n class=\"chips-container w-full p-1.5 flex flex-wrap items-center rounded-small border list-none gap-2 min-h-[35px] focus-within:outline focus-within:outline-2 focus-within:outline-offset-[-2px] focus-within:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [class.border-grayscale-30]=\"!disabled\"\n [class.bg-grayscale-0]=\"!disabled\"\n [class.border-grayscale-20]=\"disabled\"\n [class.bg-grayscale-5]=\"disabled\">\n @for(item of value; track $index) {\n <li role=\"listitem\">\n <s-chip-item\n [templateRef]=\"chipTemplate\"\n [dataRender]=\"item\"\n [objectField]=\"field\"\n [itemIndex]=\"$index\"\n [disabled]=\"disabled\"\n [showTooltip]=\"showTooltip\"\n [maxLengthRenderWithoutTooltip]=\"maxLengthRenderWithoutTooltip\"\n (clickRemove)=\"removeItem($event)\"\n (chipClicked)=\"onChipClicked($event)\">\n </s-chip-item>\n </li>\n }\n\n @if(keyFilter) {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n [pKeyFilter]=\"keyFilter\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }@else {\n <input\n #input\n class=\"w-full border-none flex-1 bg-transparent text-grayscale-90 disabled:text-grayscale-30 focus-visible:outline-none\"\n [disabled]=\"disabled || max === value.length\"\n [placeholder]=\"placeholder || ''\"\n [maxlength]=\"maxLength\"\n [id]=\"inputId\"\n [(ngModel)]=\"newItem\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputLostFocus($event)\"\n (keydown)=\"onKeydown($event)\">\n }\n</ul>\n@if(infoLabel) {\n <span class=\"text-grayscale-50 text-xs\">\n {{ infoLabel }}\n </span>\n}\n", styles: [":host.ng-invalid.ng-dirty .chips-container{--tw-border-opacity: 1;border-color:rgb(193 48 24 / var(--tw-border-opacity, 1))}\n"] }]
|
|
226
226
|
}], propDecorators: { disabled: [{
|
|
227
227
|
type: Input
|
|
228
228
|
}], field: [{
|
|
@@ -279,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
279
279
|
type: ViewChildren,
|
|
280
280
|
args: [ChipItemComponent]
|
|
281
281
|
}], onKeydown: [], onInputLostFocus: [] } });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFvQixTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBZUgsTUFBTSxPQUFPLGNBQWM7SUFDTixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFMUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLFlBQVksQ0FBb0I7SUFFdkMsMkVBQTJFO0lBRXBFLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFF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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuLFxyXG4gICAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgS2V5RmlsdGVyUGF0dGVybiwgS2V5RmlsdGVyIH0gZnJvbSAncHJpbWVuZy9rZXlmaWx0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ2hpcEFkZEV2ZW50LCBDaGlwQ2xpY2tFdmVudCwgQ2hpcFJlbW92ZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL2NoaXAtbW9kZWxzJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIHJhbmRvbUhhc2ggfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcclxuaW1wb3J0IHsgQ2hlY2tEaXNhYmxlZCwgcmVzdG9yZUZvY3VzQWZ0ZXJSZW1vdmFsIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xyXG5pbXBvcnQgeyBDaGlwSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NoaXAtaXRlbS9jaGlwLWl0ZW0uY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBlbnRyYWRhIGRlIHRhZ3MvY2hpcHMgcXVlIHBlcm1pdGUgYWRpY2lvbmFyIGUgcmVtb3ZlclxyXG4gKiBpdGVucyBkZSB0ZXh0byBsaXZyZW1lbnRlIG91IGEgcGFydGlyIGRlIHVtYSBsaXN0YS4gU3Vwb3J0YSB0ZW1wbGF0ZXMgcGVyc29uYWxpemFkb3NcclxuICogcGFyYSByZW5kZXJpemHDp8OjbyBkZSBjYWRhIGNoaXAsIGZpbHRybyBkZSB0ZWNsYXMsIGxpbWl0ZSBkZSBpdGVucyBlIGR1cGxpY2HDp8OjbyBjb25maWd1csOhdmVsLlxyXG4gKiBJbXBsZW1lbnRhIHtAbGluayBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gcGFyYSB1c28gZW0gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtY2hpcHNcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0YWdzXCJcclxuICogICBwbGFjZWhvbGRlcj1cIkFkaWNpb25hciB0YWcuLi5cIlxyXG4gKiAgIFttYXhdPVwiMTBcIlxyXG4gKiAgIFthbGxvd0R1cGxpY2F0ZWRdPVwiZmFsc2VcIlxyXG4gKiAgIChhZGRlZCk9XCJvbkFkZGVkKCRldmVudClcIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtY2hpcHMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NoaXBzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGlwc0NvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDaGlwSXRlbUNvbXBvbmVudCwgRm9ybXNNb2R1bGUsIEtleUZpbHRlcl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBwdWJsaWMgbmV3SXRlbSA9ICcnO1xyXG4gICAgcHVibGljIGNoaXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNhYmlsaXRhIGEgaW50ZXJhw6fDo28gY29tIG8gY29tcG9uZW50ZS4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIENoYXZlIGRvIG9iamV0byB1c2FkYSBwYXJhIGV4aWJpw6fDo28gcXVhbmRvIG9zIGl0ZW5zIHPDo28gb2JqZXRvcyBjb21wbGV4b3MuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpZWxkID0gJyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBjaGlwcyBhdHVhbG1lbnRlIGV4aWJpZG9zLiBAZGVmYXVsdCBbXSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2YWx1ZTogYW55W10gPSBbXTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGRlIHBsYWNlaG9sZGVyIGV4aWJpZG8gbm8gY2FtcG8gZGUgZW50cmFkYSBxdWFuZG8gdmF6aW8uICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2hpcHMgcGVybWl0aWRvcy4gQGRlZmF1bHQgSW5maW5pdHkgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4ID0gSW5maW5pdHk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb21wcmltZW50byBtw6F4aW1vIGRvIHRleHRvIGRlIGNhZGEgY2hpcC4gQGRlZmF1bHQgSW5maW5pdHkgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoID0gSW5maW5pdHk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIGRvIGVsZW1lbnRvIGA8aW5wdXQ+YCBpbnRlcm5vLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbnB1dElkID0gYGNoaXBzLSR7cmFuZG9tSGFzaCgpfWA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQZXJtaXRlIGEgYWRpw6fDo28gZGUgY2hpcHMgY29tIHZhbG9yIGR1cGxpY2Fkby4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhbGxvd0R1cGxpY2F0ZWQgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGBmYWxzZWAsIGEgY29tcGFyYcOnw6NvIGRlIGR1cGxpY2F0YXMgw6kgY2FzZS1pbnNlbnNpdGl2ZS4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FzZVNlbnNpdGl2ZUR1cGxpY2F0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBZGljaW9uYSBvIGNoaXAgYW8gcHJlc3Npb25hciBUYWIuIEBkZWZhdWx0IHRydWUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWRkT25UYWIgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQWRpY2lvbmEgbyBjaGlwIGFvIHBlcmRlciBvIGZvY28gKGJsdXIpLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFkZE9uQmx1ciA9IHRydWU7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDYXJhY3RlcmUgc2VwYXJhZG9yIHF1ZSwgcXVhbmRvIGRpZ2l0YWRvLCBjb25maXJtYSBhIGFkacOnw6NvIGRlIHVtIG5vdm8gY2hpcC4gQGRlZmF1bHQgJycgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VwYXJhdG9yID0gJyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb2xvY2EgbyBmb2NvIGF1dG9tYXRpY2FtZW50ZSBubyBjYW1wbyBkZSBlbnRyYWRhIGFvIHJlbmRlcml6YXIgbyBjb21wb25lbnRlLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdXRvZm9jdXMgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGluZm9ybWF0aXZvIGV4aWJpZG8gYWJhaXhvIGRvIGNhbXBvIGRlIGVudHJhZGEuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGluZm9MYWJlbCA9ICcnO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhwcmVzc8OjbyByZWd1bGFyIG91IHBhZHLDo28gcHJlZGVmaW5pZG8gKFByaW1lTkcgS2V5RmlsdGVyUGF0dGVybikgcGFyYSBmaWx0cmFyIHRlY2xhcyBhY2VpdGFzLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBrZXlGaWx0ZXI/OiBSZWdFeHAgfCBLZXlGaWx0ZXJQYXR0ZXJuO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhpYmUgdG9vbHRpcCBhbyBwYXNzYXIgbyBtb3VzZSBzb2JyZSBjaGlwcyBjb20gdGV4dG8gdHJ1bmNhZG8uIEBkZWZhdWx0IHRydWUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBtw6F4aW1vIGRlIGNhcmFjdGVyZXMgZXhpYmlkb3MgZGlyZXRhbWVudGUgbm8gY2hpcCBzZW0gYXBsaWNhciB0cnVuY2FtZW50by4gQGRlZmF1bHQgMjAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXAgPSAyMDtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIG5vdm8gY2hpcCDDqSBhZGljaW9uYWRvIGNvbSBzdWNlc3NvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBBZGRFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIGNoaXAgw6kgcmVtb3ZpZG8gcGVsbyB1c3XDoXJpby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBSZW1vdmVFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gY2FtcG8gZGUgZW50cmFkYSByZWNlYmUgZm9jby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIGVudHJhZGEgcGVyZGUgbyBmb2NvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZm9jdXNMb3N0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjbGljYSBlbSB1bSBjaGlwIGV4aXN0ZW50ZS4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNoaXBDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwQ2xpY2tFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gc2VtcHJlIHF1ZSBhIGxpc3RhIGRlIGNoaXBzIMOpIGFsdGVyYWRhIChhZGnDp8OjbyBvdSByZW1vw6fDo28pLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdIHwgYW55W10+KCk7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihDaGlwSXRlbUNvbXBvbmVudClcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpcEl0ZW1zOiBRdWVyeUxpc3Q8Q2hpcEl0ZW1Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZ1tdIHwgYW55W10pID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICh2YWx1ZTogc3RyaW5nW10gfCBhbnlbXSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICAgIHByaXZhdGUgaXNUYWJFdmVudEFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzICYmIHRoaXMuaW5wdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlcykge1xyXG4gICAgICAgICAgICB0aGlzLmNoaXBUZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzLmZpbmQoKHgpID0+IHgudHlwZSA9PT0gJ2NoaXAtY29udGFpbmVyJyk/LnRlbXBsYXRlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogc3RyaW5nW10gfCBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChvYmopKSB7XHJcbiAgICAgICAgICAgIG9iaiA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZ1tdIHwgYW55W10pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQENoZWNrRGlzYWJsZWQoKVxyXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0gJGV2ZW50LmtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NlcGFyYXRvciA9IHRoaXMuc2VwYXJhdG9yICYmICRldmVudC5rZXkgPT09IHRoaXMuc2VwYXJhdG9yO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50S2V5SXNUYWIgPSAkZXZlbnQua2V5ID09PSAnVGFiJztcclxuICAgICAgICBpZiAoZXZlbnRLZXlJc1RhYikge1xyXG4gICAgICAgICAgICBjb25zdCB0YWJUaW1lb3V0VGltZSA9IDUwO1xyXG4gICAgICAgICAgICB0aGlzLmlzVGFiRXZlbnRBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNUYWJFdmVudEFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCB0YWJUaW1lb3V0VGltZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFkZE9uVGFiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0VudGVyIHx8IGlzU2VwYXJhdG9yKSB7XHJcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uSW5wdXRGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgICAgICB0aGlzLmZvY3VzZWQuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBDaGVja0Rpc2FibGVkKClcclxuICAgIHB1YmxpYyBvbklucHV0TG9zdEZvY3VzKCRldmVudDogRm9jdXNFdmVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy5hZGRPbkJsdXIgfHwgdGhpcy5pc1RhYkV2ZW50QWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRJdGVtKCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c0xvc3QuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVJdGVtKHsgaXRlbUluZGV4LCBldmVudCB9OiB7IGl0ZW1JbmRleDogbnVtYmVyOyBldmVudDogRXZlbnQgfSkge1xyXG4gICAgICAgIGNvbnN0IF9yZW1vdmVkSXRlbSA9IHRoaXMudmFsdWVbaXRlbUluZGV4XTtcclxuICAgICAgICB0aGlzLnZhbHVlLnNwbGljZShpdGVtSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KHsgdmFsdWU6IF9yZW1vdmVkSXRlbSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJlc3RvcmVGb2N1c0FmdGVyUmVtb3ZhbCh0aGlzLmNoaXBJdGVtcz8udG9BcnJheSgpID8/IFtdLCBpdGVtSW5kZXgsICgpID0+IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2hpcENsaWNrZWQoeyBldmVudCwgZGF0YSB9OiB7IGV2ZW50OiBFdmVudDsgZGF0YTogc3RyaW5nIHwgT2JqZWN0IH0pIHtcclxuICAgICAgICB0aGlzLmNoaXBDbGlja2VkLmVtaXQoeyB2YWx1ZTogZGF0YSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRJdGVtKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZVRvQWRkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc01heFJlYWNoZWQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkSXRlbUxlbmd0aCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVUb0FkZCA9IHRoaXMuZ2V0VmFsdWVUb0FkZCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNEdXBsaWNhdGVkSXRlbSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVWYWx1ZSh2YWx1ZVRvQWRkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZXdJdGVtID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNWYWx1ZVRvQWRkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMubmV3SXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzTWF4UmVhY2hlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEodGhpcy5tYXggJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMubWF4KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVmFsaWRJdGVtTGVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA/IHRoaXMubmV3SXRlbS5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGggOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWFwcGVkVmFsdWVzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IHRoaXMudmFsdWUubWFwKCh4KSA9PiB4W3RoaXMuZmllbGRdKSA6IHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZVRvQWRkKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyB7IFt0aGlzLmZpZWxkXTogdGhpcy5uZXdJdGVtIH0gOiB0aGlzLm5ld0l0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNEdXBsaWNhdGVkSXRlbSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd0R1cGxpY2F0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB0aGlzLmdldE1hcHBlZFZhbHVlcygpO1xyXG4gICAgICAgIHJldHVybiAhIW1hcHBlZFZhbHVlcy5maW5kKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhc2VTZW5zaXRpdmVEdXBsaWNhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHggPT09IHRoaXMubmV3SXRlbTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB4LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMubmV3SXRlbS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdG9yZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIHZhbHVlXTtcclxuICAgICAgICB0aGlzLmFkZGVkLmVtaXQoeyB2YWx1ZSB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHVsXG4gICAgcm9sZT1cImxpc3RcIlxuICAgIGNsYXNzPVwiY2hpcHMtY29udGFpbmVyIHctZnVsbCBwLTEuNSBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbWFsbCBib3JkZXIgYm9yZGVyLWdyYXlzY2FsZS0zMCBiZy1ncmF5c2NhbGUtMCBsaXN0LW5vbmUgZ2FwLTIgbWluLWgtWzM1cHhdIGZvY3VzLXdpdGhpbjpvdXRsaW5lIGZvY3VzLXdpdGhpbjpvdXRsaW5lLTIgZm9jdXMtd2l0aGluOm91dGxpbmUtb2Zmc2V0LVstMnB4XSBmb2N1cy13aXRoaW46b3V0bGluZS1bdmFyKC0tcy1mb2N1cy1yaW5nLWNvbG9yLCMwMDkwZmYpXVwiPlxuICAgIEBmb3IoaXRlbSBvZiB2YWx1ZTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxsaSByb2xlPVwibGlzdGl0ZW1cIj5cbiAgICAgICAgICAgIDxzLWNoaXAtaXRlbVxuICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVJlZl09XCJjaGlwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtkYXRhUmVuZGVyXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgIFtvYmplY3RGaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgW2l0ZW1JbmRleF09XCIkaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwXCJcbiAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXBdPVwibWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIChjbGlja1JlbW92ZSk9XCJyZW1vdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjaGlwQ2xpY2tlZCk9XCJvbkNoaXBDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvcy1jaGlwLWl0ZW0+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuXG4gICAgQGlmKGtleUZpbHRlcikge1xuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5c2NhbGUtMCB3LWZ1bGwgYm9yZGVyLW5vbmUgZmxleC0xIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBtYXggPT09IHZhbHVlLmxlbmd0aFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdJdGVtXCJcbiAgICAgICAgICAgIFtwS2V5RmlsdGVyXT1cImtleUZpbHRlclwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgfUBlbHNlIHtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheXNjYWxlLTAgdy1mdWxsIGJvcmRlci1ub25lIGZsZXgtMSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbWF4ID09PSB2YWx1ZS5sZW5ndGhcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3SXRlbVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgfVxuPC91bD5cbkBpZihpbmZvTGFiZWwpIHtcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheXNjYWxlLTUwIHRleHQteHNcIj5cbiAgICAgICAge3sgaW5mb0xhYmVsIH19XG4gICAgPC9zcGFuPlxufVxuIl19
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFvQixTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBZUgsTUFBTSxPQUFPLGNBQWM7SUFDTixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFMUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLFlBQVksQ0FBb0I7SUFFdkMsMkVBQTJFO0lBRXBFLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFeEIsMEdBQTBHO0lBRW5HLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFbEIsbUVBQW1FO0lBRTVELEtBQUssR0FBVSxFQUFFLENBQUM7SUFFekIsa0ZBQWtGO0lBRTNFLFdBQVcsQ0FBcUI7SUFFdkMsd0VBQXdFO0lBRWpFLEdBQUcsR0FBRyxRQUFRLENBQUM7SUFFdEIsK0VBQStFO0lBRXhFLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFFNUIseUdBQXlHO0lBRWxHLE9BQU8sR0FBRyxTQUFTLFVBQVUsRUFBRSxFQUFFLENBQUM7SUFFekMsZ0ZBQWdGO0lBRXpFLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFFOUIsaUdBQWlHO0lBRTFGLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUV4QyxvRUFBb0U7SUFFN0QsUUFBUSxHQUFHLElBQUksQ0FBQztJQUV2QiwwRUFBMEU7SUFFbkUsU0FBUyxHQUFHLElBQUksQ0FBQztJQUV4Qiw0R0FBNEc7SUFFckcsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUV0QixnSEFBZ0g7SUFFekcsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUV6QixxRkFBcUY7SUFFOUUsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUV0QixtSEFBbUg7SUFFNUcsU0FBUyxDQUE2QjtJQUU3QyxpR0FBaUc7SUFFMUYsV0FBVyxHQUFHLElBQUksQ0FBQztJQUUxQixpSEFBaUg7SUFFMUcsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO0lBRTFDLHlFQUF5RTtJQUVsRSxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7SUFFaEQsbUVBQW1FO0lBRTVELE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUVyRCxrRUFBa0U7SUFFM0QsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFaEQsbUVBQW1FO0lBRTVELFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0lBRWxELHdFQUF3RTtJQUVqRSxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFFeEQsdUZBQXVGO0lBRWhGLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUd6QyxTQUFTLEdBQXdDLElBQUksQ0FBQztJQUd0RCxLQUFLLEdBQW1DLElBQUksQ0FBQztJQUc3QyxTQUFTLEdBQXdDLElBQUksQ0FBQztJQUVoRSxRQUFRLEdBQXNDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUN2RCxTQUFTLEdBQXNDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUV2RCxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFMUIsZUFBZTtRQUNsQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBcUI7UUFDbkMsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEVBQXFDO1FBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFjO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBR00sU0FBUyxDQUFDLE1BQXFCO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3BFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDO1FBQzNDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEIsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsTUFBa0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUdNLGdCQUFnQixDQUFDLE1BQWtCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVDO1FBQ3ZFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFTSxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUEyQztRQUN6RSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLE9BQU87UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWE7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU8sWUFBWTtRQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxpQkFBaUI7UUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekUsQ0FBQztJQUVPLGVBQWU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzFFLENBQUM7SUFFTyxhQUFhO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEUsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzt3R0F0UFEsY0FBYzs0RkFBZCxjQUFjLHFxQkFWWjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osb0RBc0dnQixpQkFBaUIsd0dBR04sVUFBVSw0Q0FHeEIsaUJBQWlCLGdEQ2xLbkMsOHdFQXVEQSx3TERDYyxpQkFBaUIscVJBQUUsV0FBVyxreEJBQUUsU0FBUzs7QUFnSjVDO0lBRE4sYUFBYSxFQUFFOytDQW9CZjtBQU9NO0lBRE4sYUFBYSxFQUFFO3NEQU9mOzRGQTlLUSxjQUFjO2tCQWQxQixTQUFTOytCQUNJLFNBQVMsYUFHUjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUM7NEJBQzdDLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKLGNBQ1csSUFBSSxXQUNQLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQzs4QkFVN0MsUUFBUTtzQkFEZCxLQUFLO2dCQUtDLEtBQUs7c0JBRFgsS0FBSztnQkFLQyxLQUFLO3NCQURYLEtBQUs7Z0JBS0MsV0FBVztzQkFEakIsS0FBSztnQkFLQyxHQUFHO3NCQURULEtBQUs7Z0JBS0MsU0FBUztzQkFEZixLQUFLO2dCQUtDLE9BQU87c0JBRGIsS0FBSztnQkFLQyxlQUFlO3NCQURyQixLQUFLO2dCQUtDLHdCQUF3QjtzQkFEOUIsS0FBSztnQkFLQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsU0FBUztzQkFEZixLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxTQUFTO3NCQURmLEtBQUs7Z0JBS0MsU0FBUztzQkFEZixLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxXQUFXO3NCQURqQixLQUFLO2dCQUtDLDZCQUE2QjtzQkFEbkMsS0FBSztnQkFLQyxLQUFLO3NCQURYLE1BQU07Z0JBS0EsT0FBTztzQkFEYixNQUFNO2dCQUtBLE9BQU87c0JBRGIsTUFBTTtnQkFLQSxTQUFTO3NCQURmLE1BQU07Z0JBS0EsV0FBVztzQkFEakIsTUFBTTtnQkFLQSxXQUFXO3NCQURqQixNQUFNO2dCQUlVLFNBQVM7c0JBRHpCLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUlqQixLQUFLO3NCQURyQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXZCLFNBQVM7c0JBRHpCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQXNDeEIsU0FBUyxNQTBCVCxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuLFxyXG4gICAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgS2V5RmlsdGVyUGF0dGVybiwgS2V5RmlsdGVyIH0gZnJvbSAncHJpbWVuZy9rZXlmaWx0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ2hpcEFkZEV2ZW50LCBDaGlwQ2xpY2tFdmVudCwgQ2hpcFJlbW92ZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL2NoaXAtbW9kZWxzJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RlbXBsYXRlJztcclxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIHJhbmRvbUhhc2ggfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcclxuaW1wb3J0IHsgQ2hlY2tEaXNhYmxlZCwgcmVzdG9yZUZvY3VzQWZ0ZXJSZW1vdmFsIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xyXG5pbXBvcnQgeyBDaGlwSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NoaXAtaXRlbS9jaGlwLWl0ZW0uY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBlbnRyYWRhIGRlIHRhZ3MvY2hpcHMgcXVlIHBlcm1pdGUgYWRpY2lvbmFyIGUgcmVtb3ZlclxyXG4gKiBpdGVucyBkZSB0ZXh0byBsaXZyZW1lbnRlIG91IGEgcGFydGlyIGRlIHVtYSBsaXN0YS4gU3Vwb3J0YSB0ZW1wbGF0ZXMgcGVyc29uYWxpemFkb3NcclxuICogcGFyYSByZW5kZXJpemHDp8OjbyBkZSBjYWRhIGNoaXAsIGZpbHRybyBkZSB0ZWNsYXMsIGxpbWl0ZSBkZSBpdGVucyBlIGR1cGxpY2HDp8OjbyBjb25maWd1csOhdmVsLlxyXG4gKiBJbXBsZW1lbnRhIHtAbGluayBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gcGFyYSB1c28gZW0gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtY2hpcHNcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0YWdzXCJcclxuICogICBwbGFjZWhvbGRlcj1cIkFkaWNpb25hciB0YWcuLi5cIlxyXG4gKiAgIFttYXhdPVwiMTBcIlxyXG4gKiAgIFthbGxvd0R1cGxpY2F0ZWRdPVwiZmFsc2VcIlxyXG4gKiAgIChhZGRlZCk9XCJvbkFkZGVkKCRldmVudClcIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtY2hpcHMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NoaXBzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGlwc0NvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDaGlwSXRlbUNvbXBvbmVudCwgRm9ybXNNb2R1bGUsIEtleUZpbHRlcl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBwdWJsaWMgbmV3SXRlbSA9ICcnO1xyXG4gICAgcHVibGljIGNoaXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNhYmlsaXRhIGEgaW50ZXJhw6fDo28gY29tIG8gY29tcG9uZW50ZS4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIENoYXZlIGRvIG9iamV0byB1c2FkYSBwYXJhIGV4aWJpw6fDo28gcXVhbmRvIG9zIGl0ZW5zIHPDo28gb2JqZXRvcyBjb21wbGV4b3MuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpZWxkID0gJyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBjaGlwcyBhdHVhbG1lbnRlIGV4aWJpZG9zLiBAZGVmYXVsdCBbXSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2YWx1ZTogYW55W10gPSBbXTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGRlIHBsYWNlaG9sZGVyIGV4aWJpZG8gbm8gY2FtcG8gZGUgZW50cmFkYSBxdWFuZG8gdmF6aW8uICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2hpcHMgcGVybWl0aWRvcy4gQGRlZmF1bHQgSW5maW5pdHkgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4ID0gSW5maW5pdHk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb21wcmltZW50byBtw6F4aW1vIGRvIHRleHRvIGRlIGNhZGEgY2hpcC4gQGRlZmF1bHQgSW5maW5pdHkgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoID0gSW5maW5pdHk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIGRvIGVsZW1lbnRvIGA8aW5wdXQ+YCBpbnRlcm5vLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpbnB1dElkID0gYGNoaXBzLSR7cmFuZG9tSGFzaCgpfWA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQZXJtaXRlIGEgYWRpw6fDo28gZGUgY2hpcHMgY29tIHZhbG9yIGR1cGxpY2Fkby4gQGRlZmF1bHQgdHJ1ZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhbGxvd0R1cGxpY2F0ZWQgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGBmYWxzZWAsIGEgY29tcGFyYcOnw6NvIGRlIGR1cGxpY2F0YXMgw6kgY2FzZS1pbnNlbnNpdGl2ZS4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2FzZVNlbnNpdGl2ZUR1cGxpY2F0aW9uID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBZGljaW9uYSBvIGNoaXAgYW8gcHJlc3Npb25hciBUYWIuIEBkZWZhdWx0IHRydWUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWRkT25UYWIgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQWRpY2lvbmEgbyBjaGlwIGFvIHBlcmRlciBvIGZvY28gKGJsdXIpLiBAZGVmYXVsdCB0cnVlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFkZE9uQmx1ciA9IHRydWU7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDYXJhY3RlcmUgc2VwYXJhZG9yIHF1ZSwgcXVhbmRvIGRpZ2l0YWRvLCBjb25maXJtYSBhIGFkacOnw6NvIGRlIHVtIG5vdm8gY2hpcC4gQGRlZmF1bHQgJycgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VwYXJhdG9yID0gJyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb2xvY2EgbyBmb2NvIGF1dG9tYXRpY2FtZW50ZSBubyBjYW1wbyBkZSBlbnRyYWRhIGFvIHJlbmRlcml6YXIgbyBjb21wb25lbnRlLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdXRvZm9jdXMgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGluZm9ybWF0aXZvIGV4aWJpZG8gYWJhaXhvIGRvIGNhbXBvIGRlIGVudHJhZGEuIEBkZWZhdWx0ICcnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGluZm9MYWJlbCA9ICcnO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhwcmVzc8OjbyByZWd1bGFyIG91IHBhZHLDo28gcHJlZGVmaW5pZG8gKFByaW1lTkcgS2V5RmlsdGVyUGF0dGVybikgcGFyYSBmaWx0cmFyIHRlY2xhcyBhY2VpdGFzLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBrZXlGaWx0ZXI/OiBSZWdFeHAgfCBLZXlGaWx0ZXJQYXR0ZXJuO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhpYmUgdG9vbHRpcCBhbyBwYXNzYXIgbyBtb3VzZSBzb2JyZSBjaGlwcyBjb20gdGV4dG8gdHJ1bmNhZG8uIEBkZWZhdWx0IHRydWUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAgPSB0cnVlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBtw6F4aW1vIGRlIGNhcmFjdGVyZXMgZXhpYmlkb3MgZGlyZXRhbWVudGUgbm8gY2hpcCBzZW0gYXBsaWNhciB0cnVuY2FtZW50by4gQGRlZmF1bHQgMjAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXAgPSAyMDtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIG5vdm8gY2hpcCDDqSBhZGljaW9uYWRvIGNvbSBzdWNlc3NvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBBZGRFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIGNoaXAgw6kgcmVtb3ZpZG8gcGVsbyB1c3XDoXJpby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBSZW1vdmVFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gY2FtcG8gZGUgZW50cmFkYSByZWNlYmUgZm9jby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIGVudHJhZGEgcGVyZGUgbyBmb2NvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZm9jdXNMb3N0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjbGljYSBlbSB1bSBjaGlwIGV4aXN0ZW50ZS4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGNoaXBDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwQ2xpY2tFdmVudD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gc2VtcHJlIHF1ZSBhIGxpc3RhIGRlIGNoaXBzIMOpIGFsdGVyYWRhIChhZGnDp8OjbyBvdSByZW1vw6fDo28pLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdIHwgYW55W10+KCk7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihDaGlwSXRlbUNvbXBvbmVudClcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpcEl0ZW1zOiBRdWVyeUxpc3Q8Q2hpcEl0ZW1Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZ1tdIHwgYW55W10pID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICh2YWx1ZTogc3RyaW5nW10gfCBhbnlbXSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICAgIHByaXZhdGUgaXNUYWJFdmVudEFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzICYmIHRoaXMuaW5wdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlcykge1xyXG4gICAgICAgICAgICB0aGlzLmNoaXBUZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzLmZpbmQoKHgpID0+IHgudHlwZSA9PT0gJ2NoaXAtY29udGFpbmVyJyk/LnRlbXBsYXRlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogc3RyaW5nW10gfCBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChvYmopKSB7XHJcbiAgICAgICAgICAgIG9iaiA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZ1tdIHwgYW55W10pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQENoZWNrRGlzYWJsZWQoKVxyXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBjb25zdCBpc0VudGVyID0gJGV2ZW50LmtleSA9PT0gJ0VudGVyJztcclxuICAgICAgICBjb25zdCBpc1NlcGFyYXRvciA9IHRoaXMuc2VwYXJhdG9yICYmICRldmVudC5rZXkgPT09IHRoaXMuc2VwYXJhdG9yO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50S2V5SXNUYWIgPSAkZXZlbnQua2V5ID09PSAnVGFiJztcclxuICAgICAgICBpZiAoZXZlbnRLZXlJc1RhYikge1xyXG4gICAgICAgICAgICBjb25zdCB0YWJUaW1lb3V0VGltZSA9IDUwO1xyXG4gICAgICAgICAgICB0aGlzLmlzVGFiRXZlbnRBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNUYWJFdmVudEFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCB0YWJUaW1lb3V0VGltZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFkZE9uVGFiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc0VudGVyIHx8IGlzU2VwYXJhdG9yKSB7XHJcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uSW5wdXRGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgICAgICB0aGlzLmZvY3VzZWQuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIEBDaGVja0Rpc2FibGVkKClcclxuICAgIHB1YmxpYyBvbklucHV0TG9zdEZvY3VzKCRldmVudDogRm9jdXNFdmVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy5hZGRPbkJsdXIgfHwgdGhpcy5pc1RhYkV2ZW50QWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRJdGVtKCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c0xvc3QuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdmVJdGVtKHsgaXRlbUluZGV4LCBldmVudCB9OiB7IGl0ZW1JbmRleDogbnVtYmVyOyBldmVudDogRXZlbnQgfSkge1xyXG4gICAgICAgIGNvbnN0IF9yZW1vdmVkSXRlbSA9IHRoaXMudmFsdWVbaXRlbUluZGV4XTtcclxuICAgICAgICB0aGlzLnZhbHVlLnNwbGljZShpdGVtSW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KHsgdmFsdWU6IF9yZW1vdmVkSXRlbSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHJlc3RvcmVGb2N1c0FmdGVyUmVtb3ZhbCh0aGlzLmNoaXBJdGVtcz8udG9BcnJheSgpID8/IFtdLCBpdGVtSW5kZXgsICgpID0+IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2hpcENsaWNrZWQoeyBldmVudCwgZGF0YSB9OiB7IGV2ZW50OiBFdmVudDsgZGF0YTogc3RyaW5nIHwgT2JqZWN0IH0pIHtcclxuICAgICAgICB0aGlzLmNoaXBDbGlja2VkLmVtaXQoeyB2YWx1ZTogZGF0YSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRJdGVtKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNWYWx1ZVRvQWRkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc01heFJlYWNoZWQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkSXRlbUxlbmd0aCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdmFsdWVUb0FkZCA9IHRoaXMuZ2V0VmFsdWVUb0FkZCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNEdXBsaWNhdGVkSXRlbSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVWYWx1ZSh2YWx1ZVRvQWRkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZXdJdGVtID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNWYWx1ZVRvQWRkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMubmV3SXRlbTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzTWF4UmVhY2hlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEodGhpcy5tYXggJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMubWF4KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVmFsaWRJdGVtTGVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA/IHRoaXMubmV3SXRlbS5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGggOiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0TWFwcGVkVmFsdWVzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IHRoaXMudmFsdWUubWFwKCh4KSA9PiB4W3RoaXMuZmllbGRdKSA6IHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZVRvQWRkKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyB7IFt0aGlzLmZpZWxkXTogdGhpcy5uZXdJdGVtIH0gOiB0aGlzLm5ld0l0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYXNEdXBsaWNhdGVkSXRlbSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd0R1cGxpY2F0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB0aGlzLmdldE1hcHBlZFZhbHVlcygpO1xyXG4gICAgICAgIHJldHVybiAhIW1hcHBlZFZhbHVlcy5maW5kKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhc2VTZW5zaXRpdmVEdXBsaWNhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHggPT09IHRoaXMubmV3SXRlbTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB4LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMubmV3SXRlbS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdG9yZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIHZhbHVlXTtcclxuICAgICAgICB0aGlzLmFkZGVkLmVtaXQoeyB2YWx1ZSB9KTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHVsXG4gICAgcm9sZT1cImxpc3RcIlxuICAgIGNsYXNzPVwiY2hpcHMtY29udGFpbmVyIHctZnVsbCBwLTEuNSBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgcm91bmRlZC1zbWFsbCBib3JkZXIgbGlzdC1ub25lIGdhcC0yIG1pbi1oLVszNXB4XSBmb2N1cy13aXRoaW46b3V0bGluZSBmb2N1cy13aXRoaW46b3V0bGluZS0yIGZvY3VzLXdpdGhpbjpvdXRsaW5lLW9mZnNldC1bLTJweF0gZm9jdXMtd2l0aGluOm91dGxpbmUtW3ZhcigtLXMtZm9jdXMtcmluZy1jb2xvciwjMDA5MGZmKV1cIlxuICAgIFtjbGFzcy5ib3JkZXItZ3JheXNjYWxlLTMwXT1cIiFkaXNhYmxlZFwiXG4gICAgW2NsYXNzLmJnLWdyYXlzY2FsZS0wXT1cIiFkaXNhYmxlZFwiXG4gICAgW2NsYXNzLmJvcmRlci1ncmF5c2NhbGUtMjBdPVwiZGlzYWJsZWRcIlxuICAgIFtjbGFzcy5iZy1ncmF5c2NhbGUtNV09XCJkaXNhYmxlZFwiPlxuICAgIEBmb3IoaXRlbSBvZiB2YWx1ZTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxsaSByb2xlPVwibGlzdGl0ZW1cIj5cbiAgICAgICAgICAgIDxzLWNoaXAtaXRlbVxuICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVJlZl09XCJjaGlwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtkYXRhUmVuZGVyXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgIFtvYmplY3RGaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgW2l0ZW1JbmRleF09XCIkaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dUb29sdGlwXT1cInNob3dUb29sdGlwXCJcbiAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXBdPVwibWF4TGVuZ3RoUmVuZGVyV2l0aG91dFRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIChjbGlja1JlbW92ZSk9XCJyZW1vdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjaGlwQ2xpY2tlZCk9XCJvbkNoaXBDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvcy1jaGlwLWl0ZW0+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuXG4gICAgQGlmKGtleUZpbHRlcikge1xuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLW5vbmUgZmxleC0xIGJnLXRyYW5zcGFyZW50IHRleHQtZ3JheXNjYWxlLTkwIGRpc2FibGVkOnRleHQtZ3JheXNjYWxlLTMwIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBtYXggPT09IHZhbHVlLmxlbmd0aFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdJdGVtXCJcbiAgICAgICAgICAgIFtwS2V5RmlsdGVyXT1cImtleUZpbHRlclwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgfUBlbHNlIHtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGJvcmRlci1ub25lIGZsZXgtMSBiZy10cmFuc3BhcmVudCB0ZXh0LWdyYXlzY2FsZS05MCBkaXNhYmxlZDp0ZXh0LWdyYXlzY2FsZS0zMCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbWF4ID09PSB2YWx1ZS5sZW5ndGhcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3SXRlbVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgfVxuPC91bD5cbkBpZihpbmZvTGFiZWwpIHtcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheXNjYWxlLTUwIHRleHQteHNcIj5cbiAgICAgICAge3sgaW5mb0xhYmVsIH19XG4gICAgPC9zcGFuPlxufVxuIl19
|
package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs
CHANGED
|
@@ -94,12 +94,15 @@ export class CountryPhonePickerComponent {
|
|
|
94
94
|
this._createDropdownPortal();
|
|
95
95
|
}
|
|
96
96
|
else {
|
|
97
|
-
|
|
98
|
-
this._portalHost.detach();
|
|
99
|
-
}
|
|
97
|
+
this._detachDropdownPortal();
|
|
100
98
|
this.phoneInput?.nativeElement?.focus();
|
|
101
99
|
}
|
|
102
100
|
}
|
|
101
|
+
_detachDropdownPortal() {
|
|
102
|
+
if (this._portalHost?.hasAttached()) {
|
|
103
|
+
this._portalHost.detach();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
103
106
|
onClickout(event) {
|
|
104
107
|
if (!this._eRef.nativeElement.contains(event.target)) {
|
|
105
108
|
const clickedOnFilterInput = this.filterInput?.nativeElement === event.target;
|
|
@@ -151,7 +154,9 @@ export class CountryPhonePickerComponent {
|
|
|
151
154
|
if (isDisabled) {
|
|
152
155
|
this.phone.disable({ emitEvent: false });
|
|
153
156
|
this.filter.disable({ emitEvent: false });
|
|
154
|
-
|
|
157
|
+
// Fecha sem devolver o foco ao input, senão a página rola até o campo ao desabilitar o form
|
|
158
|
+
this._open = false;
|
|
159
|
+
this._detachDropdownPortal();
|
|
155
160
|
}
|
|
156
161
|
else {
|
|
157
162
|
this.phone.enable({ emitEvent: false });
|
|
@@ -318,7 +323,7 @@ export class CountryPhonePickerComponent {
|
|
|
318
323
|
},
|
|
319
324
|
CountryPhonePickerService,
|
|
320
325
|
provideNgxMask(),
|
|
321
|
-
], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true, static: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["dropElement"], descendants: true, read: ViewContainerRef }, { propertyName: "dropElement", first: true, predicate: ["dropElement"], descendants: true, read: ElementRef }, { propertyName: "dropdownContainer", first: true, predicate: ["#dropdownContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{
|
|
326
|
+
], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true, static: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["dropElement"], descendants: true, read: ViewContainerRef }, { propertyName: "dropElement", first: true, predicate: ["dropElement"], descendants: true, read: ElementRef }, { propertyName: "dropdownContainer", first: true, predicate: ["#dropdownContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{pointer-events:none}.country-phone-picker--disabled .drop{cursor:default}.country-phone-picker:has(input:focus-visible){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus-visible{color:#697882;outline:0}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}.country-phone-picker.country-phone-picker--disabled .phone-input{background-color:#fbfafc;border-color:#dedce5;color:#c1c1cc}.country-phone-picker.country-phone-picker--disabled .phone-input input{background-color:transparent;color:#c1c1cc}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions", "instantPrefix"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
322
327
|
}
|
|
323
328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerComponent, decorators: [{
|
|
324
329
|
type: Component,
|
|
@@ -330,7 +335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
330
335
|
},
|
|
331
336
|
CountryPhonePickerService,
|
|
332
337
|
provideNgxMask(),
|
|
333
|
-
], standalone: true, imports: [NgClass, NgxMaskDirective, FormsModule, ReactiveFormsModule, NgStyle, TranslatePipe], template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{
|
|
338
|
+
], standalone: true, imports: [NgClass, NgxMaskDirective, FormsModule, ReactiveFormsModule, NgStyle, TranslatePipe], template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{pointer-events:none}.country-phone-picker--disabled .drop{cursor:default}.country-phone-picker:has(input:focus-visible){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus-visible{color:#697882;outline:0}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}.country-phone-picker.country-phone-picker--disabled .phone-input{background-color:#fbfafc;border-color:#dedce5;color:#c1c1cc}.country-phone-picker.country-phone-picker--disabled .phone-input input{background-color:transparent;color:#c1c1cc}\n"] }]
|
|
334
339
|
}], propDecorators: { countries: [{
|
|
335
340
|
type: Input
|
|
336
341
|
}], ordination: [{
|
|
@@ -364,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
364
369
|
type: HostListener,
|
|
365
370
|
args: ['keydown', ['$event']]
|
|
366
371
|
}] } });
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUVILGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdD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QkFoQnZDLFNBQVM7K0JBQ0ksd0JBQXdCLGFBR3ZCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRCx5QkFBeUI7d0JBQ3pCLGNBQWMsRUFBRTtxQkFDbkIsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUM7OEJBZ0J2RixTQUFTO3NCQURmLEtBQUs7Z0JBVUMsVUFBVTtzQkFEaEIsS0FBSztnQkFRQyxRQUFRO3NCQURkLE1BQU07Z0JBUUEsU0FBUztzQkFEZixNQUFNO2dCQUlBLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJeEIsV0FBVztzQkFEM0IsU0FBUzt1QkFBQyxhQUFhO2dCQXNCakIsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGtCQUFrQjtnQkFJdEIsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFJN0MsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl2QyxpQkFBaUI7c0JBRHZCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQThCOUMsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkMsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvbVBvcnRhbE91dGxldCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIERlc3Ryb3lSZWYsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUExBVEZPUk1fSUQsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9jb3VudHJ5LXBob25lLXBpY2tlci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IENvdW50cnlQaG9uZURhdGEgfSBmcm9tICcuL21vZGVscy9jb3VudHJ5LXBob25lLWRhdGEnO1xyXG5pbXBvcnQgeyBPcmRpbmF0aW9uIH0gZnJvbSAnLi9tb2RlbHMvb3JkaW5hdGlvbic7XHJcblxyXG5pbXBvcnQgeyBQaG9uZVNlbGVjdGlvbkRhdGEgfSBmcm9tICcuL21vZGVscy9waG9uZS1zZWxlY3Rpb24tZGF0YSc7XHJcbmltcG9ydCB7IE5neE1hc2tEaXJlY3RpdmUsIHByb3ZpZGVOZ3hNYXNrIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIHNlbGV0b3IgZGUgcGHDrXMgZSBuw7ptZXJvIGRlIHRlbGVmb25lIGNvbSBtw6FzY2FyYSBkaW7Dom1pY2EuXHJcbiAqIEV4aWJlIHVtYSBsaXN0YSBkZSBwYcOtc2VzIGNvbSBzZXVzIGPDs2RpZ29zIERESSBlIGFwbGljYSBhdXRvbWF0aWNhbWVudGUgYSBtw6FzY2FyYVxyXG4gKiBkZSBmb3JtYXRhw6fDo28gZG8gbsO6bWVybyBjb25mb3JtZSBvIHBhw61zIHNlbGVjaW9uYWRvLiBJbXBsZW1lbnRhIHtAbGluayBDb250cm9sVmFsdWVBY2Nlc3Nvcn1cclxuICogcGFyYSBpbnRlZ3Jhw6fDo28gY29tIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLWNvdW50cnktcGhvbmUtcGlja2VyXHJcbiAqICAgZm9ybUNvbnRyb2xOYW1lPVwidGVsZWZvbmVcIlxyXG4gKiAgIFtjb3VudHJpZXNdPVwiWydCUicsICdVUycsICdBUiddXCJcclxuICogICAoc2VsZWN0ZWQpPVwib25QYWlzU2VsZWNpb25hZG8oJGV2ZW50KVwiIC8+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1jb3VudHJ5LXBob25lLXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ291bnRyeVBob25lUGlja2VyU2VydmljZSxcclxuICAgICAgICBwcm92aWRlTmd4TWFzaygpLFxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgTmd4TWFza0RpcmVjdGl2ZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nU3R5bGUsIFRyYW5zbGF0ZVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlID0gaW5qZWN0KENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZVJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3Q8T2JqZWN0PihQTEFURk9STV9JRCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdGEgZGUgY8OzZGlnb3MgZGUgcGHDrXMgKElTTyAzMTY2LTEgYWxwaGEtMikgZXhpYmlkb3Mgbm8gc2VsZXRvci5cclxuICAgICAqIFF1YW5kbyB2YXppYSwgdG9kb3Mgb3MgcGHDrXNlcyBkaXNwb27DrXZlaXMgc8OjbyBsaXN0YWRvcy5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCBbXVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvdW50cmllczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBDcml0w6lyaW8gZGUgb3JkZW5hw6fDo28gZG9zIHBhw61zZXMgbmEgbGlzdGEuXHJcbiAgICAgKiBBY2VpdGEgb3MgdmFsb3JlcyBkbyBlbnVtIGBPcmRpbmF0aW9uYCAoZXguOiBwb3Igbm9tZSwgcG9yIERESSwgc2VtIG9yZGVuYcOnw6NvKS5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCBPcmRpbmF0aW9uLk5PXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgb3JkaW5hdGlvbjogT3JkaW5hdGlvbiA9IE9yZGluYXRpb24uTk87XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBzZWxlY2lvbmEgdW0gcGHDrXMgbm8gZHJvcGRvd24uXHJcbiAgICAgKiBFbWl0ZSB1bSBvYmpldG8ge0BsaW5rIENvdW50cnlQaG9uZURhdGF9IGNvbSBkYWRvcyBkbyBwYcOtcyBlc2NvbGhpZG8uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q291bnRyeVBob25lRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyBkZSBuw7ptZXJvIGRlIHRlbGVmb25lIHBlcmRlIG8gZm9jby5cclxuICAgICAqIEVtaXRlIG8gb2JqZXRvIHtAbGluayBQaG9uZVNlbGVjdGlvbkRhdGF9IGNvbSBwYcOtcyBlIG7Dum1lcm8gYXR1YWlzLCBvdSBgbnVsbGAuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZvY3VzTG9zdDogRXZlbnRFbWl0dGVyPFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3Bob25lSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHBob25lSW5wdXQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcklucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgbWFzazogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtOiBDb3VudHJ5UGhvbmVEYXRhIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XHJcbiAgICBwdWJsaWMgZmlsdGVyZWRDb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW10gPSBbXTtcclxuICAgIHB1YmxpYyBwaG9uZSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xyXG4gICAgcHVibGljIGZpbHRlciA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xyXG5cclxuICAgIHB1YmxpYyBkcm9wVG9wID0gMDtcclxuICAgIHB1YmxpYyBkcm9wTGVmdCA9IDA7XHJcbiAgICBwcml2YXRlIF92YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9vbkNoYW5nZT86ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkO1xyXG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9jb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW10gPSBbXTtcclxuICAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX29mZnNldFRvcCA9IDA7XHJcbiAgICBwcml2YXRlIF9wb3J0YWxIb3N0OiBEb21Qb3J0YWxPdXRsZXQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJylcclxuICAgIHB1YmxpYyBkcm9wZG93blRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHB1YmxpYyBkcm9wRWxlbWVudDogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJyNkcm9wZG93bkNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG4gICAgcHVibGljIGRyb3Bkb3duQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPz8gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb3BlbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3BlbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IG9wZW4ob3BlbjogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX29wZW4gPSBvcGVuO1xyXG5cclxuICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEcm9wZG93blBvcnRhbCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wb3J0YWxIb3N0Py5oYXNBdHRhY2hlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmRldGFjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucGhvbmVJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrZWRPbkZpbHRlcklucHV0ID0gdGhpcy5maWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuICYmICFjbGlja2VkT25GaWx0ZXJJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICcgJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuX2NvdW50cmllc0xpc3RbdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nICYmIHRoaXMub3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9Eb3duKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyAmJiB0aGlzLm9wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5fbW92ZVRvVXAoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlPy5pZCkge1xyXG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKHsgaWQgfSkgPT4gaWQgPT09IHZhbHVlLmlkKTtcclxuICAgICAgICAgICAgaWYgKGNvdW50cnkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0SXRlbShjb3VudHJ5WzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlPy5yYXdWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKHZhbHVlLnJhd1ZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IG9uVG91Y2hlZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcblxyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGhvbmUuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBob25lLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLl9jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLmdldENvdW50cmllcyh0aGlzLm9yZGluYXRpb24pO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMuX2ZpbHRlckNvdW50cmllcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXMuZmlsdGVyKChjb3VudHJ5KSA9PiB0aGlzLmNvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5LmlkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xyXG5cclxuICAgICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcclxuICAgICAgICAgICAgICAgIHJhd1ZhbHVlOiB2YWx1ZSA/PyAnJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6ICcnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fb25DaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU2VsZWN0SXRlbShjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xyXG4gICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuX2NvdW50cmllc0xpc3QuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbGVhbkZpbHRlcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbHRlci5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJsdXIodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvY3VzTG9zdC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TWFzaygpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy5zZWxlY3RlZEl0ZW0ubWFzaztcclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlPy5yYXdWYWx1ZSB8fCB0aGlzLnZhbHVlLnJhd1ZhbHVlLmxlbmd0aCA8PSBtYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgJycpLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgPyBtYXNrWzBdIC8vIGZpeG9cclxuICAgICAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXNrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzaz8ucmVwbGFjZSgvOS9nLCAnJykgPz8gJy0gTk8gTUFTSyAtJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCk6IENvdW50cnlQaG9uZURhdGEge1xyXG4gICAgICAgIGlmICghdGhpcy5fY291bnRyaWVzTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb3VudHJ5IGxvYWRlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09ICdicicpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWRCeUJyLmxlbmd0aCA/IGZpbHRlcmVkQnlCclswXSA6IHRoaXMuX2NvdW50cmllc0xpc3RbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudHJ5TmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY291bnRyeV9uYW1lXyR7Y291bnRyeS5pZH1gLFxyXG4gICAgICAgICAgICAgICAgKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnRyeU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIF9tb3ZlVG9VcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RMaXN0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0LWxpc3QnKTtcclxuICAgICAgICBpZiAoIXNlbGVjdExpc3QpIHJldHVybjtcclxuICAgICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA8PSB0aGlzLl9vZmZzZXRUb3ApIHtcclxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0VG9wIC09IDQ1O1xyXG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNDUk9MTF9PRkZTRVRfVEhSRVNIT0xEID0gMTgwO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU0NST0xMX0FNT1VOVF9QRVJfSVRFTSA9IDQ1O1xyXG5cclxuICAgIHByaXZhdGUgX21vdmVUb0Rvd24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA+PSB0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QtbGlzdCcpO1xyXG4gICAgICAgIGlmICghc2VsZWN0TGlzdCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+XHJcbiAgICAgICAgICAgIHRoaXMuX29mZnNldFRvcCArIENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudC5TQ1JPTExfT0ZGU0VUX1RIUkVTSE9MRFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKz0gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9BTU9VTlRfUEVSX0lURU07XHJcbiAgICAgICAgICAgIHNlbGVjdExpc3Quc2Nyb2xsVG8oMCwgdGhpcy5fb2Zmc2V0VG9wKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXNrKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBtYXNrO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbT8ubWFzaykpIHtcclxuICAgICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJyk7XHJcbiAgICAgICAgICAgIG1hc2sgPSB2YWx1ZS5sZW5ndGggPD0gcmF3TWFzay5sZW5ndGggPyB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdICsgJ1xcMCcgOiB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzFdICsgJ1xcMCc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrICsgJ1xcMCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9rZW5zID0gJyc7XHJcbiAgICAgICAgbGV0IHJlcGxhY2UgPSAnJztcclxuICAgICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XHJcbiAgICAgICAgbGV0IGNvbnRhZG9yID0gMDtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBtYXNrKSB7XHJcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbiwgMTApKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdW11bGFkb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgKz0gYChcXFxcZHske2FjdW11bGFkb3J9fSlgO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb250YWRvcisrO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQke2NvbnRhZG9yfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGFjdW11bGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gJ1xcMCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlICs9IHRva2VuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBob25lLnZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCh0b2tlbnMpLCByZXBsYWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jcmVhdGVEcm9wZG93blBvcnRhbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5kcm9wRWxlbWVudCkpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xyXG4gICAgICAgIGNvbnN0IGRyb3BFbGVtZW50UmVjdCA9IHRoaXMuZHJvcEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kcm9wVG9wID0gZHJvcEVsZW1lbnRSZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgICAgIHRoaXMuZHJvcExlZnQgPSBkcm9wRWxlbWVudFJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChib2R5RWxlbWVudCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWY8YW55PixcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaChwb3J0YWwpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXZcbiAgICBjbGFzcz1cImNvdW50cnktcGhvbmUtcGlja2VyXCJcbiAgICBbY2xhc3MuY291bnRyeS1waG9uZS1waWNrZXItLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICNkcm9wRWxlbWVudFxuICAgICAgICBjbGFzcz1cInBob25lLWlucHV0XCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkICYmIChvcGVuID0gIW9wZW4pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtZmxhZ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZEl0ZW0/LmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1pY29uIGZhcyBmYS1jYXJldC1kb3duXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaG9uZS1kZGlcIj57eyBzZWxlY3RlZEl0ZW0/LmRkaSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGhvbmVJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwaG9uZVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25QaG9uZUlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIodmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgICAgIEBpZiAob3Blbikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogZHJvcFRvcCArICdweCcsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtY2xlYXIgZmEgZmEtdGltZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYW5GaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2VsZWN0LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY291bnRyeSBvZiBmaWx0ZXJlZENvdW50cmllc0xpc3Q7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3Qtb3B0aW9uLS1mb2N1c2VkJzogJGluZGV4ID09PSBjdXJyZW50SXRlbUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0oY291bnRyeSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY291bnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJyArIGNvdW50cnkuaWQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19kZGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5kZGkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUVILGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdD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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRGVzdHJveVJlZixcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBQTEFURk9STV9JRCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZixcclxuICAgIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgTmdDbGFzcywgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy91dGlscyc7XHJcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQ291bnRyeVBob25lRGF0YSB9IGZyb20gJy4vbW9kZWxzL2NvdW50cnktcGhvbmUtZGF0YSc7XHJcbmltcG9ydCB7IE9yZGluYXRpb24gfSBmcm9tICcuL21vZGVscy9vcmRpbmF0aW9uJztcclxuXHJcbmltcG9ydCB7IFBob25lU2VsZWN0aW9uRGF0YSB9IGZyb20gJy4vbW9kZWxzL3Bob25lLXNlbGVjdGlvbi1kYXRhJztcclxuaW1wb3J0IHsgTmd4TWFza0RpcmVjdGl2ZSwgcHJvdmlkZU5neE1hc2sgfSBmcm9tICduZ3gtbWFzayc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgc2VsZXRvciBkZSBwYcOtcyBlIG7Dum1lcm8gZGUgdGVsZWZvbmUgY29tIG3DoXNjYXJhIGRpbsOibWljYS5cclxuICogRXhpYmUgdW1hIGxpc3RhIGRlIHBhw61zZXMgY29tIHNldXMgY8OzZGlnb3MgRERJIGUgYXBsaWNhIGF1dG9tYXRpY2FtZW50ZSBhIG3DoXNjYXJhXHJcbiAqIGRlIGZvcm1hdGHDp8OjbyBkbyBuw7ptZXJvIGNvbmZvcm1lIG8gcGHDrXMgc2VsZWNpb25hZG8uIEltcGxlbWVudGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfVxyXG4gKiBwYXJhIGludGVncmHDp8OjbyBjb20gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtY291bnRyeS1waG9uZS1waWNrZXJcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxlZm9uZVwiXHJcbiAqICAgW2NvdW50cmllc109XCJbJ0JSJywgJ1VTJywgJ0FSJ11cIlxyXG4gKiAgIChzZWxlY3RlZCk9XCJvblBhaXNTZWxlY2lvbmFkbygkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLWNvdW50cnktcGhvbmUtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByb3ZpZGVOZ3hNYXNrKCksXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBOZ3hNYXNrRGlyZWN0aXZlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdTdHlsZSwgVHJhbnNsYXRlUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgPSBpbmplY3QoQ291bnRyeVBob25lUGlja2VyU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdDxPYmplY3Q+KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBjw7NkaWdvcyBkZSBwYcOtcyAoSVNPIDMxNjYtMSBhbHBoYS0yKSBleGliaWRvcyBubyBzZWxldG9yLlxyXG4gICAgICogUXVhbmRvIHZhemlhLCB0b2RvcyBvcyBwYcOtc2VzIGRpc3BvbsOtdmVpcyBzw6NvIGxpc3RhZG9zLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IFtdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENyaXTDqXJpbyBkZSBvcmRlbmHDp8OjbyBkb3MgcGHDrXNlcyBuYSBsaXN0YS5cclxuICAgICAqIEFjZWl0YSBvcyB2YWxvcmVzIGRvIGVudW0gYE9yZGluYXRpb25gIChleC46IHBvciBub21lLCBwb3IgRERJLCBzZW0gb3JkZW5hw6fDo28pLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IE9yZGluYXRpb24uTk9cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmRpbmF0aW9uOiBPcmRpbmF0aW9uID0gT3JkaW5hdGlvbi5OTztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHNlbGVjaW9uYSB1bSBwYcOtcyBubyBkcm9wZG93bi5cclxuICAgICAqIEVtaXRlIHVtIG9iamV0byB7QGxpbmsgQ291bnRyeVBob25lRGF0YX0gY29tIGRhZG9zIGRvIHBhw61zIGVzY29saGlkby5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDb3VudHJ5UGhvbmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIG7Dum1lcm8gZGUgdGVsZWZvbmUgcGVyZGUgbyBmb2NvLlxyXG4gICAgICogRW1pdGUgbyBvYmpldG8ge0BsaW5rIFBob25lU2VsZWN0aW9uRGF0YX0gY29tIHBhw61zIGUgbsO6bWVybyBhdHVhaXMsIG91IGBudWxsYC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZm9jdXNMb3N0OiBFdmVudEVtaXR0ZXI8UGhvbmVTZWxlY3Rpb25EYXRhIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcGhvbmVJbnB1dDogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JylcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVySW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBtYXNrOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvdW50cnlQaG9uZURhdGEgfCBudWxsID0gbnVsbDtcclxuICAgIHB1YmxpYyBjdXJyZW50SXRlbUluZGV4ID0gMDtcclxuICAgIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXSA9IFtdO1xyXG4gICAgcHVibGljIHBob25lID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XHJcbiAgICBwdWJsaWMgZmlsdGVyID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XHJcblxyXG4gICAgcHVibGljIGRyb3BUb3AgPSAwO1xyXG4gICAgcHVibGljIGRyb3BMZWZ0ID0gMDtcclxuICAgIHByaXZhdGUgX3ZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUgX29uQ2hhbmdlPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9vblRvdWNoZWQ/OiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgX2NvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfb2Zmc2V0VG9wID0gMDtcclxuICAgIHByaXZhdGUgX3BvcnRhbEhvc3Q6IERvbVBvcnRhbE91dGxldCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duVGVtcGxhdGUnKVxyXG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkcm9wRWxlbWVudCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkcm9wRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG4gICAgcHVibGljIGRyb3BFbGVtZW50OiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnI2Ryb3Bkb3duQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgZHJvcGRvd25Db250YWluZXI6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5tYXNrID0gdGhpcy5nZXRNYXNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBvcGVuKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XHJcblxyXG4gICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURyb3Bkb3duUG9ydGFsKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZGV0YWNoRHJvcGRvd25Qb3J0YWwoKTtcclxuICAgICAgICAgICAgdGhpcy5waG9uZUlucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9kZXRhY2hEcm9wZG93blBvcnRhbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fcG9ydGFsSG9zdD8uaGFzQXR0YWNoZWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmRldGFjaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25DbGlja291dChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xpY2tlZE9uRmlsdGVySW5wdXQgPSB0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW4gJiYgIWNsaWNrZWRPbkZpbHRlcklucHV0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fY291bnRyaWVzTGlzdFt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgJiYgdGhpcy5vcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vdmVUb0Rvd24oKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnICYmIHRoaXMub3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9VcCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodmFsdWU/LmlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLl9jb3VudHJpZXNMaXN0LmZpbHRlcigoeyBpZCB9KSA9PiBpZCA9PT0gdmFsdWUuaWQpO1xyXG4gICAgICAgICAgICBpZiAoY291bnRyeS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RJdGVtKGNvdW50cnlbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsdWU/LnJhd1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUodmFsdWUucmF3VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuXHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5waG9uZS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIC8vIEZlY2hhIHNlbSBkZXZvbHZlciBvIGZvY28gYW8gaW5wdXQsIHNlbsOjbyBhIHDDoWdpbmEgcm9sYSBhdMOpIG8gY2FtcG8gYW8gZGVzYWJpbGl0YXIgbyBmb3JtXHJcbiAgICAgICAgICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fZGV0YWNoRHJvcGRvd25Qb3J0YWwoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBob25lLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLl9jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLmdldENvdW50cmllcyh0aGlzLm9yZGluYXRpb24pO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMuX2ZpbHRlckNvdW50cmllcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXMuZmlsdGVyKChjb3VudHJ5KSA9PiB0aGlzLmNvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5LmlkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xyXG5cclxuICAgICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcclxuICAgICAgICAgICAgICAgIHJhd1ZhbHVlOiB2YWx1ZSA/PyAnJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6ICcnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fb25DaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU2VsZWN0SXRlbShjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xyXG4gICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuX2NvdW50cmllc0xpc3QuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbGVhbkZpbHRlcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbHRlci5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJsdXIodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvY3VzTG9zdC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TWFzaygpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy5zZWxlY3RlZEl0ZW0ubWFzaztcclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlPy5yYXdWYWx1ZSB8fCB0aGlzLnZhbHVlLnJhd1ZhbHVlLmxlbmd0aCA8PSBtYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgJycpLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgPyBtYXNrWzBdIC8vIGZpeG9cclxuICAgICAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXNrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzaz8ucmVwbGFjZSgvOS9nLCAnJykgPz8gJy0gTk8gTUFTSyAtJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCk6IENvdW50cnlQaG9uZURhdGEge1xyXG4gICAgICAgIGlmICghdGhpcy5fY291bnRyaWVzTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb3VudHJ5IGxvYWRlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09ICdicicpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWRCeUJyLmxlbmd0aCA/IGZpbHRlcmVkQnlCclswXSA6IHRoaXMuX2NvdW50cmllc0xpc3RbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudHJ5TmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY291bnRyeV9uYW1lXyR7Y291bnRyeS5pZH1gLFxyXG4gICAgICAgICAgICAgICAgKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnRyeU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIF9tb3ZlVG9VcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RMaXN0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0LWxpc3QnKTtcclxuICAgICAgICBpZiAoIXNlbGVjdExpc3QpIHJldHVybjtcclxuICAgICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA8PSB0aGlzLl9vZmZzZXRUb3ApIHtcclxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0VG9wIC09IDQ1O1xyXG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNDUk9MTF9PRkZTRVRfVEhSRVNIT0xEID0gMTgwO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU0NST0xMX0FNT1VOVF9QRVJfSVRFTSA9IDQ1O1xyXG5cclxuICAgIHByaXZhdGUgX21vdmVUb0Rvd24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA+PSB0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QtbGlzdCcpO1xyXG4gICAgICAgIGlmICghc2VsZWN0TGlzdCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+XHJcbiAgICAgICAgICAgIHRoaXMuX29mZnNldFRvcCArIENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudC5TQ1JPTExfT0ZGU0VUX1RIUkVTSE9MRFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKz0gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9BTU9VTlRfUEVSX0lURU07XHJcbiAgICAgICAgICAgIHNlbGVjdExpc3Quc2Nyb2xsVG8oMCwgdGhpcy5fb2Zmc2V0VG9wKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXNrKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBtYXNrO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbT8ubWFzaykpIHtcclxuICAgICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJyk7XHJcbiAgICAgICAgICAgIG1hc2sgPSB2YWx1ZS5sZW5ndGggPD0gcmF3TWFzay5sZW5ndGggPyB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdICsgJ1xcMCcgOiB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzFdICsgJ1xcMCc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrICsgJ1xcMCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9rZW5zID0gJyc7XHJcbiAgICAgICAgbGV0IHJlcGxhY2UgPSAnJztcclxuICAgICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XHJcbiAgICAgICAgbGV0IGNvbnRhZG9yID0gMDtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBtYXNrKSB7XHJcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbiwgMTApKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdW11bGFkb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgKz0gYChcXFxcZHske2FjdW11bGFkb3J9fSlgO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb250YWRvcisrO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQke2NvbnRhZG9yfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGFjdW11bGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gJ1xcMCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlICs9IHRva2VuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBob25lLnZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCh0b2tlbnMpLCByZXBsYWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jcmVhdGVEcm9wZG93blBvcnRhbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5kcm9wRWxlbWVudCkpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xyXG4gICAgICAgIGNvbnN0IGRyb3BFbGVtZW50UmVjdCA9IHRoaXMuZHJvcEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kcm9wVG9wID0gZHJvcEVsZW1lbnRSZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgICAgIHRoaXMuZHJvcExlZnQgPSBkcm9wRWxlbWVudFJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChib2R5RWxlbWVudCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWY8YW55PixcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaChwb3J0YWwpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXZcbiAgICBjbGFzcz1cImNvdW50cnktcGhvbmUtcGlja2VyXCJcbiAgICBbY2xhc3MuY291bnRyeS1waG9uZS1waWNrZXItLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICNkcm9wRWxlbWVudFxuICAgICAgICBjbGFzcz1cInBob25lLWlucHV0XCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkICYmIChvcGVuID0gIW9wZW4pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtZmxhZ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZEl0ZW0/LmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1pY29uIGZhcyBmYS1jYXJldC1kb3duXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaG9uZS1kZGlcIj57eyBzZWxlY3RlZEl0ZW0/LmRkaSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGhvbmVJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwaG9uZVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25QaG9uZUlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIodmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgICAgIEBpZiAob3Blbikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogZHJvcFRvcCArICdweCcsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtY2xlYXIgZmEgZmEtdGltZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYW5GaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2VsZWN0LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY291bnRyeSBvZiBmaWx0ZXJlZENvdW50cmllc0xpc3Q7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3Qtb3B0aW9uLS1mb2N1c2VkJzogJGluZGV4ID09PSBjdXJyZW50SXRlbUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0oY291bnRyeSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY291bnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJyArIGNvdW50cnkuaWQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19kZGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5kZGkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|