@esfaenza/extensions 15.2.39 → 15.2.40

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.
@@ -23,12 +23,23 @@ export class AppEmbeddingExtensions {
23
23
  this.EmbeddingLevel++;
24
24
  this.Embedded = true;
25
25
  // Fallback per farlo funzionare forzatamente mentre lo testo
26
- this.EmbeddedModule = this.location.path().match(/module=([a-zA-Z_]+)/)?.[1] || myconfig.AppData.ModuleId;
26
+ this.EmbeddedModule = this.location.path().match(/module=([a-zA-Z_]+)/)?.[1];
27
+ if (!this.EmbeddedModule)
28
+ this.waitForMyConfigAndForceEmbeddedModule();
27
29
  }
28
30
  this.configureEmbeddability();
29
31
  if (this.Embedded)
30
32
  this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
31
33
  }
34
+ waitForMyConfigAndForceEmbeddedModule() {
35
+ // Aspetto di ricevere il myconfig e setto con lui l'embeddedmodule. Questo viene eseguito solo se this.location.path() per qualche motivo non contiene il module
36
+ let interval = setInterval(() => {
37
+ if (myconfig?.AppData?.ModuleId) {
38
+ this.EmbeddedModule = myconfig.AppData.ModuleId;
39
+ clearInterval(interval);
40
+ }
41
+ }, 250);
42
+ }
32
43
  IsReloadAllowed() {
33
44
  let ret = this._reloadAllowed;
34
45
  this._reloadAllowed = true;
@@ -190,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
190
201
  type: Injectable,
191
202
  args: [{ providedIn: "root" }]
192
203
  }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.Router }, { type: i3.Location }]; } });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUkvQixxR0FBcUc7QUFFckcsTUFBTSxPQUFPLHNCQUFzQjtJQWMvQixZQUFvQixVQUEwQixFQUFVLE1BQWMsRUFBVSxRQUFrQjtRQUE5RSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWjNGLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBRTNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFHM0Isb0JBQWUsR0FBdUMsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFFOUYsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFLbkMsSUFBSSxDQUFDLFVBQVUsR0FBMkMsTUFBTSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQiw2REFBNkQ7WUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxx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LEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztRQUVqRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0MsSUFBSSxHQUFHLEVBQUU7WUFDTCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsZUFBZSxTQUFTLEtBQUssQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxJQUFJO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzttSEFoTlEsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlXCI7XHJcblxyXG4vLyBMaWJyYXJpZXNcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5kZWNsYXJlIHZhciBteWNvbmZpZzogeyBBcHBEYXRhOiB7IE1vZHVsZUlkOiBzdHJpbmcgfTsgfTtcclxuXHJcbi8qIENsYXNzZSBjaGUgY29udGllbmUgdHV0dGUgbGUgaW5mb3JtYXppb25pIHN1bGwnZW1iZWRkaW5nIGluIHVuIHVuaWNvIGNvbnRlbml0b3JlIHBlciBzZW1wbGljaXTDoCAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXHJcbmV4cG9ydCBjbGFzcyBBcHBFbWJlZGRpbmdFeHRlbnNpb25zIHtcclxuXHJcbiAgICBwdWJsaWMgc2lkZWJhcldpZHRoOiBudW1iZXIgPSAyMzA7XHJcblxyXG4gICAgcHVibGljIEVtYmVkZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgRW1iZWRkaW5nTGV2ZWw6IG51bWJlciA9IDA7XHJcbiAgICBwdWJsaWMgTWFpbldpbmRvdzogYW55O1xyXG5cclxuICAgIHB1YmxpYyBNZXNzYWdlT2JzZXJ2ZXI6IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4gPSBuZXcgU3ViamVjdDx7IGV2ZW50OiBhbnksIGRhdGE6IGFueSB9PigpO1xyXG5cclxuICAgIHByaXZhdGUgX3JlbG9hZEFsbG93ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHB1YmxpYyBFbWJlZGRlZE1vZHVsZTogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93ID0gPHsgcGFyZW50OiBhbnksIHBvc3RNZXNzYWdlOiBGdW5jdGlvbiB9PndpbmRvdztcclxuICAgICAgICB3aGlsZSAodGhpcy5NYWluV2luZG93LnBhcmVudCAhPSB0aGlzLk1haW5XaW5kb3cpIHtcclxuICAgICAgICAgICAgdGhpcy5NYWluV2luZG93ID0gdGhpcy5NYWluV2luZG93LnBhcmVudDtcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRpbmdMZXZlbCsrO1xyXG4gICAgICAgICAgICB0aGlzLkVtYmVkZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIEZhbGxiYWNrIHBlciBmYXJsbyBmdW56aW9uYXJlIGZvcnphdGFtZW50ZSBtZW50cmUgbG8gdGVzdG9cclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZE1vZHVsZSA9IHRoaXMubG9jYXRpb24ucGF0aCgpLm1hdGNoKC9tb2R1bGU9KFthLXpBLVpfXSspLyk/LlsxXSB8fCBteWNvbmZpZy5BcHBEYXRhLk1vZHVsZUlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVFbWJlZGRhYmlsaXR5KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKVxyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY29uZmlndXJlRW1iZWRkYWJpbGl0eSh0aGlzLk1haW5XaW5kb3csIHRoaXMuTWVzc2FnZU9ic2VydmVyKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBJc1JlbG9hZEFsbG93ZWQoKSB7XHJcbiAgICAgICAgbGV0IHJldCA9IHRoaXMuX3JlbG9hZEFsbG93ZWQ7XHJcbiAgICAgICAgdGhpcy5fcmVsb2FkQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBjb25maWd1cmVFbWJlZGRhYmlsaXR5KCkge1xyXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBJZ25vcm8gaSBtaWVpIG1lc3NhZ2dpIGRhdG8gY2hlIG1pIGludGVyZXNzYW5vIHNvbG8gcXVlbGxpIGRlZ2xpIGFsdHJpIGlmcmFtZVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09IHdpbmRvdyAmJiBldmVudD8uZGF0YT8udHlwZSAhPSBcIm1vZGFsLW9wZW5cIilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJ3aW5kb3ctbWVzc2FnZVwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImFsZXJ0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGFsZXJ0IC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/Lm1zZ31gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcihldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZm9cIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUluZm8oZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVwbGFjZS1zdGF0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSByZXBsYWNlLXN0YXRlIC0+IFVybDogJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGV2ZW50Py5kYXRhPy51cmwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiY29uZmlybVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBjb25maXJtIC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/LnRleHR9LCBUaXRsZTogJHtldmVudD8uZGF0YT8udGl0bGV9LCBJRDogJHtldmVudD8uZGF0YT8uZ3VpZH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgc291cmNlV2luZG93ID0gKGV2ZW50LnNvdXJjZSBhcyBXaW5kb3cpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJhc2VSZXNwb25zZSA9IHsgdHlwZTogXCJjb25maXJtLXJlc3BvbnNlXCIsIGd1aWQ6IGV2ZW50Py5kYXRhPy5ndWlkIH07XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudD8uZGF0YT8ubGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlU3VjY2Vzc1dpdGhDaG9pY2UoZXZlbnQ/LmRhdGE/LnRpdGxlLCBldmVudD8uZGF0YT8udGV4dCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiB0cnVlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogZmFsc2UsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IHRydWUsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiBmYWxzZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGVcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld1RhYiA9IGV2ZW50Py5kYXRhPy5uZXdUYWI7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZVN0YXRlID0gZXZlbnQ/LmRhdGE/LnJlcGxhY2VTdGF0ZVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbnRyb2xsbyBzZSBpbCByb3V0ZXIgc3RhIHNlZ3VlbmRvIGxhIGNoaWFtYXRhIGF0dHVhbGUuIEVzY2x1ZG8gaSBxdWVyeSBwYXJhbXMgY2hlIHNvbm8gZ2xpIHVuaWNpIGNoZSBwb3Nzb25vIGVzc2VyZSBzZWNjYXRpIGRhaSByZXBsYWNlU3RhdGVcclxuICAgICAgICAgICAgICAgIC8vIGUgY2hlIHBvdHJlYmJlcm8gZmFyZSBkZWwgY2FzaW5vXHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKHRoaXMucm91dGVyLnVybC5zcGxpdChcIj9cIilbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRG9wcGlhIGNoaWFtYXRhIGRpIG5hdmlnYXppb25lLCBpZ25vcm8gaWwgc2Vjb25kbyBldmVudG8gc2Nvb3JkaW5hdG8gZGFsIHJvdXRlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1JlbGF0aXZlVXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2VVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHRoaXMucm91dGVyLnVybCwgJycpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1VybCA9IGJhc2VVcmwgKyBkZWNvZGVVUklDb21wb25lbnQobmV3UmVsYXRpdmVVcmwudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VTdGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IF9wdXNoZWQ6IHRydWUgfSwgXCJcIiwgbmV3VXJsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld1RhYilcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihuZXdVcmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlLWJhY2tcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUtYmFjayAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlzdG9yeS5zdGF0ZS5fcHVzaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVsb2FkQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVkaXJlY3RcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gcmVkaXJlY3QgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZXZlbnQ/LmRhdGE/LnVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTmF2aWdhdGlvbiAtPiAke2V2ZW50Py5kYXRhPy5pbnRlcm5hbE5hdmlnYXRpb24gPyBcIltpbnRlcm5hbF1cIiA6IFwiXCJ9ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJuYXZpZ2F0aW9uXCIsIGRhdGE6IGV2ZW50Py5kYXRhIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtb3BlblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXJTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3cmFwcGVyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1yaWdodFwiKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgT3BlbiAtPiBCYWNrZHJvcCBIZWlnaHQ6ICR7ZXZlbnQ/LmRhdGE/LmJhY2tkcm9wSGVpZ2h0fWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciB0b3BIZWlnaHQ6IG51bWJlciA9IDExNjsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgaWwgdG9wIGUgbCdpbml6aW8gZGVsbCdpZnJhbWUsIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIHJpZ2h0U3BhY2U6IG51bWJlciA9IHdyYXBwZXJQYWRkaW5nUmlnaHQ7IC8vIHZhbG9yZSBmaXNzbywgZGlzdGFuemEgZnJhIGxhIGZpbmUgZGVsbCdpZnJhbWUgZSBpbCBsYXRvIHNpbmlzdHJvIGRlbGxvIHNjaGVybW8sIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gdGhpcy5zaWRlYmFyV2lkdGggKyB3cmFwcGVyUGFkZGluZ0xlZnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbW1vblN0eWxlcyA9IFwicG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyBvcGFjaXR5OiAwLjU7IFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvd1wiLCBcImhpZGRlblwiLCBcImltcG9ydGFudFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgdG9wLmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtdG9wXCI7XHJcbiAgICAgICAgICAgICAgICB0b3Auc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6ICR7dG9wSGVpZ2h0fXB4OyB0b3A6IDA7IHdpZHRoOiBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZX1weCk7IGxlZnQ6ICR7bGVmdFNwYWNlfXB4YDtcclxuICAgICAgICAgICAgICAgIHRvcC5pZCA9IFwidG9wXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtbGVmdFwiO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogMTAwJTsgdG9wOiAwOyB3aWR0aDogJHtsZWZ0U3BhY2V9cHg7YDtcclxuICAgICAgICAgICAgICAgIGxlZnQuaWQgPSBcImxlZnRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICByaWdodC5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLXJpZ2h0XCI7XHJcbiAgICAgICAgICAgICAgICByaWdodC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogY2FsYygxMDAlIC0gJHt0b3BIZWlnaHR9cHgpOyB0b3A6ICR7dG9wSGVpZ2h0fXB4OyByaWdodDogMDsgd2lkdGg6ICR7cmlnaHRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQuaWQgPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtY2xvc2VcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgQ2xvc2VgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvd1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRvcClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJpZ2h0KVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvdy15XCIsIFwiYXV0b1wiLCBcImltcG9ydGFudFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVwbGFjZVN0YXRlKGJhc2VQYXRoOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gRXNlbXBpbyBiYXNlUGF0aDogcGFnZXNcclxuICAgICAgICAvLyBFc2VtcGlvIHVybDogcGFydGllcy9sZWFkc19zZWFyY2hcclxuXHJcbiAgICAgICAgLy8gTm9ybWFsaXp6YXppb25lIHNlbnphIHNsYXNoIHByaW1hIG8gZG9wb1xyXG4gICAgICAgIGJhc2VQYXRoID0gYmFzZVBhdGguZW5kc1dpdGgoXCIvXCIpID8gYmFzZVBhdGguc3Vic3RyaW5nKDAsIGJhc2VQYXRoLmxlbmd0aCAtMikgOiBiYXNlUGF0aDtcclxuICAgICAgICB1cmwgPSB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyB1cmwuc3Vic3RyaW5nKDEpIDogdXJsO1xyXG5cclxuICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShgJHtiYXNlUGF0aH0vJHt1cmx9YCk7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJyZXBsYWNlLXN0YXRlXCIsIHVybDogYHBhZ2VzL2VtYmVkLyR7dGhpcy5FbWJlZGRlZE1vZHVsZX0vJHt1cmx9YCB9LCBcIipcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZnJlc2hCb3VuZGFyaWVzT25NZW51Q29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gMjMwICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG5cclxuICAgICAgICBpZiAodG9wKSB7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgKGxlZnRTcGFjZSkgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBgY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgbGVmdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGxlZnRTcGFjZSArIFwicHhcIik7XHJcbiAgICB9XHJcbn0iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5lbWJlZGRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmVtYmVkZGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLFlBQVk7QUFDWixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUkvQixxR0FBcUc7QUFFckcsTUFBTSxPQUFPLHNCQUFzQjtJQWMvQixZQUFvQixVQUEwQixFQUFVLE1BQWMsRUFBVSxRQUFrQjtRQUE5RSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWjNGLGlCQUFZLEdBQVcsR0FBRyxDQUFDO1FBRTNCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFHM0Isb0JBQWUsR0FBdUMsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFFOUYsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFLbkMsSUFBSSxDQUFDLFVBQVUsR0FBMkMsTUFBTSxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQiw2REFBNkQ7WUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxx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RSxHQUFHLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBRU0sK0JBQStCO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQ3ZGLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLFNBQVMsR0FBVyxHQUFHLEdBQUcsa0JBQWtCLENBQUM7UUFFakQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLElBQUksR0FBRyxFQUFFO1lBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGVBQWUsU0FBUyxLQUFLLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksSUFBSTtZQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7bUhBOU5RLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRFQsTUFBTTsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG4vLyBTZXJ2aWNlc1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCIuL2V4dGVuc2lvbnMubWVzc2FnZXMuc2VydmljZVwiO1xyXG5cclxuLy8gTGlicmFyaWVzXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IHsgQXBwRGF0YTogeyBNb2R1bGVJZDogc3RyaW5nIH07IH07XHJcblxyXG4vKiBDbGFzc2UgY2hlIGNvbnRpZW5lIHR1dHRlIGxlIGluZm9ybWF6aW9uaSBzdWxsJ2VtYmVkZGluZyBpbiB1biB1bmljbyBjb250ZW5pdG9yZSBwZXIgc2VtcGxpY2l0w6AgKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgQXBwRW1iZWRkaW5nRXh0ZW5zaW9ucyB7XHJcblxyXG4gICAgcHVibGljIHNpZGViYXJXaWR0aDogbnVtYmVyID0gMjMwO1xyXG5cclxuICAgIHB1YmxpYyBFbWJlZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIEVtYmVkZGluZ0xldmVsOiBudW1iZXIgPSAwO1xyXG4gICAgcHVibGljIE1haW5XaW5kb3c6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgTWVzc2FnZU9ic2VydmVyOiBTdWJqZWN0PHsgZXZlbnQ6IGFueSwgZGF0YTogYW55IH0+ID0gbmV3IFN1YmplY3Q8eyBldmVudDogYW55LCBkYXRhOiBhbnkgfT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZWxvYWRBbGxvd2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBwdWJsaWMgRW1iZWRkZWRNb2R1bGU6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbikge1xyXG4gICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IDx7IHBhcmVudDogYW55LCBwb3N0TWVzc2FnZTogRnVuY3Rpb24gfT53aW5kb3c7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuTWFpbldpbmRvdy5wYXJlbnQgIT0gdGhpcy5NYWluV2luZG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWFpbldpbmRvdyA9IHRoaXMuTWFpbldpbmRvdy5wYXJlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkaW5nTGV2ZWwrKztcclxuICAgICAgICAgICAgdGhpcy5FbWJlZGRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAvLyBGYWxsYmFjayBwZXIgZmFybG8gZnVuemlvbmFyZSBmb3J6YXRhbWVudGUgbWVudHJlIGxvIHRlc3RvXHJcbiAgICAgICAgICAgIHRoaXMuRW1iZWRkZWRNb2R1bGUgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKS5tYXRjaCgvbW9kdWxlPShbYS16QS1aX10rKS8pPy5bMV07XHJcblxyXG4gICAgICAgICAgICBpZighdGhpcy5FbWJlZGRlZE1vZHVsZSlcclxuICAgICAgICAgICAgICAgIHRoaXMud2FpdEZvck15Q29uZmlnQW5kRm9yY2VFbWJlZGRlZE1vZHVsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVFbWJlZGRhYmlsaXR5KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkVtYmVkZGVkKVxyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY29uZmlndXJlRW1iZWRkYWJpbGl0eSh0aGlzLk1haW5XaW5kb3csIHRoaXMuTWVzc2FnZU9ic2VydmVyKVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgd2FpdEZvck15Q29uZmlnQW5kRm9yY2VFbWJlZGRlZE1vZHVsZSgpIHtcclxuXHJcbiAgICAgICAgLy8gQXNwZXR0byBkaSByaWNldmVyZSBpbCBteWNvbmZpZyBlIHNldHRvIGNvbiBsdWkgbCdlbWJlZGRlZG1vZHVsZS4gUXVlc3RvIHZpZW5lIGVzZWd1aXRvIHNvbG8gc2UgdGhpcy5sb2NhdGlvbi5wYXRoKCkgcGVyIHF1YWxjaGUgbW90aXZvIG5vbiBjb250aWVuZSBpbCBtb2R1bGVcclxuICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChteWNvbmZpZz8uQXBwRGF0YT8uTW9kdWxlSWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuRW1iZWRkZWRNb2R1bGUgPSBteWNvbmZpZy5BcHBEYXRhLk1vZHVsZUlkO1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAyNTApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBJc1JlbG9hZEFsbG93ZWQoKSB7XHJcbiAgICAgICAgbGV0IHJldCA9IHRoaXMuX3JlbG9hZEFsbG93ZWQ7XHJcbiAgICAgICAgdGhpcy5fcmVsb2FkQWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICBjb25maWd1cmVFbWJlZGRhYmlsaXR5KCkge1xyXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBJZ25vcm8gaSBtaWVpIG1lc3NhZ2dpIGRhdG8gY2hlIG1pIGludGVyZXNzYW5vIHNvbG8gcXVlbGxpIGRlZ2xpIGFsdHJpIGlmcmFtZVxyXG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09IHdpbmRvdyAmJiBldmVudD8uZGF0YT8udHlwZSAhPSBcIm1vZGFsLW9wZW5cIilcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJ3aW5kb3ctbWVzc2FnZVwiLCBkYXRhOiBldmVudD8uZGF0YSB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcImFsZXJ0XCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXaW5kb3cgbWVzc2FnZSAtIGFsZXJ0IC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/Lm1zZ31gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50Py5kYXRhPy5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVTdWNjZXNzKGV2ZW50Py5kYXRhPy5tc2cpOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2FybmluZ1wiOiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlV2FybmluZyhldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6IHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcihldmVudD8uZGF0YT8ubXNnKTsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZm9cIjogdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUluZm8oZXZlbnQ/LmRhdGE/Lm1zZyk7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVwbGFjZS1zdGF0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSByZXBsYWNlLXN0YXRlIC0+IFVybDogJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGV2ZW50Py5kYXRhPy51cmwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwiY29uZmlybVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgV2luZG93IG1lc3NhZ2UgLSBjb25maXJtIC0+IExldmVsOiAke2V2ZW50Py5kYXRhPy5sZXZlbH0sIE1lc3NhZ2U6ICR7ZXZlbnQ/LmRhdGE/LnRleHR9LCBUaXRsZTogJHtldmVudD8uZGF0YT8udGl0bGV9LCBJRDogJHtldmVudD8uZGF0YT8uZ3VpZH1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgc291cmNlV2luZG93ID0gKGV2ZW50LnNvdXJjZSBhcyBXaW5kb3cpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJhc2VSZXNwb25zZSA9IHsgdHlwZTogXCJjb25maXJtLXJlc3BvbnNlXCIsIGd1aWQ6IGV2ZW50Py5kYXRhPy5ndWlkIH07XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudD8uZGF0YT8ubGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlU3VjY2Vzc1dpdGhDaG9pY2UoZXZlbnQ/LmRhdGE/LnRpdGxlLCBldmVudD8uZGF0YT8udGV4dCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiB0cnVlLCAuLi5iYXNlUmVzcG9uc2UgfSwgXCIqXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVdpbmRvdy5wb3N0TWVzc2FnZSh7IHJlc3VsdDogZmFsc2UsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3YXJuaW5nXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShldmVudD8uZGF0YT8udGl0bGUsIGV2ZW50Py5kYXRhPy50ZXh0LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VXaW5kb3cucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IHRydWUsIC4uLmJhc2VSZXNwb25zZSB9LCBcIipcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlV2luZG93LnBvc3RNZXNzYWdlKHsgcmVzdWx0OiBmYWxzZSwgLi4uYmFzZVJlc3BvbnNlIH0sIFwiKlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibmF2aWdhdGVcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld1RhYiA9IGV2ZW50Py5kYXRhPy5uZXdUYWI7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVwbGFjZVN0YXRlID0gZXZlbnQ/LmRhdGE/LnJlcGxhY2VTdGF0ZVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbnRyb2xsbyBzZSBpbCByb3V0ZXIgc3RhIHNlZ3VlbmRvIGxhIGNoaWFtYXRhIGF0dHVhbGUuIEVzY2x1ZG8gaSBxdWVyeSBwYXJhbXMgY2hlIHNvbm8gZ2xpIHVuaWNpIGNoZSBwb3Nzb25vIGVzc2VyZSBzZWNjYXRpIGRhaSByZXBsYWNlU3RhdGVcclxuICAgICAgICAgICAgICAgIC8vIGUgY2hlIHBvdHJlYmJlcm8gZmFyZSBkZWwgY2FzaW5vXHJcbiAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKHRoaXMucm91dGVyLnVybC5zcGxpdChcIj9cIilbMF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRG9wcGlhIGNoaWFtYXRhIGRpIG5hdmlnYXppb25lLCBpZ25vcm8gaWwgc2Vjb25kbyBldmVudG8gc2Nvb3JkaW5hdG8gZGFsIHJvdXRlclwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1JlbGF0aXZlVXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbZXZlbnQ/LmRhdGE/LnVybF0pO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2VVcmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHRoaXMucm91dGVyLnVybCwgJycpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1VybCA9IGJhc2VVcmwgKyBkZWNvZGVVUklDb21wb25lbnQobmV3UmVsYXRpdmVVcmwudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VTdGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IF9wdXNoZWQ6IHRydWUgfSwgXCJcIiwgbmV3VXJsKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld1RhYilcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihuZXdVcmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRlLWJhY2tcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gbmF2aWdhdGUtYmFjayAtPiAke2V2ZW50Py5kYXRhPy51cmx9YCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGlzdG9yeS5zdGF0ZS5fcHVzaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVsb2FkQWxsb3dlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkuYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwicmVkaXJlY3RcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gcmVkaXJlY3QgLT4gJHtldmVudD8uZGF0YT8udXJsfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZXZlbnQ/LmRhdGE/LnVybDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChldmVudD8uZGF0YT8udHlwZSA9PSBcIm5hdmlnYXRpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTmF2aWdhdGlvbiAtPiAke2V2ZW50Py5kYXRhPy5pbnRlcm5hbE5hdmlnYXRpb24gPyBcIltpbnRlcm5hbF1cIiA6IFwiXCJ9ICR7ZXZlbnQ/LmRhdGE/LnRpdGxlfWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuTWVzc2FnZU9ic2VydmVyLm5leHQoeyBldmVudDogXCJuYXZpZ2F0aW9uXCIsIGRhdGE6IGV2ZW50Py5kYXRhIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtb3BlblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWFpbi13cmFwcGVyXCIpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXJTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3cmFwcGVyKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyUGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQod3JhcHBlclN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwicGFkZGluZy1yaWdodFwiKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgT3BlbiAtPiBCYWNrZHJvcCBIZWlnaHQ6ICR7ZXZlbnQ/LmRhdGE/LmJhY2tkcm9wSGVpZ2h0fWApO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciB0b3BIZWlnaHQ6IG51bWJlciA9IDExNjsgLy8gdmFsb3JlIGZpc3NvLCBkaXN0YW56YSBmcmEgaWwgdG9wIGUgbCdpbml6aW8gZGVsbCdpZnJhbWUsIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIHJpZ2h0U3BhY2U6IG51bWJlciA9IHdyYXBwZXJQYWRkaW5nUmlnaHQ7IC8vIHZhbG9yZSBmaXNzbywgZGlzdGFuemEgZnJhIGxhIGZpbmUgZGVsbCdpZnJhbWUgZSBpbCBsYXRvIHNpbmlzdHJvIGRlbGxvIHNjaGVybW8sIG5vbiBzYXLDoCBtYWkgZGl2ZXJzb1xyXG4gICAgICAgICAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gdGhpcy5zaWRlYmFyV2lkdGggKyB3cmFwcGVyUGFkZGluZ0xlZnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNvbW1vblN0eWxlcyA9IFwicG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyBvcGFjaXR5OiAwLjU7IFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvd1wiLCBcImhpZGRlblwiLCBcImltcG9ydGFudFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgICAgICAgICAgdG9wLmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtdG9wXCI7XHJcbiAgICAgICAgICAgICAgICB0b3Auc3R5bGUuY3NzVGV4dCA9IGNvbW1vblN0eWxlcyArIGBoZWlnaHQ6ICR7dG9wSGVpZ2h0fXB4OyB0b3A6IDA7IHdpZHRoOiBjYWxjKDEwMCUgLSAke2xlZnRTcGFjZX1weCk7IGxlZnQ6ICR7bGVmdFNwYWNlfXB4YDtcclxuICAgICAgICAgICAgICAgIHRvcC5pZCA9IFwidG9wXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICBsZWZ0LmNsYXNzTmFtZSA9IFwiZW1iZWRkZWQtbW9kYWwtbGVmdFwiO1xyXG4gICAgICAgICAgICAgICAgbGVmdC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogMTAwJTsgdG9wOiAwOyB3aWR0aDogJHtsZWZ0U3BhY2V9cHg7YDtcclxuICAgICAgICAgICAgICAgIGxlZnQuaWQgPSBcImxlZnRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICByaWdodC5jbGFzc05hbWUgPSBcImVtYmVkZGVkLW1vZGFsLXJpZ2h0XCI7XHJcbiAgICAgICAgICAgICAgICByaWdodC5zdHlsZS5jc3NUZXh0ID0gY29tbW9uU3R5bGVzICsgYGhlaWdodDogY2FsYygxMDAlIC0gJHt0b3BIZWlnaHR9cHgpOyB0b3A6ICR7dG9wSGVpZ2h0fXB4OyByaWdodDogMDsgd2lkdGg6ICR7cmlnaHRTcGFjZX1weDtgO1xyXG4gICAgICAgICAgICAgICAgcmlnaHQuaWQgPSBcInJpZ2h0XCI7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3ApO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsZWZ0KTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50Py5kYXRhPy50eXBlID09IFwibW9kYWwtY2xvc2VcIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFdpbmRvdyBtZXNzYWdlIC0gTW9kYWwgQ2xvc2VgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIHdyYXBwZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJvdmVyZmxvd1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRvcFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmlnaHRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRvcClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRvcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJpZ2h0KVxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQocmlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRW1iZWRkZWQpXHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoXCJvdmVyZmxvdy15XCIsIFwiYXV0b1wiLCBcImltcG9ydGFudFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVwbGFjZVN0YXRlKGJhc2VQYXRoOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gRXNlbXBpbyBiYXNlUGF0aDogcGFnZXNcclxuICAgICAgICAvLyBFc2VtcGlvIHVybDogcGFydGllcy9sZWFkc19zZWFyY2hcclxuXHJcbiAgICAgICAgLy8gTm9ybWFsaXp6YXppb25lIHNlbnphIHNsYXNoIHByaW1hIG8gZG9wb1xyXG4gICAgICAgIGJhc2VQYXRoID0gYmFzZVBhdGguZW5kc1dpdGgoXCIvXCIpID8gYmFzZVBhdGguc3Vic3RyaW5nKDAsIGJhc2VQYXRoLmxlbmd0aCAtMikgOiBiYXNlUGF0aDtcclxuICAgICAgICB1cmwgPSB1cmwuc3RhcnRzV2l0aChcIi9cIikgPyB1cmwuc3Vic3RyaW5nKDEpIDogdXJsO1xyXG5cclxuICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShgJHtiYXNlUGF0aH0vJHt1cmx9YCk7XHJcbiAgICAgICAgdGhpcy5NYWluV2luZG93LnBvc3RNZXNzYWdlKHsgdHlwZTogXCJyZXBsYWNlLXN0YXRlXCIsIHVybDogYHBhZ2VzL2VtYmVkLyR7dGhpcy5FbWJlZGRlZE1vZHVsZX0vJHt1cmx9YCB9LCBcIipcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZnJlc2hCb3VuZGFyaWVzT25NZW51Q29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1haW4td3JhcHBlclwiKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBsZXQgd3JhcHBlclN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHdyYXBwZXIpO1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXJQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHdyYXBwZXJTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBhZGRpbmctbGVmdFwiKSk7XHJcbiAgICAgICAgdmFyIGxlZnRTcGFjZTogbnVtYmVyID0gMjMwICsgd3JhcHBlclBhZGRpbmdMZWZ0O1xyXG5cclxuICAgICAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsZWZ0XCIpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidG9wXCIpO1xyXG5cclxuICAgICAgICBpZiAodG9wKSB7XHJcbiAgICAgICAgICAgIHRvcC5zdHlsZS5zZXRQcm9wZXJ0eShcImxlZnRcIiwgKGxlZnRTcGFjZSkgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICB0b3Auc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBgY2FsYygxMDAlIC0gJHtsZWZ0U3BhY2V9cHgpYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobGVmdClcclxuICAgICAgICAgICAgbGVmdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIGxlZnRTcGFjZSArIFwicHhcIik7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1072,12 +1072,24 @@ class AppEmbeddingExtensions {
1072
1072
  this.EmbeddingLevel++;
1073
1073
  this.Embedded = true;
1074
1074
  // Fallback per farlo funzionare forzatamente mentre lo testo
1075
- this.EmbeddedModule = ((_a = this.location.path().match(/module=([a-zA-Z_]+)/)) === null || _a === void 0 ? void 0 : _a[1]) || myconfig.AppData.ModuleId;
1075
+ this.EmbeddedModule = (_a = this.location.path().match(/module=([a-zA-Z_]+)/)) === null || _a === void 0 ? void 0 : _a[1];
1076
+ if (!this.EmbeddedModule)
1077
+ this.waitForMyConfigAndForceEmbeddedModule();
1076
1078
  }
1077
1079
  this.configureEmbeddability();
1078
1080
  if (this.Embedded)
1079
1081
  this.msgService.configureEmbeddability(this.MainWindow, this.MessageObserver);
1080
1082
  }
1083
+ waitForMyConfigAndForceEmbeddedModule() {
1084
+ // Aspetto di ricevere il myconfig e setto con lui l'embeddedmodule. Questo viene eseguito solo se this.location.path() per qualche motivo non contiene il module
1085
+ let interval = setInterval(() => {
1086
+ var _a;
1087
+ if ((_a = myconfig === null || myconfig === void 0 ? void 0 : myconfig.AppData) === null || _a === void 0 ? void 0 : _a.ModuleId) {
1088
+ this.EmbeddedModule = myconfig.AppData.ModuleId;
1089
+ clearInterval(interval);
1090
+ }
1091
+ }, 250);
1092
+ }
1081
1093
  IsReloadAllowed() {
1082
1094
  let ret = this._reloadAllowed;
1083
1095
  this._reloadAllowed = true;