angular-three-soba 1.9.1 → 1.9.3

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 (81) hide show
  1. package/abstractions/lib/billboard/billboard.d.ts +1 -1
  2. package/esm2020/abstractions/lib/billboard/billboard.mjs +10 -10
  3. package/esm2020/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +3 -3
  4. package/esm2020/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +3 -3
  5. package/esm2020/abstractions/lib/gizmo-helper/gizmo-helper.mjs +6 -6
  6. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +3 -3
  7. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +6 -6
  8. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +3 -3
  9. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +3 -3
  10. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +6 -6
  11. package/esm2020/abstractions/lib/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +3 -3
  12. package/esm2020/abstractions/lib/line/line-input.mjs +3 -3
  13. package/esm2020/abstractions/lib/line/line.mjs +3 -3
  14. package/esm2020/abstractions/lib/quadratic-bezier-line/quadratic-bezier-line.mjs +3 -3
  15. package/esm2020/abstractions/lib/text/text.mjs +3 -3
  16. package/esm2020/abstractions/lib/text-3d/text-3d.mjs +3 -3
  17. package/esm2020/cameras/lib/camera/camera-content.mjs +3 -3
  18. package/esm2020/cameras/lib/camera/camera.mjs +3 -3
  19. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +3 -3
  20. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +3 -3
  21. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +3 -3
  22. package/esm2020/loaders/lib/loader/loader.mjs +3 -3
  23. package/esm2020/materials/lib/mesh-distort-material/mesh-distort-material.mjs +3 -3
  24. package/esm2020/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +4 -5
  25. package/esm2020/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
  26. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +3 -3
  27. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +3 -3
  28. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +3 -3
  29. package/esm2020/performance/lib/detailed/detailed.mjs +3 -3
  30. package/esm2020/performance/lib/stats/stats.mjs +3 -3
  31. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +6 -6
  32. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +6 -6
  33. package/esm2020/staging/lib/bounds/bounds.mjs +3 -3
  34. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +3 -3
  35. package/esm2020/staging/lib/center/center.mjs +3 -3
  36. package/esm2020/staging/lib/cloud/cloud.mjs +3 -3
  37. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +3 -3
  38. package/esm2020/staging/lib/environment/environment-cube.mjs +3 -3
  39. package/esm2020/staging/lib/environment/environment-ground.mjs +3 -3
  40. package/esm2020/staging/lib/environment/environment-inputs.mjs +3 -3
  41. package/esm2020/staging/lib/environment/environment-map.mjs +3 -3
  42. package/esm2020/staging/lib/environment/environment-portal.mjs +3 -3
  43. package/esm2020/staging/lib/environment/environment.mjs +6 -6
  44. package/esm2020/staging/lib/float/float.mjs +3 -3
  45. package/esm2020/staging/lib/sky/sky.mjs +3 -3
  46. package/esm2020/staging/lib/sparkles/sparkles.mjs +3 -3
  47. package/esm2020/staging/lib/spot-light/common.mjs +5 -3
  48. package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +8 -4
  49. package/esm2020/staging/lib/spot-light/spot-light-input.mjs +3 -3
  50. package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +6 -6
  51. package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +6 -5
  52. package/esm2020/staging/lib/spot-light/spot-light-shadow.mjs +7 -8
  53. package/esm2020/staging/lib/spot-light/spot-light.mjs +3 -3
  54. package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +3 -3
  55. package/esm2020/staging/lib/stage/stage.mjs +6 -6
  56. package/esm2020/staging/lib/stars/stars.mjs +3 -3
  57. package/fesm2015/angular-three-soba-abstractions.mjs +60 -60
  58. package/fesm2015/angular-three-soba-abstractions.mjs.map +1 -1
  59. package/fesm2015/angular-three-soba-cameras.mjs +12 -12
  60. package/fesm2015/angular-three-soba-controls.mjs +3 -3
  61. package/fesm2015/angular-three-soba-loaders.mjs +3 -3
  62. package/fesm2015/angular-three-soba-materials.mjs +9 -10
  63. package/fesm2015/angular-three-soba-materials.mjs.map +1 -1
  64. package/fesm2015/angular-three-soba-misc.mjs +3 -3
  65. package/fesm2015/angular-three-soba-performance.mjs +12 -12
  66. package/fesm2015/angular-three-soba-staging.mjs +102 -95
  67. package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
  68. package/fesm2020/angular-three-soba-abstractions.mjs +60 -60
  69. package/fesm2020/angular-three-soba-abstractions.mjs.map +1 -1
  70. package/fesm2020/angular-three-soba-cameras.mjs +12 -12
  71. package/fesm2020/angular-three-soba-controls.mjs +3 -3
  72. package/fesm2020/angular-three-soba-loaders.mjs +3 -3
  73. package/fesm2020/angular-three-soba-materials.mjs +9 -10
  74. package/fesm2020/angular-three-soba-materials.mjs.map +1 -1
  75. package/fesm2020/angular-three-soba-misc.mjs +3 -3
  76. package/fesm2020/angular-three-soba-performance.mjs +12 -12
  77. package/fesm2020/angular-three-soba-staging.mjs +102 -95
  78. package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
  79. package/package.json +3 -3
  80. package/plugin/package.json +2 -3
  81. package/staging/lib/spot-light/shadow-mesh-input.d.ts +1 -0
@@ -148,7 +148,6 @@ export class NgtsMeshReflectorMaterial extends NgtRxStore {
148
148
  return { fbo1, fbo2, blurPass, reflectorProps };
149
149
  })));
150
150
  injectBeforeRender(this.onBeforeRender.bind(this));
151
- console.log(this.materialRef);
152
151
  }
153
152
  beforeRender(state) {
154
153
  const parent = getLocalState(this.materialRef.nativeElement).parent;
@@ -235,8 +234,8 @@ export class NgtsMeshReflectorMaterial extends NgtRxStore {
235
234
  }
236
235
  }
237
236
  }
