@churchillliving/se-ui-toolkit 6.54.737 → 6.54.738
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.
|
@@ -456,7 +456,7 @@ export class FormService {
|
|
|
456
456
|
}
|
|
457
457
|
addHeader(fieldInfo) {
|
|
458
458
|
fieldInfo.control = EFormControl.SECTION_HEADER;
|
|
459
|
-
fieldInfo.class = 'form-header';
|
|
459
|
+
fieldInfo.class = fieldInfo.class + '' + 'form-header';
|
|
460
460
|
return this.addFormField(fieldInfo);
|
|
461
461
|
}
|
|
462
462
|
addMultiSelect(fieldInfo, dropDownProp) {
|
|
@@ -637,4 +637,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
637
637
|
providedIn: 'root',
|
|
638
638
|
}]
|
|
639
639
|
}], ctorParameters: () => [{ type: i1.HyperlinkService }, { type: i2.DropdownService }, { type: i3.AlertService }, { type: i4.RequestService }, { type: i5.Router }, { type: i0.NgZone }] });
|
|
640
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQU9aLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBS3JFLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFHakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBS3RDLE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxNQUFjO1FBTGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUmpCLG9CQUFlLEdBQVcsS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQVFyQyxDQUFDO0lBQ0wsVUFBVTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTthQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsOENBQThDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQ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RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBWSxFQUFFLEVBQUU7WUFDMUcsSUFBRyxRQUFRLEVBQUUsTUFBTSxFQUFDLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUM7Z0JBQ3BDLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFBQSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2tJQXZyQlUsV0FBVztzSUFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVWYWxpZGF0b3IsXG4gIElGb3JtRmllbGQsXG4gIEVGb3JtQ29udHJvbCxcbiAgQWRkRm9ybUZpZWxkLFxuICBJU2V0RmlsdGVyLFxuICBJRHJvcERvd25SZXF1ZXN0LFxuICBJTGlzdEZpbHRlcixcbiAgSVJlcG9ydEJ0bixcbiAgSUR5bmFtaWNGb3JtLFxuICBFSHlwZXJsaW5rLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBFR3JpZFNvcnREaXJlY3Rpb24sIElHcmlkU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEh5cGVybGlua1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9oeXBlcmxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4vdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2Uge1xuICBwdWJsaWMgZmllbGRGb2N1c2VkT3V0OmJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzQ29tcG9uZW50RXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBoeXBlcmxpbmtTZXJ2aWNlOiBIeXBlcmxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlcXVlc3RTZXJ2aWNlOiBSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkgeyB9XG4gIHNldFRvb2x0aXAoKSB7XG4gICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAucGlwZSh0YWtlKDEpKSAvLyBFbWl0IG9ubHkgb25jZSB3aGVuIHRoZSB6b25lIGJlY29tZXMgc3RhYmxlXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VG9vbHRpcEV2ZW50TGlzdGVuZXJzKClcbiAgICB9KTtcbn1cblxuICBnZXRNYXRjaGVkUm91dGVCYXNlZE9uQ29tcG9uZW50KGNvbXBvbmVudDogYW55KSB7XG4gICAgbGV0IHJvdXRlOiBhbnkgPSB7fTtcbiAgICB0aGlzLnJvdXRlci5jb25maWcuZm9yRWFjaCgocGFyZW50Um91dGUpID0+IHtcbiAgICAgIGlmIChwYXJlbnRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICByb3V0ZSA9IHBhcmVudFJvdXRlO1xuICAgICAgfSBlbHNlIGlmIChwYXJlbnRSb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICBwYXJlbnRSb3V0ZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdXRlKSA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkUm91dGUuY29tcG9uZW50ID09PSBjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJvdXRlID0gY2hpbGRSb3V0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG5zZXRUb29sdGlwRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3Qgc2hvd1Rvb2x0aXBDb25kaXRpb25hbGx5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50U2VsZWN0b3IgPSB0aGlzLmdldEF0dHJpYnV0ZShcImRhdGEtdGl0bGUtZWxlbWVudFwiKTtcbiAgICAgICAgbGV0IHRvb2x0aXBFbGVtZW50cyA9IFtdXG4gICAgICAgIGlmIChlbGVtZW50U2VsZWN0b3IgPT0gJ3NlbGYnKSB7XG4gICAgICAgICAgICB0b29sdGlwRWxlbWVudHMucHVzaCh0aGlzKVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnRzID0gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGVsZW1lbnRTZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgdG9vbHRpcEVsZW1lbnRzLmZvckVhY2godG9vbHRpcEVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEaXNwbGF5ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodG9vbHRpcEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoXCJkaXNwbGF5XCIpO1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsRGlzcGxheS5pbmNsdWRlcygnaW5saW5lJykpIHtcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5vbm1vdXNlbGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlRWxlbWVudCA9IHRvb2x0aXBFbGVtZW50Lm5vZGVOYW1lID09IFwiSU5QVVRcIiB8fCB0b29sdGlwRWxlbWVudC5ub2RlTmFtZSA9PSBcIlRFWFRBUkVBXCIgPyB0b29sdGlwRWxlbWVudC5wYXJlbnRFbGVtZW50IDogdG9vbHRpcEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAodG9vbHRpcEVsZW1lbnQuc2Nyb2xsV2lkdGggPiB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCAmJiB0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCAhPT0gdG9vbHRpcEVsZW1lbnQuY2xpZW50V2lkdGggKyAxKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gJydcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRvb2x0aXBFbGVtZW50LmlubmVyVGV4dDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSA9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRvb2x0aXBFbGVtZW50LnZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgdGl0bGUpO1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZnVuY3Rpb24oKSB7IHRpdGxlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnKSB9LCB7b25jZSA6IHRydWV9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGl0bGUtZWxlbWVudF06bm90KFtkYXRhLXRpdGxlXSlcIik7XG4gICAgQXJyYXkuZnJvbShlbGVtZW50cykuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBzaG93VG9vbHRpcENvbmRpdGlvbmFsbHkpXG4gICAgfSk7XG59XG5cbiAgY2hlY2tWYWxpZGl0eShmb3JtRmllbGRzOiBJRm9ybUZpZWxkW10pOiBib29sZWFuIHtcbiAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBmb3JtRmllbGRzLm1hcCgoaXRlbTogSUZvcm1GaWVsZCkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvbnMgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgbGV0IGl0ZW1WYWx1ZSA9XG4gICAgICAgICAgaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAmJlxuICAgICAgICAgIHR5cGVvZiBpdGVtLnZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBpdGVtLnZhbHVlLnZhbHVlXG4gICAgICAgICAgICA6IGl0ZW0udmFsdWU7XG4gICAgICAgIC8vIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJiBpdGVtLnZhbHVlICAmJiB0eXBlb2YoaXRlbS52YWx1ZSkgPT09ICdvYmplY3QnKXtcbiAgICAgICAgLy8gICBpdGVtLnZhbHVlID0gaXRlbS52YWx1ZS52YWx1ZTtcbiAgICAgICAgLy8gIH1cbiAgICAgICAgaXRlbS5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgaXRlbS5pc3ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLnZhbGlkYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbWluTWF4VmFsaWREYXRlID0gdXRpbGl0aWVzLmNhbGVuZGFyTWluTWF4VmFsdWUoaXRlbSwgaXRlbVZhbHVlLCBpKTtcbiAgICAgICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zICYmIHR5cGVvZiBpdGVtLmxhYmVsID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICA/IGl0ZW0ubGFiZWwubmFtZVxuICAgICAgICAgICAgICA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUkVRVUlSRUQgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgICFpdGVtLmhpZGRlbiAmJlxuICAgICAgICAgICAgdmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPSBpdGVtVmFsdWVcbiAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYCR7dmFsaWR9IGlzIHJlcXVpcmVkYCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5MRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWExFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnbWluaW11bScgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhJTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdncmVhdGVyJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBBVFRFUk4gJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTlVNRVJJQyAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFsxLTldXFxkKikkLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QSE9ORSAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKD89LipbMC05XSlbLSgpMC05XFxzK3hdKyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkRFQ0lNQUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaCgvXigwfFsxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuRU1BSUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlPT1FVmFsaWRhdG9yLk1BWE9QVElPTlMgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIHZhciBtYXhPcHRpb25zPWl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbjtcbiAgICAgICAgICAgIGlzVmFsaWQ9aXRlbVZhbHVlLmxlbmd0aD5tYXhPcHRpb25zP3RoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtIHZhbHVlcyBmb3IgJHt2YWxpZH0gaXMgJHttYXhPcHRpb25zfWApOnRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIHNldEVycm9yTWVzc2FnZShpdGVtOiBJRm9ybUZpZWxkLCBlcnJvck1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGl0ZW0uZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgIGl0ZW0uaXN2YWxpZCA9IGZhbHNlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFkZEZvcm1GaWVsZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBpZiAoIWZpZWxkSW5mby5sYWJlbCAmJiBmaWVsZEluZm8uY29udHJvbCAhPSBFRm9ybUNvbnRyb2wuRElTUExBWV9URVhUKSB7XG4gICAgICBmaWVsZEluZm8ubGFiZWwgPSBmaWVsZEluZm8uZmllbGQ7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1GaWVsZDogYW55ID0ge1xuICAgICAgbGFiZWw6IGZpZWxkSW5mby5sYWJlbCxcbiAgICAgIGZpZWxkOiBmaWVsZEluZm8uZmllbGQsXG4gICAgICBkaXNwbGF5RmllbGQ6IGZpZWxkSW5mby5kaXNwbGF5RmllbGQsXG4gICAgICBjb250cm9sOiBmaWVsZEluZm8uY29udHJvbCxcbiAgICAgIHNob3dPcHRpb246IGZpZWxkSW5mby5zaG93T3B0aW9uLFxuICAgICAgY29sdW1uOiBmaWVsZEluZm8uY29sdW1uLFxuICAgICAgcm93OiBmaWVsZEluZm8ucm93LFxuICAgICAgbWludXRlc0ludGVydmFsOiBmaWVsZEluZm8ubWludXRlc0ludGVydmFsLFxuICAgICAgdmFsdWU6IGZpZWxkSW5mby52YWx1ZSxcbiAgICAgIGZvcm1hdDogZmllbGRJbmZvLmZvcm1hdCxcbiAgICAgIGhpZGRlbjogZmllbGRJbmZvLmhpZGRlbixcbiAgICAgIHBlcm1pc3Npb25zOiBmaWVsZEluZm8ucGVybWlzc2lvbnMsXG4gICAgICB2YWxpZGF0aW9uczogZmllbGRJbmZvLnZhbGlkYXRpb25zLFxuICAgICAgaWQ6IGZpZWxkSW5mby5pZCxcbiAgICAgIGh5cGVybGluazogZmllbGRJbmZvLmh5cGVybGluayxcbiAgICAgIGRhdGE6IGZpZWxkSW5mby5kYXRhLFxuICAgICAgbG9va3VwQ29udHJvbDogZmllbGRJbmZvLmxvb2t1cENvbnRyb2wsXG4gICAgICBjb21wb25lbnRDb250cm9sOiBmaWVsZEluZm8uY29tcG9uZW50Q29udHJvbCxcbiAgICAgIG9wdGlvbkxhYmVsOiBmaWVsZEluZm8ub3B0aW9uTGFiZWwsXG4gICAgICBvcHRpb25WYWx1ZTogZmllbGRJbmZvLm9wdGlvblZhbHVlLFxuICAgICAgc2F2ZUFzU3RyaW5nOiBmaWVsZEluZm8uc2F2ZUFzU3RyaW5nLFxuICAgICAgc2hvd0FsbFZhbHVlOiBmaWVsZEluZm8uc2hvd0FsbFZhbHVlLFxuICAgICAgb25DbGljazogZmllbGRJbmZvLm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogZmllbGRJbmZvLm9uUmV0dXJuLFxuICAgICAgb25Gb2N1c091dDogZmllbGRJbmZvLm9uRm9jdXNPdXQsXG4gICAgICBvbkNoYW5nZTogZmllbGRJbmZvLm9uQ2hhbmdlLFxuICAgICAgdGFibGVzOiBmaWVsZEluZm8udGFibGVzLFxuICAgICAgZGlzYWJsZWQ6IGZpZWxkSW5mby5kaXNhYmxlZCxcbiAgICAgIGRpc2FibGVkVGV4dDogZmllbGRJbmZvLmRpc2FibGVkVGV4dCxcbiAgICAgIHRpbWVPbmx5OiBmaWVsZEluZm8udGltZU9ubHksXG4gICAgICBpc1Bhc3N3b3JkOiBmaWVsZEluZm8uaXNQYXNzd29yZCxcbiAgICAgIHRleHRUeXBlOiBmaWVsZEluZm8udGV4dFR5cGUsXG4gICAgICBtb250aE9ubHk6IGZpZWxkSW5mby5tb250aE9ubHksXG4gICAgIG1pbkRhdGU6ZmllbGRJbmZvLm1pbkRhdGUsIFxuICAgICBtYXhEYXRlOmZpZWxkSW5mby5tYXhEYXRlLFxuICAgICAgc2hvd1RpbWU6IGZpZWxkSW5mby5zaG93VGltZSwgLy8gdG8gc2hvdyB0aW1lIGFzIHdlbGwgaW4gY2FsZW5kYXIgZm9ybSBmaWVsZFxuICAgICAgaGVpZ2h0OiBmaWVsZEluZm8uaGVpZ2h0LFxuICAgICAgc2hvd0JvdHRvbUJvcmRlcjogZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIsXG4gICAgICBhbGxvd1NlYXJjaDogZmllbGRJbmZvLmFsbG93U2VhcmNoLFxuICAgICAgc2VsZWN0TXVsdGlwbGVGaWxlczogZmllbGRJbmZvLnNlbGVjdE11bHRpcGxlRmlsZXMsXG4gICAgICBTZXRmaWxlVHlwZXM6IGZpZWxkSW5mby5TZXRmaWxlVHlwZXMsXG4gICAgICBpY29uOiBmaWVsZEluZm8uaWNvbixcbiAgICAgIGNvbG9yOiBmaWVsZEluZm8uY29sb3IsXG4gICAgICBjYXJkOiBmaWVsZEluZm8uY2FyZCxcbiAgICAgIHVuaXF1ZUtleTogZmllbGRJbmZvLnVuaXF1ZUtleSxcbiAgICAgIHBhdGhTeXN0ZW1Db25maWc6IGZpZWxkSW5mby5wYXRoU3lzdGVtQ29uZmlnLFxuICAgICAgYXp1cmVDb250YWluZXI6IGZpZWxkSW5mby5henVyZUNvbnRhaW5lcixcbiAgICAgIGNsYXNzOiBmaWVsZEluZm8uY2xhc3MsXG4gICAgICBob3ZlckRhdGE6IGZpZWxkSW5mby5ob3ZlckRhdGEsXG4gICAgICBvcGVuSW5OZXdUYWI6IGZpZWxkSW5mby5vcGVuSW5OZXdUYWIsXG4gICAgICBpc0F6dXJlVXBsb2FkOiBmaWVsZEluZm8uaXNBenVyZVVwbG9hZCxcbiAgICAgIHJlc2l6ZVdpZHRoOiBmaWVsZEluZm8ucmVzaXplV2lkdGgsXG4gICAgICBjb2xvckZvbnQ6IGZpZWxkSW5mby5jb2xvckZvbnQsXG4gICAgICBkaXNwbGF5VGV4dFBhcmFtczogZmllbGRJbmZvLmRpc3BsYXlUZXh0UGFyYW1zLFxuICAgICAgZGlzcGxheVRleHRTdHJpbmc6IGZpZWxkSW5mby5kaXNwbGF5VGV4dFN0cmluZyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZvcm1GaWVsZDtcbiAgfVxuXG4gIGFkZENoZWNrYm94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0hFQ0tCT1g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRUZXh0Ym94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAgIGFkZERpc3BsYXlUZXh0KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRElTUExBWV9URVhUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZFRleHRFZGl0b3IoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5URVhUX0VESVRPUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIGZpZWxkSW5mby5kaXNhYmxlZCA9IHRydWU7XG4gICAgZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTnVtZXJpY1RleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OVU1FUklDO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkU3BhY2VGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1BBQ0VSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTmV3TGluZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQlJFQUtfTElORTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRBcmVhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVEFSRUE7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgXG4gICAvLyBBZGRpbmcgUmVwb3J0IGJ1dHRvbiBmb3IgRHluYW1pY0Zvcm1cbiAgIGFkZFJlcG9ydEJ0bihmaWVsZEluZm86IElSZXBvcnRCdG4pIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5SRVBPUlQ7XG4gICAgcmV0dXJuIGZpZWxkSW5mbztcbiAgfVxuXG4gIGFkZE5vdGVGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5PVEVfRklFTEQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkU2VsZWN0QnV0dG9ucyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFTEVDVEJVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICAvLyByZWNlaXZlIExpbmtJZCBhbmQgUGFyYW1zXG4gIGdldEh5cGVybGlua1VybChcbiAgICBsaW5rSWQ6IHN0cmluZyxcbiAgICBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgZm9ybUZpZWxkOiBJRm9ybUZpZWxkID0ge1xuICAgICAgaHlwZXJsaW5rOiB7IGxpbmtJZDogbGlua0lkLCBwYXJhbXM6IHBhcmFtcyB9LFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYWRkSHlwZXJsaW5rKGZvcm1GaWVsZCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmh5cGVybGluaz8ubGluay5pbmNsdWRlcygne3snICsga2V5ICsgJ319JykgJiYgcGFyYW1zW2tleV0gIT0gbnVsbCAmJiAhcGFyYW1zW2tleV0udG9TdHJpbmcoKT8uaW5jbHVkZXMoJ3snKSkge1xuICAgICAgICAgIHJlc3BvbnNlLmh5cGVybGluay5saW5rID0gcmVzcG9uc2UuaHlwZXJsaW5rPy5saW5rLnJlcGxhY2UoJ3t7JyArIGtleSArICd9fScsIHBhcmFtc1trZXldKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmh5cGVybGluaz8ubGluaztcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEh5cGVybGluayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IGFueSB7XG4gICAgY29uc3QgdXNlclNldHRpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJTZXR0aW5nXCIpO1xuICAgIGlmICh1c2VyU2V0dGluZykge1xuICAgICAgY29uc3QgcGFyc2VTZXR0aW5nID0gSlNPTi5wYXJzZSh1c2VyU2V0dGluZyk7XG5cbiAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy50YXJnZXRVc2VVc2VyUHJlZikge1xuICAgICAgICBmaWVsZEluZm8uaHlwZXJsaW5rLnRhcmdldCA9IHBhcnNlU2V0dGluZz8udmFsdWUgPT09IFwib3BlbkxpbmtJbkN1cnJlbnRUYWJcIiA/IEVIeXBlcmxpbmsuU0VMRiA6IEVIeXBlcmxpbmsuQkxBTks7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbmsgJiYgZmllbGRJbmZvLmh5cGVybGluay5jb21wb25lbnQpIHtcbiAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLmJ1aWxkVXJsKFxuICAgICAgICBmaWVsZEluZm8/Lmh5cGVybGluaz8ubGlua0lkXG4gICAgICApLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGZpZWxkSW5mbz8uaHlwZXJsaW5rPy5wYXJhbXM7XG4gICAgICAgIGxldCBvcmlnaW5hbFVybCA9IHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRVcmwocGFyYW1zLCByZXNbMF0pO1xuICAgICAgICBjb25zdCBsaW5rID0gb3JpZ2luYWxVcmw7XG4gICAgICAgIGlmIChvcmlnaW5hbFVybCAmJiBwYXJhbXMpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsLmluY2x1ZGVzKCd7eycgKyBrZXkgKyAnfX0nKSAmJiBwYXJhbXNba2V5XSAmJiAhcGFyYW1zW2tleV0udG9TdHJpbmcoKT8uaW5jbHVkZXMoJ3snKSkge1xuICAgICAgICAgICAgICBvcmlnaW5hbFVybCA9IG9yaWdpbmFsVXJsLnJlcGxhY2UoJ3t7JyArIGtleSArICd9fScsIHBhcmFtc1trZXldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbms/LmxpbmtJZCAmJiBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmtJZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmllbGRJbmZvLmh5cGVybGluay5saW5rID0gb3JpZ2luYWxVcmw7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSFlQRVJMSU5LO1xuICAgICAgICBsZXQgb2JqOiBhbnkgPSB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgICBvYmpbJ29yaWduYWxMaW5rJ10gPSBsaW5rO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2FsZW5kYXIoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQUxFTkRBUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIGFkZCBBdXRvQ29tcGxldGUgZm9yIEZvcm1cbiAgYWRkQXV0b0NvbXBsZXRlKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQVVUT0NPTVBMRVRFO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gU2VhcmNoIEF1dG9Db21wbGV0ZSBEYXRhIGZvciBmb3JtXG4gIGdldEF1dG9Db21wbGV0ZURhdGEoZm9ybUZpZWxkPzogYW55LCB1bmlxdWVLZXk/OiBzdHJpbmcsIGZpbHRlcnM/OiBhbnlbXSwgc2VhcmNoOiBzdHJpbmcgPSAnJyk6IGFueSB7XG4gICAgdGhpcy5yZXF1ZXN0U2VydmljZS5nZXQ8YW55W10sIGFueT4oJy9EYXRhL0ZldGNoJywgeyB1bmlxdWVLZXk6IHVuaXF1ZUtleSwgZmlsdGVyc30pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PntcbiAgICAgIGlmKHNlYXJjaCl7XG4gICAgICAgbGV0IGV4aXN0SW5SZWNvcmQ6IGJvb2xlYW4gPSByZXNwb25zZS5yZWNvcmRzLnNvbWUoKHJlY29yZDogYW55KT0+IHJlY29yZFtmb3JtRmllbGQuZGlzcGxheUZpZWxkXSAmJiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaD8udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGlmKCFleGlzdEluUmVjb3JkKXtcbiAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLnVuc2hpZnQgKHtbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF06IHNlYXJjaH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihmb3JtRmllbGQub3B0aW9uTGFiZWwgJiYgZm9ybUZpZWxkLm9wdGlvblZhbHVlKSB7XG4gICAgICAgIGZvcm1GaWVsZC5kYXRhID0gcmVzcG9uc2UucmVjb3Jkcz8ubWFwKChyZWNvcmQ6IGFueSkgPT4gKHtcbiAgICAgICAgICBpZDogcmVjb3JkW2Zvcm1GaWVsZD8ub3B0aW9uVmFsdWVdLFxuICAgICAgICAgIGxhYmVsOiByZWNvcmRbZm9ybUZpZWxkPy5vcHRpb25MYWJlbF1cbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGEgPSBbLi4ucmVzcG9uc2UucmVjb3Jkc11cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZERyb3Bkb3duKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5EUk9QRE9XTjtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBsZXQgc29ydHM6SUdyaWRTb3J0W10gPSBkcm9wRG93blByb3Auc29ydHNcbiAgICAgIGlmICh1bmlxdWVLZXkgJiYgdmFsdWVQcm9wICYmIGxhYmVsUHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcm9wZG93bkRhdGEoZmllbGRJbmZvLCB1bmlxdWVLZXksIHZhbHVlUHJvcCwgbGFiZWxQcm9wLCBmaWx0ZXJzLCBzb3J0cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGdldERyb3Bkb3duRGF0YShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgdW5pcXVlS2V5OiBzdHJpbmcsIHZhbHVlUHJvcDogc3RyaW5nLCBsYWJlbFByb3A6IHN0cmluZywgZmlsdGVyczogYW55W10sIHNvcnRzOmFueVtdPVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25TZXJ2aWNlXG4gICAgICAuc2V0RHJvcERvd25MaXN0KFxuICAgICAgICB1bmlxdWVLZXksXG4gICAgICAgIHZhbHVlUHJvcCxcbiAgICAgICAgbGFiZWxQcm9wLFxuICAgICAgICBmaWx0ZXJzLCBcbiAgICAgICAgc29ydHNcbiAgICAgIClcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBmaWVsZEluZm8uZGF0YSA9IHJlcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZExvb2tVcChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGRIb3ZlckRhdGEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxke1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhPVkVSREFUQTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGREaWFsb2coZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRMb29rVXAoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNPTVBPTkVOVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZEhlYWRlcihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUNUSU9OX0hFQURFUjtcbiAgICBmaWVsZEluZm8uY2xhc3MgPSAnZm9ybS1oZWFkZXInO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTXVsdGlTZWxlY3QoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5NVUxUSVNFTEVDVDtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkSW5mby5vcHRpb25MYWJlbCA9IGZpZWxkSW5mby5vcHRpb25MYWJlbCA/IGZpZWxkSW5mby5vcHRpb25MYWJlbCA6ICdsYWJlbCc7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPSBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPyBmaWVsZEluZm8ub3B0aW9uVmFsdWUgOiAndmFsdWUnO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVVwbG9hZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5GSUxFX1VQTE9BRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWxlKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfRklMRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBPbkNsaWNrIEJ1dHRvbiBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkQnV0dG9uKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFERF9CVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgU3dpdGNoIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRTd2l0Y2goZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1dJVENIO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gc3RhcnQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgYWRkQ2FyZChmaWVsZEluZm86IElGb3JtRmllbGQsIGNhcmREYXRhPzogSUxpc3RGaWx0ZXIpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQVJEO1xuICAgIGlmIChjYXJkRGF0YSAmJiBjYXJkRGF0YS51bmlxdWVLZXkpIHtcbiAgICAgIGlmKGNhcmREYXRhLnNvcnRzPy5sZW5ndGggPiAwKXtcbiAgICAgICAgY2FyZERhdGEuc29ydHMuZm9yRWFjaCgocmVzKSA9PntcbiAgICAgICAgcmVzLmRpcmVjdGlvbiA9IHJlcy5kaXJlY3Rpb24gPyByZXMuZGlyZWN0aW9uIDogRUdyaWRTb3J0RGlyZWN0aW9uLkFTQztcbiAgICAgICAgfSk7XG4gICAgICB9ICAgXG4gICAgICByZXR1cm4gdGhpcy5nZXRDYXJkRGF0YShmaWVsZEluZm8sIGNhcmREYXRhLnVuaXF1ZUtleSwgY2FyZERhdGEuZmlsdGVycywgY2FyZERhdGEuc29ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YShmaWVsZEluZm86IGFueSwgdW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYXJkTGlzdCh1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5jYXJkLmRhdGEgPSByZXMucmVjb3JkcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBsb2FkIGNvbXBvbmVudCBvbiBmb3JtXG4gIHNldEFkZENvbXBvbmVudERhdGEoeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLCBpZDogc3RyaW5nLCB2YWx1ZTogYW55LCBsb2FkQ29tcG9uZW50OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNPTVBPTkVOVCAmJiBmaWVsZC5jb21wb25lbnRDb250cm9sICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmlkID09PSBpZCkge1xuICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEgPSB7IC4uLmZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmRhdGEsIFtrZXldOiB2YWx1ZVtrZXldIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdXRpbGl0aWVzLmNoYW5nZUR5bmFtaWNGb3JtU3RhdGUoaWQsIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSwgbG9hZENvbXBvbmVudCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgdmFsdWVcbiAgLy8gc2V0Rm9ybUZpZWxkVmFsdWUoXG4gIC8vICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAvLyAgIGZpZWxkOiBzdHJpbmcsXG4gIC8vICAgdmFsdWU6IGFueSxcbiAgLy8gICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJydcbiAgLy8gKSB7XG4gIC8vICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gIC8vICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcbiAgLy8gICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgLy8gICAgICAgICBpZiAoZGlzcGxheVRleHQgJiYgZGlzcGxheVRleHQubGVuZ3RoID4gMCkge1xuICAvLyAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0geyB0ZXh0OiBkaXNwbGF5VGV4dCwgdmFsdWU6IHZhbHVlIH07XG4gIC8vICAgICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSk7XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICBzZXRGb3JtRmllbGRWYWx1ZShcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZUZpZWxkVmFsdWUgPSAoZm9ybUZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBpZiAoZGlzcGxheVRleHQgJiYgZGlzcGxheVRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0geyB0ZXh0OiBkaXNwbGF5VGV4dCwgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgc2VjdGlvbi5maWVsZHM/LmZvckVhY2godXBkYXRlRmllbGRWYWx1ZSk7XG4gICAgICBzZWN0aW9uLmhlYWRlckZpZWxkcz8uZm9yRWFjaCh1cGRhdGVGaWVsZFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgcHJvcGVydHlcbiAgc2V0Rm9ybUZpZWxkUHJvcChcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBwcm9wczogSURpY3Rpb25hcnlbXVxuICApIHtcbiAgICByZXR1cm4gZm9ybVNlY3Rpb25zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHNlY3Rpb24uZmllbGRzLm1hcCgoZm9ybUZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgKGZvcm1GaWVsZC5sYWJlbCAmJiBmb3JtRmllbGQubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLm1hcCgocHJvcDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZm9ybUZpZWxkLmhhc093blByb3BlcnR5KHByb3AubmFtZSkpIHtcbiAgICAgICAgICAgICAgaWYgKHByb3AubmFtZSA9PT0gJ2xhYmVsJyAmJiB0eXBlb2YgZm9ybUZpZWxkLmxhYmVsID09PSAnb2JqZWN0JyAmJiAhcHJvcC5vdmVycmlkZSkge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wPy52YWx1ZT8ubmFtZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXS5uYW1lID0gcHJvcC52YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXS5uYW1lID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2FyZExpc3QodW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdFNlcnZpY2VcbiAgICAgICAgLmdldDxhbnlbXSwgYW55PignL0RhdGEvRmV0Y2gnLCB7IHVuaXF1ZUtleTogdW5pcXVlS2V5LCBmaWx0ZXJzLCBzb3J0cyB9KVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKHsgZXJyb3IgfTogYW55KSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICBcbiAgLy8gRW5kIGFkZCBuZXcgY2FyZCBmdW5jdGlvbmFsaXR5XG4gIGdldFBhZ2VTZWN0aW9uT3JkZXJzKCl7XG4gICAgY29uc3QgdXNlckluZm86YW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkN1cnJlbnRVc2VySW5mb1wiKSk7XG4gICAgY29uc3Qgcm9sZXMgPSB1c2VySW5mbz8ucm9sZXM/Lm1hcCgocm9sZSk9PiAocm9sZS5uYW1lKSk7XG4gICAgbGV0IHBhZ2VVcmwgPSB0aGlzLnJvdXRlci51cmw/LnN1YnN0cmluZygxKTtcbiAgICBpZiAocGFnZVVybC5pbmNsdWRlcygnPycpKSB7XG4gICAgICBwYWdlVXJsID0gcGFnZVVybC5zcGxpdCgnPycpWzBdO1xuICAgIH1cbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLnBvc3QoXCIvU2VjdGlvbkNvbmZpZy9CeVBhZ2VcIiwge3BhZ2U6IHBhZ2VVcmwsIHJvbGVzOiByb2xlc30pLnN1YnNjcmliZSgocmVzcG9uc2U6YW55KSA9PiB7XG4gICAgICBpZihyZXNwb25zZT8ubGVuZ3RoKXtcbiAgICAgICAgdXNlckluZm9bJ3BhZ2VTZWN0aW9ucyddID0gcmVzcG9uc2U7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiQ3VycmVudFVzZXJJbmZvXCIsIEpTT04uc3RyaW5naWZ5KHVzZXJJbmZvKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
640
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQU9aLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBS3JFLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFHakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBS3RDLE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxNQUFjO1FBTGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUmpCLG9CQUFlLEdBQVcsS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQVFyQyxDQUFDO0lBQ0wsVUFBVTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTthQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsOENBQThDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQ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Q0FBQyx1QkFBdUIsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBWSxFQUFFLEVBQUU7WUFDMUcsSUFBRyxRQUFRLEVBQUUsTUFBTSxFQUFDLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUM7Z0JBQ3BDLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFBQSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2tJQXZyQlUsV0FBVztzSUFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVWYWxpZGF0b3IsXG4gIElGb3JtRmllbGQsXG4gIEVGb3JtQ29udHJvbCxcbiAgQWRkRm9ybUZpZWxkLFxuICBJU2V0RmlsdGVyLFxuICBJRHJvcERvd25SZXF1ZXN0LFxuICBJTGlzdEZpbHRlcixcbiAgSVJlcG9ydEJ0bixcbiAgSUR5bmFtaWNGb3JtLFxuICBFSHlwZXJsaW5rLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBFR3JpZFNvcnREaXJlY3Rpb24sIElHcmlkU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEh5cGVybGlua1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9oeXBlcmxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4vdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2Uge1xuICBwdWJsaWMgZmllbGRGb2N1c2VkT3V0OmJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzQ29tcG9uZW50RXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBoeXBlcmxpbmtTZXJ2aWNlOiBIeXBlcmxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlcXVlc3RTZXJ2aWNlOiBSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkgeyB9XG4gIHNldFRvb2x0aXAoKSB7XG4gICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAucGlwZSh0YWtlKDEpKSAvLyBFbWl0IG9ubHkgb25jZSB3aGVuIHRoZSB6b25lIGJlY29tZXMgc3RhYmxlXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VG9vbHRpcEV2ZW50TGlzdGVuZXJzKClcbiAgICB9KTtcbn1cblxuICBnZXRNYXRjaGVkUm91dGVCYXNlZE9uQ29tcG9uZW50KGNvbXBvbmVudDogYW55KSB7XG4gICAgbGV0IHJvdXRlOiBhbnkgPSB7fTtcbiAgICB0aGlzLnJvdXRlci5jb25maWcuZm9yRWFjaCgocGFyZW50Um91dGUpID0+IHtcbiAgICAgIGlmIChwYXJlbnRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICByb3V0ZSA9IHBhcmVudFJvdXRlO1xuICAgICAgfSBlbHNlIGlmIChwYXJlbnRSb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICBwYXJlbnRSb3V0ZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdXRlKSA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkUm91dGUuY29tcG9uZW50ID09PSBjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJvdXRlID0gY2hpbGRSb3V0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG5zZXRUb29sdGlwRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3Qgc2hvd1Rvb2x0aXBDb25kaXRpb25hbGx5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50U2VsZWN0b3IgPSB0aGlzLmdldEF0dHJpYnV0ZShcImRhdGEtdGl0bGUtZWxlbWVudFwiKTtcbiAgICAgICAgbGV0IHRvb2x0aXBFbGVtZW50cyA9IFtdXG4gICAgICAgIGlmIChlbGVtZW50U2VsZWN0b3IgPT0gJ3NlbGYnKSB7XG4gICAgICAgICAgICB0b29sdGlwRWxlbWVudHMucHVzaCh0aGlzKVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnRzID0gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGVsZW1lbnRTZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgdG9vbHRpcEVsZW1lbnRzLmZvckVhY2godG9vbHRpcEVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEaXNwbGF5ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodG9vbHRpcEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoXCJkaXNwbGF5XCIpO1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsRGlzcGxheS5pbmNsdWRlcygnaW5saW5lJykpIHtcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5vbm1vdXNlbGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlRWxlbWVudCA9IHRvb2x0aXBFbGVtZW50Lm5vZGVOYW1lID09IFwiSU5QVVRcIiB8fCB0b29sdGlwRWxlbWVudC5ub2RlTmFtZSA9PSBcIlRFWFRBUkVBXCIgPyB0b29sdGlwRWxlbWVudC5wYXJlbnRFbGVtZW50IDogdG9vbHRpcEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAodG9vbHRpcEVsZW1lbnQuc2Nyb2xsV2lkdGggPiB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCAmJiB0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCAhPT0gdG9vbHRpcEVsZW1lbnQuY2xpZW50V2lkdGggKyAxKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gJydcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRvb2x0aXBFbGVtZW50LmlubmVyVGV4dDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSA9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRvb2x0aXBFbGVtZW50LnZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgdGl0bGUpO1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZnVuY3Rpb24oKSB7IHRpdGxlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnKSB9LCB7b25jZSA6IHRydWV9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGl0bGUtZWxlbWVudF06bm90KFtkYXRhLXRpdGxlXSlcIik7XG4gICAgQXJyYXkuZnJvbShlbGVtZW50cykuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBzaG93VG9vbHRpcENvbmRpdGlvbmFsbHkpXG4gICAgfSk7XG59XG5cbiAgY2hlY2tWYWxpZGl0eShmb3JtRmllbGRzOiBJRm9ybUZpZWxkW10pOiBib29sZWFuIHtcbiAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBmb3JtRmllbGRzLm1hcCgoaXRlbTogSUZvcm1GaWVsZCkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvbnMgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgbGV0IGl0ZW1WYWx1ZSA9XG4gICAgICAgICAgaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAmJlxuICAgICAgICAgIHR5cGVvZiBpdGVtLnZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBpdGVtLnZhbHVlLnZhbHVlXG4gICAgICAgICAgICA6IGl0ZW0udmFsdWU7XG4gICAgICAgIC8vIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJiBpdGVtLnZhbHVlICAmJiB0eXBlb2YoaXRlbS52YWx1ZSkgPT09ICdvYmplY3QnKXtcbiAgICAgICAgLy8gICBpdGVtLnZhbHVlID0gaXRlbS52YWx1ZS52YWx1ZTtcbiAgICAgICAgLy8gIH1cbiAgICAgICAgaXRlbS5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgaXRlbS5pc3ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLnZhbGlkYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbWluTWF4VmFsaWREYXRlID0gdXRpbGl0aWVzLmNhbGVuZGFyTWluTWF4VmFsdWUoaXRlbSwgaXRlbVZhbHVlLCBpKTtcbiAgICAgICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zICYmIHR5cGVvZiBpdGVtLmxhYmVsID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICA/IGl0ZW0ubGFiZWwubmFtZVxuICAgICAgICAgICAgICA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUkVRVUlSRUQgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgICFpdGVtLmhpZGRlbiAmJlxuICAgICAgICAgICAgdmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPSBpdGVtVmFsdWVcbiAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYCR7dmFsaWR9IGlzIHJlcXVpcmVkYCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5MRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWExFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnbWluaW11bScgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhJTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdncmVhdGVyJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBBVFRFUk4gJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTlVNRVJJQyAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFsxLTldXFxkKikkLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QSE9ORSAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKD89LipbMC05XSlbLSgpMC05XFxzK3hdKyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkRFQ0lNQUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaCgvXigwfFsxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuRU1BSUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlPT1FVmFsaWRhdG9yLk1BWE9QVElPTlMgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIHZhciBtYXhPcHRpb25zPWl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbjtcbiAgICAgICAgICAgIGlzVmFsaWQ9aXRlbVZhbHVlLmxlbmd0aD5tYXhPcHRpb25zP3RoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtIHZhbHVlcyBmb3IgJHt2YWxpZH0gaXMgJHttYXhPcHRpb25zfWApOnRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIHNldEVycm9yTWVzc2FnZShpdGVtOiBJRm9ybUZpZWxkLCBlcnJvck1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGl0ZW0uZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgIGl0ZW0uaXN2YWxpZCA9IGZhbHNlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFkZEZvcm1GaWVsZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBpZiAoIWZpZWxkSW5mby5sYWJlbCAmJiBmaWVsZEluZm8uY29udHJvbCAhPSBFRm9ybUNvbnRyb2wuRElTUExBWV9URVhUKSB7XG4gICAgICBmaWVsZEluZm8ubGFiZWwgPSBmaWVsZEluZm8uZmllbGQ7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1GaWVsZDogYW55ID0ge1xuICAgICAgbGFiZWw6IGZpZWxkSW5mby5sYWJlbCxcbiAgICAgIGZpZWxkOiBmaWVsZEluZm8uZmllbGQsXG4gICAgICBkaXNwbGF5RmllbGQ6IGZpZWxkSW5mby5kaXNwbGF5RmllbGQsXG4gICAgICBjb250cm9sOiBmaWVsZEluZm8uY29udHJvbCxcbiAgICAgIHNob3dPcHRpb246IGZpZWxkSW5mby5zaG93T3B0aW9uLFxuICAgICAgY29sdW1uOiBmaWVsZEluZm8uY29sdW1uLFxuICAgICAgcm93OiBmaWVsZEluZm8ucm93LFxuICAgICAgbWludXRlc0ludGVydmFsOiBmaWVsZEluZm8ubWludXRlc0ludGVydmFsLFxuICAgICAgdmFsdWU6IGZpZWxkSW5mby52YWx1ZSxcbiAgICAgIGZvcm1hdDogZmllbGRJbmZvLmZvcm1hdCxcbiAgICAgIGhpZGRlbjogZmllbGRJbmZvLmhpZGRlbixcbiAgICAgIHBlcm1pc3Npb25zOiBmaWVsZEluZm8ucGVybWlzc2lvbnMsXG4gICAgICB2YWxpZGF0aW9uczogZmllbGRJbmZvLnZhbGlkYXRpb25zLFxuICAgICAgaWQ6IGZpZWxkSW5mby5pZCxcbiAgICAgIGh5cGVybGluazogZmllbGRJbmZvLmh5cGVybGluayxcbiAgICAgIGRhdGE6IGZpZWxkSW5mby5kYXRhLFxuICAgICAgbG9va3VwQ29udHJvbDogZmllbGRJbmZvLmxvb2t1cENvbnRyb2wsXG4gICAgICBjb21wb25lbnRDb250cm9sOiBmaWVsZEluZm8uY29tcG9uZW50Q29udHJvbCxcbiAgICAgIG9wdGlvbkxhYmVsOiBmaWVsZEluZm8ub3B0aW9uTGFiZWwsXG4gICAgICBvcHRpb25WYWx1ZTogZmllbGRJbmZvLm9wdGlvblZhbHVlLFxuICAgICAgc2F2ZUFzU3RyaW5nOiBmaWVsZEluZm8uc2F2ZUFzU3RyaW5nLFxuICAgICAgc2hvd0FsbFZhbHVlOiBmaWVsZEluZm8uc2hvd0FsbFZhbHVlLFxuICAgICAgb25DbGljazogZmllbGRJbmZvLm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogZmllbGRJbmZvLm9uUmV0dXJuLFxuICAgICAgb25Gb2N1c091dDogZmllbGRJbmZvLm9uRm9jdXNPdXQsXG4gICAgICBvbkNoYW5nZTogZmllbGRJbmZvLm9uQ2hhbmdlLFxuICAgICAgdGFibGVzOiBmaWVsZEluZm8udGFibGVzLFxuICAgICAgZGlzYWJsZWQ6IGZpZWxkSW5mby5kaXNhYmxlZCxcbiAgICAgIGRpc2FibGVkVGV4dDogZmllbGRJbmZvLmRpc2FibGVkVGV4dCxcbiAgICAgIHRpbWVPbmx5OiBmaWVsZEluZm8udGltZU9ubHksXG4gICAgICBpc1Bhc3N3b3JkOiBmaWVsZEluZm8uaXNQYXNzd29yZCxcbiAgICAgIHRleHRUeXBlOiBmaWVsZEluZm8udGV4dFR5cGUsXG4gICAgICBtb250aE9ubHk6IGZpZWxkSW5mby5tb250aE9ubHksXG4gICAgIG1pbkRhdGU6ZmllbGRJbmZvLm1pbkRhdGUsIFxuICAgICBtYXhEYXRlOmZpZWxkSW5mby5tYXhEYXRlLFxuICAgICAgc2hvd1RpbWU6IGZpZWxkSW5mby5zaG93VGltZSwgLy8gdG8gc2hvdyB0aW1lIGFzIHdlbGwgaW4gY2FsZW5kYXIgZm9ybSBmaWVsZFxuICAgICAgaGVpZ2h0OiBmaWVsZEluZm8uaGVpZ2h0LFxuICAgICAgc2hvd0JvdHRvbUJvcmRlcjogZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIsXG4gICAgICBhbGxvd1NlYXJjaDogZmllbGRJbmZvLmFsbG93U2VhcmNoLFxuICAgICAgc2VsZWN0TXVsdGlwbGVGaWxlczogZmllbGRJbmZvLnNlbGVjdE11bHRpcGxlRmlsZXMsXG4gICAgICBTZXRmaWxlVHlwZXM6IGZpZWxkSW5mby5TZXRmaWxlVHlwZXMsXG4gICAgICBpY29uOiBmaWVsZEluZm8uaWNvbixcbiAgICAgIGNvbG9yOiBmaWVsZEluZm8uY29sb3IsXG4gICAgICBjYXJkOiBmaWVsZEluZm8uY2FyZCxcbiAgICAgIHVuaXF1ZUtleTogZmllbGRJbmZvLnVuaXF1ZUtleSxcbiAgICAgIHBhdGhTeXN0ZW1Db25maWc6IGZpZWxkSW5mby5wYXRoU3lzdGVtQ29uZmlnLFxuICAgICAgYXp1cmVDb250YWluZXI6IGZpZWxkSW5mby5henVyZUNvbnRhaW5lcixcbiAgICAgIGNsYXNzOiBmaWVsZEluZm8uY2xhc3MsXG4gICAgICBob3ZlckRhdGE6IGZpZWxkSW5mby5ob3ZlckRhdGEsXG4gICAgICBvcGVuSW5OZXdUYWI6IGZpZWxkSW5mby5vcGVuSW5OZXdUYWIsXG4gICAgICBpc0F6dXJlVXBsb2FkOiBmaWVsZEluZm8uaXNBenVyZVVwbG9hZCxcbiAgICAgIHJlc2l6ZVdpZHRoOiBmaWVsZEluZm8ucmVzaXplV2lkdGgsXG4gICAgICBjb2xvckZvbnQ6IGZpZWxkSW5mby5jb2xvckZvbnQsXG4gICAgICBkaXNwbGF5VGV4dFBhcmFtczogZmllbGRJbmZvLmRpc3BsYXlUZXh0UGFyYW1zLFxuICAgICAgZGlzcGxheVRleHRTdHJpbmc6IGZpZWxkSW5mby5kaXNwbGF5VGV4dFN0cmluZyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZvcm1GaWVsZDtcbiAgfVxuXG4gIGFkZENoZWNrYm94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0hFQ0tCT1g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRUZXh0Ym94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAgIGFkZERpc3BsYXlUZXh0KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRElTUExBWV9URVhUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZFRleHRFZGl0b3IoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5URVhUX0VESVRPUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIGZpZWxkSW5mby5kaXNhYmxlZCA9IHRydWU7XG4gICAgZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTnVtZXJpY1RleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OVU1FUklDO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkU3BhY2VGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1BBQ0VSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTmV3TGluZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQlJFQUtfTElORTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRBcmVhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVEFSRUE7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgXG4gICAvLyBBZGRpbmcgUmVwb3J0IGJ1dHRvbiBmb3IgRHluYW1pY0Zvcm1cbiAgIGFkZFJlcG9ydEJ0bihmaWVsZEluZm86IElSZXBvcnRCdG4pIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5SRVBPUlQ7XG4gICAgcmV0dXJuIGZpZWxkSW5mbztcbiAgfVxuXG4gIGFkZE5vdGVGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5PVEVfRklFTEQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkU2VsZWN0QnV0dG9ucyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFTEVDVEJVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICAvLyByZWNlaXZlIExpbmtJZCBhbmQgUGFyYW1zXG4gIGdldEh5cGVybGlua1VybChcbiAgICBsaW5rSWQ6IHN0cmluZyxcbiAgICBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgZm9ybUZpZWxkOiBJRm9ybUZpZWxkID0ge1xuICAgICAgaHlwZXJsaW5rOiB7IGxpbmtJZDogbGlua0lkLCBwYXJhbXM6IHBhcmFtcyB9LFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYWRkSHlwZXJsaW5rKGZvcm1GaWVsZCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmh5cGVybGluaz8ubGluay5pbmNsdWRlcygne3snICsga2V5ICsgJ319JykgJiYgcGFyYW1zW2tleV0gIT0gbnVsbCAmJiAhcGFyYW1zW2tleV0udG9TdHJpbmcoKT8uaW5jbHVkZXMoJ3snKSkge1xuICAgICAgICAgIHJlc3BvbnNlLmh5cGVybGluay5saW5rID0gcmVzcG9uc2UuaHlwZXJsaW5rPy5saW5rLnJlcGxhY2UoJ3t7JyArIGtleSArICd9fScsIHBhcmFtc1trZXldKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmh5cGVybGluaz8ubGluaztcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEh5cGVybGluayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IGFueSB7XG4gICAgY29uc3QgdXNlclNldHRpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJTZXR0aW5nXCIpO1xuICAgIGlmICh1c2VyU2V0dGluZykge1xuICAgICAgY29uc3QgcGFyc2VTZXR0aW5nID0gSlNPTi5wYXJzZSh1c2VyU2V0dGluZyk7XG5cbiAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy50YXJnZXRVc2VVc2VyUHJlZikge1xuICAgICAgICBmaWVsZEluZm8uaHlwZXJsaW5rLnRhcmdldCA9IHBhcnNlU2V0dGluZz8udmFsdWUgPT09IFwib3BlbkxpbmtJbkN1cnJlbnRUYWJcIiA/IEVIeXBlcmxpbmsuU0VMRiA6IEVIeXBlcmxpbmsuQkxBTks7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbmsgJiYgZmllbGRJbmZvLmh5cGVybGluay5jb21wb25lbnQpIHtcbiAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLmJ1aWxkVXJsKFxuICAgICAgICBmaWVsZEluZm8/Lmh5cGVybGluaz8ubGlua0lkXG4gICAgICApLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGZpZWxkSW5mbz8uaHlwZXJsaW5rPy5wYXJhbXM7XG4gICAgICAgIGxldCBvcmlnaW5hbFVybCA9IHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRVcmwocGFyYW1zLCByZXNbMF0pO1xuICAgICAgICBjb25zdCBsaW5rID0gb3JpZ2luYWxVcmw7XG4gICAgICAgIGlmIChvcmlnaW5hbFVybCAmJiBwYXJhbXMpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsLmluY2x1ZGVzKCd7eycgKyBrZXkgKyAnfX0nKSAmJiBwYXJhbXNba2V5XSAmJiAhcGFyYW1zW2tleV0udG9TdHJpbmcoKT8uaW5jbHVkZXMoJ3snKSkge1xuICAgICAgICAgICAgICBvcmlnaW5hbFVybCA9IG9yaWdpbmFsVXJsLnJlcGxhY2UoJ3t7JyArIGtleSArICd9fScsIHBhcmFtc1trZXldKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbms/LmxpbmtJZCAmJiBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmtJZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmllbGRJbmZvLmh5cGVybGluay5saW5rID0gb3JpZ2luYWxVcmw7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSFlQRVJMSU5LO1xuICAgICAgICBsZXQgb2JqOiBhbnkgPSB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgICBvYmpbJ29yaWduYWxMaW5rJ10gPSBsaW5rO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ2FsZW5kYXIoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQUxFTkRBUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIGFkZCBBdXRvQ29tcGxldGUgZm9yIEZvcm1cbiAgYWRkQXV0b0NvbXBsZXRlKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQVVUT0NPTVBMRVRFO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gU2VhcmNoIEF1dG9Db21wbGV0ZSBEYXRhIGZvciBmb3JtXG4gIGdldEF1dG9Db21wbGV0ZURhdGEoZm9ybUZpZWxkPzogYW55LCB1bmlxdWVLZXk/OiBzdHJpbmcsIGZpbHRlcnM/OiBhbnlbXSwgc2VhcmNoOiBzdHJpbmcgPSAnJyk6IGFueSB7XG4gICAgdGhpcy5yZXF1ZXN0U2VydmljZS5nZXQ8YW55W10sIGFueT4oJy9EYXRhL0ZldGNoJywgeyB1bmlxdWVLZXk6IHVuaXF1ZUtleSwgZmlsdGVyc30pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSk9PntcbiAgICAgIGlmKHNlYXJjaCl7XG4gICAgICAgbGV0IGV4aXN0SW5SZWNvcmQ6IGJvb2xlYW4gPSByZXNwb25zZS5yZWNvcmRzLnNvbWUoKHJlY29yZDogYW55KT0+IHJlY29yZFtmb3JtRmllbGQuZGlzcGxheUZpZWxkXSAmJiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaD8udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGlmKCFleGlzdEluUmVjb3JkKXtcbiAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLnVuc2hpZnQgKHtbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF06IHNlYXJjaH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihmb3JtRmllbGQub3B0aW9uTGFiZWwgJiYgZm9ybUZpZWxkLm9wdGlvblZhbHVlKSB7XG4gICAgICAgIGZvcm1GaWVsZC5kYXRhID0gcmVzcG9uc2UucmVjb3Jkcz8ubWFwKChyZWNvcmQ6IGFueSkgPT4gKHtcbiAgICAgICAgICBpZDogcmVjb3JkW2Zvcm1GaWVsZD8ub3B0aW9uVmFsdWVdLFxuICAgICAgICAgIGxhYmVsOiByZWNvcmRbZm9ybUZpZWxkPy5vcHRpb25MYWJlbF1cbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGEgPSBbLi4ucmVzcG9uc2UucmVjb3Jkc11cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZERyb3Bkb3duKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5EUk9QRE9XTjtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBsZXQgc29ydHM6SUdyaWRTb3J0W10gPSBkcm9wRG93blByb3Auc29ydHNcbiAgICAgIGlmICh1bmlxdWVLZXkgJiYgdmFsdWVQcm9wICYmIGxhYmVsUHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcm9wZG93bkRhdGEoZmllbGRJbmZvLCB1bmlxdWVLZXksIHZhbHVlUHJvcCwgbGFiZWxQcm9wLCBmaWx0ZXJzLCBzb3J0cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGdldERyb3Bkb3duRGF0YShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgdW5pcXVlS2V5OiBzdHJpbmcsIHZhbHVlUHJvcDogc3RyaW5nLCBsYWJlbFByb3A6IHN0cmluZywgZmlsdGVyczogYW55W10sIHNvcnRzOmFueVtdPVtdKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJvcGRvd25TZXJ2aWNlXG4gICAgICAuc2V0RHJvcERvd25MaXN0KFxuICAgICAgICB1bmlxdWVLZXksXG4gICAgICAgIHZhbHVlUHJvcCxcbiAgICAgICAgbGFiZWxQcm9wLFxuICAgICAgICBmaWx0ZXJzLCBcbiAgICAgICAgc29ydHNcbiAgICAgIClcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBmaWVsZEluZm8uZGF0YSA9IHJlcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZExvb2tVcChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGRIb3ZlckRhdGEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxke1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhPVkVSREFUQTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGREaWFsb2coZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRMb29rVXAoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNPTVBPTkVOVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZEhlYWRlcihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUNUSU9OX0hFQURFUjtcbiAgICBmaWVsZEluZm8uY2xhc3MgPSBmaWVsZEluZm8uY2xhc3MgKycnKydmb3JtLWhlYWRlcic7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRNdWx0aVNlbGVjdChmaWVsZEluZm86IElGb3JtRmllbGQsIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3QpOiBhbnkge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk1VTFRJU0VMRUNUO1xuICAgIGlmIChkcm9wRG93blByb3ApIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSBkcm9wRG93blByb3AudW5pcXVlS2V5O1xuICAgICAgbGV0IHZhbHVlUHJvcCA9IGRyb3BEb3duUHJvcC52YWx1ZVByb3A7XG4gICAgICBsZXQgbGFiZWxQcm9wID0gZHJvcERvd25Qcm9wLmxhYmVsUHJvcDtcbiAgICAgIGxldCBmaWx0ZXJzOiBJU2V0RmlsdGVyW10gPSBkcm9wRG93blByb3AuZmlsdGVycyAmJiBkcm9wRG93blByb3AuZmlsdGVycy5sZW5ndGggPiAwID8gZHJvcERvd25Qcm9wLmZpbHRlcnMgOiBbXTtcbiAgICAgIGlmICh1bmlxdWVLZXkgJiYgdmFsdWVQcm9wICYmIGxhYmVsUHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcm9wZG93bkRhdGEoZmllbGRJbmZvLCB1bmlxdWVLZXksIHZhbHVlUHJvcCwgbGFiZWxQcm9wLCBmaWx0ZXJzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRJbmZvLm9wdGlvbkxhYmVsID0gZmllbGRJbmZvLm9wdGlvbkxhYmVsID8gZmllbGRJbmZvLm9wdGlvbkxhYmVsIDogJ2xhYmVsJztcbiAgICAgIGZpZWxkSW5mby5vcHRpb25WYWx1ZSA9IGZpZWxkSW5mby5vcHRpb25WYWx1ZSA/IGZpZWxkSW5mby5vcHRpb25WYWx1ZSA6ICd2YWx1ZSc7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBhZGRGaWxlVXBsb2FkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkZJTEVfVVBMT0FEO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlzcGxheUZpbGUoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRElTUExBWV9GSUxFO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gQWRkaW5nIE9uQ2xpY2sgQnV0dG9uIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRCdXR0b24oZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQUREX0JVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBTd2l0Y2ggRnVuY3Rpb24gZm9yIER5bmFtaWNGb3JtXG4gIGFkZFN3aXRjaChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TV0lUQ0g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBzdGFydCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuICBhZGRDYXJkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCwgY2FyZERhdGE/OiBJTGlzdEZpbHRlcik6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBUkQ7XG4gICAgaWYgKGNhcmREYXRhICYmIGNhcmREYXRhLnVuaXF1ZUtleSkge1xuICAgICAgaWYoY2FyZERhdGEuc29ydHM/Lmxlbmd0aCA+IDApe1xuICAgICAgICBjYXJkRGF0YS5zb3J0cy5mb3JFYWNoKChyZXMpID0+e1xuICAgICAgICByZXMuZGlyZWN0aW9uID0gcmVzLmRpcmVjdGlvbiA/IHJlcy5kaXJlY3Rpb24gOiBFR3JpZFNvcnREaXJlY3Rpb24uQVNDO1xuICAgICAgICB9KTtcbiAgICAgIH0gICBcbiAgICAgIHJldHVybiB0aGlzLmdldENhcmREYXRhKGZpZWxkSW5mbywgY2FyZERhdGEudW5pcXVlS2V5LCBjYXJkRGF0YS5maWx0ZXJzLCBjYXJkRGF0YS5zb3J0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGdldENhcmREYXRhKGZpZWxkSW5mbzogYW55LCB1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldENhcmRMaXN0KHVuaXF1ZUtleSwgZmlsdGVycywgc29ydHMpXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmNhcmQuZGF0YSA9IHJlcy5yZWNvcmRzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIGxvYWQgY29tcG9uZW50IG9uIGZvcm1cbiAgc2V0QWRkQ29tcG9uZW50RGF0YSh7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sIGlkOiBzdHJpbmcsIHZhbHVlOiBhbnksIGxvYWRDb21wb25lbnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2wgJiYgZmllbGQuY29tcG9uZW50Q29udHJvbD8uaWQgPT09IGlkKSB7XG4gICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSA9IHsgLi4uZmllbGQuY29tcG9uZW50Q29udHJvbD8uZGF0YSwgW2tleV06IHZhbHVlW2tleV0gfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1dGlsaXRpZXMuY2hhbmdlRHluYW1pY0Zvcm1TdGF0ZShpZCwgZmllbGQuY29tcG9uZW50Q29udHJvbC5kYXRhLCBsb2FkQ29tcG9uZW50KTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCB2YWx1ZVxuICAvLyBzZXRGb3JtRmllbGRWYWx1ZShcbiAgLy8gICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gIC8vICAgZmllbGQ6IHN0cmluZyxcbiAgLy8gICB2YWx1ZTogYW55LFxuICAvLyAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJ1xuICAvLyApIHtcbiAgLy8gICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgLy8gICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xuICAvLyAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAvLyAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gIC8vICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgLy8gICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9KTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHNldEZvcm1GaWVsZFZhbHVlKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnXG4gICkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlRmllbGRWYWx1ZSA9IChmb3JtRmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWN0aW9uLmZpZWxkcz8uZm9yRWFjaCh1cGRhdGVGaWVsZFZhbHVlKTtcbiAgICAgIHNlY3Rpb24uaGVhZGVyRmllbGRzPy5mb3JFYWNoKHVwZGF0ZUZpZWxkVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCBwcm9wZXJ0eVxuICBzZXRGb3JtRmllbGRQcm9wKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHByb3BzOiBJRGljdGlvbmFyeVtdXG4gICkge1xuICAgIHJldHVybiBmb3JtU2VjdGlvbnM/Lm1hcCgoc2VjdGlvbjogYW55KSA9PiB7XG4gICAgICByZXR1cm4gc2VjdGlvbi5maWVsZHMubWFwKChmb3JtRmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAoZm9ybUZpZWxkLmxhYmVsICYmIGZvcm1GaWVsZC5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcHJvcHMubWFwKChwcm9wOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtRmllbGQuaGFzT3duUHJvcGVydHkocHJvcC5uYW1lKSkge1xuICAgICAgICAgICAgICBpZiAocHJvcC5uYW1lID09PSAnbGFiZWwnICYmIHR5cGVvZiBmb3JtRmllbGQubGFiZWwgPT09ICdvYmplY3QnICYmICFwcm9wLm92ZXJyaWRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3A/LnZhbHVlPy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXJkTGlzdCh1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZVxuICAgICAgICAuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoeyBlcnJvciB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG4gIFxuICAvLyBFbmQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgZ2V0UGFnZVNlY3Rpb25PcmRlcnMoKXtcbiAgICBjb25zdCB1c2VySW5mbzphbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiQ3VycmVudFVzZXJJbmZvXCIpKTtcbiAgICBjb25zdCByb2xlcyA9IHVzZXJJbmZvPy5yb2xlcz8ubWFwKChyb2xlKT0+IChyb2xlLm5hbWUpKTtcbiAgICBsZXQgcGFnZVVybCA9IHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpO1xuICAgIGlmIChwYWdlVXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgIHBhZ2VVcmwgPSBwYWdlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgfVxuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UucG9zdChcIi9TZWN0aW9uQ29uZmlnL0J5UGFnZVwiLCB7cGFnZTogcGFnZVVybCwgcm9sZXM6IHJvbGVzfSkuc3Vic2NyaWJlKChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgIGlmKHJlc3BvbnNlPy5sZW5ndGgpe1xuICAgICAgICB1c2VySW5mb1sncGFnZVNlY3Rpb25zJ10gPSByZXNwb25zZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJDdXJyZW50VXNlckluZm9cIiwgSlNPTi5zdHJpbmdpZnkodXNlckluZm8pKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2603,7 +2603,7 @@ class FormService {
|
|
|
2603
2603
|
}
|
|
2604
2604
|
addHeader(fieldInfo) {
|
|
2605
2605
|
fieldInfo.control = EFormControl.SECTION_HEADER;
|
|
2606
|
-
fieldInfo.class = 'form-header';
|
|
2606
|
+
fieldInfo.class = fieldInfo.class + '' + 'form-header';
|
|
2607
2607
|
return this.addFormField(fieldInfo);
|
|
2608
2608
|
}
|
|
2609
2609
|
addMultiSelect(fieldInfo, dropDownProp) {
|