@churchillliving/se-ui-toolkit 6.56.34 → 6.56.35
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.
|
@@ -500,6 +500,9 @@ export class FormService {
|
|
|
500
500
|
// Adding OnClick Button Function for DynamicForm
|
|
501
501
|
addButton(fieldInfo) {
|
|
502
502
|
fieldInfo.control = EFormControl.ADD_BUTTON;
|
|
503
|
+
// Shrinks the button's column to fit its content and collapses the gutter against an
|
|
504
|
+
// adjacent tight button, instead of sitting in a fixed-width column. See form.component.scss.
|
|
505
|
+
fieldInfo.class = fieldInfo.class ? `${fieldInfo.class} se-btn-tight` : 'se-btn-tight';
|
|
503
506
|
return this.addFormField(fieldInfo);
|
|
504
507
|
}
|
|
505
508
|
// Adding Switch Function for DynamicForm
|
|
@@ -650,4 +653,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
650
653
|
providedIn: 'root',
|
|
651
654
|
}]
|
|
652
655
|
}], ctorParameters: () => [{ type: i1.HyperlinkService }, { type: i2.DropdownService }, { type: i3.AlertService }, { type: i4.RequestService }, { type: i5.Router }, { type: i0.NgZone }] });
|
|
653
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQU9aLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsa0JBQWtCLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUtyRSxPQUFPLEtBQUssU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUt0QyxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUNVLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixjQUE4QixFQUM5QixNQUFjLEVBQ2QsTUFBYztRQUxkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVJqQixvQkFBZSxHQUFXLEtBQUssQ0FBQztRQUNoQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFRckMsQ0FBQztJQUNMLFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7YUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhDQUE4QzthQUM1RCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUE7UUFDbkMsQ0FBQyxDQUFD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QUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFVmFsaWRhdG9yLFxuICBJRm9ybUZpZWxkLFxuICBFRm9ybUNvbnRyb2wsXG4gIEFkZEZvcm1GaWVsZCxcbiAgSVNldEZpbHRlcixcbiAgSURyb3BEb3duUmVxdWVzdCxcbiAgSUxpc3RGaWx0ZXIsXG4gIElSZXBvcnRCdG4sXG4gIElEeW5hbWljRm9ybSxcbiAgRUh5cGVybGluayxcbiAgRUZvcm1hdFR5cGUsXG59IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IEVHcmlkU29ydERpcmVjdGlvbiwgSUdyaWRTb3J0IH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQubW9kZWwnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBEcm9wZG93blNlcnZpY2UgfSBmcm9tICcuL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgKiBhcyB1dGlsaXRpZXMgZnJvbSAnLi91dGlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZGVscy9jb21tb24ubW9kZWwnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIHB1YmxpYyBmaWVsZEZvY3VzZWRPdXQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNDb21wb25lbnRFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh5cGVybGlua1NlcnZpY2U6IEh5cGVybGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7IH1cbiAgc2V0VG9vbHRpcCgpIHtcbiAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgIC5waXBlKHRha2UoMSkpIC8vIEVtaXQgb25seSBvbmNlIHdoZW4gdGhlIHpvbmUgYmVjb21lcyBzdGFibGVcbiAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRUb29sdGlwRXZlbnRMaXN0ZW5lcnMoKVxuICAgIH0pO1xufVxuXG4gIGdldE1hdGNoZWRSb3V0ZUJhc2VkT25Db21wb25lbnQoY29tcG9uZW50OiBhbnkpIHtcbiAgICBsZXQgcm91dGU6IGFueSA9IHt9O1xuICAgIHRoaXMucm91dGVyLmNvbmZpZy5mb3JFYWNoKChwYXJlbnRSb3V0ZSkgPT4ge1xuICAgICAgaWYgKHBhcmVudFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgICAgIHJvdXRlID0gcGFyZW50Um91dGU7XG4gICAgICB9IGVsc2UgaWYgKHBhcmVudFJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIHBhcmVudFJvdXRlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkUm91dGUpID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICAgICAgcm91dGUgPSBjaGlsZFJvdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbnNldFRvb2x0aXBFdmVudExpc3RlbmVycygpIHtcbiAgICBjb25zdCBzaG93VG9vbHRpcENvbmRpdGlvbmFsbHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRTZWxlY3RvciA9IHRoaXMuZ2V0QXR0cmlidXRlKFwiZGF0YS10aXRsZS1lbGVtZW50XCIpO1xuICAgICAgICBsZXQgdG9vbHRpcEVsZW1lbnRzID0gW11cbiAgICAgICAgaWYgKGVsZW1lbnRTZWxlY3RvciA9PSAnc2VsZicpIHtcbiAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50cy5wdXNoKHRoaXMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0b29sdGlwRWxlbWVudHMgPSB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoZWxlbWVudFNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICB0b29sdGlwRWxlbWVudHMuZm9yRWFjaCh0b29sdGlwRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERpc3BsYXkgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0b29sdGlwRWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShcImRpc3BsYXlcIik7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxEaXNwbGF5LmluY2x1ZGVzKCdpbmxpbmUnKSkge1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50Lm9ubW91c2VsZWF2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBvcmlnaW5hbERpc3BsYXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGl0bGVFbGVtZW50ID0gdG9vbHRpcEVsZW1lbnQubm9kZU5hbWUgPT0gXCJJTlBVVFwiIHx8IHRvb2x0aXBFbGVtZW50Lm5vZGVOYW1lID09IFwiVEVYVEFSRUFcIiA/IHRvb2x0aXBFbGVtZW50LnBhcmVudEVsZW1lbnQgOiB0b29sdGlwRWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRvb2x0aXBFbGVtZW50LmNsaWVudFdpZHRoICYmIHRvb2x0aXBFbGVtZW50LnNjcm9sbFdpZHRoICE9PSB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCArIDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSAnJ1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQudmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpdGxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnLCB0aXRsZSk7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBmdW5jdGlvbigpIHsgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpIH0sIHtvbmNlIDogdHJ1ZX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpdGxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS10aXRsZS1lbGVtZW50XTpub3QoW2RhdGEtdGl0bGVdKVwiKTtcbiAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSlcbiAgICB9KTtcbn1cblxuICBjaGVja1ZhbGlkaXR5KGZvcm1GaWVsZHM6IElGb3JtRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvcm1GaWVsZHMubWFwKChpdGVtOiBJRm9ybUZpZWxkKSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWxpZGF0aW9ucyAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICBsZXQgaXRlbVZhbHVlID1cbiAgICAgICAgICBpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQgJiZcbiAgICAgICAgICBpdGVtLnZhbHVlICYmXG4gICAgICAgICAgdHlwZW9mIGl0ZW0udmFsdWUgPT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IGl0ZW0udmFsdWUudmFsdWVcbiAgICAgICAgICAgIDogaXRlbS52YWx1ZTtcbiAgICAgICAgLy8gaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmIGl0ZW0udmFsdWUgICYmIHR5cGVvZihpdGVtLnZhbHVlKSA9PT0gJ29iamVjdCcpe1xuICAgICAgICAvLyAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLnZhbHVlO1xuICAgICAgICAvLyAgfVxuICAgICAgICBpdGVtLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBpdGVtLmlzdmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0udmFsaWRhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBtaW5NYXhWYWxpZERhdGUgPSB1dGlsaXRpZXMuY2FsZW5kYXJNaW5NYXhWYWx1ZShpdGVtLCBpdGVtVmFsdWUsIGkpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkID1cbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnMgJiYgdHlwZW9mIGl0ZW0ubGFiZWwgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgID8gaXRlbS5sYWJlbC5uYW1lXG4gICAgICAgICAgICAgIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5SRVFVSVJFRCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgIWl0ZW0uaGlkZGVuICYmXG4gICAgICAgICAgICB2YWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9IGl0ZW1WYWx1ZVxuICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgJHt2YWxpZH0gaXMgcmVxdWlyZWRgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1JTkxFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUFYTEVOR1RIICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn0gY2hhcmFjdGVyc2BcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5JTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdtaW5pbXVtJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNaW5pbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWElNVU0gJiZcbiAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNBTEVOREFSKXtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IG1pbk1heFZhbGlkRGF0ZSA9PT0gJ2dyZWF0ZXInID8gdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1heGltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YCkgOiB0cnVlO1xuICAgICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUEFUVEVSTiAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS5tYXRjaChpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5OVU1FUklDICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oMHxbLSgpMS05XVxcZCopJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8WzEtOV1cXGQqKSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyICR7aXRlbS52YWxpZGF0aW9uc1tpXS50eXBlfSBmb3IgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBIT05FICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXig/PS4qWzAtOV0pWy0oKTAtOVxccyt4XSskLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuREVDSU1BTCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZT8udG9TdHJpbmcoKT8ubWF0Y2goL14oMHxbLSgpMS05XVxcZCopKFxcLlxcZCspPyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKC9eKDB8WzEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5FTUFJTCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSAmJiBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGU9PUVWYWxpZGF0b3IuTUFYT1BUSU9OUyAmJiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgdmFyIG1heE9wdGlvbnM9aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uO1xuICAgICAgICAgICAgaXNWYWxpZD1pdGVtVmFsdWUubGVuZ3RoPm1heE9wdGlvbnM/dGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1heGltdW0gdmFsdWVzIGZvciAke3ZhbGlkfSBpcyAke21heE9wdGlvbnN9YCk6dHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgc2V0RXJyb3JNZXNzYWdlKGl0ZW06IElGb3JtRmllbGQsIGVycm9yTWVzc2FnZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaXRlbS5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgaXRlbS5pc3ZhbGlkID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYWRkRm9ybUZpZWxkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGlmICghZmllbGRJbmZvLmxhYmVsICYmIGZpZWxkSW5mby5jb250cm9sICE9IEVGb3JtQ29udHJvbC5ESVNQTEFZX1RFWFQpIHtcbiAgICAgIGZpZWxkSW5mby5sYWJlbCA9IGZpZWxkSW5mby5maWVsZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybUZpZWxkOiBhbnkgPSB7XG4gICAgICBsYWJlbDogZmllbGRJbmZvLmxhYmVsLFxuICAgICAgZmllbGQ6IGZpZWxkSW5mby5maWVsZCxcbiAgICAgIGRpc3BsYXlGaWVsZDogZmllbGRJbmZvLmRpc3BsYXlGaWVsZCxcbiAgICAgIGNvbnRyb2w6IGZpZWxkSW5mby5jb250cm9sLFxuICAgICAgc2hvd09wdGlvbjogZmllbGRJbmZvLnNob3dPcHRpb24sXG4gICAgICBjb2x1bW46IGZpZWxkSW5mby5jb2x1bW4sXG4gICAgICByb3c6IGZpZWxkSW5mby5yb3csXG4gICAgICBtaW51dGVzSW50ZXJ2YWw6IGZpZWxkSW5mby5taW51dGVzSW50ZXJ2YWwsXG4gICAgICB2YWx1ZTogZmllbGRJbmZvLnZhbHVlLFxuICAgICAgZm9ybWF0OiBmaWVsZEluZm8uZm9ybWF0LFxuICAgICAgaGlkZGVuOiBmaWVsZEluZm8uaGlkZGVuLFxuICAgICAgcGVybWlzc2lvbnM6IGZpZWxkSW5mby5wZXJtaXNzaW9ucyxcbiAgICAgIHZhbGlkYXRpb25zOiBmaWVsZEluZm8udmFsaWRhdGlvbnMsXG4gICAgICBpZDogZmllbGRJbmZvLmlkLFxuICAgICAgaHlwZXJsaW5rOiBmaWVsZEluZm8uaHlwZXJsaW5rLFxuICAgICAgZGF0YTogZmllbGRJbmZvLmRhdGEsXG4gICAgICBsb29rdXBDb250cm9sOiBmaWVsZEluZm8ubG9va3VwQ29udHJvbCxcbiAgICAgIGNvbXBvbmVudENvbnRyb2w6IGZpZWxkSW5mby5jb21wb25lbnRDb250cm9sLFxuICAgICAgb3B0aW9uTGFiZWw6IGZpZWxkSW5mby5vcHRpb25MYWJlbCxcbiAgICAgIG9wdGlvblZhbHVlOiBmaWVsZEluZm8ub3B0aW9uVmFsdWUsXG4gICAgICBzYXZlQXNTdHJpbmc6IGZpZWxkSW5mby5zYXZlQXNTdHJpbmcsXG4gICAgICBzaG93QWxsVmFsdWU6IGZpZWxkSW5mby5zaG93QWxsVmFsdWUsXG4gICAgICBvbkNsaWNrOiBmaWVsZEluZm8ub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiBmaWVsZEluZm8ub25SZXR1cm4sXG4gICAgICBvbkZvY3VzT3V0OiBmaWVsZEluZm8ub25Gb2N1c091dCxcbiAgICAgIG9uQ2hhbmdlOiBmaWVsZEluZm8ub25DaGFuZ2UsXG4gICAgICB0YWJsZXM6IGZpZWxkSW5mby50YWJsZXMsXG4gICAgICBkaXNhYmxlZDogZmllbGRJbmZvLmRpc2FibGVkLFxuICAgICAgZGlzYWJsZWRUZXh0OiBmaWVsZEluZm8uZGlzYWJsZWRUZXh0LFxuICAgICAgdGltZU9ubHk6IGZpZWxkSW5mby50aW1lT25seSxcbiAgICAgIGlzUGFzc3dvcmQ6IGZpZWxkSW5mby5pc1Bhc3N3b3JkLFxuICAgICAgdGV4dFR5cGU6IGZpZWxkSW5mby50ZXh0VHlwZSxcbiAgICAgIG1vbnRoT25seTogZmllbGRJbmZvLm1vbnRoT25seSxcbiAgICAgbWluRGF0ZTpmaWVsZEluZm8ubWluRGF0ZSwgXG4gICAgIG1heERhdGU6ZmllbGRJbmZvLm1heERhdGUsXG4gICAgICBzaG93VGltZTogZmllbGRJbmZvLnNob3dUaW1lLCAvLyB0byBzaG93IHRpbWUgYXMgd2VsbCBpbiBjYWxlbmRhciBmb3JtIGZpZWxkXG4gICAgICBoZWlnaHQ6IGZpZWxkSW5mby5oZWlnaHQsXG4gICAgICBzaG93Qm90dG9tQm9yZGVyOiBmaWVsZEluZm8uc2hvd0JvdHRvbUJvcmRlcixcbiAgICAgIGFsbG93U2VhcmNoOiBmaWVsZEluZm8uYWxsb3dTZWFyY2gsXG4gICAgICBzZWxlY3RNdWx0aXBsZUZpbGVzOiBmaWVsZEluZm8uc2VsZWN0TXVsdGlwbGVGaWxlcyxcbiAgICAgIFNldGZpbGVUeXBlczogZmllbGRJbmZvLlNldGZpbGVUeXBlcyxcbiAgICAgIGZvcm1JZDogZmllbGRJbmZvLmZvcm1JZCxcbiAgICAgIGljb246IGZpZWxkSW5mby5pY29uLFxuICAgICAgY29sb3I6IGZpZWxkSW5mby5jb2xvcixcbiAgICAgIGNhcmQ6IGZpZWxkSW5mby5jYXJkLFxuICAgICAgdW5pcXVlS2V5OiBmaWVsZEluZm8udW5pcXVlS2V5LFxuICAgICAgcGF0aFN5c3RlbUNvbmZpZzogZmllbGRJbmZvLnBhdGhTeXN0ZW1Db25maWcsXG4gICAgICBhenVyZUNvbnRhaW5lcjogZmllbGRJbmZvLmF6dXJlQ29udGFpbmVyLFxuICAgICAgY2xhc3M6IGZpZWxkSW5mby5jbGFzcyxcbiAgICAgIGhvdmVyRGF0YTogZmllbGRJbmZvLmhvdmVyRGF0YSxcbiAgICAgIG9wZW5Jbk5ld1RhYjogZmllbGRJbmZvLm9wZW5Jbk5ld1RhYixcbiAgICAgIGlzQXp1cmVVcGxvYWQ6IGZpZWxkSW5mby5pc0F6dXJlVXBsb2FkLFxuICAgICAgcmVzaXplV2lkdGg6IGZpZWxkSW5mby5yZXNpemVXaWR0aCxcbiAgICAgIGNvbG9yRm9udDogZmllbGRJbmZvLmNvbG9yRm9udCxcbiAgICAgIGRpc3BsYXlUZXh0UGFyYW1zOiBmaWVsZEluZm8uZGlzcGxheVRleHRQYXJhbXMsXG4gICAgICBkaXNwbGF5VGV4dFN0cmluZzogZmllbGRJbmZvLmRpc3BsYXlUZXh0U3RyaW5nLFxuICAgICAgaGlkZGVuT25QcmludDogZmllbGRJbmZvLmhpZGRlbk9uUHJpbnQsXG4gICAgICBhbGxvd1RvQ2FwdHVyZTogZmllbGRJbmZvLmFsbG93VG9DYXB0dXJlLFxuICAgICAgYWxsb3dGaWxlVXBsb2FkOiBmaWVsZEluZm8uYWxsb3dGaWxlVXBsb2FkLFxuICAgICAgYXV0b0NvbXBsZXRlOiBmaWVsZEluZm8uYXV0b0NvbXBsZXRlXG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtRmllbGQ7XG4gIH1cblxuICBhZGRDaGVja2JveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNIRUNLQk9YO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgICBhZGREaXNwbGF5VGV4dChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfVEVYVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICAgIGFkZFNpZ25hdHVyZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNJR05BVFVSRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGRUZXh0RWRpdG9yKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVF9FRElUT1I7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaXNwbGF5RmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IGZpZWxkSW5mby5mb3JtYXQ/LnR5cGUgPT09IEVGb3JtYXRUeXBlLkNVUlJFTkNZID8gIEVGb3JtQ29udHJvbC5OVU1FUklDIDogRUZvcm1Db250cm9sLklOUFVUO1xuICAgIGZpZWxkSW5mby5kaXNhYmxlZCA9IHRydWU7XG4gICAgZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTnVtZXJpY1RleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OVU1FUklDO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkU3BhY2VGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1BBQ0VSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTmV3TGluZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQlJFQUtfTElORTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRBcmVhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVEFSRUE7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgXG4gICAvLyBBZGRpbmcgUmVwb3J0IGJ1dHRvbiBmb3IgRHluYW1pY0Zvcm1cbiAgIGFkZFJlcG9ydEJ0bihmaWVsZEluZm86IElSZXBvcnRCdG4pIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5SRVBPUlQ7XG4gICAgcmV0dXJuIGZpZWxkSW5mbztcbiAgfVxuXG4gIGFkZE5vdGVGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5PVEVfRklFTEQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkU2VsZWN0QnV0dG9ucyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFTEVDVEJVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFBkZlBhZ2VCcmVhayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlBERl9QQUdFX0JSRUFLO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIC8vIHJlY2VpdmUgTGlua0lkIGFuZCBQYXJhbXNcbiAgZ2V0SHlwZXJsaW5rVXJsKFxuICAgIGxpbmtJZDogc3RyaW5nLFxuICAgIHBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBmb3JtRmllbGQ6IElGb3JtRmllbGQgPSB7XG4gICAgICBoeXBlcmxpbms6IHsgbGlua0lkOiBsaW5rSWQsIHBhcmFtczogcGFyYW1zIH0sXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5hZGRIeXBlcmxpbmsoZm9ybUZpZWxkKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UuaHlwZXJsaW5rPy5saW5rLmluY2x1ZGVzKCd7eycgKyBrZXkgKyAnfX0nKSAmJiBwYXJhbXNba2V5XSAhPSBudWxsICYmICFwYXJhbXNba2V5XS50b1N0cmluZygpPy5pbmNsdWRlcygneycpKSB7XG4gICAgICAgICAgcmVzcG9uc2UuaHlwZXJsaW5rLmxpbmsgPSByZXNwb25zZS5oeXBlcmxpbms/LmxpbmsucmVwbGFjZSgne3snICsga2V5ICsgJ319JywgcGFyYW1zW2tleV0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gcmVzcG9uc2UuaHlwZXJsaW5rPy5saW5rO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkSHlwZXJsaW5rKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogYW55IHtcbiAgICBjb25zdCB1c2VyU2V0dGluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlclNldHRpbmdcIik7XG4gICAgaWYgKHVzZXJTZXR0aW5nKSB7XG4gICAgICBjb25zdCBwYXJzZVNldHRpbmcgPSBKU09OLnBhcnNlKHVzZXJTZXR0aW5nKTtcblxuICAgICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbms/LnRhcmdldFVzZVVzZXJQcmVmKSB7XG4gICAgICAgIGZpZWxkSW5mby5oeXBlcmxpbmsudGFyZ2V0ID0gcGFyc2VTZXR0aW5nPy52YWx1ZSA9PT0gXCJvcGVuTGlua0luQ3VycmVudFRhYlwiID8gRUh5cGVybGluay5TRUxGIDogRUh5cGVybGluay5CTEFOSztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmllbGRJbmZvLmh5cGVybGluayAmJiBmaWVsZEluZm8uaHlwZXJsaW5rLmNvbXBvbmVudCkge1xuICAgICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSFlQRVJMSU5LO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmh5cGVybGlua1NlcnZpY2UuYnVpbGRVcmwoXG4gICAgICAgIGZpZWxkSW5mbz8uaHlwZXJsaW5rPy5saW5rSWRcbiAgICAgICkudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gZmllbGRJbmZvPy5oeXBlcmxpbms/LnBhcmFtcztcbiAgICAgICAgbGV0IG9yaWdpbmFsVXJsID0gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFVybChwYXJhbXMsIHJlc1swXSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBvcmlnaW5hbFVybDtcbiAgICAgICAgaWYgKG9yaWdpbmFsVXJsICYmIHBhcmFtcykge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxVcmwuaW5jbHVkZXMoJ3t7JyArIGtleSArICd9fScpICYmIHBhcmFtc1trZXldICYmICFwYXJhbXNba2V5XS50b1N0cmluZygpPy5pbmNsdWRlcygneycpKSB7XG4gICAgICAgICAgICAgIG9yaWdpbmFsVXJsID0gb3JpZ2luYWxVcmwucmVwbGFjZSgne3snICsga2V5ICsgJ319JywgcGFyYW1zW2tleV0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRJbmZvLmh5cGVybGluaz8ubGlua0lkICYmIGZpZWxkSW5mby5oeXBlcmxpbmsubGlua0lkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmsgPSBvcmlnaW5hbFVybDtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICAgIGxldCBvYmo6IGFueSA9IHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICAgIG9ialsnb3JpZ25hbExpbmsnXSA9IGxpbms7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRDYWxlbmRhcihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBTEVOREFSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gYWRkIEF1dG9Db21wbGV0ZSBmb3IgRm9ybVxuICBhZGRBdXRvQ29tcGxldGUoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5BVVRPQ09NUExFVEU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBTZWFyY2ggQXV0b0NvbXBsZXRlIERhdGEgZm9yIGZvcm1cbiAgZ2V0QXV0b0NvbXBsZXRlRGF0YShmb3JtRmllbGQ/OiBhbnksIHVuaXF1ZUtleT86IHN0cmluZywgZmlsdGVycz86IGFueVtdLCBzZWFyY2g6IHN0cmluZyA9ICcnKTogYW55IHtcbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLmdldDxhbnlbXSwgYW55PignL0RhdGEvRmV0Y2gnLCB7IHVuaXF1ZUtleTogdW5pcXVlS2V5LCBmaWx0ZXJzfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+e1xuICAgICAgaWYoc2VhcmNoKXtcbiAgICAgICBsZXQgZXhpc3RJblJlY29yZDogYm9vbGVhbiA9IHJlc3BvbnNlLnJlY29yZHMuc29tZSgocmVjb3JkOiBhbnkpPT4gcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdICYmIHJlY29yZFtmb3JtRmllbGQuZGlzcGxheUZpZWxkXT8udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoPy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgaWYoIWV4aXN0SW5SZWNvcmQpe1xuICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMudW5zaGlmdCAoe1tmb3JtRmllbGQuZGlzcGxheUZpZWxkXTogc2VhcmNofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGZvcm1GaWVsZC5vcHRpb25MYWJlbCAmJiBmb3JtRmllbGQub3B0aW9uVmFsdWUpIHtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGEgPSByZXNwb25zZS5yZWNvcmRzPy5tYXAoKHJlY29yZDogYW55KSA9PiAoe1xuICAgICAgICAgIGlkOiByZWNvcmRbZm9ybUZpZWxkPy5vcHRpb25WYWx1ZV0sXG4gICAgICAgICAgbGFiZWw6IHJlY29yZFtmb3JtRmllbGQ/Lm9wdGlvbkxhYmVsXVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtRmllbGQuZGF0YSA9IFsuLi5yZXNwb25zZS5yZWNvcmRzXVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkRHJvcGRvd24oZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3QpOiBhbnkge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRST1BET1dOO1xuICAgIGlmIChkcm9wRG93blByb3ApIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSBkcm9wRG93blByb3AudW5pcXVlS2V5O1xuICAgICAgbGV0IHZhbHVlUHJvcCA9IGRyb3BEb3duUHJvcC52YWx1ZVByb3A7XG4gICAgICBsZXQgbGFiZWxQcm9wID0gZHJvcERvd25Qcm9wLmxhYmVsUHJvcDtcbiAgICAgIGxldCBmaWx0ZXJzOiBJU2V0RmlsdGVyW10gPSBkcm9wRG93blByb3AuZmlsdGVycyAmJiBkcm9wRG93blByb3AuZmlsdGVycy5sZW5ndGggPiAwID8gZHJvcERvd25Qcm9wLmZpbHRlcnMgOiBbXTtcbiAgICAgIGxldCBzb3J0czpJR3JpZFNvcnRbXSA9IGRyb3BEb3duUHJvcC5zb3J0c1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMsIHNvcnRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkLCB1bmlxdWVLZXk6IHN0cmluZywgdmFsdWVQcm9wOiBzdHJpbmcsIGxhYmVsUHJvcDogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSwgc29ydHM6YW55W109W10pIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93blNlcnZpY2VcbiAgICAgIC5zZXREcm9wRG93bkxpc3QoXG4gICAgICAgIHVuaXF1ZUtleSxcbiAgICAgICAgdmFsdWVQcm9wLFxuICAgICAgICBsYWJlbFByb3AsXG4gICAgICAgIGZpbHRlcnMsIFxuICAgICAgICBzb3J0c1xuICAgICAgKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5kYXRhID0gcmVzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkTG9va1VwKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZEhvdmVyRGF0YShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSE9WRVJEQVRBO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZERpYWxvZyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIHJldHVybiB0aGlzLmFkZExvb2tVcChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkQ29tcG9uZW50KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkSGVhZGVyKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFQ1RJT05fSEVBREVSO1xuICAgIGZpZWxkSW5mby5jbGFzcyA9IGZpZWxkSW5mby5jbGFzcyA/IGZpZWxkSW5mby5jbGFzcyArJyAnKydmb3JtLWhlYWRlcicgOiAnZm9ybS1oZWFkZXInO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTXVsdGlTZWxlY3QoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5NVUxUSVNFTEVDVDtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkSW5mby5vcHRpb25MYWJlbCA9IGZpZWxkSW5mby5vcHRpb25MYWJlbCA/IGZpZWxkSW5mby5vcHRpb25MYWJlbCA6ICdsYWJlbCc7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPSBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPyBmaWVsZEluZm8ub3B0aW9uVmFsdWUgOiAndmFsdWUnO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVVwbG9hZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5GSUxFX1VQTE9BRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWxlKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfRklMRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBPbkNsaWNrIEJ1dHRvbiBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkQnV0dG9uKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFERF9CVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgU3dpdGNoIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRTd2l0Y2goZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1dJVENIO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gc3RhcnQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgYWRkQ2FyZChmaWVsZEluZm86IElGb3JtRmllbGQsIGNhcmREYXRhPzogSUxpc3RGaWx0ZXIpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DQVJEO1xuICAgIGlmIChjYXJkRGF0YSAmJiBjYXJkRGF0YS51bmlxdWVLZXkpIHtcbiAgICAgIGlmKGNhcmREYXRhLnNvcnRzPy5sZW5ndGggPiAwKXtcbiAgICAgICAgY2FyZERhdGEuc29ydHMuZm9yRWFjaCgocmVzKSA9PntcbiAgICAgICAgcmVzLmRpcmVjdGlvbiA9IHJlcy5kaXJlY3Rpb24gPyByZXMuZGlyZWN0aW9uIDogRUdyaWRTb3J0RGlyZWN0aW9uLkFTQztcbiAgICAgICAgfSk7XG4gICAgICB9ICAgXG4gICAgICByZXR1cm4gdGhpcy5nZXRDYXJkRGF0YShmaWVsZEluZm8sIGNhcmREYXRhLnVuaXF1ZUtleSwgY2FyZERhdGEuZmlsdGVycywgY2FyZERhdGEuc29ydHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXRDYXJkRGF0YShmaWVsZEluZm86IGFueSwgdW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYXJkTGlzdCh1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5jYXJkLmRhdGEgPSByZXMucmVjb3JkcztcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBsb2FkIGNvbXBvbmVudCBvbiBmb3JtXG4gIHNldEFkZENvbXBvbmVudERhdGEoeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLCBpZDogc3RyaW5nLCB2YWx1ZTogYW55LCBsb2FkQ29tcG9uZW50OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNPTVBPTkVOVCAmJiBmaWVsZC5jb21wb25lbnRDb250cm9sICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmlkID09PSBpZCkge1xuICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEgPSB7IC4uLmZpZWxkLmNvbXBvbmVudENvbnRyb2w/LmRhdGEsIFtrZXldOiB2YWx1ZVtrZXldIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdXRpbGl0aWVzLmNoYW5nZUR5bmFtaWNGb3JtU3RhdGUoaWQsIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSwgbG9hZENvbXBvbmVudCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgdmFsdWVcbiAgLy8gc2V0Rm9ybUZpZWxkVmFsdWUoXG4gIC8vICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAvLyAgIGZpZWxkOiBzdHJpbmcsXG4gIC8vICAgdmFsdWU6IGFueSxcbiAgLy8gICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJydcbiAgLy8gKSB7XG4gIC8vICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gIC8vICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcbiAgLy8gICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgLy8gICAgICAgICBpZiAoZGlzcGxheVRleHQgJiYgZGlzcGxheVRleHQubGVuZ3RoID4gMCkge1xuICAvLyAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0geyB0ZXh0OiBkaXNwbGF5VGV4dCwgdmFsdWU6IHZhbHVlIH07XG4gIC8vICAgICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSk7XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICBzZXRGb3JtRmllbGRWYWx1ZShcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJ1xuICApIHtcbiAgICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZUZpZWxkVmFsdWUgPSAoZm9ybUZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBpZiAoZGlzcGxheVRleHQgJiYgZGlzcGxheVRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0geyB0ZXh0OiBkaXNwbGF5VGV4dCwgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgc2VjdGlvbi5maWVsZHM/LmZvckVhY2godXBkYXRlRmllbGRWYWx1ZSk7XG4gICAgICBzZWN0aW9uLmhlYWRlckZpZWxkcz8uZm9yRWFjaCh1cGRhdGVGaWVsZFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBmb3JtZmllbGQgcHJvcGVydHlcbiAgc2V0Rm9ybUZpZWxkUHJvcChcbiAgICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gICAgZmllbGQ6IHN0cmluZyxcbiAgICBwcm9wczogSURpY3Rpb25hcnlbXVxuICApIHtcbiAgICByZXR1cm4gZm9ybVNlY3Rpb25zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHNlY3Rpb24uZmllbGRzLm1hcCgoZm9ybUZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgKGZvcm1GaWVsZC5sYWJlbCAmJiBmb3JtRmllbGQubGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3BzLm1hcCgocHJvcDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZm9ybUZpZWxkLmhhc093blByb3BlcnR5KHByb3AubmFtZSkpIHtcbiAgICAgICAgICAgICAgaWYgKHByb3AubmFtZSA9PT0gJ2xhYmVsJyAmJiB0eXBlb2YgZm9ybUZpZWxkLmxhYmVsID09PSAnb2JqZWN0JyAmJiAhcHJvcC5vdmVycmlkZSkge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wPy52YWx1ZT8ubmFtZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXS5uYW1lID0gcHJvcC52YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXS5uYW1lID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChmb3JtRmllbGRbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2FyZExpc3QodW5pcXVlS2V5OiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdFNlcnZpY2VcbiAgICAgICAgLmdldDxhbnlbXSwgYW55PignL0RhdGEvRmV0Y2gnLCB7IHVuaXF1ZUtleTogdW5pcXVlS2V5LCBmaWx0ZXJzLCBzb3J0cyB9KVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKHsgZXJyb3IgfTogYW55KSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICBcbiAgLy8gRW5kIGFkZCBuZXcgY2FyZCBmdW5jdGlvbmFsaXR5XG4gIGdldFBhZ2VTZWN0aW9uT3JkZXJzKCl7XG4gICAgY29uc3QgdXNlckluZm86YW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIkN1cnJlbnRVc2VySW5mb1wiKSk7XG4gICAgY29uc3Qgcm9sZXMgPSB1c2VySW5mbz8ucm9sZXM/Lm1hcCgocm9sZSk9PiAocm9sZS5uYW1lKSk7XG4gICAgbGV0IHBhZ2VVcmwgPSB0aGlzLnJvdXRlci51cmw/LnN1YnN0cmluZygxKTtcbiAgICBpZiAocGFnZVVybC5pbmNsdWRlcygnPycpKSB7XG4gICAgICBwYWdlVXJsID0gcGFnZVVybC5zcGxpdCgnPycpWzBdO1xuICAgIH1cbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLnBvc3QoXCIvU2VjdGlvbkNvbmZpZy9CeVBhZ2VcIiwge3BhZ2U6IHBhZ2VVcmwsIHJvbGVzOiByb2xlc30pLnN1YnNjcmliZSgocmVzcG9uc2U6YW55KSA9PiB7XG4gICAgICBpZihyZXNwb25zZT8ubGVuZ3RoKXtcbiAgICAgICAgdXNlckluZm9bJ3BhZ2VTZWN0aW9ucyddID0gcmVzcG9uc2U7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiQ3VycmVudFVzZXJJbmZvXCIsIEpTT04uc3RyaW5naWZ5KHVzZXJJbmZvKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
656
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQU9aLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsa0JBQWtCLEVBQWEsTUFBTSxzQkFBc0IsQ0FBQztBQUtyRSxPQUFPLEtBQUssU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUt0QyxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUNVLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixjQUE4QixFQUM5QixNQUFjLEVBQ2QsTUFBYztRQUxkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVJqQixvQkFBZSxHQUFXLEtBQUssQ0FBQztRQUNoQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFRckMsQ0FBQztJQUNMLFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7YUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhDQUE4QzthQUM1RCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUE7UUFDbkMsQ0FBQyxDQUFD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QUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBQUEsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztrSUF4c0JVLFdBQVc7c0lBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFVmFsaWRhdG9yLFxuICBJRm9ybUZpZWxkLFxuICBFRm9ybUNvbnRyb2wsXG4gIEFkZEZvcm1GaWVsZCxcbiAgSVNldEZpbHRlcixcbiAgSURyb3BEb3duUmVxdWVzdCxcbiAgSUxpc3RGaWx0ZXIsXG4gIElSZXBvcnRCdG4sXG4gIElEeW5hbWljRm9ybSxcbiAgRUh5cGVybGluayxcbiAgRUZvcm1hdFR5cGUsXG59IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IEVHcmlkU29ydERpcmVjdGlvbiwgSUdyaWRTb3J0IH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQubW9kZWwnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBEcm9wZG93blNlcnZpY2UgfSBmcm9tICcuL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgKiBhcyB1dGlsaXRpZXMgZnJvbSAnLi91dGlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZGVscy9jb21tb24ubW9kZWwnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIHB1YmxpYyBmaWVsZEZvY3VzZWRPdXQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNDb21wb25lbnRFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh5cGVybGlua1NlcnZpY2U6IEh5cGVybGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7IH1cbiAgc2V0VG9vbHRpcCgpIHtcbiAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgIC5waXBlKHRha2UoMSkpIC8vIEVtaXQgb25seSBvbmNlIHdoZW4gdGhlIHpvbmUgYmVjb21lcyBzdGFibGVcbiAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRUb29sdGlwRXZlbnRMaXN0ZW5lcnMoKVxuICAgIH0pO1xufVxuXG4gIGdldE1hdGNoZWRSb3V0ZUJhc2VkT25Db21wb25lbnQoY29tcG9uZW50OiBhbnkpIHtcbiAgICBsZXQgcm91dGU6IGFueSA9IHt9O1xuICAgIHRoaXMucm91dGVyLmNvbmZpZy5mb3JFYWNoKChwYXJlbnRSb3V0ZSkgPT4ge1xuICAgICAgaWYgKHBhcmVudFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgICAgIHJvdXRlID0gcGFyZW50Um91dGU7XG4gICAgICB9IGVsc2UgaWYgKHBhcmVudFJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIHBhcmVudFJvdXRlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkUm91dGUpID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICAgICAgcm91dGUgPSBjaGlsZFJvdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbnNldFRvb2x0aXBFdmVudExpc3RlbmVycygpIHtcbiAgICBjb25zdCBzaG93VG9vbHRpcENvbmRpdGlvbmFsbHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRTZWxlY3RvciA9IHRoaXMuZ2V0QXR0cmlidXRlKFwiZGF0YS10aXRsZS1lbGVtZW50XCIpO1xuICAgICAgICBsZXQgdG9vbHRpcEVsZW1lbnRzID0gW11cbiAgICAgICAgaWYgKGVsZW1lbnRTZWxlY3RvciA9PSAnc2VsZicpIHtcbiAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50cy5wdXNoKHRoaXMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0b29sdGlwRWxlbWVudHMgPSB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoZWxlbWVudFNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICB0b29sdGlwRWxlbWVudHMuZm9yRWFjaCh0b29sdGlwRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERpc3BsYXkgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0b29sdGlwRWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShcImRpc3BsYXlcIik7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxEaXNwbGF5LmluY2x1ZGVzKCdpbmxpbmUnKSkge1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50Lm9ubW91c2VsZWF2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBvcmlnaW5hbERpc3BsYXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGl0bGVFbGVtZW50ID0gdG9vbHRpcEVsZW1lbnQubm9kZU5hbWUgPT0gXCJJTlBVVFwiIHx8IHRvb2x0aXBFbGVtZW50Lm5vZGVOYW1lID09IFwiVEVYVEFSRUFcIiA/IHRvb2x0aXBFbGVtZW50LnBhcmVudEVsZW1lbnQgOiB0b29sdGlwRWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRvb2x0aXBFbGVtZW50LmNsaWVudFdpZHRoICYmIHRvb2x0aXBFbGVtZW50LnNjcm9sbFdpZHRoICE9PSB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCArIDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSAnJ1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQudmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpdGxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnLCB0aXRsZSk7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBmdW5jdGlvbigpIHsgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpIH0sIHtvbmNlIDogdHJ1ZX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpdGxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS10aXRsZS1lbGVtZW50XTpub3QoW2RhdGEtdGl0bGVdKVwiKTtcbiAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSlcbiAgICB9KTtcbn1cblxuICBjaGVja1ZhbGlkaXR5KGZvcm1GaWVsZHM6IElGb3JtRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvcm1GaWVsZHMubWFwKChpdGVtOiBJRm9ybUZpZWxkKSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWxpZGF0aW9ucyAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICBsZXQgaXRlbVZhbHVlID1cbiAgICAgICAgICBpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQgJiZcbiAgICAgICAgICBpdGVtLnZhbHVlICYmXG4gICAgICAgICAgdHlwZW9mIGl0ZW0udmFsdWUgPT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IGl0ZW0udmFsdWUudmFsdWVcbiAgICAgICAgICAgIDogaXRlbS52YWx1ZTtcbiAgICAgICAgLy8gaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmIGl0ZW0udmFsdWUgICYmIHR5cGVvZihpdGVtLnZhbHVlKSA9PT0gJ29iamVjdCcpe1xuICAgICAgICAvLyAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLnZhbHVlO1xuICAgICAgICAvLyAgfVxuICAgICAgICBpdGVtLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBpdGVtLmlzdmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0udmFsaWRhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBtaW5NYXhWYWxpZERhdGUgPSB1dGlsaXRpZXMuY2FsZW5kYXJNaW5NYXhWYWx1ZShpdGVtLCBpdGVtVmFsdWUsIGkpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkID1cbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnMgJiYgdHlwZW9mIGl0ZW0ubGFiZWwgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgID8gaXRlbS5sYWJlbC5uYW1lXG4gICAgICAgICAgICAgIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5SRVFVSVJFRCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgIWl0ZW0uaGlkZGVuICYmXG4gICAgICAgICAgICB2YWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9IGl0ZW1WYWx1ZVxuICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgJHt2YWxpZH0gaXMgcmVxdWlyZWRgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1JTkxFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUFYTEVOR1RIICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn0gY2hhcmFjdGVyc2BcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5JTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdtaW5pbXVtJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNaW5pbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWElNVU0gJiZcbiAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNBTEVOREFSKXtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IG1pbk1heFZhbGlkRGF0ZSA9PT0gJ2dyZWF0ZXInID8gdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1heGltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YCkgOiB0cnVlO1xuICAgICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUEFUVEVSTiAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS5tYXRjaChpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5OVU1FUklDICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oMHxbLSgpMS05XVxcZCopJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8WzEtOV1cXGQqKSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyICR7aXRlbS52YWxpZGF0aW9uc1tpXS50eXBlfSBmb3IgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBIT05FICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXig/PS4qWzAtOV0pWy0oKTAtOVxccyt4XSskLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuREVDSU1BTCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZT8udG9TdHJpbmcoKT8ubWF0Y2goL14oMHxbLSgpMS05XVxcZCopKFxcLlxcZCspPyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKC9eKDB8WzEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5FTUFJTCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSAmJiBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGU9PUVWYWxpZGF0b3IuTUFYT1BUSU9OUyAmJiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgdmFyIG1heE9wdGlvbnM9aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uO1xuICAgICAgICAgICAgaXNWYWxpZD1pdGVtVmFsdWUubGVuZ3RoPm1heE9wdGlvbnM/dGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1heGltdW0gdmFsdWVzIGZvciAke3ZhbGlkfSBpcyAke21heE9wdGlvbnN9YCk6dHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgc2V0RXJyb3JNZXNzYWdlKGl0ZW06IElGb3JtRmllbGQsIGVycm9yTWVzc2FnZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaXRlbS5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgaXRlbS5pc3ZhbGlkID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYWRkRm9ybUZpZWxkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGlmICghZmllbGRJbmZvLmxhYmVsICYmIGZpZWxkSW5mby5jb250cm9sICE9IEVGb3JtQ29udHJvbC5ESVNQTEFZX1RFWFQpIHtcbiAgICAgIGZpZWxkSW5mby5sYWJlbCA9IGZpZWxkSW5mby5maWVsZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybUZpZWxkOiBhbnkgPSB7XG4gICAgICBsYWJlbDogZmllbGRJbmZvLmxhYmVsLFxuICAgICAgZmllbGQ6IGZpZWxkSW5mby5maWVsZCxcbiAgICAgIGRpc3BsYXlGaWVsZDogZmllbGRJbmZvLmRpc3BsYXlGaWVsZCxcbiAgICAgIGNvbnRyb2w6IGZpZWxkSW5mby5jb250cm9sLFxuICAgICAgc2hvd09wdGlvbjogZmllbGRJbmZvLnNob3dPcHRpb24sXG4gICAgICBjb2x1bW46IGZpZWxkSW5mby5jb2x1bW4sXG4gICAgICByb3c6IGZpZWxkSW5mby5yb3csXG4gICAgICBtaW51dGVzSW50ZXJ2YWw6IGZpZWxkSW5mby5taW51dGVzSW50ZXJ2YWwsXG4gICAgICB2YWx1ZTogZmllbGRJbmZvLnZhbHVlLFxuICAgICAgZm9ybWF0OiBmaWVsZEluZm8uZm9ybWF0LFxuICAgICAgaGlkZGVuOiBmaWVsZEluZm8uaGlkZGVuLFxuICAgICAgcGVybWlzc2lvbnM6IGZpZWxkSW5mby5wZXJtaXNzaW9ucyxcbiAgICAgIHZhbGlkYXRpb25zOiBmaWVsZEluZm8udmFsaWRhdGlvbnMsXG4gICAgICBpZDogZmllbGRJbmZvLmlkLFxuICAgICAgaHlwZXJsaW5rOiBmaWVsZEluZm8uaHlwZXJsaW5rLFxuICAgICAgZGF0YTogZmllbGRJbmZvLmRhdGEsXG4gICAgICBsb29rdXBDb250cm9sOiBmaWVsZEluZm8ubG9va3VwQ29udHJvbCxcbiAgICAgIGNvbXBvbmVudENvbnRyb2w6IGZpZWxkSW5mby5jb21wb25lbnRDb250cm9sLFxuICAgICAgb3B0aW9uTGFiZWw6IGZpZWxkSW5mby5vcHRpb25MYWJlbCxcbiAgICAgIG9wdGlvblZhbHVlOiBmaWVsZEluZm8ub3B0aW9uVmFsdWUsXG4gICAgICBzYXZlQXNTdHJpbmc6IGZpZWxkSW5mby5zYXZlQXNTdHJpbmcsXG4gICAgICBzaG93QWxsVmFsdWU6IGZpZWxkSW5mby5zaG93QWxsVmFsdWUsXG4gICAgICBvbkNsaWNrOiBmaWVsZEluZm8ub25DbGljayxcbiAgICAgIG9uUmV0dXJuOiBmaWVsZEluZm8ub25SZXR1cm4sXG4gICAgICBvbkZvY3VzT3V0OiBmaWVsZEluZm8ub25Gb2N1c091dCxcbiAgICAgIG9uQ2hhbmdlOiBmaWVsZEluZm8ub25DaGFuZ2UsXG4gICAgICB0YWJsZXM6IGZpZWxkSW5mby50YWJsZXMsXG4gICAgICBkaXNhYmxlZDogZmllbGRJbmZvLmRpc2FibGVkLFxuICAgICAgZGlzYWJsZWRUZXh0OiBmaWVsZEluZm8uZGlzYWJsZWRUZXh0LFxuICAgICAgdGltZU9ubHk6IGZpZWxkSW5mby50aW1lT25seSxcbiAgICAgIGlzUGFzc3dvcmQ6IGZpZWxkSW5mby5pc1Bhc3N3b3JkLFxuICAgICAgdGV4dFR5cGU6IGZpZWxkSW5mby50ZXh0VHlwZSxcbiAgICAgIG1vbnRoT25seTogZmllbGRJbmZvLm1vbnRoT25seSxcbiAgICAgbWluRGF0ZTpmaWVsZEluZm8ubWluRGF0ZSwgXG4gICAgIG1heERhdGU6ZmllbGRJbmZvLm1heERhdGUsXG4gICAgICBzaG93VGltZTogZmllbGRJbmZvLnNob3dUaW1lLCAvLyB0byBzaG93IHRpbWUgYXMgd2VsbCBpbiBjYWxlbmRhciBmb3JtIGZpZWxkXG4gICAgICBoZWlnaHQ6IGZpZWxkSW5mby5oZWlnaHQsXG4gICAgICBzaG93Qm90dG9tQm9yZGVyOiBmaWVsZEluZm8uc2hvd0JvdHRvbUJvcmRlcixcbiAgICAgIGFsbG93U2VhcmNoOiBmaWVsZEluZm8uYWxsb3dTZWFyY2gsXG4gICAgICBzZWxlY3RNdWx0aXBsZUZpbGVzOiBmaWVsZEluZm8uc2VsZWN0TXVsdGlwbGVGaWxlcyxcbiAgICAgIFNldGZpbGVUeXBlczogZmllbGRJbmZvLlNldGZpbGVUeXBlcyxcbiAgICAgIGZvcm1JZDogZmllbGRJbmZvLmZvcm1JZCxcbiAgICAgIGljb246IGZpZWxkSW5mby5pY29uLFxuICAgICAgY29sb3I6IGZpZWxkSW5mby5jb2xvcixcbiAgICAgIGNhcmQ6IGZpZWxkSW5mby5jYXJkLFxuICAgICAgdW5pcXVlS2V5OiBmaWVsZEluZm8udW5pcXVlS2V5LFxuICAgICAgcGF0aFN5c3RlbUNvbmZpZzogZmllbGRJbmZvLnBhdGhTeXN0ZW1Db25maWcsXG4gICAgICBhenVyZUNvbnRhaW5lcjogZmllbGRJbmZvLmF6dXJlQ29udGFpbmVyLFxuICAgICAgY2xhc3M6IGZpZWxkSW5mby5jbGFzcyxcbiAgICAgIGhvdmVyRGF0YTogZmllbGRJbmZvLmhvdmVyRGF0YSxcbiAgICAgIG9wZW5Jbk5ld1RhYjogZmllbGRJbmZvLm9wZW5Jbk5ld1RhYixcbiAgICAgIGlzQXp1cmVVcGxvYWQ6IGZpZWxkSW5mby5pc0F6dXJlVXBsb2FkLFxuICAgICAgcmVzaXplV2lkdGg6IGZpZWxkSW5mby5yZXNpemVXaWR0aCxcbiAgICAgIGNvbG9yRm9udDogZmllbGRJbmZvLmNvbG9yRm9udCxcbiAgICAgIGRpc3BsYXlUZXh0UGFyYW1zOiBmaWVsZEluZm8uZGlzcGxheVRleHRQYXJhbXMsXG4gICAgICBkaXNwbGF5VGV4dFN0cmluZzogZmllbGRJbmZvLmRpc3BsYXlUZXh0U3RyaW5nLFxuICAgICAgaGlkZGVuT25QcmludDogZmllbGRJbmZvLmhpZGRlbk9uUHJpbnQsXG4gICAgICBhbGxvd1RvQ2FwdHVyZTogZmllbGRJbmZvLmFsbG93VG9DYXB0dXJlLFxuICAgICAgYWxsb3dGaWxlVXBsb2FkOiBmaWVsZEluZm8uYWxsb3dGaWxlVXBsb2FkLFxuICAgICAgYXV0b0NvbXBsZXRlOiBmaWVsZEluZm8uYXV0b0NvbXBsZXRlXG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtRmllbGQ7XG4gIH1cblxuICBhZGRDaGVja2JveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNIRUNLQk9YO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkVGV4dGJveChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgICBhZGREaXNwbGF5VGV4dChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfVEVYVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICAgIGFkZFNpZ25hdHVyZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNJR05BVFVSRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICBhZGRUZXh0RWRpdG9yKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVF9FRElUT1I7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaXNwbGF5RmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IGZpZWxkSW5mby5mb3JtYXQ/LnR5cGUgPT09IEVGb3JtYXRUeXBlLkNVUlJFTkNZID8gIEVGb3JtQ29udHJvbC5OVU1FUklDIDogRUZvcm1Db250cm9sLklOUFVUO1xuICAgIGZpZWxkSW5mby5kaXNhYmxlZCA9IHRydWU7XG4gICAgZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTnVtZXJpY1RleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OVU1FUklDO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkU3BhY2VGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1BBQ0VSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTmV3TGluZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQlJFQUtfTElORTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRBcmVhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVEFSRUE7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgXG4gICAvLyBBZGRpbmcgUmVwb3J0IGJ1dHRvbiBmb3IgRHluYW1pY0Zvcm1cbiAgIGFkZFJlcG9ydEJ0bihmaWVsZEluZm86IElSZXBvcnRCdG4pIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5SRVBPUlQ7XG4gICAgcmV0dXJuIGZpZWxkSW5mbztcbiAgfVxuXG4gIGFkZE5vdGVGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5PVEVfRklFTEQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkU2VsZWN0QnV0dG9ucyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFTEVDVEJVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFBkZlBhZ2VCcmVhayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlBERl9QQUdFX0JSRUFLO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIC8vIHJlY2VpdmUgTGlua0lkIGFuZCBQYXJhbXNcbiAgZ2V0SHlwZXJsaW5rVXJsKFxuICAgIGxpbmtJZDogc3RyaW5nLFxuICAgIHBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBmb3JtRmllbGQ6IElGb3JtRmllbGQgPSB7XG4gICAgICBoeXBlcmxpbms6IHsgbGlua0lkOiBsaW5rSWQsIHBhcmFtczogcGFyYW1zIH0sXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5hZGRIeXBlcmxpbmsoZm9ybUZpZWxkKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UuaHlwZXJsaW5rPy5saW5rLmluY2x1ZGVzKCd7eycgKyBrZXkgKyAnfX0nKSAmJiBwYXJhbXNba2V5XSAhPSBudWxsICYmICFwYXJhbXNba2V5XS50b1N0cmluZygpPy5pbmNsdWRlcygneycpKSB7XG4gICAgICAgICAgcmVzcG9uc2UuaHlwZXJsaW5rLmxpbmsgPSByZXNwb25zZS5oeXBlcmxpbms/LmxpbmsucmVwbGFjZSgne3snICsga2V5ICsgJ319JywgcGFyYW1zW2tleV0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gcmVzcG9uc2UuaHlwZXJsaW5rPy5saW5rO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkSHlwZXJsaW5rKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogYW55IHtcbiAgICBjb25zdCB1c2VyU2V0dGluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVXNlclNldHRpbmdcIik7XG4gICAgaWYgKHVzZXJTZXR0aW5nKSB7XG4gICAgICBjb25zdCBwYXJzZVNldHRpbmcgPSBKU09OLnBhcnNlKHVzZXJTZXR0aW5nKTtcblxuICAgICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbms/LnRhcmdldFVzZVVzZXJQcmVmKSB7XG4gICAgICAgIGZpZWxkSW5mby5oeXBlcmxpbmsudGFyZ2V0ID0gcGFyc2VTZXR0aW5nPy52YWx1ZSA9PT0gXCJvcGVuTGlua0luQ3VycmVudFRhYlwiID8gRUh5cGVybGluay5TRUxGIDogRUh5cGVybGluay5CTEFOSztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmllbGRJbmZvLmh5cGVybGluayAmJiBmaWVsZEluZm8uaHlwZXJsaW5rLmNvbXBvbmVudCkge1xuICAgICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSFlQRVJMSU5LO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmh5cGVybGlua1NlcnZpY2UuYnVpbGRVcmwoXG4gICAgICAgIGZpZWxkSW5mbz8uaHlwZXJsaW5rPy5saW5rSWRcbiAgICAgICkudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gZmllbGRJbmZvPy5oeXBlcmxpbms/LnBhcmFtcztcbiAgICAgICAgbGV0IG9yaWdpbmFsVXJsID0gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLnNldFVybChwYXJhbXMsIHJlc1swXSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBvcmlnaW5hbFVybDtcbiAgICAgICAgaWYgKG9yaWdpbmFsVXJsICYmIHBhcmFtcykge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxVcmwuaW5jbHVkZXMoJ3t7JyArIGtleSArICd9fScpICYmIHBhcmFtc1trZXldICYmICFwYXJhbXNba2V5XS50b1N0cmluZygpPy5pbmNsdWRlcygneycpKSB7XG4gICAgICAgICAgICAgIG9yaWdpbmFsVXJsID0gb3JpZ2luYWxVcmwucmVwbGFjZSgne3snICsga2V5ICsgJ319JywgcGFyYW1zW2tleV0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRJbmZvLmh5cGVybGluaz8ubGlua0lkICYmIGZpZWxkSW5mby5oeXBlcmxpbmsubGlua0lkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmsgPSBvcmlnaW5hbFVybDtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICAgIGxldCBvYmo6IGFueSA9IHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICAgIG9ialsnb3JpZ25hbExpbmsnXSA9IGxpbms7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRDYWxlbmRhcihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBTEVOREFSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gYWRkIEF1dG9Db21wbGV0ZSBmb3IgRm9ybVxuICBhZGRBdXRvQ29tcGxldGUoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5BVVRPQ09NUExFVEU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBTZWFyY2ggQXV0b0NvbXBsZXRlIERhdGEgZm9yIGZvcm1cbiAgZ2V0QXV0b0NvbXBsZXRlRGF0YShmb3JtRmllbGQ/OiBhbnksIHVuaXF1ZUtleT86IHN0cmluZywgZmlsdGVycz86IGFueVtdLCBzZWFyY2g6IHN0cmluZyA9ICcnKTogYW55IHtcbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLmdldDxhbnlbXSwgYW55PignL0RhdGEvRmV0Y2gnLCB7IHVuaXF1ZUtleTogdW5pcXVlS2V5LCBmaWx0ZXJzfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+e1xuICAgICAgaWYoc2VhcmNoKXtcbiAgICAgICBsZXQgZXhpc3RJblJlY29yZDogYm9vbGVhbiA9IHJlc3BvbnNlLnJlY29yZHMuc29tZSgocmVjb3JkOiBhbnkpPT4gcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdICYmIHJlY29yZFtmb3JtRmllbGQuZGlzcGxheUZpZWxkXT8udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoPy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgaWYoIWV4aXN0SW5SZWNvcmQpe1xuICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMudW5zaGlmdCAoe1tmb3JtRmllbGQuZGlzcGxheUZpZWxkXTogc2VhcmNofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGZvcm1GaWVsZC5vcHRpb25MYWJlbCAmJiBmb3JtRmllbGQub3B0aW9uVmFsdWUpIHtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGEgPSByZXNwb25zZS5yZWNvcmRzPy5tYXAoKHJlY29yZDogYW55KSA9PiAoe1xuICAgICAgICAgIGlkOiByZWNvcmRbZm9ybUZpZWxkPy5vcHRpb25WYWx1ZV0sXG4gICAgICAgICAgbGFiZWw6IHJlY29yZFtmb3JtRmllbGQ/Lm9wdGlvbkxhYmVsXVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtRmllbGQuZGF0YSA9IFsuLi5yZXNwb25zZS5yZWNvcmRzXVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkRHJvcGRvd24oZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3QpOiBhbnkge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRST1BET1dOO1xuICAgIGlmIChkcm9wRG93blByb3ApIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSBkcm9wRG93blByb3AudW5pcXVlS2V5O1xuICAgICAgbGV0IHZhbHVlUHJvcCA9IGRyb3BEb3duUHJvcC52YWx1ZVByb3A7XG4gICAgICBsZXQgbGFiZWxQcm9wID0gZHJvcERvd25Qcm9wLmxhYmVsUHJvcDtcbiAgICAgIGxldCBmaWx0ZXJzOiBJU2V0RmlsdGVyW10gPSBkcm9wRG93blByb3AuZmlsdGVycyAmJiBkcm9wRG93blByb3AuZmlsdGVycy5sZW5ndGggPiAwID8gZHJvcERvd25Qcm9wLmZpbHRlcnMgOiBbXTtcbiAgICAgIGxldCBzb3J0czpJR3JpZFNvcnRbXSA9IGRyb3BEb3duUHJvcC5zb3J0c1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMsIHNvcnRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkLCB1bmlxdWVLZXk6IHN0cmluZywgdmFsdWVQcm9wOiBzdHJpbmcsIGxhYmVsUHJvcDogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSwgc29ydHM6YW55W109W10pIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93blNlcnZpY2VcbiAgICAgIC5zZXREcm9wRG93bkxpc3QoXG4gICAgICAgIHVuaXF1ZUtleSxcbiAgICAgICAgdmFsdWVQcm9wLFxuICAgICAgICBsYWJlbFByb3AsXG4gICAgICAgIGZpbHRlcnMsIFxuICAgICAgICBzb3J0c1xuICAgICAgKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5kYXRhID0gcmVzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkTG9va1VwKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZEhvdmVyRGF0YShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSE9WRVJEQVRBO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZERpYWxvZyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIHJldHVybiB0aGlzLmFkZExvb2tVcChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkQ29tcG9uZW50KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkSGVhZGVyKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFQ1RJT05fSEVBREVSO1xuICAgIGZpZWxkSW5mby5jbGFzcyA9IGZpZWxkSW5mby5jbGFzcyA/IGZpZWxkSW5mby5jbGFzcyArJyAnKydmb3JtLWhlYWRlcicgOiAnZm9ybS1oZWFkZXInO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTXVsdGlTZWxlY3QoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBkcm9wRG93blByb3A/OiBJRHJvcERvd25SZXF1ZXN0KTogYW55IHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5NVUxUSVNFTEVDVDtcbiAgICBpZiAoZHJvcERvd25Qcm9wKSB7XG4gICAgICBsZXQgdW5pcXVlS2V5ID0gZHJvcERvd25Qcm9wLnVuaXF1ZUtleTtcbiAgICAgIGxldCB2YWx1ZVByb3AgPSBkcm9wRG93blByb3AudmFsdWVQcm9wO1xuICAgICAgbGV0IGxhYmVsUHJvcCA9IGRyb3BEb3duUHJvcC5sYWJlbFByb3A7XG4gICAgICBsZXQgZmlsdGVyczogSVNldEZpbHRlcltdID0gZHJvcERvd25Qcm9wLmZpbHRlcnMgJiYgZHJvcERvd25Qcm9wLmZpbHRlcnMubGVuZ3RoID4gMCA/IGRyb3BEb3duUHJvcC5maWx0ZXJzIDogW107XG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkSW5mby5vcHRpb25MYWJlbCA9IGZpZWxkSW5mby5vcHRpb25MYWJlbCA/IGZpZWxkSW5mby5vcHRpb25MYWJlbCA6ICdsYWJlbCc7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPSBmaWVsZEluZm8ub3B0aW9uVmFsdWUgPyBmaWVsZEluZm8ub3B0aW9uVmFsdWUgOiAndmFsdWUnO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsZVVwbG9hZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5GSUxFX1VQTE9BRDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWxlKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRJU1BMQVlfRklMRTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBPbkNsaWNrIEJ1dHRvbiBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkQnV0dG9uKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFERF9CVVRUT047XG4gICAgLy8gU2hyaW5rcyB0aGUgYnV0dG9uJ3MgY29sdW1uIHRvIGZpdCBpdHMgY29udGVudCBhbmQgY29sbGFwc2VzIHRoZSBndXR0ZXIgYWdhaW5zdCBhblxuICAgIC8vIGFkamFjZW50IHRpZ2h0IGJ1dHRvbiwgaW5zdGVhZCBvZiBzaXR0aW5nIGluIGEgZml4ZWQtd2lkdGggY29sdW1uLiBTZWUgZm9ybS5jb21wb25lbnQuc2Nzcy5cbiAgICBmaWVsZEluZm8uY2xhc3MgPSBmaWVsZEluZm8uY2xhc3MgPyBgJHtmaWVsZEluZm8uY2xhc3N9IHNlLWJ0bi10aWdodGAgOiAnc2UtYnRuLXRpZ2h0JztcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBTd2l0Y2ggRnVuY3Rpb24gZm9yIER5bmFtaWNGb3JtXG4gIGFkZFN3aXRjaChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TV0lUQ0g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBzdGFydCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuICBhZGRDYXJkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCwgY2FyZERhdGE/OiBJTGlzdEZpbHRlcik6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBUkQ7XG4gICAgaWYgKGNhcmREYXRhICYmIGNhcmREYXRhLnVuaXF1ZUtleSkge1xuICAgICAgaWYoY2FyZERhdGEuc29ydHM/Lmxlbmd0aCA+IDApe1xuICAgICAgICBjYXJkRGF0YS5zb3J0cy5mb3JFYWNoKChyZXMpID0+e1xuICAgICAgICByZXMuZGlyZWN0aW9uID0gcmVzLmRpcmVjdGlvbiA/IHJlcy5kaXJlY3Rpb24gOiBFR3JpZFNvcnREaXJlY3Rpb24uQVNDO1xuICAgICAgICB9KTtcbiAgICAgIH0gICBcbiAgICAgIHJldHVybiB0aGlzLmdldENhcmREYXRhKGZpZWxkSW5mbywgY2FyZERhdGEudW5pcXVlS2V5LCBjYXJkRGF0YS5maWx0ZXJzLCBjYXJkRGF0YS5zb3J0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGdldENhcmREYXRhKGZpZWxkSW5mbzogYW55LCB1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldENhcmRMaXN0KHVuaXF1ZUtleSwgZmlsdGVycywgc29ydHMpXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmNhcmQuZGF0YSA9IHJlcy5yZWNvcmRzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIGxvYWQgY29tcG9uZW50IG9uIGZvcm1cbiAgc2V0QWRkQ29tcG9uZW50RGF0YSh7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sIGlkOiBzdHJpbmcsIHZhbHVlOiBhbnksIGxvYWRDb21wb25lbnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2wgJiYgZmllbGQuY29tcG9uZW50Q29udHJvbD8uaWQgPT09IGlkKSB7XG4gICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSA9IHsgLi4uZmllbGQuY29tcG9uZW50Q29udHJvbD8uZGF0YSwgW2tleV06IHZhbHVlW2tleV0gfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1dGlsaXRpZXMuY2hhbmdlRHluYW1pY0Zvcm1TdGF0ZShpZCwgZmllbGQuY29tcG9uZW50Q29udHJvbC5kYXRhLCBsb2FkQ29tcG9uZW50KTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCB2YWx1ZVxuICAvLyBzZXRGb3JtRmllbGRWYWx1ZShcbiAgLy8gICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gIC8vICAgZmllbGQ6IHN0cmluZyxcbiAgLy8gICB2YWx1ZTogYW55LFxuICAvLyAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJ1xuICAvLyApIHtcbiAgLy8gICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgLy8gICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xuICAvLyAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAvLyAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gIC8vICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgLy8gICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9KTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHNldEZvcm1GaWVsZFZhbHVlKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnXG4gICkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlRmllbGRWYWx1ZSA9IChmb3JtRmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWN0aW9uLmZpZWxkcz8uZm9yRWFjaCh1cGRhdGVGaWVsZFZhbHVlKTtcbiAgICAgIHNlY3Rpb24uaGVhZGVyRmllbGRzPy5mb3JFYWNoKHVwZGF0ZUZpZWxkVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCBwcm9wZXJ0eVxuICBzZXRGb3JtRmllbGRQcm9wKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHByb3BzOiBJRGljdGlvbmFyeVtdXG4gICkge1xuICAgIHJldHVybiBmb3JtU2VjdGlvbnM/Lm1hcCgoc2VjdGlvbjogYW55KSA9PiB7XG4gICAgICByZXR1cm4gc2VjdGlvbi5maWVsZHMubWFwKChmb3JtRmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAoZm9ybUZpZWxkLmxhYmVsICYmIGZvcm1GaWVsZC5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcHJvcHMubWFwKChwcm9wOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtRmllbGQuaGFzT3duUHJvcGVydHkocHJvcC5uYW1lKSkge1xuICAgICAgICAgICAgICBpZiAocHJvcC5uYW1lID09PSAnbGFiZWwnICYmIHR5cGVvZiBmb3JtRmllbGQubGFiZWwgPT09ICdvYmplY3QnICYmICFwcm9wLm92ZXJyaWRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3A/LnZhbHVlPy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXJkTGlzdCh1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZVxuICAgICAgICAuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoeyBlcnJvciB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG4gIFxuICAvLyBFbmQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgZ2V0UGFnZVNlY3Rpb25PcmRlcnMoKXtcbiAgICBjb25zdCB1c2VySW5mbzphbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiQ3VycmVudFVzZXJJbmZvXCIpKTtcbiAgICBjb25zdCByb2xlcyA9IHVzZXJJbmZvPy5yb2xlcz8ubWFwKChyb2xlKT0+IChyb2xlLm5hbWUpKTtcbiAgICBsZXQgcGFnZVVybCA9IHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpO1xuICAgIGlmIChwYWdlVXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgIHBhZ2VVcmwgPSBwYWdlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgfVxuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UucG9zdChcIi9TZWN0aW9uQ29uZmlnL0J5UGFnZVwiLCB7cGFnZTogcGFnZVVybCwgcm9sZXM6IHJvbGVzfSkuc3Vic2NyaWJlKChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgIGlmKHJlc3BvbnNlPy5sZW5ndGgpe1xuICAgICAgICB1c2VySW5mb1sncGFnZVNlY3Rpb25zJ10gPSByZXNwb25zZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJDdXJyZW50VXNlckluZm9cIiwgSlNPTi5zdHJpbmdpZnkodXNlckluZm8pKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2793,6 +2793,9 @@ class FormService {
|
|
|
2793
2793
|
// Adding OnClick Button Function for DynamicForm
|
|
2794
2794
|
addButton(fieldInfo) {
|
|
2795
2795
|
fieldInfo.control = EFormControl.ADD_BUTTON;
|
|
2796
|
+
// Shrinks the button's column to fit its content and collapses the gutter against an
|
|
2797
|
+
// adjacent tight button, instead of sitting in a fixed-width column. See form.component.scss.
|
|
2798
|
+
fieldInfo.class = fieldInfo.class ? `${fieldInfo.class} se-btn-tight` : 'se-btn-tight';
|
|
2796
2799
|
return this.addFormField(fieldInfo);
|
|
2797
2800
|
}
|
|
2798
2801
|
// Adding Switch Function for DynamicForm
|