238
- NgtsMeshReflectorMaterial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component });
239
- NgtsMeshReflectorMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-material", inputs: { materialRef: "materialRef", resolution: "resolution", mixBlur: "mixBlur", mixStrength: "mixStrength", blur: "blur", mirror: "mirror", minDepthThreshold: "minDepthThreshold", maxDepthThreshold: "maxDepthThreshold", depthScale: "depthScale", depthToBlurRatioBias: "depthToBlurRatioBias", distortionMap: "distortionMap", distortion: "distortion", mixContrast: "mixContrast", reflectorOffset: "reflectorOffset" }, usesInheritance: true, ngImport: i0, template: `
237
+ NgtsMeshReflectorMaterial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsMeshReflectorMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component });
238
+ NgtsMeshReflectorMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsMeshReflectorMaterial, isStandalone: true, selector: "ngts-mesh-reflector-material", inputs: { materialRef: "materialRef", resolution: "resolution", mixBlur: "mixBlur", mixStrength: "mixStrength", blur: "blur", mirror: "mirror", minDepthThreshold: "minDepthThreshold", maxDepthThreshold: "maxDepthThreshold", depthScale: "depthScale", depthToBlurRatioBias: "depthToBlurRatioBias", distortionMap: "distortionMap", distortion: "distortion", mixContrast: "mixContrast", reflectorOffset: "reflectorOffset" }, usesInheritance: true, ngImport: i0, template: `
240
239
  <ngt-mesh-reflector-material
241
240
  ngtCompound
242
241
  attach="material"
@@ -262,7 +261,7 @@ NgtsMeshReflectorMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
262
261
  <ng-content />
263
262
  </ngt-mesh-reflector-material>
264
263
  `, isInline: true, dependencies: [{ kind: "pipe", type: NgtPush, name: "ngtPush" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
265
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsMeshReflectorMaterial, decorators: [{
266
265
  type: Component,
267
266
  args: [{
268
267
  selector: 'ngts-mesh-reflector-material',
@@ -325,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
325
324
  }], reflectorOffset: [{
326
325
  type: Input
327
326
  }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbC9tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFDSCxNQUFNLEVBQ04sYUFBYSxFQUNiLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osT0FBTyxFQUNQLE9BQU8sRUFFUCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGtCQUFrQixHQUNyQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQUUvQixNQUFNLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7QUFrQ2xDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUFVO0lBR3JELElBQWEsVUFBVSxDQUFDLFVBQWtCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFhLFdBQVcsQ0FBQyxXQUFtQjtRQUN4QyxJQUFJ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QnhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJULHVEQUNrQixPQUFPLGdEQUFFLElBQUk7MkZBR3ZCLHlCQUF5QjtrQkFoQ3JDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXlCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFJTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxvQkFBb0I7c0JBQWhDLEtBQUs7Z0JBSU8sYUFBYTtzQkFBekIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGV4dGVuZCxcbiAgICBnZXRMb2NhbFN0YXRlLFxuICAgIGluamVjdEJlZm9yZVJlbmRlcixcbiAgICBpbmplY3ROZ3RSZWYsXG4gICAgTmd0QXJncyxcbiAgICBOZ3RQdXNoLFxuICAgIE5ndFJlbmRlclN0YXRlLFxuICAgIE5ndFJ4U3RvcmUsXG4gICAgTmd0U3RvcmUsXG4gICAgc3RhcnRXaXRoVW5kZWZpbmVkLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEJsdXJQYXNzLCBNZXNoUmVmbGVjdG9yTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHRlbmQoeyBNZXNoUmVmbGVjdG9yTWF0ZXJpYWwgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW1lc2gtcmVmbGVjdG9yLW1hdGVyaWFsXG4gICAgICAgICAgICBuZ3RDb21wb3VuZFxuICAgICAgICAgICAgYXR0YWNoPVwibWF0ZXJpYWxcIlxuICAgICAgICAgICAgKm5nSWY9XCJkZWZpbmVzJCB8IG5ndFB1c2ggYXMgZGVmaW5lc1wiXG4gICAgICAgICAgICBbcmVmXT1cIm1hdGVyaWFsUmVmXCJcbiAgICAgICAgICAgIFtkZWZpbmVzXT1cImRlZmluZXNcIlxuICAgICAgICAgICAgW21pcnJvcl09XCJyZWZsZWN0b3JQcm9wcy5taXJyb3JcIlxuICAgICAgICAgICAgW3RleHR1cmVNYXRyaXhdPVwicmVmbGVjdG9yUHJvcHMudGV4dHVyZU1hdHJpeFwiXG4gICAgICAgICAgICBbbWl4Qmx1cl09XCJyZWZsZWN0b3JQcm9wcy5taXhCbHVyXCJcbiAgICAgICAgICAgIFt0RGlmZnVzZV09XCJyZWZsZWN0b3JQcm9wcy50RGlmZnVzZVwiXG4gICAgICAgICAgICBbdERlcHRoXT1cInJlZmxlY3RvclByb3BzLnREZXB0aFwiXG4gICAgICAgICAgICBbdERpZmZ1c2VCbHVyXT1cInJlZmxlY3RvclByb3BzLnREaWZmdXNlQmx1clwiXG4gICAgICAgICAgICBbaGFzQmx1cl09XCJyZWZsZWN0b3JQcm9wcy5oYXNCbHVyXCJcbiAgICAgICAgICAgIFttaXhTdHJlbmd0aF09XCJyZWZsZWN0b3JQcm9wcy5taXhTdHJlbmd0aFwiXG4gICAgICAgICAgICBbbWluRGVwdGhUaHJlc2hvbGRdPVwicmVmbGVjdG9yUHJvcHMubWluRGVwdGhUaHJlc2hvbGRcIlxuICAgICAgICAgICAgW21heERlcHRoVGhyZXNob2xkXT1cInJlZmxlY3RvclByb3BzLm1heERlcHRoVGhyZXNob2xkXCJcbiAgICAgICAgICAgIFtkZXB0aFNjYWxlXT1cInJlZmxlY3RvclByb3BzLmRlcHRoU2NhbGVcIlxuICAgICAgICAgICAgW2RlcHRoVG9CbHVyUmF0aW9CaWFzXT1cInJlZmxlY3RvclByb3BzLmRlcHRoVG9CbHVyUmF0aW9CaWFzXCJcbiAgICAgICAgICAgIFtkaXN0b3J0aW9uXT1cInJlZmxlY3RvclByb3BzLmRpc3RvcnRpb25cIlxuICAgICAgICAgICAgW2Rpc3RvcnRpb25NYXBdPVwicmVmbGVjdG9yUHJvcHMuZGlzdG9ydGlvbk1hcFwiXG4gICAgICAgICAgICBbbWl4Q29udHJhc3RdPVwicmVmbGVjdG9yUHJvcHMubWl4Q29udHJhc3RcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L25ndC1tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RQdXNoLCBOZ0lmXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNNZXNoUmVmbGVjdG9yTWF0ZXJpYWwgZXh0ZW5kcyBOZ3RSeFN0b3JlIHtcbiAgICBASW5wdXQoKSBtYXRlcmlhbFJlZiA9IGluamVjdE5ndFJlZjxNZXNoUmVmbGVjdG9yTWF0ZXJpYWw+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgcmVzb2x1dGlvbihyZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByZXNvbHV0aW9uIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtaXhCbHVyKG1peEJsdXI6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1peEJsdXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1peFN0cmVuZ3RoKG1peFN0cmVuZ3RoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtaXhTdHJlbmd0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmx1cihibHVyOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmx1ciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWlycm9yKG1pcnJvcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbWlycm9yIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtaW5EZXB0aFRocmVzaG9sZChtaW5EZXB0aFRocmVzaG9sZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbWluRGVwdGhUaHJlc2hvbGQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1heERlcHRoVGhyZXNob2xkKG1heERlcHRoVGhyZXNob2xkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtYXhEZXB0aFRocmVzaG9sZCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGVwdGhTY2FsZShkZXB0aFNjYWxlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZXB0aFNjYWxlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkZXB0aFRvQmx1clJhdGlvQmlhcyhkZXB0aFRvQmx1clJhdGlvQmlhczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGVwdGhUb0JsdXJSYXRpb0JpYXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc3RvcnRpb25NYXAoZGlzdG9ydGlvbk1hcDogVEhSRUUuVGV4dHVyZSkge1xuICAgICAgICB0aGlzLnNldCh7IGRpc3RvcnRpb25NYXAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc3RvcnRpb24oZGlzdG9ydGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGlzdG9ydGlvbiB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWl4Q29udHJhc3QobWl4Q29udHJhc3Q6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1peENvbnRyYXN0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByZWZsZWN0b3JPZmZzZXQocmVmbGVjdG9yT2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByZWZsZWN0b3JPZmZzZXQgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgZGVmaW5lcyQgPSB0aGlzLnNlbGVjdCgncmVmbGVjdG9yRW50aXRpZXMnLCAncmVmbGVjdG9yUHJvcHMnLCAnZGVmaW5lcycpLnBpcGUoZGVib3VuY2VUaW1lKDApKTtcblxuICAgIGdldCByZWZsZWN0b3JQcm9wcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdyZWZsZWN0b3JFbnRpdGllcycsICdyZWZsZWN0b3JQcm9wcycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWZsZWN0b3JQbGFuZSA9IG5ldyBUSFJFRS5QbGFuZSgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9ybWFsID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZmxlY3RvcldvcmxkUG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FtZXJhV29ybGRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3RhdGlvbk1hdHJpeCA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb29rQXRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIC0xKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsaXBQbGFuZSA9IG5ldyBUSFJFRS5WZWN0b3I0KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBxID0gbmV3IFRIUkVFLlZlY3RvcjQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHR1cmVNYXRyaXggPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlydHVhbENhbWVyYSA9IG5ldyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSgpO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBtaXhCbHVyOiAwLFxuICAgICAgICAgICAgbWl4U3RyZW5ndGg6IDEsXG4gICAgICAgICAgICByZXNvbHV0aW9uOiAyNTYsXG4gICAgICAgICAgICBibHVyOiBbMCwgMF0sXG4gICAgICAgICAgICBtaW5EZXB0aFRocmVzaG9sZDogMC45LFxuICAgICAgICAgICAgbWF4RGVwdGhUaHJlc2hvbGQ6IDEsXG4gICAgICAgICAgICBkZXB0aFNjYWxlOiAwLFxuICAgICAgICAgICAgZGVwdGhUb0JsdXJSYXRpb0JpYXM6IDAuMjUsXG4gICAgICAgICAgICBtaXJyb3I6IDAsXG4gICAgICAgICAgICBkaXN0b3J0aW9uOiAxLFxuICAgICAgICAgICAgbWl4Q29udHJhc3Q6IDEsXG4gICAgICAgICAgICByZWZsZWN0b3JPZmZzZXQ6IDAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdub3JtYWxpemVkQmx1cicsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCgnYmx1cicpLnBpcGUobWFwKChibHVyKSA9PiAoQXJyYXkuaXNBcnJheShibHVyKSA/IGJsdXIgOiBbYmx1ciwgYmx1cl0pKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KCdoYXNCbHVyJywgdGhpcy5zZWxlY3QoJ25vcm1hbGl6ZWRCbHVyJykucGlwZShtYXAoKFt4LCB5XSkgPT4geCArIHkgPiAwKSkpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAncmVmbGVjdG9yRW50aXRpZXMnLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ25vcm1hbGl6ZWRCbHVyJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnbWlycm9yJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2hhc0JsdXInKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnbWl4Qmx1cicpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtaXhTdHJlbmd0aCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtaW5EZXB0aFRocmVzaG9sZCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtYXhEZXB0aFRocmVzaG9sZCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdkZXB0aFNjYWxlJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2RlcHRoVG9CbHVyUmF0aW9CaWFzJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2Rpc3RvcnRpb24nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnZGlzdG9ydGlvbk1hcCcpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtaXhDb250cmFzdCcpLFxuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgICAgICAgICBnbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peEJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaXhTdHJlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRlcHRoVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGVwdGhUaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhUb0JsdXJSYXRpb0JpYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXN0b3J0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzdG9ydGlvbk1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peENvbnRyYXN0LFxuICAgICAgICAgICAgICAgICAgICBdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ0ZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBnbC5vdXRwdXRFbmNvZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBUSFJFRS5IYWxmRmxvYXRUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZibzEgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQocmVzb2x1dGlvbiwgcmVzb2x1dGlvbiwgcGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYm8xLmRlcHRoQnVmZmVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZibzEuZGVwdGhUZXh0dXJlID0gbmV3IFRIUkVFLkRlcHRoVGV4dHVyZShyZXNvbHV0aW9uLCByZXNvbHV0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZibzEuZGVwdGhUZXh0dXJlLmZvcm1hdCA9IFRIUkVFLkRlcHRoRm9ybWF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZmJvMS5kZXB0aFRleHR1cmUudHlwZSA9IFRIUkVFLlVuc2lnbmVkU2hvcnRUeXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmYm8yID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0KHJlc29sdXRpb24sIHJlc29sdXRpb24sIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmx1clBhc3MgPSBuZXcgQmx1clBhc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGJsdXJbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBibHVyWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRlcHRoVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heERlcHRoVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhUb0JsdXJSYXRpb0JpYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmxlY3RvclByb3BzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlTWF0cml4OiB0aGlzLnRleHR1cmVNYXRyaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4Qmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0RGlmZnVzZTogZmJvMS50ZXh0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHREZXB0aDogZmJvMS5kZXB0aFRleHR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdERpZmZ1c2VCbHVyOiBmYm8yLnRleHR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhTdHJlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5EZXB0aFRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhEZXB0aFRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoVG9CbHVyUmF0aW9CaWFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RvcnRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdG9ydGlvbk1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhDb250cmFzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRV9CTFVSOiBoYXNCbHVyID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRV9ERVBUSDogZGVwdGhTY2FsZSA+IDAgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFX0RJU1RPUlRJT046IGRpc3RvcnRpb25NYXAgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZmJvMSwgZmJvMiwgYmx1clBhc3MsIHJlZmxlY3RvclByb3BzIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMubWF0ZXJpYWxSZWYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVmb3JlUmVuZGVyKHN0YXRlOiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBnZXRMb2NhbFN0YXRlKHRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudCkucGFyZW50O1xuICAgICAgICBpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgY2FtZXJhIH0gPSBzdGF0ZTtcblxuICAgICAgICB0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHBhcmVudC5tYXRyaXhXb3JsZCk7XG4gICAgICAgIHRoaXMuY2FtZXJhV29ybGRQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oY2FtZXJhLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgdGhpcy5yb3RhdGlvbk1hdHJpeC5leHRyYWN0Um90YXRpb24ocGFyZW50Lm1hdHJpeFdvcmxkKTtcbiAgICAgICAgdGhpcy5ub3JtYWwuc2V0KDAsIDAsIDEpO1xuICAgICAgICB0aGlzLm5vcm1hbC5hcHBseU1hdHJpeDQodGhpcy5yb3RhdGlvbk1hdHJpeCk7XG4gICAgICAgIHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbi5hZGRTY2FsZWRWZWN0b3IodGhpcy5ub3JtYWwsIHRoaXMuZ2V0KCdyZWZsZWN0b3JPZmZzZXQnKSk7XG4gICAgICAgIHRoaXMudmlldy5zdWJWZWN0b3JzKHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbiwgdGhpcy5jYW1lcmFXb3JsZFBvc2l0aW9uKTtcbiAgICAgICAgLy8gQXZvaWQgcmVuZGVyaW5nIHdoZW4gcmVmbGVjdG9yIGlzIGZhY2luZyBhd2F5XG4gICAgICAgIGlmICh0aGlzLnZpZXcuZG90KHRoaXMubm9ybWFsKSA+IDApIHJldHVybjtcbiAgICAgICAgdGhpcy52aWV3LnJlZmxlY3QodGhpcy5ub3JtYWwpLm5lZ2F0ZSgpO1xuICAgICAgICB0aGlzLnZpZXcuYWRkKHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbik7XG4gICAgICAgIHRoaXMucm90YXRpb25NYXRyaXguZXh0cmFjdFJvdGF0aW9uKGNhbWVyYS5tYXRyaXhXb3JsZCk7XG4gICAgICAgIHRoaXMubG9va0F0UG9zaXRpb24uc2V0KDAsIDAsIC0xKTtcbiAgICAgICAgdGhpcy5sb29rQXRQb3NpdGlvbi5hcHBseU1hdHJpeDQodGhpcy5yb3RhdGlvbk1hdHJpeCk7XG4gICAgICAgIHRoaXMubG9va0F0UG9zaXRpb24uYWRkKHRoaXMuY2FtZXJhV29ybGRQb3NpdGlvbik7XG4gICAgICAgIHRoaXMudGFyZ2V0LnN1YlZlY3RvcnModGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uLCB0aGlzLmxvb2tBdFBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy50YXJnZXQucmVmbGVjdCh0aGlzLm5vcm1hbCkubmVnYXRlKCk7XG4gICAgICAgIHRoaXMudGFyZ2V0LmFkZCh0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24pO1xuICAgICAgICB0aGlzLnZpcnR1YWxDYW1lcmEucG9zaXRpb24uY29weSh0aGlzLnZpZXcpO1xuICAgICAgICB0aGlzLnZpcnR1YWxDYW1lcmEudXAuc2V0KDAsIDEsIDApO1xuICAgICAgICB0aGlzLnZpcnR1YWxDYW1lcmEudXAuYXBwbHlNYXRyaXg0KHRoaXMucm90YXRpb25NYXRyaXgpO1xuICAgICAgICB0aGlzLnZpcnR1YWxDYW1lcmEudXAucmVmbGVjdCh0aGlzLm5vcm1hbCk7XG4gICAgICAgIHRoaXMudmlydHVhbENhbWVyYS5sb29rQXQodGhpcy50YXJnZXQpO1xuICAgICAgICB0aGlzLnZpcnR1YWxDYW1lcmEuZmFyID0gY2FtZXJhLmZhcjsgLy8gVXNlZCBpbiBXZWJHTEJhY2tncm91bmRcbiAgICAgICAgdGhpcy52aXJ0dWFsQ2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG4gICAgICAgIHRoaXMudmlydHVhbENhbWVyYS5wcm9qZWN0aW9uTWF0cml4LmNvcHkoY2FtZXJhLnByb2plY3Rpb25NYXRyaXgpO1xuICAgICAgICAvLyBVcGRhdGUgdGhlIHRleHR1cmUgbWF0cml4XG4gICAgICAgIHRoaXMudGV4dHVyZU1hdHJpeC5zZXQoMC41LCAwLjAsIDAuMCwgMC41LCAwLjAsIDAuNSwgMC4wLCAwLjUsIDAuMCwgMC4wLCAwLjUsIDAuNSwgMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiAgICAgICAgdGhpcy50ZXh0dXJlTWF0cml4Lm11bHRpcGx5KHRoaXMudmlydHVhbENhbWVyYS5wcm9qZWN0aW9uTWF0cml4KTtcbiAgICAgICAgdGhpcy50ZXh0dXJlTWF0cml4Lm11bHRpcGx5KHRoaXMudmlydHVhbENhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuICAgICAgICB0aGlzLnRleHR1cmVNYXRyaXgubXVsdGlwbHkocGFyZW50Lm1hdHJpeFdvcmxkKTtcbiAgICAgICAgLy8gTm93IHVwZGF0ZSBwcm9qZWN0aW9uIG1hdHJpeCB3aXRoIG5ldyBjbGlwIHBsYW5lLCBpbXBsZW1lbnRpbmcgY29kZSBmcm9tOiBodHRwOi8vd3d3LnRlcmF0aG9uLmNvbS9jb2RlL29ibGlxdWUuaHRtbFxuICAgICAgICAvLyBQYXBlciBleHBsYWluaW5nIHRoaXMgdGVjaG5pcXVlOiBodHRwOi8vd3d3LnRlcmF0aG9uLmNvbS9sZW5neWVsL0xlbmd5ZWwtT2JsaXF1ZS5wZGZcbiAgICAgICAgdGhpcy5yZWZsZWN0b3JQbGFuZS5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludCh0aGlzLm5vcm1hbCwgdGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy5yZWZsZWN0b3JQbGFuZS5hcHBseU1hdHJpeDQodGhpcy52aXJ0dWFsQ2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSk7XG4gICAgICAgIHRoaXMuY2xpcFBsYW5lLnNldChcbiAgICAgICAgICAgIHRoaXMucmVmbGVjdG9yUGxhbmUubm9ybWFsLngsXG4gICAgICAgICAgICB0aGlzLnJlZmxlY3RvclBsYW5lLm5vcm1hbC55LFxuICAgICAgICAgICAgdGhpcy5yZWZsZWN0b3JQbGFuZS5ub3JtYWwueixcbiAgICAgICAgICAgIHRoaXMucmVmbGVjdG9yUGxhbmUuY29uc3RhbnRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcHJvamVjdGlvbk1hdHJpeCA9IHRoaXMudmlydHVhbENhbWVyYS5wcm9qZWN0aW9uTWF0cml4O1xuICAgICAgICB0aGlzLnEueCA9IChNYXRoLnNpZ24odGhpcy5jbGlwUGxhbmUueCkgKyBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzhdKSAvIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMF07XG4gICAgICAgIHRoaXMucS55ID0gKE1hdGguc2lnbih0aGlzLmNsaXBQbGFuZS55KSArIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbOV0pIC8gcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1s1XTtcbiAgICAgICAgdGhpcy5xLnogPSAtMS4wO1xuICAgICAgICB0aGlzLnEudyA9ICgxLjAgKyBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzEwXSkgLyBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzE0XTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzY2FsZWQgcGxhbmUgdmVjdG9yXG4gICAgICAgIHRoaXMuY2xpcFBsYW5lLm11bHRpcGx5U2NhbGFyKDIuMCAvIHRoaXMuY2xpcFBsYW5lLmRvdCh0aGlzLnEpKTtcbiAgICAgICAgLy8gUmVwbGFjaW5nIHRoZSB0aGlyZCByb3cgb2YgdGhlIHByb2plY3Rpb24gbWF0cml4XG4gICAgICAgIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMl0gPSB0aGlzLmNsaXBQbGFuZS54O1xuICAgICAgICBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzZdID0gdGhpcy5jbGlwUGxhbmUueTtcbiAgICAgICAgcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1sxMF0gPSB0aGlzLmNsaXBQbGFuZS56ICsgMS4wO1xuICAgICAgICBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzE0XSA9IHRoaXMuY2xpcFBsYW5lLnc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkJlZm9yZVJlbmRlcihzdGF0ZTogTmd0UmVuZGVyU3RhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm1hdGVyaWFsUmVmLm5hdGl2ZUVsZW1lbnQpLnBhcmVudDtcbiAgICAgICAgaWYgKCFwYXJlbnQpIHJldHVybjtcblxuICAgICAgICBjb25zdCB7IGdsLCBzY2VuZSB9ID0gc3RhdGU7XG4gICAgICAgIGNvbnN0IHsgaGFzQmx1ciB9ID0gdGhpcy5nZXQoKTtcbiAgICAgICAgY29uc3QgeyBmYm8xLCBmYm8yLCBibHVyUGFzcyB9ID0gdGhpcy5nZXQoJ3JlZmxlY3RvckVudGl0aWVzJyk7XG5cbiAgICAgICAgaWYgKGZibzEgJiYgZmJvMiAmJiBibHVyUGFzcykge1xuICAgICAgICAgICAgcGFyZW50LnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRYckVuYWJsZWQgPSBnbC54ci5lbmFibGVkO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNoYWRvd0F1dG9VcGRhdGUgPSBnbC5zaGFkb3dNYXAuYXV0b1VwZGF0ZTtcbiAgICAgICAgICAgIHRoaXMuYmVmb3JlUmVuZGVyKHN0YXRlKTtcbiAgICAgICAgICAgIGdsLnhyLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQoZmJvMSk7XG4gICAgICAgICAgICBnbC5zdGF0ZS5idWZmZXJzLmRlcHRoLnNldE1hc2sodHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIWdsLmF1dG9DbGVhcikgZ2wuY2xlYXIoKTtcbiAgICAgICAgICAgIGdsLnJlbmRlcihzY2VuZSwgdGhpcy52aXJ0dWFsQ2FtZXJhKTtcbiAgICAgICAgICAgIGlmIChoYXNCbHVyKSBibHVyUGFzcy5yZW5kZXIoZ2wsIGZibzEsIGZibzIpO1xuICAgICAgICAgICAgZ2wueHIuZW5hYmxlZCA9IGN1cnJlbnRYckVuYWJsZWQ7XG4gICAgICAgICAgICBnbC5zaGFkb3dNYXAuYXV0b1VwZGF0ZSA9IGN1cnJlbnRTaGFkb3dBdXRvVXBkYXRlO1xuICAgICAgICAgICAgcGFyZW50LnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1yZWZsZWN0b3ItbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbC9tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFDSCxNQUFNLEVBQ04sYUFBYSxFQUNiLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osT0FBTyxFQUNQLE9BQU8sRUFFUCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGtCQUFrQixHQUNyQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQUUvQixNQUFNLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7QUFrQ2xDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxVQUFVO0lBR3JELElBQWEsVUFBVSxDQUFDLFVBQWtCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFhLFdBQVcsQ0FBQyxXQUFtQjtRQUN4QyxJQUFJ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LElBQUk7MkZBR3ZCLHlCQUF5QjtrQkFoQ3JDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXlCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzBFQUVZLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFJTyxpQkFBaUI7c0JBQTdCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxvQkFBb0I7c0JBQWhDLEtBQUs7Z0JBSU8sYUFBYTtzQkFBekIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGV4dGVuZCxcbiAgICBnZXRMb2NhbFN0YXRlLFxuICAgIGluamVjdEJlZm9yZVJlbmRlcixcbiAgICBpbmplY3ROZ3RSZWYsXG4gICAgTmd0QXJncyxcbiAgICBOZ3RQdXNoLFxuICAgIE5ndFJlbmRlclN0YXRlLFxuICAgIE5ndFJ4U3RvcmUsXG4gICAgTmd0U3RvcmUsXG4gICAgc3RhcnRXaXRoVW5kZWZpbmVkLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEJsdXJQYXNzLCBNZXNoUmVmbGVjdG9yTWF0ZXJpYWwgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHRlbmQoeyBNZXNoUmVmbGVjdG9yTWF0ZXJpYWwgfSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW1lc2gtcmVmbGVjdG9yLW1hdGVyaWFsXG4gICAgICAgICAgICBuZ3RDb21wb3VuZFxuICAgICAgICAgICAgYXR0YWNoPVwibWF0ZXJpYWxcIlxuICAgICAgICAgICAgKm5nSWY9XCJkZWZpbmVzJCB8IG5ndFB1c2ggYXMgZGVmaW5lc1wiXG4gICAgICAgICAgICBbcmVmXT1cIm1hdGVyaWFsUmVmXCJcbiAgICAgICAgICAgIFtkZWZpbmVzXT1cImRlZmluZXNcIlxuICAgICAgICAgICAgW21pcnJvcl09XCJyZWZsZWN0b3JQcm9wcy5taXJyb3JcIlxuICAgICAgICAgICAgW3RleHR1cmVNYXRyaXhdPVwicmVmbGVjdG9yUHJvcHMudGV4dHVyZU1hdHJpeFwiXG4gICAgICAgICAgICBbbWl4Qmx1cl09XCJyZWZsZWN0b3JQcm9wcy5taXhCbHVyXCJcbiAgICAgICAgICAgIFt0RGlmZnVzZV09XCJyZWZsZWN0b3JQcm9wcy50RGlmZnVzZVwiXG4gICAgICAgICAgICBbdERlcHRoXT1cInJlZmxlY3RvclByb3BzLnREZXB0aFwiXG4gICAgICAgICAgICBbdERpZmZ1c2VCbHVyXT1cInJlZmxlY3RvclByb3BzLnREaWZmdXNlQmx1clwiXG4gICAgICAgICAgICBbaGFzQmx1cl09XCJyZWZsZWN0b3JQcm9wcy5oYXNCbHVyXCJcbiAgICAgICAgICAgIFttaXhTdHJlbmd0aF09XCJyZWZsZWN0b3JQcm9wcy5taXhTdHJlbmd0aFwiXG4gICAgICAgICAgICBbbWluRGVwdGhUaHJlc2hvbGRdPVwicmVmbGVjdG9yUHJvcHMubWluRGVwdGhUaHJlc2hvbGRcIlxuICAgICAgICAgICAgW21heERlcHRoVGhyZXNob2xkXT1cInJlZmxlY3RvclByb3BzLm1heERlcHRoVGhyZXNob2xkXCJcbiAgICAgICAgICAgIFtkZXB0aFNjYWxlXT1cInJlZmxlY3RvclByb3BzLmRlcHRoU2NhbGVcIlxuICAgICAgICAgICAgW2RlcHRoVG9CbHVyUmF0aW9CaWFzXT1cInJlZmxlY3RvclByb3BzLmRlcHRoVG9CbHVyUmF0aW9CaWFzXCJcbiAgICAgICAgICAgIFtkaXN0b3J0aW9uXT1cInJlZmxlY3RvclByb3BzLmRpc3RvcnRpb25cIlxuICAgICAgICAgICAgW2Rpc3RvcnRpb25NYXBdPVwicmVmbGVjdG9yUHJvcHMuZGlzdG9ydGlvbk1hcFwiXG4gICAgICAgICAgICBbbWl4Q29udHJhc3RdPVwicmVmbGVjdG9yUHJvcHMubWl4Q29udHJhc3RcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L25ndC1tZXNoLXJlZmxlY3Rvci1tYXRlcmlhbD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3RBcmdzLCBOZ3RQdXNoLCBOZ0lmXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNNZXNoUmVmbGVjdG9yTWF0ZXJpYWwgZXh0ZW5kcyBOZ3RSeFN0b3JlIHtcbiAgICBASW5wdXQoKSBtYXRlcmlhbFJlZiA9IGluamVjdE5ndFJlZjxNZXNoUmVmbGVjdG9yTWF0ZXJpYWw+KCk7XG5cbiAgICBASW5wdXQoKSBzZXQgcmVzb2x1dGlvbihyZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByZXNvbHV0aW9uIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtaXhCbHVyKG1peEJsdXI6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1peEJsdXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1peFN0cmVuZ3RoKG1peFN0cmVuZ3RoOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtaXhTdHJlbmd0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmx1cihibHVyOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmx1ciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWlycm9yKG1pcnJvcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbWlycm9yIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBtaW5EZXB0aFRocmVzaG9sZChtaW5EZXB0aFRocmVzaG9sZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbWluRGVwdGhUaHJlc2hvbGQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1heERlcHRoVGhyZXNob2xkKG1heERlcHRoVGhyZXNob2xkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtYXhEZXB0aFRocmVzaG9sZCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGVwdGhTY2FsZShkZXB0aFNjYWxlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZXB0aFNjYWxlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkZXB0aFRvQmx1clJhdGlvQmlhcyhkZXB0aFRvQmx1clJhdGlvQmlhczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGVwdGhUb0JsdXJSYXRpb0JpYXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc3RvcnRpb25NYXAoZGlzdG9ydGlvbk1hcDogVEhSRUUuVGV4dHVyZSkge1xuICAgICAgICB0aGlzLnNldCh7IGRpc3RvcnRpb25NYXAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc3RvcnRpb24oZGlzdG9ydGlvbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGlzdG9ydGlvbiB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWl4Q29udHJhc3QobWl4Q29udHJhc3Q6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG1peENvbnRyYXN0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByZWZsZWN0b3JPZmZzZXQocmVmbGVjdG9yT2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByZWZsZWN0b3JPZmZzZXQgfSk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgZGVmaW5lcyQgPSB0aGlzLnNlbGVjdCgncmVmbGVjdG9yRW50aXRpZXMnLCAncmVmbGVjdG9yUHJvcHMnLCAnZGVmaW5lcycpLnBpcGUoZGVib3VuY2VUaW1lKDApKTtcblxuICAgIGdldCByZWZsZWN0b3JQcm9wcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdyZWZsZWN0b3JFbnRpdGllcycsICdyZWZsZWN0b3JQcm9wcycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWZsZWN0b3JQbGFuZSA9IG5ldyBUSFJFRS5QbGFuZSgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9ybWFsID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZmxlY3RvcldvcmxkUG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FtZXJhV29ybGRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3RhdGlvbk1hdHJpeCA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb29rQXRQb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIC0xKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsaXBQbGFuZSA9IG5ldyBUSFJFRS5WZWN0b3I0KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBxID0gbmV3IFRIUkVFLlZlY3RvcjQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHR1cmVNYXRyaXggPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlydHVhbENhbWVyYSA9IG5ldyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSgpO1xuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBtaXhCbHVyOiAwLFxuICAgICAgICAgICAgbWl4U3RyZW5ndGg6IDEsXG4gICAgICAgICAgICByZXNvbHV0aW9uOiAyNTYsXG4gICAgICAgICAgICBibHVyOiBbMCwgMF0sXG4gICAgICAgICAgICBtaW5EZXB0aFRocmVzaG9sZDogMC45LFxuICAgICAgICAgICAgbWF4RGVwdGhUaHJlc2hvbGQ6IDEsXG4gICAgICAgICAgICBkZXB0aFNjYWxlOiAwLFxuICAgICAgICAgICAgZGVwdGhUb0JsdXJSYXRpb0JpYXM6IDAuMjUsXG4gICAgICAgICAgICBtaXJyb3I6IDAsXG4gICAgICAgICAgICBkaXN0b3J0aW9uOiAxLFxuICAgICAgICAgICAgbWl4Q29udHJhc3Q6IDEsXG4gICAgICAgICAgICByZWZsZWN0b3JPZmZzZXQ6IDAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdChcbiAgICAgICAgICAgICdub3JtYWxpemVkQmx1cicsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdCgnYmx1cicpLnBpcGUobWFwKChibHVyKSA9PiAoQXJyYXkuaXNBcnJheShibHVyKSA/IGJsdXIgOiBbYmx1ciwgYmx1cl0pKSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb25uZWN0KCdoYXNCbHVyJywgdGhpcy5zZWxlY3QoJ25vcm1hbGl6ZWRCbHVyJykucGlwZShtYXAoKFt4LCB5XSkgPT4geCArIHkgPiAwKSkpO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAncmVmbGVjdG9yRW50aXRpZXMnLFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ25vcm1hbGl6ZWRCbHVyJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnbWlycm9yJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2hhc0JsdXInKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnbWl4Qmx1cicpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtaXhTdHJlbmd0aCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtaW5EZXB0aFRocmVzaG9sZCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtYXhEZXB0aFRocmVzaG9sZCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdkZXB0aFNjYWxlJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2RlcHRoVG9CbHVyUmF0aW9CaWFzJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ2Rpc3RvcnRpb24nKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnZGlzdG9ydGlvbk1hcCcpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdtaXhDb250cmFzdCcpLFxuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgICAgICAgICBnbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peEJsdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtaXhTdHJlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRlcHRoVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4RGVwdGhUaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhUb0JsdXJSYXRpb0JpYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXN0b3J0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzdG9ydGlvbk1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peENvbnRyYXN0LFxuICAgICAgICAgICAgICAgICAgICBdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ0ZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBnbC5vdXRwdXRFbmNvZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBUSFJFRS5IYWxmRmxvYXRUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZibzEgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQocmVzb2x1dGlvbiwgcmVzb2x1dGlvbiwgcGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYm8xLmRlcHRoQnVmZmVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZibzEuZGVwdGhUZXh0dXJlID0gbmV3IFRIUkVFLkRlcHRoVGV4dHVyZShyZXNvbHV0aW9uLCByZXNvbHV0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZibzEuZGVwdGhUZXh0dXJlLmZvcm1hdCA9IFRIUkVFLkRlcHRoRm9ybWF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgZmJvMS5kZXB0aFRleHR1cmUudHlwZSA9IFRIUkVFLlVuc2lnbmVkU2hvcnRUeXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmYm8yID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0KHJlc29sdXRpb24sIHJlc29sdXRpb24sIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmx1clBhc3MgPSBuZXcgQmx1clBhc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGJsdXJbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBibHVyWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkRlcHRoVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heERlcHRoVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhUb0JsdXJSYXRpb0JpYXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmxlY3RvclByb3BzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlTWF0cml4OiB0aGlzLnRleHR1cmVNYXRyaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWl4Qmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0RGlmZnVzZTogZmJvMS50ZXh0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHREZXB0aDogZmJvMS5kZXB0aFRleHR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdERpZmZ1c2VCbHVyOiBmYm8yLnRleHR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhTdHJlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5EZXB0aFRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhEZXB0aFRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoVG9CbHVyUmF0aW9CaWFzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RvcnRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdG9ydGlvbk1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXhDb250cmFzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRV9CTFVSOiBoYXNCbHVyID8gJycgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTRV9ERVBUSDogZGVwdGhTY2FsZSA+IDAgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNFX0RJU1RPUlRJT046IGRpc3RvcnRpb25NYXAgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZmJvMSwgZmJvMiwgYmx1clBhc3MsIHJlZmxlY3RvclByb3BzIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgaW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMub25CZWZvcmVSZW5kZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZWZvcmVSZW5kZXIoc3RhdGU6IE5ndFJlbmRlclN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGdldExvY2FsU3RhdGUodGhpcy5tYXRlcmlhbFJlZi5uYXRpdmVFbGVtZW50KS5wYXJlbnQ7XG4gICAgICAgIGlmICghcGFyZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyBjYW1lcmEgfSA9IHN0YXRlO1xuXG4gICAgICAgIHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24ocGFyZW50Lm1hdHJpeFdvcmxkKTtcbiAgICAgICAgdGhpcy5jYW1lcmFXb3JsZFBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihjYW1lcmEubWF0cml4V29ybGQpO1xuICAgICAgICB0aGlzLnJvdGF0aW9uTWF0cml4LmV4dHJhY3RSb3RhdGlvbihwYXJlbnQubWF0cml4V29ybGQpO1xuICAgICAgICB0aGlzLm5vcm1hbC5zZXQoMCwgMCwgMSk7XG4gICAgICAgIHRoaXMubm9ybWFsLmFwcGx5TWF0cml4NCh0aGlzLnJvdGF0aW9uTWF0cml4KTtcbiAgICAgICAgdGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uLmFkZFNjYWxlZFZlY3Rvcih0aGlzLm5vcm1hbCwgdGhpcy5nZXQoJ3JlZmxlY3Rvck9mZnNldCcpKTtcbiAgICAgICAgdGhpcy52aWV3LnN1YlZlY3RvcnModGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uLCB0aGlzLmNhbWVyYVdvcmxkUG9zaXRpb24pO1xuICAgICAgICAvLyBBdm9pZCByZW5kZXJpbmcgd2hlbiByZWZsZWN0b3IgaXMgZmFjaW5nIGF3YXlcbiAgICAgICAgaWYgKHRoaXMudmlldy5kb3QodGhpcy5ub3JtYWwpID4gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnZpZXcucmVmbGVjdCh0aGlzLm5vcm1hbCkubmVnYXRlKCk7XG4gICAgICAgIHRoaXMudmlldy5hZGQodGhpcy5yZWZsZWN0b3JXb3JsZFBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy5yb3RhdGlvbk1hdHJpeC5leHRyYWN0Um90YXRpb24oY2FtZXJhLm1hdHJpeFdvcmxkKTtcbiAgICAgICAgdGhpcy5sb29rQXRQb3NpdGlvbi5zZXQoMCwgMCwgLTEpO1xuICAgICAgICB0aGlzLmxvb2tBdFBvc2l0aW9uLmFwcGx5TWF0cml4NCh0aGlzLnJvdGF0aW9uTWF0cml4KTtcbiAgICAgICAgdGhpcy5sb29rQXRQb3NpdGlvbi5hZGQodGhpcy5jYW1lcmFXb3JsZFBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy50YXJnZXQuc3ViVmVjdG9ycyh0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24sIHRoaXMubG9va0F0UG9zaXRpb24pO1xuICAgICAgICB0aGlzLnRhcmdldC5yZWZsZWN0KHRoaXMubm9ybWFsKS5uZWdhdGUoKTtcbiAgICAgICAgdGhpcy50YXJnZXQuYWRkKHRoaXMucmVmbGVjdG9yV29ybGRQb3NpdGlvbik7XG4gICAgICAgIHRoaXMudmlydHVhbENhbWVyYS5wb3NpdGlvbi5jb3B5KHRoaXMudmlldyk7XG4gICAgICAgIHRoaXMudmlydHVhbENhbWVyYS51cC5zZXQoMCwgMSwgMCk7XG4gICAgICAgIHRoaXMudmlydHVhbENhbWVyYS51cC5hcHBseU1hdHJpeDQodGhpcy5yb3RhdGlvbk1hdHJpeCk7XG4gICAgICAgIHRoaXMudmlydHVhbENhbWVyYS51cC5yZWZsZWN0KHRoaXMubm9ybWFsKTtcbiAgICAgICAgdGhpcy52aXJ0dWFsQ2FtZXJhLmxvb2tBdCh0aGlzLnRhcmdldCk7XG4gICAgICAgIHRoaXMudmlydHVhbENhbWVyYS5mYXIgPSBjYW1lcmEuZmFyOyAvLyBVc2VkIGluIFdlYkdMQmFja2dyb3VuZFxuICAgICAgICB0aGlzLnZpcnR1YWxDYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcbiAgICAgICAgdGhpcy52aXJ0dWFsQ2FtZXJhLnByb2plY3Rpb25NYXRyaXguY29weShjYW1lcmEucHJvamVjdGlvbk1hdHJpeCk7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgdGV4dHVyZSBtYXRyaXhcbiAgICAgICAgdGhpcy50ZXh0dXJlTWF0cml4LnNldCgwLjUsIDAuMCwgMC4wLCAwLjUsIDAuMCwgMC41LCAwLjAsIDAuNSwgMC4wLCAwLjAsIDAuNSwgMC41LCAwLjAsIDAuMCwgMC4wLCAxLjApO1xuICAgICAgICB0aGlzLnRleHR1cmVNYXRyaXgubXVsdGlwbHkodGhpcy52aXJ0dWFsQ2FtZXJhLnByb2plY3Rpb25NYXRyaXgpO1xuICAgICAgICB0aGlzLnRleHR1cmVNYXRyaXgubXVsdGlwbHkodGhpcy52aXJ0dWFsQ2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSk7XG4gICAgICAgIHRoaXMudGV4dHVyZU1hdHJpeC5tdWx0aXBseShwYXJlbnQubWF0cml4V29ybGQpO1xuICAgICAgICAvLyBOb3cgdXBkYXRlIHByb2plY3Rpb24gbWF0cml4IHdpdGggbmV3IGNsaXAgcGxhbmUsIGltcGxlbWVudGluZyBjb2RlIGZyb206IGh0dHA6Ly93d3cudGVyYXRob24uY29tL2NvZGUvb2JsaXF1ZS5odG1sXG4gICAgICAgIC8vIFBhcGVyIGV4cGxhaW5pbmcgdGhpcyB0ZWNobmlxdWU6IGh0dHA6Ly93d3cudGVyYXRob24uY29tL2xlbmd5ZWwvTGVuZ3llbC1PYmxpcXVlLnBkZlxuICAgICAgICB0aGlzLnJlZmxlY3RvclBsYW5lLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHRoaXMubm9ybWFsLCB0aGlzLnJlZmxlY3RvcldvcmxkUG9zaXRpb24pO1xuICAgICAgICB0aGlzLnJlZmxlY3RvclBsYW5lLmFwcGx5TWF0cml4NCh0aGlzLnZpcnR1YWxDYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKTtcbiAgICAgICAgdGhpcy5jbGlwUGxhbmUuc2V0KFxuICAgICAgICAgICAgdGhpcy5yZWZsZWN0b3JQbGFuZS5ub3JtYWwueCxcbiAgICAgICAgICAgIHRoaXMucmVmbGVjdG9yUGxhbmUubm9ybWFsLnksXG4gICAgICAgICAgICB0aGlzLnJlZmxlY3RvclBsYW5lLm5vcm1hbC56LFxuICAgICAgICAgICAgdGhpcy5yZWZsZWN0b3JQbGFuZS5jb25zdGFudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBwcm9qZWN0aW9uTWF0cml4ID0gdGhpcy52aXJ0dWFsQ2FtZXJhLnByb2plY3Rpb25NYXRyaXg7XG4gICAgICAgIHRoaXMucS54ID0gKE1hdGguc2lnbih0aGlzLmNsaXBQbGFuZS54KSArIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbOF0pIC8gcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1swXTtcbiAgICAgICAgdGhpcy5xLnkgPSAoTWF0aC5zaWduKHRoaXMuY2xpcFBsYW5lLnkpICsgcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1s5XSkgLyBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzVdO1xuICAgICAgICB0aGlzLnEueiA9IC0xLjA7XG4gICAgICAgIHRoaXMucS53ID0gKDEuMCArIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMTBdKSAvIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMTRdO1xuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNjYWxlZCBwbGFuZSB2ZWN0b3JcbiAgICAgICAgdGhpcy5jbGlwUGxhbmUubXVsdGlwbHlTY2FsYXIoMi4wIC8gdGhpcy5jbGlwUGxhbmUuZG90KHRoaXMucSkpO1xuICAgICAgICAvLyBSZXBsYWNpbmcgdGhlIHRoaXJkIHJvdyBvZiB0aGUgcHJvamVjdGlvbiBtYXRyaXhcbiAgICAgICAgcHJvamVjdGlvbk1hdHJpeC5lbGVtZW50c1syXSA9IHRoaXMuY2xpcFBsYW5lLng7XG4gICAgICAgIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbNl0gPSB0aGlzLmNsaXBQbGFuZS55O1xuICAgICAgICBwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWzEwXSA9IHRoaXMuY2xpcFBsYW5lLnogKyAxLjA7XG4gICAgICAgIHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbMTRdID0gdGhpcy5jbGlwUGxhbmUudztcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQmVmb3JlUmVuZGVyKHN0YXRlOiBOZ3RSZW5kZXJTdGF0ZSkge1xuICAgICAgICBpZiAoIXRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBnZXRMb2NhbFN0YXRlKHRoaXMubWF0ZXJpYWxSZWYubmF0aXZlRWxlbWVudCkucGFyZW50O1xuICAgICAgICBpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgZ2wsIHNjZW5lIH0gPSBzdGF0ZTtcbiAgICAgICAgY29uc3QgeyBoYXNCbHVyIH0gPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCB7IGZibzEsIGZibzIsIGJsdXJQYXNzIH0gPSB0aGlzLmdldCgncmVmbGVjdG9yRW50aXRpZXMnKTtcblxuICAgICAgICBpZiAoZmJvMSAmJiBmYm8yICYmIGJsdXJQYXNzKSB7XG4gICAgICAgICAgICBwYXJlbnQudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFhyRW5hYmxlZCA9IGdsLnhyLmVuYWJsZWQ7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2hhZG93QXV0b1VwZGF0ZSA9IGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlO1xuICAgICAgICAgICAgdGhpcy5iZWZvcmVSZW5kZXIoc3RhdGUpO1xuICAgICAgICAgICAgZ2wueHIuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZ2wuc2hhZG93TWFwLmF1dG9VcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChmYm8xKTtcbiAgICAgICAgICAgIGdsLnN0YXRlLmJ1ZmZlcnMuZGVwdGguc2V0TWFzayh0cnVlKTtcbiAgICAgICAgICAgIGlmICghZ2wuYXV0b0NsZWFyKSBnbC5jbGVhcigpO1xuICAgICAgICAgICAgZ2wucmVuZGVyKHNjZW5lLCB0aGlzLnZpcnR1YWxDYW1lcmEpO1xuICAgICAgICAgICAgaWYgKGhhc0JsdXIpIGJsdXJQYXNzLnJlbmRlcihnbCwgZmJvMSwgZmJvMik7XG4gICAgICAgICAgICBnbC54ci5lbmFibGVkID0gY3VycmVudFhyRW5hYmxlZDtcbiAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gY3VycmVudFNoYWRvd0F1dG9VcGRhdGU7XG4gICAgICAgICAgICBwYXJlbnQudmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -26,8 +26,8 @@ export class NgtsMeshWobbleMaterial extends NgtRxStore {
26
26
  });
27
27
  }
28
28
  }
29
- NgtsMeshWobbleMaterial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- NgtsMeshWobbleMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { materialRef: "materialRef", time: "time", factor: "factor", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
29
+ NgtsMeshWobbleMaterial.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsMeshWobbleMaterial, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ NgtsMeshWobbleMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsMeshWobbleMaterial, isStandalone: true, selector: "ngts-mesh-wobble-material", inputs: { materialRef: "materialRef", time: "time", factor: "factor", speed: "speed" }, usesInheritance: true, ngImport: i0, template: `
31
31
  <ngt-primitive
32
32
  *args="[material]"
33
33
  [ref]="materialRef"
@@ -37,7 +37,7 @@ NgtsMeshWobbleMaterial.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
37
37
  ngtCompound
38
38
  />
39
39
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsMeshWobbleMaterial, decorators: [{
41
41
  type: Component,
42
42
  args: [{
43
43
  selector: 'ngts-mesh-wobble-material',
@@ -16,9 +16,9 @@ export class NgtsBakeShadows extends NgtRxStore {
16
16
  });
17
17
  }
18
18
  }
19
- NgtsBakeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsBakeShadows, deps: null, target: i0.ɵɵFactoryTarget.Directive });
20
- NgtsBakeShadows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", usesInheritance: true, ngImport: i0 });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsBakeShadows, decorators: [{
19
+ NgtsBakeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsBakeShadows, deps: null, target: i0.ɵɵFactoryTarget.Directive });
20
+ NgtsBakeShadows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", usesInheritance: true, ngImport: i0 });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsBakeShadows, decorators: [{
22
22
  type: Directive,
23
23
  args: [{ selector: 'ngts-bake-shadows', standalone: true }]
24
24
  }] });
@@ -31,9 +31,9 @@ export class NgtsAdaptiveDpr extends NgtRxStore {
31
31
  });
32
32
  }
33
33
  }
34
- NgtsAdaptiveDpr.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsAdaptiveDpr, deps: null, target: i0.ɵɵFactoryTarget.Directive });
35
- NgtsAdaptiveDpr.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: "pixelated" }, providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
34
+ NgtsAdaptiveDpr.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveDpr, deps: null, target: i0.ɵɵFactoryTarget.Directive });
35
+ NgtsAdaptiveDpr.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: "pixelated" }, providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
37
37
  type: Directive,
38
38
  args: [{
39
39
  selector: 'ngts-adaptive-dpr',
@@ -23,9 +23,9 @@ export class NgtsAdaptiveEvents extends NgtRxStore {
23
23
  });
24
24
  }
25
25
  }
26
- NgtsAdaptiveEvents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsAdaptiveEvents, deps: null, target: i0.ɵɵFactoryTarget.Directive });
27
- NgtsAdaptiveEvents.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
26
+ NgtsAdaptiveEvents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveEvents, deps: null, target: i0.ɵɵFactoryTarget.Directive });
27
+ NgtsAdaptiveEvents.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
29
29
  type: Directive,
30
30
  args: [{
31
31
  selector: 'ngts-adaptive-events',
@@ -24,13 +24,13 @@ export class NgtsDetailed extends NgtRxStore {
24
24
  });
25
25
  }
26
26
  }
27
- NgtsDetailed.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsDetailed, deps: null, target: i0.ɵɵFactoryTarget.Component });
28
- NgtsDetailed.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed[distances]", inputs: { lodRef: "lodRef", distances: "distances" }, usesInheritance: true, ngImport: i0, template: `
27
+ NgtsDetailed.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsDetailed, deps: null, target: i0.ɵɵFactoryTarget.Component });
28
+ NgtsDetailed.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed[distances]", inputs: { lodRef: "lodRef", distances: "distances" }, usesInheritance: true, ngImport: i0, template: `
29
29
  <ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="$any($event).object.update($any($event).state.camera)">
30
30
  <ng-content />
31
31
  </ngt-lOD>
32
32
  `, isInline: true });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsDetailed, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsDetailed, decorators: [{
34
34
  type: Component,
35
35
  args: [{
36
36
  selector: 'ngts-detailed[distances]',
@@ -59,9 +59,9 @@ export class NgtsStats extends NgtRxStore {
59
59
  });
60
60
  }
61
61
  }
62
- NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
63
- NgtsStats.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes", right: "right" }, usesInheritance: true, ngImport: i0 });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsStats, decorators: [{
62
+ NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
63
+ NgtsStats.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes", right: "right" }, usesInheritance: true, ngImport: i0 });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsStats, decorators: [{
65
65
  type: Directive,
66
66
  args: [{
67
67
  selector: 'ngts-stats',
@@ -116,9 +116,9 @@ export class AccumulativeShadowsConsumer {
116
116
  inject(NGTS_ACCUMULATIVE_SHADOWS_API);
117
117
  }
118
118
  }
119
- AccumulativeShadowsConsumer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AccumulativeShadowsConsumer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
120
- AccumulativeShadowsConsumer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: AccumulativeShadowsConsumer, isStandalone: true, selector: "ngts-accumulative-shadows-consumer", ngImport: i0 });
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AccumulativeShadowsConsumer, decorators: [{
119
+ AccumulativeShadowsConsumer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccumulativeShadowsConsumer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
120
+ AccumulativeShadowsConsumer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: AccumulativeShadowsConsumer, isStandalone: true, selector: "ngts-accumulative-shadows-consumer", ngImport: i0 });
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AccumulativeShadowsConsumer, decorators: [{
122
122
  type: Directive,
123
123
  args: [{ selector: 'ngts-accumulative-shadows-consumer', standalone: true }]
124
124
  }], ctorParameters: function () { return []; } });
@@ -192,8 +192,8 @@ export class NgtsAccumulativeShadows extends NgtRxStore {
192
192
  });
193
193
  }
194
194
  }
195
- NgtsAccumulativeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsAccumulativeShadows, deps: null, target: i0.ɵɵFactoryTarget.Component });
196
- NgtsAccumulativeShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { frames: "frames", blend: "blend", limit: "limit", scale: "scale", temporal: "temporal", opacity: "opacity", alphaTest: "alphaTest", color: "color", colorBlend: "colorBlend", resolution: "resolution", toneMapped: "toneMapped" }, providers: [
195
+ NgtsAccumulativeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAccumulativeShadows, deps: null, target: i0.ɵɵFactoryTarget.Component });
196
+ NgtsAccumulativeShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsAccumulativeShadows, isStandalone: true, selector: "ngts-accumulative-shadows", inputs: { frames: "frames", blend: "blend", limit: "limit", scale: "scale", temporal: "temporal", opacity: "opacity", alphaTest: "alphaTest", color: "color", colorBlend: "colorBlend", resolution: "resolution", toneMapped: "toneMapped" }, providers: [
197
197
  {
198
198
  provide: NGTS_ACCUMULATIVE_SHADOWS_API,
199
199
  useFactory: accumulativeShadowsApiFactory,
@@ -218,7 +218,7 @@ NgtsAccumulativeShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
218
218
  </ngt-mesh>
219
219
  </ngt-group>
220
220
  `, isInline: true, dependencies: [{ kind: "directive", type: AccumulativeShadowsConsumer, selector: "ngts-accumulative-shadows-consumer" }] });
