angular-three-soba 2.1.0 → 2.2.1

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 (151) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +139 -139
  2. package/abstractions/lib/edges.d.ts +164 -164
  3. package/abstractions/lib/grid.d.ts +39 -39
  4. package/abstractions/lib/line.d.ts +8 -7
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +3 -3
  7. package/abstractions/lib/text-3d.d.ts +46 -46
  8. package/abstractions/lib/text.d.ts +1 -2
  9. package/cameras/lib/cube-camera.d.ts +1 -1
  10. package/cameras/lib/orthographic-camera.d.ts +7 -8
  11. package/cameras/lib/perspective-camera.d.ts +2 -3
  12. package/controls/index.d.ts +9 -1
  13. package/controls/lib/camera-controls.d.ts +1 -1
  14. package/controls/lib/orbit-controls.d.ts +1 -1
  15. package/esm2022/abstractions/lib/billboard.mjs +3 -3
  16. package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
  17. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
  18. package/esm2022/abstractions/lib/edges.mjs +30 -34
  19. package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
  20. package/esm2022/abstractions/lib/grid.mjs +3 -3
  21. package/esm2022/abstractions/lib/helper.mjs +18 -20
  22. package/esm2022/abstractions/lib/line.mjs +25 -28
  23. package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
  24. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
  25. package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
  26. package/esm2022/abstractions/lib/text-3d.mjs +14 -17
  27. package/esm2022/abstractions/lib/text.mjs +11 -16
  28. package/esm2022/cameras/lib/camera-content.mjs +3 -3
  29. package/esm2022/cameras/lib/cube-camera.mjs +18 -27
  30. package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
  31. package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
  32. package/esm2022/controls/index.mjs +6 -2
  33. package/esm2022/controls/lib/camera-controls.mjs +3 -3
  34. package/esm2022/controls/lib/orbit-controls.mjs +3 -3
  35. package/esm2022/controls/lib/scroll-controls.mjs +124 -130
  36. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  37. package/esm2022/gizmos/index.mjs +6 -0
  38. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +187 -0
  39. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +304 -0
  40. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +332 -0
  41. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +265 -0
  42. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +264 -0
  43. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +337 -0
  44. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +266 -0
  45. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +232 -0
  46. package/esm2022/gizmos/lib/transform-controls.mjs +177 -0
  47. package/esm2022/loaders/lib/loader.mjs +3 -3
  48. package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
  49. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
  50. package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
  51. package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
  52. package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
  53. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
  54. package/esm2022/materials/lib/point-material.mjs +3 -3
  55. package/esm2022/misc/lib/bake-shadows.mjs +8 -10
  56. package/esm2022/misc/lib/computed-attribute.mjs +15 -19
  57. package/esm2022/misc/lib/decal.mjs +56 -53
  58. package/esm2022/misc/lib/fbo.mjs +10 -10
  59. package/esm2022/misc/lib/html/html-content.mjs +62 -67
  60. package/esm2022/misc/lib/html/html.mjs +3 -3
  61. package/esm2022/misc/lib/intersect.mjs +6 -9
  62. package/esm2022/misc/lib/sampler.mjs +48 -42
  63. package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
  64. package/esm2022/performances/lib/adaptive-events.mjs +12 -16
  65. package/esm2022/performances/lib/detailed.mjs +14 -18
  66. package/esm2022/performances/lib/instances/instances.mjs +16 -22
  67. package/esm2022/performances/lib/points/points.mjs +19 -25
  68. package/esm2022/performances/lib/segments/segments.mjs +11 -14
  69. package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
  70. package/esm2022/staging/index.mjs +3 -2
  71. package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
  72. package/esm2022/staging/lib/backdrop.mjs +19 -23
  73. package/esm2022/staging/lib/bb-anchor.mjs +3 -3
  74. package/esm2022/staging/lib/bounds.mjs +39 -43
  75. package/esm2022/staging/lib/camera-shake.mjs +14 -18
  76. package/esm2022/staging/lib/caustics.mjs +24 -28
  77. package/esm2022/staging/lib/center.mjs +28 -32
  78. package/esm2022/staging/lib/contact-shadows.mjs +3 -3
  79. package/esm2022/staging/lib/environment/environment.mjs +338 -0
  80. package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
  81. package/esm2022/staging/lib/float.mjs +3 -3
  82. package/esm2022/staging/lib/lightformer.mjs +18 -22
  83. package/esm2022/staging/lib/mask.mjs +8 -12
  84. package/esm2022/staging/lib/matcap-texture.mjs +9 -11
  85. package/esm2022/staging/lib/normal-texture.mjs +9 -11
  86. package/esm2022/staging/lib/randomized-lights.mjs +9 -13
  87. package/esm2022/staging/lib/render-texture.mjs +19 -20
  88. package/esm2022/staging/lib/sky.mjs +3 -3
  89. package/esm2022/staging/lib/spot-light.mjs +32 -40
  90. package/esm2022/staging/lib/stage.mjs +13 -17
  91. package/esm2022/stats/lib/stats.mjs +21 -27
  92. package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
  93. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-cameras.mjs +57 -64
  95. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-controls.mjs +141 -1470
  97. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  98. package/fesm2022/angular-three-soba-gizmos.mjs +2318 -0
  99. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  100. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  101. package/fesm2022/angular-three-soba-materials.mjs +52 -62
  102. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  103. package/fesm2022/angular-three-soba-misc.mjs +194 -195
  104. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  105. package/fesm2022/angular-three-soba-performances.mjs +90 -114
  106. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  107. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  108. package/fesm2022/angular-three-soba-staging.mjs +427 -430
  109. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  110. package/fesm2022/angular-three-soba-stats.mjs +20 -26
  111. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  112. package/gizmos/README.md +3 -0
  113. package/gizmos/index.d.ts +5 -0
  114. package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +45 -0
  115. package/gizmos/lib/gizmo-helper/gizmo-viewcube.d.ts +74 -0
  116. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +64 -0
  117. package/{controls → gizmos}/lib/pivot-controls/pivot-controls.d.ts +1 -1
  118. package/gizmos/lib/transform-controls.d.ts +50 -0
  119. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  120. package/misc/lib/computed-attribute.d.ts +2 -2
  121. package/misc/lib/decal.d.ts +4 -4
  122. package/misc/lib/html/html-content.d.ts +6 -6
  123. package/misc/lib/html/html.d.ts +1 -1
  124. package/misc/lib/sampler.d.ts +1 -3
  125. package/package.json +14 -8
  126. package/performances/lib/instances/instances.d.ts +3 -3
  127. package/shaders/lib/mesh-refraction-material.d.ts +2 -5
  128. package/staging/index.d.ts +2 -1
  129. package/staging/lib/camera-shake.d.ts +0 -1
  130. package/staging/lib/caustics.d.ts +1 -1
  131. package/staging/lib/center.d.ts +2 -2
  132. package/staging/lib/contact-shadows.d.ts +1 -1
  133. package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
  134. package/staging/lib/environment/inject-environment.d.ts +33 -0
  135. package/staging/lib/lightformer.d.ts +1 -1
  136. package/staging/lib/mask.d.ts +1 -1
  137. package/staging/lib/matcap-texture.d.ts +0 -1
  138. package/staging/lib/normal-texture.d.ts +0 -1
  139. package/staging/lib/render-texture.d.ts +1 -1
  140. package/staging/lib/sky.d.ts +1 -1
  141. package/staging/lib/stage.d.ts +3 -2
  142. package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +0 -263
  143. package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +0 -264
  144. package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +0 -340
  145. package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +0 -266
  146. package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +0 -232
  147. package/esm2022/staging/lib/environment.mjs +0 -481
  148. /package/{controls → gizmos}/lib/pivot-controls/axis-arrow.d.ts +0 -0
  149. /package/{controls → gizmos}/lib/pivot-controls/axis-rotator.d.ts +0 -0
  150. /package/{controls → gizmos}/lib/pivot-controls/plane-slider.d.ts +0 -0
  151. /package/{controls → gizmos}/lib/pivot-controls/scaling-sphere.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { DestroyRef, Directive, Injector, TemplateRef, ViewContainerRef, afterNextRender, computed, effect, inject, input, untracked, } from '@angular/core';
1
+ import { DestroyRef, Directive, TemplateRef, ViewContainerRef, afterNextRender, computed, effect, inject, input, untracked, } from '@angular/core';
2
2
  import { injectStore } from 'angular-three';
3
3
  import { assertInjector } from 'ngxtension/assert-injector';
4
4
  import { DepthTexture, FloatType, HalfFloatType, LinearFilter, WebGLRenderTarget, } from 'three';
