angular-three-soba 1.12.1 → 1.12.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 (96) hide show
  1. package/esm2020/abstractions/lib/billboard/billboard.mjs +3 -3
  2. package/esm2020/abstractions/lib/catmull-rom-line/catmull-rom-line.mjs +3 -3
  3. package/esm2020/abstractions/lib/cubic-bezier-line/cubic-bezier-line.mjs +3 -3
  4. package/esm2020/abstractions/lib/edges/edges.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/cube-camera/cube-camera.mjs +3 -3
  20. package/esm2020/cameras/lib/orthographic-camera/orthographic-camera.mjs +3 -3
  21. package/esm2020/cameras/lib/perspective-camera/perspective-camera.mjs +3 -3
  22. package/esm2020/controls/lib/orbit-controls/orbit-controls.mjs +3 -3
  23. package/esm2020/loaders/lib/loader/loader.mjs +3 -3
  24. package/esm2020/materials/lib/mesh-distort-material/mesh-distort-material.mjs +3 -3
  25. package/esm2020/materials/lib/mesh-reflector-material/mesh-reflector-material.mjs +3 -3
  26. package/esm2020/materials/lib/mesh-refraction-material/mesh-refraction-material.mjs +3 -3
  27. package/esm2020/materials/lib/mesh-transmission-material/mesh-transmission-material.mjs +3 -3
  28. package/esm2020/materials/lib/mesh-wobble-material/mesh-wobble-material.mjs +3 -3
  29. package/esm2020/misc/lib/animations/animations.mjs +34 -42
  30. package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +3 -3
  31. package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +3 -3
  32. package/esm2020/performance/lib/adaptive/adaptive-events.mjs +3 -3
  33. package/esm2020/performance/lib/detailed/detailed.mjs +3 -3
  34. package/esm2020/performance/lib/stats/stats.mjs +3 -3
  35. package/esm2020/shaders/index.mjs +2 -1
  36. package/esm2020/shaders/lib/star-field-material/star-field-material.mjs +32 -0
  37. package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +6 -6
  38. package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +6 -6
  39. package/esm2020/staging/lib/bounds/bounds.mjs +3 -3
  40. package/esm2020/staging/lib/camera-shake/camera-shake.mjs +3 -3
  41. package/esm2020/staging/lib/caustics/caustics.mjs +4 -4
  42. package/esm2020/staging/lib/center/center.mjs +3 -3
  43. package/esm2020/staging/lib/cloud/cloud.mjs +3 -3
  44. package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +3 -3
  45. package/esm2020/staging/lib/environment/environment-cube.mjs +3 -3
  46. package/esm2020/staging/lib/environment/environment-ground.mjs +3 -3
  47. package/esm2020/staging/lib/environment/environment-inputs.mjs +5 -5
  48. package/esm2020/staging/lib/environment/environment-map.mjs +3 -3
  49. package/esm2020/staging/lib/environment/environment-portal.mjs +3 -3
  50. package/esm2020/staging/lib/environment/environment.mjs +6 -6
  51. package/esm2020/staging/lib/float/float.mjs +3 -3
  52. package/esm2020/staging/lib/sky/sky.mjs +3 -3
  53. package/esm2020/staging/lib/sparkles/sparkles.mjs +3 -3
  54. package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +3 -3
  55. package/esm2020/staging/lib/spot-light/spot-light-input.mjs +3 -3
  56. package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +3 -3
  57. package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +3 -3
  58. package/esm2020/staging/lib/spot-light/spot-light-shadow.mjs +3 -3
  59. package/esm2020/staging/lib/spot-light/spot-light.mjs +3 -3
  60. package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +3 -3
  61. package/esm2020/staging/lib/stage/stage.mjs +6 -6
  62. package/esm2020/staging/lib/stars/stars.mjs +8 -40
  63. package/fesm2015/angular-three-soba-abstractions.mjs +57 -57
  64. package/fesm2015/angular-three-soba-cameras.mjs +15 -15
  65. package/fesm2015/angular-three-soba-controls.mjs +3 -3
  66. package/fesm2015/angular-three-soba-loaders.mjs +3 -3
  67. package/fesm2015/angular-three-soba-materials.mjs +15 -15
  68. package/fesm2015/angular-three-soba-misc.mjs +35 -45
  69. package/fesm2015/angular-three-soba-misc.mjs.map +1 -1
  70. package/fesm2015/angular-three-soba-performance.mjs +12 -12
  71. package/fesm2015/angular-three-soba-shaders.mjs +32 -1
  72. package/fesm2015/angular-three-soba-shaders.mjs.map +1 -1
  73. package/fesm2015/angular-three-soba-staging.mjs +93 -126
  74. package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
  75. package/fesm2020/angular-three-soba-abstractions.mjs +57 -57
  76. package/fesm2020/angular-three-soba-cameras.mjs +15 -15
  77. package/fesm2020/angular-three-soba-controls.mjs +3 -3
  78. package/fesm2020/angular-three-soba-loaders.mjs +3 -3
  79. package/fesm2020/angular-three-soba-materials.mjs +15 -15
  80. package/fesm2020/angular-three-soba-misc.mjs +35 -45
  81. package/fesm2020/angular-three-soba-misc.mjs.map +1 -1
  82. package/fesm2020/angular-three-soba-performance.mjs +12 -12
  83. package/fesm2020/angular-three-soba-shaders.mjs +32 -1
  84. package/fesm2020/angular-three-soba-shaders.mjs.map +1 -1
  85. package/fesm2020/angular-three-soba-staging.mjs +93 -126
  86. package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
  87. package/misc/lib/animations/animations.d.ts +7 -7
  88. package/package.json +4 -3
  89. package/plugin/package.json +2 -2
  90. package/shaders/index.d.ts +1 -0
  91. package/shaders/lib/mesh-distort-material/mesh-distort-material.d.ts +2 -2
  92. package/shaders/lib/star-field-material/star-field-material.d.ts +3 -0
  93. package/staging/lib/caustics/caustics.d.ts +3 -3
  94. package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +1 -1
  95. package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +2 -2
  96. package/staging/lib/stars/stars.d.ts +4 -4
@@ -274,8 +274,8 @@ export class NgtsCaustics extends NgtRxStore {
274
274
  });
275
275
  }
276
276
  }
277
- NgtsCaustics.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsCaustics, deps: null, target: i0.ɵɵFactoryTarget.Component });
278
- NgtsCaustics.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsCaustics, isStandalone: true, selector: "ngts-caustics", inputs: { causticsRef: "causticsRef", frames: "frames", debug: "debug", causticsOnly: "causticsOnly", backside: "backside", ior: "ior", backsideIOR: "backsideIOR", worldRadius: "worldRadius", intensity: "intensity", color: "color", resolution: "resolution", lightSource: "lightSource" }, usesInheritance: true, ngImport: i0, template: `
277
+ NgtsCaustics.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsCaustics, deps: null, target: i0.ɵɵFactoryTarget.Component });
278
+ NgtsCaustics.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsCaustics, isStandalone: true, selector: "ngts-caustics", inputs: { causticsRef: "causticsRef", frames: "frames", debug: "debug", causticsOnly: "causticsOnly", backside: "backside", ior: "ior", backsideIOR: "backsideIOR", worldRadius: "worldRadius", intensity: "intensity", color: "color", resolution: "resolution", lightSource: "lightSource" }, usesInheritance: true, ngImport: i0, template: `
279
279
  <ngt-group [ref]="causticsRef" ngtCompound>
280
280
  <ngt-scene [ref]="sceneRef">
281
281
  <ngt-orthographic-camera [ref]="cameraRef" [up]="[0, 1, 0]" />
@@ -301,7 +301,7 @@ NgtsCaustics.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
301
301
  </ngt-mesh>
302
302
  </ngt-group>