221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
221
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsAccumulativeShadows, decorators: [{
222
222
  type: Component,
223
223
  args: [{
224
224
  selector: 'ngts-accumulative-shadows',
@@ -47,9 +47,9 @@ export class RandomizedLightsConsumer {
47
47
  inject(NGTS_RANDOMIZED_LIGHTS_API);
48
48
  }
49
49
  }
50
- RandomizedLightsConsumer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RandomizedLightsConsumer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
51
- RandomizedLightsConsumer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: RandomizedLightsConsumer, isStandalone: true, selector: "ngts-randomized-lights-consumer", ngImport: i0 });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RandomizedLightsConsumer, decorators: [{
50
+ RandomizedLightsConsumer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: RandomizedLightsConsumer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
51
+ RandomizedLightsConsumer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: RandomizedLightsConsumer, isStandalone: true, selector: "ngts-randomized-lights-consumer", ngImport: i0 });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: RandomizedLightsConsumer, decorators: [{
53
53
  type: Directive,
54
54
  args: [{ selector: 'ngts-randomized-lights-consumer', standalone: true }]
55
55
  }], ctorParameters: function () { return []; } });
@@ -127,8 +127,8 @@ export class NgtsRandomizedLights extends NgtRxStore {
127
127
  this.connect('length', this.select(['position'], ({ position }) => new THREE.Vector3(...position).length()));
128
128
  }
