@pepperi-addons/ngx-composite-lib 0.4.2-beta.66 → 0.4.2-beta.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/layout-builder/layout-builder.component.mjs +3 -3
- package/esm2020/layout-builder/layout-builder.service.mjs +10 -3
- package/esm2020/layout-builder/section/section.component.mjs +2 -2
- package/esm2020/layout-builder/section-block/section-block.component.mjs +3 -3
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +15 -8
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +15 -8
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/layout-builder/layout-builder.service.d.ts +3 -2
- package/package.json +1 -1
|
@@ -286,6 +286,13 @@ export class PepLayoutBuilderService {
|
|
|
286
286
|
notifyLockScreen(value) {
|
|
287
287
|
this._lockScreenSubject.next(value);
|
|
288
288
|
}
|
|
289
|
+
updateCurrentEditorTitle(title) {
|
|
290
|
+
const currentEditor = this._editorSubject.getValue();
|
|
291
|
+
if (currentEditor) {
|
|
292
|
+
currentEditor.title = title;
|
|
293
|
+
this.notifyEditorChange(currentEditor);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
289
296
|
setAvailableBlocksToDrag(availableBlocksForDrag) {
|
|
290
297
|
this._availableBlocksForDragMap.clear();
|
|
291
298
|
availableBlocksForDrag.forEach(block => {
|
|
@@ -397,8 +404,8 @@ export class PepLayoutBuilderService {
|
|
|
397
404
|
// Update editor title
|
|
398
405
|
const currentEditor = this._editorSubject.getValue();
|
|
399
406
|
if (currentEditor && currentEditor.type === 'section' && currentEditor.id === currentSection.Key) {
|
|
400
|
-
|
|
401
|
-
this.
|
|
407
|
+
const title = this.getSectionEditorTitle(currentSection, sectionIndex);
|
|
408
|
+
this.updateCurrentEditorTitle(title);
|
|
402
409
|
}
|
|
403
410
|
// Update sections change.
|
|
404
411
|
this.notifyLayoutViewChange(layoutView);
|
|
@@ -615,4 +622,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
615
622
|
providedIn: 'root',
|
|
616
623
|
}]
|
|
617
624
|
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
|
|
618
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2xheW91dC1idWlsZGVyL2xheW91dC1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQXdELGVBQWUsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVsSSxPQUFPLEVBQW1CLE9BQU8sRUFBa0IsaUJBQWlCLEVBQTBDLE1BQU0seUJBQXlCLENBQUM7QUFJOUksT0FBTyxFQUFjLGVBQWUsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQWdCLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNNUUsTUFBTSxPQUFPLHVCQUF1QjtJQW1IaEMsWUFDYyxTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWhIakMseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBTzFCLHVCQUFrQixHQUFHLEtBQUssRUFBVyxDQUFDO1FBRXRDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFTM0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFLeEMscURBQXFEO1FBQzNDLHVCQUFrQixHQUF1QyxJQUFJLGVBQWUsQ0FBb0IsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFLaEksK0VBQStFO1FBQ3ZFLHdCQUFtQixHQUE0QixJQUFJLGVBQWUsQ0FBUyxNQUFNLENBQUMsQ0FBQztRQUszRix5RUFBeUU7UUFDakUsbUJBQWMsR0FBb0MsSUFBSSxlQUFlLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBS3BHLGtEQUFrRDtRQUMxQyxvQ0FBK0IsR0FBMkIsSUFBSSxlQUFlLENBQVEsRUFB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QUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQTBCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLDBCQUEwQjtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFbkMsdUNBQXVDO1lBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7QUF2c0JlLHFEQUE2QixHQUFHLGlCQUFrQixDQUFBO0FBQ2xELHNDQUFjLEdBQUcsTUFBTyxDQUFBO29IQUYvQix1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZwQixNQUFNOzJGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2VyY2lvblwiO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbmQsIENka0RyYWdTdGFydCwgY29weUFycmF5SXRlbSwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFBlcEFkZG9uU2VydmljZSwgUGVwR3VpZCwgUGVwSHR0cFNlcnZpY2UsIFBlcFNjcmVlblNpemVUeXBlLCBQZXBTZXNzaW9uU2VydmljZSwgUGVwVXRpbGl0aWVzU2VydmljZSB9IGZyb20gXCJAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYlwiO1xuaW1wb3J0IHsgSVBlcERyYWdnYWJsZUl0ZW0gfSBmcm9tIFwiQHBlcHBlcmktYWRkb25zL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zXCI7XG5pbXBvcnQgeyBEYXRhVmlld1NjcmVlblNpemUsIFNjcmVlblNpemVEYXRhQ29uZmlndXJhdGlvbiB9IGZyb20gXCJAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGtcIjtcbmltcG9ydCB7IFBlcFNuYWNrQmFyRGF0YSwgUGVwU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSBcIkBwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NuYWNrLWJhclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMYXlvdXRFZGl0b3JUeXBlLCBJRWRpdG9yLCBJUGVwTGF5b3V0QmxvY2tBZGRlZEV2ZW50LCBJTGF5b3V0RWRpdG9yLCBJUGVwTGF5b3V0U2VjdGlvbiwgSVBlcExheW91dFNlY3Rpb25Db2x1bW4sIElQZXBMYXlvdXRWaWV3LCBJTGF5b3V0U2VjdGlvbkVkaXRvciwgUGVwTGF5b3V0U2l6ZVR5cGUsIElQZXBMYXlvdXRCbG9ja0NvbnRhaW5lciB9IGZyb20gXCIuL2xheW91dC1idWlsZGVyLm1vZGVsXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBlcExheW91dEJ1aWxkZXJTZXJ2aWNlIHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgQVZBSUxBQkxFX0JMT0NLU19DT05UQUlORVJfSUQgPSAnYXZhaWxhYmxlQmxvY2tzJztcbiAgICBzdGF0aWMgcmVhZG9ubHkgTUFJTl9FRElUT1JfSUQgPSAnbWFpbic7XG5cbiAgICBwcml2YXRlIF9kZWZhdWx0U2VjdGlvblRpdGxlID0gJyc7XG4gICAgc2V0IGRlZmF1bHRTZWN0aW9uVGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5fZGVmYXVsdFNlY3Rpb25UaXRsZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRTZWN0aW9uVGl0bGUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2VkaXRvcnNCcmVhZENydW1iID0gQXJyYXk8SUVkaXRvcj4oKTtcblxuICAgIHByaXZhdGUgX2VkaXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgZ2V0IGVkaXRNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdE1vZGU7XG4gICAgfVxuICAgIHNldEVkaXRNb2RlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VkaXRNb2RlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0RWRpdGFibGVTdGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2VkaXRhYmxlU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBnZXQgZWRpdGFibGVTdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRhYmxlU3RhdGU7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzdWJqZWN0IGlzIGZvciB0aGUgc2NyZWVuIHNpemUgY2hhbmdlIGV2ZW50cy5cbiAgICBwcm90ZWN0ZWQgX3NjcmVlblNpemVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8UGVwU2NyZWVuU2l6ZVR5cGU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQZXBTY3JlZW5TaXplVHlwZT4oUGVwU2NyZWVuU2l6ZVR5cGUuWEwpO1xuICAgIGdldCBzY3JlZW5TaXplQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPFBlcFNjcmVlblNpemVUeXBlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JlZW5TaXplU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgc3ViamVjdCBpcyBmb3IgZGVtb3N0cmF0ZSB0aGUgY29udGFpbmVyIHNpemUgKFVzYWdlIG9ubHkgaW4gZWRpdCBtb2RlKS5cbiAgICBwcml2YXRlIF9zY3JlZW5XaWR0aFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcxMDAlJyk7XG4gICAgZ2V0IHNjcmVlbldpZHRoQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2NyZWVuV2lkdGhTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzdWJqZWN0IGlzIGZvciBsb2FkIHRoZSBjdXJyZW50IGVkaXRvciAoVXNhZ2Ugb25seSBpbiBlZGl0IG1vZGUpLlxuICAgIHByaXZhdGUgX2VkaXRvclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxJRWRpdG9yIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElFZGl0b3IgfCBudWxsPihudWxsKTtcbiAgICBnZXQgZWRpdG9yQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPElFZGl0b3IgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyB0aGUgc2VjdGlvbnMgY29sdW1ucyBkcm9wIGxpc3Qgc3ViamVjdC5cbiAgICBwcml2YXRlIF9zZWN0aW9uc0NvbHVtbnNEcm9wTGlzdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgZ2V0IHNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0Q2hhbmdlJCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWN0aW9uc0NvbHVtbnNEcm9wTGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyB0aGUgc2VjdGlvbnMgc3ViamVjdCAoYSBwYXJlIGZyb20gdGhlIGxheW91dCB2aWV3IG9iamVjdClcbiAgICBwcml2YXRlIF9zZWN0aW9uc1ZpZXdTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8SVBlcExheW91dFNlY3Rpb25bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElQZXBMYXlvdXRTZWN0aW9uW10+KFtdKTtcbiAgICBnZXQgc2VjdGlvbnNDaGFuZ2UkKCk6IE9ic2VydmFibGU8SVBlcExheW91dFNlY3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnNWaWV3U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgLy8gKHByZXZTZWN0aW9ucywgbmV4dFNlY3Rpb25zKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2U2VjdGlvbnMpID09PSBKU09OLnN0cmluZ2lmeShuZXh0U2VjdGlvbnMpKSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzdWJqZWN0IGlzIGZvciBsYXlvdXQgdmlldyBjaGFuZ2UuXG4gICAgcHJpdmF0ZSBfbGF5b3V0Vmlld1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxJUGVwTGF5b3V0VmlldyB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUGVwTGF5b3V0VmlldyB8IG51bGw+KG51bGwpO1xuICAgIGdldCBsYXlvdXRWaWV3Q2hhbmdlJCgpOiBPYnNlcnZhYmxlPElQZXBMYXlvdXRWaWV3IHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIobGF5b3V0ID0+ICEhbGF5b3V0KSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzdWJqZWN0IGlzIGZvciBlZGl0IG1vZGUgd2hlbiBibG9jayBpcyBkcmFnZ2luZyBub3cgb3Igbm90LlxuICAgIHByaXZhdGUgX2RyYWdnaW5nQmxvY2tLZXk6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gICAgZ2V0IGRyYWdnaW5nQmxvY2tLZXkoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RyYWdnaW5nQmxvY2tLZXkuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHN1YmplY3QgaXMgZm9yIGVkaXQgbW9kZSB3aGVuIHNlY3Rpb24gaXMgZHJhZ2dpbmcgbm93IG9yIG5vdC5cbiAgICBwcml2YXRlIF9kcmFnZ2luZ1NlY3Rpb25LZXk6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gICAgZ2V0IGRyYWdnaW5nU2VjdGlvbktleSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJhZ2dpbmdTZWN0aW9uS2V5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzdWJqZWN0IGlzIGZvciBsb2NrIG9yIHVubG9jayB0aGUgc2NyZWVuIChVc2FnZSBvbmx5IGluIGVkaXQgbW9kZSkuXG4gICAgcHJpdmF0ZSBfbG9ja1NjcmVlblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGdldCBsb2NrU2NyZWVuQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2tTY3JlZW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBpcyBmb3IgY29udHJvbCB0aGUgcHJldmlldyBtb2RlIChmb3IgbG9hZCB0aGUgYmxvY2tzIHdpdGggdGhlIENQSSBldmVudHMpIFxuICAgIHByaXZhdGUgX3ByZXZpZXdNb2RlU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgZ2V0IHByZXZpZXdNb2RlQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdNb2RlU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZm9yIGVkaXRvciBtb2RlIGZvciBibG9jayBhZGRlZC5cbiAgICBwcml2YXRlIF9ibG9ja0FkZGVkRXZlbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUGVwTGF5b3V0QmxvY2tBZGRlZEV2ZW50IHwgbnVsbD4obnVsbCk7XG4gICAgZ2V0IGJsb2NrQWRkZWRFdmVudFN1YmplY3QkKCk6IE9ic2VydmFibGU8SVBlcExheW91dEJsb2NrQWRkZWRFdmVudCB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jsb2NrQWRkZWRFdmVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIC8vIFRoaXMgaXMgZm9yIGVkaXRvciBtb2RlIGZvciBibG9ja3MgcmVtb3ZlZC5cbiAgICBwcml2YXRlIF9ibG9ja3NSZW1vdmVkRXZlbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuICAgIGdldCBibG9ja3NSZW1vdmVkRXZlbnRTdWJqZWN0JCgpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ibG9ja3NSZW1vdmVkRXZlbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgc3ViamVjdCBpcyBmb3Igc2tlbGV0b24uXG4gICAgcHJpdmF0ZSBfc2hvd1NrZWxldG9uU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICBnZXQgc2hvd1NrZWxldG9uQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dTa2VsZXRvblN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG4gICAgXG4gICAgLy8gVGhpcyBzdWJqZWN0cyBpcyBmb3IgbG9hZCB0aGUgYXZhaWxhYmxlIGJsb2NrcyB0byBkcmFnIGludG8gbWFwIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gICAgcHJpdmF0ZSBfYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcCA9IG5ldyBNYXA8c3RyaW5nLCBJUGVwRHJhZ2dhYmxlSXRlbT4oKTtcbiAgICBnZXQgYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcCgpOiBSZWFkb25seU1hcDxzdHJpbmcsIElQZXBEcmFnZ2FibGVJdGVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdmFpbGFibGVCbG9ja3NGb3JEcmFnTWFwO1xuICAgIH1cbiAgICBwcml2YXRlIF9hdmFpbGFibGVCbG9ja3NGb3JEcmFnTWFwU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVhZG9ubHlNYXA8c3RyaW5nLCBJUGVwRHJhZ2dhYmxlSXRlbT4+KHRoaXMuYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcCk7XG4gICAgZ2V0IGF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXBDaGFuZ2UkKCk6IE9ic2VydmFibGU8UmVhZG9ubHlNYXA8c3RyaW5nLCBJUGVwRHJhZ2dhYmxlSXRlbT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXBTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICAvL1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIHNldEVkaXRhYmxlU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuX2VkaXRhYmxlU3RhdGUgPSB0aGlzLmVkaXRNb2RlICYmICF0aGlzLl9wcmV2aWV3TW9kZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlld1RvVXBkYXRlOiBJUGVwTGF5b3V0VmlldyB8IG51bGwpIHtcbiAgICAgICAgaWYgKGxheW91dFZpZXdUb1VwZGF0ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dEVkaXRvclByb3BlcnRpZXMobGF5b3V0Vmlld1RvVXBkYXRlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsYXlvdXQgZm9yIHRoZSB2aWV3LlxuICAgICAgICAgICAgdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QubmV4dChsYXlvdXRWaWV3VG9VcGRhdGUpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNlY3Rpb25zIGZvciB0aGUgdmlldy5cbiAgICAgICAgICAgIHRoaXMuX3NlY3Rpb25zVmlld1N1YmplY3QubmV4dChsYXlvdXRWaWV3VG9VcGRhdGU/LkxheW91dC5TZWN0aW9ucyB8fCBbXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUJsb2NrQWRkZWQoYmxvY2tBZGRlZEV2ZW50RGF0YTogSVBlcExheW91dEJsb2NrQWRkZWRFdmVudCkge1xuICAgICAgICAvLyBOb3RpZnkgdGhhdCB0aGUgYmxvY2sgaXMgYWRkZWQgKHRvIHJhaXNlIHRoZSBldmVudCBmb3IgdGhlIGNsaWVudCkuXG4gICAgICAgIHRoaXMuX2Jsb2NrQWRkZWRFdmVudFN1YmplY3QubmV4dChibG9ja0FkZGVkRXZlbnREYXRhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUJsb2Nrc1JlbW92ZWQoa2V5czogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGtleXMpIHtcbiAgICAgICAgICAgIC8vIE5vdGlmeSB0aGF0IHRoZSBibG9ja3MgYXJlIHJlbW92ZWQgKHRvIHJhaXNlIHRoZSBldmVudCBmb3IgdGhlIGNsaWVudCkuXG4gICAgICAgICAgICB0aGlzLl9ibG9ja3NSZW1vdmVkRXZlbnRTdWJqZWN0Lm5leHQoa2V5cyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUVkaXRvckNoYW5nZShlZGl0b3I6IElFZGl0b3IgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2VkaXRvclN1YmplY3QubmV4dChlZGl0b3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5QXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcENoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5fYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcFN1YmplY3QubmV4dCh0aGlzLmF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGF5b3V0RWRpdG9yUHJvcGVydGllcyhsYXlvdXRWaWV3OiBJUGVwTGF5b3V0Vmlldykge1xuICAgICAgICBpZiAodGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWJbMF0pIHtcbiAgICAgICAgICAgIGNvbnN0IGxheW91dEVkaXRvcjogSUxheW91dEVkaXRvciA9IHtcbiAgICAgICAgICAgICAgICAvLyBwYWdlTmFtZTogcGFnZT8uTmFtZSxcbiAgICAgICAgICAgICAgICAvLyBwYWdlRGVzY3JpcHRpb246IHBhZ2U/LkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIC8vIHBhcmFtZXRlcnM6IHBhZ2UuUGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICAvLyBvbkxvYWRGbG93OiBwYWdlLk9uTG9hZEZsb3csXG4gICAgICAgICAgICAgICAgLy8gb25DaGFuZ2VGbG93OiBwYWdlLk9uQ2hhbmdlRmxvdyxcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogbGF5b3V0Vmlldz8uTGF5b3V0Lk1heFdpZHRoIHx8IDAsXG4gICAgICAgICAgICAgICAgdmVydGljYWxTcGFjaW5nOiBsYXlvdXRWaWV3Py5MYXlvdXQuVmVydGljYWxTcGFjaW5nLFxuICAgICAgICAgICAgICAgIGhvcml6b250YWxTcGFjaW5nOiBsYXlvdXRWaWV3Py5MYXlvdXQuSG9yaXpvbnRhbFNwYWNpbmcsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnNHYXA6IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9uc0dhcCxcbiAgICAgICAgICAgICAgICBjb2x1bW5zR2FwOiBsYXlvdXRWaWV3Py5MYXlvdXQuQ29sdW1uc0dhcCxcbiAgICAgICAgICAgICAgICAvLyByb3VuZGVkQ29ybmVyczogbGF5b3V0Vmlldz8ubGF5b3V0LlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWJbMF0uaG9zdE9iamVjdCA9IGxheW91dEVkaXRvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZERlZmF1bHRFZGl0b3IobGF5b3V0VmlldzogSVBlcExheW91dFZpZXcpIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWIgPSBuZXcgQXJyYXk8SUVkaXRvcj4oKTtcblxuICAgICAgICBpZiAobGF5b3V0Vmlldykge1xuICAgICAgICAgICAgdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWIucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IFBlcExheW91dEJ1aWxkZXJTZXJ2aWNlLk1BSU5fRURJVE9SX0lELFxuICAgICAgICAgICAgICAgIHR5cGUgOiAnbGF5b3V0LWJ1aWxkZXInLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsYXlvdXRWaWV3LlRpdGxlIHx8IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0xBWU9VVF9CVUlMREVSLkRFRkFVTFRfVElUTEUnKSxcbiAgICAgICAgICAgICAgICAvLyBob3N0T2JqZWN0OiB7fSAvLyBVcGRhdGVzIGluIHVwZGF0ZUxheW91dEVkaXRvclByb3BlcnRpZXMgZnVuY3Rpb24gYWJvdmUuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRFZGl0b3JQcm9wZXJ0aWVzKGxheW91dFZpZXcpO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlFZGl0b3JDaGFuZ2UodGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWJbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlFZGl0b3JDaGFuZ2UobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUN1cnJlbnRFZGl0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLl9lZGl0b3JzQnJlYWRDcnVtYi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUVkaXRvckNoYW5nZSh0aGlzLl9lZGl0b3JzQnJlYWRDcnVtYlt0aGlzLl9lZGl0b3JzQnJlYWRDcnVtYi5sZW5ndGggLSAxXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVkaXRvcihlZGl0b3JUeXBlOiBMYXlvdXRFZGl0b3JUeXBlLCBpZDogc3RyaW5nKTogSUVkaXRvciB8IG51bGwge1xuICAgICAgICAvLyBCdWlsZCBlZGl0b3Igb2JqZWN0LlxuICAgICAgICBsZXQgZWRpdG9yOiBJRWRpdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKGVkaXRvclR5cGUgPT09ICdzZWN0aW9uJykge1xuICAgICAgICAgICAgZWRpdG9yID0gdGhpcy5nZXRTZWN0aW9uRWRpdG9yKGlkKTtcbiAgICAgICAgfSBlbHNlIGlmIChlZGl0b3JUeXBlID09PSAnYmxvY2snKSB7XG4gICAgICAgICAgICBlZGl0b3IgPSB0aGlzLmdldEJsb2NrRWRpdG9yKGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWN0aW9uRWRpdG9yVGl0bGUoc2VjdGlvbjogSVBlcExheW91dFNlY3Rpb24sIHNlY3Rpb25JbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHNlY3Rpb24uTmFtZSB8fCBgJHt0aGlzLl9kZWZhdWx0U2VjdGlvblRpdGxlfSAke3NlY3Rpb25JbmRleCArIDF9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlY3Rpb25FZGl0b3Ioc2VjdGlvbklkOiBzdHJpbmcpOiBJRWRpdG9yIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkluZGV4ID0gc2VjdGlvbnMuZmluZEluZGV4KHNlY3Rpb24gPT4gc2VjdGlvbi5LZXkgPT09IHNlY3Rpb25JZCk7XG5cbiAgICAgICAgaWYgKHNlY3Rpb25JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBsZXQgc2VjdGlvbiA9IHNlY3Rpb25zW3NlY3Rpb25JbmRleF07XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uRWRpdG9yOiBJTGF5b3V0U2VjdGlvbkVkaXRvciA9IHtcbiAgICAgICAgICAgICAgICBpZDogc2VjdGlvbi5LZXksXG4gICAgICAgICAgICAgICAgc2VjdGlvbk5hbWU6IHNlY3Rpb24uTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBzcGxpdDogc2VjdGlvbi5TcGxpdCB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBzZWN0aW9uLkhlaWdodCB8fCAwLFxuICAgICAgICAgICAgICAgIGNvbGxhcHNlT25UYWJsZXQ6IHNlY3Rpb24uQ29sbGFwc2VPblRhYmxldCA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBmaWxsSGVpZ2h0OiBzZWN0aW9uLkZpbGxIZWlnaHQgPz8gZmFsc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogc2VjdGlvbklkLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRTZWN0aW9uRWRpdG9yVGl0bGUoc2VjdGlvbiwgc2VjdGlvbkluZGV4KSxcbiAgICAgICAgICAgICAgICBob3N0T2JqZWN0OiBzZWN0aW9uRWRpdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VjdGlvbkNvbHVtbkJ5SWRGb3JFZGl0b3Ioc2VjdGlvbkNvbHVtbklkOiBzdHJpbmcpOiBJUGVwTGF5b3V0U2VjdGlvbkNvbHVtbiB8IG51bGwge1xuICAgICAgICBsZXQgY3VycmVudENvbHVtbiA9IG51bGw7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBzZWN0aW9uIGFuZCBjb2x1bW4gYXJyYXkgYnkgdGhlIHBhdHRlcm4gb2YgdGhlIHNlY3Rpb24gY29sdW1uIGtleS5cbiAgICAgICAgY29uc3Qgc2VjdGlvbkNvbHVtblBhdHRlcm5TZXBhcmF0b3IgPSB0aGlzLmdldFNlY3Rpb25Db2x1bW5LZXkoKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkNvbHVtbkFyciA9IHNlY3Rpb25Db2x1bW5JZC5zcGxpdChzZWN0aW9uQ29sdW1uUGF0dGVyblNlcGFyYXRvcik7XG5cbiAgICAgICAgaWYgKHNlY3Rpb25Db2x1bW5BcnIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gbGF5b3V0Vmlldz8uTGF5b3V0LlNlY3Rpb25zIHx8IFtdO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHNlY3Rpb24gaWQgdG8gZ2V0IHRoZSBzZWN0aW9uIGluZGV4LlxuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbklkID0gc2VjdGlvbkNvbHVtbkFyclswXTtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25JbmRleCA9IHNlY3Rpb25zLmZpbmRJbmRleChzZWN0aW9uID0+IHNlY3Rpb24uS2V5ID09PSBzZWN0aW9uSWQpO1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBjb2x1bW4gaW5kZXguXG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHNlY3Rpb25Db2x1bW5BcnJbMV0sIC0xKTtcbiAgICAgICAgICAgIGlmIChzZWN0aW9uSW5kZXggPj0gMCAmJiBjb2x1bW5JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudENvbHVtbiA9IHNlY3Rpb25zW3NlY3Rpb25JbmRleF0uQ29sdW1uc1tjb2x1bW5JbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VycmVudENvbHVtbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNlY3Rpb25zQ29sdW1uc0dhcChsYXlvdXRWaWV3OiBJUGVwTGF5b3V0Vmlldykge1xuICAgICAgICBpZiAobGF5b3V0Vmlldz8uTGF5b3V0Py5TZWN0aW9ucykge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxheW91dFZpZXcuTGF5b3V0LlNlY3Rpb25zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSBsYXlvdXRWaWV3LkxheW91dC5TZWN0aW9uc1tpbmRleF07XG4gICAgICAgICAgICAgICAgc2VjdGlvbi5Db2x1bW5zR2FwID0gbGF5b3V0Vmlldy5MYXlvdXQuQ29sdW1uc0dhcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3NzU2NyZWVuV2lkaChzY3JlZW5UeXBlOiBEYXRhVmlld1NjcmVlblNpemUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgd2lkdGhUb1NldCA9ICcxMDAlJztcblxuICAgICAgICBpZiAoc2NyZWVuVHlwZSA9PT0gJ1RhYmxldCcpIHtcbiAgICAgICAgICAgIHdpZHRoVG9TZXQgPSAnNzIwJztcbiAgICAgICAgfSBlbHNlIGlmIChzY3JlZW5UeXBlID09PSAnUGhhYmxldCcpIHtcbiAgICAgICAgICAgIHdpZHRoVG9TZXQgPSAnMzYwJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3aWR0aFRvU2V0O1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIGdldEJsb2NrQ29udGFpbmVyQnlCbG9ja0tleShibG9ja0tleTogc3RyaW5nKTogSVBlcExheW91dEJsb2NrQ29udGFpbmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGJsb2NrQ29udGFpbmVyVG9GaW5kOiBJUGVwTGF5b3V0QmxvY2tDb250YWluZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgbGF5b3V0VmlldyA9IHRoaXMuX2xheW91dFZpZXdTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25zID0gbGF5b3V0Vmlldz8uTGF5b3V0LlNlY3Rpb25zIHx8IFtdO1xuICAgICAgICBcbiAgICAgICAgZm9yIChsZXQgc2VjdGlvbkluZGV4ID0gMDsgc2VjdGlvbkluZGV4IDwgc2VjdGlvbnMubGVuZ3RoOyBzZWN0aW9uSW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUgYmxvY2sgY29udGFpbmVyLlxuICAgICAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBzZWN0aW9uLkNvbHVtbnMuZmluZEluZGV4KGNvbHVtbiA9PiBjb2x1bW4uQmxvY2tDb250YWluZXI/LkJsb2NrS2V5ID09PSBibG9ja0tleSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGJsb2NrQ29udGFpbmVyVG9GaW5kID0gc2VjdGlvbi5Db2x1bW5zW2NvbHVtbkluZGV4XS5CbG9ja0NvbnRhaW5lclxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJsb2NrQ29udGFpbmVyVG9GaW5kO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlQ3Vyc29yT25EcmFnU3RhcnQoKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnaW5oZXJpdEN1cnNvcnMnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlQ3Vyc29yT25EcmFnRW5kKCkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2luaGVyaXRDdXJzb3JzJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ3Vuc2V0JztcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljIGZ1bmN0aW9uc1xuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIG5vdGlmeVNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0Q2hhbmdlKHNlY3Rpb25zQ29sdW1uc0Ryb3BMaXN0OiBhbnlbXSkge1xuICAgICAgICB0aGlzLl9zZWN0aW9uc0NvbHVtbnNEcm9wTGlzdFN1YmplY3QubmV4dChzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdCk7XG4gICAgfVxuXG4gICAgbm90aWZ5UHJldmlld01vZGVDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcHJldmlld01vZGVTdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgICAgICB0aGlzLnNldEVkaXRhYmxlU3RhdGUoKTtcbiAgICB9XG5cbiAgICBub3RpZnlMb2NrU2NyZWVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2xvY2tTY3JlZW5TdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHNldEF2YWlsYWJsZUJsb2Nrc1RvRHJhZyhhdmFpbGFibGVCbG9ja3NGb3JEcmFnOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4pIHtcbiAgICAgICAgdGhpcy5fYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcC5jbGVhcigpO1xuICAgICAgICBhdmFpbGFibGVCbG9ja3NGb3JEcmFnLmZvckVhY2goYmxvY2sgPT4ge1xuICAgICAgICAgICAgdGhpcy5fYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcC5zZXQoYmxvY2suZGF0YS5rZXksIGJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ub3RpZnlBdmFpbGFibGVCbG9ja3NGb3JEcmFnTWFwQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgZ2V0QmxvY2tFZGl0b3IoYmxvY2tLZXk6IHN0cmluZyk6IElFZGl0b3Ige1xuICAgICAgICBjb25zdCBibG9ja0NvbnRhaW5lciA9IHRoaXMuZ2V0QmxvY2tDb250YWluZXJCeUJsb2NrS2V5KGJsb2NrS2V5KTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnTEFZT1VUX0JVSUxERVIuTk9fVElUTEUnKVxuICAgICAgICBsZXQgYmxvY2tUaXRsZSA9IGRlZmF1bHRUaXRsZTtcblxuICAgICAgICBpZiAoYmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgIGJsb2NrVGl0bGUgPSB0aGlzLmF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXA/LmdldChibG9ja0NvbnRhaW5lcj8uRHJhZ2dhYmxlSXRlbUtleSk/LnRpdGxlIHx8IGRlZmF1bHRUaXRsZTtcbiAgICAgICAgfVxuIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGJsb2NrS2V5LFxuICAgICAgICAgICAgdHlwZTogJ2Jsb2NrJyxcbiAgICAgICAgICAgIHRpdGxlOiBibG9ja1RpdGxlLFxuICAgICAgICAgICAgLy8gcmVtb3RlTW9kdWxlT3B0aW9uczogcmVtb3RlTG9hZGVyT3B0aW9ucyxcbiAgICAgICAgICAgIGhvc3RPYmplY3Q6IHt9IC8vIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaG9zdE9iamVjdCkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTY3JlZW5UeXBlKHNpemU6IFBlcFNjcmVlblNpemVUeXBlKTogRGF0YVZpZXdTY3JlZW5TaXplIHtcbiAgICAgICAgY29uc3Qgc2NyZWVuVHlwZTogRGF0YVZpZXdTY3JlZW5TaXplID1cbiAgICAgICAgICAgIHNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5NRCA/ICdMYW5kc2NhcGUnIDpcbiAgICAgICAgICAgIChzaXplID09PSBQZXBTY3JlZW5TaXplVHlwZS5NRCB8fCBzaXplID09PSBQZXBTY3JlZW5TaXplVHlwZS5TTSA/ICdUYWJsZXQnIDogJ1BoYWJsZXQnKTtcblxuICAgICAgICByZXR1cm4gc2NyZWVuVHlwZTtcbiAgICB9XG5cbiAgICBnZXRTZWN0aW9uQ29sdW1uS2V5KHNlY3Rpb25LZXk6IHN0cmluZyA9ICcnLCBpbmRleDogc3RyaW5nID0gJycpIHtcbiAgICAgICAgcmV0dXJuIGAke3NlY3Rpb25LZXl9X2NvbHVtbl8ke2luZGV4fWA7XG4gICAgfVxuXG4gICAgZ2V0SXNIaWRkZW4oaGlkZUluOiBEYXRhVmlld1NjcmVlblNpemVbXSB8IHVuZGVmaW5lZCwgY3VycmVudFNjcmVlblR5cGU6IERhdGFWaWV3U2NyZWVuU2l6ZSkge1xuICAgICAgICByZXR1cm4gKGhpZGVJbiAmJiBoaWRlSW4/Lmxlbmd0aCA+IDApID8gaGlkZUluLnNvbWUoaGkgPT4gaGkgPT09IGN1cnJlbnRTY3JlZW5UeXBlKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9FZGl0b3IoZWRpdG9yVHlwZTogTGF5b3V0RWRpdG9yVHlwZSwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIC8vIENhbm5vdCBuYXZpZ2F0ZSBpbnRvICdsYXlvdXQtYnVpbGRlcicgYmVjYXVzZSB0aGlzIGlzIGZpcnN0IGFuZCBjb25zdCBpbiB0aGUgZWRpdG9yc0JyZWFkQ3J1bWJzLlxuICAgICAgICBpZiAoZWRpdG9yVHlwZSAhPT0gJ2xheW91dC1idWlsZGVyJyAmJiBpZD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgd2hpY2ggZWRpdG9yIHdlIGhhdmUgbm93XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWRpdG9yID0gdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWJbdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWIubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIC8vIE9ubHkgaWYgaXQncyBhbm90aGVyIGVkaXRvci5cbiAgICAgICAgICAgIGlmKGN1cnJlbnRFZGl0b3IuaWQgIT09IGlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFZGl0b3IudHlwZSAhPT0gJ2xheW91dC1idWlsZGVyJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgcG9wIHRoZSBsYXN0IGFuZCBpbnNlcnQgdGhlIGN1cnJlbnQuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRvcnNCcmVhZENydW1iLnBvcCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBlZGl0b3IgPSB0aGlzLmdldEVkaXRvcihlZGl0b3JUeXBlLCBpZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRvcnNCcmVhZENydW1iLnB1c2goZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDdXJyZW50RWRpdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUJhY2tGcm9tRWRpdG9yKCkge1xuICAgICAgICAvLyBLZWVwIHRoZSBsYXlvdXQgYnVpbGRlciBlZGl0b3IuXG4gICAgICAgIGlmICh0aGlzLl9lZGl0b3JzQnJlYWRDcnVtYi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAvLyBNYXliZSB3ZSB3YW50IHRvIGNvbXBhcmUgdGhlIGxhc3QgZWRpdG9yIGZvciB2YWxpZGF0aW9uID9cbiAgICAgICAgICAgIGNvbnN0IGxhc3RFZGl0b3IgPSB0aGlzLl9lZGl0b3JzQnJlYWRDcnVtYi5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ3VycmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTGF5b3V0RnJvbUVkaXRvcihlZGl0b3JEYXRhOiBJTGF5b3V0RWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGlmIChsYXlvdXRWaWV3KSB7XG4gICAgICAgICAgICBsYXlvdXRWaWV3LkxheW91dC5NYXhXaWR0aCA9IGVkaXRvckRhdGEubWF4V2lkdGg7XG4gICAgICAgICAgICBsYXlvdXRWaWV3LkxheW91dC5Ib3Jpem9udGFsU3BhY2luZyA9IGVkaXRvckRhdGEuaG9yaXpvbnRhbFNwYWNpbmc7XG4gICAgICAgICAgICBsYXlvdXRWaWV3LkxheW91dC5WZXJ0aWNhbFNwYWNpbmcgPSBlZGl0b3JEYXRhLnZlcnRpY2FsU3BhY2luZztcbiAgICAgICAgICAgIGxheW91dFZpZXcuTGF5b3V0LlNlY3Rpb25zR2FwID0gZWRpdG9yRGF0YS5zZWN0aW9uc0dhcDtcbiAgICAgICAgICAgIGxheW91dFZpZXcuTGF5b3V0LkNvbHVtbnNHYXAgPSBlZGl0b3JEYXRhLmNvbHVtbnNHYXA7XG4gICAgICAgICAgICAvLyBsYXlvdXRWaWV3LmxheW91dC5Sb3VuZGVkQ29ybmVycyA9IGVkaXRvckRhdGEucm91bmRlZENvcm5lcnM7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U2VjdGlvbnNDb2x1bW5zR2FwKGxheW91dFZpZXcpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLm5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlldyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgdXBkYXRlU2VjdGlvbkZyb21FZGl0b3Ioc2VjdGlvbkRhdGE6IElMYXlvdXRTZWN0aW9uRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkluZGV4ID0gc2VjdGlvbnMuZmluZEluZGV4KHNlY3Rpb24gPT4gc2VjdGlvbi5LZXkgPT09IHNlY3Rpb25EYXRhLmlkKTtcblxuICAgICAgICAvLyBVcGRhdGUgc2VjdGlvbiBkZXRhaWxzLlxuICAgICAgICBpZiAoc2VjdGlvbkluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2Nrc0lkc1RvUmVtb3ZlID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uID0gc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcbiAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLk5hbWUgPSBzZWN0aW9uRGF0YS5zZWN0aW9uTmFtZTtcbiAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLlNwbGl0ID0gc2VjdGlvbkRhdGEuc3BsaXQ7XG4gICAgICAgICAgICBjdXJyZW50U2VjdGlvbi5IZWlnaHQgPSBzZWN0aW9uRGF0YS5oZWlnaHQ7XG4gICAgICAgICAgICBjdXJyZW50U2VjdGlvbi5Db2xsYXBzZU9uVGFibGV0ID0gc2VjdGlvbkRhdGEuY29sbGFwc2VPblRhYmxldDtcbiAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLkZpbGxIZWlnaHQgPSBzZWN0aW9uRGF0YS5maWxsSGVpZ2h0O1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIG5ldyBjb2x1bW5zIG51bWJlciBmcm9tIGN1cnJlbnRTZWN0aW9uLlNwbGl0LCBpZiBpdHMgdW5kZWZpbmVkIHB1dCBhIGRlZmF1bHQgMS5cbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnNMZW5ndGggPSBjdXJyZW50U2VjdGlvbi5TcGxpdD8uc3BsaXQoJyAnKS5sZW5ndGggfHwgMTtcbiAgICAgICAgICAgIGlmIChuZXdDb2x1bW5zTGVuZ3RoID4gY3VycmVudFNlY3Rpb24uQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3Q29sdW1uc0xlbmd0aCA+IGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMucHVzaCh7fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdDb2x1bW5zTGVuZ3RoIDwgY3VycmVudFNlY3Rpb24uQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3Q29sdW1uc0xlbmd0aCA8IGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVubSA9IGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGJsb2NrIGluIHRoaXMgY29sdW1uIGRlbGV0ZSBpdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVubSAmJiBjb2x1bm0uQmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc0lkc1RvUmVtb3ZlLnB1c2goY29sdW5tLkJsb2NrQ29udGFpbmVyLkJsb2NrS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIGVkaXRvciB0aXRsZVxuICAgICAgICAgICAgY29uc3QgY3VycmVudEVkaXRvciA9IHRoaXMuX2VkaXRvclN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RWRpdG9yICYmIGN1cnJlbnRFZGl0b3IudHlwZSA9PT0gJ3NlY3Rpb24nICYmIGN1cnJlbnRFZGl0b3IuaWQgPT09IGN1cnJlbnRTZWN0aW9uLktleSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFZGl0b3IudGl0bGUgPSB0aGlzLmdldFNlY3Rpb25FZGl0b3JUaXRsZShjdXJyZW50U2VjdGlvbiwgc2VjdGlvbkluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUVkaXRvckNoYW5nZShjdXJyZW50RWRpdG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIHNlY3Rpb25zIGNoYW5nZS5cbiAgICAgICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcyB0byByZW1vdmUsIG5vdGlmeSB0aGUgYmxvY2tzIHJlbW92ZWQuXG4gICAgICAgICAgICBpZiAoYmxvY2tzSWRzVG9SZW1vdmUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5QmxvY2tzUmVtb3ZlZChibG9ja3NJZHNUb1JlbW92ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRTZWN0aW9uKHNlY3Rpb246IElQZXBMYXlvdXRTZWN0aW9uIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBzZWN0aW9uXG4gICAgICAgIGlmICghc2VjdGlvbikge1xuICAgICAgICAgICAgc2VjdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBLZXk6IFBlcEd1aWQubmV3R3VpZCgpLFxuICAgICAgICAgICAgICAgIENvbHVtbnM6IFt7fV0sIC8vIEFkZCBlbXB0eSBzZWN0aW9uIGNvbHVtblxuICAgICAgICAgICAgICAgIEhpZGU6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgdGhlIG5ldyBzZWN0aW9uIHRvIGxheW91dCB2aWV3LlxuICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSBsYXlvdXRWaWV3Py5MYXlvdXQuU2VjdGlvbnMgfHwgW107XG4gICAgICAgIHNlY3Rpb25zLnB1c2goc2VjdGlvbik7XG4gICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcbiAgICB9XG5cbiAgICByZW1vdmVTZWN0aW9uKHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzZWN0aW9ucy5maW5kSW5kZXgoc2VjdGlvbiA9PiBzZWN0aW9uLktleSA9PT0gc2VjdGlvbklkKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgYmxvY2tzIGlkJ3MgdG8gcmVtb3ZlLlxuICAgICAgICAgICAgY29uc3QgYmxvY2tzSWRzVG9SZW1vdmU6IGFueSA9IHNlY3Rpb25zW2luZGV4XS5Db2x1bW5zLm1hcChjb2x1bW4gPT4gY29sdW1uPy5CbG9ja0NvbnRhaW5lcj8uQmxvY2tLZXkpO1xuXG4gICAgICAgICAgICAvLyBSZW1vdmUgc2VjdGlvbi5cbiAgICAgICAgICAgIHNlY3Rpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlldyk7XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBibG9ja3MgdG8gcmVtb3ZlLCBub3RpZnkgdGhlIGJsb2NrcyByZW1vdmVkLlxuICAgICAgICAgICAgaWYgKGJsb2Nrc0lkc1RvUmVtb3ZlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUJsb2Nrc1JlbW92ZWQoYmxvY2tzSWRzVG9SZW1vdmUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlU2VjdGlvbihzZWN0aW9uSWQ6IHN0cmluZywgaGlkZUluOiBEYXRhVmlld1NjcmVlblNpemVbXSkge1xuICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSBsYXlvdXRWaWV3Py5MYXlvdXQuU2VjdGlvbnMgfHwgW107XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2VjdGlvbnMuZmluZEluZGV4KHNlY3Rpb24gPT4gc2VjdGlvbi5LZXkgPT09IHNlY3Rpb25JZCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBzZWN0aW9uc1tpbmRleF0uSGlkZSA9IGhpZGVJbjtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VjdGlvbkRyb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xuICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSBsYXlvdXRWaWV3Py5MYXlvdXQuU2VjdGlvbnMgfHwgW107XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheShzZWN0aW9ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgdGhpcy5ub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXcpO1xuICAgIH1cblxuICAgIG9uU2VjdGlvbkRyYWdTdGFydChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgICAgIHRoaXMuY2hhbmdlQ3Vyc29yT25EcmFnU3RhcnQoKTtcbiAgICAgICAgdGhpcy5fZHJhZ2dpbmdTZWN0aW9uS2V5Lm5leHQoZXZlbnQuc291cmNlLmRhdGEpO1xuICAgIH1cblxuICAgIG9uU2VjdGlvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDdXJzb3JPbkRyYWdFbmQoKTtcbiAgICAgICAgdGhpcy5fZHJhZ2dpbmdTZWN0aW9uS2V5Lm5leHQoJycpO1xuICAgIH1cblxuICAgIHJlbW92ZUJsb2NrRnJvbVNlY3Rpb24oYmxvY2tJZDogc3RyaW5nKSB7XG4gICAgICAgIGxldCBibG9ja1JlbW92ZWQgPSBmYWxzZTtcblxuICAgICAgICAvLyBSZW1vdmUgdGhlIGJsb2NrIGZyb20gc2VjdGlvbiBjb2x1bW4uXG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgXG4gICAgICAgIGZvciAobGV0IHNlY3Rpb25JbmRleCA9IDA7IHNlY3Rpb25JbmRleCA8IHNlY3Rpb25zLmxlbmd0aDsgc2VjdGlvbkluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSBzZWN0aW9uc1tzZWN0aW9uSW5kZXhdO1xuXG4gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGJsb2NrIGNvbnRhaW5lci5cbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gc2VjdGlvbi5Db2x1bW5zLmZpbmRJbmRleChjb2x1bW4gPT4gY29sdW1uLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSA9PT0gYmxvY2tJZCk7XG4gICAgICAgICAgICBpZiAoY29sdW1uSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzZWN0aW9uLkNvbHVtbnNbY29sdW1uSW5kZXhdLkJsb2NrQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcbiAgICAgICAgICAgICAgICBibG9ja1JlbW92ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGUgYmxvY2sgd2FzIHJlbW92ZWQsIG5vdGlmeSB0aGUgYmxvY2sgcmVtb3ZlZC5cbiAgICAgICAgaWYgKGJsb2NrUmVtb3ZlZCkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlCbG9ja3NSZW1vdmVkKFtibG9ja0lkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlQmxvY2soc2VjdGlvbklkOiBzdHJpbmcsIGJsb2NrSWQ6IHN0cmluZywgaGlkZUluOiBEYXRhVmlld1NjcmVlblNpemVbXSkge1xuICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSBsYXlvdXRWaWV3Py5MYXlvdXQuU2VjdGlvbnMgfHwgW107XG4gICAgICAgIFxuICAgICAgICBjb25zdCBpbmRleCA9IHNlY3Rpb25zLmZpbmRJbmRleChzZWN0aW9uID0+IHNlY3Rpb24uS2V5ID09PSBzZWN0aW9uSWQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBzZWN0aW9uc1tpbmRleF0uQ29sdW1ucy5maW5kSW5kZXgoY29sdW1uID0+IGNvbHVtbi5CbG9ja0NvbnRhaW5lcj8uQmxvY2tLZXkgPT09IGJsb2NrSWQpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbkluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBibG9ja0NvbnRhaW5lciA9IHNlY3Rpb25zW2luZGV4XS5Db2x1bW5zW2NvbHVtbkluZGV4XS5CbG9ja0NvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICBpZiAoYmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tDb250YWluZXIuSGlkZSA9IGhpZGVJbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQmxvY2tEcm9wcGVkKGV2ZW50OiBDZGtEcmFnRHJvcDxJUGVwTGF5b3V0U2VjdGlvbkNvbHVtbiwgYW55LCBhbnk+LCBzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQgPT09IFBlcExheW91dEJ1aWxkZXJTZXJ2aWNlLkFWQUlMQUJMRV9CTE9DS1NfQ09OVEFJTkVSX0lEKSB7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIGJsb2NrIHJlbGF0aW9uIChwcmV2aW91c0NvbnRhaW5lci5kYXRhIGlzIElQZXBEcmFnZ2FibGVJdGVtIGFuZCBpbnNpZGUgd2UgaGF2ZSBBdmFpbGFibGVCbG9jayBvYmplY3QpLlxuICAgICAgICAgICAgY29uc3QgZHJhZ2dhYmxlSXRlbTogSVBlcERyYWdnYWJsZUl0ZW0gPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhW2V2ZW50LnByZXZpb3VzSW5kZXhdIGFzIElQZXBEcmFnZ2FibGVJdGVtO1xuXG4gICAgICAgICAgICBpZiAoZHJhZ2dhYmxlSXRlbSkge1xuICAgICAgICAgICAgICAgIC8vIGxvY2sgdGhlIHNjcmVlbiB1bnRpbGwgdGhlIGVkaXRvciB3aWxsIGJlIGxvYWRlZC5cbiAgICAgICAgICAgICAgICAvLyB0aGlzLl9sb2NrU2NyZWVuU3ViamVjdC5uZXh0KHRydWUpO1xuXG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBjb2x1bW4uXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudENvbHVtbiA9IHRoaXMuZ2V0U2VjdGlvbkNvbHVtbkJ5SWRGb3JFZGl0b3IoZXZlbnQuY29udGFpbmVyLmlkKTtcblxuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgYmxvY2sga2V5IGluIHRoZSBzZWN0aW9uIGJsb2NrIG9ubHkgaWYgdGhlcmUgaXMgYSBibGFuayBjb2x1bW4uXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gJiYgIWN1cnJlbnRDb2x1bW4uQmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBibG9jayB1dWlkLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0tleSA9IFBlcEd1aWQubmV3R3VpZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW4uQmxvY2tDb250YWluZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBCbG9ja0tleTogYmxvY2tLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBEcmFnZ2FibGVJdGVtS2V5OiBkcmFnZ2FibGVJdGVtLmRhdGEua2V5LFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEhlcmUgd2UgdXBkYXRlIHRoZSBsYXlvdXQgdmlldyBjYXVzZSB0aGUgbGF5b3V0IGlzIHVwZGF0ZWQuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSYWlzZSBibG9jayBhZGRlZCBldmVudC5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZGRlZEV2ZW50RGF0YTogSVBlcExheW91dEJsb2NrQWRkZWRFdmVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrS2V5OiBibG9ja0tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIERyYWdnYWJsZUl0ZW06IGRyYWdnYWJsZUl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlCbG9ja0FkZGVkKGJsb2NrQWRkZWRFdmVudERhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJkcmFnZ2FibGVJdGVtIGlzIG5vdCBhIElQZXBEcmFnZ2FibGVJdGVtIHR5cGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgYmxvY2sgbW92ZWQgYmV0d2VlbiBjb2x1bW5zIGluIHRoZSBzYW1lIHNlY3Rpb24gb3IgYmV0d2VlbiBkaWZmZXJlbnQgc2VjdGlvbnMgYnV0IG5vdCBpbiB0aGUgc2FtZSBjb2x1bW4uXG4gICAgICAgICAgICBpZiAoZXZlbnQuY29udGFpbmVyLmlkICE9PSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5pZCkge1xuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY29sdW1uLlxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb2x1bW4gPSB0aGlzLmdldFNlY3Rpb25Db2x1bW5CeUlkRm9yRWRpdG9yKGV2ZW50LmNvbnRhaW5lci5pZCk7XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBwcmV2aW91cyBjb2x1bW4uXG4gICAgICAgICAgICAgICAgY29uc3QgcHJldml1b3NDb2x1bW4gPSB0aGlzLmdldFNlY3Rpb25Db2x1bW5CeUlkRm9yRWRpdG9yKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkKTtcblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29sdW1uICYmIHByZXZpdW9zQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW4uQmxvY2tDb250YWluZXIgPSBwcmV2aXVvc0NvbHVtbi5CbG9ja0NvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHByZXZpdW9zQ29sdW1uLkJsb2NrQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlldyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbG9ja0RyYWdTdGFydChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XG4gICAgICAgIHRoaXMuY2hhbmdlQ3Vyc29yT25EcmFnU3RhcnQoKTtcbiAgICAgICAgLy8gVGFrZSB0aGUgYmxvY2sga2V5IGlmIGV4aXN0LCBlbHNlIHRha2UgdGhlIGF2YWlsYWJsZSBibG9jayBrZXkgKHJlbGF0aW9uIGtleSkuXG4gICAgICAgIGNvbnN0IGJsb2NrS2V5ID0gZXZlbnQuc291cmNlLmRhdGE/LkJsb2NrS2V5IHx8IGV2ZW50LnNvdXJjZS5kYXRhPy5LZXk7XG4gICAgICAgIHRoaXMuX2RyYWdnaW5nQmxvY2tLZXkubmV4dChibG9ja0tleSk7XG4gICAgfVxuXG4gICAgb25CbG9ja0RyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDdXJzb3JPbkRyYWdFbmQoKTtcbiAgICAgICAgdGhpcy5fZHJhZ2dpbmdCbG9ja0tleS5uZXh0KCcnKTtcbiAgICB9XG4gICAgXG4gICAgZG9lc0NvbHVtbkNvbnRhaW5CbG9jayhzZWN0aW9uSWQ6IHN0cmluZywgY29sdW1uSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcmVzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9uID0gbGF5b3V0Vmlldz8uTGF5b3V0LlNlY3Rpb25zLmZpbmQoc2VjdGlvbiA9PiBzZWN0aW9uLktleSA9PT0gc2VjdGlvbklkKTtcblxuICAgICAgICBpZiAoc2VjdGlvbiAmJiBjb2x1bW5JbmRleCA+PSAwICYmIHNlY3Rpb24uQ29sdW1ucy5sZW5ndGggPiBjb2x1bW5JbmRleCkge1xuICAgICAgICAgICAgcmVzID0gISFzZWN0aW9uLkNvbHVtbnNbY29sdW1uSW5kZXhdLkJsb2NrQ29udGFpbmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBzZXRTY3JlZW5XaWR0aChzY3JlZW5UeXBlOiBEYXRhVmlld1NjcmVlblNpemUpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldENzc1NjcmVlbldpZGgoc2NyZWVuVHlwZSlcblxuICAgICAgICBsZXQgd2lkdGggPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgMCk7XG4gICAgICAgIGlmICh3aWR0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fc2NyZWVuV2lkdGhTdWJqZWN0Lm5leHQoJzEwMCUnKTtcbiAgICAgICAgICAgIHRoaXMuX3NjcmVlblNpemVTdWJqZWN0Lm5leHQoUGVwU2NyZWVuU2l6ZVR5cGUuWEwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2NyZWVuV2lkdGhTdWJqZWN0Lm5leHQoYCR7d2lkdGh9cHhgKTtcblxuICAgICAgICAgICAgLy8gQ2hhbmdlIHRoZSBzaXplIGFjY29yZGluZyB0aGUgd2lkdGguXG4gICAgICAgICAgICBpZiAod2lkdGggPj0gMTkyMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NjcmVlblNpemVTdWJqZWN0Lm5leHQoUGVwU2NyZWVuU2l6ZVR5cGUuWEwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aWR0aCA+PSAxMjgwICYmIHdpZHRoIDwgMTkyMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NjcmVlblNpemVTdWJqZWN0Lm5leHQoUGVwU2NyZWVuU2l6ZVR5cGUuTEcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aWR0aCA+PSA5NjAgJiYgd2lkdGggPCAxMjgwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZVN1YmplY3QubmV4dChQZXBTY3JlZW5TaXplVHlwZS5NRCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdpZHRoID49IDYwMCAmJiB3aWR0aCA8IDk2MCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NjcmVlblNpemVTdWJqZWN0Lm5leHQoUGVwU2NyZWVuU2l6ZVR5cGUuU00pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aWR0aCA8IDYwMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NjcmVlblNpemVTdWJqZWN0Lm5leHQoUGVwU2NyZWVuU2l6ZVR5cGUuWFMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hvd1NrZWxldG9uKHNob3c6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvd1NrZWxldG9uU3ViamVjdC5uZXh0KHNob3cpO1xuICAgIH1cbiAgICBcbiAgICBsb2FkTGF5b3V0QnVpbGRlcihsYXlvdXRWaWV3OiBJUGVwTGF5b3V0Vmlldyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lZGl0TW9kZSkge1xuICAgICAgICAgICAgLy8gTG9hZCB0aGUgbGF5b3V0IGVkaXRvci5cbiAgICAgICAgICAgIHRoaXMubG9hZERlZmF1bHRFZGl0b3IobGF5b3V0Vmlldyk7XG5cbiAgICAgICAgICAgIC8vIFNldCB0aGUgY29sdW1ucyBnYXAgb2YgdGhlIHNlY3Rpb25zLlxuICAgICAgICAgICAgdGhpcy5zZXRTZWN0aW9uc0NvbHVtbnNHYXAobGF5b3V0Vmlldyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMb2FkIG9ubHkgdGhlIGxheW91dCB2aWV3LlxuICAgICAgICB0aGlzLm5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlldyk7XG4gICAgfVxufVxuIl19
|
|
625
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2xheW91dC1idWlsZGVyL2xheW91dC1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQXdELGVBQWUsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVsSSxPQUFPLEVBQW1CLE9BQU8sRUFBa0IsaUJBQWlCLEVBQTBDLE1BQU0seUJBQXlCLENBQUM7QUFJOUksT0FBTyxFQUFjLGVBQWUsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQWdCLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNNUUsTUFBTSxPQUFPLHVCQUF1QjtJQW1IaEMsWUFDYyxTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWhIakMseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBTzFCLHVCQUFrQixHQUFHLEtBQUssRUFBVyxDQUFDO1FBRXRDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFTM0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFLeEMscURBQXFEO1FBQzNDLHVCQUFrQixHQUF1QyxJQUFJLGVBQWUsQ0FBb0IsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFLaEksK0VBQStFO1FBQ3ZFLHdCQUFtQixHQUE0QixJQUFJLGVBQWUsQ0FBUyxNQUFNLENBQUMsQ0FBQztRQUszRix5RUFBeUU7UUFDL0QsbUJBQWMsR0FBb0MsSUFBSSxlQUFlLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBS3RHLGtEQUFrRDtRQUMxQyxvQ0FBK0IsR0FBMkIsSUFBSSxlQUFlLENBQVEsRUFB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RUFBRSxDQUFDLENBQUM7YUFDdEQ7aUJBQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3REO1NBQ0o7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWE7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsVUFBMEI7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVuQyx1Q0FBdUM7WUFDdkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDOztBQS9zQmUscURBQTZCLEdBQUcsaUJBQWtCLENBQUE7QUFDbEQsc0NBQWMsR0FBRyxNQUFPLENBQUE7b0hBRi9CLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRnBCLE1BQU07MkZBRVQsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgQ2RrRHJhZ0VuZCwgQ2RrRHJhZ1N0YXJ0LCBjb3B5QXJyYXlJdGVtLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgUGVwQWRkb25TZXJ2aWNlLCBQZXBHdWlkLCBQZXBIdHRwU2VydmljZSwgUGVwU2NyZWVuU2l6ZVR5cGUsIFBlcFNlc3Npb25TZXJ2aWNlLCBQZXBVdGlsaXRpZXNTZXJ2aWNlIH0gZnJvbSBcIkBwZXBwZXJpLWFkZG9ucy9uZ3gtbGliXCI7XG5pbXBvcnQgeyBJUGVwRHJhZ2dhYmxlSXRlbSB9IGZyb20gXCJAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kcmFnZ2FibGUtaXRlbXNcIjtcbmltcG9ydCB7IERhdGFWaWV3U2NyZWVuU2l6ZSwgU2NyZWVuU2l6ZURhdGFDb25maWd1cmF0aW9uIH0gZnJvbSBcIkBwZXBwZXJpLWFkZG9ucy9wYXBpLXNka1wiO1xuaW1wb3J0IHsgUGVwU25hY2tCYXJEYXRhLCBQZXBTbmFja0JhclNlcnZpY2UgfSBmcm9tIFwiQHBlcHBlcmktYWRkb25zL25neC1saWIvc25hY2stYmFyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExheW91dEVkaXRvclR5cGUsIElFZGl0b3IsIElQZXBMYXlvdXRCbG9ja0FkZGVkRXZlbnQsIElMYXlvdXRFZGl0b3IsIElQZXBMYXlvdXRTZWN0aW9uLCBJUGVwTGF5b3V0U2VjdGlvbkNvbHVtbiwgSVBlcExheW91dFZpZXcsIElMYXlvdXRTZWN0aW9uRWRpdG9yLCBQZXBMYXlvdXRTaXplVHlwZSwgSVBlcExheW91dEJsb2NrQ29udGFpbmVyIH0gZnJvbSBcIi4vbGF5b3V0LWJ1aWxkZXIubW9kZWxcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGVwTGF5b3V0QnVpbGRlclNlcnZpY2Uge1xuICAgIHN0YXRpYyByZWFkb25seSBBVkFJTEFCTEVfQkxPQ0tTX0NPTlRBSU5FUl9JRCA9ICdhdmFpbGFibGVCbG9ja3MnO1xuICAgIHN0YXRpYyByZWFkb25seSBNQUlOX0VESVRPUl9JRCA9ICdtYWluJztcblxuICAgIHByaXZhdGUgX2RlZmF1bHRTZWN0aW9uVGl0bGUgPSAnJztcbiAgICBzZXQgZGVmYXVsdFNlY3Rpb25UaXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWZhdWx0U2VjdGlvblRpdGxlID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5fZGVmYXVsdFNlY3Rpb25UaXRsZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZWRpdG9yc0JyZWFkQ3J1bWIgPSBBcnJheTxJRWRpdG9yPigpO1xuXG4gICAgcHJpdmF0ZSBfZWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBnZXQgZWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0TW9kZTtcbiAgICB9XG4gICAgc2V0RWRpdE1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZWRpdE1vZGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRFZGl0YWJsZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZWRpdGFibGVTdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGdldCBlZGl0YWJsZVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdGFibGVTdGF0ZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHN1YmplY3QgaXMgZm9yIHRoZSBzY3JlZW4gc2l6ZSBjaGFuZ2UgZXZlbnRzLlxuICAgIHByb3RlY3RlZCBfc2NyZWVuU2l6ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxQZXBTY3JlZW5TaXplVHlwZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBlcFNjcmVlblNpemVUeXBlPihQZXBTY3JlZW5TaXplVHlwZS5YTCk7XG4gICAgZ2V0IHNjcmVlblNpemVDaGFuZ2UkKCk6IE9ic2VydmFibGU8UGVwU2NyZWVuU2l6ZVR5cGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmVlblNpemVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzdWJqZWN0IGlzIGZvciBkZW1vc3RyYXRlIHRoZSBjb250YWluZXIgc2l6ZSAoVXNhZ2Ugb25seSBpbiBlZGl0IG1vZGUpLlxuICAgIHByaXZhdGUgX3NjcmVlbldpZHRoU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJzEwMCUnKTtcbiAgICBnZXQgc2NyZWVuV2lkdGhDaGFuZ2UkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JlZW5XaWR0aFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHN1YmplY3QgaXMgZm9yIGxvYWQgdGhlIGN1cnJlbnQgZWRpdG9yIChVc2FnZSBvbmx5IGluIGVkaXQgbW9kZSkuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8SUVkaXRvciB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRWRpdG9yIHwgbnVsbD4obnVsbCk7XG4gICAgZ2V0IGVkaXRvckNoYW5nZSQoKTogT2JzZXJ2YWJsZTxJRWRpdG9yIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgdGhlIHNlY3Rpb25zIGNvbHVtbnMgZHJvcCBsaXN0IHN1YmplY3QuXG4gICAgcHJpdmF0ZSBfc2VjdGlvbnNDb2x1bW5zRHJvcExpc3RTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIGdldCBzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdENoYW5nZSQoKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnNDb2x1bW5zRHJvcExpc3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgdGhlIHNlY3Rpb25zIHN1YmplY3QgKGEgcGFyZSBmcm9tIHRoZSBsYXlvdXQgdmlldyBvYmplY3QpXG4gICAgcHJpdmF0ZSBfc2VjdGlvbnNWaWV3U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PElQZXBMYXlvdXRTZWN0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUGVwTGF5b3V0U2VjdGlvbltdPihbXSk7XG4gICAgZ2V0IHNlY3Rpb25zQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPElQZXBMYXlvdXRTZWN0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zVmlld1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIC8vIChwcmV2U2VjdGlvbnMsIG5leHRTZWN0aW9ucykgPT4gSlNPTi5zdHJpbmdpZnkocHJldlNlY3Rpb25zKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV4dFNlY3Rpb25zKSkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgc3ViamVjdCBpcyBmb3IgbGF5b3V0IHZpZXcgY2hhbmdlLlxuICAgIHByaXZhdGUgX2xheW91dFZpZXdTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8SVBlcExheW91dFZpZXcgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVBlcExheW91dFZpZXcgfCBudWxsPihudWxsKTtcbiAgICBnZXQgbGF5b3V0Vmlld0NoYW5nZSQoKTogT2JzZXJ2YWJsZTxJUGVwTGF5b3V0VmlldyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xheW91dFZpZXdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKGxheW91dCA9PiAhIWxheW91dCkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgc3ViamVjdCBpcyBmb3IgZWRpdCBtb2RlIHdoZW4gYmxvY2sgaXMgZHJhZ2dpbmcgbm93IG9yIG5vdC5cbiAgICBwcml2YXRlIF9kcmFnZ2luZ0Jsb2NrS2V5OiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICAgIGdldCBkcmFnZ2luZ0Jsb2NrS2V5KCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kcmFnZ2luZ0Jsb2NrS2V5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzdWJqZWN0IGlzIGZvciBlZGl0IG1vZGUgd2hlbiBzZWN0aW9uIGlzIGRyYWdnaW5nIG5vdyBvciBub3QuXG4gICAgcHJpdmF0ZSBfZHJhZ2dpbmdTZWN0aW9uS2V5OiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICAgIGdldCBkcmFnZ2luZ1NlY3Rpb25LZXkoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RyYWdnaW5nU2VjdGlvbktleS5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgc3ViamVjdCBpcyBmb3IgbG9jayBvciB1bmxvY2sgdGhlIHNjcmVlbiAoVXNhZ2Ugb25seSBpbiBlZGl0IG1vZGUpLlxuICAgIHByaXZhdGUgX2xvY2tTY3JlZW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBnZXQgbG9ja1NjcmVlbkNoYW5nZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NrU2NyZWVuU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZm9yIGNvbnRyb2wgdGhlIHByZXZpZXcgbW9kZSAoZm9yIGxvYWQgdGhlIGJsb2NrcyB3aXRoIHRoZSBDUEkgZXZlbnRzKSBcbiAgICBwcml2YXRlIF9wcmV2aWV3TW9kZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIGdldCBwcmV2aWV3TW9kZUNoYW5nZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmV2aWV3TW9kZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGZvciBlZGl0b3IgbW9kZSBmb3IgYmxvY2sgYWRkZWQuXG4gICAgcHJpdmF0ZSBfYmxvY2tBZGRlZEV2ZW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVBlcExheW91dEJsb2NrQWRkZWRFdmVudCB8IG51bGw+KG51bGwpO1xuICAgIGdldCBibG9ja0FkZGVkRXZlbnRTdWJqZWN0JCgpOiBPYnNlcnZhYmxlPElQZXBMYXlvdXRCbG9ja0FkZGVkRXZlbnQgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ibG9ja0FkZGVkRXZlbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICAvLyBUaGlzIGlzIGZvciBlZGl0b3IgbW9kZSBmb3IgYmxvY2tzIHJlbW92ZWQuXG4gICAgcHJpdmF0ZSBfYmxvY2tzUmVtb3ZlZEV2ZW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcbiAgICBnZXQgYmxvY2tzUmVtb3ZlZEV2ZW50U3ViamVjdCQoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYmxvY2tzUmVtb3ZlZEV2ZW50U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHN1YmplY3QgaXMgZm9yIHNrZWxldG9uLlxuICAgIHByaXZhdGUgX3Nob3dTa2VsZXRvblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgZ2V0IHNob3dTa2VsZXRvbkNoYW5nZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93U2tlbGV0b25TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuICAgIFxuICAgIC8vIFRoaXMgc3ViamVjdHMgaXMgZm9yIGxvYWQgdGhlIGF2YWlsYWJsZSBibG9ja3MgdG8gZHJhZyBpbnRvIG1hcCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICAgIHByaXZhdGUgX2F2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXAgPSBuZXcgTWFwPHN0cmluZywgSVBlcERyYWdnYWJsZUl0ZW0+KCk7XG4gICAgZ2V0IGF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXAoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBJUGVwRHJhZ2dhYmxlSXRlbT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcDtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlYWRvbmx5TWFwPHN0cmluZywgSVBlcERyYWdnYWJsZUl0ZW0+Pih0aGlzLmF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXApO1xuICAgIGdldCBhdmFpbGFibGVCbG9ja3NGb3JEcmFnTWFwQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPFJlYWRvbmx5TWFwPHN0cmluZywgSVBlcERyYWdnYWJsZUl0ZW0+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdmFpbGFibGVCbG9ja3NGb3JEcmFnTWFwU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgLy9cbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBzZXRFZGl0YWJsZVN0YXRlKCkge1xuICAgICAgICB0aGlzLl9lZGl0YWJsZVN0YXRlID0gdGhpcy5lZGl0TW9kZSAmJiAhdGhpcy5fcHJldmlld01vZGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXdUb1VwZGF0ZTogSVBlcExheW91dFZpZXcgfCBudWxsKSB7XG4gICAgICAgIGlmIChsYXlvdXRWaWV3VG9VcGRhdGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRNb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRFZGl0b3JQcm9wZXJ0aWVzKGxheW91dFZpZXdUb1VwZGF0ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgbGF5b3V0IGZvciB0aGUgdmlldy5cbiAgICAgICAgICAgIHRoaXMuX2xheW91dFZpZXdTdWJqZWN0Lm5leHQobGF5b3V0Vmlld1RvVXBkYXRlKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzZWN0aW9ucyBmb3IgdGhlIHZpZXcuXG4gICAgICAgICAgICB0aGlzLl9zZWN0aW9uc1ZpZXdTdWJqZWN0Lm5leHQobGF5b3V0Vmlld1RvVXBkYXRlPy5MYXlvdXQuU2VjdGlvbnMgfHwgW10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlCbG9ja0FkZGVkKGJsb2NrQWRkZWRFdmVudERhdGE6IElQZXBMYXlvdXRCbG9ja0FkZGVkRXZlbnQpIHtcbiAgICAgICAgLy8gTm90aWZ5IHRoYXQgdGhlIGJsb2NrIGlzIGFkZGVkICh0byByYWlzZSB0aGUgZXZlbnQgZm9yIHRoZSBjbGllbnQpLlxuICAgICAgICB0aGlzLl9ibG9ja0FkZGVkRXZlbnRTdWJqZWN0Lm5leHQoYmxvY2tBZGRlZEV2ZW50RGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlCbG9ja3NSZW1vdmVkKGtleXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChrZXlzKSB7XG4gICAgICAgICAgICAvLyBOb3RpZnkgdGhhdCB0aGUgYmxvY2tzIGFyZSByZW1vdmVkICh0byByYWlzZSB0aGUgZXZlbnQgZm9yIHRoZSBjbGllbnQpLlxuICAgICAgICAgICAgdGhpcy5fYmxvY2tzUmVtb3ZlZEV2ZW50U3ViamVjdC5uZXh0KGtleXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlFZGl0b3JDaGFuZ2UoZWRpdG9yOiBJRWRpdG9yIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9lZGl0b3JTdWJqZWN0Lm5leHQoZWRpdG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXBDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuX2F2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXBTdWJqZWN0Lm5leHQodGhpcy5hdmFpbGFibGVCbG9ja3NGb3JEcmFnTWFwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxheW91dEVkaXRvclByb3BlcnRpZXMobGF5b3V0VmlldzogSVBlcExheW91dFZpZXcpIHtcbiAgICAgICAgaWYgKHRoaXMuX2VkaXRvcnNCcmVhZENydW1iWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXRFZGl0b3I6IElMYXlvdXRFZGl0b3IgPSB7XG4gICAgICAgICAgICAgICAgLy8gcGFnZU5hbWU6IHBhZ2U/Lk5hbWUsXG4gICAgICAgICAgICAgICAgLy8gcGFnZURlc2NyaXB0aW9uOiBwYWdlPy5EZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAvLyBwYXJhbWV0ZXJzOiBwYWdlLlBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgLy8gb25Mb2FkRmxvdzogcGFnZS5PbkxvYWRGbG93LFxuICAgICAgICAgICAgICAgIC8vIG9uQ2hhbmdlRmxvdzogcGFnZS5PbkNoYW5nZUZsb3csXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IGxheW91dFZpZXc/LkxheW91dC5NYXhXaWR0aCB8fCAwLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsU3BhY2luZzogbGF5b3V0Vmlldz8uTGF5b3V0LlZlcnRpY2FsU3BhY2luZyxcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsU3BhY2luZzogbGF5b3V0Vmlldz8uTGF5b3V0Lkhvcml6b250YWxTcGFjaW5nLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25zR2FwOiBsYXlvdXRWaWV3Py5MYXlvdXQuU2VjdGlvbnNHYXAsXG4gICAgICAgICAgICAgICAgY29sdW1uc0dhcDogbGF5b3V0Vmlldz8uTGF5b3V0LkNvbHVtbnNHYXAsXG4gICAgICAgICAgICAgICAgLy8gcm91bmRlZENvcm5lcnM6IGxheW91dFZpZXc/LmxheW91dC5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuX2VkaXRvcnNCcmVhZENydW1iWzBdLmhvc3RPYmplY3QgPSBsYXlvdXRFZGl0b3I7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWREZWZhdWx0RWRpdG9yKGxheW91dFZpZXc6IElQZXBMYXlvdXRWaWV3KSB7XG4gICAgICAgIHRoaXMuX2VkaXRvcnNCcmVhZENydW1iID0gbmV3IEFycmF5PElFZGl0b3I+KCk7XG5cbiAgICAgICAgaWYgKGxheW91dFZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuX2VkaXRvcnNCcmVhZENydW1iLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBQZXBMYXlvdXRCdWlsZGVyU2VydmljZS5NQUlOX0VESVRPUl9JRCxcbiAgICAgICAgICAgICAgICB0eXBlIDogJ2xheW91dC1idWlsZGVyJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogbGF5b3V0Vmlldy5UaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdMQVlPVVRfQlVJTERFUi5ERUZBVUxUX1RJVExFJyksXG4gICAgICAgICAgICAgICAgLy8gaG9zdE9iamVjdDoge30gLy8gVXBkYXRlcyBpbiB1cGRhdGVMYXlvdXRFZGl0b3JQcm9wZXJ0aWVzIGZ1bmN0aW9uIGFib3ZlLlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0RWRpdG9yUHJvcGVydGllcyhsYXlvdXRWaWV3KTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RWRpdG9yQ2hhbmdlKHRoaXMuX2VkaXRvcnNCcmVhZENydW1iWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RWRpdG9yQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VDdXJyZW50RWRpdG9yKCkge1xuICAgICAgICBpZiAodGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlFZGl0b3JDaGFuZ2UodGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWJbdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWIubGVuZ3RoIC0gMV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFZGl0b3IoZWRpdG9yVHlwZTogTGF5b3V0RWRpdG9yVHlwZSwgaWQ6IHN0cmluZyk6IElFZGl0b3IgfCBudWxsIHtcbiAgICAgICAgLy8gQnVpbGQgZWRpdG9yIG9iamVjdC5cbiAgICAgICAgbGV0IGVkaXRvcjogSUVkaXRvciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmIChlZGl0b3JUeXBlID09PSAnc2VjdGlvbicpIHtcbiAgICAgICAgICAgIGVkaXRvciA9IHRoaXMuZ2V0U2VjdGlvbkVkaXRvcihpZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWRpdG9yVHlwZSA9PT0gJ2Jsb2NrJykge1xuICAgICAgICAgICAgZWRpdG9yID0gdGhpcy5nZXRCbG9ja0VkaXRvcihpZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VjdGlvbkVkaXRvclRpdGxlKHNlY3Rpb246IElQZXBMYXlvdXRTZWN0aW9uLCBzZWN0aW9uSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzZWN0aW9uLk5hbWUgfHwgYCR7dGhpcy5fZGVmYXVsdFNlY3Rpb25UaXRsZX0gJHtzZWN0aW9uSW5kZXggKyAxfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWN0aW9uRWRpdG9yKHNlY3Rpb25JZDogc3RyaW5nKTogSUVkaXRvciB8IG51bGwge1xuICAgICAgICBjb25zdCBsYXlvdXRWaWV3ID0gdGhpcy5fbGF5b3V0Vmlld1N1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSBsYXlvdXRWaWV3Py5MYXlvdXQuU2VjdGlvbnMgfHwgW107XG4gICAgICAgIGNvbnN0IHNlY3Rpb25JbmRleCA9IHNlY3Rpb25zLmZpbmRJbmRleChzZWN0aW9uID0+IHNlY3Rpb24uS2V5ID09PSBzZWN0aW9uSWQpO1xuXG4gICAgICAgIGlmIChzZWN0aW9uSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgbGV0IHNlY3Rpb24gPSBzZWN0aW9uc1tzZWN0aW9uSW5kZXhdO1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbkVkaXRvcjogSUxheW91dFNlY3Rpb25FZGl0b3IgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uS2V5LFxuICAgICAgICAgICAgICAgIHNlY3Rpb25OYW1lOiBzZWN0aW9uLk5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgc3BsaXQ6IHNlY3Rpb24uU3BsaXQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGhlaWdodDogc2VjdGlvbi5IZWlnaHQgfHwgMCxcbiAgICAgICAgICAgICAgICBjb2xsYXBzZU9uVGFibGV0OiBzZWN0aW9uLkNvbGxhcHNlT25UYWJsZXQgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgZmlsbEhlaWdodDogc2VjdGlvbi5GaWxsSGVpZ2h0ID8/IGZhbHNlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb25JZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VjdGlvbicsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuZ2V0U2VjdGlvbkVkaXRvclRpdGxlKHNlY3Rpb24sIHNlY3Rpb25JbmRleCksXG4gICAgICAgICAgICAgICAgaG9zdE9iamVjdDogc2VjdGlvbkVkaXRvclxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlY3Rpb25Db2x1bW5CeUlkRm9yRWRpdG9yKHNlY3Rpb25Db2x1bW5JZDogc3RyaW5nKTogSVBlcExheW91dFNlY3Rpb25Db2x1bW4gfCBudWxsIHtcbiAgICAgICAgbGV0IGN1cnJlbnRDb2x1bW4gPSBudWxsO1xuXG4gICAgICAgIC8vIEdldCB0aGUgc2VjdGlvbiBhbmQgY29sdW1uIGFycmF5IGJ5IHRoZSBwYXR0ZXJuIG9mIHRoZSBzZWN0aW9uIGNvbHVtbiBrZXkuXG4gICAgICAgIGNvbnN0IHNlY3Rpb25Db2x1bW5QYXR0ZXJuU2VwYXJhdG9yID0gdGhpcy5nZXRTZWN0aW9uQ29sdW1uS2V5KCk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25Db2x1bW5BcnIgPSBzZWN0aW9uQ29sdW1uSWQuc3BsaXQoc2VjdGlvbkNvbHVtblBhdHRlcm5TZXBhcmF0b3IpO1xuXG4gICAgICAgIGlmIChzZWN0aW9uQ29sdW1uQXJyLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0VmlldyA9IHRoaXMuX2xheW91dFZpZXdTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gR2V0IHRoZSBzZWN0aW9uIGlkIHRvIGdldCB0aGUgc2VjdGlvbiBpbmRleC5cbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25JZCA9IHNlY3Rpb25Db2x1bW5BcnJbMF07XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uSW5kZXggPSBzZWN0aW9ucy5maW5kSW5kZXgoc2VjdGlvbiA9PiBzZWN0aW9uLktleSA9PT0gc2VjdGlvbklkKTtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgY29sdW1uIGluZGV4LlxuICAgICAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eShzZWN0aW9uQ29sdW1uQXJyWzFdLCAtMSk7XG4gICAgICAgICAgICBpZiAoc2VjdGlvbkluZGV4ID49IDAgJiYgY29sdW1uSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW4gPSBzZWN0aW9uc1tzZWN0aW9uSW5kZXhdLkNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2x1bW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTZWN0aW9uc0NvbHVtbnNHYXAobGF5b3V0VmlldzogSVBlcExheW91dFZpZXcpIHtcbiAgICAgICAgaWYgKGxheW91dFZpZXc/LkxheW91dD8uU2VjdGlvbnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsYXlvdXRWaWV3LkxheW91dC5TZWN0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gbGF5b3V0Vmlldy5MYXlvdXQuU2VjdGlvbnNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIHNlY3Rpb24uQ29sdW1uc0dhcCA9IGxheW91dFZpZXcuTGF5b3V0LkNvbHVtbnNHYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENzc1NjcmVlbldpZGgoc2NyZWVuVHlwZTogRGF0YVZpZXdTY3JlZW5TaXplKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHdpZHRoVG9TZXQgPSAnMTAwJSc7XG5cbiAgICAgICAgaWYgKHNjcmVlblR5cGUgPT09ICdUYWJsZXQnKSB7XG4gICAgICAgICAgICB3aWR0aFRvU2V0ID0gJzcyMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NyZWVuVHlwZSA9PT0gJ1BoYWJsZXQnKSB7XG4gICAgICAgICAgICB3aWR0aFRvU2V0ID0gJzM2MCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2lkdGhUb1NldDtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBnZXRCbG9ja0NvbnRhaW5lckJ5QmxvY2tLZXkoYmxvY2tLZXk6IHN0cmluZyk6IElQZXBMYXlvdXRCbG9ja0NvbnRhaW5lciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBibG9ja0NvbnRhaW5lclRvRmluZDogSVBlcExheW91dEJsb2NrQ29udGFpbmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgXG4gICAgICAgIGZvciAobGV0IHNlY3Rpb25JbmRleCA9IDA7IHNlY3Rpb25JbmRleCA8IHNlY3Rpb25zLmxlbmd0aDsgc2VjdGlvbkluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSBzZWN0aW9uc1tzZWN0aW9uSW5kZXhdO1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGJsb2NrIGNvbnRhaW5lci5cbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gc2VjdGlvbi5Db2x1bW5zLmZpbmRJbmRleChjb2x1bW4gPT4gY29sdW1uLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSA9PT0gYmxvY2tLZXkpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbkluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NvbnRhaW5lclRvRmluZCA9IHNlY3Rpb24uQ29sdW1uc1tjb2x1bW5JbmRleF0uQmxvY2tDb250YWluZXJcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBibG9ja0NvbnRhaW5lclRvRmluZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUN1cnNvck9uRHJhZ1N0YXJ0KCkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2luaGVyaXRDdXJzb3JzJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUN1cnNvck9uRHJhZ0VuZCgpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdpbmhlcml0Q3Vyc29ycycpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd1bnNldCc7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpYyBmdW5jdGlvbnNcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBub3RpZnlTZWN0aW9uc0NvbHVtbnNEcm9wTGlzdENoYW5nZShzZWN0aW9uc0NvbHVtbnNEcm9wTGlzdDogYW55W10pIHtcbiAgICAgICAgdGhpcy5fc2VjdGlvbnNDb2x1bW5zRHJvcExpc3RTdWJqZWN0Lm5leHQoc2VjdGlvbnNDb2x1bW5zRHJvcExpc3QpO1xuICAgIH1cblxuICAgIG5vdGlmeVByZXZpZXdNb2RlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3ByZXZpZXdNb2RlU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5zZXRFZGl0YWJsZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgbm90aWZ5TG9ja1NjcmVlbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9sb2NrU2NyZWVuU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDdXJyZW50RWRpdG9yVGl0bGUodGl0bGU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjdXJyZW50RWRpdG9yID0gdGhpcy5fZWRpdG9yU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoY3VycmVudEVkaXRvcikge1xuICAgICAgICAgICAgY3VycmVudEVkaXRvci50aXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlFZGl0b3JDaGFuZ2UoY3VycmVudEVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRBdmFpbGFibGVCbG9ja3NUb0RyYWcoYXZhaWxhYmxlQmxvY2tzRm9yRHJhZzogQXJyYXk8SVBlcERyYWdnYWJsZUl0ZW0+KSB7XG4gICAgICAgIHRoaXMuX2F2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXAuY2xlYXIoKTtcbiAgICAgICAgYXZhaWxhYmxlQmxvY2tzRm9yRHJhZy5mb3JFYWNoKGJsb2NrID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2F2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXAuc2V0KGJsb2NrLmRhdGEua2V5LCBibG9jayk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubm90aWZ5QXZhaWxhYmxlQmxvY2tzRm9yRHJhZ01hcENoYW5nZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmxvY2tFZGl0b3IoYmxvY2tLZXk6IHN0cmluZyk6IElFZGl0b3Ige1xuICAgICAgICBjb25zdCBibG9ja0NvbnRhaW5lciA9IHRoaXMuZ2V0QmxvY2tDb250YWluZXJCeUJsb2NrS2V5KGJsb2NrS2V5KTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnTEFZT1VUX0JVSUxERVIuTk9fVElUTEUnKVxuICAgICAgICBsZXQgYmxvY2tUaXRsZSA9IGRlZmF1bHRUaXRsZTtcblxuICAgICAgICBpZiAoYmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgIGJsb2NrVGl0bGUgPSB0aGlzLmF2YWlsYWJsZUJsb2Nrc0ZvckRyYWdNYXA/LmdldChibG9ja0NvbnRhaW5lcj8uRHJhZ2dhYmxlSXRlbUtleSk/LnRpdGxlIHx8IGRlZmF1bHRUaXRsZTtcbiAgICAgICAgfVxuIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGJsb2NrS2V5LFxuICAgICAgICAgICAgdHlwZTogJ2Jsb2NrJyxcbiAgICAgICAgICAgIHRpdGxlOiBibG9ja1RpdGxlLFxuICAgICAgICAgICAgLy8gcmVtb3RlTW9kdWxlT3B0aW9uczogcmVtb3RlTG9hZGVyT3B0aW9ucyxcbiAgICAgICAgICAgIGhvc3RPYmplY3Q6IHt9IC8vIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaG9zdE9iamVjdCkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTY3JlZW5UeXBlKHNpemU6IFBlcFNjcmVlblNpemVUeXBlKTogRGF0YVZpZXdTY3JlZW5TaXplIHtcbiAgICAgICAgY29uc3Qgc2NyZWVuVHlwZTogRGF0YVZpZXdTY3JlZW5TaXplID1cbiAgICAgICAgICAgIHNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5NRCA/ICdMYW5kc2NhcGUnIDpcbiAgICAgICAgICAgIChzaXplID09PSBQZXBTY3JlZW5TaXplVHlwZS5NRCB8fCBzaXplID09PSBQZXBTY3JlZW5TaXplVHlwZS5TTSA/ICdUYWJsZXQnIDogJ1BoYWJsZXQnKTtcblxuICAgICAgICByZXR1cm4gc2NyZWVuVHlwZTtcbiAgICB9XG5cbiAgICBnZXRTZWN0aW9uQ29sdW1uS2V5KHNlY3Rpb25LZXk6IHN0cmluZyA9ICcnLCBpbmRleDogc3RyaW5nID0gJycpIHtcbiAgICAgICAgcmV0dXJuIGAke3NlY3Rpb25LZXl9X2NvbHVtbl8ke2luZGV4fWA7XG4gICAgfVxuXG4gICAgZ2V0SXNIaWRkZW4oaGlkZUluOiBEYXRhVmlld1NjcmVlblNpemVbXSB8IHVuZGVmaW5lZCwgY3VycmVudFNjcmVlblR5cGU6IERhdGFWaWV3U2NyZWVuU2l6ZSkge1xuICAgICAgICByZXR1cm4gKGhpZGVJbiAmJiBoaWRlSW4/Lmxlbmd0aCA+IDApID8gaGlkZUluLnNvbWUoaGkgPT4gaGkgPT09IGN1cnJlbnRTY3JlZW5UeXBlKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9FZGl0b3IoZWRpdG9yVHlwZTogTGF5b3V0RWRpdG9yVHlwZSwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIC8vIENhbm5vdCBuYXZpZ2F0ZSBpbnRvICdsYXlvdXQtYnVpbGRlcicgYmVjYXVzZSB0aGlzIGlzIGZpcnN0IGFuZCBjb25zdCBpbiB0aGUgZWRpdG9yc0JyZWFkQ3J1bWJzLlxuICAgICAgICBpZiAoZWRpdG9yVHlwZSAhPT0gJ2xheW91dC1idWlsZGVyJyAmJiBpZD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgd2hpY2ggZWRpdG9yIHdlIGhhdmUgbm93XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWRpdG9yID0gdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWJbdGhpcy5fZWRpdG9yc0JyZWFkQ3J1bWIubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgICAgIC8vIE9ubHkgaWYgaXQncyBhbm90aGVyIGVkaXRvci5cbiAgICAgICAgICAgIGlmKGN1cnJlbnRFZGl0b3IuaWQgIT09IGlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFZGl0b3IudHlwZSAhPT0gJ2xheW91dC1idWlsZGVyJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgcG9wIHRoZSBsYXN0IGFuZCBpbnNlcnQgdGhlIGN1cnJlbnQuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRvcnNCcmVhZENydW1iLnBvcCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBlZGl0b3IgPSB0aGlzLmdldEVkaXRvcihlZGl0b3JUeXBlLCBpZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRvcnNCcmVhZENydW1iLnB1c2goZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDdXJyZW50RWRpdG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZUJhY2tGcm9tRWRpdG9yKCkge1xuICAgICAgICAvLyBLZWVwIHRoZSBsYXlvdXQgYnVpbGRlciBlZGl0b3IuXG4gICAgICAgIGlmICh0aGlzLl9lZGl0b3JzQnJlYWRDcnVtYi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAvLyBNYXliZSB3ZSB3YW50IHRvIGNvbXBhcmUgdGhlIGxhc3QgZWRpdG9yIGZvciB2YWxpZGF0aW9uID9cbiAgICAgICAgICAgIGNvbnN0IGxhc3RFZGl0b3IgPSB0aGlzLl9lZGl0b3JzQnJlYWRDcnVtYi5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ3VycmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTGF5b3V0RnJvbUVkaXRvcihlZGl0b3JEYXRhOiBJTGF5b3V0RWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGlmIChsYXlvdXRWaWV3KSB7XG4gICAgICAgICAgICBsYXlvdXRWaWV3LkxheW91dC5NYXhXaWR0aCA9IGVkaXRvckRhdGEubWF4V2lkdGg7XG4gICAgICAgICAgICBsYXlvdXRWaWV3LkxheW91dC5Ib3Jpem9udGFsU3BhY2luZyA9IGVkaXRvckRhdGEuaG9yaXpvbnRhbFNwYWNpbmc7XG4gICAgICAgICAgICBsYXlvdXRWaWV3LkxheW91dC5WZXJ0aWNhbFNwYWNpbmcgPSBlZGl0b3JEYXRhLnZlcnRpY2FsU3BhY2luZztcbiAgICAgICAgICAgIGxheW91dFZpZXcuTGF5b3V0LlNlY3Rpb25zR2FwID0gZWRpdG9yRGF0YS5zZWN0aW9uc0dhcDtcbiAgICAgICAgICAgIGxheW91dFZpZXcuTGF5b3V0LkNvbHVtbnNHYXAgPSBlZGl0b3JEYXRhLmNvbHVtbnNHYXA7XG4gICAgICAgICAgICAvLyBsYXlvdXRWaWV3LmxheW91dC5Sb3VuZGVkQ29ybmVycyA9IGVkaXRvckRhdGEucm91bmRlZENvcm5lcnM7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0U2VjdGlvbnNDb2x1bW5zR2FwKGxheW91dFZpZXcpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLm5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlldyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgdXBkYXRlU2VjdGlvbkZyb21FZGl0b3Ioc2VjdGlvbkRhdGE6IElMYXlvdXRTZWN0aW9uRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkluZGV4ID0gc2VjdGlvbnMuZmluZEluZGV4KHNlY3Rpb24gPT4gc2VjdGlvbi5LZXkgPT09IHNlY3Rpb25EYXRhLmlkKTtcblxuICAgICAgICAvLyBVcGRhdGUgc2VjdGlvbiBkZXRhaWxzLlxuICAgICAgICBpZiAoc2VjdGlvbkluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2Nrc0lkc1RvUmVtb3ZlID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uID0gc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcbiAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLk5hbWUgPSBzZWN0aW9uRGF0YS5zZWN0aW9uTmFtZTtcbiAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLlNwbGl0ID0gc2VjdGlvbkRhdGEuc3BsaXQ7XG4gICAgICAgICAgICBjdXJyZW50U2VjdGlvbi5IZWlnaHQgPSBzZWN0aW9uRGF0YS5oZWlnaHQ7XG4gICAgICAgICAgICBjdXJyZW50U2VjdGlvbi5Db2xsYXBzZU9uVGFibGV0ID0gc2VjdGlvbkRhdGEuY29sbGFwc2VPblRhYmxldDtcbiAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLkZpbGxIZWlnaHQgPSBzZWN0aW9uRGF0YS5maWxsSGVpZ2h0O1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIG5ldyBjb2x1bW5zIG51bWJlciBmcm9tIGN1cnJlbnRTZWN0aW9uLlNwbGl0LCBpZiBpdHMgdW5kZWZpbmVkIHB1dCBhIGRlZmF1bHQgMS5cbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbHVtbnNMZW5ndGggPSBjdXJyZW50U2VjdGlvbi5TcGxpdD8uc3BsaXQoJyAnKS5sZW5ndGggfHwgMTtcbiAgICAgICAgICAgIGlmIChuZXdDb2x1bW5zTGVuZ3RoID4gY3VycmVudFNlY3Rpb24uQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3Q29sdW1uc0xlbmd0aCA+IGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMucHVzaCh7fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuZXdDb2x1bW5zTGVuZ3RoIDwgY3VycmVudFNlY3Rpb24uQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3Q29sdW1uc0xlbmd0aCA8IGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVubSA9IGN1cnJlbnRTZWN0aW9uLkNvbHVtbnMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGJsb2NrIGluIHRoaXMgY29sdW1uIGRlbGV0ZSBpdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbHVubSAmJiBjb2x1bm0uQmxvY2tDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc0lkc1RvUmVtb3ZlLnB1c2goY29sdW5tLkJsb2NrQ29udGFpbmVyLkJsb2NrS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIGVkaXRvciB0aXRsZVxuICAgICAgICAgICAgY29uc3QgY3VycmVudEVkaXRvciA9IHRoaXMuX2VkaXRvclN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RWRpdG9yICYmIGN1cnJlbnRFZGl0b3IudHlwZSA9PT0gJ3NlY3Rpb24nICYmIGN1cnJlbnRFZGl0b3IuaWQgPT09IGN1cnJlbnRTZWN0aW9uLktleSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRTZWN0aW9uRWRpdG9yVGl0bGUoY3VycmVudFNlY3Rpb24sIHNlY3Rpb25JbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50RWRpdG9yVGl0bGUodGl0bGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgc2VjdGlvbnMgY2hhbmdlLlxuICAgICAgICAgICAgdGhpcy5ub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXcpO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYmxvY2tzIHRvIHJlbW92ZSwgbm90aWZ5IHRoZSBibG9ja3MgcmVtb3ZlZC5cbiAgICAgICAgICAgIGlmIChibG9ja3NJZHNUb1JlbW92ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlCbG9ja3NSZW1vdmVkKGJsb2Nrc0lkc1RvUmVtb3ZlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZFNlY3Rpb24oc2VjdGlvbjogSVBlcExheW91dFNlY3Rpb24gfCBudWxsID0gbnVsbCkge1xuICAgICAgICAvLyBDcmVhdGUgbmV3IHNlY3Rpb25cbiAgICAgICAgaWYgKCFzZWN0aW9uKSB7XG4gICAgICAgICAgICBzZWN0aW9uID0ge1xuICAgICAgICAgICAgICAgIEtleTogUGVwR3VpZC5uZXdHdWlkKCksXG4gICAgICAgICAgICAgICAgQ29sdW1uczogW3t9XSwgLy8gQWRkIGVtcHR5IHNlY3Rpb24gY29sdW1uXG4gICAgICAgICAgICAgICAgSGlkZTogW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCB0aGUgbmV3IHNlY3Rpb24gdG8gbGF5b3V0IHZpZXcuXG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgc2VjdGlvbnMucHVzaChzZWN0aW9uKTtcbiAgICAgICAgdGhpcy5ub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXcpO1xuICAgIH1cblxuICAgIHJlbW92ZVNlY3Rpb24oc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbGF5b3V0VmlldyA9IHRoaXMuX2xheW91dFZpZXdTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25zID0gbGF5b3V0Vmlldz8uTGF5b3V0LlNlY3Rpb25zIHx8IFtdO1xuICAgICAgICBjb25zdCBpbmRleCA9IHNlY3Rpb25zLmZpbmRJbmRleChzZWN0aW9uID0+IHNlY3Rpb24uS2V5ID09PSBzZWN0aW9uSWQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBibG9ja3MgaWQncyB0byByZW1vdmUuXG4gICAgICAgICAgICBjb25zdCBibG9ja3NJZHNUb1JlbW92ZTogYW55ID0gc2VjdGlvbnNbaW5kZXhdLkNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4/LkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSk7XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBzZWN0aW9uLlxuICAgICAgICAgICAgc2VjdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcyB0byByZW1vdmUsIG5vdGlmeSB0aGUgYmxvY2tzIHJlbW92ZWQuXG4gICAgICAgICAgICBpZiAoYmxvY2tzSWRzVG9SZW1vdmUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5QmxvY2tzUmVtb3ZlZChibG9ja3NJZHNUb1JlbW92ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGVTZWN0aW9uKHNlY3Rpb25JZDogc3RyaW5nLCBoaWRlSW46IERhdGFWaWV3U2NyZWVuU2l6ZVtdKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzZWN0aW9ucy5maW5kSW5kZXgoc2VjdGlvbiA9PiBzZWN0aW9uLktleSA9PT0gc2VjdGlvbklkKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHNlY3Rpb25zW2luZGV4XS5IaWRlID0gaGlkZUluO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWN0aW9uRHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHNlY3Rpb25zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB0aGlzLm5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlldyk7XG4gICAgfVxuXG4gICAgb25TZWN0aW9uRHJhZ1N0YXJ0KGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDdXJzb3JPbkRyYWdTdGFydCgpO1xuICAgICAgICB0aGlzLl9kcmFnZ2luZ1NlY3Rpb25LZXkubmV4dChldmVudC5zb3VyY2UuZGF0YSk7XG4gICAgfVxuXG4gICAgb25TZWN0aW9uRHJhZ0VuZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICB0aGlzLmNoYW5nZUN1cnNvck9uRHJhZ0VuZCgpO1xuICAgICAgICB0aGlzLl9kcmFnZ2luZ1NlY3Rpb25LZXkubmV4dCgnJyk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQmxvY2tGcm9tU2VjdGlvbihibG9ja0lkOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGJsb2NrUmVtb3ZlZCA9IGZhbHNlO1xuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgYmxvY2sgZnJvbSBzZWN0aW9uIGNvbHVtbi5cbiAgICAgICAgY29uc3QgbGF5b3V0VmlldyA9IHRoaXMuX2xheW91dFZpZXdTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25zID0gbGF5b3V0Vmlldz8uTGF5b3V0LlNlY3Rpb25zIHx8IFtdO1xuICAgICAgICBcbiAgICAgICAgZm9yIChsZXQgc2VjdGlvbkluZGV4ID0gMDsgc2VjdGlvbkluZGV4IDwgc2VjdGlvbnMubGVuZ3RoOyBzZWN0aW9uSW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgYmxvY2sgY29udGFpbmVyLlxuICAgICAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBzZWN0aW9uLkNvbHVtbnMuZmluZEluZGV4KGNvbHVtbiA9PiBjb2x1bW4uQmxvY2tDb250YWluZXI/LkJsb2NrS2V5ID09PSBibG9ja0lkKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW5JbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNlY3Rpb24uQ29sdW1uc1tjb2x1bW5JbmRleF0uQmxvY2tDb250YWluZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXcpO1xuICAgICAgICAgICAgICAgIGJsb2NrUmVtb3ZlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBibG9jayB3YXMgcmVtb3ZlZCwgbm90aWZ5IHRoZSBibG9jayByZW1vdmVkLlxuICAgICAgICBpZiAoYmxvY2tSZW1vdmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUJsb2Nrc1JlbW92ZWQoW2Jsb2NrSWRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGVCbG9jayhzZWN0aW9uSWQ6IHN0cmluZywgYmxvY2tJZDogc3RyaW5nLCBoaWRlSW46IERhdGFWaWV3U2NyZWVuU2l6ZVtdKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGxheW91dFZpZXc/LkxheW91dC5TZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2VjdGlvbnMuZmluZEluZGV4KHNlY3Rpb24gPT4gc2VjdGlvbi5LZXkgPT09IHNlY3Rpb25JZCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHNlY3Rpb25zW2luZGV4XS5Db2x1bW5zLmZpbmRJbmRleChjb2x1bW4gPT4gY29sdW1uLkJsb2NrQ29udGFpbmVyPy5CbG9ja0tleSA9PT0gYmxvY2tJZCk7XG4gICAgICAgICAgICBpZiAoY29sdW1uSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrQ29udGFpbmVyID0gc2VjdGlvbnNbaW5kZXhdLkNvbHVtbnNbY29sdW1uSW5kZXhdLkJsb2NrQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBibG9ja0NvbnRhaW5lci5IaWRlID0gaGlkZUluO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUxheW91dFZpZXdDaGFuZ2UobGF5b3V0Vmlldyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbG9ja0Ryb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPElQZXBMYXlvdXRTZWN0aW9uQ29sdW1uLCBhbnksIGFueT4sIHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGxheW91dFZpZXcgPSB0aGlzLl9sYXlvdXRWaWV3U3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lci5pZCA9PT0gUGVwTGF5b3V0QnVpbGRlclNlcnZpY2UuQVZBSUxBQkxFX0JMT0NLU19DT05UQUlORVJfSUQpIHtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgYmxvY2sgcmVsYXRpb24gKHByZXZpb3VzQ29udGFpbmVyLmRhdGEgaXMgSVBlcERyYWdnYWJsZUl0ZW0gYW5kIGluc2lkZSB3ZSBoYXZlIEF2YWlsYWJsZUJsb2NrIG9iamVjdCkuXG4gICAgICAgICAgICBjb25zdCBkcmFnZ2FibGVJdGVtOiBJUGVwRHJhZ2dhYmxlSXRlbSA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF0gYXMgSVBlcERyYWdnYWJsZUl0ZW07XG5cbiAgICAgICAgICAgIGlmIChkcmFnZ2FibGVJdGVtKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jayB0aGUgc2NyZWVuIHVudGlsbCB0aGUgZWRpdG9yIHdpbGwgYmUgbG9hZGVkLlxuICAgICAgICAgICAgICAgIC8vIHRoaXMuX2xvY2tTY3JlZW5TdWJqZWN0Lm5leHQodHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGNvbHVtbi5cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Q29sdW1uID0gdGhpcy5nZXRTZWN0aW9uQ29sdW1uQnlJZEZvckVkaXRvcihldmVudC5jb250YWluZXIuaWQpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBibG9jayBrZXkgaW4gdGhlIHNlY3Rpb24gYmxvY2sgb25seSBpZiB0aGVyZSBpcyBhIGJsYW5rIGNvbHVtbi5cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbiAmJiAhY3VycmVudENvbHVtbi5CbG9ja0NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIGJsb2NrIHV1aWQuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrS2V5ID0gUGVwR3VpZC5uZXdHdWlkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbi5CbG9ja0NvbnRhaW5lciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrS2V5OiBibG9ja0tleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIERyYWdnYWJsZUl0ZW1LZXk6IGRyYWdnYWJsZUl0ZW0uZGF0YS5rZXksXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSGVyZSB3ZSB1cGRhdGUgdGhlIGxheW91dCB2aWV3IGNhdXNlIHRoZSBsYXlvdXQgaXMgdXBkYXRlZC5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMYXlvdXRWaWV3Q2hhbmdlKGxheW91dFZpZXcpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJhaXNlIGJsb2NrIGFkZGVkIGV2ZW50LlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0FkZGVkRXZlbnREYXRhOiBJUGVwTGF5b3V0QmxvY2tBZGRlZEV2ZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tLZXk6IGJsb2NrS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgRHJhZ2dhYmxlSXRlbTogZHJhZ2dhYmxlSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUJsb2NrQWRkZWQoYmxvY2tBZGRlZEV2ZW50RGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImRyYWdnYWJsZUl0ZW0gaXMgbm90IGEgSVBlcERyYWdnYWJsZUl0ZW0gdHlwZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBibG9jayBtb3ZlZCBiZXR3ZWVuIGNvbHVtbnMgaW4gdGhlIHNhbWUgc2VjdGlvbiBvciBiZXR3ZWVuIGRpZmZlcmVudCBzZWN0aW9ucyBidXQgbm90IGluIHRoZSBzYW1lIGNvbHVtbi5cbiAgICAgICAgICAgIGlmIChldmVudC5jb250YWluZXIuaWQgIT09IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmlkKSB7XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBjb2x1bW4uXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudENvbHVtbiA9IHRoaXMuZ2V0U2VjdGlvbkNvbHVtbkJ5SWRGb3JFZGl0b3IoZXZlbnQuY29udGFpbmVyLmlkKTtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHByZXZpb3VzIGNvbHVtbi5cbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aXVvc0NvbHVtbiA9IHRoaXMuZ2V0U2VjdGlvbkNvbHVtbkJ5SWRGb3JFZGl0b3IoZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4gJiYgcHJldml1b3NDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbi5CbG9ja0NvbnRhaW5lciA9IHByZXZpdW9zQ29sdW1uLkJsb2NrQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcHJldml1b3NDb2x1bW4uQmxvY2tDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkJsb2NrRHJhZ1N0YXJ0KGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDdXJzb3JPbkRyYWdTdGFydCgpO1xuICAgICAgICAvLyBUYWtlIHRoZSBibG9jayBrZXkgaWYgZXhpc3QsIGVsc2UgdGFrZSB0aGUgYXZhaWxhYmxlIGJsb2NrIGtleSAocmVsYXRpb24ga2V5KS5cbiAgICAgICAgY29uc3QgYmxvY2tLZXkgPSBldmVudC5zb3VyY2UuZGF0YT8uQmxvY2tLZXkgfHwgZXZlbnQuc291cmNlLmRhdGE/LktleTtcbiAgICAgICAgdGhpcy5fZHJhZ2dpbmdCbG9ja0tleS5uZXh0KGJsb2NrS2V5KTtcbiAgICB9XG5cbiAgICBvbkJsb2NrRHJhZ0VuZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICB0aGlzLmNoYW5nZUN1cnNvck9uRHJhZ0VuZCgpO1xuICAgICAgICB0aGlzLl9kcmFnZ2luZ0Jsb2NrS2V5Lm5leHQoJycpO1xuICAgIH1cbiAgICBcbiAgICBkb2VzQ29sdW1uQ29udGFpbkJsb2NrKHNlY3Rpb25JZDogc3RyaW5nLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbGF5b3V0VmlldyA9IHRoaXMuX2xheW91dFZpZXdTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb24gPSBsYXlvdXRWaWV3Py5MYXlvdXQuU2VjdGlvbnMuZmluZChzZWN0aW9uID0+IHNlY3Rpb24uS2V5ID09PSBzZWN0aW9uSWQpO1xuXG4gICAgICAgIGlmIChzZWN0aW9uICYmIGNvbHVtbkluZGV4ID49IDAgJiYgc2VjdGlvbi5Db2x1bW5zLmxlbmd0aCA+IGNvbHVtbkluZGV4KSB7XG4gICAgICAgICAgICByZXMgPSAhIXNlY3Rpb24uQ29sdW1uc1tjb2x1bW5JbmRleF0uQmxvY2tDb250YWluZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHNldFNjcmVlbldpZHRoKHNjcmVlblR5cGU6IERhdGFWaWV3U2NyZWVuU2l6ZSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0Q3NzU2NyZWVuV2lkaChzY3JlZW5UeXBlKVxuXG4gICAgICAgIGxldCB3aWR0aCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCAwKTtcbiAgICAgICAgaWYgKHdpZHRoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JlZW5XaWR0aFN1YmplY3QubmV4dCgnMTAwJScpO1xuICAgICAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZVN1YmplY3QubmV4dChQZXBTY3JlZW5TaXplVHlwZS5YTCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JlZW5XaWR0aFN1YmplY3QubmV4dChgJHt3aWR0aH1weGApO1xuXG4gICAgICAgICAgICAvLyBDaGFuZ2UgdGhlIHNpemUgYWNjb3JkaW5nIHRoZSB3aWR0aC5cbiAgICAgICAgICAgIGlmICh3aWR0aCA+PSAxOTIwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZVN1YmplY3QubmV4dChQZXBTY3JlZW5TaXplVHlwZS5YTCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdpZHRoID49IDEyODAgJiYgd2lkdGggPCAxOTIwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZVN1YmplY3QubmV4dChQZXBTY3JlZW5TaXplVHlwZS5MRyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdpZHRoID49IDk2MCAmJiB3aWR0aCA8IDEyODApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JlZW5TaXplU3ViamVjdC5uZXh0KFBlcFNjcmVlblNpemVUeXBlLk1EKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod2lkdGggPj0gNjAwICYmIHdpZHRoIDwgOTYwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZVN1YmplY3QubmV4dChQZXBTY3JlZW5TaXplVHlwZS5TTSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHdpZHRoIDwgNjAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZVN1YmplY3QubmV4dChQZXBTY3JlZW5TaXplVHlwZS5YUyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93U2tlbGV0b24oc2hvdzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93U2tlbGV0b25TdWJqZWN0Lm5leHQoc2hvdyk7XG4gICAgfVxuICAgIFxuICAgIGxvYWRMYXlvdXRCdWlsZGVyKGxheW91dFZpZXc6IElQZXBMYXlvdXRWaWV3KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlKSB7XG4gICAgICAgICAgICAvLyBMb2FkIHRoZSBsYXlvdXQgZWRpdG9yLlxuICAgICAgICAgICAgdGhpcy5sb2FkRGVmYXVsdEVkaXRvcihsYXlvdXRWaWV3KTtcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBjb2x1bW5zIGdhcCBvZiB0aGUgc2VjdGlvbnMuXG4gICAgICAgICAgICB0aGlzLnNldFNlY3Rpb25zQ29sdW1uc0dhcChsYXlvdXRWaWV3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvYWQgb25seSB0aGUgbGF5b3V0IHZpZXcuXG4gICAgICAgIHRoaXMubm90aWZ5TGF5b3V0Vmlld0NoYW5nZShsYXlvdXRWaWV3KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -274,10 +274,10 @@ export class SectionComponent extends BaseDestroyerDirective {
|
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
SectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionComponent, deps: [{ token: i0.Renderer2 }, { token: i1.PepLayoutBuilderService }, { token: i2.PepLayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
277
|
-
SectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: SectionComponent, selector: "section", inputs: { blockTemplate: "blockTemplate", key: "key", name: "name", split: "split", height: "height", collapseOnTablet: "collapseOnTablet", columns: "columns", hideIn: "hideIn", columnsGap: "columnsGap" }, host: { properties: { "style.max-height": "this.styleMaxHeight", "style.height": "this.styleHeight" } }, viewQueries: [{ propertyName: "sectionContainerRef", first: true, predicate: ["sectionContainer"], descendants: true }, { propertyName: "columnsElementRef", predicate: ["columnsWrapper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n", styles: [".section-container{position:relative;display:grid;height:100%;max-height:inherit;min-height:2.5rem}.section-container.editable-state.default-height{min-height:16rem}.section-container.editable-state.active-section{z-index:11}.section-container.editable-state.active-section .columns-wrapper{z-index:1}.section-container.editable-state.active-section ::ng-deep .remote-loader-wrapper .remote-loader{pointer-events:unset!important;opacity:unset!important}.section-container.editable-state.cdk-drag-placeholder{opacity:.5}.section-container.editable-state:not(.cdk-drag-placeholder):hover .section-toolbar,.section-container.editable-state:not(.cdk-drag-placeholder).show-hover-state .section-toolbar{display:block!important}.section-container.editable-state:not(.cdk-drag-preview) .hide-toolbar{display:none}.section-container.editable-state.main-editor-state .mobile .is-hidden{display:none}.section-container.editable-state .mobile .is-hidden{display:block}.section-container.editable-state .section-toolbar{position:absolute;top:0;height:2.625rem;z-index:11}.section-container.editable-state .section-toolbar ::ng-deep .pep-draggable-item-container{border-radius:0 0 var(--pep-border-radius-md, .25rem) 0}.section-container.editable-state .section-background{position:absolute;width:100%;height:100%;z-index:0;display:grid;grid-template-columns:repeat(12,1fr)}.section-container.editable-state .section-background .back-template{opacity:.1}.section-container.editable-state .section-background .back-template:last-of-type{border-right:0 none}.section-container .columns-wrapper{display:grid;grid-auto-flow:column;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper.is-dragging{overflow:unset}.section-container .columns-wrapper.gap-none{gap:0}.section-container .columns-wrapper.gap-sm{gap:var(--pep-spacing-sm, .5rem)}.section-container .columns-wrapper.gap-md{gap:var(--pep-spacing-lg, 1rem)}.section-container .columns-wrapper.gap-lg{gap:var(--pep-spacing-2xl, 2rem)}.section-container .columns-wrapper .section-column{position:relative;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper .section-column .section-block{height:inherit;max-height:inherit}\n", ".section-container{background:transparent}.section-container.editable-state.active-section{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.active-section .columns-wrapper{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state.section-hidden-state:not(.active-section){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}.section-container.editable-state.main-editor-state.cdk-drag-preview{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.main-editor-state.cdk-drag-placeholder:hover,.section-container.editable-state.main-editor-state.cdk-drag-placeholder.show-hover-state{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)!important}.section-container.editable-state.main-editor-state:hover:not(.section-is-dragging),.section-container.editable-state.main-editor-state.show-hover-state:not(.section-is-dragging){box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state .section-toolbar ::ng-deep .pep-draggable-item-container{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .section-background .back-template{background-color:#bec3e5;border-right:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column{border:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column.active-column{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state .columns-wrapper .section-column.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state .columns-wrapper .section-column.already-contains-block:hover{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal{border-left:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal.cdk-drop-list-dragging{border-left:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical{border-top:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical.cdk-drop-list-dragging{border-top:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i5.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i6.SectionBlockComponent, selector: "section-block", inputs: ["blockTemplate", "sectionKey", "sectionHeight", "isMainEditorState", "editable", "active", "blockContainer", "screenType"], outputs: ["dragExited", "dragEntered"] }, { kind: "component", type: i7.PepHideInComponent, selector: "hide-in", inputs: ["hideIn"], outputs: ["hideInChange", "menuOpened", "menuClosed"] }, { kind: "component", type: i8.DraggableItemComponent, selector: "pep-draggable-item", inputs: ["title", "titlePrefix", "titleClassNames", "data", "disabled", "shadow", "styleType", "toggleContent", "isToggleContentOpen", "actionsMenu", "menuStyleType"], outputs: ["contentToggle", "actionsMenuItemClick"] }] });
|
|
277
|
+
SectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: SectionComponent, selector: "section", inputs: { blockTemplate: "blockTemplate", key: "key", name: "name", split: "split", height: "height", collapseOnTablet: "collapseOnTablet", columns: "columns", hideIn: "hideIn", columnsGap: "columnsGap" }, host: { properties: { "style.max-height": "this.styleMaxHeight", "style.height": "this.styleHeight" } }, viewQueries: [{ propertyName: "sectionContainerRef", first: true, predicate: ["sectionContainer"], descendants: true }, { propertyName: "columnsElementRef", predicate: ["columnsWrapper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n", styles: [".section-container{position:relative;display:grid;height:100%;max-height:inherit;min-height:2.5rem}.section-container.editable-state.default-height{min-height:16rem}.section-container.editable-state.active-section{z-index:11}.section-container.editable-state.active-section .columns-wrapper{z-index:1}.section-container.editable-state.active-section ::ng-deep .block-template-wrapper .block-template{pointer-events:unset!important;opacity:unset!important}.section-container.editable-state.cdk-drag-placeholder{opacity:.5}.section-container.editable-state:not(.cdk-drag-placeholder):hover .section-toolbar,.section-container.editable-state:not(.cdk-drag-placeholder).show-hover-state .section-toolbar{display:block!important}.section-container.editable-state:not(.cdk-drag-preview) .hide-toolbar{display:none}.section-container.editable-state.main-editor-state .mobile .is-hidden{display:none}.section-container.editable-state .mobile .is-hidden{display:block}.section-container.editable-state .section-toolbar{position:absolute;top:0;height:2.625rem;z-index:11}.section-container.editable-state .section-toolbar ::ng-deep .pep-draggable-item-container{border-radius:0 0 var(--pep-border-radius-md, .25rem) 0}.section-container.editable-state .section-background{position:absolute;width:100%;height:100%;z-index:0;display:grid;grid-template-columns:repeat(12,1fr)}.section-container.editable-state .section-background .back-template{opacity:.1}.section-container.editable-state .section-background .back-template:last-of-type{border-right:0 none}.section-container .columns-wrapper{display:grid;grid-auto-flow:column;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper.is-dragging{overflow:unset}.section-container .columns-wrapper.gap-none{gap:0}.section-container .columns-wrapper.gap-sm{gap:var(--pep-spacing-sm, .5rem)}.section-container .columns-wrapper.gap-md{gap:var(--pep-spacing-lg, 1rem)}.section-container .columns-wrapper.gap-lg{gap:var(--pep-spacing-2xl, 2rem)}.section-container .columns-wrapper .section-column{position:relative;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper .section-column .section-block{height:inherit;max-height:inherit}\n", ".section-container{background:transparent}.section-container.editable-state.active-section{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.active-section .columns-wrapper{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state.section-hidden-state:not(.active-section){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}.section-container.editable-state.main-editor-state.cdk-drag-preview{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.main-editor-state.cdk-drag-placeholder:hover,.section-container.editable-state.main-editor-state.cdk-drag-placeholder.show-hover-state{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)!important}.section-container.editable-state.main-editor-state:hover:not(.section-is-dragging),.section-container.editable-state.main-editor-state.show-hover-state:not(.section-is-dragging){box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state .section-toolbar ::ng-deep .pep-draggable-item-container{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .section-background .back-template{background-color:#bec3e5;border-right:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column{border:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column.active-column{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state .columns-wrapper .section-column.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state .columns-wrapper .section-column.already-contains-block:hover{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal{border-left:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal.cdk-drop-list-dragging{border-left:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical{border-top:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical.cdk-drop-list-dragging{border-top:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i4.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i5.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i6.SectionBlockComponent, selector: "section-block", inputs: ["blockTemplate", "sectionKey", "sectionHeight", "isMainEditorState", "editable", "active", "blockContainer", "screenType"], outputs: ["dragExited", "dragEntered"] }, { kind: "component", type: i7.PepHideInComponent, selector: "hide-in", inputs: ["hideIn"], outputs: ["hideInChange", "menuOpened", "menuClosed"] }, { kind: "component", type: i8.DraggableItemComponent, selector: "pep-draggable-item", inputs: ["title", "titlePrefix", "titleClassNames", "data", "disabled", "shadow", "styleType", "toggleContent", "isToggleContentOpen", "actionsMenu", "menuStyleType"], outputs: ["contentToggle", "actionsMenuItemClick"] }] });
|
|
278
278
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: SectionComponent, decorators: [{
|
|
279
279
|
type: Component,
|
|
280
|
-
args: [{ selector: 'section', template: "<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n", styles: [".section-container{position:relative;display:grid;height:100%;max-height:inherit;min-height:2.5rem}.section-container.editable-state.default-height{min-height:16rem}.section-container.editable-state.active-section{z-index:11}.section-container.editable-state.active-section .columns-wrapper{z-index:1}.section-container.editable-state.active-section ::ng-deep .remote-loader-wrapper .remote-loader{pointer-events:unset!important;opacity:unset!important}.section-container.editable-state.cdk-drag-placeholder{opacity:.5}.section-container.editable-state:not(.cdk-drag-placeholder):hover .section-toolbar,.section-container.editable-state:not(.cdk-drag-placeholder).show-hover-state .section-toolbar{display:block!important}.section-container.editable-state:not(.cdk-drag-preview) .hide-toolbar{display:none}.section-container.editable-state.main-editor-state .mobile .is-hidden{display:none}.section-container.editable-state .mobile .is-hidden{display:block}.section-container.editable-state .section-toolbar{position:absolute;top:0;height:2.625rem;z-index:11}.section-container.editable-state .section-toolbar ::ng-deep .pep-draggable-item-container{border-radius:0 0 var(--pep-border-radius-md, .25rem) 0}.section-container.editable-state .section-background{position:absolute;width:100%;height:100%;z-index:0;display:grid;grid-template-columns:repeat(12,1fr)}.section-container.editable-state .section-background .back-template{opacity:.1}.section-container.editable-state .section-background .back-template:last-of-type{border-right:0 none}.section-container .columns-wrapper{display:grid;grid-auto-flow:column;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper.is-dragging{overflow:unset}.section-container .columns-wrapper.gap-none{gap:0}.section-container .columns-wrapper.gap-sm{gap:var(--pep-spacing-sm, .5rem)}.section-container .columns-wrapper.gap-md{gap:var(--pep-spacing-lg, 1rem)}.section-container .columns-wrapper.gap-lg{gap:var(--pep-spacing-2xl, 2rem)}.section-container .columns-wrapper .section-column{position:relative;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper .section-column .section-block{height:inherit;max-height:inherit}\n", ".section-container{background:transparent}.section-container.editable-state.active-section{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.active-section .columns-wrapper{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state.section-hidden-state:not(.active-section){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}.section-container.editable-state.main-editor-state.cdk-drag-preview{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.main-editor-state.cdk-drag-placeholder:hover,.section-container.editable-state.main-editor-state.cdk-drag-placeholder.show-hover-state{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)!important}.section-container.editable-state.main-editor-state:hover:not(.section-is-dragging),.section-container.editable-state.main-editor-state.show-hover-state:not(.section-is-dragging){box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state .section-toolbar ::ng-deep .pep-draggable-item-container{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .section-background .back-template{background-color:#bec3e5;border-right:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column{border:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column.active-column{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state .columns-wrapper .section-column.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state .columns-wrapper .section-column.already-contains-block:hover{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal{border-left:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal.cdk-drop-list-dragging{border-left:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical{border-top:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical.cdk-drop-list-dragging{border-top:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}\n"] }]
|
|
280
|
+
args: [{ selector: 'section', template: "<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n", styles: [".section-container{position:relative;display:grid;height:100%;max-height:inherit;min-height:2.5rem}.section-container.editable-state.default-height{min-height:16rem}.section-container.editable-state.active-section{z-index:11}.section-container.editable-state.active-section .columns-wrapper{z-index:1}.section-container.editable-state.active-section ::ng-deep .block-template-wrapper .block-template{pointer-events:unset!important;opacity:unset!important}.section-container.editable-state.cdk-drag-placeholder{opacity:.5}.section-container.editable-state:not(.cdk-drag-placeholder):hover .section-toolbar,.section-container.editable-state:not(.cdk-drag-placeholder).show-hover-state .section-toolbar{display:block!important}.section-container.editable-state:not(.cdk-drag-preview) .hide-toolbar{display:none}.section-container.editable-state.main-editor-state .mobile .is-hidden{display:none}.section-container.editable-state .mobile .is-hidden{display:block}.section-container.editable-state .section-toolbar{position:absolute;top:0;height:2.625rem;z-index:11}.section-container.editable-state .section-toolbar ::ng-deep .pep-draggable-item-container{border-radius:0 0 var(--pep-border-radius-md, .25rem) 0}.section-container.editable-state .section-background{position:absolute;width:100%;height:100%;z-index:0;display:grid;grid-template-columns:repeat(12,1fr)}.section-container.editable-state .section-background .back-template{opacity:.1}.section-container.editable-state .section-background .back-template:last-of-type{border-right:0 none}.section-container .columns-wrapper{display:grid;grid-auto-flow:column;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper.is-dragging{overflow:unset}.section-container .columns-wrapper.gap-none{gap:0}.section-container .columns-wrapper.gap-sm{gap:var(--pep-spacing-sm, .5rem)}.section-container .columns-wrapper.gap-md{gap:var(--pep-spacing-lg, 1rem)}.section-container .columns-wrapper.gap-lg{gap:var(--pep-spacing-2xl, 2rem)}.section-container .columns-wrapper .section-column{position:relative;height:inherit;max-height:inherit;overflow:inherit}.section-container .columns-wrapper .section-column .section-block{height:inherit;max-height:inherit}\n", ".section-container{background:transparent}.section-container.editable-state.active-section{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.active-section .columns-wrapper{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state.section-hidden-state:not(.active-section){background:repeating-linear-gradient(45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem),repeating-linear-gradient(-45deg,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0),hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),0) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .65rem,hsla(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%),.32) .8rem)}.section-container.editable-state.main-editor-state.cdk-drag-preview{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state.main-editor-state.cdk-drag-placeholder:hover,.section-container.editable-state.main-editor-state.cdk-drag-placeholder.show-hover-state{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)!important}.section-container.editable-state.main-editor-state:hover:not(.section-is-dragging),.section-container.editable-state.main-editor-state.show-hover-state:not(.section-is-dragging){box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state.main-editor-state .section-toolbar ::ng-deep .pep-draggable-item-container{box-shadow:0 0 0 .125rem hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .section-background .back-template{background-color:#bec3e5;border-right:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column{border:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper .section-column.active-column{background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.section-container.editable-state .columns-wrapper .section-column.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.section-container.editable-state .columns-wrapper .section-column.already-contains-block:hover{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsl(var(--pep-color-system-caution-h, 360),var(--pep-color-system-caution-s, 100%),var(--pep-color-system-caution-l, 45%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal{border-left:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).horizontal.cdk-drop-list-dragging{border-left:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical{border-top:unset}.section-container.editable-state .columns-wrapper.gap-none .section-column:not(.section-container.editable-state .columns-wrapper.gap-none .section-column:first-of-type).vertical.cdk-drop-list-dragging{border-top:.125rem dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%))}\n"] }]
|
|
281
281
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.PepLayoutBuilderService }, { type: i2.PepLayoutService }]; }, propDecorators: { sectionContainerRef: [{
|
|
282
282
|
type: ViewChild,
|
|
283
283
|
args: ['sectionContainer']
|