303
303
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsEdges, selector: "ngts-edges", inputs: ["edgesRef", "threshold", "color", "geometry", "userData", "withChildren"] }] });
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsCaustics, decorators: [{
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsCaustics, decorators: [{
305
305
  type: Component,
306
306
  args: [{
307
307
  selector: 'ngts-caustics',
@@ -360,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
360
360
  }], lightSource: [{
361
361
  type: Input
362
362
  }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvY2F1c3RpY3MvY2F1c3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUU5QyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0FBRWpILE1BQU0sV0FBVyxHQUFHO0lBQ2hCLEtBQUssRUFBRSxJQUFJO0lBQ1gsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZ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QUMsSUFBSSxDQUFDLENBQUM7d0JBRXpCLHdEQUF3RDt3QkFDeEQsSUFBSSxZQUFZOzRCQUFFLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3FCQUMzQztnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDOzt5R0E3VFEsWUFBWTs2RkFBWixZQUFZLGdZQTdCWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXlCVCw0REFDUyxJQUFJLDZGQUFFLFNBQVM7MkZBR2hCLFlBQVk7a0JBaEN4QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJUO29CQUNELE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7b0JBQzFCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzs4QkFXWSxXQUFXO3NCQUFuQixLQUFLO2dCQUdPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3ROZ3RSZWYsIE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RzRWRnZXMgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvYWJzdHJhY3Rpb25zJztcbmltcG9ydCB7IGluamVjdE5ndHNGQk8gfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbWlzYyc7XG5pbXBvcnQgeyBDYXVzdGljc01hdGVyaWFsLCBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgR3JvdXAsIExpbmVCYXNpY01hdGVyaWFsLCBNZXNoLCBPcnRob2dyYXBoaWNDYW1lcmEsIFBsYW5lR2VvbWV0cnksIFNjZW5lIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgRnVsbFNjcmVlblF1YWQgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG5leHRlbmQoeyBHcm91cCwgU2NlbmUsIE1lc2gsIFBsYW5lR2VvbWV0cnksIE9ydGhvZ3JhcGhpY0NhbWVyYSwgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwsIExpbmVCYXNpY01hdGVyaWFsIH0pO1xuXG5jb25zdCBOT1JNQUxQUk9QUyA9IHtcbiAgICBkZXB0aDogdHJ1ZSxcbiAgICBtaW5GaWx0ZXI6IFRIUkVFLkxpbmVhckZpbHRlcixcbiAgICBtYWdGaWx0ZXI6IFRIUkVFLkxpbmVhckZpbHRlcixcbiAgICBlbmNvZGluZzogVEhSRUUuTGluZWFyRW5jb2RpbmcsXG4gICAgdHlwZTogVEhSRUUuVW5zaWduZWRCeXRlVHlwZSxcbn07XG5cbmNvbnN0IENBVVNUSUNQUk9QUyA9IHtcbiAgICBtaW5GaWx0ZXI6IFRIUkVFLkxpbmVhck1pcG1hcExpbmVhckZpbHRlcixcbiAgICBtYWdGaWx0ZXI6IFRIUkVFLkxpbmVhckZpbHRlcixcbiAgICBlbmNvZGluZzogVEhSRUUuTGluZWFyRW5jb2RpbmcsXG4gICAgZm9ybWF0OiBUSFJFRS5SR0JBRm9ybWF0LFxuICAgIHR5cGU6IFRIUkVFLkZsb2F0VHlwZSxcbiAgICBnZW5lcmF0ZU1pcG1hcHM6IHRydWUsXG59O1xuXG50eXBlIENhdXN0aWNzTWF0ZXJpYWxUeXBlID0gVEhSRUUuU2hhZGVyTWF0ZXJpYWwgJiB7XG4gICAgY2FtZXJhTWF0cml4V29ybGQ/OiBUSFJFRS5NYXRyaXg0O1xuICAgIGNhbWVyYVByb2plY3Rpb25NYXRyaXhJbnY/OiBUSFJFRS5NYXRyaXg0O1xuICAgIGxpZ2h0UGxhbmVOb3JtYWw/OiBUSFJFRS5WZWN0b3IzO1xuICAgIGxpZ2h0UGxhbmVDb25zdGFudD86IG51bWJlcjtcbiAgICBub3JtYWxUZXh0dXJlPzogVEhSRUUuVGV4dHVyZSB8IG51bGw7XG4gICAgZGVwdGhUZXh0dXJlPzogVEhSRUUuVGV4dHVyZSB8IG51bGw7XG4gICAgbGlnaHREaXI/OiBUSFJFRS5WZWN0b3IzO1xuICAgIG5lYXI/OiBudW1iZXI7XG4gICAgZmFyPzogbnVtYmVyO1xuICAgIG1vZGVsTWF0cml4PzogVEhSRUUuTWF0cml4NDtcbiAgICB3b3JsZFJhZGl1cz86IG51bWJlcjtcbiAgICBpb3I/OiBudW1iZXI7XG4gICAgYm91bmNlcz86IG51bWJlcjtcbiAgICByZXNvbHV0aW9uPzogbnVtYmVyO1xuICAgIHNpemU/OiBudW1iZXI7XG4gICAgaW50ZW5zaXR5PzogbnVtYmVyO1xufTtcblxudHlwZSBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbFR5cGUgPSBUSFJFRS5NZXNoTm9ybWFsTWF0ZXJpYWwgJiB7XG4gICAgdmlld01hdHJpeDogeyB2YWx1ZT86IFRIUkVFLk1hdHJpeDQgfTtcbiAgICBjb2xvcj86IFRIUkVFLkNvbG9yO1xuICAgIGNhdXN0aWNzVGV4dHVyZT86IFRIUkVFLlRleHR1cmU7XG4gICAgY2F1c3RpY3NUZXh0dXJlQj86IFRIUkVFLlRleHR1cmU7XG4gICAgbGlnaHRQcm9qTWF0cml4PzogVEhSRUUuTWF0cml4NDtcbiAgICBsaWdodFZpZXdNYXRyaXg/OiBUSFJFRS5NYXRyaXg0O1xufTtcblxuZnVuY3Rpb24gY3JlYXRlTm9ybWFsTWF0ZXJpYWwoc2lkZSA9IFRIUkVFLkZyb250U2lkZSkge1xuICAgIGNvbnN0IHZpZXdNYXRyaXggPSB7IHZhbHVlOiBuZXcgVEhSRUUuTWF0cml4NCgpIH07XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IFRIUkVFLk1lc2hOb3JtYWxNYXRlcmlhbCh7IHNpZGUgfSksIHtcbiAgICAgICAgdmlld01hdHJpeCxcbiAgICAgICAgb25CZWZvcmVDb21waWxlOiAoc2hhZGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHNoYWRlci51bmlmb3Jtcy52aWV3TWF0cml4ID0gdmlld01hdHJpeDtcbiAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlciA9XG4gICAgICAgICAgICAgICAgYHZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKCAoIHZlYzQoIGRpciwgMC4wICkgKiBtYXRyaXggKS54eXogKTtcbiAgICAgICAgIH1cXG5gICtcbiAgICAgICAgICAgICAgICBzaGFkZXIuZnJhZ21lbnRTaGFkZXIucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4nLFxuICAgICAgICAgICAgICAgICAgICBgI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuICAgICAgICAgICBub3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTtcXG5gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWNhdXN0aWNzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxuZ3QtZ3JvdXAgW3JlZl09XCJjYXVzdGljc1JlZlwiIG5ndENvbXBvdW5kPlxuICAgICAgICAgICAgPG5ndC1zY2VuZSBbcmVmXT1cInNjZW5lUmVmXCI+XG4gICAgICAgICAgICAgICAgPG5ndC1vcnRob2dyYXBoaWMtY2FtZXJhIFtyZWZdPVwiY2FtZXJhUmVmXCIgW3VwXT1cIlswLCAxLCAwXVwiIC8+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgICAgIDwvbmd0LXNjZW5lPlxuICAgICAgICAgICAgPG5ndC1tZXNoIFtyZW5kZXJPcmRlcl09XCIyXCIgW3JlZl09XCJwbGFuZVJlZlwiIFtyb3RhdGlvbl09XCJbLU1hdGguUEkgLyAyLCAwLCAwXVwiPlxuICAgICAgICAgICAgICAgIDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cbiAgICAgICAgICAgICAgICA8bmd0LWNhdXN0aWNzLXByb2plY3Rpb24tbWF0ZXJpYWxcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXVzdGljc1RhcmdldEZiby5uYXRpdmVFbGVtZW50ICYmIGNhdXN0aWNzVGFyZ2V0QkZiby5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3RyYW5zcGFyZW50XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZ2V0KCdjb2xvcicpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NhdXN0aWNzVGV4dHVyZV09XCJjYXVzdGljc1RhcmdldEZiby5uYXRpdmVFbGVtZW50LnRleHR1cmVcIlxuICAgICAgICAgICAgICAgICAgICBbY2F1c3RpY3NUZXh0dXJlQl09XCJjYXVzdGljc1RhcmdldEJGYm8ubmF0aXZlRWxlbWVudC50ZXh0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgW2JsZW5kaW5nXT1cIkN1c3RvbUJsZW5kaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2JsZW5kU3JjXT1cIk9uZUZhY3RvclwiXG4gICAgICAgICAgICAgICAgICAgIFtibGVuZERzdF09XCJTcmNBbHBoYUZhY3RvclwiXG4gICAgICAgICAgICAgICAgICAgIFtkZXB0aFdyaXRlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPG5ndHMtZWRnZXMgKm5nSWY9XCJnZXQoJ2RlYnVnJylcIiBbd2l0aENoaWxkcmVuXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5ndC1saW5lLWJhc2ljLW1hdGVyaWFsIGNvbG9yPVwiI2ZmZmYwMFwiIFt0b25lTWFwcGVkXT1cImZhbHNlXCIgLz5cbiAgICAgICAgICAgICAgICA8L25ndHMtZWRnZXM+XG4gICAgICAgICAgICA8L25ndC1tZXNoPlxuICAgICAgICA8L25ndC1ncm91cD5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ3RzRWRnZXNdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0NhdXN0aWNzIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgQ3VzdG9tQmxlbmRpbmcgPSBUSFJFRS5DdXN0b21CbGVuZGluZztcbiAgICByZWFkb25seSBPbmVGYWN0b3IgPSBUSFJFRS5PbmVGYWN0b3I7XG4gICAgcmVhZG9ubHkgU3JjQWxwaGFGYWN0b3IgPSBUSFJFRS5TcmNBbHBoYUZhY3RvcjtcbiAgICByZWFkb25seSBNYXRoID0gTWF0aDtcblxuICAgIHJlYWRvbmx5IHBsYW5lUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLk1lc2g+KCk7XG4gICAgcmVhZG9ubHkgc2NlbmVSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuU2NlbmU+KCk7XG4gICAgcmVhZG9ubHkgY2FtZXJhUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYT4oKTtcblxuICAgIEBJbnB1dCgpIGNhdXN0aWNzUmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLkdyb3VwPigpO1xuXG4gICAgLyoqIEhvdyBtYW55IGZyYW1lcyBpdCB3aWxsIHJlbmRlciwgc2V0IGl0IHRvIEluZmluaXR5IGZvciBydW50aW1lLCBkZWZhdWx0OiAxICovXG4gICAgQElucHV0KCkgc2V0IGZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGZyYW1lcyB9KTtcbiAgICB9XG4gICAgLyoqIEVuYWJsZXMgdmlzdWFsIGN1ZXMgdG8gaGVscCB5b3Ugc3RhZ2UgeW91ciBzY2VuZSwgZGVmYXVsdDogZmFsc2UgKi9cbiAgICBASW5wdXQoKSBzZXQgZGVidWcoZGVidWc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZWJ1ZyB9KTtcbiAgICB9XG4gICAgLyoqIFdpbGwgZGlzcGxheSBjYXVzdGljcyBvbmx5IGFuZCBza2lwIHRoZSBtb2RlbHMsIGRlZmF1bHQ6IGZhbHNlICovXG4gICAgQElucHV0KCkgc2V0IGNhdXN0aWNzT25seShjYXVzdGljc09ubHk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjYXVzdGljc09ubHkgfSk7XG4gICAgfVxuICAgIC8qKiBXaWxsIGluY2x1ZGUgYmFjayBmYWNlcyBhbmQgZW5hYmxlIHRoZSBiYWNrc2lkZUlPUiBwcm9wLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIHNldCBiYWNrc2lkZShiYWNrc2lkZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tzaWRlIH0pO1xuICAgIH1cbiAgICAvKiogVGhlIElPUiByZWZyYWN0aW9uIGluZGV4LCBkZWZhdWx0OiAxLjEgKi9cbiAgICBASW5wdXQoKSBzZXQgaW9yKGlvcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW9yIH0pO1xuICAgIH1cbiAgICAvKiogVGhlIElPUiByZWZyYWN0aW9uIGluZGV4IGZvciBiYWNrIGZhY2VzIChvbmx5IGF2YWlsYWJsZSB3aGVuIGJhY2tzaWRlIGlzIGVuYWJsZWQpLCBkZWZhdWx0OiAxLjEgKi9cbiAgICBASW5wdXQoKSBzZXQgYmFja3NpZGVJT1IoYmFja3NpZGVJT1I6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tzaWRlSU9SIH0pO1xuICAgIH1cbiAgICAvKiogVGhlIHRleGVsIHNpemUsIGRlZmF1bHQ6IDAuMzEyNSAqL1xuICAgIEBJbnB1dCgpIHNldCB3b3JsZFJhZGl1cyh3b3JsZFJhZGl1czogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgd29ybGRSYWRpdXMgfSk7XG4gICAgfVxuICAgIC8qKiBJbnRlbnNpdHkgb2YgdGhlIHByamVjdGVkIGNhdXN0aWNzLCBkZWZhdWx0OiAwLjA1ICovXG4gICAgQElucHV0KCkgc2V0IGludGVuc2l0eShpbnRlbnNpdHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGludGVuc2l0eSB9KTtcbiAgICB9XG4gICAgLyoqIENhdXN0aWNzIGNvbG9yLCBkZWZhdWx0OiB3aGl0ZSAqL1xuICAgIEBJbnB1dCgpIHNldCBjb2xvcihjb2xvcjogVEhSRUUuQ29sb3JSZXByZXNlbnRhdGlvbikge1xuICAgICAgICB0aGlzLnNldCh7IGNvbG9yIH0pO1xuICAgIH1cbiAgICAvKiogQnVmZmVyIHJlc29sdXRpb24sIGRlZmF1bHQ6IDIwNDggKi9cbiAgICBASW5wdXQoKSBzZXQgcmVzb2x1dGlvbihyZXNvbHV0aW9uOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyByZXNvbHV0aW9uIH0pO1xuICAgIH1cbiAgICAvKiogQ2FtZXJhIHBvc2l0aW9uLCBpdCB3aWxsIHBvaW50IHRvd2FyZHMgdGhlIGNvbnRlbnRzIGJvdW5kcyBjZW50ZXIsIGRlZmF1bHQ6IFs1LCA1LCA1XSAqL1xuICAgIEBJbnB1dCgpIHNldCBsaWdodFNvdXJjZShsaWdodFNvdXJjZTogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIHwgRWxlbWVudFJlZjxUSFJFRS5PYmplY3QzRD4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsaWdodFNvdXJjZSB9KTtcbiAgICB9XG5cbiAgICByZWFkb25seSBub3JtYWxUYXJnZXRGYm8gPSBpbmplY3ROZ3RzRkJPKCgpID0+XG4gICAgICAgIHRoaXMuc2VsZWN0KCdyZXNvbHV0aW9uJykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzb2x1dGlvbikgPT4gKHsgd2lkdGg6IHJlc29sdXRpb24sIGhlaWdodDogcmVzb2x1dGlvbiwgc2V0dGluZ3M6IE5PUk1BTFBST1BTIH0pKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHJlYWRvbmx5IG5vcm1hbFRhcmdldEJGYm8gPSBpbmplY3ROZ3RzRkJPKCgpID0+XG4gICAgICAgIHRoaXMuc2VsZWN0KCdyZXNvbHV0aW9uJykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzb2x1dGlvbikgPT4gKHsgd2lkdGg6IHJlc29sdXRpb24sIGhlaWdodDogcmVzb2x1dGlvbiwgc2V0dGluZ3M6IE5PUk1BTFBST1BTIH0pKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHJlYWRvbmx5IGNhdXN0aWNzVGFyZ2V0RmJvID0gaW5qZWN0Tmd0c0ZCTygoKSA9PlxuICAgICAgICB0aGlzLnNlbGVjdCgncmVzb2x1dGlvbicpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc29sdXRpb24pID0+ICh7IHdpZHRoOiByZXNvbHV0aW9uLCBoZWlnaHQ6IHJlc29sdXRpb24sIHNldHRpbmdzOiBDQVVTVElDUFJPUFMgfSkpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgY2F1c3RpY3NUYXJnZXRCRmJvID0gaW5qZWN0Tmd0c0ZCTygoKSA9PlxuICAgICAgICB0aGlzLnNlbGVjdCgncmVzb2x1dGlvbicpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc29sdXRpb24pID0+ICh7IHdpZHRoOiByZXNvbHV0aW9uLCBoZWlnaHQ6IHJlc29sdXRpb24sIHNldHRpbmdzOiBDQVVTVElDUFJPUFMgfSkpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldCh7XG4gICAgICAgICAgICBmcmFtZXM6IDEsXG4gICAgICAgICAgICBpb3I6IDEuMSxcbiAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgY2F1c3RpY3NPbmx5OiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tzaWRlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tzaWRlSU9SOiAxLjEsXG4gICAgICAgICAgICB3b3JsZFJhZGl1czogMC4zMTI1LFxuICAgICAgICAgICAgaW50ZW5zaXR5OiAwLjA1LFxuICAgICAgICAgICAgcmVzb2x1dGlvbjogMjAyNCxcbiAgICAgICAgICAgIGxpZ2h0U291cmNlOiBbNSwgNSwgNV0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCk7XG4gICAgICAgIHRoaXMuc2V0QmVmb3JlUmVuZGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVXb3JsZE1hdHJpeCgpIHtcbiAgICAgICAgdGhpcy5ob2xkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5zY2VuZVJlZi5jaGlsZHJlbiQoKSwgdGhpcy5jYXVzdGljc1JlZi4kLCB0aGlzLmNhdXN0aWNzUmVmLmNoaWxkcmVuJCgpLCB0aGlzLnNlbGVjdCgpXSksXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2F1c3RpY3NSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdXN0aWNzUmVmLm5hdGl2ZUVsZW1lbnQudXBkYXRlV29ybGRNYXRyaXgoZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEJlZm9yZVJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgY2F1c3RpY3NNYXRlcmlhbCA9IG5ldyBDYXVzdGljc01hdGVyaWFsKCkgYXMgQ2F1c3RpY3NNYXRlcmlhbFR5cGU7XG4gICAgICAgIGNvbnN0IGNhdXN0aWNzUXVhZCA9IG5ldyBGdWxsU2NyZWVuUXVhZChjYXVzdGljc01hdGVyaWFsKTtcblxuICAgICAgICBjb25zdCBub3JtYWxNYXRlcmlhbCA9IGNyZWF0ZU5vcm1hbE1hdGVyaWFsKCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbE1hdGVyaWFsQiA9IGNyZWF0ZU5vcm1hbE1hdGVyaWFsKFRIUkVFLkJhY2tTaWRlKTtcblxuICAgICAgICB0aGlzLmVmZmVjdChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuc2NlbmVSZWYuJCxcbiAgICAgICAgICAgICAgICB0aGlzLnNjZW5lUmVmLmNoaWxkcmVuJCgpLFxuICAgICAgICAgICAgICAgIHRoaXMuY2F1c3RpY3NSZWYuJCxcbiAgICAgICAgICAgICAgICB0aGlzLmNhbWVyYVJlZi4kLFxuICAgICAgICAgICAgICAgIHRoaXMubm9ybWFsVGFyZ2V0RmJvLiQsXG4gICAgICAgICAgICAgICAgdGhpcy5ub3JtYWxUYXJnZXRCRmJvLiQsXG4gICAgICAgICAgICAgICAgdGhpcy5jYXVzdGljc1RhcmdldEZiby4kLFxuICAgICAgICAgICAgICAgIHRoaXMuY2F1c3RpY3NUYXJnZXRCRmJvLiQsXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuZVJlZi4kLFxuICAgICAgICAgICAgICAgIHRoaXMucGxhbmVSZWYuY2hpbGRyZW4kKCdib3RoJyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgc2NlbmUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgY2F1c3RpY3MsXG4gICAgICAgICAgICAgICAgY2FtZXJhLFxuICAgICAgICAgICAgICAgIG5vcm1hbFRhcmdldCxcbiAgICAgICAgICAgICAgICBub3JtYWxUYXJnZXRCLFxuICAgICAgICAgICAgICAgIGNhdXN0aWNzVGFyZ2V0LFxuICAgICAgICAgICAgICAgIGNhdXN0aWNzVGFyZ2V0QixcbiAgICAgICAgICAgICAgICBwbGFuZSxcbiAgICAgICAgICAgIF0pID0+IHtcbiAgICAgICAgICAgICAgICBjYXVzdGljcy51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbHBGID0gbmV3IFRIUkVFLkZydXN0dW0oKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbHBNID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbHBQID0gbmV3IFRIUkVFLlBsYW5lKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlnaHREaXIgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWdodERpckludiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IG5ldyBUSFJFRS5Cb3gzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzUG9zID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXQoJ2ludGVybmFsJykuc3Vic2NyaWJlKCh7IGdsIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x1dGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZFJhZGl1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3NpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3NpZGVJT1IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzT25seSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gPSB0aGlzLmdldCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCsrIDwgZnJhbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlnaHRTb3VyY2UpKSBsaWdodERpci5mcm9tQXJyYXkobGlnaHRTb3VyY2UpLm5vcm1hbGl6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHREaXIuY29weShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzLndvcmxkVG9Mb2NhbChsaWdodFNvdXJjZS5uYXRpdmVFbGVtZW50LmdldFdvcmxkUG9zaXRpb24odikpLm5vcm1hbGl6ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWdodERpckludi5jb3B5KGxpZ2h0RGlyKS5tdWx0aXBseVNjYWxhcigtMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYm91bmRzVmVydGljZXM6IFRIUkVFLlZlY3RvcjNbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lLnBhcmVudD8ubWF0cml4V29ybGQuaWRlbnRpdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHMuc2V0RnJvbU9iamVjdChzY2VuZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWluLngsIGJvdW5kcy5taW4ueSwgYm91bmRzLm1pbi56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWluLngsIGJvdW5kcy5taW4ueSwgYm91bmRzLm1heC56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWluLngsIGJvdW5kcy5tYXgueSwgYm91bmRzLm1pbi56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWluLngsIGJvdW5kcy5tYXgueSwgYm91bmRzLm1heC56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWF4LngsIGJvdW5kcy5taW4ueSwgYm91bmRzLm1pbi56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWF4LngsIGJvdW5kcy5taW4ueSwgYm91bmRzLm1heC56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWF4LngsIGJvdW5kcy5tYXgueSwgYm91bmRzLm1pbi56KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhib3VuZHMubWF4LngsIGJvdW5kcy5tYXgueSwgYm91bmRzLm1heC56KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JsZFZlcnRzID0gYm91bmRzVmVydGljZXMubWFwKCh2KSA9PiB2LmNsb25lKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLmdldENlbnRlcihmb2N1c1Bvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzVmVydGljZXMgPSBib3VuZHNWZXJ0aWNlcy5tYXAoKHYpID0+IHYuY2xvbmUoKS5zdWIoZm9jdXNQb3MpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWdodFBsYW5lID0gbHBQLnNldChsaWdodERpckludiwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvamVjdGVkVmVydHMgPSBib3VuZHNWZXJ0aWNlcy5tYXAoKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0UGxhbmUucHJvamVjdFBvaW50KHYsIG5ldyBUSFJFRS5WZWN0b3IzKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRyYWxWZXJ0ID0gcHJvamVjdGVkVmVydHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gYS5hZGQoYiksIHYuc2V0KDAsIDAsIDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGl2aWRlU2NhbGFyKHByb2plY3RlZFZlcnRzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFkaXVzID0gcHJvamVjdGVkVmVydHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodikgPT4gdi5kaXN0YW5jZVRvKGNlbnRyYWxWZXJ0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpckxlbmd0aCA9IGJvdW5kc1ZlcnRpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHgpID0+IHguZG90KGxpZ2h0RGlyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hhZG93c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5wb3NpdGlvbi5jb3B5KGxpZ2h0RGlyLmNsb25lKCkubXVsdGlwbHlTY2FsYXIoZGlyTGVuZ3RoKS5hZGQoZm9jdXNQb3MpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubG9va0F0KHNjZW5lLmxvY2FsVG9Xb3JsZChmb2N1c1Bvcy5jbG9uZSgpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlyTWF0cml4ID0gbHBNLmxvb2tBdChjYW1lcmEucG9zaXRpb24sIGZvY3VzUG9zLCB2LnNldCgwLCAxLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLmxlZnQgPSAtcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5yaWdodCA9IHJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEudG9wID0gcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5ib3R0b20gPSAtcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHlPZmZzZXQgPSB2LnNldCgwLCByYWRpdXMsIDApLmFwcGx5TWF0cml4NChkaXJNYXRyaXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHlUaW1lID0gKGNhbWVyYS5wb3NpdGlvbi55ICsgeU9mZnNldC55KSAvIGxpZ2h0RGlyLnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLm5lYXIgPSAwLjE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLmZhciA9IHlUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgZmluZCBzaXplIG9mIGdyb3VuZCBwbGFuZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VuZFByb2plY3RlZENvb3JkcyA9IHdvcmxkVmVydHMubWFwKCh2KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LmFkZChsaWdodERpci5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKC12LnkgLyBsaWdodERpci55KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlclBvcyA9IGdyb3VuZFByb2plY3RlZENvb3Jkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBhLmFkZChiKSwgdi5zZXQoMCwgMCwgMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kaXZpZGVTY2FsYXIoZ3JvdW5kUHJvamVjdGVkQ29vcmRzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4U2l6ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91bmRQcm9qZWN0ZWRDb29yZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHYpID0+IE1hdGguaHlwb3Qodi54IC0gY2VudGVyUG9zLngsIHYueiAtIGNlbnRlclBvcy56KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWF4KGEsIGIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZS5zY2FsZS5zZXRTY2FsYXIobWF4U2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmUucG9zaXRpb24uY29weShjZW50ZXJQb3MpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGRlYnVnKSBoZWxwZXIuY3VycmVudD8udXBkYXRlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmplY3QgdW5pZm9ybXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxNYXRlcmlhbEIudmlld01hdHJpeC52YWx1ZSA9IG5vcm1hbE1hdGVyaWFsLnZpZXdNYXRyaXgudmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlyTGlnaHROZWFyUGxhbmUgPSBscEYuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwTS5tdWx0aXBseU1hdHJpY2VzKGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4LCBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkucGxhbmVzWzRdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5jYW1lcmFNYXRyaXhXb3JsZCA9IGNhbWVyYS5tYXRyaXhXb3JsZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmNhbWVyYVByb2plY3Rpb25NYXRyaXhJbnYgPSBjYW1lcmEucHJvamVjdGlvbk1hdHJpeEludmVyc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5saWdodERpciA9IGxpZ2h0RGlySW52O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5saWdodFBsYW5lTm9ybWFsID0gZGlyTGlnaHROZWFyUGxhbmUubm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubGlnaHRQbGFuZUNvbnN0YW50ID0gZGlyTGlnaHROZWFyUGxhbmUuY29uc3RhbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLm5lYXIgPSBjYW1lcmEubmVhcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmZhciA9IGNhbWVyYS5mYXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5yZXNvbHV0aW9uID0gcmVzb2x1dGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLnNpemUgPSByYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5pbnRlbnNpdHkgPSBpbnRlbnNpdHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC53b3JsZFJhZGl1cyA9IHdvcmxkUmFkaXVzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dpdGNoIHRoZSBzY2VuZSBvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lLnZpc2libGUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGZyb250IGZhY2Ugbm9ybWFsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChub3JtYWxUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUub3ZlcnJpZGVNYXRlcmlhbCA9IG5vcm1hbE1hdGVyaWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciBiYWNrIGZhY2Ugbm9ybWFscywgaWYgZW5hYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChub3JtYWxUYXJnZXRCKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWNrc2lkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2VuZS5vdmVycmlkZU1hdGVyaWFsID0gbm9ybWFsTWF0ZXJpYWxCO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5yZW5kZXIoc2NlbmUsIGNhbWVyYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBvdmVycmlkZSBtYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGZyb250IGZhY2UgY2F1c3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmlvciA9IGlvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhbmUubWF0ZXJpYWwgYXMgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWxUeXBlKS5saWdodFByb2pNYXRyaXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEucHJvamVjdGlvbk1hdHJpeDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxhbmUubWF0ZXJpYWwgYXMgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWxUeXBlKS5saWdodFZpZXdNYXRyaXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubm9ybWFsVGV4dHVyZSA9IG5vcm1hbFRhcmdldC50ZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuZGVwdGhUZXh0dXJlID0gbm9ybWFsVGFyZ2V0LmRlcHRoVGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQoY2F1c3RpY3NUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NRdWFkLnJlbmRlcihnbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgYmFjayBmYWNlIGNhdXN0aWNzLCBpZiBlbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5pb3IgPSBiYWNrc2lkZUlPUjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLm5vcm1hbFRleHR1cmUgPSBub3JtYWxUYXJnZXRCLnRleHR1cmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5kZXB0aFRleHR1cmUgPSBub3JtYWxUYXJnZXRCLmRlcHRoVGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQoY2F1c3RpY3NUYXJnZXRCKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWNrc2lkZSkgY2F1c3RpY3NRdWFkLnJlbmRlcihnbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCByZW5kZXIgdGFyZ2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KG51bGwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dpdGNoIHRoZSBzY2VuZSBvZmYgaWYgY2F1c3RpY3MgaXMgYWxsIHRoYXQncyB3YW50ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2F1c3RpY3NPbmx5KSBzY2VuZS52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvY2F1c3RpY3MvY2F1c3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNqRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUU5QyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsMEJBQTBCLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0FBRWpILE1BQU0sV0FBVyxHQUFHO0lBQ2hCLEtBQUssRUFBRSxJQUFJO0lBQ1gsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZ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QUFJLENBQUMsQ0FBQzt3QkFFekIsd0RBQXdEO3dCQUN4RCxJQUFJLFlBQVk7NEJBQUUsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7cUJBQzNDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7O3lHQTdUUSxZQUFZOzZGQUFaLFlBQVksZ1lBN0JYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJULDREQUNTLElBQUksNkZBQUUsU0FBUzsyRkFHaEIsWUFBWTtrQkFoQ3hCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F5QlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztvQkFDMUIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQVdZLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSU8sUUFBUTtzQkFBcEIsS0FBSztnQkFJTyxHQUFHO3NCQUFmLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdE5ndFJlZiwgTmd0UnhTdG9yZSwgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNFZGdlcyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9hYnN0cmFjdGlvbnMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c0ZCTyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IENhdXN0aWNzTWF0ZXJpYWwsIENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBHcm91cCwgTGluZUJhc2ljTWF0ZXJpYWwsIE1lc2gsIE9ydGhvZ3JhcGhpY0NhbWVyYSwgUGxhbmVHZW9tZXRyeSwgU2NlbmUgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBGdWxsU2NyZWVuUXVhZCB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4dGVuZCh7IEdyb3VwLCBTY2VuZSwgTWVzaCwgUGxhbmVHZW9tZXRyeSwgT3J0aG9ncmFwaGljQ2FtZXJhLCBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbCwgTGluZUJhc2ljTWF0ZXJpYWwgfSk7XG5cbmNvbnN0IE5PUk1BTFBST1BTID0ge1xuICAgIGRlcHRoOiB0cnVlLFxuICAgIG1pbkZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgIG1hZ0ZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgIGVuY29kaW5nOiBUSFJFRS5MaW5lYXJFbmNvZGluZyxcbiAgICB0eXBlOiBUSFJFRS5VbnNpZ25lZEJ5dGVUeXBlLFxufTtcblxuY29uc3QgQ0FVU1RJQ1BST1BTID0ge1xuICAgIG1pbkZpbHRlcjogVEhSRUUuTGluZWFyTWlwbWFwTGluZWFyRmlsdGVyLFxuICAgIG1hZ0ZpbHRlcjogVEhSRUUuTGluZWFyRmlsdGVyLFxuICAgIGVuY29kaW5nOiBUSFJFRS5MaW5lYXJFbmNvZGluZyxcbiAgICBmb3JtYXQ6IFRIUkVFLlJHQkFGb3JtYXQsXG4gICAgdHlwZTogVEhSRUUuRmxvYXRUeXBlLFxuICAgIGdlbmVyYXRlTWlwbWFwczogdHJ1ZSxcbn07XG5cbnR5cGUgQ2F1c3RpY3NNYXRlcmlhbFR5cGUgPSBUSFJFRS5TaGFkZXJNYXRlcmlhbCAmIHtcbiAgICBjYW1lcmFNYXRyaXhXb3JsZD86IFRIUkVFLk1hdHJpeDQ7XG4gICAgY2FtZXJhUHJvamVjdGlvbk1hdHJpeEludj86IFRIUkVFLk1hdHJpeDQ7XG4gICAgbGlnaHRQbGFuZU5vcm1hbD86IFRIUkVFLlZlY3RvcjM7XG4gICAgbGlnaHRQbGFuZUNvbnN0YW50PzogbnVtYmVyO1xuICAgIG5vcm1hbFRleHR1cmU/OiBUSFJFRS5UZXh0dXJlIHwgbnVsbDtcbiAgICBkZXB0aFRleHR1cmU/OiBUSFJFRS5UZXh0dXJlIHwgbnVsbDtcbiAgICBsaWdodERpcj86IFRIUkVFLlZlY3RvcjM7XG4gICAgbmVhcj86IG51bWJlcjtcbiAgICBmYXI/OiBudW1iZXI7XG4gICAgbW9kZWxNYXRyaXg/OiBUSFJFRS5NYXRyaXg0O1xuICAgIHdvcmxkUmFkaXVzPzogbnVtYmVyO1xuICAgIGlvcj86IG51bWJlcjtcbiAgICBib3VuY2VzPzogbnVtYmVyO1xuICAgIHJlc29sdXRpb24/OiBudW1iZXI7XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICBpbnRlbnNpdHk/OiBudW1iZXI7XG59O1xuXG50eXBlIENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsVHlwZSA9IFRIUkVFLk1lc2hOb3JtYWxNYXRlcmlhbCAmIHtcbiAgICB2aWV3TWF0cml4OiB7IHZhbHVlPzogVEhSRUUuTWF0cml4NCB9O1xuICAgIGNvbG9yPzogVEhSRUUuQ29sb3I7XG4gICAgY2F1c3RpY3NUZXh0dXJlPzogVEhSRUUuVGV4dHVyZTtcbiAgICBjYXVzdGljc1RleHR1cmVCPzogVEhSRUUuVGV4dHVyZTtcbiAgICBsaWdodFByb2pNYXRyaXg/OiBUSFJFRS5NYXRyaXg0O1xuICAgIGxpZ2h0Vmlld01hdHJpeD86IFRIUkVFLk1hdHJpeDQ7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVOb3JtYWxNYXRlcmlhbChzaWRlOiBUSFJFRS5TaWRlID0gVEhSRUUuRnJvbnRTaWRlKSB7XG4gICAgY29uc3Qgdmlld01hdHJpeCA9IHsgdmFsdWU6IG5ldyBUSFJFRS5NYXRyaXg0KCkgfTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgVEhSRUUuTWVzaE5vcm1hbE1hdGVyaWFsKHsgc2lkZSB9KSwge1xuICAgICAgICB2aWV3TWF0cml4LFxuICAgICAgICBvbkJlZm9yZUNvbXBpbGU6IChzaGFkZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgc2hhZGVyLnVuaWZvcm1zLnZpZXdNYXRyaXggPSB2aWV3TWF0cml4O1xuICAgICAgICAgICAgc2hhZGVyLmZyYWdtZW50U2hhZGVyID1cbiAgICAgICAgICAgICAgICBgdmVjMyBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG4gICAgICAgICAgIHJldHVybiBub3JtYWxpemUoICggdmVjNCggZGlyLCAwLjAgKSAqIG1hdHJpeCApLnh5eiApO1xuICAgICAgICAgfVxcbmAgK1xuICAgICAgICAgICAgICAgIHNoYWRlci5mcmFnbWVudFNoYWRlci5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPicsXG4gICAgICAgICAgICAgICAgICAgIGAjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG4gICAgICAgICAgIG5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xcbmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtY2F1c3RpY3MnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG5ndC1ncm91cCBbcmVmXT1cImNhdXN0aWNzUmVmXCIgbmd0Q29tcG91bmQ+XG4gICAgICAgICAgICA8bmd0LXNjZW5lIFtyZWZdPVwic2NlbmVSZWZcIj5cbiAgICAgICAgICAgICAgICA8bmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmEgW3JlZl09XCJjYW1lcmFSZWZcIiBbdXBdPVwiWzAsIDEsIDBdXCIgLz5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgPC9uZ3Qtc2NlbmU+XG4gICAgICAgICAgICA8bmd0LW1lc2ggW3JlbmRlck9yZGVyXT1cIjJcIiBbcmVmXT1cInBsYW5lUmVmXCIgW3JvdGF0aW9uXT1cIlstTWF0aC5QSSAvIDIsIDAsIDBdXCI+XG4gICAgICAgICAgICAgICAgPG5ndC1wbGFuZS1nZW9tZXRyeSAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhdXN0aWNzVGFyZ2V0RmJvLm5hdGl2ZUVsZW1lbnQgJiYgY2F1c3RpY3NUYXJnZXRCRmJvLm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXQoJ2NvbG9yJylcIlxuICAgICAgICAgICAgICAgICAgICBbY2F1c3RpY3NUZXh0dXJlXT1cImNhdXN0aWNzVGFyZ2V0RmJvLm5hdGl2ZUVsZW1lbnQudGV4dHVyZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjYXVzdGljc1RleHR1cmVCXT1cImNhdXN0aWNzVGFyZ2V0QkZiby5uYXRpdmVFbGVtZW50LnRleHR1cmVcIlxuICAgICAgICAgICAgICAgICAgICBbYmxlbmRpbmddPVwiQ3VzdG9tQmxlbmRpbmdcIlxuICAgICAgICAgICAgICAgICAgICBbYmxlbmRTcmNdPVwiT25lRmFjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2JsZW5kRHN0XT1cIlNyY0FscGhhRmFjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlcHRoV3JpdGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8bmd0cy1lZGdlcyAqbmdJZj1cImdldCgnZGVidWcnKVwiIFt3aXRoQ2hpbGRyZW5dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmd0LWxpbmUtYmFzaWMtbWF0ZXJpYWwgY29sb3I9XCIjZmZmZjAwXCIgW3RvbmVNYXBwZWRdPVwiZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmd0cy1lZGdlcz5cbiAgICAgICAgICAgIDwvbmd0LW1lc2g+XG4gICAgICAgIDwvbmd0LWdyb3VwPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWYsIE5ndHNFZGdlc10sXG4gICAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ2F1c3RpY3MgZXh0ZW5kcyBOZ3RSeFN0b3JlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICByZWFkb25seSBDdXN0b21CbGVuZGluZyA9IFRIUkVFLkN1c3RvbUJsZW5kaW5nO1xuICAgIHJlYWRvbmx5IE9uZUZhY3RvciA9IFRIUkVFLk9uZUZhY3RvcjtcbiAgICByZWFkb25seSBTcmNBbHBoYUZhY3RvciA9IFRIUkVFLlNyY0FscGhhRmFjdG9yO1xuICAgIHJlYWRvbmx5IE1hdGggPSBNYXRoO1xuXG4gICAgcmVhZG9ubHkgcGxhbmVSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuTWVzaD4oKTtcbiAgICByZWFkb25seSBzY2VuZVJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5TY2VuZT4oKTtcbiAgICByZWFkb25seSBjYW1lcmFSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhPigpO1xuXG4gICAgQElucHV0KCkgY2F1c3RpY3NSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuR3JvdXA+KCk7XG5cbiAgICAvKiogSG93IG1hbnkgZnJhbWVzIGl0IHdpbGwgcmVuZGVyLCBzZXQgaXQgdG8gSW5maW5pdHkgZm9yIHJ1bnRpbWUsIGRlZmF1bHQ6IDEgKi9cbiAgICBASW5wdXQoKSBzZXQgZnJhbWVzKGZyYW1lczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJhbWVzIH0pO1xuICAgIH1cbiAgICAvKiogRW5hYmxlcyB2aXN1YWwgY3VlcyB0byBoZWxwIHlvdSBzdGFnZSB5b3VyIHNjZW5lLCBkZWZhdWx0OiBmYWxzZSAqL1xuICAgIEBJbnB1dCgpIHNldCBkZWJ1ZyhkZWJ1ZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGRlYnVnIH0pO1xuICAgIH1cbiAgICAvKiogV2lsbCBkaXNwbGF5IGNhdXN0aWNzIG9ubHkgYW5kIHNraXAgdGhlIG1vZGVscywgZGVmYXVsdDogZmFsc2UgKi9cbiAgICBASW5wdXQoKSBzZXQgY2F1c3RpY3NPbmx5KGNhdXN0aWNzT25seTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGNhdXN0aWNzT25seSB9KTtcbiAgICB9XG4gICAgLyoqIFdpbGwgaW5jbHVkZSBiYWNrIGZhY2VzIGFuZCBlbmFibGUgdGhlIGJhY2tzaWRlSU9SIHByb3AsIGRlZmF1bHQ6IGZhbHNlICovXG4gICAgQElucHV0KCkgc2V0IGJhY2tzaWRlKGJhY2tzaWRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmFja3NpZGUgfSk7XG4gICAgfVxuICAgIC8qKiBUaGUgSU9SIHJlZnJhY3Rpb24gaW5kZXgsIGRlZmF1bHQ6IDEuMSAqL1xuICAgIEBJbnB1dCgpIHNldCBpb3IoaW9yOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBpb3IgfSk7XG4gICAgfVxuICAgIC8qKiBUaGUgSU9SIHJlZnJhY3Rpb24gaW5kZXggZm9yIGJhY2sgZmFjZXMgKG9ubHkgYXZhaWxhYmxlIHdoZW4gYmFja3NpZGUgaXMgZW5hYmxlZCksIGRlZmF1bHQ6IDEuMSAqL1xuICAgIEBJbnB1dCgpIHNldCBiYWNrc2lkZUlPUihiYWNrc2lkZUlPUjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmFja3NpZGVJT1IgfSk7XG4gICAgfVxuICAgIC8qKiBUaGUgdGV4ZWwgc2l6ZSwgZGVmYXVsdDogMC4zMTI1ICovXG4gICAgQElucHV0KCkgc2V0IHdvcmxkUmFkaXVzKHdvcmxkUmFkaXVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyB3b3JsZFJhZGl1cyB9KTtcbiAgICB9XG4gICAgLyoqIEludGVuc2l0eSBvZiB0aGUgcHJqZWN0ZWQgY2F1c3RpY3MsIGRlZmF1bHQ6IDAuMDUgKi9cbiAgICBASW5wdXQoKSBzZXQgaW50ZW5zaXR5KGludGVuc2l0eTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW50ZW5zaXR5IH0pO1xuICAgIH1cbiAgICAvKiogQ2F1c3RpY3MgY29sb3IsIGRlZmF1bHQ6IHdoaXRlICovXG4gICAgQElucHV0KCkgc2V0IGNvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29sb3IgfSk7XG4gICAgfVxuICAgIC8qKiBCdWZmZXIgcmVzb2x1dGlvbiwgZGVmYXVsdDogMjA0OCAqL1xuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuICAgIC8qKiBDYW1lcmEgcG9zaXRpb24sIGl0IHdpbGwgcG9pbnQgdG93YXJkcyB0aGUgY29udGVudHMgYm91bmRzIGNlbnRlciwgZGVmYXVsdDogWzUsIDUsIDVdICovXG4gICAgQElucHV0KCkgc2V0IGxpZ2h0U291cmNlKGxpZ2h0U291cmNlOiBbeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcl0gfCBFbGVtZW50UmVmPFRIUkVFLk9iamVjdDNEPikge1xuICAgICAgICB0aGlzLnNldCh7IGxpZ2h0U291cmNlIH0pO1xuICAgIH1cblxuICAgIHJlYWRvbmx5IG5vcm1hbFRhcmdldEZibyA9IGluamVjdE5ndHNGQk8oKCkgPT5cbiAgICAgICAgdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNvbHV0aW9uKSA9PiAoeyB3aWR0aDogcmVzb2x1dGlvbiwgaGVpZ2h0OiByZXNvbHV0aW9uLCBzZXR0aW5nczogTk9STUFMUFJPUFMgfSkpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgbm9ybWFsVGFyZ2V0QkZibyA9IGluamVjdE5ndHNGQk8oKCkgPT5cbiAgICAgICAgdGhpcy5zZWxlY3QoJ3Jlc29sdXRpb24nKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNvbHV0aW9uKSA9PiAoeyB3aWR0aDogcmVzb2x1dGlvbiwgaGVpZ2h0OiByZXNvbHV0aW9uLCBzZXR0aW5nczogTk9STUFMUFJPUFMgfSkpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcmVhZG9ubHkgY2F1c3RpY3NUYXJnZXRGYm8gPSBpbmplY3ROZ3RzRkJPKCgpID0+XG4gICAgICAgIHRoaXMuc2VsZWN0KCdyZXNvbHV0aW9uJykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzb2x1dGlvbikgPT4gKHsgd2lkdGg6IHJlc29sdXRpb24sIGhlaWdodDogcmVzb2x1dGlvbiwgc2V0dGluZ3M6IENBVVNUSUNQUk9QUyB9KSlcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICByZWFkb25seSBjYXVzdGljc1RhcmdldEJGYm8gPSBpbmplY3ROZ3RzRkJPKCgpID0+XG4gICAgICAgIHRoaXMuc2VsZWN0KCdyZXNvbHV0aW9uJykucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzb2x1dGlvbikgPT4gKHsgd2lkdGg6IHJlc29sdXRpb24sIGhlaWdodDogcmVzb2x1dGlvbiwgc2V0dGluZ3M6IENBVVNUSUNQUk9QUyB9KSlcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgICAgIGZyYW1lczogMSxcbiAgICAgICAgICAgIGlvcjogMS4xLFxuICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICBjYXVzdGljc09ubHk6IGZhbHNlLFxuICAgICAgICAgICAgYmFja3NpZGU6IGZhbHNlLFxuICAgICAgICAgICAgYmFja3NpZGVJT1I6IDEuMSxcbiAgICAgICAgICAgIHdvcmxkUmFkaXVzOiAwLjMxMjUsXG4gICAgICAgICAgICBpbnRlbnNpdHk6IDAuMDUsXG4gICAgICAgICAgICByZXNvbHV0aW9uOiAyMDI0LFxuICAgICAgICAgICAgbGlnaHRTb3VyY2U6IFs1LCA1LCA1XSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoKTtcbiAgICAgICAgdGhpcy5zZXRCZWZvcmVSZW5kZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVdvcmxkTWF0cml4KCkge1xuICAgICAgICB0aGlzLmhvbGQoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnNjZW5lUmVmLmNoaWxkcmVuJCgpLCB0aGlzLmNhdXN0aWNzUmVmLiQsIHRoaXMuY2F1c3RpY3NSZWYuY2hpbGRyZW4kKCksIHRoaXMuc2VsZWN0KCldKSxcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXVzdGljc1JlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2F1c3RpY3NSZWYubmF0aXZlRWxlbWVudC51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QmVmb3JlUmVuZGVyKCkge1xuICAgICAgICBjb25zdCBjYXVzdGljc01hdGVyaWFsID0gbmV3IENhdXN0aWNzTWF0ZXJpYWwoKSBhcyBDYXVzdGljc01hdGVyaWFsVHlwZTtcbiAgICAgICAgY29uc3QgY2F1c3RpY3NRdWFkID0gbmV3IEZ1bGxTY3JlZW5RdWFkKGNhdXN0aWNzTWF0ZXJpYWwpO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbE1hdGVyaWFsID0gY3JlYXRlTm9ybWFsTWF0ZXJpYWwoKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsTWF0ZXJpYWxCID0gY3JlYXRlTm9ybWFsTWF0ZXJpYWwoVEhSRUUuQmFja1NpZGUpO1xuXG4gICAgICAgIHRoaXMuZWZmZWN0KFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5zY2VuZVJlZi4kLFxuICAgICAgICAgICAgICAgIHRoaXMuc2NlbmVSZWYuY2hpbGRyZW4kKCksXG4gICAgICAgICAgICAgICAgdGhpcy5jYXVzdGljc1JlZi4kLFxuICAgICAgICAgICAgICAgIHRoaXMuY2FtZXJhUmVmLiQsXG4gICAgICAgICAgICAgICAgdGhpcy5ub3JtYWxUYXJnZXRGYm8uJCxcbiAgICAgICAgICAgICAgICB0aGlzLm5vcm1hbFRhcmdldEJGYm8uJCxcbiAgICAgICAgICAgICAgICB0aGlzLmNhdXN0aWNzVGFyZ2V0RmJvLiQsXG4gICAgICAgICAgICAgICAgdGhpcy5jYXVzdGljc1RhcmdldEJGYm8uJCxcbiAgICAgICAgICAgICAgICB0aGlzLnBsYW5lUmVmLiQsXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuZVJlZi5jaGlsZHJlbiQoJ2JvdGgnKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICBzY2VuZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgICAgICBjYXVzdGljcyxcbiAgICAgICAgICAgICAgICBjYW1lcmEsXG4gICAgICAgICAgICAgICAgbm9ybWFsVGFyZ2V0LFxuICAgICAgICAgICAgICAgIG5vcm1hbFRhcmdldEIsXG4gICAgICAgICAgICAgICAgY2F1c3RpY3NUYXJnZXQsXG4gICAgICAgICAgICAgICAgY2F1c3RpY3NUYXJnZXRCLFxuICAgICAgICAgICAgICAgIHBsYW5lLFxuICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNhdXN0aWNzLnVwZGF0ZVdvcmxkTWF0cml4KGZhbHNlLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBscEYgPSBuZXcgVEhSRUUuRnJ1c3R1bSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBscE0gPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBscFAgPSBuZXcgVEhSRUUuUGxhbmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWdodERpciA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpZ2h0RGlySW52ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm91bmRzID0gbmV3IFRIUkVFLkJveDMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9jdXNQb3MgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmdldCgnaW50ZXJuYWwnKS5zdWJzY3JpYmUoKHsgZ2wgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWdodFNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkUmFkaXVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVuc2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrc2lkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrc2lkZUlPUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NPbmx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZXMgPT09IEluZmluaXR5IHx8IGNvdW50KysgPCBmcmFtZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaWdodFNvdXJjZSkpIGxpZ2h0RGlyLmZyb21BcnJheShsaWdodFNvdXJjZSkubm9ybWFsaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWdodERpci5jb3B5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3Mud29ybGRUb0xvY2FsKGxpZ2h0U291cmNlLm5hdGl2ZUVsZW1lbnQuZ2V0V29ybGRQb3NpdGlvbih2KSkubm9ybWFsaXplKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0RGlySW52LmNvcHkobGlnaHREaXIpLm11bHRpcGx5U2NhbGFyKC0xKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBib3VuZHNWZXJ0aWNlczogVEhSRUUuVmVjdG9yM1tdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUucGFyZW50Py5tYXRyaXhXb3JsZC5pZGVudGl0eSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kcy5zZXRGcm9tT2JqZWN0KHNjZW5lLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5taW4ueCwgYm91bmRzLm1pbi55LCBib3VuZHMubWluLnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5taW4ueCwgYm91bmRzLm1pbi55LCBib3VuZHMubWF4LnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5taW4ueCwgYm91bmRzLm1heC55LCBib3VuZHMubWluLnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5taW4ueCwgYm91bmRzLm1heC55LCBib3VuZHMubWF4LnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5tYXgueCwgYm91bmRzLm1pbi55LCBib3VuZHMubWluLnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5tYXgueCwgYm91bmRzLm1pbi55LCBib3VuZHMubWF4LnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5tYXgueCwgYm91bmRzLm1heC55LCBib3VuZHMubWluLnopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKGJvdW5kcy5tYXgueCwgYm91bmRzLm1heC55LCBib3VuZHMubWF4LnopKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmxkVmVydHMgPSBib3VuZHNWZXJ0aWNlcy5tYXAoKHYpID0+IHYuY2xvbmUoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHMuZ2V0Q2VudGVyKGZvY3VzUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHNWZXJ0aWNlcyA9IGJvdW5kc1ZlcnRpY2VzLm1hcCgodikgPT4gdi5jbG9uZSgpLnN1Yihmb2N1c1BvcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpZ2h0UGxhbmUgPSBscFAuc2V0KGxpZ2h0RGlySW52LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9qZWN0ZWRWZXJ0cyA9IGJvdW5kc1ZlcnRpY2VzLm1hcCgodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRQbGFuZS5wcm9qZWN0UG9pbnQodiwgbmV3IFRIUkVFLlZlY3RvcjMoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudHJhbFZlcnQgPSBwcm9qZWN0ZWRWZXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBhLmFkZChiKSwgdi5zZXQoMCwgMCwgMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kaXZpZGVTY2FsYXIocHJvamVjdGVkVmVydHMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByYWRpdXMgPSBwcm9qZWN0ZWRWZXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2KSA9PiB2LmRpc3RhbmNlVG8oY2VudHJhbFZlcnQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlyTGVuZ3RoID0gYm91bmRzVmVydGljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5kb3QobGlnaHREaXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaGFkb3dzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnBvc2l0aW9uLmNvcHkobGlnaHREaXIuY2xvbmUoKS5tdWx0aXBseVNjYWxhcihkaXJMZW5ndGgpLmFkZChmb2N1c1BvcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5sb29rQXQoc2NlbmUubG9jYWxUb1dvcmxkKGZvY3VzUG9zLmNsb25lKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJNYXRyaXggPSBscE0ubG9va0F0KGNhbWVyYS5wb3NpdGlvbiwgZm9jdXNQb3MsIHYuc2V0KDAsIDEsIDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubGVmdCA9IC1yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnJpZ2h0ID0gcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS50b3AgPSByYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLmJvdHRvbSA9IC1yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeU9mZnNldCA9IHYuc2V0KDAsIHJhZGl1cywgMCkuYXBwbHlNYXRyaXg0KGRpck1hdHJpeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeVRpbWUgPSAoY2FtZXJhLnBvc2l0aW9uLnkgKyB5T2Zmc2V0LnkpIC8gbGlnaHREaXIueTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEubmVhciA9IDAuMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEuZmFyID0geVRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyBmaW5kIHNpemUgb2YgZ3JvdW5kIHBsYW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdW5kUHJvamVjdGVkQ29vcmRzID0gd29ybGRWZXJ0cy5tYXAoKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYuYWRkKGxpZ2h0RGlyLmNsb25lKCkubXVsdGlwbHlTY2FsYXIoLXYueSAvIGxpZ2h0RGlyLnkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudGVyUG9zID0gZ3JvdW5kUHJvamVjdGVkQ29vcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEuYWRkKGIpLCB2LnNldCgwLCAwLCAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpdmlkZVNjYWxhcihncm91bmRQcm9qZWN0ZWRDb29yZHMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhTaXplID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VuZFByb2plY3RlZENvb3Jkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodikgPT4gTWF0aC5oeXBvdCh2LnggLSBjZW50ZXJQb3MueCwgdi56IC0gY2VudGVyUG9zLnopKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lLnNjYWxlLnNldFNjYWxhcihtYXhTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZS5wb3NpdGlvbi5jb3B5KGNlbnRlclBvcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZGVidWcpIGhlbHBlci5jdXJyZW50Py51cGRhdGUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluamVjdCB1bmlmb3Jtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbE1hdGVyaWFsQi52aWV3TWF0cml4LnZhbHVlID0gbm9ybWFsTWF0ZXJpYWwudmlld01hdHJpeC52YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXJMaWdodE5lYXJQbGFuZSA9IGxwRi5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBNLm11bHRpcGx5TWF0cmljZXMoY2FtZXJhLnByb2plY3Rpb25NYXRyaXgsIGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5wbGFuZXNbNF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmNhbWVyYU1hdHJpeFdvcmxkID0gY2FtZXJhLm1hdHJpeFdvcmxkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuY2FtZXJhUHJvamVjdGlvbk1hdHJpeEludiA9IGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmxpZ2h0RGlyID0gbGlnaHREaXJJbnY7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmxpZ2h0UGxhbmVOb3JtYWwgPSBkaXJMaWdodE5lYXJQbGFuZS5ub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5saWdodFBsYW5lQ29uc3RhbnQgPSBkaXJMaWdodE5lYXJQbGFuZS5jb25zdGFudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubmVhciA9IGNhbWVyYS5uZWFyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuZmFyID0gY2FtZXJhLmZhcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLnJlc29sdXRpb24gPSByZXNvbHV0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuc2l6ZSA9IHJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmludGVuc2l0eSA9IGludGVuc2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLndvcmxkUmFkaXVzID0gd29ybGRSYWRpdXM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggdGhlIHNjZW5lIG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUudmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgZnJvbnQgZmFjZSBub3JtYWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KG5vcm1hbFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2VuZS5vdmVycmlkZU1hdGVyaWFsID0gbm9ybWFsTWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIGJhY2sgZmFjZSBub3JtYWxzLCBpZiBlbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuc2V0UmVuZGVyVGFyZ2V0KG5vcm1hbFRhcmdldEIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tzaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBub3JtYWxNYXRlcmlhbEI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIG92ZXJyaWRlIG1hdGVyaWFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NlbmUub3ZlcnJpZGVNYXRlcmlhbCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgZnJvbnQgZmFjZSBjYXVzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwuaW9yID0gaW9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFuZS5tYXRlcmlhbCBhcyBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbFR5cGUpLmxpZ2h0UHJvak1hdHJpeCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGFuZS5tYXRlcmlhbCBhcyBDYXVzdGljc1Byb2plY3Rpb25NYXRlcmlhbFR5cGUpLmxpZ2h0Vmlld01hdHJpeCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5ub3JtYWxUZXh0dXJlID0gbm9ybWFsVGFyZ2V0LnRleHR1cmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F1c3RpY3NNYXRlcmlhbC5kZXB0aFRleHR1cmUgPSBub3JtYWxUYXJnZXQuZGVwdGhUZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChjYXVzdGljc1RhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc1F1YWQucmVuZGVyKGdsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciBiYWNrIGZhY2UgY2F1c3RpY3MsIGlmIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmlvciA9IGJhY2tzaWRlSU9SO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXN0aWNzTWF0ZXJpYWwubm9ybWFsVGV4dHVyZSA9IG5vcm1hbFRhcmdldEIudGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzdGljc01hdGVyaWFsLmRlcHRoVGV4dHVyZSA9IG5vcm1hbFRhcmdldEIuZGVwdGhUZXh0dXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChjYXVzdGljc1RhcmdldEIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tzaWRlKSBjYXVzdGljc1F1YWQucmVuZGVyKGdsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHJlbmRlciB0YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2ggdGhlIHNjZW5lIG9mZiBpZiBjYXVzdGljcyBpcyBhbGwgdGhhdCdzIHdhbnRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYXVzdGljc09ubHkpIHNjZW5lLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -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.2.0", ngImport: i0, type: NgtsCenter, deps: null, target: i0.ɵɵFactoryTarget.Component });
90
- NgtsCenter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", 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.2.5", ngImport: i0, type: NgtsCenter, deps: null, target: i0.ɵɵFactoryTarget.Component });
90
+ NgtsCenter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsCenter, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsCloud, deps: null, target: i0.ɵɵFactoryTarget.Component });
74
- NgtsCloud.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", 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.2.5", ngImport: i0, type: NgtsCloud, deps: null, target: i0.ɵɵFactoryTarget.Component });
74
+ NgtsCloud.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsCloud, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
- NgtsContactShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", 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.2.5", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
+ NgtsContactShadows.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsContactShadows, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsEnvironmentCube, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32
- NgtsEnvironmentCube.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", usesInheritance: true, ngImport: i0 });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
31
+ NgtsEnvironmentCube.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentCube, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32
+ NgtsEnvironmentCube.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", usesInheritance: true, ngImport: i0 });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsEnvironmentGround, deps: null, target: i0.ɵɵFactoryTarget.Component });
25
- NgtsEnvironmentGround.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsEnvironmentGround, isStandalone: true, selector: "ngts-environment-ground", usesInheritance: true, ngImport: i0, template: `
24
+ NgtsEnvironmentGround.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentGround, deps: null, target: i0.ɵɵFactoryTarget.Component });
25
+ NgtsEnvironmentGround.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
42
42
  type: Component,
43
43
  args: [{
44
44
  selector: 'ngts-environment-ground',
@@ -1,6 +1,6 @@
1
1
  import { Directive, inject, Input } from '@angular/core';
2
2
  import { NgtRxStore, NgtStore } from 'angular-three';
3
- import { Texture, TextureEncoding } from 'three';
3
+ import { Texture } from 'three';
4
4
  import * as i0 from "@angular/core";
5
5
  export class NgtsEnvironmentInputs extends NgtRxStore {
6
6
  constructor() {
@@ -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.2.0", ngImport: i0, type: NgtsEnvironmentInputs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
54
- NgtsEnvironmentInputs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", 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.2.0", ngImport: i0, type: NgtsEnvironmentInputs, decorators: [{
53
+ NgtsEnvironmentInputs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentInputs, deps: null, target: i0.ɵɵFactoryTarget.Directive });
54
+ NgtsEnvironmentInputs.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.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.2.5", ngImport: i0, type: NgtsEnvironmentInputs, decorators: [{
56
56
  type: Directive
57
57
  }], propDecorators: { frames: [{
58
58
  type: Input
@@ -83,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
83
83
  }], encoding: [{
84
84
  type: Input
85
85
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL2Vudmlyb25tZW50L2Vudmlyb25tZW50LWlucHV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFpQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sT0FBTyxDQUFDOztBQUloRSxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLFVBQVU7SUFEOUQ7O1FBRXVCLFVBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FpRS9DO0lBL0RHLElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsVUFBVSxDQUFDLFVBQWtCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxVQUE0QjtRQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxHQUFHLENBQUMsR0FBWTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWtDO1FBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFnQztRQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxVQUFVLENBQUMsVUFBb0M7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQWEsTUFBTSxDQUNmLE1BTU87UUFFUCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsUUFBeUI7UUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7a0hBakVpQixxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTOzhCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxHQUFHO3NCQUFmLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQVlPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBMb2FkZXIsIFNjZW5lLCBUZXh0dXJlLCBUZXh0dXJlRW5jb2RpbmcgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB9IGZyb20gJy4vYXNzZXRzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0c0Vudmlyb25tZW50SW5wdXRzIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG5lYXIobmVhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbmVhciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmFyKGZhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJhY2tncm91bmQoYmFja2dyb3VuZDogYm9vbGVhbiB8ICdvbmx5Jykge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tncm91bmQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJsdXIoYmx1cjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmx1ciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWFwKG1hcDogVGV4dHVyZSkge1xuICAgICAgICB0aGlzLnNldCh7IG1hcCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmlsZXMoZmlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmlsZXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcGF0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcHJlc2V0KHByZXNldDogTmd0c0Vudmlyb25tZW50UHJlc2V0c1R5cGUpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwcmVzZXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNjZW5lKHNjZW5lOiBTY2VuZSB8IEVsZW1lbnRSZWY8U2NlbmU+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NlbmUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGV4dGVuc2lvbnMoZXh0ZW5zaW9uczogKGxvYWRlcjogTG9hZGVyKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXh0ZW5zaW9ucyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZ3JvdW5kKFxuICAgICAgICBncm91bmQ6XG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgcmFkaXVzPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgc2NhbGU/OiBudW1iZXI7XG4gICAgICAgICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgdGhpcy5zZXQoeyBncm91bmQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVuY29kaW5nKGVuY29kaW5nOiBUZXh0dXJlRW5jb2RpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBlbmNvZGluZyB9KTtcbiAgICB9XG59XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL2Vudmlyb25tZW50L2Vudmlyb25tZW50LWlucHV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFpQixPQUFPLEVBQW1CLE1BQU0sT0FBTyxDQUFDOztBQUloRSxNQUFNLE9BQWdCLHFCQUFzQixTQUFRLFVBQVU7SUFEOUQ7O1FBRXVCLFVBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FpRS9DO0lBL0RHLElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsVUFBVSxDQUFDLFVBQWtCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxVQUE0QjtRQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBYSxHQUFHLENBQUMsR0FBWTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBd0I7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWtDO1FBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFnQztRQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxVQUFVLENBQUMsVUFBb0M7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQWEsTUFBTSxDQUNmLE1BTU87UUFFUCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsUUFBeUI7UUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7a0hBakVpQixxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTOzhCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxHQUFHO3NCQUFmLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sSUFBSTtzQkFBaEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQVlPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBMb2FkZXIsIFNjZW5lLCBUZXh0dXJlLCBUZXh0dXJlRW5jb2RpbmcgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB9IGZyb20gJy4vYXNzZXRzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0c0Vudmlyb25tZW50SW5wdXRzIGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG5lYXIobmVhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbmVhciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmFyKGZhcjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCByZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJlc29sdXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJhY2tncm91bmQoYmFja2dyb3VuZDogYm9vbGVhbiB8ICdvbmx5Jykge1xuICAgICAgICB0aGlzLnNldCh7IGJhY2tncm91bmQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGJsdXIoYmx1cjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYmx1ciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbWFwKG1hcDogVGV4dHVyZSkge1xuICAgICAgICB0aGlzLnNldCh7IG1hcCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZmlsZXMoZmlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZmlsZXMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcGF0aCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcHJlc2V0KHByZXNldDogTmd0c0Vudmlyb25tZW50UHJlc2V0c1R5cGUpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwcmVzZXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNjZW5lKHNjZW5lOiBTY2VuZSB8IEVsZW1lbnRSZWY8U2NlbmU+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NlbmUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGV4dGVuc2lvbnMoZXh0ZW5zaW9uczogKGxvYWRlcjogTG9hZGVyKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXh0ZW5zaW9ucyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZ3JvdW5kKFxuICAgICAgICBncm91bmQ6XG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgcmFkaXVzPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgc2NhbGU/OiBudW1iZXI7XG4gICAgICAgICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgdGhpcy5zZXQoeyBncm91bmQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGVuY29kaW5nKGVuY29kaW5nOiBUZXh0dXJlRW5jb2RpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBlbmNvZGluZyB9KTtcbiAgICB9XG59XG4iXX0=
@@ -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.2.0", ngImport: i0, type: NgtsEnvironmentMap, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30
- NgtsEnvironmentMap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", usesInheritance: true, ngImport: i0 });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
29
+ NgtsEnvironmentMap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentMap, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30
+ NgtsEnvironmentMap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", usesInheritance: true, ngImport: i0 });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsEnvironmentPortal, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- NgtsEnvironmentPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsEnvironmentPortal, isStandalone: true, selector: "ngts-environment-portal", usesInheritance: true, ngImport: i0, template: `
60
+ NgtsEnvironmentPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentPortal, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ NgtsEnvironmentPortal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.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.2.0", ngImport: i0, type: NgtsEnvironmentPortal, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentPortal, decorators: [{
82
82
  type: Component,