129
129
  }
130
- NgtsRandomizedLights.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsRandomizedLights, deps: null, target: i0.ɵɵFactoryTarget.Component });
131
- NgtsRandomizedLights.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsRandomizedLights, isStandalone: true, selector: "ngts-randomized-lights", inputs: { lightsRef: "lightsRef", frames: "frames", position: "position", radius: "radius", amount: "amount", intensity: "intensity", ambient: "ambient", castShadow: "castShadow", bias: "bias", mapSize: "mapSize", size: "size", near: "near", far: "far" }, providers: [
130
+ NgtsRandomizedLights.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsRandomizedLights, deps: null, target: i0.ɵɵFactoryTarget.Component });
131
+ NgtsRandomizedLights.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsRandomizedLights, isStandalone: true, selector: "ngts-randomized-lights", inputs: { lightsRef: "lightsRef", frames: "frames", position: "position", radius: "radius", amount: "amount", intensity: "intensity", ambient: "ambient", castShadow: "castShadow", bias: "bias", mapSize: "mapSize", size: "size", near: "near", far: "far" }, providers: [
132
132
  { provide: NGTS_RANDOMIZED_LIGHTS_API, useFactory: randomizedLightsApiFactory, deps: [NgtsRandomizedLights] },
133
133
  ], usesInheritance: true, ngImport: i0, template: `
134
134
  <ngt-group ngtCompound [ref]="lightsRef">
@@ -144,7 +144,7 @@ NgtsRandomizedLights.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
144
144
  <ngts-randomized-lights-consumer />
145
145
  </ngt-group>
146
146
  `, isInline: true, dependencies: [{ kind: "directive", type: RandomizedLightsConsumer, selector: "ngts-randomized-lights-consumer" }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "directive", type: NgtRepeat, selector: "[ngFor][ngForRepeat]", inputs: ["ngForRepeat"] }] });
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsRandomizedLights, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsRandomizedLights, decorators: [{
148
148
  type: Component,
149
149
  args: [{
150
150
  selector: 'ngts-randomized-lights',
@@ -244,13 +244,13 @@ export class NgtsBounds extends NgtRxStore {
244
244
  });
245
245
  }
246
246
  }
247
- NgtsBounds.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsBounds, deps: null, target: i0.ɵɵFactoryTarget.Component });
248
- NgtsBounds.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsBounds, isStandalone: true, selector: "ngts-bounds", inputs: { boundsRef: "boundsRef", damping: "damping", fit: "fit", clip: "clip", observe: "observe", margin: "margin", eps: "eps" }, outputs: { fitted: "fitted" }, providers: [{ provide: NGTS_BOUNDS_API, useFactory: boundsApiFactory, deps: [NgtsBounds] }], usesInheritance: true, ngImport: i0, template: `
247
+ NgtsBounds.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsBounds, deps: null, target: i0.ɵɵFactoryTarget.Component });
248
+ NgtsBounds.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsBounds, isStandalone: true, selector: "ngts-bounds", inputs: { boundsRef: "boundsRef", damping: "damping", fit: "fit", clip: "clip", observe: "observe", margin: "margin", eps: "eps" }, outputs: { fitted: "fitted" }, providers: [{ provide: NGTS_BOUNDS_API, useFactory: boundsApiFactory, deps: [NgtsBounds] }], usesInheritance: true, ngImport: i0, template: `
249
249
  <ngt-group ngtCompound [ref]="boundsRef">
