@colijnit/homedecorator 255.1.4 → 255.1.5

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.
Files changed (64) hide show
  1. package/app/core/enum/message-type.enum.d.ts +3 -1
  2. package/app/core/interface/message-with-payload.interface.d.ts +6 -0
  3. package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
  4. package/app/core/service/homedecorator-connector-adapter.service.d.ts +2 -0
  5. package/app/core/service/homedecorator-connector.service.d.ts +5 -4
  6. package/app/core/service/presets.service.d.ts +3 -1
  7. package/app/homedecorator.component.d.ts +3 -1
  8. package/app/plugins/core3d/service/floor.service.d.ts +3 -1
  9. package/app/plugins/core3d/service/post-processing.service.d.ts +16 -4
  10. package/app/plugins/core3d/service/ssr.service.d.ts +0 -1
  11. package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +10 -2
  12. package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +180 -15
  13. package/app/plugins/model-uploader/model-uploader.module.d.ts +5 -1
  14. package/app/plugins/render/render-dialog/render-dialog.component.d.ts +4 -1
  15. package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +3 -1
  16. package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +1 -0
  17. package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +4 -1
  18. package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +0 -3
  19. package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +2 -0
  20. package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
  21. package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +2 -0
  22. package/assets/icons/dash-button.svg +7 -0
  23. package/assets/icons/pen-ruler.svg +1 -0
  24. package/assets/icons/retry-button.svg +7 -0
  25. package/bundles/colijnit-homedecorator.umd.js +514 -423
  26. package/bundles/colijnit-homedecorator.umd.js.map +1 -1
  27. package/esm2015/app/app.version.js +3 -3
  28. package/esm2015/app/core/enum/message-type.enum.js +3 -1
  29. package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
  30. package/esm2015/app/core/service/3dm-api.js +4 -4
  31. package/esm2015/app/core/service/homedecorator-app-event.service.js +2 -1
  32. package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +25 -2
  33. package/esm2015/app/core/service/homedecorator-connector.service.js +25 -22
  34. package/esm2015/app/core/service/presets.service.js +13 -5
  35. package/esm2015/app/core/utils/material.utils.js +3 -3
  36. package/esm2015/app/homedecorator.component.js +25 -19
  37. package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +2 -2
  38. package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +2 -2
  39. package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +2 -2
  40. package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +2 -2
  41. package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +2 -2
  42. package/esm2015/app/plugins/core3d/service/ar.service.js +2 -1
  43. package/esm2015/app/plugins/core3d/service/floor-tile-intersection.service.js +2 -2
  44. package/esm2015/app/plugins/core3d/service/floor.service.js +9 -4
  45. package/esm2015/app/plugins/core3d/service/post-processing.service.js +96 -35
  46. package/esm2015/app/plugins/core3d/service/scene.service.js +17 -11
  47. package/esm2015/app/plugins/core3d/service/ssr.service.js +1 -52
  48. package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +2 -2
  49. package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +264 -168
  50. package/esm2015/app/plugins/model-uploader/model-uploader.module.js +22 -3
  51. package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +19 -14
  52. package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +4 -2
  53. package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +2 -2
  54. package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +24 -12
  55. package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +5 -2
  56. package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +31 -15
  57. package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +4 -15
  58. package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +26 -20
  59. package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +2 -2
  60. package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +15 -8
  61. package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +3 -3
  62. package/fesm2015/colijnit-homedecorator.js +682 -483
  63. package/fesm2015/colijnit-homedecorator.js.map +1 -1
  64. package/package.json +1 -1
@@ -241,7 +241,7 @@ export class SceneService {
241
241
  // throw new Error('No WebGPU or WebGL2 support');
242
242
  // }
243
243
  const canvasElement = document.createElement('canvas');
244
- const context = canvasElement.getContext('webgl2', { antialias: true });
244
+ const context = canvasElement.getContext('webgl2');
245
245
  this.webGL2Available = context !== undefined;
246
246
  // this.renderer = new WebGPURenderer({ alpha: true, antialias: true });
247
247
  // this.renderer =
@@ -255,15 +255,21 @@ export class SceneService {
255
255
  // logarithmicDepthBuffer: true*/
256
256
  // });
257
257
  // this.renderer = new WebGLRenderer({alpha: true, antialias: false, preserveDrawingBuffer: true, premultipliedAlpha: true});
258
- this.renderer = new WebGLRenderer( /*{
259
- precision: 'highp',
260
- powerPreference: 'high-performance',
261
- antialias: true,
262
- stencil: false,
263
- depth: false
264
- }*/);
258
+ this.renderer = new WebGLRenderer({
259
+ /*
260
+ precision: 'highp',
261
+ powerPreference: 'high-performance',
262
+ */
263
+ /*
264
+ antialias: true,
265
+ */
266
+ /*
267
+ stencil: false,
268
+ depth: false
269
+ */
270
+ });
265
271
  this.renderer.outputColorSpace = SRGBColorSpace;
266
- this.renderer.autoClear = false;
272
+ this.renderer.autoClear = true;
267
273
  this.renderer.setPixelRatio(window.devicePixelRatio);
268
274
  this.renderer.toneMapping = NoToneMapping; // ACESFilmicToneMapping; // LinearToneMapping;
269
275
  this.renderer.shadowMap.enabled = true;
@@ -326,7 +332,7 @@ export class SceneService {
326
332
  }
327
333
  else {
328
334
  this._postProcessing.render();
329
- this._outlineService.render();
335
+ // this._outlineService.render();
330
336
  }
331
337
  // this.renderer.render(this.scene, this._cameraService.camera);
332
338
  }
@@ -380,4 +386,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
380
386
  providedIn: 'root'
381
387
  }]