@@ -58,12 +58,12 @@ export class NgtsFBO {
58
58
  this.template = inject(TemplateRef);
59
59
  this.viewContainerRef = inject(ViewContainerRef);
60
60
  let ref;
61
- const injector = inject(Injector);
61
+ const fboTarget = injectFBO(() => {
62
+ const { width, height, ...settings } = this.fbo();
63
+ return { width, height, settings };
64
+ });
62
65
  afterNextRender(() => {
63
- const fboTarget = injectFBO(() => {
64
- const { width, height, ...settings } = this.fbo();
65
- return { width, height, settings };
66
- }, { injector });
66
+ // TODO: double check if we need untracked
67
67
  untracked(() => {
68
68
  ref = this.viewContainerRef.createEmbeddedView(this.template, { $implicit: fboTarget });
69
69
  ref.detectChanges();
@@ -76,11 +76,11 @@ export class NgtsFBO {
76
76
  static ngTemplateContextGuard(_, ctx) {
77
77
  return true;
78
78
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsFBO, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
80
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtsFBO, isStandalone: true, selector: "ng-template[fbo]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsFBO, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
80
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsFBO, isStandalone: true, selector: "ng-template[fbo]", inputs: { fbo: { classPropertyName: "fbo", publicName: "fbo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
81
81
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsFBO, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsFBO, decorators: [{
83
83
  type: Directive,
84
84
  args: [{ selector: 'ng-template[fbo]', standalone: true }]
85
85
  }], ctorParameters: () => [] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9mYm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFVBQVUsRUFDVixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUVOLFlBQVksRUFDWixTQUFTLEVBQ1QsYUFBYSxFQUNiLFlBQVksRUFJWixpQkFBaUIsR0FFakIsTUFBTSxPQUFPLENBQUM7O0FBK0JmLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBMkIsRUFBRSxFQUFFLFFBQVEsS0FBOEIsRUFBRTtJQUNoRyxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUMvQyxNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDM0IsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUUsS0FBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4RixJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3JDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsTUFBTSxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ3BFLFNBQVMsQ0FBQyxRQUFRLENBQUM7Z0JBQ25CLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hCLFNBQVMsQ0FBQyxNQUFNLENBQUM7YUFDakIsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtnQkFDckQsU0FBUyxFQUFFLFlBQVk7Z0JBQ3ZCLFNBQVMsRUFBRSxZQUFZO2dCQUN2QixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsR0FBRyxjQUFjO2FBQ2pCLENBQUMsQ0FBQztZQUVILElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN6QixPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLE1BQU0sQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM5RixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqQyxJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFdkQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8sT0FBTztJQU1uQjtRQUxBLFFBQUcsR0FBRyxLQUFLLENBQUMsRUFBc0YsQ0FBQyxDQUFDO1FBRTVGLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0IscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFHbkQsSUFBSSxHQUFpRSxDQUFDO1FBQ3RFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsQyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FDMUIsR0FBRyxFQUFFO2dCQUNKLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUNwQyxDQUFDLEVBQ0QsRUFBRSxRQUFRLEVBQUUsQ0FDWixDQUFDO1lBRUYsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDeEYsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQVUsRUFBRSxHQUFZO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQzs4R0FoQ1csT0FBTztrR0FBUCxPQUFPOzsyRkFBUCxPQUFPO2tCQURuQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0SW5qZWN0b3IsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmLFxuXHRhZnRlck5leHRSZW5kZXIsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQge1xuXHRDb2xvclNwYWNlLFxuXHREZXB0aFRleHR1cmUsXG5cdEZsb2F0VHlwZSxcblx0SGFsZkZsb2F0VHlwZSxcblx0TGluZWFyRmlsdGVyLFxuXHRNYWduaWZpY2F0aW9uVGV4dHVyZUZpbHRlcixcblx0TWluaWZpY2F0aW9uVGV4dHVyZUZpbHRlcixcblx0VGV4dHVyZURhdGFUeXBlLFxuXHRXZWJHTFJlbmRlclRhcmdldCxcblx0V3JhcHBpbmcsXG59IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFRleHR1cmVFbmNvZGluZyB9IGZyb20gJy4vZGVwcmVjYXRlZCc7XG5cbmludGVyZmFjZSBGQk9TZXR0aW5ncyB7XG5cdC8qKiBEZWZpbmVzIHRoZSBjb3VudCBvZiBNU0FBIHNhbXBsZXMuIENhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTCAyLiBEZWZhdWx0OiAwICovXG5cdHNhbXBsZXM/OiBudW1iZXI7XG5cdC8qKiBJZiBzZXQsIHRoZSBzY2VuZSBkZXB0aCB3aWxsIGJlIHJlbmRlcmVkIGludG8gYnVmZmVyLmRlcHRoVGV4dHVyZS4gRGVmYXVsdDogZmFsc2UgKi9cblx0ZGVwdGg/OiBib29sZWFuO1xuXG5cdC8vIFdlYkdMUmVuZGVyVGFyZ2V0T3B0aW9ucyA9PiBSZW5kZXJUYXJnZXRPcHRpb25zXG5cdHdyYXBTPzogV3JhcHBpbmcgfCB1bmRlZmluZWQ7XG5cdHdyYXBUPzogV3JhcHBpbmcgfCB1bmRlZmluZWQ7XG5cdG1hZ0ZpbHRlcj86IE1hZ25pZmljYXRpb25UZXh0dXJlRmlsdGVyIHwgdW5kZWZpbmVkO1xuXHRtaW5GaWx0ZXI/OiBNaW5pZmljYXRpb25UZXh0dXJlRmlsdGVyIHwgdW5kZWZpbmVkO1xuXHRmb3JtYXQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7IC8vIFJHQkFGb3JtYXQ7XG5cdHR5cGU/OiBUZXh0dXJlRGF0YVR5cGUgfCB1bmRlZmluZWQ7IC8vIFVuc2lnbmVkQnl0ZVR5cGU7XG5cdGFuaXNvdHJvcHk/OiBudW1iZXIgfCB1bmRlZmluZWQ7IC8vIDE7XG5cdGRlcHRoQnVmZmVyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsgLy8gdHJ1ZTtcblx0c3RlbmNpbEJ1ZmZlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7IC8vIGZhbHNlO1xuXHRnZW5lcmF0ZU1pcG1hcHM/OiBib29sZWFuIHwgdW5kZWZpbmVkOyAvLyB0cnVlO1xuXHRkZXB0aFRleHR1cmU/OiBEZXB0aFRleHR1cmUgfCB1bmRlZmluZWQ7XG5cdGVuY29kaW5nPzogVGV4dHVyZUVuY29kaW5nIHwgdW5kZWZpbmVkO1xuXHRjb2xvclNwYWNlPzogQ29sb3JTcGFjZSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzRkJPUGFyYW1zIHtcblx0d2lkdGg/OiBudW1iZXIgfCBGQk9TZXR0aW5ncztcblx0aGVpZ2h0PzogbnVtYmVyO1xuXHRzZXR0aW5ncz86IEZCT1NldHRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RkJPKHBhcmFtczogKCkgPT4gTmd0c0ZCT1BhcmFtcywgeyBpbmplY3RvciB9OiB7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9KSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RGQk8sIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IHNpemUgPSBzdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0XHRjb25zdCB2aWV3cG9ydCA9IHN0b3JlLnNlbGVjdCgndmlld3BvcnQnKTtcblxuXHRcdGNvbnN0IHdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyB3aWR0aCB9ID0gcGFyYW1zKCk7XG5cdFx0XHRyZXR1cm4gdHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyA/IHdpZHRoIDogc2l6ZSgpLndpZHRoICogdmlld3BvcnQoKS5kcHI7XG5cdFx0fSk7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyBoZWlnaHQgfSA9IHBhcmFtcygpO1xuXHRcdFx0cmV0dXJuIHR5cGVvZiBoZWlnaHQgPT09ICdudW1iZXInID8gaGVpZ2h0IDogc2l6ZSgpLmhlaWdodCAqIHZpZXdwb3J0KCkuZHByO1xuXHRcdH0pO1xuXHRcdGNvbnN0IHNldHRpbmdzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyB3aWR0aCwgc2V0dGluZ3MgfSA9IHBhcmFtcygpO1xuXHRcdFx0Y29uc3QgX3NldHRpbmdzID0gKHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgPyBzZXR0aW5ncyA6ICh3aWR0aCBhcyBGQk9TZXR0aW5ncykpIHx8IHt9O1xuXHRcdFx0aWYgKF9zZXR0aW5ncy5zYW1wbGVzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0X3NldHRpbmdzLnNhbXBsZXMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIF9zZXR0aW5ncztcblx0XHR9KTtcblxuXHRcdGNvbnN0IHRhcmdldCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IHNhbXBsZXMgPSAwLCBkZXB0aCwgLi4udGFyZ2V0U2V0dGluZ3MgfSwgX3dpZHRoLCBfaGVpZ2h0XSA9IFtcblx0XHRcdFx0dW50cmFja2VkKHNldHRpbmdzKSxcblx0XHRcdFx0dW50cmFja2VkKHdpZHRoKSxcblx0XHRcdFx0dW50cmFja2VkKGhlaWdodCksXG5cdFx0XHRdO1xuXHRcdFx0Y29uc3QgdGFyZ2V0ID0gbmV3IFdlYkdMUmVuZGVyVGFyZ2V0KF93aWR0aCwgX2hlaWdodCwge1xuXHRcdFx0XHRtaW5GaWx0ZXI6IExpbmVhckZpbHRlcixcblx0XHRcdFx0bWFnRmlsdGVyOiBMaW5lYXJGaWx0ZXIsXG5cdFx0XHRcdHR5cGU6IEhhbGZGbG9hdFR5cGUsXG5cdFx0XHRcdC4uLnRhcmdldFNldHRpbmdzLFxuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChkZXB0aCkge1xuXHRcdFx0XHR0YXJnZXQuZGVwdGhUZXh0dXJlID0gbmV3IERlcHRoVGV4dHVyZShfd2lkdGgsIF9oZWlnaHQsIEZsb2F0VHlwZSk7XG5cdFx0XHR9XG5cblx0XHRcdHRhcmdldC5zYW1wbGVzID0gc2FtcGxlcztcblx0XHRcdHJldHVybiB0YXJnZXQ7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgc2FtcGxlcyA9IDAgfSwgX3dpZHRoLCBfaGVpZ2h0LCBfdGFyZ2V0XSA9IFtzZXR0aW5ncygpLCB3aWR0aCgpLCBoZWlnaHQoKSwgdGFyZ2V0KCldO1xuXHRcdFx0X3RhcmdldC5zZXRTaXplKF93aWR0aCwgX2hlaWdodCk7XG5cdFx0XHRpZiAoc2FtcGxlcykgX3RhcmdldC5zYW1wbGVzID0gc2FtcGxlcztcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gdGFyZ2V0KCkuZGlzcG9zZSgpKTtcblxuXHRcdHJldHVybiB0YXJnZXQ7XG5cdH0pO1xufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtmYm9dJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNGQk8ge1xuXHRmYm8gPSBpbnB1dCh7fSBhcyB7IHdpZHRoOiBOZ3RzRkJPUGFyYW1zWyd3aWR0aCddOyBoZWlnaHQ6IE5ndHNGQk9QYXJhbXNbJ2hlaWdodCddIH0gJiBGQk9TZXR0aW5ncyk7XG5cblx0cHJpdmF0ZSB0ZW1wbGF0ZSA9IGluamVjdChUZW1wbGF0ZVJlZik7XG5cdHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRsZXQgcmVmOiBFbWJlZGRlZFZpZXdSZWY8eyAkaW1wbGljaXQ6IFJldHVyblR5cGU8dHlwZW9mIGluamVjdEZCTz4gfT47XG5cdFx0Y29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IGZib1RhcmdldCA9IGluamVjdEZCTyhcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgLi4uc2V0dGluZ3MgfSA9IHRoaXMuZmJvKCk7XG5cdFx0XHRcdFx0cmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgc2V0dGluZ3MgfTtcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBpbmplY3RvciB9LFxuXHRcdFx0KTtcblxuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0cmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7ICRpbXBsaWNpdDogZmJvVGFyZ2V0IH0pO1xuXHRcdFx0XHRyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHJlZj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoXzogTmd0c0ZCTywgY3R4OiB1bmtub3duKTogY3R4IGlzIHsgJGltcGxpY2l0OiBSZXR1cm5UeXBlPHR5cGVvZiBpbmplY3RGQk8+IH0ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9mYm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFVBQVUsRUFDVixTQUFTLEVBR1QsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBRU4sWUFBWSxFQUNaLFNBQVMsRUFDVCxhQUFhLEVBQ2IsWUFBWSxFQUlaLGlCQUFpQixHQUVqQixNQUFNLE9BQU8sQ0FBQzs7QUErQmYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUEyQixFQUFFLEVBQUUsUUFBUSxLQUE4QixFQUFFO0lBQ2hHLE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQy9DLE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUMzQixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQzFFLENB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RTtZQUNoQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsMENBQTBDO1lBQzFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hGLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFVLEVBQUUsR0FBWTtRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7OEdBN0JXLE9BQU87a0dBQVAsT0FBTzs7MkZBQVAsT0FBTztrQkFEbkIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGVzdHJveVJlZixcblx0RGlyZWN0aXZlLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG5cdEluamVjdG9yLFxuXHRUZW1wbGF0ZVJlZixcblx0Vmlld0NvbnRhaW5lclJlZixcblx0YWZ0ZXJOZXh0UmVuZGVyLFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0IHtcblx0Q29sb3JTcGFjZSxcblx0RGVwdGhUZXh0dXJlLFxuXHRGbG9hdFR5cGUsXG5cdEhhbGZGbG9hdFR5cGUsXG5cdExpbmVhckZpbHRlcixcblx0TWFnbmlmaWNhdGlvblRleHR1cmVGaWx0ZXIsXG5cdE1pbmlmaWNhdGlvblRleHR1cmVGaWx0ZXIsXG5cdFRleHR1cmVEYXRhVHlwZSxcblx0V2ViR0xSZW5kZXJUYXJnZXQsXG5cdFdyYXBwaW5nLFxufSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBUZXh0dXJlRW5jb2RpbmcgfSBmcm9tICcuL2RlcHJlY2F0ZWQnO1xuXG5pbnRlcmZhY2UgRkJPU2V0dGluZ3Mge1xuXHQvKiogRGVmaW5lcyB0aGUgY291bnQgb2YgTVNBQSBzYW1wbGVzLiBDYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wgMi4gRGVmYXVsdDogMCAqL1xuXHRzYW1wbGVzPzogbnVtYmVyO1xuXHQvKiogSWYgc2V0LCB0aGUgc2NlbmUgZGVwdGggd2lsbCBiZSByZW5kZXJlZCBpbnRvIGJ1ZmZlci5kZXB0aFRleHR1cmUuIERlZmF1bHQ6IGZhbHNlICovXG5cdGRlcHRoPzogYm9vbGVhbjtcblxuXHQvLyBXZWJHTFJlbmRlclRhcmdldE9wdGlvbnMgPT4gUmVuZGVyVGFyZ2V0T3B0aW9uc1xuXHR3cmFwUz86IFdyYXBwaW5nIHwgdW5kZWZpbmVkO1xuXHR3cmFwVD86IFdyYXBwaW5nIHwgdW5kZWZpbmVkO1xuXHRtYWdGaWx0ZXI/OiBNYWduaWZpY2F0aW9uVGV4dHVyZUZpbHRlciB8IHVuZGVmaW5lZDtcblx0bWluRmlsdGVyPzogTWluaWZpY2F0aW9uVGV4dHVyZUZpbHRlciB8IHVuZGVmaW5lZDtcblx0Zm9ybWF0PzogbnVtYmVyIHwgdW5kZWZpbmVkOyAvLyBSR0JBRm9ybWF0O1xuXHR0eXBlPzogVGV4dHVyZURhdGFUeXBlIHwgdW5kZWZpbmVkOyAvLyBVbnNpZ25lZEJ5dGVUeXBlO1xuXHRhbmlzb3Ryb3B5PzogbnVtYmVyIHwgdW5kZWZpbmVkOyAvLyAxO1xuXHRkZXB0aEJ1ZmZlcj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7IC8vIHRydWU7XG5cdHN0ZW5jaWxCdWZmZXI/OiBib29sZWFuIHwgdW5kZWZpbmVkOyAvLyBmYWxzZTtcblx0Z2VuZXJhdGVNaXBtYXBzPzogYm9vbGVhbiB8IHVuZGVmaW5lZDsgLy8gdHJ1ZTtcblx0ZGVwdGhUZXh0dXJlPzogRGVwdGhUZXh0dXJlIHwgdW5kZWZpbmVkO1xuXHRlbmNvZGluZz86IFRleHR1cmVFbmNvZGluZyB8IHVuZGVmaW5lZDtcblx0Y29sb3JTcGFjZT86IENvbG9yU3BhY2UgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0ZCT1BhcmFtcyB7XG5cdHdpZHRoPzogbnVtYmVyIHwgRkJPU2V0dGluZ3M7XG5cdGhlaWdodD86IG51bWJlcjtcblx0c2V0dGluZ3M/OiBGQk9TZXR0aW5ncztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEZCTyhwYXJhbXM6ICgpID0+IE5ndHNGQk9QYXJhbXMsIHsgaW5qZWN0b3IgfTogeyBpbmplY3Rvcj86IEluamVjdG9yIH0gPSB7fSkge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0RkJPLCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBzaXplID0gc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cdFx0Y29uc3Qgdmlld3BvcnQgPSBzdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0Jyk7XG5cblx0XHRjb25zdCB3aWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgd2lkdGggfSA9IHBhcmFtcygpO1xuXHRcdFx0cmV0dXJuIHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgPyB3aWR0aCA6IHNpemUoKS53aWR0aCAqIHZpZXdwb3J0KCkuZHByO1xuXHRcdH0pO1xuXHRcdGNvbnN0IGhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgaGVpZ2h0IH0gPSBwYXJhbXMoKTtcblx0XHRcdHJldHVybiB0eXBlb2YgaGVpZ2h0ID09PSAnbnVtYmVyJyA/IGhlaWdodCA6IHNpemUoKS5oZWlnaHQgKiB2aWV3cG9ydCgpLmRwcjtcblx0XHR9KTtcblx0XHRjb25zdCBzZXR0aW5ncyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgd2lkdGgsIHNldHRpbmdzIH0gPSBwYXJhbXMoKTtcblx0XHRcdGNvbnN0IF9zZXR0aW5ncyA9ICh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInID8gc2V0dGluZ3MgOiAod2lkdGggYXMgRkJPU2V0dGluZ3MpKSB8fCB7fTtcblx0XHRcdGlmIChfc2V0dGluZ3Muc2FtcGxlcyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdF9zZXR0aW5ncy5zYW1wbGVzID0gMDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBfc2V0dGluZ3M7XG5cdFx0fSk7XG5cblx0XHRjb25zdCB0YXJnZXQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbeyBzYW1wbGVzID0gMCwgZGVwdGgsIC4uLnRhcmdldFNldHRpbmdzIH0sIF93aWR0aCwgX2hlaWdodF0gPSBbXG5cdFx0XHRcdHVudHJhY2tlZChzZXR0aW5ncyksXG5cdFx0XHRcdHVudHJhY2tlZCh3aWR0aCksXG5cdFx0XHRcdHVudHJhY2tlZChoZWlnaHQpLFxuXHRcdFx0XTtcblx0XHRcdGNvbnN0IHRhcmdldCA9IG5ldyBXZWJHTFJlbmRlclRhcmdldChfd2lkdGgsIF9oZWlnaHQsIHtcblx0XHRcdFx0bWluRmlsdGVyOiBMaW5lYXJGaWx0ZXIsXG5cdFx0XHRcdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRcdFx0XHR0eXBlOiBIYWxmRmxvYXRUeXBlLFxuXHRcdFx0XHQuLi50YXJnZXRTZXR0aW5ncyxcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoZGVwdGgpIHtcblx0XHRcdFx0dGFyZ2V0LmRlcHRoVGV4dHVyZSA9IG5ldyBEZXB0aFRleHR1cmUoX3dpZHRoLCBfaGVpZ2h0LCBGbG9hdFR5cGUpO1xuXHRcdFx0fVxuXG5cdFx0XHR0YXJnZXQuc2FtcGxlcyA9IHNhbXBsZXM7XG5cdFx0XHRyZXR1cm4gdGFyZ2V0O1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IHNhbXBsZXMgPSAwIH0sIF93aWR0aCwgX2hlaWdodCwgX3RhcmdldF0gPSBbc2V0dGluZ3MoKSwgd2lkdGgoKSwgaGVpZ2h0KCksIHRhcmdldCgpXTtcblx0XHRcdF90YXJnZXQuc2V0U2l6ZShfd2lkdGgsIF9oZWlnaHQpO1xuXHRcdFx0aWYgKHNhbXBsZXMpIF90YXJnZXQuc2FtcGxlcyA9IHNhbXBsZXM7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHRhcmdldCgpLmRpc3Bvc2UoKSk7XG5cblx0XHRyZXR1cm4gdGFyZ2V0O1xuXHR9KTtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbZmJvXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzRkJPIHtcblx0ZmJvID0gaW5wdXQoe30gYXMgeyB3aWR0aDogTmd0c0ZCT1BhcmFtc1snd2lkdGgnXTsgaGVpZ2h0OiBOZ3RzRkJPUGFyYW1zWydoZWlnaHQnXSB9ICYgRkJPU2V0dGluZ3MpO1xuXG5cdHByaXZhdGUgdGVtcGxhdGUgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXHRwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0bGV0IHJlZjogRW1iZWRkZWRWaWV3UmVmPHsgJGltcGxpY2l0OiBSZXR1cm5UeXBlPHR5cGVvZiBpbmplY3RGQk8+IH0+O1xuXG5cdFx0Y29uc3QgZmJvVGFyZ2V0ID0gaW5qZWN0RkJPKCgpID0+IHtcblx0XHRcdGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgLi4uc2V0dGluZ3MgfSA9IHRoaXMuZmJvKCk7XG5cdFx0XHRyZXR1cm4geyB3aWR0aCwgaGVpZ2h0LCBzZXR0aW5ncyB9O1xuXHRcdH0pO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdC8vIFRPRE86IGRvdWJsZSBjaGVjayBpZiB3ZSBuZWVkIHVudHJhY2tlZFxuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0cmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlLCB7ICRpbXBsaWNpdDogZmJvVGFyZ2V0IH0pO1xuXHRcdFx0XHRyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdHJlZj8uZGVzdHJveSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoXzogTmd0c0ZCTywgY3R4OiB1bmtub3duKTogY3R4IGlzIHsgJGltcGxpY2l0OiBSZXR1cm5UeXBlPHR5cGVvZiBpbmplY3RGQk8+IH0ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, inject, input, output, Renderer2, untracked, viewChild, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, Renderer2, untracked, viewChild, } from '@angular/core';
3
3
  import { injectBeforeRender, NgtHTML, pick, resolveRef } from 'angular-three';
4
- import { injectAutoEffect } from 'ngxtension/auto-effect';
5
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
5
  import { Vector3 } from 'three';
7
6
  import { NgtsHTML } from './html';
@@ -51,71 +50,67 @@ export class NgtsHTMLContent extends NgtHTML {
51
50
  return parent;
52
51
  return (this.events().connected || this.gl().domElement.parentNode);
53
52
  });
54
- const autoEffect = injectAutoEffect();
55
53
  const renderer = inject(Renderer2);
56
54
  let isMeshSizeSet = false;
57
- afterNextRender(() => {
58
- autoEffect(() => {
59
- const [occlude, canvasEl, zIndexRange] = [
60
- this.html.occlude(),
61
- untracked(this.gl).domElement,
62
- untracked(this.zIndexRange),
63
- ];
64
- if (occlude && occlude === 'blending') {
65
- renderer.setStyle(canvasEl, 'z-index', `${Math.floor(zIndexRange[0] / 2)}`);
66
- renderer.setStyle(canvasEl, 'position', 'absolute');
67
- renderer.setStyle(canvasEl, 'pointer-events', 'none');
68
- }
69
- else {
70
- renderer.removeStyle(canvasEl, 'z-index');
71
- renderer.removeStyle(canvasEl, 'position');
72
- renderer.removeStyle(canvasEl, 'pointer-events');
73
- }
74
- });
75
- autoEffect(() => {
76
- const [transform, target, hostEl, prepend, scene, calculatePosition, group, size, camera] = [
77
- this.html.transform(),
78
- this.target(),
79
- this.host.nativeElement,
80
- untracked(this.prepend),
81
- untracked(this.scene),
82
- untracked(this.calculatePosition),
83
- untracked(this.html.groupRef).nativeElement,
84
- untracked(this.size),
85
- untracked(this.camera),
86
- ];
87
- scene.updateMatrixWorld();
88
- renderer.setStyle(hostEl, 'position', 'absolute');
89
- renderer.setStyle(hostEl, 'top', '0');
90
- renderer.setStyle(hostEl, 'left', '0');
91
- if (transform) {
92
- renderer.setStyle(hostEl, 'pointer-events', 'none');
93
- renderer.setStyle(hostEl, 'overflow', 'hidden');
94
- renderer.removeStyle(hostEl, 'transform');
95
- renderer.removeStyle(hostEl, 'transform-origin');
96
- }
97
- else {
98
- const vec = calculatePosition(group, camera, size);
99
- renderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0)`);
100
- renderer.setStyle(hostEl, 'transform-origin', '0 0');
101
- renderer.removeStyle(hostEl, 'pointer-events');
102
- renderer.removeStyle(hostEl, 'overflow');
103
- }
104
- if (prepend)
105
- target.prepend(hostEl);
106
- else
107
- target.appendChild(hostEl);
108
- return () => {
109
- if (target)
110
- target.removeChild(hostEl);
111
- };
112
- });
113
- autoEffect(() => {
114
- this.options();
115
- this.html.options();
116
- isMeshSizeSet = false;
55
+ effect(() => {
56
+ const [occlude, canvasEl, zIndexRange] = [
57
+ this.html.occlude(),
58
+ untracked(this.gl).domElement,
59
+ untracked(this.zIndexRange),
60
+ ];
61
+ if (occlude && occlude === 'blending') {
62
+ renderer.setStyle(canvasEl, 'z-index', `${Math.floor(zIndexRange[0] / 2)}`);
63
+ renderer.setStyle(canvasEl, 'position', 'absolute');
64
+ renderer.setStyle(canvasEl, 'pointer-events', 'none');
65
+ }
66
+ else {
67
+ renderer.removeStyle(canvasEl, 'z-index');
68
+ renderer.removeStyle(canvasEl, 'position');
69
+ renderer.removeStyle(canvasEl, 'pointer-events');
70
+ }
71
+ });
72
+ effect((onCleanup) => {
73
+ const [transform, target, hostEl, prepend, scene, calculatePosition, group, size, camera] = [
74
+ this.html.transform(),
75
+ this.target(),
76
+ this.host.nativeElement,
77
+ untracked(this.prepend),
78
+ untracked(this.scene),
79
+ untracked(this.calculatePosition),
80
+ untracked(this.html.groupRef).nativeElement,
81
+ untracked(this.size),
82
+ untracked(this.camera),
83
+ ];
84
+ scene.updateMatrixWorld();
85
+ renderer.setStyle(hostEl, 'position', 'absolute');
86
+ renderer.setStyle(hostEl, 'top', '0');
87
+ renderer.setStyle(hostEl, 'left', '0');
88
+ if (transform) {
89
+ renderer.setStyle(hostEl, 'pointer-events', 'none');
90
+ renderer.setStyle(hostEl, 'overflow', 'hidden');
91
+ renderer.removeStyle(hostEl, 'transform');
92
+ renderer.removeStyle(hostEl, 'transform-origin');
93
+ }
94
+ else {
95
+ const vec = calculatePosition(group, camera, size);
96
+ renderer.setStyle(hostEl, 'transform', `translate3d(${vec[0]}px,${vec[1]}px,0)`);
97
+ renderer.setStyle(hostEl, 'transform-origin', '0 0');
98
+ renderer.removeStyle(hostEl, 'pointer-events');
99
+ renderer.removeStyle(hostEl, 'overflow');
100
+ }
101
+ if (prepend)
102
+ target.prepend(hostEl);
103
+ else
104
+ target.appendChild(hostEl);
105
+ onCleanup(() => {
106
+ if (target)
107
+ target.removeChild(hostEl);
117
108
  });
118
109
  });
110
+ effect(() => {
111
+ const _ = [this.options(), this.html.options()];
112
+ isMeshSizeSet = false;
113
+ });
119
114
  let visible = true;
120
115
  let oldZoom = 0;
121
116
  let oldPosition = [0, 0];
@@ -244,8 +239,8 @@ export class NgtsHTMLContent extends NgtHTML {
244
239
  }
245
240
  });
246
241
  }
247
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsHTMLContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
248
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsHTMLContent, isStandalone: true, selector: "[ngtsHTMLContent]", inputs: { options: { classPropertyName: "options", publicName: "ngtsHTMLContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { occluded: "occluded" }, host: { attributes: { "data-ngts-html-content": "" } }, viewQueries: [{ propertyName: "transformOuterRef", first: true, predicate: ["transformOuter"], descendants: true, isSignal: true }, { propertyName: "transformInnerRef", first: true, predicate: ["transformInner"], descendants: true, isSignal: true }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTMLContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
243
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsHTMLContent, isStandalone: true, selector: "[ngtsHTMLContent]", inputs: { options: { classPropertyName: "options", publicName: "ngtsHTMLContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { occluded: "occluded" }, host: { attributes: { "data-ngts-html-content": "" } }, viewQueries: [{ propertyName: "transformOuterRef", first: true, predicate: ["transformOuter"], descendants: true, isSignal: true }, { propertyName: "transformInnerRef", first: true, predicate: ["transformInner"], descendants: true, isSignal: true }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
249
244
  @if (html.transform()) {
250
245
  <div
251
246
  #transformOuter
@@ -280,7 +275,7 @@ export class NgtsHTMLContent extends NgtHTML {
280
275
  </ng-template>
281
276
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
282
277
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsHTMLContent, decorators: [{
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTMLContent, decorators: [{
284
279
  type: Component,
285
280
  args: [{
286
281
  selector: '[ngtsHTMLContent]',
@@ -324,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
324
319
  host: { 'data-ngts-html-content': '' },
325
320
  }]
326
321
  }], ctorParameters: () => [] });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9odG1sL2h0bWwtY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFnQyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBRU4sd0JBQXdCLEVBQ3hCLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksR0FDWixNQUFNLFNBQVMsQ0FBQzs7QUE4QmpCLE1BQU0seUJBQXlCLEdBQTJCO0lBQ3pELEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQixhQUFhLEVBQUUsTUFBTTtJQUNyQixpQkFBaUIsRUFBRSx3QkFBd0I7SUFDM0MsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsTUFBTSxFQUFFLEtBQUs7SUFD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LENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO3dCQUNsQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzt3QkFDbEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7d0JBRW5DLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBRWpDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQTNRVyxlQUFlO2tHQUFmLGVBQWUsd3JCQXRDakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVCw0REFFUyxnQkFBZ0I7OzJGQUdkLGVBQWU7a0JBekMzQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLElBQUksRUFBRSxFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRTtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0UmVuZGVyZXIyLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEhUTUwsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE9iamVjdDNELCBPcnRob2dyYXBoaWNDYW1lcmEsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzSFRNTCB9IGZyb20gJy4vaHRtbCc7XG5pbXBvcnQge1xuXHRDYWxjdWxhdGVQb3NpdGlvbixcblx0ZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRlcHNpbG9uLFxuXHRnZXRDYW1lcmFDU1NNYXRyaXgsXG5cdGdldE9iamVjdENTU01hdHJpeCxcblx0aXNPYmplY3RCZWhpbmRDYW1lcmEsXG5cdGlzT2JqZWN0VmlzaWJsZSxcblx0b2JqZWN0U2NhbGUsXG5cdG9iamVjdFpJbmRleCxcbn0gZnJvbSAnLi91dGlscyc7XG5cbnR5cGUgUG9pbnRlckV2ZW50c1Byb3BlcnRpZXMgPVxuXHR8ICdhdXRvJ1xuXHR8ICdub25lJ1xuXHR8ICd2aXNpYmxlUGFpbnRlZCdcblx0fCAndmlzaWJsZUZpbGwnXG5cdHwgJ3Zpc2libGVTdHJva2UnXG5cdHwgJ3Zpc2libGUnXG5cdHwgJ3BhaW50ZWQnXG5cdHwgJ2ZpbGwnXG5cdHwgJ3N0cm9rZSdcblx0fCAnYWxsJ1xuXHR8ICdpbmhlcml0JztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzSFRNTENvbnRlbnRPcHRpb25zIHtcblx0ZXBzOiBudW1iZXI7XG5cdHpJbmRleFJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuXHRjZW50ZXI6IGJvb2xlYW47XG5cdHByZXBlbmQ6IGJvb2xlYW47XG5cdGZ1bGxzY3JlZW46IGJvb2xlYW47XG5cdGNvbnRhaW5lckNsYXNzOiBzdHJpbmc7XG5cdGNvbnRhaW5lclN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuXHRwb2ludGVyRXZlbnRzOiBQb2ludGVyRXZlbnRzUHJvcGVydGllcztcblx0Y2FsY3VsYXRlUG9zaXRpb246IENhbGN1bGF0ZVBvc2l0aW9uO1xuXHRzcHJpdGU6IGJvb2xlYW47XG5cdGRpc3RhbmNlRmFjdG9yPzogbnVtYmVyO1xuXHRwYXJlbnQ/OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xufVxuXG5jb25zdCBkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zOiBOZ3RzSFRNTENvbnRlbnRPcHRpb25zID0ge1xuXHRlcHM6IDAuMDAxLFxuXHR6SW5kZXhSYW5nZTogWzE2Nzc3MjcxLCAwXSxcblx0cG9pbnRlckV2ZW50czogJ2F1dG8nLFxuXHRjYWxjdWxhdGVQb3NpdGlvbjogZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRjb250YWluZXJDbGFzczogJycsXG5cdGNvbnRhaW5lclN0eWxlOiB7fSxcblx0Y2VudGVyOiBmYWxzZSxcblx0cHJlcGVuZDogZmFsc2UsXG5cdGZ1bGxzY3JlZW46IGZhbHNlLFxuXHRzcHJpdGU6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnW25ndHNIVE1MQ29udGVudF0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdEBpZiAoaHRtbC50cmFuc2Zvcm0oKSkge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjdHJhbnNmb3JtT3V0ZXJcblx0XHRcdFx0c3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsgcG9pbnRlci1ldmVudHM6IG5vbmU7XCJcblx0XHRcdFx0W3N0eWxlLndpZHRoLnB4XT1cInNpemUoKS53aWR0aFwiXG5cdFx0XHRcdFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpLmhlaWdodFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxkaXYgI3RyYW5zZm9ybUlubmVyIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCIgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cInBvaW50ZXJFdmVudHMoKVwiPlxuXHRcdFx0XHRcdDxkaXYgI2NvbnRhaW5lciBbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtzdHlsZV09XCJjb250YWluZXJTdHlsZSgpXCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdH0gQGVsc2Uge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjY29udGFpbmVyXG5cdFx0XHRcdHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGVcIlxuXHRcdFx0XHRbc3R5bGUudHJhbnNmb3JtXT1cImNlbnRlcigpID8gJ3RyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKScgOiAnbm9uZSdcIlxuXHRcdFx0XHRbc3R5bGUudG9wXT1cImZ1bGxzY3JlZW4oKSA/IC1zaXplKCkuaGVpZ2h0IC8gMiArICdweCcgOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmxlZnRdPVwiZnVsbHNjcmVlbigpID8gLXNpemUoKS53aWR0aCAvIDIgKyAncHgnIDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtzdHlsZS53aWR0aF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkud2lkdGggOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmhlaWdodF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkuaGVpZ2h0IDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtjbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcblx0XHRcdFx0W3N0eWxlXT1cImNvbnRhaW5lclN0eWxlKClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXG5cdFx0PG5nLXRlbXBsYXRlICNjb250ZW50PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuXHRob3N0OiB7ICdkYXRhLW5ndHMtaHRtbC1jb250ZW50JzogJycgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0hUTUxDb250ZW50IGV4dGVuZHMgTmd0SFRNTCB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zLCB7XG5cdFx0dHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zKSxcblx0XHRhbGlhczogJ25ndHNIVE1MQ29udGVudCcsXG5cdH0pO1xuXHRvY2NsdWRlZCA9IG91dHB1dDxib29sZWFuPigpO1xuXG5cdGh0bWwgPSBpbmplY3QoTmd0c0hUTUwpO1xuXG5cdHRyYW5zZm9ybU91dGVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PigndHJhbnNmb3JtT3V0ZXInKTtcblx0dHJhbnNmb3JtSW5uZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCd0cmFuc2Zvcm1Jbm5lcicpO1xuXHRjb250YWluZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjb250YWluZXInKTtcblxuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgZXZlbnRzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2V2ZW50cycpO1xuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBzY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblxuXHRwcml2YXRlIHBhcmVudCA9IHBpY2sodGhpcy5vcHRpb25zLCAncGFyZW50Jyk7XG5cdHByaXZhdGUgekluZGV4UmFuZ2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3pJbmRleFJhbmdlJyk7XG5cdHByaXZhdGUgY2FsY3VsYXRlUG9zaXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NhbGN1bGF0ZVBvc2l0aW9uJyk7XG5cdHByaXZhdGUgcHJlcGVuZCA9IHBpY2sodGhpcy5vcHRpb25zLCAncHJlcGVuZCcpO1xuXHRjZW50ZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NlbnRlcicpO1xuXHRmdWxsc2NyZWVuID0gcGljayh0aGlzLm9wdGlvbnMsICdmdWxsc2NyZWVuJyk7XG5cdHBvaW50ZXJFdmVudHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BvaW50ZXJFdmVudHMnKTtcblx0Y29udGFpbmVyQ2xhc3MgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbnRhaW5lckNsYXNzJyk7XG5cdGNvbnRhaW5lclN0eWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWluZXJTdHlsZScpO1xuXG5cdHByaXZhdGUgdGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHBhcmVudCA9IHJlc29sdmVSZWYodGhpcy5wYXJlbnQoKSk7XG5cdFx0aWYgKHBhcmVudCkgcmV0dXJuIHBhcmVudDtcblx0XHRyZXR1cm4gKHRoaXMuZXZlbnRzKCkuY29ubmVjdGVkIHx8IHRoaXMuZ2woKS5kb21FbGVtZW50LnBhcmVudE5vZGUpIGFzIEhUTUxFbGVtZW50O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0XHRjb25zdCByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG5cdFx0bGV0IGlzTWVzaFNpemVTZXQgPSBmYWxzZTtcblxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgW29jY2x1ZGUsIGNhbnZhc0VsLCB6SW5kZXhSYW5nZV0gPSBbXG5cdFx0XHRcdFx0dGhpcy5odG1sLm9jY2x1ZGUoKSxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy5nbCkuZG9tRWxlbWVudCxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy56SW5kZXhSYW5nZSksXG5cdFx0XHRcdF07XG5cblx0XHRcdFx0aWYgKG9jY2x1ZGUgJiYgb2NjbHVkZSA9PT0gJ2JsZW5kaW5nJykge1xuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGNhbnZhc0VsLCAnei1pbmRleCcsIGAke01hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKX1gKTtcblx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShjYW52YXNFbCwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG5cdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoY2FudmFzRWwsICdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmVuZGVyZXIucmVtb3ZlU3R5bGUoY2FudmFzRWwsICd6LWluZGV4Jyk7XG5cdFx0XHRcdFx0cmVuZGVyZXIucmVtb3ZlU3R5bGUoY2FudmFzRWwsICdwb3NpdGlvbicpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGNhbnZhc0VsLCAncG9pbnRlci1ldmVudHMnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbdHJhbnNmb3JtLCB0YXJnZXQsIGhvc3RFbCwgcHJlcGVuZCwgc2NlbmUsIGNhbGN1bGF0ZVBvc2l0aW9uLCBncm91cCwgc2l6ZSwgY2FtZXJhXSA9IFtcblx0XHRcdFx0XHR0aGlzLmh0bWwudHJhbnNmb3JtKCksXG5cdFx0XHRcdFx0dGhpcy50YXJnZXQoKSxcblx0XHRcdFx0XHR0aGlzLmhvc3QubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy5wcmVwZW5kKSxcblx0XHRcdFx0XHR1bnRyYWNrZWQodGhpcy5zY2VuZSksXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FsY3VsYXRlUG9zaXRpb24pLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLmh0bWwuZ3JvdXBSZWYpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuc2l6ZSksXG5cdFx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FtZXJhKSxcblx0XHRcdFx0XTtcblxuXHRcdFx0XHRzY2VuZS51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICd0b3AnLCAnMCcpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdsZWZ0JywgJzAnKTtcblxuXHRcdFx0XHRpZiAodHJhbnNmb3JtKSB7XG5cdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAncG9pbnRlci1ldmVudHMnLCAnbm9uZScpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybS1vcmlnaW4nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCB2ZWMgPSBjYWxjdWxhdGVQb3NpdGlvbihncm91cCwgY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlM2QoJHt2ZWNbMF19cHgsJHt2ZWNbMV19cHgsMClgKTtcblx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICd0cmFuc2Zvcm0tb3JpZ2luJywgJzAgMCcpO1xuXHRcdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3BvaW50ZXItZXZlbnRzJyk7XG5cdFx0XHRcdFx0cmVuZGVyZXIucmVtb3ZlU3R5bGUoaG9zdEVsLCAnb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwcmVwZW5kKSB0YXJnZXQucHJlcGVuZChob3N0RWwpO1xuXHRcdFx0XHRlbHNlIHRhcmdldC5hcHBlbmRDaGlsZChob3N0RWwpO1xuXG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRhcmdldCkgdGFyZ2V0LnJlbW92ZUNoaWxkKGhvc3RFbCk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblxuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMub3B0aW9ucygpO1xuXHRcdFx0XHR0aGlzLmh0bWwub3B0aW9ucygpO1xuXHRcdFx0XHRpc01lc2hTaXplU2V0ID0gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGxldCB2aXNpYmxlID0gdHJ1ZTtcblx0XHRsZXQgb2xkWm9vbSA9IDA7XG5cdFx0bGV0IG9sZFBvc2l0aW9uID0gWzAsIDBdO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYTogcm9vdENhbWVyYSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbXG5cdFx0XHRcdGhvc3RFbCxcblx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0dHJhbnNmb3JtSW5uZXJFbCxcblx0XHRcdFx0Z3JvdXAsXG5cdFx0XHRcdG9jY2x1c2lvbk1lc2gsXG5cdFx0XHRcdG9jY2x1c2lvbkdlb21ldHJ5LFxuXHRcdFx0XHRpc1JheWNhc3RPY2NsdXNpb24sXG5cdFx0XHRcdHsgY2FtZXJhLCBzaXplLCB2aWV3cG9ydCwgcmF5Y2FzdGVyLCBzY2VuZSB9LFxuXHRcdFx0XHR7IGNhbGN1bGF0ZVBvc2l0aW9uLCBlcHMsIHpJbmRleFJhbmdlLCBzcHJpdGUsIGRpc3RhbmNlRmFjdG9yIH0sXG5cdFx0XHRcdHsgdHJhbnNmb3JtLCBvY2NsdWRlLCBzY2FsZSB9LFxuXHRcdFx0XSA9IFtcblx0XHRcdFx0dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMudHJhbnNmb3JtT3V0ZXJSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy50cmFuc2Zvcm1Jbm5lclJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uR2VvbWV0cnlSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5odG1sLmlzUmF5Y2FzdE9jY2x1c2lvbigpLFxuXHRcdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5odG1sLm9wdGlvbnMoKSxcblx0XHRcdF07XG5cblx0XHRcdGlmIChncm91cCkge1xuXHRcdFx0XHRjYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0Z3JvdXAudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRjb25zdCB2ZWMgPSB0cmFuc2Zvcm0gPyBvbGRQb3NpdGlvbiA6IGNhbGN1bGF0ZVBvc2l0aW9uKGdyb3VwLCBjYW1lcmEsIHNpemUpO1xuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0cmFuc2Zvcm0gfHxcblx0XHRcdFx0XHRNYXRoLmFicyhvbGRab29tIC0gY2FtZXJhLnpvb20pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMF0gLSB2ZWNbMF0pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMV0gLSB2ZWNbMV0pID4gZXBzXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IGlzQmVoaW5kQ2FtZXJhID0gaXNPYmplY3RCZWhpbmRDYW1lcmEoZ3JvdXAsIGNhbWVyYSk7XG5cdFx0XHRcdFx0bGV0IHJheXRyYWNlVGFyZ2V0OiBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbiB8IE9iamVjdDNEW10gPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmIChpc1JheWNhc3RPY2NsdXNpb24pIHtcblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9jY2x1ZGUpKSB7XG5cdFx0XHRcdFx0XHRcdHJheXRyYWNlVGFyZ2V0ID0gb2NjbHVkZS5tYXAoKGl0ZW0pID0+IHJlc29sdmVSZWYoaXRlbSkpIGFzIE9iamVjdDNEW107XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG9jY2x1ZGUgIT09ICdibGVuZGluZycpIHtcblx0XHRcdFx0XHRcdFx0cmF5dHJhY2VUYXJnZXQgPSBbc2NlbmVdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHByZXZpb3VzbHlWaXNpYmxlID0gdmlzaWJsZTtcblx0XHRcdFx0XHRpZiAocmF5dHJhY2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGlzVmlzaWJsZSA9IGlzT2JqZWN0VmlzaWJsZShncm91cCwgY2FtZXJhLCByYXljYXN0ZXIsIHJheXRyYWNlVGFyZ2V0KTtcblx0XHRcdFx0XHRcdHZpc2libGUgPSBpc1Zpc2libGUgJiYgIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR2aXNpYmxlID0gIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChwcmV2aW91c2x5VmlzaWJsZSAhPT0gdmlzaWJsZSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMub2NjbHVkZWRbJ2xpc3RlbmVycyddKSB0aGlzLm9jY2x1ZGVkLmVtaXQoIXZpc2libGUpO1xuXHRcdFx0XHRcdFx0ZWxzZSByZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdkaXNwbGF5JywgdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IGhhbGZSYW5nZSA9IE1hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKTtcblx0XHRcdFx0XHRjb25zdCB6UmFuZ2UgPSBvY2NsdWRlXG5cdFx0XHRcdFx0XHQ/IGlzUmF5Y2FzdE9jY2x1c2lvbiAvL1xuXHRcdFx0XHRcdFx0XHQ/IFt6SW5kZXhSYW5nZVswXSwgaGFsZlJhbmdlXVxuXHRcdFx0XHRcdFx0XHQ6IFtoYWxmUmFuZ2UgLSAxLCAwXVxuXHRcdFx0XHRcdFx0OiB6SW5kZXhSYW5nZTtcblxuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3otaW5kZXgnLCBgJHtvYmplY3RaSW5kZXgoZ3JvdXAsIGNhbWVyYSwgelJhbmdlKX1gKTtcblxuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm0pIHtcblx0XHRcdFx0XHRcdGNvbnN0IFt3aWR0aEhhbGYsIGhlaWdodEhhbGZdID0gW3NpemUud2lkdGggLyAyLCBzaXplLmhlaWdodCAvIDJdO1xuXHRcdFx0XHRcdFx0Y29uc3QgZm92ID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbNV0gKiBoZWlnaHRIYWxmO1xuXHRcdFx0XHRcdFx0Y29uc3QgeyBpc09ydGhvZ3JhcGhpY0NhbWVyYSwgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0IH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhTWF0cml4ID0gZ2V0Q2FtZXJhQ1NTTWF0cml4KGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhVHJhbnNmb3JtID0gaXNPcnRob2dyYXBoaWNDYW1lcmFcblx0XHRcdFx0XHRcdFx0PyBgc2NhbGUoJHtmb3Z9KXRyYW5zbGF0ZSgke2Vwc2lsb24oLShyaWdodCArIGxlZnQpIC8gMil9cHgsJHtlcHNpbG9uKCh0b3AgKyBib3R0b20pIC8gMil9cHgpYFxuXHRcdFx0XHRcdFx0XHQ6IGB0cmFuc2xhdGVaKCR7Zm92fXB4KWA7XG5cdFx0XHRcdFx0XHRsZXQgbWF0cml4ID0gZ3JvdXAubWF0cml4V29ybGQ7XG5cdFx0XHRcdFx0XHRpZiAoc3ByaXRlKSB7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeCA9IGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UuY2xvbmUoKS50cmFuc3Bvc2UoKS5jb3B5UG9zaXRpb24obWF0cml4KS5zY2FsZShncm91cC5zY2FsZSk7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeC5lbGVtZW50c1szXSA9IG1hdHJpeC5lbGVtZW50c1s3XSA9IG1hdHJpeC5lbGVtZW50c1sxMV0gPSAwO1xuXHRcdFx0XHRcdFx0XHRtYXRyaXguZWxlbWVudHNbMTVdID0gMTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAnd2lkdGgnLCBzaXplLndpZHRoICsgJ3B4Jyk7XG5cdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdoZWlnaHQnLCBzaXplLmhlaWdodCArICdweCcpO1xuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAncGVyc3BlY3RpdmUnLCBpc09ydGhvZ3JhcGhpY0NhbWVyYSA/ICcnIDogYCR7Zm92fXB4YCk7XG5cblx0XHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsICYmIHRyYW5zZm9ybUlubmVyRWwpIHtcblx0XHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoXG5cdFx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0XHRcdFx0XHQndHJhbnNmb3JtJyxcblx0XHRcdFx0XHRcdFx0XHRgJHtjYW1lcmFUcmFuc2Zvcm19JHtjYW1lcmFNYXRyaXh9dHJhbnNsYXRlKCR7d2lkdGhIYWxmfXB4LCR7aGVpZ2h0SGFsZn1weClgLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShcblx0XHRcdFx0XHRcdFx0XHR0cmFuc2Zvcm1Jbm5lckVsLFxuXHRcdFx0XHRcdFx0XHRcdCd0cmFuc2Zvcm0nLFxuXHRcdFx0XHRcdFx0XHRcdGdldE9iamVjdENTU01hdHJpeChtYXRyaXgsIDEgLyAoKGRpc3RhbmNlRmFjdG9yIHx8IDEwKSAvIDQwMCkpLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzY2FsZSA9IGRpc3RhbmNlRmFjdG9yID09PSB1bmRlZmluZWQgPyAxIDogb2JqZWN0U2NhbGUoZ3JvdXAsIGNhbWVyYSkgKiBkaXN0YW5jZUZhY3Rvcjtcblx0XHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUzZCgke3ZlY1swXX1weCwke3ZlY1sxXX1weCwwKSBzY2FsZSgke3NjYWxlfSlgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b2xkUG9zaXRpb24gPSB2ZWM7XG5cdFx0XHRcdFx0b2xkWm9vbSA9IGNhbWVyYS56b29tO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaXNSYXljYXN0T2NjbHVzaW9uICYmIG9jY2x1c2lvbk1lc2ggJiYgIWlzTWVzaFNpemVTZXQpIHtcblx0XHRcdFx0aWYgKHRyYW5zZm9ybSkge1xuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBlbCA9IHRyYW5zZm9ybU91dGVyRWwuY2hpbGRyZW5bMF07XG5cblx0XHRcdFx0XHRcdGlmIChlbD8uY2xpZW50V2lkdGggJiYgZWw/LmNsaWVudEhlaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB7IGlzT3J0aG9ncmFwaGljQ2FtZXJhIH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpc09ydGhvZ3JhcGhpY0NhbWVyYSB8fCBvY2NsdXNpb25HZW9tZXRyeSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHNjYWxlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLnNjYWxlLnNldFNjYWxhcigxIC8gKHNjYWxlIGFzIG51bWJlcikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzY2FsZSBpbnN0YW5jZW9mIFZlY3RvcjMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5jb3B5KHNjYWxlLmNsb25lKCkuZGl2aWRlU2NhbGFyKDEpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KDEgLyBzY2FsZVswXSwgMSAvIHNjYWxlWzFdLCAxIC8gc2NhbGVbMl0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCByYXRpbyA9IChkaXN0YW5jZUZhY3RvciB8fCAxMCkgLyA0MDA7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdyA9IGVsLmNsaWVudFdpZHRoICogcmF0aW87XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaCA9IGVsLmNsaWVudEhlaWdodCAqIHJhdGlvO1xuXG5cdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5zZXQodywgaCwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgZWxlID0gaG9zdEVsLmNoaWxkcmVuWzBdO1xuXG5cdFx0XHRcdFx0aWYgKGVsZT8uY2xpZW50V2lkdGggJiYgZWxlPy5jbGllbnRIZWlnaHQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJhdGlvID0gMSAvIHZpZXdwb3J0LmZhY3Rvcjtcblx0XHRcdFx0XHRcdGNvbnN0IHcgPSBlbGUuY2xpZW50V2lkdGggKiByYXRpbztcblx0XHRcdFx0XHRcdGNvbnN0IGggPSBlbGUuY2xpZW50SGVpZ2h0ICogcmF0aW87XG5cblx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KHcsIGgsIDEpO1xuXG5cdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLmxvb2tBdChyb290Q2FtZXJhLnBvc2l0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9odG1sL2h0bWwtY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFnQyxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBRU4sd0JBQXdCLEVBQ3hCLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksR0FDWixNQUFNLFNBQVMsQ0FBQzs7QUE4QmpCLE1BQU0seUJBQXlCLEdBQTJCO0lBQ3pELEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQixhQUFhLEVBQUUsTUFBTTtJQUNyQixpQkFBaUIsRUFBRSx3QkFBd0I7SUFDM0MsY0FBYyxFQUFFLEVBQUU7SUFDbEIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsTUFBTSxFQUFFLEtBQUs7SUFDYixPQUFPLEVBQUUsS0FBSztJQUNkLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLE1B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RyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7d0JBRW5DLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBRWpDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXZRVyxlQUFlO2tHQUFmLGVBQWUsd3JCQXRDakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVCw0REFFUyxnQkFBZ0I7OzJGQUdkLGVBQWU7a0JBekMzQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLElBQUksRUFBRSxFQUFFLHdCQUF3QixFQUFFLEVBQUUsRUFBRTtpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdG91dHB1dCxcblx0UmVuZGVyZXIyLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEhUTUwsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IE9iamVjdDNELCBPcnRob2dyYXBoaWNDYW1lcmEsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzSFRNTCB9IGZyb20gJy4vaHRtbCc7XG5pbXBvcnQge1xuXHRDYWxjdWxhdGVQb3NpdGlvbixcblx0ZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRlcHNpbG9uLFxuXHRnZXRDYW1lcmFDU1NNYXRyaXgsXG5cdGdldE9iamVjdENTU01hdHJpeCxcblx0aXNPYmplY3RCZWhpbmRDYW1lcmEsXG5cdGlzT2JqZWN0VmlzaWJsZSxcblx0b2JqZWN0U2NhbGUsXG5cdG9iamVjdFpJbmRleCxcbn0gZnJvbSAnLi91dGlscyc7XG5cbnR5cGUgUG9pbnRlckV2ZW50c1Byb3BlcnRpZXMgPVxuXHR8ICdhdXRvJ1xuXHR8ICdub25lJ1xuXHR8ICd2aXNpYmxlUGFpbnRlZCdcblx0fCAndmlzaWJsZUZpbGwnXG5cdHwgJ3Zpc2libGVTdHJva2UnXG5cdHwgJ3Zpc2libGUnXG5cdHwgJ3BhaW50ZWQnXG5cdHwgJ2ZpbGwnXG5cdHwgJ3N0cm9rZSdcblx0fCAnYWxsJ1xuXHR8ICdpbmhlcml0JztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzSFRNTENvbnRlbnRPcHRpb25zIHtcblx0ZXBzOiBudW1iZXI7XG5cdHpJbmRleFJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuXHRjZW50ZXI6IGJvb2xlYW47XG5cdHByZXBlbmQ6IGJvb2xlYW47XG5cdGZ1bGxzY3JlZW46IGJvb2xlYW47XG5cdGNvbnRhaW5lckNsYXNzOiBzdHJpbmc7XG5cdGNvbnRhaW5lclN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+O1xuXHRwb2ludGVyRXZlbnRzOiBQb2ludGVyRXZlbnRzUHJvcGVydGllcztcblx0Y2FsY3VsYXRlUG9zaXRpb246IENhbGN1bGF0ZVBvc2l0aW9uO1xuXHRzcHJpdGU6IGJvb2xlYW47XG5cdGRpc3RhbmNlRmFjdG9yPzogbnVtYmVyO1xuXHRwYXJlbnQ/OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xufVxuXG5jb25zdCBkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zOiBOZ3RzSFRNTENvbnRlbnRPcHRpb25zID0ge1xuXHRlcHM6IDAuMDAxLFxuXHR6SW5kZXhSYW5nZTogWzE2Nzc3MjcxLCAwXSxcblx0cG9pbnRlckV2ZW50czogJ2F1dG8nLFxuXHRjYWxjdWxhdGVQb3NpdGlvbjogZGVmYXVsdENhbGN1bGF0ZVBvc2l0aW9uLFxuXHRjb250YWluZXJDbGFzczogJycsXG5cdGNvbnRhaW5lclN0eWxlOiB7fSxcblx0Y2VudGVyOiBmYWxzZSxcblx0cHJlcGVuZDogZmFsc2UsXG5cdGZ1bGxzY3JlZW46IGZhbHNlLFxuXHRzcHJpdGU6IGZhbHNlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnW25ndHNIVE1MQ29udGVudF0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdEBpZiAoaHRtbC50cmFuc2Zvcm0oKSkge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjdHJhbnNmb3JtT3V0ZXJcblx0XHRcdFx0c3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsgcG9pbnRlci1ldmVudHM6IG5vbmU7XCJcblx0XHRcdFx0W3N0eWxlLndpZHRoLnB4XT1cInNpemUoKS53aWR0aFwiXG5cdFx0XHRcdFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZSgpLmhlaWdodFwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxkaXYgI3RyYW5zZm9ybUlubmVyIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCIgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cInBvaW50ZXJFdmVudHMoKVwiPlxuXHRcdFx0XHRcdDxkaXYgI2NvbnRhaW5lciBbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKVwiIFtzdHlsZV09XCJjb250YWluZXJTdHlsZSgpXCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdH0gQGVsc2Uge1xuXHRcdFx0PGRpdlxuXHRcdFx0XHQjY29udGFpbmVyXG5cdFx0XHRcdHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGVcIlxuXHRcdFx0XHRbc3R5bGUudHJhbnNmb3JtXT1cImNlbnRlcigpID8gJ3RyYW5zbGF0ZTNkKC01MCUsLTUwJSwwKScgOiAnbm9uZSdcIlxuXHRcdFx0XHRbc3R5bGUudG9wXT1cImZ1bGxzY3JlZW4oKSA/IC1zaXplKCkuaGVpZ2h0IC8gMiArICdweCcgOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmxlZnRdPVwiZnVsbHNjcmVlbigpID8gLXNpemUoKS53aWR0aCAvIDIgKyAncHgnIDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtzdHlsZS53aWR0aF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkud2lkdGggOiAndW5zZXQnXCJcblx0XHRcdFx0W3N0eWxlLmhlaWdodF09XCJmdWxsc2NyZWVuKCkgPyBzaXplKCkuaGVpZ2h0IDogJ3Vuc2V0J1wiXG5cdFx0XHRcdFtjbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcblx0XHRcdFx0W3N0eWxlXT1cImNvbnRhaW5lclN0eWxlKClcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIiAvPlxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXG5cdFx0PG5nLXRlbXBsYXRlICNjb250ZW50PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxuXHRob3N0OiB7ICdkYXRhLW5ndHMtaHRtbC1jb250ZW50JzogJycgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0hUTUxDb250ZW50IGV4dGVuZHMgTmd0SFRNTCB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zLCB7XG5cdFx0dHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0SHRtbENvbnRlbnRPcHRpb25zKSxcblx0XHRhbGlhczogJ25ndHNIVE1MQ29udGVudCcsXG5cdH0pO1xuXHRvY2NsdWRlZCA9IG91dHB1dDxib29sZWFuPigpO1xuXG5cdGh0bWwgPSBpbmplY3QoTmd0c0hUTUwpO1xuXG5cdHRyYW5zZm9ybU91dGVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PigndHJhbnNmb3JtT3V0ZXInKTtcblx0dHJhbnNmb3JtSW5uZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCd0cmFuc2Zvcm1Jbm5lcicpO1xuXHRjb250YWluZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjb250YWluZXInKTtcblxuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgZXZlbnRzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2V2ZW50cycpO1xuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBzY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwcm90ZWN0ZWQgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cblx0cHJpdmF0ZSBwYXJlbnQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3BhcmVudCcpO1xuXHRwcml2YXRlIHpJbmRleFJhbmdlID0gcGljayh0aGlzLm9wdGlvbnMsICd6SW5kZXhSYW5nZScpO1xuXHRwcml2YXRlIGNhbGN1bGF0ZVBvc2l0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdjYWxjdWxhdGVQb3NpdGlvbicpO1xuXHRwcml2YXRlIHByZXBlbmQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ByZXBlbmQnKTtcblx0cHJvdGVjdGVkIGNlbnRlciA9IHBpY2sodGhpcy5vcHRpb25zLCAnY2VudGVyJyk7XG5cdHByb3RlY3RlZCBmdWxsc2NyZWVuID0gcGljayh0aGlzLm9wdGlvbnMsICdmdWxsc2NyZWVuJyk7XG5cdHByb3RlY3RlZCBwb2ludGVyRXZlbnRzID0gcGljayh0aGlzLm9wdGlvbnMsICdwb2ludGVyRXZlbnRzJyk7XG5cdHByb3RlY3RlZCBjb250YWluZXJDbGFzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29udGFpbmVyQ2xhc3MnKTtcblx0cHJvdGVjdGVkIGNvbnRhaW5lclN0eWxlID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWluZXJTdHlsZScpO1xuXG5cdHByaXZhdGUgdGFyZ2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHBhcmVudCA9IHJlc29sdmVSZWYodGhpcy5wYXJlbnQoKSk7XG5cdFx0aWYgKHBhcmVudCkgcmV0dXJuIHBhcmVudDtcblx0XHRyZXR1cm4gKHRoaXMuZXZlbnRzKCkuY29ubmVjdGVkIHx8IHRoaXMuZ2woKS5kb21FbGVtZW50LnBhcmVudE5vZGUpIGFzIEhUTUxFbGVtZW50O1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0Y29uc3QgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuXHRcdGxldCBpc01lc2hTaXplU2V0ID0gZmFsc2U7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW29jY2x1ZGUsIGNhbnZhc0VsLCB6SW5kZXhSYW5nZV0gPSBbXG5cdFx0XHRcdHRoaXMuaHRtbC5vY2NsdWRlKCksXG5cdFx0XHRcdHVudHJhY2tlZCh0aGlzLmdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQodGhpcy56SW5kZXhSYW5nZSksXG5cdFx0XHRdO1xuXG5cdFx0XHRpZiAob2NjbHVkZSAmJiBvY2NsdWRlID09PSAnYmxlbmRpbmcnKSB7XG5cdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGNhbnZhc0VsLCAnei1pbmRleCcsIGAke01hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKX1gKTtcblx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoY2FudmFzRWwsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuXHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShjYW52YXNFbCwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGNhbnZhc0VsLCAnei1pbmRleCcpO1xuXHRcdFx0XHRyZW5kZXJlci5yZW1vdmVTdHlsZShjYW52YXNFbCwgJ3Bvc2l0aW9uJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGNhbnZhc0VsLCAncG9pbnRlci1ldmVudHMnKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbdHJhbnNmb3JtLCB0YXJnZXQsIGhvc3RFbCwgcHJlcGVuZCwgc2NlbmUsIGNhbGN1bGF0ZVBvc2l0aW9uLCBncm91cCwgc2l6ZSwgY2FtZXJhXSA9IFtcblx0XHRcdFx0dGhpcy5odG1sLnRyYW5zZm9ybSgpLFxuXHRcdFx0XHR0aGlzLnRhcmdldCgpLFxuXHRcdFx0XHR0aGlzLmhvc3QubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMucHJlcGVuZCksXG5cdFx0XHRcdHVudHJhY2tlZCh0aGlzLnNjZW5lKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FsY3VsYXRlUG9zaXRpb24pLFxuXHRcdFx0XHR1bnRyYWNrZWQodGhpcy5odG1sLmdyb3VwUmVmKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQodGhpcy5zaXplKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMuY2FtZXJhKSxcblx0XHRcdF07XG5cblx0XHRcdHNjZW5lLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xuXHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAndG9wJywgJzAnKTtcblx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ2xlZnQnLCAnMCcpO1xuXG5cdFx0XHRpZiAodHJhbnNmb3JtKSB7XG5cdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcblx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScpO1xuXHRcdFx0XHRyZW5kZXJlci5yZW1vdmVTdHlsZShob3N0RWwsICd0cmFuc2Zvcm0tb3JpZ2luJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCB2ZWMgPSBjYWxjdWxhdGVQb3NpdGlvbihncm91cCwgY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAndHJhbnNmb3JtJywgYHRyYW5zbGF0ZTNkKCR7dmVjWzBdfXB4LCR7dmVjWzFdfXB4LDApYCk7XG5cdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybS1vcmlnaW4nLCAnMCAwJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ3BvaW50ZXItZXZlbnRzJyk7XG5cdFx0XHRcdHJlbmRlcmVyLnJlbW92ZVN0eWxlKGhvc3RFbCwgJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChwcmVwZW5kKSB0YXJnZXQucHJlcGVuZChob3N0RWwpO1xuXHRcdFx0ZWxzZSB0YXJnZXQuYXBwZW5kQ2hpbGQoaG9zdEVsKTtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHtcblx0XHRcdFx0aWYgKHRhcmdldCkgdGFyZ2V0LnJlbW92ZUNoaWxkKGhvc3RFbCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBfID0gW3RoaXMub3B0aW9ucygpLCB0aGlzLmh0bWwub3B0aW9ucygpXTtcblx0XHRcdGlzTWVzaFNpemVTZXQgPSBmYWxzZTtcblx0XHR9KTtcblxuXHRcdGxldCB2aXNpYmxlID0gdHJ1ZTtcblx0XHRsZXQgb2xkWm9vbSA9IDA7XG5cdFx0bGV0IG9sZFBvc2l0aW9uID0gWzAsIDBdO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYTogcm9vdENhbWVyYSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbXG5cdFx0XHRcdGhvc3RFbCxcblx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0dHJhbnNmb3JtSW5uZXJFbCxcblx0XHRcdFx0Z3JvdXAsXG5cdFx0XHRcdG9jY2x1c2lvbk1lc2gsXG5cdFx0XHRcdG9jY2x1c2lvbkdlb21ldHJ5LFxuXHRcdFx0XHRpc1JheWNhc3RPY2NsdXNpb24sXG5cdFx0XHRcdHsgY2FtZXJhLCBzaXplLCB2aWV3cG9ydCwgcmF5Y2FzdGVyLCBzY2VuZSB9LFxuXHRcdFx0XHR7IGNhbGN1bGF0ZVBvc2l0aW9uLCBlcHMsIHpJbmRleFJhbmdlLCBzcHJpdGUsIGRpc3RhbmNlRmFjdG9yIH0sXG5cdFx0XHRcdHsgdHJhbnNmb3JtLCBvY2NsdWRlLCBzY2FsZSB9LFxuXHRcdFx0XSA9IFtcblx0XHRcdFx0dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMudHJhbnNmb3JtT3V0ZXJSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy50cmFuc2Zvcm1Jbm5lclJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmh0bWwub2NjbHVzaW9uR2VvbWV0cnlSZWYoKT8ubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5odG1sLmlzUmF5Y2FzdE9jY2x1c2lvbigpLFxuXHRcdFx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5odG1sLm9wdGlvbnMoKSxcblx0XHRcdF07XG5cblx0XHRcdGlmIChncm91cCkge1xuXHRcdFx0XHRjYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0Z3JvdXAudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRjb25zdCB2ZWMgPSB0cmFuc2Zvcm0gPyBvbGRQb3NpdGlvbiA6IGNhbGN1bGF0ZVBvc2l0aW9uKGdyb3VwLCBjYW1lcmEsIHNpemUpO1xuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0cmFuc2Zvcm0gfHxcblx0XHRcdFx0XHRNYXRoLmFicyhvbGRab29tIC0gY2FtZXJhLnpvb20pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMF0gLSB2ZWNbMF0pID4gZXBzIHx8XG5cdFx0XHRcdFx0TWF0aC5hYnMob2xkUG9zaXRpb25bMV0gLSB2ZWNbMV0pID4gZXBzXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IGlzQmVoaW5kQ2FtZXJhID0gaXNPYmplY3RCZWhpbmRDYW1lcmEoZ3JvdXAsIGNhbWVyYSk7XG5cdFx0XHRcdFx0bGV0IHJheXRyYWNlVGFyZ2V0OiBudWxsIHwgdW5kZWZpbmVkIHwgYm9vbGVhbiB8IE9iamVjdDNEW10gPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmIChpc1JheWNhc3RPY2NsdXNpb24pIHtcblx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9jY2x1ZGUpKSB7XG5cdFx0XHRcdFx0XHRcdHJheXRyYWNlVGFyZ2V0ID0gb2NjbHVkZS5tYXAoKGl0ZW0pID0+IHJlc29sdmVSZWYoaXRlbSkpIGFzIE9iamVjdDNEW107XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG9jY2x1ZGUgIT09ICdibGVuZGluZycpIHtcblx0XHRcdFx0XHRcdFx0cmF5dHJhY2VUYXJnZXQgPSBbc2NlbmVdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHByZXZpb3VzbHlWaXNpYmxlID0gdmlzaWJsZTtcblx0XHRcdFx0XHRpZiAocmF5dHJhY2VUYXJnZXQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGlzVmlzaWJsZSA9IGlzT2JqZWN0VmlzaWJsZShncm91cCwgY2FtZXJhLCByYXljYXN0ZXIsIHJheXRyYWNlVGFyZ2V0KTtcblx0XHRcdFx0XHRcdHZpc2libGUgPSBpc1Zpc2libGUgJiYgIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR2aXNpYmxlID0gIWlzQmVoaW5kQ2FtZXJhO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChwcmV2aW91c2x5VmlzaWJsZSAhPT0gdmlzaWJsZSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMub2NjbHVkZWRbJ2xpc3RlbmVycyddKSB0aGlzLm9jY2x1ZGVkLmVtaXQoIXZpc2libGUpO1xuXHRcdFx0XHRcdFx0ZWxzZSByZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdkaXNwbGF5JywgdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IGhhbGZSYW5nZSA9IE1hdGguZmxvb3IoekluZGV4UmFuZ2VbMF0gLyAyKTtcblx0XHRcdFx0XHRjb25zdCB6UmFuZ2UgPSBvY2NsdWRlXG5cdFx0XHRcdFx0XHQ/IGlzUmF5Y2FzdE9jY2x1c2lvbiAvL1xuXHRcdFx0XHRcdFx0XHQ/IFt6SW5kZXhSYW5nZVswXSwgaGFsZlJhbmdlXVxuXHRcdFx0XHRcdFx0XHQ6IFtoYWxmUmFuZ2UgLSAxLCAwXVxuXHRcdFx0XHRcdFx0OiB6SW5kZXhSYW5nZTtcblxuXHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3otaW5kZXgnLCBgJHtvYmplY3RaSW5kZXgoZ3JvdXAsIGNhbWVyYSwgelJhbmdlKX1gKTtcblxuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm0pIHtcblx0XHRcdFx0XHRcdGNvbnN0IFt3aWR0aEhhbGYsIGhlaWdodEhhbGZdID0gW3NpemUud2lkdGggLyAyLCBzaXplLmhlaWdodCAvIDJdO1xuXHRcdFx0XHRcdFx0Y29uc3QgZm92ID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbNV0gKiBoZWlnaHRIYWxmO1xuXHRcdFx0XHRcdFx0Y29uc3QgeyBpc09ydGhvZ3JhcGhpY0NhbWVyYSwgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0IH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhTWF0cml4ID0gZ2V0Q2FtZXJhQ1NTTWF0cml4KGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UpO1xuXHRcdFx0XHRcdFx0Y29uc3QgY2FtZXJhVHJhbnNmb3JtID0gaXNPcnRob2dyYXBoaWNDYW1lcmFcblx0XHRcdFx0XHRcdFx0PyBgc2NhbGUoJHtmb3Z9KXRyYW5zbGF0ZSgke2Vwc2lsb24oLShyaWdodCArIGxlZnQpIC8gMil9cHgsJHtlcHNpbG9uKCh0b3AgKyBib3R0b20pIC8gMil9cHgpYFxuXHRcdFx0XHRcdFx0XHQ6IGB0cmFuc2xhdGVaKCR7Zm92fXB4KWA7XG5cdFx0XHRcdFx0XHRsZXQgbWF0cml4ID0gZ3JvdXAubWF0cml4V29ybGQ7XG5cdFx0XHRcdFx0XHRpZiAoc3ByaXRlKSB7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeCA9IGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UuY2xvbmUoKS50cmFuc3Bvc2UoKS5jb3B5UG9zaXRpb24obWF0cml4KS5zY2FsZShncm91cC5zY2FsZSk7XG5cdFx0XHRcdFx0XHRcdG1hdHJpeC5lbGVtZW50c1szXSA9IG1hdHJpeC5lbGVtZW50c1s3XSA9IG1hdHJpeC5lbGVtZW50c1sxMV0gPSAwO1xuXHRcdFx0XHRcdFx0XHRtYXRyaXguZWxlbWVudHNbMTVdID0gMTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAnd2lkdGgnLCBzaXplLndpZHRoICsgJ3B4Jyk7XG5cdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShob3N0RWwsICdoZWlnaHQnLCBzaXplLmhlaWdodCArICdweCcpO1xuXHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoaG9zdEVsLCAncGVyc3BlY3RpdmUnLCBpc09ydGhvZ3JhcGhpY0NhbWVyYSA/ICcnIDogYCR7Zm92fXB4YCk7XG5cblx0XHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsICYmIHRyYW5zZm9ybUlubmVyRWwpIHtcblx0XHRcdFx0XHRcdFx0cmVuZGVyZXIuc2V0U3R5bGUoXG5cdFx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtT3V0ZXJFbCxcblx0XHRcdFx0XHRcdFx0XHQndHJhbnNmb3JtJyxcblx0XHRcdFx0XHRcdFx0XHRgJHtjYW1lcmFUcmFuc2Zvcm19JHtjYW1lcmFNYXRyaXh9dHJhbnNsYXRlKCR7d2lkdGhIYWxmfXB4LCR7aGVpZ2h0SGFsZn1weClgLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJlci5zZXRTdHlsZShcblx0XHRcdFx0XHRcdFx0XHR0cmFuc2Zvcm1Jbm5lckVsLFxuXHRcdFx0XHRcdFx0XHRcdCd0cmFuc2Zvcm0nLFxuXHRcdFx0XHRcdFx0XHRcdGdldE9iamVjdENTU01hdHJpeChtYXRyaXgsIDEgLyAoKGRpc3RhbmNlRmFjdG9yIHx8IDEwKSAvIDQwMCkpLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzY2FsZSA9IGRpc3RhbmNlRmFjdG9yID09PSB1bmRlZmluZWQgPyAxIDogb2JqZWN0U2NhbGUoZ3JvdXAsIGNhbWVyYSkgKiBkaXN0YW5jZUZhY3Rvcjtcblx0XHRcdFx0XHRcdHJlbmRlcmVyLnNldFN0eWxlKGhvc3RFbCwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUzZCgke3ZlY1swXX1weCwke3ZlY1sxXX1weCwwKSBzY2FsZSgke3NjYWxlfSlgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b2xkUG9zaXRpb24gPSB2ZWM7XG5cdFx0XHRcdFx0b2xkWm9vbSA9IGNhbWVyYS56b29tO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICghaXNSYXljYXN0T2NjbHVzaW9uICYmIG9jY2x1c2lvbk1lc2ggJiYgIWlzTWVzaFNpemVTZXQpIHtcblx0XHRcdFx0aWYgKHRyYW5zZm9ybSkge1xuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1PdXRlckVsKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBlbCA9IHRyYW5zZm9ybU91dGVyRWwuY2hpbGRyZW5bMF07XG5cblx0XHRcdFx0XHRcdGlmIChlbD8uY2xpZW50V2lkdGggJiYgZWw/LmNsaWVudEhlaWdodCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB7IGlzT3J0aG9ncmFwaGljQ2FtZXJhIH0gPSBjYW1lcmEgYXMgT3J0aG9ncmFwaGljQ2FtZXJhO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpc09ydGhvZ3JhcGhpY0NhbWVyYSB8fCBvY2NsdXNpb25HZW9tZXRyeSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHNjYWxlKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLnNjYWxlLnNldFNjYWxhcigxIC8gKHNjYWxlIGFzIG51bWJlcikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzY2FsZSBpbnN0YW5jZW9mIFZlY3RvcjMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5jb3B5KHNjYWxlLmNsb25lKCkuZGl2aWRlU2NhbGFyKDEpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KDEgLyBzY2FsZVswXSwgMSAvIHNjYWxlWzFdLCAxIC8gc2NhbGVbMl0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCByYXRpbyA9IChkaXN0YW5jZUZhY3RvciB8fCAxMCkgLyA0MDA7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdyA9IGVsLmNsaWVudFdpZHRoICogcmF0aW87XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgaCA9IGVsLmNsaWVudEhlaWdodCAqIHJhdGlvO1xuXG5cdFx0XHRcdFx0XHRcdFx0b2NjbHVzaW9uTWVzaC5zY2FsZS5zZXQodywgaCwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgZWxlID0gaG9zdEVsLmNoaWxkcmVuWzBdO1xuXG5cdFx0XHRcdFx0aWYgKGVsZT8uY2xpZW50V2lkdGggJiYgZWxlPy5jbGllbnRIZWlnaHQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJhdGlvID0gMSAvIHZpZXdwb3J0LmZhY3Rvcjtcblx0XHRcdFx0XHRcdGNvbnN0IHcgPSBlbGUuY2xpZW50V2lkdGggKiByYXRpbztcblx0XHRcdFx0XHRcdGNvbnN0IGggPSBlbGUuY2xpZW50SGVpZ2h0ICogcmF0aW87XG5cblx0XHRcdFx0XHRcdG9jY2x1c2lvbk1lc2guc2NhbGUuc2V0KHcsIGgsIDEpO1xuXG5cdFx0XHRcdFx0XHRpc01lc2hTaXplU2V0ID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvY2NsdXNpb25NZXNoLmxvb2tBdChyb290Q2FtZXJhLnBvc2l0aW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -75,8 +75,8 @@ export class NgtsHTML {
75
75
  this.DoubleSide = DoubleSide;
76
76
  extend({ Group, Mesh, PlaneGeometry, ShaderMaterial });
77
77
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsHTML, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsHTML, isStandalone: true, selector: "ngts-html", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "occlusionMeshRef", first: true, predicate: ["occlusionMesh"], descendants: true, isSignal: true }, { propertyName: "occlusionGeometryRef", first: true, predicate: ["occlusionGeometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTML, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsHTML, isStandalone: true, selector: "ngts-html", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "occlusionMeshRef", first: true, predicate: ["occlusionMesh"], descendants: true, isSignal: true }, { propertyName: "occlusionGeometryRef", first: true, predicate: ["occlusionGeometry"], descendants: true, isSignal: true }], ngImport: i0, template: `
80
80
  <ngt-group #group [parameters]="parameters()">
81
81
  @if (occlude() && !isRaycastOcclusion()) {
82
82
  <ngt-mesh #occlusionMesh [castShadow]="castShadow()" [receiveShadow]="receiveShadow()">
@@ -97,7 +97,7 @@ export class NgtsHTML {
97
97
  <ng-content />
98
98
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsHTML, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsHTML, decorators: [{
101
101
  type: Component,
102
102
  args: [{
103
103
  selector: 'ngts-html',
@@ -1,4 +1,4 @@
1
- import { afterNextRender, Directive, effect, ElementRef, inject, Injector, model, signal, } from '@angular/core';
1
+ import { Directive, effect, ElementRef, inject, model, signal } from '@angular/core';
2
2
  import { addAfterEffect, addEffect, resolveRef } from 'angular-three';
3
3
  import { assertInjector } from 'ngxtension/assert-injector';
4
4
  import * as i0 from "@angular/core";
@@ -37,16 +37,13 @@ export class NgtsIntersect {
37
37
  constructor() {
38
38
  this.intersect = model(false);
39
39
  const host = inject(ElementRef);
40
- const injector = inject(Injector);
41
- afterNextRender(() => {
42
- injectIntersect(() => host, { source: this.intersect, injector });
43
- });
40
+ injectIntersect(() => host, { source: this.intersect });
44
41
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsIntersect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
46
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtsIntersect, isStandalone: true, selector: "[intersect]", inputs: { intersect: { classPropertyName: "intersect", publicName: "intersect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersect: "intersectChange" }, ngImport: i0 }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsIntersect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsIntersect, isStandalone: true, selector: "[intersect]", inputs: { intersect: { classPropertyName: "intersect", publicName: "intersect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersect: "intersectChange" }, ngImport: i0 }); }
47
44
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsIntersect, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsIntersect, decorators: [{
49
46
  type: Directive,
50
47
  args: [{ standalone: true, selector: '[intersect]' }]
51
48
  }], ctorParameters: () => [] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9pbnRlcnNlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHNUQsTUFBTSxVQUFVLGVBQWUsQ0FDOUIsTUFBOEQsRUFDOUQsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBZ0UsRUFBRTtJQUVwRyxPQUFPLGNBQWMsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNyRCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWpCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFFakIsd0NBQXdDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdCLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztZQUVILCtEQUErRDtZQUMvRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRCxHQUFHLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRTFDLDBFQUEwRTtZQUMxRSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsR0FBRyxFQUFFO2dCQUNsQyxJQUFJLEtBQUssS0FBSyxJQUFJO29CQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsT0FBTyxJQUFJLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztZQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsR0FBRyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7Z0JBQ2pDLE1BQU0sRUFBRSxDQUFDO2dCQUNULE1BQU0sRUFBRSxDQUFDO1lBQ1YsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUdELE1BQU0sT0FBTyxhQUFhO0lBR3pCO1FBRkEsY0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUd4QixNQUFNLElBQUksR0FBRyxNQUFNLENBQXVCLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FUVyxhQUFhO2tHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdERpcmVjdGl2ZSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRtb2RlbCxcblx0c2lnbmFsLFxuXHRXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRBZnRlckVmZmVjdCwgYWRkRWZmZWN0LCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCB7IE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SW50ZXJzZWN0PFRPYmplY3QgZXh0ZW5kcyBPYmplY3QzRD4oXG5cdG9iamVjdDogKCkgPT4gRWxlbWVudFJlZjxUT2JqZWN0PiB8IFRPYmplY3QgfCB1bmRlZmluZWQgfCBudWxsLFxuXHR7IGluamVjdG9yLCBzb3VyY2UgPSBzaWduYWwoZmFsc2UpIH06IHsgaW5qZWN0b3I/OiBJbmplY3Rvcjsgc291cmNlPzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gfSA9IHt9LFxuKSB7XG5cdHJldHVybiBhc3NlcnRJbmplY3RvcihpbmplY3RJbnRlcnNlY3QsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0bGV0IGNoZWNrID0gZmFsc2U7XG5cdFx0bGV0IHRlbXAgPSBmYWxzZTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBvYmogPSByZXNvbHZlUmVmKG9iamVjdCgpKTtcblx0XHRcdGlmICghb2JqKSByZXR1cm47XG5cblx0XHRcdC8vIFN0YW1wIG91dCBmcnVzdHVtIGNoZWNrIHByZS1lbXB0aXZlbHlcblx0XHRcdGNvbnN0IHVuc3ViMSA9IGFkZEVmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNoZWNrID0gZmFsc2U7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSk7XG5cblx0XHRcdC8vIElmIHRoZSBvYmplY3QgaXMgaW5zaWRlIHRoZSBmcnVzdHVtIHRocmVlIHdpbGwgY2FsbCBvblJlbmRlclxuXHRcdFx0Y29uc3Qgb2xkT25SZW5kZXIgPSBvYmoub25CZWZvcmVSZW5kZXIuYmluZChvYmopO1xuXHRcdFx0b2JqLm9uQmVmb3JlUmVuZGVyID0gKCkgPT4gKGNoZWNrID0gdHJ1ZSk7XG5cblx0XHRcdC8vIENvbXBhcmUgdGhlIGNoZWNrIHZhbHVlIGFnYWluc3QgdGhlIHRlbXAgdmFsdWUsIGlmIGl0IGRpZmZlcnMgc2V0IHN0YXRlXG5cdFx0XHRjb25zdCB1bnN1YjIgPSBhZGRBZnRlckVmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGlmIChjaGVjayAhPT0gdGVtcCkgc291cmNlLnNldCgodGVtcCA9IGNoZWNrKSk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSk7XG5cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdG9iai5vbkJlZm9yZVJlbmRlciA9IG9sZE9uUmVuZGVyO1xuXHRcdFx0XHR1bnN1YjEoKTtcblx0XHRcdFx0dW5zdWIyKCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBzb3VyY2UuYXNSZWFkb25seSgpO1xuXHR9KTtcbn1cblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnW2ludGVyc2VjdF0nIH0pXG5leHBvcnQgY2xhc3MgTmd0c0ludGVyc2VjdCB7XG5cdGludGVyc2VjdCA9IG1vZGVsKGZhbHNlKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8T2JqZWN0M0Q+PihFbGVtZW50UmVmKTtcblx0XHRjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGluamVjdEludGVyc2VjdCgoKSA9PiBob3N0LCB7IHNvdXJjZTogdGhpcy5pbnRlcnNlY3QsIGluamVjdG9yIH0pO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21pc2Mvc3JjL2xpYi9pbnRlcnNlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBWSxLQUFLLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUc1RCxNQUFNLFVBQVUsZUFBZSxDQUM5QixNQUE4RCxFQUM5RCxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFnRSxFQUFFO0lBRXBHLE9BQU8sY0FBYyxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3JELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7UUFFakIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUVqQix3Q0FBd0M7WUFDeEMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDN0IsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDZCxPQUFPLElBQUksQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1lBRUgsK0RBQStEO1lBQy9ELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELEdBQUcsQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFMUMsMEVBQTBFO1lBQzFFLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xDLElBQUksS0FBSyxLQUFLLElBQUk7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDO1lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxHQUFHLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztnQkFDakMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBR0QsTUFBTSxPQUFPLGFBQWE7SUFHekI7UUFGQSxjQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBR3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7UUFDdEQsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQU5XLGFBQWE7a0dBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsU0FBUzttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdG9yLCBtb2RlbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkQWZ0ZXJFZmZlY3QsIGFkZEVmZmVjdCwgcmVzb2x2ZVJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBPYmplY3QzRCB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEludGVyc2VjdDxUT2JqZWN0IGV4dGVuZHMgT2JqZWN0M0Q+KFxuXHRvYmplY3Q6ICgpID0+IEVsZW1lbnRSZWY8VE9iamVjdD4gfCBUT2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcblx0eyBpbmplY3Rvciwgc291cmNlID0gc2lnbmFsKGZhbHNlKSB9OiB7IGluamVjdG9yPzogSW5qZWN0b3I7IHNvdXJjZT86IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+IH0gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0SW50ZXJzZWN0LCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGxldCBjaGVjayA9IGZhbHNlO1xuXHRcdGxldCB0ZW1wID0gZmFsc2U7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3Qgb2JqID0gcmVzb2x2ZVJlZihvYmplY3QoKSk7XG5cdFx0XHRpZiAoIW9iaikgcmV0dXJuO1xuXG5cdFx0XHQvLyBTdGFtcCBvdXQgZnJ1c3R1bSBjaGVjayBwcmUtZW1wdGl2ZWx5XG5cdFx0XHRjb25zdCB1bnN1YjEgPSBhZGRFZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjaGVjayA9IGZhbHNlO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBJZiB0aGUgb2JqZWN0IGlzIGluc2lkZSB0aGUgZnJ1c3R1bSB0aHJlZSB3aWxsIGNhbGwgb25SZW5kZXJcblx0XHRcdGNvbnN0IG9sZE9uUmVuZGVyID0gb2JqLm9uQmVmb3JlUmVuZGVyLmJpbmQob2JqKTtcblx0XHRcdG9iai5vbkJlZm9yZVJlbmRlciA9ICgpID0+IChjaGVjayA9IHRydWUpO1xuXG5cdFx0XHQvLyBDb21wYXJlIHRoZSBjaGVjayB2YWx1ZSBhZ2FpbnN0IHRoZSB0ZW1wIHZhbHVlLCBpZiBpdCBkaWZmZXJzIHNldCBzdGF0ZVxuXHRcdFx0Y29uc3QgdW5zdWIyID0gYWRkQWZ0ZXJFZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRpZiAoY2hlY2sgIT09IHRlbXApIHNvdXJjZS5zZXQoKHRlbXAgPSBjaGVjaykpO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0pO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRvYmoub25CZWZvcmVSZW5kZXIgPSBvbGRPblJlbmRlcjtcblx0XHRcdFx0dW5zdWIxKCk7XG5cdFx0XHRcdHVuc3ViMigpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gc291cmNlLmFzUmVhZG9ubHkoKTtcblx0fSk7XG59XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1tpbnRlcnNlY3RdJyB9KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnRlcnNlY3Qge1xuXHRpbnRlcnNlY3QgPSBtb2RlbChmYWxzZSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPE9iamVjdDNEPj4oRWxlbWVudFJlZik7XG5cdFx0aW5qZWN0SW50ZXJzZWN0KCgpID0+IGhvc3QsIHsgc291cmNlOiB0aGlzLmludGVyc2VjdCB9KTtcblx0fVxufVxuIl19