250
250
  <ng-content />
251
251
  </ngt-group>
252
252
  `, isInline: true });
253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsBounds, decorators: [{
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsBounds, decorators: [{
254
254
  type: Component,
255
255
  args: [{
256
256
  selector: 'ngts-bounds',
@@ -91,9 +91,9 @@ export class NgtsCameraShake extends NgtRxStore {
91
91
  }
92
92
  }
93
93
  }
94
- NgtsCameraShake.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive });
95
- NgtsCameraShake.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { intensity: "intensity", decay: "decay", decayRate: "decayRate", maxYaw: "maxYaw", maxPitch: "maxPitch", maxRoll: "maxRoll", yawFrequency: "yawFrequency", pitchFrequency: "pitchFrequency", rollFrequency: "rollFrequency" }, usesInheritance: true, ngImport: i0 });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsCameraShake, decorators: [{
94
+ NgtsCameraShake.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive });
95
+ NgtsCameraShake.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { intensity: "intensity", decay: "decay", decayRate: "decayRate", maxYaw: "maxYaw", maxPitch: "maxPitch", maxRoll: "maxRoll", yawFrequency: "yawFrequency", pitchFrequency: "pitchFrequency", rollFrequency: "rollFrequency" }, usesInheritance: true, ngImport: i0 });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsCameraShake, decorators: [{
97
97
  type: Directive,
98
98
  args: [{
99
99
  selector: 'ngts-camera-shake',
@@ -86,8 +86,8 @@ export class NgtsCenter extends NgtRxStore {
86
86
  });
87
87
  }
88
88
  }
89
- NgtsCenter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsCenter, deps: null, target: i0.ɵɵFactoryTarget.Component });
90
- NgtsCenter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsCenter, isStandalone: true, selector: "ngts-center", inputs: { centerRef: "centerRef", top: "top", right: "right", bottom: "bottom", left: "left", front: "front", back: "back", disableX: "disableX", disableY: "disableY", disableZ: "disableZ", disabled: "disabled", precise: "precise" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
89
+ NgtsCenter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsCenter, deps: null, target: i0.ɵɵFactoryTarget.Component });
90
+ NgtsCenter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsCenter, isStandalone: true, selector: "ngts-center", inputs: { centerRef: "centerRef", top: "top", right: "right", bottom: "bottom", left: "left", front: "front", back: "back", disableX: "disableX", disableY: "disableY", disableZ: "disableZ", disabled: "disabled", precise: "precise" }, outputs: { centered: "centered" }, usesInheritance: true, ngImport: i0, template: `
91
91
  <ngt-group ngtCompound [ref]="centerRef">