83
83
  args: [{
84
84
  selector: 'ngts-environment-portal',
@@ -8,16 +8,16 @@ import { NgtsEnvironmentPortal } from './environment-portal';
8
8
  import * as i0 from "@angular/core";
9
9
  export class NgtsEnvironmentContent {
10
10
  }
11
- NgtsEnvironmentContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsEnvironmentContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
- NgtsEnvironmentContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsEnvironmentContent, isStandalone: true, selector: "ng-template[ngtsEnvironmentContent]", ngImport: i0 });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsEnvironmentContent, decorators: [{
11
+ NgtsEnvironmentContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ NgtsEnvironmentContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsEnvironmentContent, isStandalone: true, selector: "ng-template[ngtsEnvironmentContent]", ngImport: i0 });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironmentContent, decorators: [{
14
14
  type: Directive,
15
15
  args: [{ selector: 'ng-template[ngtsEnvironmentContent]', standalone: true }]
16
16
  }] });
17
17
  export class NgtsEnvironment extends NgtsEnvironmentInputs {
18
18
  }
19
- NgtsEnvironment.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsEnvironment, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
- NgtsEnvironment.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsEnvironment, isStandalone: true, selector: "ngts-environment", queries: [{ propertyName: "content", first: true, predicate: NgtsEnvironmentContent, descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: `
19
+ NgtsEnvironment.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironment, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
+ NgtsEnvironment.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsEnvironment, isStandalone: true, selector: "ngts-environment", queries: [{ propertyName: "content", first: true, predicate: NgtsEnvironmentContent, descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: `
21
21
  <ngts-environment-ground
22
22
  *ngIf="get('ground'); else noGround"
23
23
  [ground]="get('ground')"
@@ -79,7 +79,7 @@ NgtsEnvironment.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
79
79
  </ng-template>
80
80
  </ng-template>
81
81
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map" }, { kind: "component", type: NgtsEnvironmentGround, selector: "ngts-environment-ground" }, { kind: "directive", type: NgtsEnvironmentCube, selector: "ngts-environment-cube" }, { kind: "component", type: NgtsEnvironmentPortal, selector: "ngts-environment-portal" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsEnvironment, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsEnvironment, decorators: [{
83
83
  type: Component,
84
84
  args: [{
85
85
  selector: 'ngts-environment',
@@ -40,15 +40,15 @@ export class NgtsFloat extends NgtRxStore {
40
40
  this.floatRef.nativeElement.position.y = yPosition * floatIntensity;
41
41
  }
42
42
  }
43
- NgtsFloat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- NgtsFloat.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { floatRef: "floatRef", speed: "speed", rotationIntensity: "rotationIntensity", floatIntensity: "floatIntensity", floatingRange: "floatingRange" }, usesInheritance: true, ngImport: i0, template: `
43
+ NgtsFloat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsFloat, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
+ NgtsFloat.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsFloat, isStandalone: true, selector: "ngts-float", inputs: { floatRef: "floatRef", speed: "speed", rotationIntensity: "rotationIntensity", floatIntensity: "floatIntensity", floatingRange: "floatingRange" }, usesInheritance: true, ngImport: i0, template: `
45
45
  <ngt-group ngtCompound>
46
46
  <ngt-group [ref]="floatRef">
47
47
  <ng-content />
48
48
  </ngt-group>
49
49
  </ngt-group>
50
50
  `, isInline: true });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsFloat, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsFloat, decorators: [{
52
52
  type: Component,
53
53
  args: [{
54
54
  selector: 'ngts-float',
@@ -59,8 +59,8 @@ export class NgtsSky extends NgtRxStore {
59
59
  this.connect('scale', this.select(['distance'], ({ distance }) => new Vector3().setScalar(distance)));
60
60
  }
61
61
  }
62
- NgtsSky.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSky, deps: null, target: i0.ɵɵFactoryTarget.Component });
63
- NgtsSky.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { skyRef: "skyRef", distance: "distance", sunPosition: "sunPosition", inclination: "inclination", azimuth: "azimuth", mieCoefficient: "mieCoefficient", mieDirectionalG: "mieDirectionalG", rayleigh: "rayleigh", turbidity: "turbidity" }, usesInheritance: true, ngImport: i0, template: `
62
+ NgtsSky.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSky, deps: null, target: i0.ɵɵFactoryTarget.Component });
63
+ NgtsSky.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSky, isStandalone: true, selector: "ngts-sky", inputs: { skyRef: "skyRef", distance: "distance", sunPosition: "sunPosition", inclination: "inclination", azimuth: "azimuth", mieCoefficient: "mieCoefficient", mieDirectionalG: "mieDirectionalG", rayleigh: "rayleigh", turbidity: "turbidity" }, usesInheritance: true, ngImport: i0, template: `
64
64
  <ngt-primitive ngtCompound *args="[sky]" [ref]="skyRef" [scale]="get('scale')">
65
65
  <ngt-value [rawValue]="get('mieCoefficient')" attach="material.uniforms.mieCoefficient.value" />
66
66
  <ngt-value [rawValue]="get('mieDirectionalG')" attach="material.uniforms.mieDirectionalG.value" />
@@ -69,7 +69,7 @@ NgtsSky.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2
69
69
  <ngt-value [rawValue]="get('turbidity')" attach="material.uniforms.turbidity.value" />
70
70
  </ngt-primitive>
71
71
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSky, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSky, decorators: [{
73
73
  type: Component,
74
74
  args: [{
75
75
  selector: 'ngts-sky',
@@ -154,8 +154,8 @@ export class NgtsSparkles extends NgtRxStore {
154
154
  return this.select(key).pipe(startWith(this.get(key) || undefined), withLatestFrom(this.select('count')), map(([value, count]) => usePropAsIsOrAsAttribute(options.countValue(value, count), options.keyValue(value, count), options?.setDefault)));
155
155
  }
156
156
  }
157
- NgtsSparkles.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSparkles, deps: [], target: i0.ɵɵFactoryTarget.Component });
158
- NgtsSparkles.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSparkles, isStandalone: true, selector: "ngts-sparkles", inputs: { pointsRef: "pointsRef", count: "count", speed: "speed", opacity: "opacity", color: "color", size: "size", scale: "scale", noise: "noise" }, usesInheritance: true, ngImport: i0, template: `
157
+ NgtsSparkles.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSparkles, deps: [], target: i0.ɵɵFactoryTarget.Component });
158
+ NgtsSparkles.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSparkles, isStandalone: true, selector: "ngts-sparkles", inputs: { pointsRef: "pointsRef", count: "count", speed: "speed", opacity: "opacity", color: "color", size: "size", scale: "scale", noise: "noise" }, usesInheritance: true, ngImport: i0, template: `
159
159
  <ngt-points ngtCompount [ref]="pointsRef">
160
160
  <ngt-buffer-geometry>
161
161
  <ngt-buffer-attribute *args="[get('positions'), 3]" attach="attributes.position" />
@@ -168,7 +168,7 @@ NgtsSparkles.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
168
168
  <ngt-sparkles-material [ref]="materialRef" [transparent]="true" [depthWrite]="false" [pixelRatio]="dpr" />
169
169
  </ngt-points>
170
170
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSparkles, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSparkles, decorators: [{
172
172
  type: Component,
173
173
  args: [{
174
174
  selector: 'ngts-sparkles',
@@ -28,9 +28,9 @@ export class NgtsSpotLightShadowMeshInput extends NgtRxStore {
28
28
  this.set({ height });
29
29
  }
30
30
  }
31
- NgtsSpotLightShadowMeshInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadowMeshInput, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32
- NgtsSpotLightShadowMeshInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSpotLightShadowMeshInput, inputs: { distance: "distance", alphaTest: "alphaTest", scale: "scale", map: "map", shader: "shader", width: "width", height: "height" }, usesInheritance: true, ngImport: i0 });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadowMeshInput, decorators: [{
31
+ NgtsSpotLightShadowMeshInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadowMeshInput, deps: null, target: i0.ɵɵFactoryTarget.Directive });
32
+ NgtsSpotLightShadowMeshInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSpotLightShadowMeshInput, inputs: { distance: "distance", alphaTest: "alphaTest", scale: "scale", map: "map", shader: "shader", width: "width", height: "height" }, usesInheritance: true, ngImport: i0 });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadowMeshInput, decorators: [{
34
34
  type: Directive
35
35
  }], propDecorators: { distance: [{
36
36
  type: Input
@@ -33,9 +33,9 @@ export class NgtsSpotLightInput extends NgtRxStore {
33
33
  this.set({ debug });
34
34
  }
35
35
  }
36
- NgtsSpotLightInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightInput, deps: null, target: i0.ɵɵFactoryTarget.Directive });
37
- NgtsSpotLightInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSpotLightInput, inputs: { depthBuffer: "depthBuffer", angle: "angle", distance: "distance", attenuation: "attenuation", anglePower: "anglePower", radiusTop: "radiusTop", radiusBottom: "radiusBottom", opacity: "opacity", color: "color", debug: "debug" }, usesInheritance: true, ngImport: i0 });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightInput, decorators: [{
36
+ NgtsSpotLightInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightInput, deps: null, target: i0.ɵɵFactoryTarget.Directive });
37
+ NgtsSpotLightInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSpotLightInput, inputs: { depthBuffer: "depthBuffer", angle: "angle", distance: "distance", attenuation: "attenuation", anglePower: "anglePower", radiusTop: "radiusTop", radiusBottom: "radiusBottom", opacity: "opacity", color: "color", debug: "debug" }, usesInheritance: true, ngImport: i0 });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightInput, decorators: [{
39
39
  type: Directive
40
40
  }], propDecorators: { depthBuffer: [{
41
41
  type: Input
@@ -32,8 +32,8 @@ export class NgtsSpotLightShadowNoShader extends NgtsSpotLightShadowMeshInput {
32
32
  commonEffect(this);
33
33
  }
34
34
  }
35
- NgtsSpotLightShadowNoShader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadowNoShader, deps: null, target: i0.ɵɵFactoryTarget.Component });
36
- NgtsSpotLightShadowNoShader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: NgtsSpotLightShadowNoShader, isStandalone: true, selector: "ngts-spot-light-shadow-no-shader", usesInheritance: true, ngImport: i0, template: `
35
+ NgtsSpotLightShadowNoShader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadowNoShader, deps: null, target: i0.ɵɵFactoryTarget.Component });
36
+ NgtsSpotLightShadowNoShader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NgtsSpotLightShadowNoShader, isStandalone: true, selector: "ngts-spot-light-shadow-no-shader", usesInheritance: true, ngImport: i0, template: `
37
37
  <ngt-mesh [ref]="mesh" [scale]="get('scale')" [castShadow]="true">
38
38
  <ngt-plane-geometry />
39
39
  <ngt-mesh-basic-material
@@ -47,7 +47,7 @@ NgtsSpotLightShadowNoShader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.
47
47
  </ngt-mesh-basic-material>
48
48
  </ngt-mesh>
49
49
  `, isInline: true, dependencies: [{ kind: "pipe", type: NgtPush, name: "ngtPush" }] });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NgtsSpotLightShadowNoShader, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NgtsSpotLightShadowNoShader, decorators: [{
51
51
  type: Component,
52
52
  args: [{
53
53
  selector: 'ngts-spot-light-shadow-no-shader',