382
388
  }], ctorParameters: function () { return [{ type: i1.CameraService }, { type: i2.ConfigurationService }, { type: i3.XrService }, { type: i4.VrService }, { type: i5.ArService }, { type: i6.MessageBusService }, { type: i7.ViewModeService }, { type: i8.OutlineService }, { type: i9.HomedecoratorSettingsService }, { type: i10.PostProcessingService }, { type: i11.SsrService }]; } });
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvY29yZTNkL3NlcnZpY2Uvc2NlbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFDTCxLQUFLLEVBQ0wsYUFBYSxFQUViLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxjQUFjLEVBQ2QsYUFBYSxFQUdiLGFBQWEsRUFDZCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sS0FBSyxLQUFLLE1BQU0sbUJBQW1CLENBQUM7QUFVM0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDckYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsK0RBQStEO0FBQy9ELDZEQUE2RDtBQUM3RCxtRkFBbUY7QUFDbkYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7Ozs7Ozs7O0FBTzFGLE1BQU0sT0FBTyxZQUFZO0lBa0N2QixZQUNVLGNBQTZCLEVBQzdCLHFCQUEyQyxFQUMzQyxVQUFxQixFQUNy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QUFPLENBQUMsRUFBRTtpQkFDWDthQUNGO1FBQ0gsQ0FBQyxDQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7OzBHQWhZVSxZQUFZOzhHQUFaLFlBQVksY0FGWCxNQUFNOzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbG9yLFxyXG4gIE5vVG9uZU1hcHBpbmcsXHJcbiAgT2JqZWN0M0QsXHJcbiAgT3J0aG9ncmFwaGljQ2FtZXJhLFxyXG4gIFBDRlNvZnRTaGFkb3dNYXAsXHJcbiAgUGVyc3BlY3RpdmVDYW1lcmEsXHJcbiAgU2NlbmUsXHJcbiAgU1JHQkNvbG9yU3BhY2UsXHJcbiAgVGV4dHVyZUxvYWRlcixcclxuICBWZWN0b3IyLFxyXG4gIFZlY3RvcjMsXHJcbiAgV2ViR0xSZW5kZXJlclxyXG59IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIFRXRUVOIGZyb20gJ0B0d2VlbmpzL3R3ZWVuLmpzJztcclxuaW1wb3J0IHtDYW1lcmFTZXJ2aWNlfSBmcm9tICcuL2NhbWVyYS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7WHJTZXJ2aWNlfSBmcm9tICcuL3hyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ZyU2VydmljZX0gZnJvbSAnLi92ci5zZXJ2aWNlJztcclxuaW1wb3J0IHtBclNlcnZpY2V9IGZyb20gJy4vYXIuc2VydmljZSc7XHJcbmltcG9ydCB7TWVzc2FnZUJ1c1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9tZXNzYWdlLWJ1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS92aWV3LW1vZGUuc2VydmljZSc7XHJcbmltcG9ydCB7T3V0bGluZVNlcnZpY2V9IGZyb20gJy4vb3V0bGluZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL3ZpZXctbW9kZS5lbnVtJztcclxuaW1wb3J0IHtNZXNzYWdlVHlwZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbnVtL21lc3NhZ2UtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtGaWxlVXRpbHN9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvZmlsZS51dGlscyc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xyXG5pbXBvcnQge1NjZW5lM0RVdGlsfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci91dGlscy9zY2VuZS0zZC51dGlscyc7XHJcbmltcG9ydCB7UmVsYXRpdmVQb3NpdGlvblV0aWxzfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL3JlbGF0aXZlLXBvc2l0aW9uLnV0aWxzJztcclxuLy8gaW1wb3J0IFdlYkdQVSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vY2FwYWJpbGl0aWVzL1dlYkdQVSc7XHJcbi8vIGltcG9ydCBXZWJHTCBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vY2FwYWJpbGl0aWVzL1dlYkdMJztcclxuLy8gaW1wb3J0IFdlYkdQVVJlbmRlcmVyIGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9yZW5kZXJlcnMvd2ViZ3B1L1dlYkdQVVJlbmRlcmVyJztcclxuaW1wb3J0IHtXZWJHTFBhdGhUcmFjZXJ9IGZyb20gJ3RocmVlLWdwdS1wYXRodHJhY2VyJztcclxuaW1wb3J0IHtQYXJhbGxlbE1lc2hCVkhXb3JrZXJ9IGZyb20gJ3RocmVlLW1lc2gtYnZoL3NyYy93b3JrZXJzL1BhcmFsbGVsTWVzaEJWSFdvcmtlci5qcyc7XHJcbmltcG9ydCB7UG9zdFByb2Nlc3NpbmdTZXJ2aWNlfSBmcm9tICcuL3Bvc3QtcHJvY2Vzc2luZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtTc3JTZXJ2aWNlfSBmcm9tICcuL3Nzci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjZW5lU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBzZXQgbmVlZHNSZW5kZXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX25lZWRzUmVuZGVyID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5wYXRoVHJhY2VyKSB7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci51cGRhdGVDYW1lcmEoKTtcclxuICAgICAgdGhpcy5wYXRoVHJhY2VyLnVwZGF0ZUxpZ2h0cygpO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIudXBkYXRlTWF0ZXJpYWxzKCk7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci51cGRhdGVFbnZpcm9ubWVudCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbnVtYmVyT2ZTYW1wbGVzUmVuZGVyZWQgPSAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBuZWVkc1JlbmRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9uZWVkc1JlbmRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzY2VuZTogU2NlbmU7XHJcbiAgcHVibGljIHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLyogfCBXZWJHUFVSZW5kZXJlciovO1xyXG4gIHB1YmxpYyBwYXRoVHJhY2VyOiBXZWJHTFBhdGhUcmFjZXI7XHJcblxyXG4gIHB1YmxpYyBvbkJlZm9yZVJlbmRlcjogU3ViamVjdDx7IHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLCBzY2VuZTogU2NlbmUgfT4gPSBuZXcgU3ViamVjdDx7IHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLCBzY2VuZTogU2NlbmUgfT4oKTtcclxuICBwdWJsaWMgb25BZnRlclJlbmRlcjogU3ViamVjdDx7IHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLCBzY2VuZTogU2NlbmUgfT4gPSBuZXcgU3ViamVjdDx7IHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLCBzY2VuZTogU2NlbmUgfT4oKTtcclxuICBwdWJsaWMgc2NlbmVJbml0aWFsaXplZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgcHVibGljIHJlbmRlcmluZ1Rocm91Z2hQb3N0UHJvY2Vzc2luZ1BpcGVsaW5lOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgd2ViR0wyQXZhaWxhYmxlOiBib29sZWFuO1xyXG4gIHB1YmxpYyBkb21FbGVtZW50OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgcHJpdmF0ZSBfbmVlZHNSZW5kZXI6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfYXJNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF9tYXhSZW5kZXJTYW1wbGVzOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfbnVtYmVyT2ZTYW1wbGVzUmVuZGVyZWQ6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jYW1lcmFTZXJ2aWNlOiBDYW1lcmFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfeHJTZXJ2aWNlOiBYclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF92clNlcnZpY2U6IFZyU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FyU2VydmljZTogQXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZUJ1c1NlcnZpY2U6IE1lc3NhZ2VCdXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdmlld01vZGVTZXJ2aWNlOiBWaWV3TW9kZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9vdXRsaW5lU2VydmljZTogT3V0bGluZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IEhvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wb3N0UHJvY2Vzc2luZzogUG9zdFByb2Nlc3NpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3NyU2VydmljZTogU3NyU2VydmljZVxyXG4gICkge1xyXG4gICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gKCkgPT4gdGhpcy5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRvbUVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNjZW5lKCk6IFNjZW5lIHtcclxuICAgIHJldHVybiB0aGlzLmFyTW9kZSA/IHRoaXMuX2FyU2VydmljZS5zY2VuZSA6IHRoaXMuc2NlbmU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGFyTW9kZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fYXJNb2RlID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5fYXJNb2RlKSB7XHJcbiAgICAgIHRoaXMuX2FyU2VydmljZS5pbml0KHRoaXMucmVuZGVyZXIgYXMgV2ViR0xSZW5kZXJlcik7XHJcbiAgICAgIHRoaXMuX3ZpZXdNb2RlU2VydmljZS52aWV3TW9kZSA9IFZpZXdNb2RlLkFSO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhck1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXJNb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZG9tRWxlbWVudCA9IGVsZW1lbnQ7XHJcbiAgICB0aGlzLl9pbml0U2NlbmUoKTtcclxuICAgIHRoaXMuX2luaXRSZW5kZXJlcigpO1xyXG4gICAgdGhpcy5faW5pdENhbWVyYSgpO1xyXG4gICAgdGhpcy5faW5pdE91dGxpbmUoKTtcclxuICAgIHRoaXMuX2luaXRQb3N0UHJvY2Vzc2luZygpO1xyXG4gICAgdGhpcy5fYW5pbWF0ZSgpO1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYU1vdmVtZW50Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fbWVzc2FnZUJ1c1NlcnZpY2Uuc3Vic2NyaWJlKE1lc3NhZ2VUeXBlLlRha2VTY3JlZW5zaG90LCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdNb2RlU2VydmljZS5pczNkVmlld0FjdGl2ZSgpIHx8IHRoaXMuX3ZpZXdNb2RlU2VydmljZS5pc1RvcFZpZXdBY3RpdmUoKSkge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEpO1xyXG4gICAgICAgICAgY29uc3QgZGF0YVVybCA9IHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudC50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcclxuICAgICAgICAgIEZpbGVVdGlscy5Eb3dubG9hZEZyb21EYXRhVXJpKGRhdGFVcmwsIGBNeVJvb21wbGFuJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9LmpwZWdgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9hclNlcnZpY2Uuc2hvdWxkQWRkT2JqZWN0VG9TY2VuZS5zdWJzY3JpYmUoKG9iamVjdCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXJNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hZGRPYmplY3Qob2JqZWN0KTtcclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX3ZpZXdNb2RlU2VydmljZS52aWV3TW9kZUNoYW5nZWQuc3Vic2NyaWJlKChtb2RlKSA9PiB7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuX2lzM0RNb2RlKG1vZGUpKSB7XHJcbiAgICAgICAgLy8gICB0aGlzLl9hbmltYXRlKCk7XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgIHRoaXMuX3BhdXNlQW5pbWF0aW9uKCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGlmIChtb2RlID09PSBWaWV3TW9kZS5WUikge1xyXG4gICAgICAgICAgdGhpcy5fdnJTZXJ2aWNlLmluaXQodGhpcy5zY2VuZSwgdGhpcy5yZW5kZXJlciBhcyBXZWJHTFJlbmRlcmVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fdnJTZXJ2aWNlLmVuZFNlc3Npb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3NMb2FkZWQuc3Vic2NyaWJlKChsb2FkZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAobG9hZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLl9pbml0UGF0aFRyYWNlcigpO1xyXG4gICAgICAgICAgdGhpcy5fbWF4UmVuZGVyU2FtcGxlcyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLm1heFJlbmRlclNhbXBsZXM7XHJcbiAgICAgICAgICB0aGlzLl9zc3JTZXJ2aWNlLmVuYWJsZWQgPSB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy5zc3JFbmFibGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLy8gdGhpcy5feHJTZXJ2aWNlLnNlc3Npb25TdGFydGVkLnN1YnNjcmliZSgobW9kZTogWHJNb2RlKSA9PiB7XHJcbiAgICAgIC8vICAgaWYgKG1vZGUgPT09IFhyTW9kZS5Bck1vZGUpIHtcclxuICAgICAgLy8gICAgIHRoaXMuX2FuaW1hdGVBcigpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl94clNlcnZpY2UuaW5pdCh0aGlzLnJlbmRlcmVyIGFzIFdlYkdMUmVuZGVyZXIsIHRoaXMuc2NlbmUsIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhKTtcclxuICAgIHRoaXMuc2NlbmVJbml0aWFsaXplZC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE9iamVjdChvYmo6IE9iamVjdDNELCBmb3JjZVJlbmRlcjogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9hck1vZGUpIHtcclxuICAgICAgdGhpcy5fYXJTZXJ2aWNlLmFkZE9iamVjdFRvQVJTY2VuZShvYmopO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zY2VuZS5hZGQob2JqKTtcclxuICAgICAgdGhpcy51cGRhdGVQYXRoVHJhY2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcmNlUmVuZGVyKSB7XHJcbiAgICAgIHRoaXMubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZU9iamVjdChvYmo6IE9iamVjdDNELCBmb3JjZVJlbmRlcjogYm9vbGVhbiA9IHRydWUsIGNsZWFuVXA6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjZW5lLnJlbW92ZShvYmopO1xyXG4gICAgaWYgKGZvcmNlUmVuZGVyKSB7XHJcbiAgICAgIHRoaXMubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGNsZWFuVXApIHtcclxuICAgICAgVXRpbHMuRGlzcG9zZU9iamVjdChvYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVBhdGhUcmFjZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMucGF0aFRyYWNlciAmJiB0aGlzLnBhdGhUcmFjZXIpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLnBhdGhUcmFjZXIuc2V0U2NlbmUodGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc2l0aW9uSW5TY2VuZVRvU2NyZWVuKHBvczogVmVjdG9yMyk6IFZlY3RvcjIge1xyXG4gICAgcmV0dXJuIFNjZW5lM0RVdGlsLkNvbnZlcnQzRFBvaW50VG9TY3JlZW5Qb2ludChcclxuICAgICAgcG9zLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSwgdGhpcy5kb21FbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmRvbUVsZW1lbnQuY2xpZW50SGVpZ2h0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW5kZXJlclByb3BzQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY2VuZS50cmF2ZXJzZSgobm9kZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghbm9kZS5pc01lc2gpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS5tYXRlcmlhbCkpIHtcclxuICAgICAgICBub2RlLm1hdGVyaWFsLmZvckVhY2goZnVuY3Rpb24gKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgICBtYXRlcmlhbC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbm9kZS5tYXRlcmlhbC5uZWVkc1VwZGF0ZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlUmVuZGVyV2l0aE9ydGhvZ3JhcGhpY0NhbWVyYSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYXNwZWN0OiBudW1iZXIgPSB3aW5kb3cuaW5uZXJXaWR0aCAvIHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgIGNvbnN0IGZydXN0dW1TaXplOiBudW1iZXIgPSAxMDtcclxuICAgIGNvbnN0IG9ydGhvZ3JhcGhpY0NhbWVyYTogT3J0aG9ncmFwaGljQ2FtZXJhID0gbmV3IE9ydGhvZ3JhcGhpY0NhbWVyYShcclxuICAgICAgZnJ1c3R1bVNpemUgKiBhc3BlY3QgLyAtMixcclxuICAgICAgZnJ1c3R1bVNpemUgKiBhc3BlY3QgLyAyLFxyXG4gICAgICBmcnVzdHVtU2l6ZSAvIDIsXHJcbiAgICAgIGZydXN0dW1TaXplIC8gLTIsXHJcbiAgICAgIDAuMSxcclxuICAgICAgMTAwXHJcbiAgICApO1xyXG4gICAgb3J0aG9ncmFwaGljQ2FtZXJhLnBvc2l0aW9uLnNldCgwLCAzLCAtMik7XHJcbiAgICBvcnRob2dyYXBoaWNDYW1lcmEubG9va0F0KDAsIDAsIC0yKTtcclxuICAgIG9ydGhvZ3JhcGhpY0NhbWVyYS5uYW1lID0gJ29ydGhvZ3JhcGhpY2NhbWVyYSc7XHJcbiAgICB0aGlzLnNjZW5lLmFkZChvcnRob2dyYXBoaWNDYW1lcmEpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgb3J0aG9ncmFwaGljQ2FtZXJhKTtcclxuICAgIGNvbnN0IHJlbmRlcjogc3RyaW5nID0gdGhpcy5yZW5kZXJlci5kb21FbGVtZW50LnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xyXG4gICAgdGhpcy5zY2VuZS5nZXRPYmplY3RCeU5hbWUoJ29ydGhvZ3JhcGhpY2NhbWVyYScpLnJlbW92ZSgpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEpO1xyXG4gICAgcmV0dXJuIHJlbmRlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRTY2VuZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2NlbmUgPSBuZXcgU2NlbmUoKTtcclxuICAgIHRoaXMuX3NldFNjZW5lQmFja2dyb3VuZCgpO1xyXG4gICAgLy8gY29uc3QgYm94MWdlbyA9IG5ldyBCb3hHZW9tZXRyeSgxLCAxLCAxKTtcclxuICAgIC8vIGNvbnN0IGJveDEgPSBuZXcgTWVzaChib3gxZ2VvLCBuZXcgTWVzaFBob25nTWF0ZXJpYWwoe2NvbG9yOiAnZ3JlZW4nfSkpO1xyXG4gICAgLy8gYm94MS5wb3NpdGlvbi5zZXQoLTAuNSwgMC43LCAtMC41KTtcclxuICAgIC8vIGJveDEuY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgICAvLyBib3gxLnJlY2VpdmVTaGFkb3cgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5zY2VuZS5hZGQoYm94MSk7XHJcbiAgICAvLyBjb25zdCBib3gyZ2VvID0gbmV3IEJveEdlb21ldHJ5KDAuNiwgMC42LCAwLjYpO1xyXG4gICAgLy8gY29uc3QgYm94MiA9IG5ldyBNZXNoKGJveDJnZW8sIG5ldyBNZXNoUGhvbmdNYXRlcmlhbCh7Y29sb3I6ICdyZWQnfSkpO1xyXG4gICAgLy8gYm94Mi5wb3NpdGlvbi5zZXQoMC41LCAxLjUsIDAuNSk7XHJcbiAgICAvLyBib3gyLmNhc3RTaGFkb3cgPSB0cnVlO1xyXG4gICAgLy8gYm94Mi5yZWNlaXZlU2hhZG93ID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuc2NlbmUuYWRkKGJveDIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdENhbWVyYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuaW5pdCh0aGlzLmRvbUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdE91dGxpbmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vdXRsaW5lU2VydmljZS5pbml0KHRoaXMucmVuZGVyZXIgYXMgV2ViR0xSZW5kZXJlciwgdGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEsXHJcbiAgICAgIHRoaXMuZG9tRWxlbWVudC5jbGllbnRXaWR0aCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLFxyXG4gICAgICB0aGlzLmRvbUVsZW1lbnQuY2xpZW50SGVpZ2h0ICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFBvc3RQcm9jZXNzaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmcuaW5pdCh0aGlzLnJlbmRlcmVyIGFzIFdlYkdMUmVuZGVyZXIsIHRoaXMuc2NlbmUsIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLFxyXG4gICAgICB0aGlzLmRvbUVsZW1lbnQuY2xpZW50V2lkdGggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxcclxuICAgICAgdGhpcy5kb21FbGVtZW50LmNsaWVudEhlaWdodCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRQYXRoVHJhY2VyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnBhdGhUcmFjZXIpIHtcclxuICAgICAgdGhpcy5wYXRoVHJhY2VyID0gbmV3IFdlYkdMUGF0aFRyYWNlcih0aGlzLnJlbmRlcmVyIGFzIFdlYkdMUmVuZGVyZXIpO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIuc2V0QlZIV29ya2VyKG5ldyBQYXJhbGxlbE1lc2hCVkhXb3JrZXIoKSk7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci5maWx0ZXJHbG9zc3lGYWN0b3IgPSAxO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIudGlsZXMuc2V0KDMsIDMpO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIubXVsdGlwbGVJbXBvcnRhbmNlU2FtcGxpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIudHJhbnNtaXNzaXZlQm91bmNlcyA9IDEwO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIucmVuZGVyU2NhbGUgPSAxO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIuc2V0U2NlbmUodGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEpO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIuZW5hYmxlUGF0aFRyYWNpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfaW5pdFJlbmRlcmVyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gaWYgKFdlYkdQVS5pc0F2YWlsYWJsZSgpID09PSBmYWxzZSAmJiBXZWJHTC5pc1dlYkdMMkF2YWlsYWJsZSgpID09PSBmYWxzZSkge1xyXG4gICAgLy8gICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCBXZWJHUFUuZ2V0RXJyb3JNZXNzYWdlKCkgKTtcclxuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKCdObyBXZWJHUFUgb3IgV2ViR0wyIHN1cHBvcnQnKTtcclxuICAgIC8vIH1cclxuICAgIGNvbnN0IGNhbnZhc0VsZW1lbnQ6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICBjb25zdCBjb250ZXh0OiBhbnkgPSBjYW52YXNFbGVtZW50LmdldENvbnRleHQoJ3dlYmdsMicsIHthbnRpYWxpYXM6IHRydWV9KTtcclxuICAgIHRoaXMud2ViR0wyQXZhaWxhYmxlID0gY29udGV4dCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgLy8gdGhpcy5yZW5kZXJlciA9IG5ldyBXZWJHUFVSZW5kZXJlcih7IGFscGhhOiB0cnVlLCBhbnRpYWxpYXM6IHRydWUgfSk7XHJcbiAgICAvLyB0aGlzLnJlbmRlcmVyID1cclxuICAgIC8vICAgbmV3IFdlYkdMUmVuZGVyZXIoe1xyXG4gICAgLy8gICAgIGNhbnZhczogY2FudmFzRWxlbWVudCxcclxuICAgIC8vICAgICBjb250ZXh0OiBjb250ZXh0LFxyXG4gICAgLy8gICAgIGFscGhhOiB0cnVlLFxyXG4gICAgLy8gICAgIGFudGlhbGlhczogdHJ1ZSxcclxuICAgIC8vICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXHJcbiAgICAvLyAgICAgcHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZS8qLFxyXG4gICAgLy8gICAgIGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6IHRydWUqL1xyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIHRoaXMucmVuZGVyZXIgPSBuZXcgV2ViR0xSZW5kZXJlcih7YWxwaGE6IHRydWUsIGFudGlhbGlhczogZmFsc2UsIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSwgcHJlbXVsdGlwbGllZEFscGhhOiB0cnVlfSk7XHJcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFdlYkdMUmVuZGVyZXIoLyp7XHJcbiAgICAgIHByZWNpc2lvbjogJ2hpZ2hwJyxcclxuICAgICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXHJcbiAgICAgIGFudGlhbGlhczogdHJ1ZSxcclxuICAgICAgc3RlbmNpbDogZmFsc2UsXHJcbiAgICAgIGRlcHRoOiBmYWxzZVxyXG4gICAgfSovKTtcclxuICAgIHRoaXMucmVuZGVyZXIub3V0cHV0Q29sb3JTcGFjZSA9IFNSR0JDb2xvclNwYWNlO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hdXRvQ2xlYXIgPSBmYWxzZTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnRvbmVNYXBwaW5nID0gTm9Ub25lTWFwcGluZzsgLy8gQUNFU0ZpbG1pY1RvbmVNYXBwaW5nOyAvLyBMaW5lYXJUb25lTWFwcGluZztcclxuICAgIHRoaXMucmVuZGVyZXIuc2hhZG93TWFwLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAudHlwZSA9IFBDRlNvZnRTaGFkb3dNYXA7XHJcbiAgICB0aGlzLmRvbUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5yZW5kZXJlci5kb21FbGVtZW50KTtcclxuICAgIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3RocmVlZF9jYW52YXMnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2l6ZVJlbmRlcmVyVG9EaXNwbGF5U2l6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U2l6ZSh0aGlzLmRvbUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQsIHRydWUpO1xyXG4gICAgdGhpcy5fb3V0bGluZVNlcnZpY2Uuc2V0U2l6ZSh0aGlzLmRvbUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3Npbmcuc2V0U2l6ZSh0aGlzLmRvbUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlV2luZG93U2l6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Jlc2l6ZVJlbmRlcmVyVG9EaXNwbGF5U2l6ZSgpO1xyXG4gICAgUmVsYXRpdmVQb3NpdGlvblV0aWxzLlNldEFwcGxpY2F0aW9uT2Zmc2V0KHRoaXMuZG9tRWxlbWVudCk7XHJcbiAgICBpZiAodGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEgaW5zdGFuY2VvZiBQZXJzcGVjdGl2ZUNhbWVyYSkge1xyXG4gICAgICBjb25zdCBhc3BlY3QgPSB0aGlzLmRvbUVsZW1lbnQuY2xpZW50V2lkdGggLyB0aGlzLmRvbUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICB0aGlzLl9jYW1lcmFTZXJ2aWNlLnJlYWxBc3BlY3RSYXRpbyA9IGFzcGVjdDtcclxuICAgICAgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEuYXNwZWN0ID0gYXNwZWN0O1xyXG4gICAgICAodGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEgYXMgUGVyc3BlY3RpdmVDYW1lcmEpLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcclxuICAgIH1cclxuICAgIHRoaXMubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tDYW52YXNSZXNpemUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kb21FbGVtZW50LmNsaWVudFdpZHRoICE9PSB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQud2lkdGggfHxcclxuICAgICAgdGhpcy5kb21FbGVtZW50LmNsaWVudEhlaWdodCAhPT0gdGhpcy5yZW5kZXJlci5kb21FbGVtZW50LmhlaWdodCkge1xyXG4gICAgICB0aGlzLl91cGRhdGVXaW5kb3dTaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZW5kZXIodCwgZnJhbWUpIHtcclxuICAgIGlmICghdGhpcy5yZW5kZXJlci54ci5lbmFibGVkKSB7XHJcbiAgICAgIFRXRUVOLnVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLl9jaGVja0NhbnZhc1Jlc2l6ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnBhdGhUcmFjZXIgJiYgdGhpcy5wYXRoVHJhY2VyKSB7XHJcbiAgICAgIGlmICh0aGlzLl9udW1iZXJPZlNhbXBsZXNSZW5kZXJlZCA+PSB0aGlzLl9tYXhSZW5kZXJTYW1wbGVzKSB7XHJcbiAgICAgICAgdGhpcy5wYXRoVHJhY2VyLmVuYWJsZVBhdGhUcmFjaW5nID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wYXRoVHJhY2VyLmVuYWJsZVBhdGhUcmFjaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5wYXRoVHJhY2VyLnJlbmRlclNhbXBsZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX251bWJlck9mU2FtcGxlc1JlbmRlcmVkID0gTWF0aC5mbG9vcih0aGlzLnBhdGhUcmFjZXIuc2FtcGxlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fbmVlZHNSZW5kZXIgfHwgdGhpcy5hck1vZGUgfHwgdGhpcy5fdmlld01vZGVTZXJ2aWNlLmlzVlJWaWV3QWN0aXZlKCkgfHwgdGhpcy5fb3V0bGluZVNlcnZpY2UubmVlZHNSZW5kZXIpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmNsZWFyKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FyTW9kZSAmJiBmcmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5fYXJTZXJ2aWNlLmhhbmRsZUZyYW1lKGZyYW1lKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3ZpZXdNb2RlU2VydmljZS5pc1ZSVmlld0FjdGl2ZSgpKSB7XHJcbiAgICAgICAgICB0aGlzLl92clNlcnZpY2UucmVuZGVyKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub25CZWZvcmVSZW5kZXIubmV4dCh7cmVuZGVyZXI6IHRoaXMucmVuZGVyZXIgYXMgV2ViR0xSZW5kZXJlciwgc2NlbmU6IHRoaXMuc2NlbmV9KTtcclxuICAgICAgICAgIGlmICghdGhpcy5yZW5kZXJpbmdUaHJvdWdoUG9zdFByb2Nlc3NpbmdQaXBlbGluZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZy5yZW5kZXIoKTtcclxuICAgICAgICAgICAgdGhpcy5fb3V0bGluZVNlcnZpY2UucmVuZGVyKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25BZnRlclJlbmRlci5uZXh0KHtyZW5kZXJlcjogdGhpcy5yZW5kZXJlciBhcyBXZWJHTFJlbmRlcmVyLCBzY2VuZTogdGhpcy5zY2VuZX0pO1xyXG4gICAgICAgIHRoaXMuX291dGxpbmVTZXJ2aWNlLm5lZWRzUmVuZGVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5uZWVkc1JlbmRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hbmltYXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBbmltYXRpb25Mb29wKCh0aW1lc3RhbXAsIGZyYW1lKSA9PiB0aGlzLl9yZW5kZXIodGltZXN0YW1wLCBmcmFtZSkpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3BhdXNlQW5pbWF0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBbmltYXRpb25Mb29wKG51bGwpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzM0RNb2RlKG1vZGU6IFZpZXdNb2RlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbW9kZSAhPT0gVmlld01vZGUuRmxvb3JQbGFuMkQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRTY2VuZUJhY2tncm91bmQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5nc0xvYWRlZC5zdWJzY3JpYmUoKGxvYWRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGxvYWRlZCAmJiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2NlbmVCYWNrZ3JvdW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IG5ldyBUZXh0dXJlTG9hZGVyKCkubG9hZCh0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2NlbmVCYWNrZ3JvdW5kLCAobWF0ZXJpYWwpID0+IHtcclxuICAgICAgICAgICAgICBtYXRlcmlhbC5jb2xvclNwYWNlID0gU1JHQkNvbG9yU3BhY2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChsb2FkZWQgJiYgdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNjZW5lQmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zY2VuZS5iYWNrZ3JvdW5kID0gbmV3IENvbG9yKHBhcnNlSW50KHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5zY2VuZUJhY2tncm91bmRDb2xvciwgMCkpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNjZW5lQ2FudmFzSW1hZ2UoKTogc3RyaW5nIHtcclxuICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuc2NlbmUsIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhKTtcclxuICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvY29yZTNkL3NlcnZpY2Uvc2NlbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFDTCxLQUFLLEVBQ0wsYUFBYSxFQUViLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxjQUFjLEVBQ2QsYUFBYSxFQUdiLGFBQWEsRUFDZCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sS0FBSyxLQUFLLE1BQU0sbUJBQW1CLENBQUM7QUFVM0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDckYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsK0RBQStEO0FBQy9ELDZEQUE2RDtBQUM3RCxtRkFBbUY7QUFDbkYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7Ozs7Ozs7O0FBTzFGLE1BQU0sT0FBTyxZQUFZO0lBa0N2QixZQUNVLGNBQTZCLEVBQzdCLHFCQUEyQyxFQUMzQyxVQUFxQixFQUNy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SCxDQUFDLENBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7MEdBdFlVLFlBQVk7OEdBQVosWUFBWSxjQUZYLE1BQU07NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29sb3IsXHJcbiAgTm9Ub25lTWFwcGluZyxcclxuICBPYmplY3QzRCxcclxuICBPcnRob2dyYXBoaWNDYW1lcmEsXHJcbiAgUENGU29mdFNoYWRvd01hcCxcclxuICBQZXJzcGVjdGl2ZUNhbWVyYSxcclxuICBTY2VuZSxcclxuICBTUkdCQ29sb3JTcGFjZSxcclxuICBUZXh0dXJlTG9hZGVyLFxyXG4gIFZlY3RvcjIsXHJcbiAgVmVjdG9yMyxcclxuICBXZWJHTFJlbmRlcmVyXHJcbn0gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgVFdFRU4gZnJvbSAnQHR3ZWVuanMvdHdlZW4uanMnO1xyXG5pbXBvcnQge0NhbWVyYVNlcnZpY2V9IGZyb20gJy4vY2FtZXJhLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtYclNlcnZpY2V9IGZyb20gJy4veHIuc2VydmljZSc7XHJcbmltcG9ydCB7VnJTZXJ2aWNlfSBmcm9tICcuL3ZyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FyU2VydmljZX0gZnJvbSAnLi9hci5zZXJ2aWNlJztcclxuaW1wb3J0IHtNZXNzYWdlQnVzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL21lc3NhZ2UtYnVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ZpZXdNb2RlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ZpZXctbW9kZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtPdXRsaW5lU2VydmljZX0gZnJvbSAnLi9vdXRsaW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ZpZXdNb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vdmlldy1tb2RlLmVudW0nO1xyXG5pbXBvcnQge01lc3NhZ2VUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vbWVzc2FnZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge0ZpbGVVdGlsc30gZnJvbSAnLi4vLi4vLi4vY29yZS91dGlscy9maWxlLnV0aWxzJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vY29yZS91dGlscyc7XHJcbmltcG9ydCB7U2NlbmUzRFV0aWx9IGZyb20gJy4uLy4uL3RocmVlZHNlbGVjdG9yL3RocmVlZHNlbGVjdG9yL3V0aWxzL3NjZW5lLTNkLnV0aWxzJztcclxuaW1wb3J0IHtSZWxhdGl2ZVBvc2l0aW9uVXRpbHN9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvcmVsYXRpdmUtcG9zaXRpb24udXRpbHMnO1xyXG4vLyBpbXBvcnQgV2ViR1BVIGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9jYXBhYmlsaXRpZXMvV2ViR1BVJztcclxuLy8gaW1wb3J0IFdlYkdMIGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9jYXBhYmlsaXRpZXMvV2ViR0wnO1xyXG4vLyBpbXBvcnQgV2ViR1BVUmVuZGVyZXIgZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3JlbmRlcmVycy93ZWJncHUvV2ViR1BVUmVuZGVyZXInO1xyXG5pbXBvcnQge1dlYkdMUGF0aFRyYWNlcn0gZnJvbSAndGhyZWUtZ3B1LXBhdGh0cmFjZXInO1xyXG5pbXBvcnQge1BhcmFsbGVsTWVzaEJWSFdvcmtlcn0gZnJvbSAndGhyZWUtbWVzaC1idmgvc3JjL3dvcmtlcnMvUGFyYWxsZWxNZXNoQlZIV29ya2VyLmpzJztcclxuaW1wb3J0IHtQb3N0UHJvY2Vzc2luZ1NlcnZpY2V9IGZyb20gJy4vcG9zdC1wcm9jZXNzaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NzclNlcnZpY2V9IGZyb20gJy4vc3NyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NlbmVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHNldCBuZWVkc1JlbmRlcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fbmVlZHNSZW5kZXIgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnBhdGhUcmFjZXIpIHtcclxuICAgICAgdGhpcy5wYXRoVHJhY2VyLnVwZGF0ZUNhbWVyYSgpO1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIudXBkYXRlTGlnaHRzKCk7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci51cGRhdGVNYXRlcmlhbHMoKTtcclxuICAgICAgdGhpcy5wYXRoVHJhY2VyLnVwZGF0ZUVudmlyb25tZW50KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9udW1iZXJPZlNhbXBsZXNSZW5kZXJlZCA9IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5lZWRzUmVuZGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX25lZWRzUmVuZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNjZW5lOiBTY2VuZTtcclxuICBwdWJsaWMgcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXIvKiB8IFdlYkdQVVJlbmRlcmVyKi87XHJcbiAgcHVibGljIHBhdGhUcmFjZXI6IFdlYkdMUGF0aFRyYWNlcjtcclxuXHJcbiAgcHVibGljIG9uQmVmb3JlUmVuZGVyOiBTdWJqZWN0PHsgcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXIsIHNjZW5lOiBTY2VuZSB9PiA9IG5ldyBTdWJqZWN0PHsgcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXIsIHNjZW5lOiBTY2VuZSB9PigpO1xyXG4gIHB1YmxpYyBvbkFmdGVyUmVuZGVyOiBTdWJqZWN0PHsgcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXIsIHNjZW5lOiBTY2VuZSB9PiA9IG5ldyBTdWJqZWN0PHsgcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXIsIHNjZW5lOiBTY2VuZSB9PigpO1xyXG4gIHB1YmxpYyBzY2VuZUluaXRpYWxpemVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICBwdWJsaWMgcmVuZGVyaW5nVGhyb3VnaFBvc3RQcm9jZXNzaW5nUGlwZWxpbmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyB3ZWJHTDJBdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgcHVibGljIGRvbUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG5cclxuICBwcml2YXRlIF9uZWVkc1JlbmRlcjogYm9vbGVhbjtcclxuICBwcml2YXRlIF9hck1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgX21heFJlbmRlclNhbXBsZXM6IG51bWJlcjtcclxuICBwcml2YXRlIF9udW1iZXJPZlNhbXBsZXNSZW5kZXJlZDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NhbWVyYVNlcnZpY2U6IENhbWVyYVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF94clNlcnZpY2U6IFhyU2VydmljZSxcclxuICAgIHByaXZhdGUgX3ZyU2VydmljZTogVnJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYXJTZXJ2aWNlOiBBclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlQnVzU2VydmljZTogTWVzc2FnZUJ1c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF92aWV3TW9kZVNlcnZpY2U6IFZpZXdNb2RlU2VydmljZSxcclxuICAgIHByaXZhdGUgX291dGxpbmVTZXJ2aWNlOiBPdXRsaW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Bvc3RQcm9jZXNzaW5nOiBQb3N0UHJvY2Vzc2luZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zc3JTZXJ2aWNlOiBTc3JTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSAoKSA9PiB0aGlzLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG9tRWxlbWVudCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2NlbmUoKTogU2NlbmUge1xyXG4gICAgcmV0dXJuIHRoaXMuYXJNb2RlID8gdGhpcy5fYXJTZXJ2aWNlLnNjZW5lIDogdGhpcy5zY2VuZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgYXJNb2RlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9hck1vZGUgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9hck1vZGUpIHtcclxuICAgICAgdGhpcy5fYXJTZXJ2aWNlLmluaXQodGhpcy5yZW5kZXJlciBhcyBXZWJHTFJlbmRlcmVyKTtcclxuICAgICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnZpZXdNb2RlID0gVmlld01vZGUuQVI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFyTW9kZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hck1vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5kb21FbGVtZW50ID0gZWxlbWVudDtcclxuICAgIHRoaXMuX2luaXRTY2VuZSgpO1xyXG4gICAgdGhpcy5faW5pdFJlbmRlcmVyKCk7XHJcbiAgICB0aGlzLl9pbml0Q2FtZXJhKCk7XHJcbiAgICB0aGlzLl9pbml0T3V0bGluZSgpO1xyXG4gICAgdGhpcy5faW5pdFBvc3RQcm9jZXNzaW5nKCk7XHJcbiAgICB0aGlzLl9hbmltYXRlKCk7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhTW92ZW1lbnRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9tZXNzYWdlQnVzU2VydmljZS5zdWJzY3JpYmUoTWVzc2FnZVR5cGUuVGFrZVNjcmVlbnNob3QsIGFzeW5jICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fdmlld01vZGVTZXJ2aWNlLmlzM2RWaWV3QWN0aXZlKCkgfHwgdGhpcy5fdmlld01vZGVTZXJ2aWNlLmlzVG9wVmlld0FjdGl2ZSgpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSk7XHJcbiAgICAgICAgICBjb25zdCBkYXRhVXJsID0gdGhpcy5yZW5kZXJlci5kb21FbGVtZW50LnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xyXG4gICAgICAgICAgRmlsZVV0aWxzLkRvd25sb2FkRnJvbURhdGFVcmkoZGF0YVVybCwgYE15Um9vbXBsYW4ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uanBlZ2ApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX2FyU2VydmljZS5zaG91bGRBZGRPYmplY3RUb1NjZW5lLnN1YnNjcmliZSgob2JqZWN0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hck1vZGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZE9iamVjdChvYmplY3QpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnZpZXdNb2RlQ2hhbmdlZC5zdWJzY3JpYmUoKG1vZGUpID0+IHtcclxuICAgICAgICAvLyBpZiAodGhpcy5faXMzRE1vZGUobW9kZSkpIHtcclxuICAgICAgICAvLyAgIHRoaXMuX2FuaW1hdGUoKTtcclxuICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgdGhpcy5fcGF1c2VBbmltYXRpb24oKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgaWYgKG1vZGUgPT09IFZpZXdNb2RlLlZSKSB7XHJcbiAgICAgICAgICB0aGlzLl92clNlcnZpY2UuaW5pdCh0aGlzLnNjZW5lLCB0aGlzLnJlbmRlcmVyIGFzIFdlYkdMUmVuZGVyZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl92clNlcnZpY2UuZW5kU2Vzc2lvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5nc0xvYWRlZC5zdWJzY3JpYmUoKGxvYWRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChsb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuX2luaXRQYXRoVHJhY2VyKCk7XHJcbiAgICAgICAgICB0aGlzLl9tYXhSZW5kZXJTYW1wbGVzID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMubWF4UmVuZGVyU2FtcGxlcztcclxuICAgICAgICAgIHRoaXMuX3NzclNlcnZpY2UuZW5hYmxlZCA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLnNzckVuYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAvLyB0aGlzLl94clNlcnZpY2Uuc2Vzc2lvblN0YXJ0ZWQuc3Vic2NyaWJlKChtb2RlOiBYck1vZGUpID0+IHtcclxuICAgICAgLy8gICBpZiAobW9kZSA9PT0gWHJNb2RlLkFyTW9kZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5fYW5pbWF0ZUFyKCk7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3hyU2VydmljZS5pbml0KHRoaXMucmVuZGVyZXIgYXMgV2ViR0xSZW5kZXJlciwgdGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEpO1xyXG4gICAgdGhpcy5zY2VuZUluaXRpYWxpemVkLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkT2JqZWN0KG9iajogT2JqZWN0M0QsIGZvcmNlUmVuZGVyOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2FyTW9kZSkge1xyXG4gICAgICB0aGlzLl9hclNlcnZpY2UuYWRkT2JqZWN0VG9BUlNjZW5lKG9iaik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNjZW5lLmFkZChvYmopO1xyXG4gICAgICB0aGlzLnVwZGF0ZVBhdGhUcmFjZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZm9yY2VSZW5kZXIpIHtcclxuICAgICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlT2JqZWN0KG9iajogT2JqZWN0M0QsIGZvcmNlUmVuZGVyOiBib29sZWFuID0gdHJ1ZSwgY2xlYW5VcDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuICAgIHRoaXMuc2NlbmUucmVtb3ZlKG9iaik7XHJcbiAgICBpZiAoZm9yY2VSZW5kZXIpIHtcclxuICAgICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoY2xlYW5VcCkge1xyXG4gICAgICBVdGlscy5EaXNwb3NlT2JqZWN0KG9iaik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlUGF0aFRyYWNlcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy5wYXRoVHJhY2VyICYmIHRoaXMucGF0aFRyYWNlcikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMucGF0aFRyYWNlci5zZXRTY2VuZSh0aGlzLnNjZW5lLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9zaXRpb25JblNjZW5lVG9TY3JlZW4ocG9zOiBWZWN0b3IzKTogVmVjdG9yMiB7XHJcbiAgICByZXR1cm4gU2NlbmUzRFV0aWwuQ29udmVydDNEUG9pbnRUb1NjcmVlblBvaW50KFxyXG4gICAgICBwb3MsIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhLCB0aGlzLmRvbUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbmRlcmVyUHJvcHNDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjZW5lLnRyYXZlcnNlKChub2RlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFub2RlLmlzTWVzaCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlLm1hdGVyaWFsKSkge1xyXG4gICAgICAgIG5vZGUubWF0ZXJpYWwuZm9yRWFjaChmdW5jdGlvbiAobWF0ZXJpYWwpIHtcclxuICAgICAgICAgIG1hdGVyaWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBub2RlLm1hdGVyaWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVSZW5kZXJXaXRoT3J0aG9ncmFwaGljQ2FtZXJhKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhc3BlY3Q6IG51bWJlciA9IHdpbmRvdy5pbm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgY29uc3QgZnJ1c3R1bVNpemU6IG51bWJlciA9IDEwO1xyXG4gICAgY29uc3Qgb3J0aG9ncmFwaGljQ2FtZXJhOiBPcnRob2dyYXBoaWNDYW1lcmEgPSBuZXcgT3J0aG9ncmFwaGljQ2FtZXJhKFxyXG4gICAgICBmcnVzdHVtU2l6ZSAqIGFzcGVjdCAvIC0yLFxyXG4gICAgICBmcnVzdHVtU2l6ZSAqIGFzcGVjdCAvIDIsXHJcbiAgICAgIGZydXN0dW1TaXplIC8gMixcclxuICAgICAgZnJ1c3R1bVNpemUgLyAtMixcclxuICAgICAgMC4xLFxyXG4gICAgICAxMDBcclxuICAgICk7XHJcbiAgICBvcnRob2dyYXBoaWNDYW1lcmEucG9zaXRpb24uc2V0KDAsIDMsIC0yKTtcclxuICAgIG9ydGhvZ3JhcGhpY0NhbWVyYS5sb29rQXQoMCwgMCwgLTIpO1xyXG4gICAgb3J0aG9ncmFwaGljQ2FtZXJhLm5hbWUgPSAnb3J0aG9ncmFwaGljY2FtZXJhJztcclxuICAgIHRoaXMuc2NlbmUuYWRkKG9ydGhvZ3JhcGhpY0NhbWVyYSk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCBvcnRob2dyYXBoaWNDYW1lcmEpO1xyXG4gICAgY29uc3QgcmVuZGVyOiBzdHJpbmcgPSB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XHJcbiAgICB0aGlzLnNjZW5lLmdldE9iamVjdEJ5TmFtZSgnb3J0aG9ncmFwaGljY2FtZXJhJykucmVtb3ZlKCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSk7XHJcbiAgICByZXR1cm4gcmVuZGVyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFNjZW5lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY2VuZSA9IG5ldyBTY2VuZSgpO1xyXG4gICAgdGhpcy5fc2V0U2NlbmVCYWNrZ3JvdW5kKCk7XHJcbiAgICAvLyBjb25zdCBib3gxZ2VvID0gbmV3IEJveEdlb21ldHJ5KDEsIDEsIDEpO1xyXG4gICAgLy8gY29uc3QgYm94MSA9IG5ldyBNZXNoKGJveDFnZW8sIG5ldyBNZXNoUGhvbmdNYXRlcmlhbCh7Y29sb3I6ICdncmVlbid9KSk7XHJcbiAgICAvLyBib3gxLnBvc2l0aW9uLnNldCgtMC41LCAwLjcsIC0wLjUpO1xyXG4gICAgLy8gYm94MS5jYXN0U2hhZG93ID0gdHJ1ZTtcclxuICAgIC8vIGJveDEucmVjZWl2ZVNoYWRvdyA9IHRydWU7XHJcbiAgICAvLyB0aGlzLnNjZW5lLmFkZChib3gxKTtcclxuICAgIC8vIGNvbnN0IGJveDJnZW8gPSBuZXcgQm94R2VvbWV0cnkoMC42LCAwLjYsIDAuNik7XHJcbiAgICAvLyBjb25zdCBib3gyID0gbmV3IE1lc2goYm94MmdlbywgbmV3IE1lc2hQaG9uZ01hdGVyaWFsKHtjb2xvcjogJ3JlZCd9KSk7XHJcbiAgICAvLyBib3gyLnBvc2l0aW9uLnNldCgwLjUsIDEuNSwgMC41KTtcclxuICAgIC8vIGJveDIuY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgICAvLyBib3gyLnJlY2VpdmVTaGFkb3cgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5zY2VuZS5hZGQoYm94Mik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q2FtZXJhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2FtZXJhU2VydmljZS5pbml0KHRoaXMuZG9tRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0T3V0bGluZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX291dGxpbmVTZXJ2aWNlLmluaXQodGhpcy5yZW5kZXJlciBhcyBXZWJHTFJlbmRlcmVyLCB0aGlzLnNjZW5lLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSxcclxuICAgICAgdGhpcy5kb21FbGVtZW50LmNsaWVudFdpZHRoICogd2luZG93LmRldmljZVBpeGVsUmF0aW8sXHJcbiAgICAgIHRoaXMuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0UG9zdFByb2Nlc3NpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZy5pbml0KHRoaXMucmVuZGVyZXIgYXMgV2ViR0xSZW5kZXJlciwgdGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEsXHJcbiAgICAgIHRoaXMuZG9tRWxlbWVudC5jbGllbnRXaWR0aCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLFxyXG4gICAgICB0aGlzLmRvbUVsZW1lbnQuY2xpZW50SGVpZ2h0ICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdFBhdGhUcmFjZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMucGF0aFRyYWNlcikge1xyXG4gICAgICB0aGlzLnBhdGhUcmFjZXIgPSBuZXcgV2ViR0xQYXRoVHJhY2VyKHRoaXMucmVuZGVyZXIgYXMgV2ViR0xSZW5kZXJlcik7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci5zZXRCVkhXb3JrZXIobmV3IFBhcmFsbGVsTWVzaEJWSFdvcmtlcigpKTtcclxuICAgICAgdGhpcy5wYXRoVHJhY2VyLmZpbHRlckdsb3NzeUZhY3RvciA9IDE7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci50aWxlcy5zZXQoMywgMyk7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci5tdWx0aXBsZUltcG9ydGFuY2VTYW1wbGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci50cmFuc21pc3NpdmVCb3VuY2VzID0gMTA7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci5yZW5kZXJTY2FsZSA9IDE7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci5zZXRTY2VuZSh0aGlzLnNjZW5lLCB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSk7XHJcbiAgICAgIHRoaXMucGF0aFRyYWNlci5lbmFibGVQYXRoVHJhY2luZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9pbml0UmVuZGVyZXIoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBpZiAoV2ViR1BVLmlzQXZhaWxhYmxlKCkgPT09IGZhbHNlICYmIFdlYkdMLmlzV2ViR0wyQXZhaWxhYmxlKCkgPT09IGZhbHNlKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoIFdlYkdQVS5nZXRFcnJvck1lc3NhZ2UoKSApO1xyXG4gICAgLy8gICB0aHJvdyBuZXcgRXJyb3IoJ05vIFdlYkdQVSBvciBXZWJHTDIgc3VwcG9ydCcpO1xyXG4gICAgLy8gfVxyXG4gICAgY29uc3QgY2FudmFzRWxlbWVudDogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIGNvbnN0IGNvbnRleHQ6IGFueSA9IGNhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgnd2ViZ2wyJyk7XHJcbiAgICB0aGlzLndlYkdMMkF2YWlsYWJsZSA9IGNvbnRleHQgIT09IHVuZGVmaW5lZDtcclxuICAgIC8vIHRoaXMucmVuZGVyZXIgPSBuZXcgV2ViR1BVUmVuZGVyZXIoeyBhbHBoYTogdHJ1ZSwgYW50aWFsaWFzOiB0cnVlIH0pO1xyXG4gICAgLy8gdGhpcy5yZW5kZXJlciA9XHJcbiAgICAvLyAgIG5ldyBXZWJHTFJlbmRlcmVyKHtcclxuICAgIC8vICAgICBjYW52YXM6IGNhbnZhc0VsZW1lbnQsXHJcbiAgICAvLyAgICAgY29udGV4dDogY29udGV4dCxcclxuICAgIC8vICAgICBhbHBoYTogdHJ1ZSxcclxuICAgIC8vICAgICBhbnRpYWxpYXM6IHRydWUsXHJcbiAgICAvLyAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlLFxyXG4gICAgLy8gICAgIHByZW11bHRpcGxpZWRBbHBoYTogZmFsc2UvKixcclxuICAgIC8vICAgICBsb2dhcml0aG1pY0RlcHRoQnVmZmVyOiB0cnVlKi9cclxuICAgIC8vICAgfSk7XHJcbiAgICAvLyB0aGlzLnJlbmRlcmVyID0gbmV3IFdlYkdMUmVuZGVyZXIoe2FscGhhOiB0cnVlLCBhbnRpYWxpYXM6IGZhbHNlLCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsIHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZX0pO1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IG5ldyBXZWJHTFJlbmRlcmVyKHtcclxuLypcclxuICAgICAgcHJlY2lzaW9uOiAnaGlnaHAnLFxyXG4gICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcclxuKi9cclxuLypcclxuICAgICAgYW50aWFsaWFzOiB0cnVlLFxyXG4qL1xyXG4vKlxyXG4gICAgICBzdGVuY2lsOiBmYWxzZSxcclxuICAgICAgZGVwdGg6IGZhbHNlXHJcbiovXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVuZGVyZXIub3V0cHV0Q29sb3JTcGFjZSA9IFNSR0JDb2xvclNwYWNlO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hdXRvQ2xlYXIgPSB0cnVlO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQaXhlbFJhdGlvKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcclxuICAgIHRoaXMucmVuZGVyZXIudG9uZU1hcHBpbmcgPSBOb1RvbmVNYXBwaW5nOyAvLyBBQ0VTRmlsbWljVG9uZU1hcHBpbmc7IC8vIExpbmVhclRvbmVNYXBwaW5nO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAuZW5hYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd01hcC50eXBlID0gUENGU29mdFNoYWRvd01hcDtcclxuICAgIHRoaXMuZG9tRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5kb21FbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCAndGhyZWVkX2NhbnZhcycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzaXplUmVuZGVyZXJUb0Rpc3BsYXlTaXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHRoaXMuZG9tRWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kb21FbGVtZW50LmNsaWVudEhlaWdodCwgdHJ1ZSk7XHJcbiAgICB0aGlzLl9vdXRsaW5lU2VydmljZS5zZXRTaXplKHRoaXMuZG9tRWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kb21FbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZy5zZXRTaXplKHRoaXMuZG9tRWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5kb21FbGVtZW50LmNsaWVudEhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVXaW5kb3dTaXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVzaXplUmVuZGVyZXJUb0Rpc3BsYXlTaXplKCk7XHJcbiAgICBSZWxhdGl2ZVBvc2l0aW9uVXRpbHMuU2V0QXBwbGljYXRpb25PZmZzZXQodGhpcy5kb21FbGVtZW50KTtcclxuICAgIGlmICh0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSBpbnN0YW5jZW9mIFBlcnNwZWN0aXZlQ2FtZXJhKSB7XHJcbiAgICAgIGNvbnN0IGFzcGVjdCA9IHRoaXMuZG9tRWxlbWVudC5jbGllbnRXaWR0aCAvIHRoaXMuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UucmVhbEFzcGVjdFJhdGlvID0gYXNwZWN0O1xyXG4gICAgICB0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS5hc3BlY3QgPSBhc3BlY3Q7XHJcbiAgICAgICh0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYSBhcyBQZXJzcGVjdGl2ZUNhbWVyYSkudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uZWVkc1JlbmRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0NhbnZhc1Jlc2l6ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRvbUVsZW1lbnQuY2xpZW50V2lkdGggIT09IHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudC53aWR0aCB8fFxyXG4gICAgICB0aGlzLmRvbUVsZW1lbnQuY2xpZW50SGVpZ2h0ICE9PSB0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQuaGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZVdpbmRvd1NpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbmRlcih0LCBmcmFtZSkge1xyXG4gICAgaWYgKCF0aGlzLnJlbmRlcmVyLnhyLmVuYWJsZWQpIHtcclxuICAgICAgVFdFRU4udXBkYXRlKCk7XHJcbiAgICAgIHRoaXMuX2NoZWNrQ2FudmFzUmVzaXplKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMucGF0aFRyYWNlciAmJiB0aGlzLnBhdGhUcmFjZXIpIHtcclxuICAgICAgaWYgKHRoaXMuX251bWJlck9mU2FtcGxlc1JlbmRlcmVkID49IHRoaXMuX21heFJlbmRlclNhbXBsZXMpIHtcclxuICAgICAgICB0aGlzLnBhdGhUcmFjZXIuZW5hYmxlUGF0aFRyYWNpbmcgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhdGhUcmFjZXIuZW5hYmxlUGF0aFRyYWNpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnBhdGhUcmFjZXIucmVuZGVyU2FtcGxlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fbnVtYmVyT2ZTYW1wbGVzUmVuZGVyZWQgPSBNYXRoLmZsb29yKHRoaXMucGF0aFRyYWNlci5zYW1wbGVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9uZWVkc1JlbmRlciB8fCB0aGlzLmFyTW9kZSB8fCB0aGlzLl92aWV3TW9kZVNlcnZpY2UuaXNWUlZpZXdBY3RpdmUoKSB8fCB0aGlzLl9vdXRsaW5lU2VydmljZS5uZWVkc1JlbmRlcikge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuY2xlYXIoKTtcclxuICAgICAgICBpZiAodGhpcy5fYXJNb2RlICYmIGZyYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLl9hclNlcnZpY2UuaGFuZGxlRnJhbWUoZnJhbWUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fdmlld01vZGVTZXJ2aWNlLmlzVlJWaWV3QWN0aXZlKCkpIHtcclxuICAgICAgICAgIHRoaXMuX3ZyU2VydmljZS5yZW5kZXIoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5vbkJlZm9yZVJlbmRlci5uZXh0KHtyZW5kZXJlcjogdGhpcy5yZW5kZXJlciBhcyBXZWJHTFJlbmRlcmVyLCBzY2VuZTogdGhpcy5zY2VuZX0pO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnJlbmRlcmluZ1Rocm91Z2hQb3N0UHJvY2Vzc2luZ1BpcGVsaW5lKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuc2NlbmUsIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nLnJlbmRlcigpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9vdXRsaW5lU2VydmljZS5yZW5kZXIoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuc2NlbmUsIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkFmdGVyUmVuZGVyLm5leHQoe3JlbmRlcmVyOiB0aGlzLnJlbmRlcmVyIGFzIFdlYkdMUmVuZGVyZXIsIHNjZW5lOiB0aGlzLnNjZW5lfSk7XHJcbiAgICAgICAgdGhpcy5fb3V0bGluZVNlcnZpY2UubmVlZHNSZW5kZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5lZWRzUmVuZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FuaW1hdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEFuaW1hdGlvbkxvb3AoKHRpbWVzdGFtcCwgZnJhbWUpID0+IHRoaXMuX3JlbmRlcih0aW1lc3RhbXAsIGZyYW1lKSk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcGF1c2VBbmltYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEFuaW1hdGlvbkxvb3AobnVsbCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXMzRE1vZGUobW9kZTogVmlld01vZGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBtb2RlICE9PSBWaWV3TW9kZS5GbG9vclBsYW4yRDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFNjZW5lQmFja2dyb3VuZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzTG9hZGVkLnN1YnNjcmliZSgobG9hZGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAobG9hZGVkICYmIHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5zY2VuZUJhY2tncm91bmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zY2VuZS5iYWNrZ3JvdW5kID0gbmV3IFRleHR1cmVMb2FkZXIoKS5sb2FkKHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5zY2VuZUJhY2tncm91bmQsIChtYXRlcmlhbCkgPT4ge1xyXG4gICAgICAgICAgICAgIG1hdGVyaWFsLmNvbG9yU3BhY2UgPSBTUkdCQ29sb3JTcGFjZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGxvYWRlZCAmJiB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Muc2NlbmVCYWNrZ3JvdW5kQ29sb3IpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICB0aGlzLnNjZW5lLmJhY2tncm91bmQgPSBuZXcgQ29sb3IocGFyc2VJbnQodGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLnNjZW5lQmFja2dyb3VuZENvbG9yLCAwKSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2NlbmVDYW52YXNJbWFnZSgpOiBzdHJpbmcge1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSwgdGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudC50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { Injectable } from '@angular/core';
11
2
  import * as i0 from "@angular/core";