92
92
  <ngt-group [ref]="outerRef">
93
93
  <ngt-group [ref]="innerRef">
@@ -96,7 +96,7 @@ NgtsCenter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "1
96
96
  </ngt-group>
97
97
  </ngt-group>
98
98
  `, isInline: true });
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsCenter, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsCenter, decorators: [{
100
100
  type: Component,
101
101
  args: [{
102
102
  selector: 'ngts-center',
@@ -70,8 +70,8 @@ export class NgtsCloud extends NgtRxStore {
70
70
  });
71
71
  }
72
72
  }
73
- NgtsCloud.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsCloud, deps: null, target: i0.ɵɵFactoryTarget.Component });
74
- NgtsCloud.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsCloud, isStandalone: true, selector: "ngts-cloud", inputs: { groupRef: "groupRef", opacity: "opacity", speed: "speed", width: "width", depth: "depth", segments: "segments", texture: "texture", color: "color", depthTest: "depthTest" }, usesInheritance: true, ngImport: i0, template: `
73
+ NgtsCloud.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsCloud, deps: null, target: i0.ɵɵFactoryTarget.Component });
74
+ NgtsCloud.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsCloud, isStandalone: true, selector: "ngts-cloud", inputs: { groupRef: "groupRef", opacity: "opacity", speed: "speed", width: "width", depth: "depth", segments: "segments", texture: "texture", color: "color", depthTest: "depthTest" }, usesInheritance: true, ngImport: i0, template: `
75
75
  <ngt-group ngtCompound [ref]="groupRef">
76
76
  <ngt-group
77
77
  [position]="[0, 0, (get('segments') / 2) * get('depth')]"
@@ -100,7 +100,7 @@ NgtsCloud.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
100
100
  </ngt-group>
101
101
  </ngt-group>
102
102
  `, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }, { kind: "component", type: NgtsBillboard, selector: "ngts-billboard", inputs: ["billboardRef", "follow", "lockX", "lockY", "lockZ"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsCloud, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsCloud, decorators: [{
104
104
  type: Component,
105
105
  args: [{
106
106
  selector: 'ngts-cloud',
@@ -144,8 +144,8 @@ export class NgtsContactShadows extends NgtRxStore {
144
144
  blurPlane.visible = false;
145
145
  }
146
146
  }
147
- NgtsContactShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
- NgtsContactShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { contactShadowsRef: "contactShadowsRef", opacity: "opacity", width: "width", height: "height", blur: "blur", far: "far", smooth: "smooth", resolution: "resolution", frames: "frames", scale: "scale", color: "color", depthWrite: "depthWrite", renderOrder: "renderOrder" }, usesInheritance: true, ngImport: i0, template: `
147
+ NgtsContactShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
+ NgtsContactShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { contactShadowsRef: "contactShadowsRef", opacity: "opacity", width: "width", height: "height", blur: "blur", far: "far", smooth: "smooth", resolution: "resolution", frames: "frames", scale: "scale", color: "color", depthWrite: "depthWrite", renderOrder: "renderOrder" }, usesInheritance: true, ngImport: i0, template: `
149
149
  <ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
150
150
  <ng-container *ngIf="contactShadows$ | ngtPush : null as contactShadows">
151
151
  <ngt-mesh
@@ -167,7 +167,7 @@ NgtsContactShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
167
167
  </ng-container>
168
168
  </ngt-group>
169
169
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsContactShadows, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsContactShadows, decorators: [{
171
171
  type: Component,
172
172
  args: [{
173
173
  selector: 'ngts-contact-shadows',
@@ -28,9 +28,9 @@ export class NgtsEnvironmentCube extends NgtsEnvironmentInputs {
28
28
  });
29
29
  }
30
30
  }
31
- NgtsEnvironmentCube.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentCube, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32
- NgtsEnvironmentCube.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", usesInheritance: true, ngImport: i0 });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
31
+ NgtsEnvironmentCube.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentCube, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32
+ NgtsEnvironmentCube.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", usesInheritance: true, ngImport: i0 });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
34
34
  type: Directive,
35
35
  args: [{
36
36
  selector: 'ngts-environment-cube',
@@ -21,8 +21,8 @@ export class NgtsEnvironmentGround extends NgtsEnvironmentInputs {
21
21
  this.connect('groundScale', this.select(['ground'], ({ ground }) => ground?.scale ?? 1000));
22
22
  }
23
23
  }
24
- NgtsEnvironmentGround.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentGround, deps: null, target: i0.ɵɵFactoryTarget.Component });
25
- NgtsEnvironmentGround.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsEnvironmentGround, isStandalone: true, selector: "ngts-environment-ground", usesInheritance: true, ngImport: i0, template: `
24
+ NgtsEnvironmentGround.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentGround, deps: null, target: i0.ɵɵFactoryTarget.Component });
25
+ NgtsEnvironmentGround.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsEnvironmentGround, isStandalone: true, selector: "ngts-environment-ground", usesInheritance: true, ngImport: i0, template: `
26
26
  <ngts-environment-map
27
27
  [background]="get('background')"
28
28
  [blur]="get('blur')"
@@ -38,7 +38,7 @@ NgtsEnvironmentGround.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
38
38
  />
39
39
  </ng-container>
40
40
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map" }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
42
42
  type: Component,
43
43
  args: [{
44
44
  selector: 'ngts-environment-ground',
@@ -50,9 +50,9 @@ export class NgtsEnvironmentInputs extends NgtRxStore {
50
50
  this.set({ encoding });
51
51
  }
52
52
  }
53
- NgtsEnvironmentInputs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentInputs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
54
- NgtsEnvironmentInputs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsEnvironmentInputs, inputs: { frames: "frames", near: "near", far: "far", resolution: "resolution", background: "background", blur: "blur", map: "map", files: "files", path: "path", preset: "preset", scene: "scene", extensions: "extensions", ground: "ground", encoding: "encoding" }, usesInheritance: true, ngImport: i0 });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentInputs, decorators: [{
53
+ NgtsEnvironmentInputs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentInputs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
54
+ NgtsEnvironmentInputs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsEnvironmentInputs, inputs: { frames: "frames", near: "near", far: "far", resolution: "resolution", background: "background", blur: "blur", map: "map", files: "files", path: "path", preset: "preset", scene: "scene", extensions: "extensions", ground: "ground", encoding: "encoding" }, usesInheritance: true, ngImport: i0 });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentInputs, decorators: [{
56
56
  type: Directive
57
57
  }], propDecorators: { frames: [{
58
58
  type: Input
@@ -26,9 +26,9 @@ export class NgtsEnvironmentMap extends NgtsEnvironmentInputs {
26
26
  });
27
27
  }
28
28
  }
29
- NgtsEnvironmentMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentMap, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30
- NgtsEnvironmentMap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", usesInheritance: true, ngImport: i0 });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
29
+ NgtsEnvironmentMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentMap, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30
+ NgtsEnvironmentMap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", usesInheritance: true, ngImport: i0 });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
32
32
  type: Directive,
33
33
  args: [{
34
34
  selector: 'ngts-environment-map',
@@ -57,8 +57,8 @@ export class NgtsEnvironmentPortal extends NgtsEnvironmentInputs {
57
57
  }
58
58
  }
59
59
  }
60
- NgtsEnvironmentPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentPortal, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- NgtsEnvironmentPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsEnvironmentPortal, isStandalone: true, selector: "ngts-environment-portal", usesInheritance: true, ngImport: i0, template: `
60
+ NgtsEnvironmentPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentPortal, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ NgtsEnvironmentPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtsEnvironmentPortal, isStandalone: true, selector: "ngts-environment-portal", usesInheritance: true, ngImport: i0, template: `
62
62
  <ngt-portal [container]="virtualSceneRef">
63
63
  <ng-template ngtPortalContent>
64
64
  <ng-content />
@@ -78,7 +78,7 @@ NgtsEnvironmentPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
78
78
  </ng-template>
79
79
  </ngt-portal>
80
80
  `, isInline: true, dependencies: [{ kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }, { kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map" }, { kind: "directive", type: NgtsEnvironmentCube, selector: "ngts-environment-cube" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsEnvironmentPortal, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtsEnvironmentPortal, decorators: [{
82
82
  type: Component,
83
83
  args: [{
84
84
  selector: 'ngts-environment-portal',