12
3
  import * as i1 from "../../../core/service/homedecorator-settings.service";
@@ -28,48 +19,6 @@ export class SsrService {
28
19
  ngOnDestroy() {
29
20
  this._subs.forEach(s => s.unsubscribe());
30
21
  }
31
- init() {
32
- const socket = new WebSocket('ws://localhost:7005');
33
- const peerConnection = new RTCPeerConnection({
34
- iceServers: [{ urls: 'stun:stun.1.google.com:19302' }]
35
- });
36
- peerConnection.onicecandidate = (event) => {
37
- if (event.candidate) {
38
- socket.send(JSON.stringify({ candidate: event.candidate }));
39
- }
40
- };
41
- peerConnection.ontrack = (event) => {
42
- const remoteVideo = document.getElementById('remoteVideo');
43
- // @ts-ignore
44
- if (remoteVideo.srcObject !== event.streams[0]) {
45
- // @ts-ignore
46
- remoteVideo.srcObject = event.streams[0];
47
- }
48
- };
49
- socket.onmessage = (message) => __awaiter(this, void 0, void 0, function* () {
50
- try {
51
- const text = yield message.data.text();
52
- const data = JSON.parse(text);
53
- if (data.offer) {
54
- yield peerConnection.setRemoteDescription(new RTCSessionDescription(data.offer));
55
- const answer = yield peerConnection.createAnswer();
56
- yield peerConnection.setLocalDescription(answer);
57
- socket.send(JSON.stringify({ answer: peerConnection.localDescription }));
58
- }
59
- else if (data.candidate) {
60
- try {
61
- yield peerConnection.addIceCandidate(new RTCIceCandidate(data.candidate));
62
- }
63
- catch (e) {
64
- console.error('Error adding ICE-Candidate', e);
65
- }
66
- }
67
- }
68
- catch (e) {
69
- console.error(e);
70
- }
71
- });
72
- }
73
22
  sceneChanged(scene) {
74
23
  if (this._websocket.readyState === WebSocket.OPEN) {
75
24
  const sceneClone = scene.clone(true);
@@ -101,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
101
50
  providedIn: 'root'
102
51
  }]
103
52
  }], ctorParameters: function () { return [{ type: i1.HomedecoratorSettingsService }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9zZXJ2aWNlL3Nzci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7OztBQVFwRCxNQUFNLE9BQU8sVUFBVTtJQWlCckIsWUFDVSxnQkFBOEM7UUFBOUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUxoRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBbUIsRUFBRSxDQUFDO0lBTW5DLENBQUM7SUFsQkQsSUFBVyxPQUFPLENBQUMsS0FBYztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBV0QsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLElBQUk7UUFDVCxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sY0FBYyxHQUFHLElBQUksaUJBQWlCLENBQUM7WUFDM0MsVUFBVSxFQUFFLENBQUMsRUFBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUMsQ0FBQztTQUNyRCxDQUFDLENBQUM7UUFDSCxjQUFjLENBQUMsY0FBYyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFF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QyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7d0dBeEZVLFVBQVU7NEdBQVYsVUFBVSxjQUZULE1BQU07NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtPYmplY3QzRH0gZnJvbSAndGhyZWUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3NyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBzZXQgZW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZW5hYmxlZCA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fcHJlcGFyZVdlYnNvY2tldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF93ZWJzb2NrZXQ6IFdlYlNvY2tldDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IEhvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldCgnd3M6Ly9sb2NhbGhvc3Q6NzAwNScpO1xyXG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oe1xyXG4gICAgICBpY2VTZXJ2ZXJzOiBbe3VybHM6ICdzdHVuOnN0dW4uMS5nb29nbGUuY29tOjE5MzAyJ31dXHJcbiAgICB9KTtcclxuICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC5jYW5kaWRhdGUpIHtcclxuICAgICAgICBzb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7Y2FuZGlkYXRlOiBldmVudC5jYW5kaWRhdGV9KSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBwZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlbW90ZVZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbW90ZVZpZGVvJyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHJlbW90ZVZpZGVvLnNyY09iamVjdCAhPT0gZXZlbnQuc3RyZWFtc1swXSkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICByZW1vdGVWaWRlby5zcmNPYmplY3QgPSBldmVudC5zdHJlYW1zWzBdO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgc29ja2V0Lm9ubWVzc2FnZSA9IGFzeW5jIChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IG1lc3NhZ2UuZGF0YS50ZXh0KCk7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodGV4dCk7XHJcbiAgICAgICAgaWYgKGRhdGEub2ZmZXIpIHtcclxuICAgICAgICAgIGF3YWl0IHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGF0YS5vZmZlcikpO1xyXG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKCk7XHJcbiAgICAgICAgICBhd2FpdCBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGFuc3dlcik7XHJcbiAgICAgICAgICBzb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7YW5zd2VyOiBwZWVyQ29ubmVjdGlvbi5sb2NhbERlc2NyaXB0aW9ufSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5jYW5kaWRhdGUpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHBlZXJDb25uZWN0aW9uLmFkZEljZUNhbmRpZGF0ZShuZXcgUlRDSWNlQ2FuZGlkYXRlKGRhdGEuY2FuZGlkYXRlKSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFkZGluZyBJQ0UtQ2FuZGlkYXRlJywgZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNjZW5lQ2hhbmdlZChzY2VuZTogT2JqZWN0M0QpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl93ZWJzb2NrZXQucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcclxuICAgICAgY29uc3Qgc2NlbmVDbG9uZTogT2JqZWN0M0QgPSBzY2VuZS5jbG9uZSh0cnVlKTtcclxuICAgICAgdGhpcy5fd2Vic29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoc2NlbmVDbG9uZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZVdlYnNvY2tldCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMud2Vic29ja2V0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHdlYlNvY2tldENvbm5lY3Rpb246IHN0cmluZyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5uZXdSZW5kZXJQYXJhbWV0ZXJzLndlYnNvY2tldDtcclxuICAgIHRoaXMuX3dlYnNvY2tldCA9IG5ldyBXZWJTb2NrZXQod2ViU29ja2V0Q29ubmVjdGlvbik7XHJcbiAgICAvLyB3ZWJTb2NrZXQub25vcGVuID0gKCkgPT4ge1xyXG4gICAgLy8gICB3ZWJTb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAvLyB9O1xyXG4gICAgdGhpcy5fd2Vic29ja2V0Lm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9zZXJ2aWNlL3Nzci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7OztBQVFwRCxNQUFNLE9BQU8sVUFBVTtJQWlCckIsWUFDVSxnQkFBOEM7UUFBOUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUxoRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBbUIsRUFBRSxDQUFDO0lBTW5DLENBQUM7SUFsQkQsSUFBVyxPQUFPLENBQUMsS0FBYztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBV0QsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFlO1FBQ2pDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRTtZQUNqRCxNQUFNLFVBQVUsR0FBYSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFO1lBQ2pFLE9BQU87U0FDUjtRQUNELE1BQU0sbUJBQW1CLEdBQVcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7UUFDakcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JELDZCQUE2QjtRQUM3QiwwQ0FBMEM7UUFDMUMsS0FBSztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNyQjtRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7O3dHQWhEVSxVQUFVOzRHQUFWLFVBQVUsY0FGVCxNQUFNOzRGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7T2JqZWN0M0R9IGZyb20gJ3RocmVlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNzclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgc2V0IGVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2VuYWJsZWQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLl9lbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuX3ByZXBhcmVXZWJzb2NrZXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9lbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBfd2Vic29ja2V0OiBXZWJTb2NrZXQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2V0dGluZ3NTZXJ2aWNlOiBIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2NlbmVDaGFuZ2VkKHNjZW5lOiBPYmplY3QzRCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3dlYnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xyXG4gICAgICBjb25zdCBzY2VuZUNsb25lOiBPYmplY3QzRCA9IHNjZW5lLmNsb25lKHRydWUpO1xyXG4gICAgICB0aGlzLl93ZWJzb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShzY2VuZUNsb25lKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlV2Vic29ja2V0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MubmV3UmVuZGVyUGFyYW1ldGVycy53ZWJzb2NrZXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd2ViU29ja2V0Q29ubmVjdGlvbjogc3RyaW5nID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm5ld1JlbmRlclBhcmFtZXRlcnMud2Vic29ja2V0O1xyXG4gICAgdGhpcy5fd2Vic29ja2V0ID0gbmV3IFdlYlNvY2tldCh3ZWJTb2NrZXRDb25uZWN0aW9uKTtcclxuICAgIC8vIHdlYlNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XHJcbiAgICAvLyAgIHdlYlNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIC8vIH07XHJcbiAgICB0aGlzLl93ZWJzb2NrZXQub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -101,7 +101,7 @@ export class LiteSelectorComponent {
101
101
  }
102
102
  }
103
103
  LiteSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LiteSelectorComponent, deps: [{ token: i1.HomedecoratorConnectorService }, { token: i2.BuildFurnitureService }, { token: i3.HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Component });
104
- LiteSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LiteSelectorComponent, selector: "rp-lite-selector", inputs: { showAnswers: "showAnswers", show: "show", showSelections: "showSelections", showLabel: "showLabel", canClose: "canClose", metadata: "metadata", customDimensions: "customDimensions" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.custom-dimensions": "this.customDimensions" } }, viewQueries: [{ propertyName: "templateAnswers", first: true, predicate: ["templateAnswers"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"show\">\r\n <rp-selections-summary *ngIf=\"showSelections && iOne.selectionsToDisplay.length > 0\" @showSelections [@.disabled]=\"!animateSlideout\"\r\n class=\"rp-selections-summary\"\r\n [showLabel]=\"showLabel\"\r\n [canClose]=\"canClose\"\r\n [customDimensions]=\"customDimensions\"\r\n [answersTemplate]=\"inlineAnswers ? templateAnswers : undefined\"\r\n [answerToShowFromSelectionText]=\"answerToShowFromSelectionText\"\r\n [selections]=\"iOne.selectionsToDisplay\"\r\n (selectSelection)=\"onSelectionsSummarySelectSelection($event)\"\r\n (closeClick)=\"onCloseLiteSelectorButtonClick()\"\r\n >\r\n </rp-selections-summary>\r\n <ng-container *ngIf=\"!inlineAnswers\" [ngTemplateOutlet]=\"templateAnswers\"></ng-container>\r\n</ng-container>\r\n\r\n<ng-template #templateAnswers>\r\n <rp-answers-slideout\r\n class=\"rp-answers-slideout\"\r\n [metadata]=\"metadata\"\r\n [isShown]=\"showAnswers && buildFurnitureService.activeAnswers.length > 0\"\r\n [showTitle]=\"!inlineAnswers\"\r\n [showFilter]=\"!inlineAnswers\"\r\n [useSlideout]=\"!inlineAnswers\"\r\n [customDimensions]=\"customDimensions\"\r\n [question]=\"buildFurnitureService.activeQuestion\"\r\n [answers]=\"buildFurnitureService.activeAnswers\"\r\n (answerChosen)=\"onAnswersSlideoutAnswerChosen($event)\"\r\n ></rp-answers-slideout>\r\n</ng-template>\r\n", styles: [":host.floating ::ng-deep rp-selections-summary{position:absolute;right:0;max-height:calc(100vh - 120px)}:host:not(.custom-dimensions).floating ::ng-deep rp-selections-summary{top:64px;max-height:calc(100vh - 184px)}\n"], components: [{ type: i4.SelectionsSummaryComponent, selector: "rp-selections-summary", inputs: ["selections", "showLabel", "canClose", "answersTemplate", "answerToShowFromSelectionText", "customDimensions"], outputs: ["closeClick", "cancelAnswers", "selectSelection"] }, { type: i5.AnswersSlideoutComponent, selector: "rp-answers-slideout", inputs: ["isShown", "question", "showTitle", "showFilter", "metadata", "answers", "useSlideout", "customDimensions"], outputs: ["isShownChange", "answerChosen"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
104
+ LiteSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LiteSelectorComponent, selector: "rp-lite-selector", inputs: { showAnswers: "showAnswers", show: "show", showSelections: "showSelections", showLabel: "showLabel", canClose: "canClose", metadata: "metadata", customDimensions: "customDimensions" }, outputs: { showChange: "showChange", answerChosen: "answerChosen" }, host: { properties: { "class.custom-dimensions": "this.customDimensions" } }, viewQueries: [{ propertyName: "templateAnswers", first: true, predicate: ["templateAnswers"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"show\">\r\n <rp-selections-summary *ngIf=\"showSelections && iOne.selectionsToDisplay.length > 0\" @showSelections [@.disabled]=\"!animateSlideout\"\r\n class=\"rp-selections-summary\"\r\n [showLabel]=\"showLabel\"\r\n [canClose]=\"canClose\"\r\n [customDimensions]=\"customDimensions\"\r\n [answersTemplate]=\"inlineAnswers ? templateAnswers : undefined\"\r\n [answerToShowFromSelectionText]=\"answerToShowFromSelectionText\"\r\n [selections]=\"iOne.selectionsToDisplay\"\r\n (selectSelection)=\"onSelectionsSummarySelectSelection($event)\"\r\n (closeClick)=\"onCloseLiteSelectorButtonClick()\"\r\n >\r\n </rp-selections-summary>\r\n <ng-container *ngIf=\"!inlineAnswers\" [ngTemplateOutlet]=\"templateAnswers\"></ng-container>\r\n</ng-container>\r\n\r\n<ng-template #templateAnswers>\r\n <rp-answers-slideout\r\n class=\"rp-answers-slideout\"\r\n [metadata]=\"metadata\"\r\n [isShown]=\"showAnswers && iOne.activeAnswers.length > 0\"\r\n [showTitle]=\"!inlineAnswers\"\r\n [showFilter]=\"!inlineAnswers\"\r\n [useSlideout]=\"!inlineAnswers\"\r\n [customDimensions]=\"customDimensions\"\r\n [question]=\"iOne.activeQuestion\"\r\n [answers]=\"iOne.activeAnswers\"\r\n (answerChosen)=\"onAnswersSlideoutAnswerChosen($event)\"\r\n ></rp-answers-slideout>\r\n</ng-template>\r\n", styles: [":host.floating ::ng-deep rp-selections-summary{position:absolute;right:0;max-height:calc(100vh - 120px)}:host:not(.custom-dimensions).floating ::ng-deep rp-selections-summary{top:64px;max-height:calc(100vh - 184px)}\n"], components: [{ type: i4.SelectionsSummaryComponent, selector: "rp-selections-summary", inputs: ["selections", "showLabel", "canClose", "answersTemplate", "answerToShowFromSelectionText", "customDimensions"], outputs: ["closeClick", "cancelAnswers", "selectSelection"] }, { type: i5.AnswersSlideoutComponent, selector: "rp-answers-slideout", inputs: ["isShown", "question", "showTitle", "showFilter", "metadata", "answers", "useSlideout", "customDimensions"], outputs: ["isShownChange", "answerChosen"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [
105
105
  trigger('showSelections', [
106
106
  state('void', style({ 'transform': 'translateX(100%)', opacity: 0 })),
107
107
  state('*', style({ 'transform': 'translateX(0%)', opacity: 1 })),
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
147
147
  }], answerChosen: [{
148
148
  type: Output
149
149
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl0ZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2xpdGUtc2VsZWN0b3IvbGl0ZS1zZWxlY3Rvci9saXRlLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvbGl0ZS1zZWxlY3Rvci9saXRlLXNlbGVjdG9yL2xpdGUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlySCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQWtCL0UsTUFBTSxPQUFPLHFCQUFxQjtJQThEaEMsWUFDUyxJQUFtQyxFQUNuQyxxQkFBNEMsRUFDM0MsZ0JBQThDO1FBRi9DLFNBQUksR0FBSixJQUFJLENBQStCO1FBQ25DLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDM0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQWhDakQsY0FBUyxHQUFZLElBQUksQ0FBQztRQUcxQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBT3pCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUd6QixlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFHaEUsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUl6RSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixvQkFBZSxHQUFZLElBQUksQ0FBQztRQUcvQixvQkFBZSxHQUFZLEtBQUssQ0FBQztR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QUFPLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ3hCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDOzRCQUNuRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs0QkFDOUQsVUFBVSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQ3ZDLENBQUM7cUJBQ0g7aUJBQ0Y7bU1BR1EsZUFBZTtzQkFEckIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJdEQsV0FBVztzQkFEckIsS0FBSztnQkFpQkMsSUFBSTtzQkFEVixLQUFLO2dCQUlLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBVUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsZ0JBQWdCO3NCQUZ0QixXQUFXO3VCQUFDLHlCQUF5Qjs7c0JBQ3JDLEtBQUs7Z0JBSVUsVUFBVTtzQkFEekIsTUFBTTtnQkFJUyxZQUFZO3NCQUQzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2Fuc3dlcic7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge01ldGFkYXRhfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvbWV0YWRhdGEnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7QnVpbGRGdXJuaXR1cmVTZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL2J1aWxkLWZ1cm5pdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnAtbGl0ZS1zZWxlY3RvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpdGUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xpdGUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzaG93U2VsZWN0aW9ucycsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J3RyYW5zZm9ybSc6ICd0cmFuc2xhdGVYKDEwMCUpJywgb3BhY2l0eTogMH0pKSxcclxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7J3RyYW5zZm9ybSc6ICd0cmFuc2xhdGVYKDAlKScsIG9wYWNpdHk6IDF9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPD0+IConLCBhbmltYXRlKDIwMCkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpdGVTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVBbnN3ZXJzJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIHRlbXBsYXRlQW5zd2VyczogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNob3dBbnN3ZXJzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93QW5zd2VycyA9IHZhbHVlO1xyXG4gICAgaWYgKCF0aGlzLnNob3dBbnN3ZXJzKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYW5pbWF0ZVNsaWRlb3V0ID0gdHJ1ZTtcclxuICAgICAgfSwgNDAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYW5pbWF0ZVNsaWRlb3V0ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dBbnN3ZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dBbnN3ZXJzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvdzogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNob3dTZWxlY3Rpb25zKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93U2VsZWN0aW9ucyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaG93U2VsZWN0aW9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zaG93U2VsZWN0aW9ucztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkNsb3NlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmN1c3RvbS1kaW1lbnNpb25zJylcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXN0b21EaW1lbnNpb25zOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBhbnN3ZXJDaG9zZW46IEV2ZW50RW1pdHRlcjxBbnN3ZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxBbnN3ZXI+KCk7XHJcblxyXG4gIHB1YmxpYyBhbnN3ZXJUb1Nob3dGcm9tU2VsZWN0aW9uVGV4dDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgaW5saW5lQW5zd2VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhbmltYXRlU2xpZGVvdXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zaG93QW5zd2VyczogYm9vbGVhbjtcclxuICBwcml2YXRlIF9hbnN3ZXJzU2hvd2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3Nob3dTZWxlY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uU2VsZWN0ZWQ6IFNlbGVjdGlvbjtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpT25lOiBIb21lZGVjb3JhdG9yQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHB1YmxpYyBidWlsZEZ1cm5pdHVyZVNlcnZpY2U6IEJ1aWxkRnVybml0dXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLmlPbmUuYW5zd2Vyc1JlY2VpdmVkLnN1YnNjcmliZSgoYW5zd2VyczogQW5zd2VyW10pID0+IHtcclxuICAgICAgICB0aGlzLmFuc3dlclRvU2hvd0Zyb21TZWxlY3Rpb25UZXh0ID1cclxuICAgICAgICAgIHRoaXMuaW5saW5lQW5zd2VycyAmJiBhbnN3ZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5fc2VsZWN0aW9uU2VsZWN0ZWQgP1xyXG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZWxlY3RlZC5xdWVzdGlvbiA6XHJcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9hbnN3ZXJzU2hvd2luZyA9IGFuc3dlcnMubGVuZ3RoID4gMDtcclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5nc0xvYWRlZC5zdWJzY3JpYmUoKGxvYWRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChsb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5saW5lQW5zd2VycyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zID8gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuaW5saW5lQW5zd2VycyA6IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy50ZW1wbGF0ZUFuc3dlcnMgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZUxpdGVTZWxlY3RvckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLyB0b2RvOiBtb3ZlIHRvIHRocmVlZHNlbGVjdG9yLmNvbXBvbmVudCB0byBiZSBhYmxlIHRvIGhhbmRsZSBlcnJvcnM/XHJcbiAgcHVibGljIGFzeW5jIG9uU2VsZWN0aW9uc1N1bW1hcnlTZWxlY3RTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmlubGluZUFuc3dlcnMgJiYgdGhpcy5hbnN3ZXJUb1Nob3dGcm9tU2VsZWN0aW9uVGV4dCkge1xyXG4gICAgICBpZiAodGhpcy5fc2VsZWN0aW9uU2VsZWN0ZWQgIT09IHNlbGVjdGlvbikge1xyXG4gICAgICAgIGlmICh0aGlzLl9hbnN3ZXJzU2hvd2luZykge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2UuY2FuY2VsQW5zd2VyKHRoaXMubWV0YWRhdGEsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2Uuc2VsZWN0U2VsZWN0aW9uKHNlbGVjdGlvbiwgdGhpcy5tZXRhZGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2Fuc3dlcnNTaG93aW5nKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmJ1aWxkRnVybml0dXJlU2VydmljZS5jYW5jZWxBbnN3ZXIodGhpcy5tZXRhZGF0YSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2Uuc2VsZWN0U2VsZWN0aW9uKHNlbGVjdGlvbiwgdGhpcy5tZXRhZGF0YSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25TZWxlY3RlZCA9IHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFuc3dlcnNTbGlkZW91dEFuc3dlckNob3NlbihhbnN3ZXJTZWxlY3RlZDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9hbnN3ZXJzU2hvd2luZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2Uuc2VsZWN0QW5zd2VyKGFuc3dlclNlbGVjdGVkLmFuc3dlciwgYW5zd2VyU2VsZWN0ZWQuaW5wdXQsIHRoaXMubWV0YWRhdGEpO1xyXG4gICAgdGhpcy5hbnN3ZXJDaG9zZW4ubmV4dChhbnN3ZXJTZWxlY3RlZC5hbnN3ZXIpO1xyXG4gICAgLy8gdGhpcy5pT25lLmdldE1vb2RJbWFnZUZvckFuc3dlclNlbGVjdGlvbihhbnN3ZXJTZWxlY3RlZC5hbnN3ZXIsIGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dcIj5cclxuICA8cnAtc2VsZWN0aW9ucy1zdW1tYXJ5ICpuZ0lmPVwic2hvd1NlbGVjdGlvbnMgJiYgaU9uZS5zZWxlY3Rpb25zVG9EaXNwbGF5Lmxlbmd0aCA+IDBcIiBAc2hvd1NlbGVjdGlvbnMgW0AuZGlzYWJsZWRdPVwiIWFuaW1hdGVTbGlkZW91dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJwLXNlbGVjdGlvbnMtc3VtbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cInNob3dMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2FuQ2xvc2VdPVwiY2FuQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbURpbWVuc2lvbnNdPVwiY3VzdG9tRGltZW5zaW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYW5zd2Vyc1RlbXBsYXRlXT1cImlubGluZUFuc3dlcnMgPyB0ZW1wbGF0ZUFuc3dlcnMgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2Fuc3dlclRvU2hvd0Zyb21TZWxlY3Rpb25UZXh0XT1cImFuc3dlclRvU2hvd0Zyb21TZWxlY3Rpb25UZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25zXT1cImlPbmUuc2VsZWN0aW9uc1RvRGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0U2VsZWN0aW9uKT1cIm9uU2VsZWN0aW9uc1N1bW1hcnlTZWxlY3RTZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJvbkNsb3NlTGl0ZVNlbGVjdG9yQnV0dG9uQ2xpY2soKVwiXHJcbiAgPlxyXG4gIDwvcnAtc2VsZWN0aW9ucy1zdW1tYXJ5PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5saW5lQW5zd2Vyc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlQW5zd2Vyc1wiPjwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVBbnN3ZXJzPlxyXG4gIDxycC1hbnN3ZXJzLXNsaWRlb3V0XHJcbiAgICBjbGFzcz1cInJwLWFuc3dlcnMtc2xpZGVvdXRcIlxyXG4gICAgW21ldGFkYXRhXT1cIm1ldGFkYXRhXCJcclxuICAgIFtpc1Nob3duXT1cInNob3dBbnN3ZXJzICYmIGJ1aWxkRnVybml0dXJlU2VydmljZS5hY3RpdmVBbnN3ZXJzLmxlbmd0aCA+IDBcIlxyXG4gICAgW3Nob3dUaXRsZV09XCIhaW5saW5lQW5zd2Vyc1wiXHJcbiAgICBbc2hvd0ZpbHRlcl09XCIhaW5saW5lQW5zd2Vyc1wiXHJcbiAgICBbdXNlU2xpZGVvdXRdPVwiIWlubGluZUFuc3dlcnNcIlxyXG4gICAgW2N1c3RvbURpbWVuc2lvbnNdPVwiY3VzdG9tRGltZW5zaW9uc1wiXHJcbiAgICBbcXVlc3Rpb25dPVwiYnVpbGRGdXJuaXR1cmVTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uXCJcclxuICAgIFthbnN3ZXJzXT1cImJ1aWxkRnVybml0dXJlU2VydmljZS5hY3RpdmVBbnN3ZXJzXCJcclxuICAgIChhbnN3ZXJDaG9zZW4pPVwib25BbnN3ZXJzU2xpZGVvdXRBbnN3ZXJDaG9zZW4oJGV2ZW50KVwiXHJcbiAgPjwvcnAtYW5zd2Vycy1zbGlkZW91dD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl0ZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2xpdGUtc2VsZWN0b3IvbGl0ZS1zZWxlY3Rvci9saXRlLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jbGllbnQvYXBwL3BsdWdpbnMvbGl0ZS1zZWxlY3Rvci9saXRlLXNlbGVjdG9yL2xpdGUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlySCxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQWtCL0UsTUFBTSxPQUFPLHFCQUFxQjtJQThEaEMsWUFDUyxJQUFtQyxFQUNuQyxxQkFBNEMsRUFDM0MsZ0JBQThDO1FBRi9DLFNBQUksR0FBSixJQUFJLENBQStCO1FBQ25DLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDM0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQWhDakQsY0FBUyxHQUFZLElBQUksQ0FBQztRQUcxQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBT3pCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUd6QixlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFHaEUsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUl6RSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixvQkFBZSxHQUFZLElBQUksQ0FBQztRQUcvQixvQkFBZSxHQUFZLEtBQUssQ0FBQztR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QUFPLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ3hCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDOzRCQUNuRSxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs0QkFDOUQsVUFBVSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQ3ZDLENBQUM7cUJBQ0g7aUJBQ0Y7bU1BR1EsZUFBZTtzQkFEckIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJdEQsV0FBVztzQkFEckIsS0FBSztnQkFpQkMsSUFBSTtzQkFEVixLQUFLO2dCQUlLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBVUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsZ0JBQWdCO3NCQUZ0QixXQUFXO3VCQUFDLHlCQUF5Qjs7c0JBQ3JDLEtBQUs7Z0JBSVUsVUFBVTtzQkFEekIsTUFBTTtnQkFJUyxZQUFZO3NCQUQzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2Fuc3dlcic7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge01ldGFkYXRhfSBmcm9tICcuLi8uLi9jb3JlM2QvaXRlbXMvbWV0YWRhdGEnO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7QnVpbGRGdXJuaXR1cmVTZXJ2aWNlfSBmcm9tICcuLi8uLi90aHJlZWRzZWxlY3Rvci90aHJlZWRzZWxlY3Rvci9zZXJ2aWNlL2J1aWxkLWZ1cm5pdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2UvaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnAtbGl0ZS1zZWxlY3RvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpdGUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xpdGUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzaG93U2VsZWN0aW9ucycsIFtcclxuICAgICAgc3RhdGUoJ3ZvaWQnLCBzdHlsZSh7J3RyYW5zZm9ybSc6ICd0cmFuc2xhdGVYKDEwMCUpJywgb3BhY2l0eTogMH0pKSxcclxuICAgICAgc3RhdGUoJyonLCBzdHlsZSh7J3RyYW5zZm9ybSc6ICd0cmFuc2xhdGVYKDAlKScsIG9wYWNpdHk6IDF9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPD0+IConLCBhbmltYXRlKDIwMCkpXHJcbiAgICBdKVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpdGVTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVBbnN3ZXJzJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHVibGljIHRlbXBsYXRlQW5zd2VyczogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNob3dBbnN3ZXJzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93QW5zd2VycyA9IHZhbHVlO1xyXG4gICAgaWYgKCF0aGlzLnNob3dBbnN3ZXJzKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYW5pbWF0ZVNsaWRlb3V0ID0gdHJ1ZTtcclxuICAgICAgfSwgNDAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYW5pbWF0ZVNsaWRlb3V0ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dBbnN3ZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dBbnN3ZXJzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvdzogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNob3dTZWxlY3Rpb25zKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zaG93U2VsZWN0aW9ucyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaG93U2VsZWN0aW9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zaG93U2VsZWN0aW9ucztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkNsb3NlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmN1c3RvbS1kaW1lbnNpb25zJylcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjdXN0b21EaW1lbnNpb25zOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBhbnN3ZXJDaG9zZW46IEV2ZW50RW1pdHRlcjxBbnN3ZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxBbnN3ZXI+KCk7XHJcblxyXG4gIHB1YmxpYyBhbnN3ZXJUb1Nob3dGcm9tU2VsZWN0aW9uVGV4dDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgaW5saW5lQW5zd2VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhbmltYXRlU2xpZGVvdXQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9zaG93QW5zd2VyczogYm9vbGVhbjtcclxuICBwcml2YXRlIF9hbnN3ZXJzU2hvd2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3Nob3dTZWxlY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uU2VsZWN0ZWQ6IFNlbGVjdGlvbjtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBpT25lOiBIb21lZGVjb3JhdG9yQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHB1YmxpYyBidWlsZEZ1cm5pdHVyZVNlcnZpY2U6IEJ1aWxkRnVybml0dXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLmlPbmUuYW5zd2Vyc1JlY2VpdmVkLnN1YnNjcmliZSgoYW5zd2VyczogQW5zd2VyW10pID0+IHtcclxuICAgICAgICB0aGlzLmFuc3dlclRvU2hvd0Zyb21TZWxlY3Rpb25UZXh0ID1cclxuICAgICAgICAgIHRoaXMuaW5saW5lQW5zd2VycyAmJiBhbnN3ZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5fc2VsZWN0aW9uU2VsZWN0ZWQgP1xyXG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZWxlY3RlZC5xdWVzdGlvbiA6XHJcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9hbnN3ZXJzU2hvd2luZyA9IGFuc3dlcnMubGVuZ3RoID4gMDtcclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5nc0xvYWRlZC5zdWJzY3JpYmUoKGxvYWRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChsb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5saW5lQW5zd2VycyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zID8gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuaW5saW5lQW5zd2VycyA6IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy50ZW1wbGF0ZUFuc3dlcnMgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZUxpdGVTZWxlY3RvckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLyB0b2RvOiBtb3ZlIHRvIHRocmVlZHNlbGVjdG9yLmNvbXBvbmVudCB0byBiZSBhYmxlIHRvIGhhbmRsZSBlcnJvcnM/XHJcbiAgcHVibGljIGFzeW5jIG9uU2VsZWN0aW9uc1N1bW1hcnlTZWxlY3RTZWxlY3Rpb24oc2VsZWN0aW9uOiBTZWxlY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmlubGluZUFuc3dlcnMgJiYgdGhpcy5hbnN3ZXJUb1Nob3dGcm9tU2VsZWN0aW9uVGV4dCkge1xyXG4gICAgICBpZiAodGhpcy5fc2VsZWN0aW9uU2VsZWN0ZWQgIT09IHNlbGVjdGlvbikge1xyXG4gICAgICAgIGlmICh0aGlzLl9hbnN3ZXJzU2hvd2luZykge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2UuY2FuY2VsQW5zd2VyKHRoaXMubWV0YWRhdGEsIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2Uuc2VsZWN0U2VsZWN0aW9uKHNlbGVjdGlvbiwgdGhpcy5tZXRhZGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2Fuc3dlcnNTaG93aW5nKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmJ1aWxkRnVybml0dXJlU2VydmljZS5jYW5jZWxBbnN3ZXIodGhpcy5tZXRhZGF0YSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2Uuc2VsZWN0U2VsZWN0aW9uKHNlbGVjdGlvbiwgdGhpcy5tZXRhZGF0YSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25TZWxlY3RlZCA9IHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFuc3dlcnNTbGlkZW91dEFuc3dlckNob3NlbihhbnN3ZXJTZWxlY3RlZDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9hbnN3ZXJzU2hvd2luZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5idWlsZEZ1cm5pdHVyZVNlcnZpY2Uuc2VsZWN0QW5zd2VyKGFuc3dlclNlbGVjdGVkLmFuc3dlciwgYW5zd2VyU2VsZWN0ZWQuaW5wdXQsIHRoaXMubWV0YWRhdGEpO1xyXG4gICAgdGhpcy5hbnN3ZXJDaG9zZW4ubmV4dChhbnN3ZXJTZWxlY3RlZC5hbnN3ZXIpO1xyXG4gICAgLy8gdGhpcy5pT25lLmdldE1vb2RJbWFnZUZvckFuc3dlclNlbGVjdGlvbihhbnN3ZXJTZWxlY3RlZC5hbnN3ZXIsIGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dcIj5cclxuICA8cnAtc2VsZWN0aW9ucy1zdW1tYXJ5ICpuZ0lmPVwic2hvd1NlbGVjdGlvbnMgJiYgaU9uZS5zZWxlY3Rpb25zVG9EaXNwbGF5Lmxlbmd0aCA+IDBcIiBAc2hvd1NlbGVjdGlvbnMgW0AuZGlzYWJsZWRdPVwiIWFuaW1hdGVTbGlkZW91dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJwLXNlbGVjdGlvbnMtc3VtbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cInNob3dMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2FuQ2xvc2VdPVwiY2FuQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbURpbWVuc2lvbnNdPVwiY3VzdG9tRGltZW5zaW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYW5zd2Vyc1RlbXBsYXRlXT1cImlubGluZUFuc3dlcnMgPyB0ZW1wbGF0ZUFuc3dlcnMgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2Fuc3dlclRvU2hvd0Zyb21TZWxlY3Rpb25UZXh0XT1cImFuc3dlclRvU2hvd0Zyb21TZWxlY3Rpb25UZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25zXT1cImlPbmUuc2VsZWN0aW9uc1RvRGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0U2VsZWN0aW9uKT1cIm9uU2VsZWN0aW9uc1N1bW1hcnlTZWxlY3RTZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VDbGljayk9XCJvbkNsb3NlTGl0ZVNlbGVjdG9yQnV0dG9uQ2xpY2soKVwiXHJcbiAgPlxyXG4gIDwvcnAtc2VsZWN0aW9ucy1zdW1tYXJ5PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5saW5lQW5zd2Vyc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlQW5zd2Vyc1wiPjwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVBbnN3ZXJzPlxyXG4gIDxycC1hbnN3ZXJzLXNsaWRlb3V0XHJcbiAgICBjbGFzcz1cInJwLWFuc3dlcnMtc2xpZGVvdXRcIlxyXG4gICAgW21ldGFkYXRhXT1cIm1ldGFkYXRhXCJcclxuICAgIFtpc1Nob3duXT1cInNob3dBbnN3ZXJzICYmIGlPbmUuYWN0aXZlQW5zd2Vycy5sZW5ndGggPiAwXCJcclxuICAgIFtzaG93VGl0bGVdPVwiIWlubGluZUFuc3dlcnNcIlxyXG4gICAgW3Nob3dGaWx0ZXJdPVwiIWlubGluZUFuc3dlcnNcIlxyXG4gICAgW3VzZVNsaWRlb3V0XT1cIiFpbmxpbmVBbnN3ZXJzXCJcclxuICAgIFtjdXN0b21EaW1lbnNpb25zXT1cImN1c3RvbURpbWVuc2lvbnNcIlxyXG4gICAgW3F1ZXN0aW9uXT1cImlPbmUuYWN0aXZlUXVlc3Rpb25cIlxyXG4gICAgW2Fuc3dlcnNdPVwiaU9uZS5hY3RpdmVBbnN3ZXJzXCJcclxuICAgIChhbnN3ZXJDaG9zZW4pPVwib25BbnN3ZXJzU2xpZGVvdXRBbnN3ZXJDaG9zZW4oJGV2ZW50KVwiXHJcbiAgPjwvcnAtYW5zd2Vycy1zbGlkZW91dD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19