angular-three-soba 2.2.0 → 2.3.0

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 (136) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +148 -148
  2. package/abstractions/lib/edges.d.ts +166 -166
  3. package/abstractions/lib/grid.d.ts +30 -30
  4. package/abstractions/lib/line.d.ts +10 -9
  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 +38 -38
  8. package/abstractions/lib/text.d.ts +2 -3
  9. package/cameras/lib/cube-camera.d.ts +2 -2
  10. package/cameras/lib/orthographic-camera.d.ts +7 -8
  11. package/cameras/lib/perspective-camera.d.ts +2 -3
  12. package/controls/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +1 -1
  14. package/esm2022/abstractions/lib/billboard.mjs +3 -3
  15. package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
  16. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
  17. package/esm2022/abstractions/lib/edges.mjs +30 -34
  18. package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
  19. package/esm2022/abstractions/lib/grid.mjs +3 -3
  20. package/esm2022/abstractions/lib/helper.mjs +18 -20
  21. package/esm2022/abstractions/lib/line.mjs +25 -28
  22. package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
  23. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
  24. package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
  25. package/esm2022/abstractions/lib/text-3d.mjs +14 -17
  26. package/esm2022/abstractions/lib/text.mjs +11 -16
  27. package/esm2022/cameras/lib/camera-content.mjs +3 -3
  28. package/esm2022/cameras/lib/cube-camera.mjs +18 -27
  29. package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
  30. package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
  31. package/esm2022/controls/lib/camera-controls.mjs +3 -3
  32. package/esm2022/controls/lib/orbit-controls.mjs +3 -3
  33. package/esm2022/controls/lib/scroll-controls.mjs +124 -130
  34. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
  35. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
  36. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
  37. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
  38. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
  39. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
  40. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
  41. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
  42. package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
  43. package/esm2022/loaders/lib/loader.mjs +3 -3
  44. package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
  45. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
  46. package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
  47. package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
  48. package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
  49. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
  50. package/esm2022/materials/lib/point-material.mjs +3 -3
  51. package/esm2022/misc/lib/bake-shadows.mjs +8 -10
  52. package/esm2022/misc/lib/computed-attribute.mjs +15 -19
  53. package/esm2022/misc/lib/decal.mjs +56 -53
  54. package/esm2022/misc/lib/fbo.mjs +10 -10
  55. package/esm2022/misc/lib/html/html-content.mjs +62 -67
  56. package/esm2022/misc/lib/html/html.mjs +3 -3
  57. package/esm2022/misc/lib/intersect.mjs +6 -9
  58. package/esm2022/misc/lib/sampler.mjs +42 -42
  59. package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
  60. package/esm2022/performances/lib/adaptive-events.mjs +12 -16
  61. package/esm2022/performances/lib/detailed.mjs +14 -18
  62. package/esm2022/performances/lib/instances/instances.mjs +16 -22
  63. package/esm2022/performances/lib/points/points.mjs +19 -25
  64. package/esm2022/performances/lib/segments/segments.mjs +11 -14
  65. package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
  66. package/esm2022/staging/index.mjs +3 -2
  67. package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
  68. package/esm2022/staging/lib/backdrop.mjs +19 -23
  69. package/esm2022/staging/lib/bb-anchor.mjs +3 -3
  70. package/esm2022/staging/lib/bounds.mjs +39 -43
  71. package/esm2022/staging/lib/camera-shake.mjs +14 -18
  72. package/esm2022/staging/lib/caustics.mjs +24 -28
  73. package/esm2022/staging/lib/center.mjs +28 -32
  74. package/esm2022/staging/lib/contact-shadows.mjs +3 -3
  75. package/esm2022/staging/lib/environment/environment.mjs +338 -0
  76. package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
  77. package/esm2022/staging/lib/float.mjs +3 -3
  78. package/esm2022/staging/lib/lightformer.mjs +18 -22
  79. package/esm2022/staging/lib/mask.mjs +8 -12
  80. package/esm2022/staging/lib/matcap-texture.mjs +9 -11
  81. package/esm2022/staging/lib/normal-texture.mjs +9 -11
  82. package/esm2022/staging/lib/randomized-lights.mjs +9 -13
  83. package/esm2022/staging/lib/render-texture.mjs +19 -20
  84. package/esm2022/staging/lib/sky.mjs +3 -3
  85. package/esm2022/staging/lib/spot-light.mjs +32 -40
  86. package/esm2022/staging/lib/stage.mjs +13 -17
  87. package/esm2022/stats/lib/stats.mjs +21 -27
  88. package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
  89. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  90. package/fesm2022/angular-three-soba-cameras.mjs +57 -64
  91. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  92. package/fesm2022/angular-three-soba-controls.mjs +129 -135
  93. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
  95. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  97. package/fesm2022/angular-three-soba-materials.mjs +52 -62
  98. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  99. package/fesm2022/angular-three-soba-misc.mjs +188 -195
  100. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  101. package/fesm2022/angular-three-soba-performances.mjs +90 -114
  102. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  103. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  104. package/fesm2022/angular-three-soba-staging.mjs +427 -430
  105. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  106. package/fesm2022/angular-three-soba-stats.mjs +20 -26
  107. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  108. package/materials/lib/custom-shader-material.d.ts +3 -3
  109. package/materials/lib/mesh-refraction-material.d.ts +3 -3
  110. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  111. package/misc/lib/computed-attribute.d.ts +5 -5
  112. package/misc/lib/decal.d.ts +5 -5
  113. package/misc/lib/html/html-content.d.ts +6 -6
  114. package/misc/lib/html/html.d.ts +1 -1
  115. package/misc/lib/sampler.d.ts +2 -4
  116. package/package.json +12 -12
  117. package/performances/lib/instances/instances.d.ts +11 -11
  118. package/performances/lib/points/points.d.ts +20 -20
  119. package/performances/lib/segments/segments.d.ts +4 -4
  120. package/shaders/lib/mesh-refraction-material.d.ts +2 -5
  121. package/staging/index.d.ts +2 -1
  122. package/staging/lib/camera-shake.d.ts +0 -1
  123. package/staging/lib/caustics.d.ts +1 -1
  124. package/staging/lib/center.d.ts +2 -2
  125. package/staging/lib/contact-shadows.d.ts +1 -1
  126. package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
  127. package/staging/lib/environment/inject-environment.d.ts +33 -0
  128. package/staging/lib/lightformer.d.ts +1 -1
  129. package/staging/lib/mask.d.ts +1 -1
  130. package/staging/lib/matcap-texture.d.ts +0 -1
  131. package/staging/lib/normal-texture.d.ts +0 -1
  132. package/staging/lib/render-texture.d.ts +1 -1
  133. package/staging/lib/sky.d.ts +1 -1
  134. package/staging/lib/spot-light.d.ts +2 -2
  135. package/staging/lib/stage.d.ts +7 -6
  136. package/esm2022/staging/lib/environment.mjs +0 -481
@@ -1,6 +1,5 @@
1
- import { afterNextRender, Directive, input, untracked } from '@angular/core';
1
+ import { DestroyRef, Directive, effect, inject, input, untracked } from '@angular/core';
2
2
  import { injectStore } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import * as i0 from "@angular/core";
5
4
  export class NgtsAdaptiveDpr {
6
5
  constructor() {
@@ -11,42 +10,37 @@ export class NgtsAdaptiveDpr {
11
10
  const current = store.select('performance', 'current');
12
11
  const initialDpr = store.select('viewport', 'initialDpr');
13
12
  const setDpr = store.select('setDpr');
14
- const autoEffect = injectAutoEffect();
15
- afterNextRender(() => {
16
- autoEffect(() => {
17
- const domElement = untracked(gl).domElement;
18
- return () => {
19
- const [_active, _setDpr, _initialDpr, pixelated] = [
20
- untracked(active),
21
- untracked(setDpr),
22
- untracked(initialDpr),
23
- untracked(this.pixelated),
24
- ];
25
- if (_active)
26
- _setDpr(_initialDpr);
27
- if (pixelated && domElement)
28
- domElement.style.imageRendering = 'auto';
29
- };
30
- });
31
- autoEffect(() => {
32
- const [_current, pixelated, domElement, _setDpr, _initialDpr] = [
33
- current(),
34
- untracked(this.pixelated),
35
- untracked(gl).domElement,
36
- untracked(setDpr),
37
- untracked(initialDpr),
38
- ];
39
- _setDpr(_current * _initialDpr);
40
- if (pixelated && domElement)
41
- domElement.style.imageRendering = _current === 1 ? 'auto' : 'pixelated';
42
- });
13
+ effect(() => {
14
+ const [_current, pixelated, domElement, _setDpr, _initialDpr] = [
15
+ current(),
16
+ untracked(this.pixelated),
17
+ untracked(gl).domElement,
18
+ untracked(setDpr),
19
+ untracked(initialDpr),
20
+ ];
21
+ _setDpr(_current * _initialDpr);
22
+ if (pixelated && domElement)
23
+ domElement.style.imageRendering = _current === 1 ? 'auto' : 'pixelated';
24
+ });
25
+ inject(DestroyRef).onDestroy(() => {
26
+ const [domElement, _active, _setDpr, _initialDpr, pixelated] = [
27
+ untracked(gl).domElement,
28
+ untracked(active),
29
+ untracked(setDpr),
30
+ untracked(initialDpr),
31
+ untracked(this.pixelated),
32
+ ];
33
+ if (_active)
34
+ _setDpr(_initialDpr);
35
+ if (pixelated && domElement)
36
+ domElement.style.imageRendering = 'auto';
43
37
  });
44
38
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
46
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: { classPropertyName: "pixelated", publicName: "pixelated", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: { classPropertyName: "pixelated", publicName: "pixelated", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
47
41
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
49
43
  type: Directive,
50
44
  args: [{ selector: 'ngts-adaptive-dpr', standalone: true }]
51
45
  }], ctorParameters: () => [] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWRwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxlQUFlO0lBRzNCO1FBRkEsY0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUd4QixNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUV0QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztnQkFDNUMsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxHQUFHO3dCQUNsRCxTQUFTLENBQUMsTUFBTSxDQUFDO3dCQUNqQixTQUFTLENBQUMsTUFBTSxDQUFDO3dCQUNqQixTQUFTLENBQUMsVUFBVSxDQUFDO3dCQUNyQixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztxQkFDekIsQ0FBQztvQkFFRixJQUFJLE9BQU87d0JBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLFNBQVMsSUFBSSxVQUFVO3dCQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztnQkFDdkUsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUc7b0JBQy9ELE9BQU8sRUFBRTtvQkFDVCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDekIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVU7b0JBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUM7aUJBQ3JCLENBQUM7Z0JBRUYsT0FBTyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxTQUFTLElBQUksVUFBVTtvQkFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUN0RyxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0ExQ1csZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSwgaW5wdXQsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1kcHInLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRHByIHtcblx0cGl4ZWxhdGVkID0gaW5wdXQoZmFsc2UpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBnbCA9IHN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0XHRjb25zdCBhY3RpdmUgPSBzdG9yZS5zZWxlY3QoJ2ludGVybmFsJywgJ2FjdGl2ZScpO1xuXHRcdGNvbnN0IGN1cnJlbnQgPSBzdG9yZS5zZWxlY3QoJ3BlcmZvcm1hbmNlJywgJ2N1cnJlbnQnKTtcblx0XHRjb25zdCBpbml0aWFsRHByID0gc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdpbml0aWFsRHByJyk7XG5cdFx0Y29uc3Qgc2V0RHByID0gc3RvcmUuc2VsZWN0KCdzZXREcHInKTtcblxuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGRvbUVsZW1lbnQgPSB1bnRyYWNrZWQoZ2wpLmRvbUVsZW1lbnQ7XG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgW19hY3RpdmUsIF9zZXREcHIsIF9pbml0aWFsRHByLCBwaXhlbGF0ZWRdID0gW1xuXHRcdFx0XHRcdFx0dW50cmFja2VkKGFjdGl2ZSksXG5cdFx0XHRcdFx0XHR1bnRyYWNrZWQoc2V0RHByKSxcblx0XHRcdFx0XHRcdHVudHJhY2tlZChpbml0aWFsRHByKSxcblx0XHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLnBpeGVsYXRlZCksXG5cdFx0XHRcdFx0XTtcblxuXHRcdFx0XHRcdGlmIChfYWN0aXZlKSBfc2V0RHByKF9pbml0aWFsRHByKTtcblx0XHRcdFx0XHRpZiAocGl4ZWxhdGVkICYmIGRvbUVsZW1lbnQpIGRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSAnYXV0byc7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblxuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtfY3VycmVudCwgcGl4ZWxhdGVkLCBkb21FbGVtZW50LCBfc2V0RHByLCBfaW5pdGlhbERwcl0gPSBbXG5cdFx0XHRcdFx0Y3VycmVudCgpLFxuXHRcdFx0XHRcdHVudHJhY2tlZCh0aGlzLnBpeGVsYXRlZCksXG5cdFx0XHRcdFx0dW50cmFja2VkKGdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHRcdHVudHJhY2tlZChzZXREcHIpLFxuXHRcdFx0XHRcdHVudHJhY2tlZChpbml0aWFsRHByKSxcblx0XHRcdFx0XTtcblxuXHRcdFx0XHRfc2V0RHByKF9jdXJyZW50ICogX2luaXRpYWxEcHIpO1xuXHRcdFx0XHRpZiAocGl4ZWxhdGVkICYmIGRvbUVsZW1lbnQpIGRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSBfY3VycmVudCA9PT0gMSA/ICdhdXRvJyA6ICdwaXhlbGF0ZWQnO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWRwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLGVBQWU7SUFHM0I7UUFGQSxjQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBR3hCLE1BQU0sS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRztnQkFDL0QsT0FBTyxFQUFFO2dCQUNULFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUN6QixTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVTtnQkFDeEIsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDakIsU0FBUyxDQUFDLFVBQVUsQ0FBQzthQUNyQixDQUFDO1lBRUYsT0FBTyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUNoQyxJQUFJLFNBQVMsSUFBSSxVQUFVO2dCQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3RHLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRztnQkFDOUQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVU7Z0JBQ3hCLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ3pCLENBQUM7WUFFRixJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksU0FBUyxJQUFJLFVBQVU7Z0JBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FwQ1csZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RzLWFkYXB0aXZlLWRwcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWRhcHRpdmVEcHIge1xuXHRwaXhlbGF0ZWQgPSBpbnB1dChmYWxzZSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IGdsID0gc3RvcmUuc2VsZWN0KCdnbCcpO1xuXHRcdGNvbnN0IGFjdGl2ZSA9IHN0b3JlLnNlbGVjdCgnaW50ZXJuYWwnLCAnYWN0aXZlJyk7XG5cdFx0Y29uc3QgY3VycmVudCA9IHN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpO1xuXHRcdGNvbnN0IGluaXRpYWxEcHIgPSBzdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0JywgJ2luaXRpYWxEcHInKTtcblx0XHRjb25zdCBzZXREcHIgPSBzdG9yZS5zZWxlY3QoJ3NldERwcicpO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtfY3VycmVudCwgcGl4ZWxhdGVkLCBkb21FbGVtZW50LCBfc2V0RHByLCBfaW5pdGlhbERwcl0gPSBbXG5cdFx0XHRcdGN1cnJlbnQoKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMucGl4ZWxhdGVkKSxcblx0XHRcdFx0dW50cmFja2VkKGdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQoc2V0RHByKSxcblx0XHRcdFx0dW50cmFja2VkKGluaXRpYWxEcHIpLFxuXHRcdFx0XTtcblxuXHRcdFx0X3NldERwcihfY3VycmVudCAqIF9pbml0aWFsRHByKTtcblx0XHRcdGlmIChwaXhlbGF0ZWQgJiYgZG9tRWxlbWVudCkgZG9tRWxlbWVudC5zdHlsZS5pbWFnZVJlbmRlcmluZyA9IF9jdXJyZW50ID09PSAxID8gJ2F1dG8nIDogJ3BpeGVsYXRlZCc7XG5cdFx0fSk7XG5cblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcblx0XHRcdGNvbnN0IFtkb21FbGVtZW50LCBfYWN0aXZlLCBfc2V0RHByLCBfaW5pdGlhbERwciwgcGl4ZWxhdGVkXSA9IFtcblx0XHRcdFx0dW50cmFja2VkKGdsKS5kb21FbGVtZW50LFxuXHRcdFx0XHR1bnRyYWNrZWQoYWN0aXZlKSxcblx0XHRcdFx0dW50cmFja2VkKHNldERwciksXG5cdFx0XHRcdHVudHJhY2tlZChpbml0aWFsRHByKSxcblx0XHRcdFx0dW50cmFja2VkKHRoaXMucGl4ZWxhdGVkKSxcblx0XHRcdF07XG5cblx0XHRcdGlmIChfYWN0aXZlKSBfc2V0RHByKF9pbml0aWFsRHByKTtcblx0XHRcdGlmIChwaXhlbGF0ZWQgJiYgZG9tRWxlbWVudCkgZG9tRWxlbWVudC5zdHlsZS5pbWFnZVJlbmRlcmluZyA9ICdhdXRvJztcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,28 +1,24 @@
1
- import { afterNextRender, Directive } from '@angular/core';
1
+ import { DestroyRef, Directive, effect, inject } from '@angular/core';
2
2
  import { injectStore } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import * as i0 from "@angular/core";
5
4
  export class NgtsAdaptiveEvents {
6
5
  constructor() {
7
- const autoEffect = injectAutoEffect();
8
6
  const store = injectStore();
9
7
  const current = store.select('performance', 'current');
10
- afterNextRender(() => {
11
- autoEffect(() => {
12
- const enabled = store.snapshot.events.enabled;
13
- return () => store.snapshot.setEvents({ enabled });
14
- });
15
- autoEffect(() => {
16
- const _current = current();
17
- return () => store.snapshot.setEvents({ enabled: _current === 1 });
18
- });
8
+ const currentEnabled = store.snapshot.events.enabled;
9
+ effect((onCleanup) => {
10
+ const _current = current();
11
+ onCleanup(() => store.snapshot.setEvents({ enabled: _current === 1 }));
12
+ });
13
+ inject(DestroyRef).onDestroy(() => {
14
+ store.snapshot.setEvents({ enabled: currentEnabled });
19
15
  });
20
16
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
22
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
23
19
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
25
21
  type: Directive,
26
22
  args: [{ standalone: true, selector: 'ngts-adaptive-events' }]
27
23
  }], ctorParameters: () => [] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUcxRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzlCO1FBQ0MsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV2RCxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUM5QyxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBakJXLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1ldmVudHMnIH0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRXZlbnRzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblx0XHRjb25zdCBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdFx0Y29uc3QgY3VycmVudCA9IHN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBlbmFibGVkID0gc3RvcmUuc25hcHNob3QuZXZlbnRzLmVuYWJsZWQ7XG5cdFx0XHRcdHJldHVybiAoKSA9PiBzdG9yZS5zbmFwc2hvdC5zZXRFdmVudHMoeyBlbmFibGVkIH0pO1xuXHRcdFx0fSk7XG5cblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBfY3VycmVudCA9IGN1cnJlbnQoKTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHN0b3JlLnNuYXBzaG90LnNldEV2ZW50cyh7IGVuYWJsZWQ6IF9jdXJyZW50ID09PSAxIH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2FkYXB0aXZlLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzVDLE1BQU0sT0FBTyxrQkFBa0I7SUFDOUI7UUFDQyxNQUFNLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFFckQsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FkVyxrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsU0FBUzttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1ldmVudHMnIH0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRXZlbnRzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3Qgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IGN1cnJlbnQgPSBzdG9yZS5zZWxlY3QoJ3BlcmZvcm1hbmNlJywgJ2N1cnJlbnQnKTtcblx0XHRjb25zdCBjdXJyZW50RW5hYmxlZCA9IHN0b3JlLnNuYXBzaG90LmV2ZW50cy5lbmFibGVkO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IF9jdXJyZW50ID0gY3VycmVudCgpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IHN0b3JlLnNuYXBzaG90LnNldEV2ZW50cyh7IGVuYWJsZWQ6IF9jdXJyZW50ID09PSAxIH0pKTtcblx0XHR9KTtcblxuXHRcdGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuXHRcdFx0c3RvcmUuc25hcHNob3Quc2V0RXZlbnRzKHsgZW5hYmxlZDogY3VycmVudEVuYWJsZWQgfSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,6 +1,5 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
2
2
  import { extend, getLocalState, injectBeforeRender, omit, pick } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import { mergeInputs } from 'ngxtension/inject-inputs';
5
4
  import { LOD } from 'three';
6
5
  import * as i0 from "@angular/core";
@@ -15,32 +14,29 @@ export class NgtsDetailed {
15
14
  this.lodRef = viewChild.required('lod');
16
15
  this.hysteresis = pick(this.options, 'hysteresis');
17
16
  extend({ LOD });
18
- const autoEffect = injectAutoEffect();
19
- afterNextRender(() => {
20
- autoEffect(() => {
21
- const lod = this.lodRef().nativeElement;
22
- const localState = getLocalState(lod);
23
- if (!localState)
24
- return;
25
- const [, distances, hysteresis] = [localState.objects(), this.distances(), this.hysteresis()];
26
- lod.levels.length = 0;
27
- lod.children.forEach((object, index) => {
28
- lod.levels.push({ object, distance: distances[index], hysteresis });
29
- });
17
+ effect(() => {
18
+ const lod = this.lodRef().nativeElement;
19
+ const localState = getLocalState(lod);
20
+ if (!localState)
21
+ return;
22
+ const [, distances, hysteresis] = [localState.objects(), this.distances(), this.hysteresis()];
23
+ lod.levels.length = 0;
24
+ lod.children.forEach((object, index) => {
25
+ lod.levels.push({ object, distance: distances[index], hysteresis });
30
26
  });
31
27
  });
32
28
  injectBeforeRender(({ camera }) => {
33
29
  this.lodRef().nativeElement.update(camera);
34
30
  });
35
31
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDetailed, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed", inputs: { distances: { classPropertyName: "distances", publicName: "distances", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lodRef", first: true, predicate: ["lod"], descendants: true, isSignal: true }], ngImport: i0, template: `
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsDetailed, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed", inputs: { distances: { classPropertyName: "distances", publicName: "distances", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "lodRef", first: true, predicate: ["lod"], descendants: true, isSignal: true }], ngImport: i0, template: `
38
34
  <ngt-lOD #lod [parameters]="parameters()">
39
35
  <ng-content />
40
36
  </ngt-lOD>
41
37
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
38
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsDetailed, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsDetailed, decorators: [{
44
40
  type: Component,
45
41
  args: [{
46
42
  selector: 'ngts-detailed',
@@ -54,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
54
50
  changeDetection: ChangeDetectionStrategy.OnPush,
55
51
  }]
56
52
  }], ctorParameters: () => [] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9saWIvZGV0YWlsZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixFQUV0QixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBTTVCLE1BQU0sY0FBYyxHQUF3QjtJQUMzQyxVQUFVLEVBQUUsQ0FBQztDQUNiLENBQUM7QUFhRixNQUFNLE9BQU8sWUFBWTtJQVF4QjtRQVBBLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDdkMsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRWhELFdBQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFrQixLQUFLLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFHckQsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVoQixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXRDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxVQUFVO29CQUFFLE9BQU87Z0JBQ3hCLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzlGLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQTdCVyxZQUFZO2tHQUFaLFlBQVkscWNBUmQ7Ozs7RUFJVDs7MkZBSVcsWUFBWTtrQkFYeEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztFQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndExPRCwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgTE9EIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndExPRD4ge1xuXHRoeXN0ZXJlc2lzOiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzRGV0YWlsZWRPcHRpb25zID0ge1xuXHRoeXN0ZXJlc2lzOiAwLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1kZXRhaWxlZCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1sT0QgI2xvZCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtbE9EPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzRGV0YWlsZWQge1xuXHRkaXN0YW5jZXMgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXJbXT4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnaHlzdGVyZXNpcyddKTtcblxuXHRsb2RSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxMT0Q+PignbG9kJyk7XG5cdHByaXZhdGUgaHlzdGVyZXNpcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnaHlzdGVyZXNpcycpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IExPRCB9KTtcblxuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGxvZCA9IHRoaXMubG9kUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobG9kKTtcblx0XHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cdFx0XHRcdGNvbnN0IFssIGRpc3RhbmNlcywgaHlzdGVyZXNpc10gPSBbbG9jYWxTdGF0ZS5vYmplY3RzKCksIHRoaXMuZGlzdGFuY2VzKCksIHRoaXMuaHlzdGVyZXNpcygpXTtcblx0XHRcdFx0bG9kLmxldmVscy5sZW5ndGggPSAwO1xuXHRcdFx0XHRsb2QuY2hpbGRyZW4uZm9yRWFjaCgob2JqZWN0LCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdGxvZC5sZXZlbHMucHVzaCh7IG9iamVjdCwgZGlzdGFuY2U6IGRpc3RhbmNlc1tpbmRleF0sIGh5c3RlcmVzaXMgfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgY2FtZXJhIH0pID0+IHtcblx0XHRcdHRoaXMubG9kUmVmKCkubmF0aXZlRWxlbWVudC51cGRhdGUoY2FtZXJhKTtcblx0XHR9KTtcblx0fVxufVxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9saWIvZGV0YWlsZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBTTVCLE1BQU0sY0FBYyxHQUF3QjtJQUMzQyxVQUFVLEVBQUUsQ0FBQztDQUNiLENBQUM7QUFhRixNQUFNLE9BQU8sWUFBWTtJQVF4QjtRQVBBLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDdkMsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRWhELFdBQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFrQixLQUFLLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFHckQsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVoQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBekJXLFlBQVk7a0dBQVosWUFBWSxxY0FSZDs7OztFQUlUOzsyRkFJVyxZQUFZO2tCQVh4QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIGluamVjdEJlZm9yZVJlbmRlciwgTmd0TE9ELCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBMT0QgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0RldGFpbGVkT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0TE9EPiB7XG5cdGh5c3RlcmVzaXM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNEZXRhaWxlZE9wdGlvbnMgPSB7XG5cdGh5c3RlcmVzaXM6IDAsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWRldGFpbGVkJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWxPRCAjbG9kIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1sT0Q+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNEZXRhaWxlZCB7XG5cdGRpc3RhbmNlcyA9IGlucHV0LnJlcXVpcmVkPG51bWJlcltdPigpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydoeXN0ZXJlc2lzJ10pO1xuXG5cdGxvZFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPExPRD4+KCdsb2QnKTtcblx0cHJpdmF0ZSBoeXN0ZXJlc2lzID0gcGljayh0aGlzLm9wdGlvbnMsICdoeXN0ZXJlc2lzJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTE9EIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGxvZCA9IHRoaXMubG9kUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGxvZCk7XG5cdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblx0XHRcdGNvbnN0IFssIGRpc3RhbmNlcywgaHlzdGVyZXNpc10gPSBbbG9jYWxTdGF0ZS5vYmplY3RzKCksIHRoaXMuZGlzdGFuY2VzKCksIHRoaXMuaHlzdGVyZXNpcygpXTtcblx0XHRcdGxvZC5sZXZlbHMubGVuZ3RoID0gMDtcblx0XHRcdGxvZC5jaGlsZHJlbi5mb3JFYWNoKChvYmplY3QsIGluZGV4KSA9PiB7XG5cdFx0XHRcdGxvZC5sZXZlbHMucHVzaCh7IG9iamVjdCwgZGlzdGFuY2U6IGRpc3RhbmNlc1tpbmRleF0sIGh5c3RlcmVzaXMgfSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjYW1lcmEgfSkgPT4ge1xuXHRcdFx0dGhpcy5sb2RSZWYoKS5uYXRpdmVFbGVtZW50LnVwZGF0ZShjYW1lcmEpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, viewChild, } from '@angular/core';
2
2
  import { checkUpdate, extend, injectBeforeRender, NgtArgs, omit, pick, resolveRef, } from 'angular-three';
3
3
  import { setUpdateRange } from 'angular-three-soba/misc';
4
- import { injectAutoEffect } from 'ngxtension/auto-effect';
5
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
5
  import { DynamicDrawUsage, InstancedBufferAttribute, InstancedMesh, Matrix4, Quaternion, Vector3 } from 'three';
7
6
  import { PositionMesh } from './position-mesh';
@@ -18,21 +17,19 @@ export class NgtsInstance {
18
17
  this.instances = inject(NgtsInstances);
19
18
  this.positionMeshRef = viewChild.required('positionMesh');
20
19
  extend({ PositionMesh });
21
- const autoEffect = injectAutoEffect();
22
- afterNextRender(() => {
23
- autoEffect(() => {
24
- return this.instances.subscribe(this.positionMeshRef().nativeElement);
25
- });
20
+ effect((onCleanup) => {
21
+ const cleanup = this.instances.subscribe(this.positionMeshRef().nativeElement);
22
+ onCleanup(() => cleanup());
26
23
  });
27
24
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionMeshRef", first: true, predicate: ["positionMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionMeshRef", first: true, predicate: ["positionMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
30
27
  <ngt-position-mesh #positionMesh [instance]="instances.instancedMeshRef()" [parameters]="options()">
31
28
  <ng-content />
32
29
  </ngt-position-mesh>
33
30
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
31
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstance, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstance, decorators: [{
36
33
  type: Component,
37
34
  args: [{
38
35
  selector: 'ngts-instance',
@@ -68,14 +65,11 @@ export class NgtsInstances {
68
65
  });
69
66
  this.instances = [];
70
67
  extend({ InstancedMesh, InstancedBufferAttribute });
71
- const autoEffect = injectAutoEffect();
72
- afterNextRender(() => {
73
- autoEffect(() => {
74
- const instancedMesh = this.instancedMeshRef()?.nativeElement;
75
- if (!instancedMesh)
76
- return;
77
- checkUpdate(instancedMesh.instanceMatrix);
78
- });
68
+ effect(() => {
69
+ const instancedMesh = this.instancedMeshRef()?.nativeElement;
70
+ if (!instancedMesh)
71
+ return;
72
+ checkUpdate(instancedMesh.instanceMatrix);
79
73
  });
80
74
  let iterations = 0;
81
75
  let count = 0;
@@ -118,8 +112,8 @@ export class NgtsInstances {
118
112
  this.instances = this.instances.filter((i) => i !== ref);
119
113
  };
120
114
  }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "instancedMeshRef", first: true, predicate: ["instancedMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "instancedMeshRef", first: true, predicate: ["instancedMesh"], descendants: true, isSignal: true }], ngImport: i0, template: `
123
117
  <ngt-instanced-mesh
124
118
  #instancedMesh
125
119
  [userData]="{ instances }"
@@ -145,7 +139,7 @@ export class NgtsInstances {
145
139
  </ngt-instanced-mesh>
146
140
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
147
141
  }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsInstances, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsInstances, decorators: [{
149
143
  type: Component,
150
144
  args: [{
151
145
  selector: 'ngts-instances',
@@ -180,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
180
174
  imports: [NgtArgs],
181
175
  }]
182
176
  }], ctorParameters: () => [] });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2luc3RhbmNlcy9pbnN0YW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFFdEIsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLFdBQVcsRUFDWCxNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLE9BQU8sRUFFUCxJQUFJLEVBQ0osSUFBSSxFQUNKLFVBQVUsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEgsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7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QUcsQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztJQUNILENBQUM7OEdBaEZXLGFBQWE7a0dBQWIsYUFBYSx1VkE3QmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdCVDs7MkZBS1csYUFBYTtrQkFoQ3pCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBd0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRjaGVja1VwZGF0ZSxcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdE5ndEFyZ3MsXG5cdE5ndEluc3RhbmNlZE1lc2gsXG5cdG9taXQsXG5cdHBpY2ssXG5cdHJlc29sdmVSZWYsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgc2V0VXBkYXRlUmFuZ2UgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvbWlzYyc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBEeW5hbWljRHJhd1VzYWdlLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUsIEluc3RhbmNlZE1lc2gsIE1hdHJpeDQsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RQb3NpdGlvbk1lc2gsIFBvc2l0aW9uTWVzaCB9IGZyb20gJy4vcG9zaXRpb24tbWVzaCc7XG5cbmNvbnN0IHBhcmVudE1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBpbnN0YW5jZU1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCB0ZW1wTWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IHRyYW5zbGF0aW9uID0gbmV3IFZlY3RvcjMoKTtcbmNvbnN0IHJvdGF0aW9uID0gbmV3IFF1YXRlcm5pb24oKTtcbmNvbnN0IHNjYWxlID0gbmV3IFZlY3RvcjMoKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1pbnN0YW5jZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3NpdGlvbi1tZXNoICNwb3NpdGlvbk1lc2ggW2luc3RhbmNlXT1cImluc3RhbmNlcy5pbnN0YW5jZWRNZXNoUmVmKClcIiBbcGFyYW1ldGVyc109XCJvcHRpb25zKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9zaXRpb24tbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0luc3RhbmNlIHtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIFBhcnRpYWw8Tmd0UG9zaXRpb25NZXNoPik7XG5cblx0aW5zdGFuY2VzID0gaW5qZWN0KE5ndHNJbnN0YW5jZXMpO1xuXG5cdHBvc2l0aW9uTWVzaFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBvc2l0aW9uTWVzaD4+KCdwb3NpdGlvbk1lc2gnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBQb3NpdGlvbk1lc2ggfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5pbnN0YW5jZXMuc3Vic2NyaWJlKHRoaXMucG9zaXRpb25NZXNoUmVmKCkubmF0aXZlRWxlbWVudCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNJbnN0YW5jZXNPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RJbnN0YW5jZWRNZXNoPiB7XG5cdHJhbmdlPzogbnVtYmVyO1xuXHRsaW1pdDogbnVtYmVyO1xuXHRmcmFtZXM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNJbnN0YW5jZXNPcHRpb25zID0ge1xuXHRsaW1pdDogMTAwMCxcblx0ZnJhbWVzOiBJbmZpbml0eSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2VzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWluc3RhbmNlZC1tZXNoXG5cdFx0XHQjaW5zdGFuY2VkTWVzaFxuXHRcdFx0W3VzZXJEYXRhXT1cInsgaW5zdGFuY2VzIH1cIlxuXHRcdFx0W21hdHJpeEF1dG9VcGRhdGVdPVwiZmFsc2VcIlxuXHRcdFx0W3JheWNhc3RdPVwibnVsbFwiXG5cdFx0XHRbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIlxuXHRcdD5cblx0XHRcdDxuZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0YXR0YWNoPVwiaW5zdGFuY2VNYXRyaXhcIlxuXHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkubWF0cmljZXMubGVuZ3RoIC8gMTZcIlxuXHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLm1hdHJpY2VzXCJcblx0XHRcdFx0W2l0ZW1TaXplXT1cIjE2XCJcblx0XHRcdC8+XG5cdFx0XHQ8bmd0LWluc3RhbmNlZC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdGF0dGFjaD1cImluc3RhbmNlQ29sb3JcIlxuXHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkuY29sb3JzLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLmNvbG9yc1wiXG5cdFx0XHRcdFtpdGVtU2l6ZV09XCIzXCJcblx0XHRcdC8+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWluc3RhbmNlZC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZXMge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgRHluYW1pY0RyYXdVc2FnZSA9IER5bmFtaWNEcmF3VXNhZ2U7XG5cblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnbGltaXQnLCAnZnJhbWVzJywgJ3JhbmdlJ10pO1xuXG5cdGluc3RhbmNlZE1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxJbnN0YW5jZWRNZXNoPj4oJ2luc3RhbmNlZE1lc2gnKTtcblxuXHRsaW1pdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGltaXQnKTtcblxuXHRidWZmZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXHRcdGNvbnN0IG1hdHJpY2VzID0gbmV3IEZsb2F0MzJBcnJheShsaW1pdCAqIDE2KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuXHRcdFx0dGVtcE1hdHJpeC5pZGVudGl0eSgpLnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29sb3JzID0gbmV3IEZsb2F0MzJBcnJheShbLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiAzIH0sICgpID0+IDEpXSk7XG5cdFx0cmV0dXJuIHsgbWF0cmljZXMsIGNvbG9ycyB9O1xuXHR9KTtcblxuXHRpbnN0YW5jZXM6IEFycmF5PEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPiB8IFBvc2l0aW9uTWVzaD4gPSBbXTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBJbnN0YW5jZWRNZXNoLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBpbnN0YW5jZWRNZXNoID0gdGhpcy5pbnN0YW5jZWRNZXNoUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0bGV0IGl0ZXJhdGlvbnMgPSAwO1xuXHRcdGxldCBjb3VudCA9IDA7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2VkTWVzaCA9IHRoaXMuaW5zdGFuY2VkTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFpbnN0YW5jZWRNZXNoKSByZXR1cm47XG5cdFx0XHRjb25zdCB7IGZyYW1lcywgbGltaXQsIHJhbmdlIH0gPSB0aGlzLm9wdGlvbnMoKTtcblx0XHRcdGNvbnN0IHsgbWF0cmljZXMsIGNvbG9ycyB9ID0gdGhpcy5idWZmZXJzKCk7XG5cdFx0XHRpZiAoZnJhbWVzID09PSBJbmZpbml0eSB8fCBpdGVyYXRpb25zIDwgZnJhbWVzKSB7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2gudXBkYXRlTWF0cml4KCk7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2gudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0cGFyZW50TWF0cml4LmNvcHkoaW5zdGFuY2VkTWVzaC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7XG5cblx0XHRcdFx0Y291bnQgPSBNYXRoLm1pbihsaW1pdCwgcmFuZ2UgIT09IHVuZGVmaW5lZCA/IHJhbmdlIDogbGltaXQsIHRoaXMuaW5zdGFuY2VzLmxlbmd0aCk7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2guY291bnQgPSBjb3VudDtcblx0XHRcdFx0c2V0VXBkYXRlUmFuZ2UoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeCwgeyBvZmZzZXQ6IDAsIGNvdW50OiBjb3VudCAqIDE2IH0pO1xuXHRcdFx0XHRpZiAoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZUNvbG9yKSB7XG5cdFx0XHRcdFx0c2V0VXBkYXRlUmFuZ2UoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZUNvbG9yLCB7IG9mZnNldDogMCwgY291bnQ6IGNvdW50ICogMyB9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRjb25zdCBpbnN0YW5jZSA9IHJlc29sdmVSZWYodGhpcy5pbnN0YW5jZXNbaV0pO1xuXHRcdFx0XHRcdGlmIChpbnN0YW5jZSkge1xuXHRcdFx0XHRcdFx0Ly8gTXVsdGlwbHkgdGhlIGludmVyc2Ugb2YgdGhlIEluc3RhbmNlZE1lc2ggd29ybGQgbWF0cml4IG9yIGVsc2Vcblx0XHRcdFx0XHRcdC8vIEluc3RhbmNlcyB3aWxsIGJlIGRvdWJsZS10cmFuc2Zvcm1lZCBpZiA8SW5zdGFuY2VzPiBpc24ndCBhdCBpZGVudGl0eVxuXHRcdFx0XHRcdFx0aW5zdGFuY2UubWF0cml4V29ybGQuZGVjb21wb3NlKHRyYW5zbGF0aW9uLCByb3RhdGlvbiwgc2NhbGUpO1xuXHRcdFx0XHRcdFx0aW5zdGFuY2VNYXRyaXguY29tcG9zZSh0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlKS5wcmVtdWx0aXBseShwYXJlbnRNYXRyaXgpO1xuXHRcdFx0XHRcdFx0aW5zdGFuY2VNYXRyaXgudG9BcnJheShtYXRyaWNlcywgaSAqIDE2KTtcblx0XHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgpO1xuXHRcdFx0XHRcdFx0aW5zdGFuY2UuY29sb3IudG9BcnJheShjb2xvcnMsIGkgKiAzKTtcblx0XHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGl0ZXJhdGlvbnMrKztcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHN1YnNjcmliZShyZWY6IEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPiB8IFBvc2l0aW9uTWVzaCkge1xuXHRcdHRoaXMuaW5zdGFuY2VzLnB1c2gocmVmKTtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0dGhpcy5pbnN0YW5jZXMgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoKGkpID0+IGkgIT09IHJlZik7XG5cdFx0fTtcblx0fVxufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL2luc3RhbmNlcy9pbnN0YW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLFdBQVcsRUFDWCxNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLE9BQU8sRUFFUCxJQUFJLEVBQ0osSUFBSSxFQUNKLFVBQVUsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEgsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFhNUIsTUFBTSxPQUFPLFlBQVk7SUFPeEI7UUFOQSxZQUFPLEdBQUcsS0FB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QUFDLENBQUM7SUFDSCxDQUFDOzhHQTVFVyxhQUFhO2tHQUFiLGFBQWEsdVZBN0JmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF3QlQ7OzJGQUtXLGFBQWE7a0JBaEN6QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Y2hlY2tVcGRhdGUsXG5cdGV4dGVuZCxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHROZ3RBcmdzLFxuXHROZ3RJbnN0YW5jZWRNZXNoLFxuXHRvbWl0LFxuXHRwaWNrLFxuXHRyZXNvbHZlUmVmLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IHNldFVwZGF0ZVJhbmdlIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgRHluYW1pY0RyYXdVc2FnZSwgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlLCBJbnN0YW5jZWRNZXNoLCBNYXRyaXg0LCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0UG9zaXRpb25NZXNoLCBQb3NpdGlvbk1lc2ggfSBmcm9tICcuL3Bvc2l0aW9uLW1lc2gnO1xuXG5jb25zdCBwYXJlbnRNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgaW5zdGFuY2VNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgdGVtcE1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCB0cmFuc2xhdGlvbiA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCByb3RhdGlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XG5jb25zdCBzY2FsZSA9IG5ldyBWZWN0b3IzKCk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2UnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcG9zaXRpb24tbWVzaCAjcG9zaXRpb25NZXNoIFtpbnN0YW5jZV09XCJpbnN0YW5jZXMuaW5zdGFuY2VkTWVzaFJlZigpXCIgW3BhcmFtZXRlcnNdPVwib3B0aW9ucygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXBvc2l0aW9uLW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZSB7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBQYXJ0aWFsPE5ndFBvc2l0aW9uTWVzaD4pO1xuXG5cdGluc3RhbmNlcyA9IGluamVjdChOZ3RzSW5zdGFuY2VzKTtcblxuXHRwb3NpdGlvbk1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxQb3NpdGlvbk1lc2g+PigncG9zaXRpb25NZXNoJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgUG9zaXRpb25NZXNoIH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLmluc3RhbmNlcy5zdWJzY3JpYmUodGhpcy5wb3NpdGlvbk1lc2hSZWYoKS5uYXRpdmVFbGVtZW50KTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwKCkpO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0luc3RhbmNlc09wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndEluc3RhbmNlZE1lc2g+IHtcblx0cmFuZ2U/OiBudW1iZXI7XG5cdGxpbWl0OiBudW1iZXI7XG5cdGZyYW1lczogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0luc3RhbmNlc09wdGlvbnMgPSB7XG5cdGxpbWl0OiAxMDAwLFxuXHRmcmFtZXM6IEluZmluaXR5LFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1pbnN0YW5jZXMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtaW5zdGFuY2VkLW1lc2hcblx0XHRcdCNpbnN0YW5jZWRNZXNoXG5cdFx0XHRbdXNlckRhdGFdPVwieyBpbnN0YW5jZXMgfVwiXG5cdFx0XHRbbWF0cml4QXV0b1VwZGF0ZV09XCJmYWxzZVwiXG5cdFx0XHRbcmF5Y2FzdF09XCJudWxsXCJcblx0XHRcdFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiXG5cdFx0PlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRhdHRhY2g9XCJpbnN0YW5jZU1hdHJpeFwiXG5cdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0W2NvdW50XT1cImJ1ZmZlcnMoKS5tYXRyaWNlcy5sZW5ndGggLyAxNlwiXG5cdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkubWF0cmljZXNcIlxuXHRcdFx0XHRbaXRlbVNpemVdPVwiMTZcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0YXR0YWNoPVwiaW5zdGFuY2VDb2xvclwiXG5cdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0W2NvdW50XT1cImJ1ZmZlcnMoKS5jb2xvcnMubGVuZ3RoIC8gM1wiXG5cdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkuY29sb3JzXCJcblx0XHRcdFx0W2l0ZW1TaXplXT1cIjNcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtaW5zdGFuY2VkLW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0luc3RhbmNlcyB7XG5cdHByb3RlY3RlZCByZWFkb25seSBEeW5hbWljRHJhd1VzYWdlID0gRHluYW1pY0RyYXdVc2FnZTtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHByb3RlY3RlZCBwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnbGltaXQnLCAnZnJhbWVzJywgJ3JhbmdlJ10pO1xuXG5cdGluc3RhbmNlZE1lc2hSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxJbnN0YW5jZWRNZXNoPj4oJ2luc3RhbmNlZE1lc2gnKTtcblxuXHRwcml2YXRlIGxpbWl0ID0gcGljayh0aGlzLm9wdGlvbnMsICdsaW1pdCcpO1xuXG5cdHByb3RlY3RlZCBidWZmZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXHRcdGNvbnN0IG1hdHJpY2VzID0gbmV3IEZsb2F0MzJBcnJheShsaW1pdCAqIDE2KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuXHRcdFx0dGVtcE1hdHJpeC5pZGVudGl0eSgpLnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29sb3JzID0gbmV3IEZsb2F0MzJBcnJheShbLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiAzIH0sICgpID0+IDEpXSk7XG5cdFx0cmV0dXJuIHsgbWF0cmljZXMsIGNvbG9ycyB9O1xuXHR9KTtcblxuXHRpbnN0YW5jZXM6IEFycmF5PEVsZW1lbnRSZWY8UG9zaXRpb25NZXNoPiB8IFBvc2l0aW9uTWVzaD4gPSBbXTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBJbnN0YW5jZWRNZXNoLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2VkTWVzaCA9IHRoaXMuaW5zdGFuY2VkTWVzaFJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFpbnN0YW5jZWRNZXNoKSByZXR1cm47XG5cdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4KTtcblx0XHR9KTtcblxuXHRcdGxldCBpdGVyYXRpb25zID0gMDtcblx0XHRsZXQgY291bnQgPSAwO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IGluc3RhbmNlZE1lc2ggPSB0aGlzLmluc3RhbmNlZE1lc2hSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0Y29uc3QgeyBmcmFtZXMsIGxpbWl0LCByYW5nZSB9ID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0XHRjb25zdCB7IG1hdHJpY2VzLCBjb2xvcnMgfSA9IHRoaXMuYnVmZmVycygpO1xuXHRcdFx0aWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgaXRlcmF0aW9ucyA8IGZyYW1lcykge1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLnVwZGF0ZU1hdHJpeCgpO1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0XHRcdHBhcmVudE1hdHJpeC5jb3B5KGluc3RhbmNlZE1lc2gubWF0cml4V29ybGQpLmludmVydCgpO1xuXG5cdFx0XHRcdGNvdW50ID0gTWF0aC5taW4obGltaXQsIHJhbmdlICE9PSB1bmRlZmluZWQgPyByYW5nZSA6IGxpbWl0LCB0aGlzLmluc3RhbmNlcy5sZW5ndGgpO1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLmNvdW50ID0gY291bnQ7XG5cdFx0XHRcdHNldFVwZGF0ZVJhbmdlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgsIHsgb2Zmc2V0OiAwLCBjb3VudDogY291bnQgKiAxNiB9KTtcblx0XHRcdFx0aWYgKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvcikge1xuXHRcdFx0XHRcdHNldFVwZGF0ZVJhbmdlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvciwgeyBvZmZzZXQ6IDAsIGNvdW50OiBjb3VudCAqIDMgfSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSByZXNvbHZlUmVmKHRoaXMuaW5zdGFuY2VzW2ldKTtcblx0XHRcdFx0XHRpZiAoaW5zdGFuY2UpIHtcblx0XHRcdFx0XHRcdC8vIE11bHRpcGx5IHRoZSBpbnZlcnNlIG9mIHRoZSBJbnN0YW5jZWRNZXNoIHdvcmxkIG1hdHJpeCBvciBlbHNlXG5cdFx0XHRcdFx0XHQvLyBJbnN0YW5jZXMgd2lsbCBiZSBkb3VibGUtdHJhbnNmb3JtZWQgaWYgPEluc3RhbmNlcz4gaXNuJ3QgYXQgaWRlbnRpdHlcblx0XHRcdFx0XHRcdGluc3RhbmNlLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlKTtcblx0XHRcdFx0XHRcdGluc3RhbmNlTWF0cml4LmNvbXBvc2UodHJhbnNsYXRpb24sIHJvdGF0aW9uLCBzY2FsZSkucHJlbXVsdGlwbHkocGFyZW50TWF0cml4KTtcblx0XHRcdFx0XHRcdGluc3RhbmNlTWF0cml4LnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0XHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4KTtcblx0XHRcdFx0XHRcdGluc3RhbmNlLmNvbG9yLnRvQXJyYXkoY29sb3JzLCBpICogMyk7XG5cdFx0XHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlQ29sb3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpdGVyYXRpb25zKys7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRzdWJzY3JpYmUocmVmOiBFbGVtZW50UmVmPFBvc2l0aW9uTWVzaD4gfCBQb3NpdGlvbk1lc2gpIHtcblx0XHR0aGlzLmluc3RhbmNlcy5wdXNoKHJlZik7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMuaW5zdGFuY2VzID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKChpKSA9PiBpICE9PSByZWYpO1xuXHRcdH07XG5cdH1cbn1cbiJdfQ==
@@ -1,6 +1,5 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, inject, input, viewChild, } from '@angular/core';
2
2
  import { checkUpdate, extend, injectBeforeRender, omit, pick, resolveRef } from 'angular-three';
3
- import { injectAutoEffect } from 'ngxtension/auto-effect';
4
3
  import { mergeInputs } from 'ngxtension/inject-inputs';
5
4
  import { BufferAttribute, BufferGeometry, DynamicDrawUsage, Matrix4, Points, Vector3 } from 'three';
6
5
  import { PositionPoint } from './position-point';
@@ -11,21 +10,19 @@ export class NgtsPoint {
11
10
  this.positionPointRef = viewChild.required('positionPoint');
12
11
  this.points = inject(NgtsPointsInstances);
13
12
  extend({ PositionPoint });
14
- const autoEffect = injectAutoEffect();
15
- afterNextRender(() => {
16
- autoEffect(() => {
17
- return this.points.subscribe(this.positionPointRef().nativeElement);
18
- });
13
+ effect((onCleanup) => {
14
+ const cleanUp = this.points.subscribe(this.positionPointRef().nativeElement);
15
+ onCleanup(() => cleanUp());
19
16
  });
20
17
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionPointRef", first: true, predicate: ["positionPoint"], descendants: true, isSignal: true }], ngImport: i0, template: `
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "positionPointRef", first: true, predicate: ["positionPoint"], descendants: true, isSignal: true }], ngImport: i0, template: `
23
20
  <ngt-position-point #positionPoint [parameters]="options()" [instance]="points.pointsRef()">
24
21
  <ng-content />
25
22
  </ngt-position-point>
26
23
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
24
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPoint, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPoint, decorators: [{
29
26
  type: Component,
30
27
  args: [{
31
28
  selector: 'ngts-point',
@@ -61,8 +58,8 @@ export class NgtsPointsBuffer {
61
58
  checkUpdate(attributes['size']);
62
59
  });
63
60
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsBuffer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: NgtsPointsBuffer, isStandalone: true, selector: "ngts-points-buffer", inputs: { positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: true, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, stride: { classPropertyName: "stride", publicName: "stride", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsBuffer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsPointsBuffer, isStandalone: true, selector: "ngts-points-buffer", inputs: { positions: { classPropertyName: "positions", publicName: "positions", isSignal: true, isRequired: true, transformFunction: null }, colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, sizes: { classPropertyName: "sizes", publicName: "sizes", isSignal: true, isRequired: false, transformFunction: null }, stride: { classPropertyName: "stride", publicName: "stride", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
66
63
  <ngt-points #points [parameters]="options()">
67
64
  <ngt-buffer-geometry>
68
65
  <ngt-buffer-attribute
@@ -95,7 +92,7 @@ export class NgtsPointsBuffer {
95
92
  </ngt-points>
96
93
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97
94
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsBuffer, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsBuffer, decorators: [{
99
96
  type: Component,
100
97
  args: [{
101
98
  selector: 'ngts-points-buffer',
@@ -156,14 +153,11 @@ export class NgtsPointsInstances {
156
153
  this.positionPoints = [];
157
154
  this.DynamicDrawUsage = DynamicDrawUsage;
158
155
  extend({ Points, BufferAttribute, BufferGeometry });
159
- const autoEffect = injectAutoEffect();
160
- afterNextRender(() => {
161
- autoEffect(() => {
162
- const points = this.pointsRef()?.nativeElement;
163
- if (!points)
164
- return;
165
- checkUpdate(points.geometry.attributes['position']);
166
- });
156
+ effect(() => {
157
+ const points = this.pointsRef()?.nativeElement;
158
+ if (!points)
159
+ return;
160
+ checkUpdate(points.geometry.attributes['position']);
167
161
  });
168
162
  injectBeforeRender(() => {
169
163
  const points = this.pointsRef()?.nativeElement;
@@ -196,8 +190,8 @@ export class NgtsPointsInstances {
196
190
  this.positionPoints = this.positionPoints.filter((p) => p !== ref);
197
191
  };
198
192
  }
199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
194
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pointsRef", first: true, predicate: ["points"], descendants: true, isSignal: true }], ngImport: i0, template: `
201
195
  <ngt-points
202
196
  #points
203
197
  [userData]="{ instances: positionPoints }"
@@ -232,7 +226,7 @@ export class NgtsPointsInstances {
232
226
  </ngt-points>
233
227
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
234
228
  }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPointsInstances, decorators: [{
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPointsInstances, decorators: [{
236
230
  type: Component,
237
231
  args: [{
238
232
  selector: 'ngts-points-instances',
@@ -275,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
275
269
  changeDetection: ChangeDetectionStrategy.OnPush,
276
270
  }]
277
271
  }], ctorParameters: () => [] });
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL3BvaW50cy9wb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFFdEIsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQWEsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BHLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBYW5FLE1BQU0sT0FBTyxTQUFTO0lBT3JCO1FBTkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQixDQUFDLENBQUM7UUFFakQscUJBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNEIsZUFBZSxDQUFDLENBQUM7UUFFbEYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBR3BDLE1BQU0sQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFMUIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUV0QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJ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QUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMzQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFFakQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbkMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQThDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztJQUNILENBQUM7OEdBeEVXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGdWQXJDckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWlDVDs7MkZBSVcsbUJBQW1CO2tCQXhDL0IsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQ1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0aW5wdXQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSwgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndFBvaW50cywgb21pdCwgcGljaywgcmVzb2x2ZVJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSwgRHluYW1pY0RyYXdVc2FnZSwgTWF0cml4NCwgUG9pbnRzLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0UG9zaXRpb25Qb2ludCwgUG9zaXRpb25Qb2ludCB9IGZyb20gJy4vcG9zaXRpb24tcG9pbnQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXBvaW50Jyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvc2l0aW9uLXBvaW50ICNwb3NpdGlvblBvaW50IFtwYXJhbWV0ZXJzXT1cIm9wdGlvbnMoKVwiIFtpbnN0YW5jZV09XCJwb2ludHMucG9pbnRzUmVmKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9zaXRpb24tcG9pbnQ+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNQb2ludCB7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBQYXJ0aWFsPE5ndFBvc2l0aW9uUG9pbnQ+KTtcblxuXHRwb3NpdGlvblBvaW50UmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8UG9zaXRpb25Qb2ludD4+KCdwb3NpdGlvblBvaW50Jyk7XG5cblx0cG9pbnRzID0gaW5qZWN0KE5ndHNQb2ludHNJbnN0YW5jZXMpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IFBvc2l0aW9uUG9pbnQgfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5wb2ludHMuc3Vic2NyaWJlKHRoaXMucG9zaXRpb25Qb2ludFJlZigpLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1wb2ludHMtYnVmZmVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvaW50cyAjcG9pbnRzIFtwYXJhbWV0ZXJzXT1cIm9wdGlvbnMoKVwiPlxuXHRcdFx0PG5ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIlxuXHRcdFx0XHRcdFtjb3VudF09XCJwb3NpdGlvbnMoKS5sZW5ndGggLyBzdHJpZGUoKVwiXG5cdFx0XHRcdFx0W2FycmF5XT1cInBvc2l0aW9ucygpXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwic3RyaWRlKClcIlxuXHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0Lz5cblx0XHRcdFx0QGlmIChjb2xvcnMoKTsgYXMgY29sb3JzKSB7XG5cdFx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLmNvbG9yXCJcblx0XHRcdFx0XHRcdFtjb3VudF09XCJjb2xvcnMubGVuZ3RoIC8gc3RyaWRlKClcIlxuXHRcdFx0XHRcdFx0W2FycmF5XT1cImNvbG9yc1wiXG5cdFx0XHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgKHNpemVzKCk7IGFzIHNpemVzKSB7XG5cdFx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLnNpemVcIlxuXHRcdFx0XHRcdFx0W2NvdW50XT1cInNpemVzLmxlbmd0aCAvIHN0cmlkZSgpXCJcblx0XHRcdFx0XHRcdFthcnJheV09XCJzaXplc1wiXG5cdFx0XHRcdFx0XHRbaXRlbVNpemVdPVwiMVwiXG5cdFx0XHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0fVxuXHRcdFx0PC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wb2ludHM+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNQb2ludHNCdWZmZXIge1xuXHRwb3NpdGlvbnMgPSBpbnB1dC5yZXF1aXJlZDxGbG9hdDMyQXJyYXk+KCk7XG5cdGNvbG9ycyA9IGlucHV0PEZsb2F0MzJBcnJheT4oKTtcblx0c2l6ZXMgPSBpbnB1dDxGbG9hdDMyQXJyYXk+KCk7XG5cdHN0cmlkZSA9IGlucHV0PDIgfCAzPigzKTtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIFBhcnRpYWw8Tmd0UG9zaXRpb25Qb2ludD4pO1xuXG5cdHBvaW50c1JlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBvaW50cz4+KCdwb2ludHMnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBQb2ludHMsIEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnkgfSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgcG9pbnRzID0gdGhpcy5wb2ludHNSZWYoKT8ubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghcG9pbnRzKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IGF0dHJpYnV0ZXMgPSBwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlcztcblx0XHRcdGNoZWNrVXBkYXRlKGF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10pO1xuXHRcdFx0aWYgKHRoaXMuY29sb3JzKCkpIGNoZWNrVXBkYXRlKGF0dHJpYnV0ZXNbJ2NvbG9yJ10pO1xuXHRcdFx0aWYgKHRoaXMuc2l6ZXMoKSkgY2hlY2tVcGRhdGUoYXR0cmlidXRlc1snc2l6ZSddKTtcblx0XHR9KTtcblx0fVxuXG5cdHByb3RlY3RlZCByZWFkb25seSBEeW5hbWljRHJhd1VzYWdlID0gRHluYW1pY0RyYXdVc2FnZTtcbn1cblxuY29uc3QgcGFyZW50TWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzUG9pbnRzSW5zdGFuY2VzT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0UG9pbnRzPiB7XG5cdHJhbmdlPzogbnVtYmVyO1xuXHRsaW1pdDogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0SW5zdGFuY2VzT3B0aW9uczogTmd0c1BvaW50c0luc3RhbmNlc09wdGlvbnMgPSB7IGxpbWl0OiAxMDAwIH07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtcG9pbnRzLWluc3RhbmNlcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb2ludHNcblx0XHRcdCNwb2ludHNcblx0XHRcdFt1c2VyRGF0YV09XCJ7IGluc3RhbmNlczogcG9zaXRpb25Qb2ludHMgfVwiXG5cdFx0XHRbbWF0cml4QXV0b1VwZGF0ZV09XCJmYWxzZVwiXG5cdFx0XHRbcmF5Y2FzdF09XCJudWxsXCJcblx0XHRcdFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiXG5cdFx0PlxuXHRcdFx0PG5ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMucG9zaXRpb25cIlxuXHRcdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkucG9zaXRpb25zLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkucG9zaXRpb25zXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLmNvbG9yXCJcblx0XHRcdFx0XHRbY291bnRdPVwiYnVmZmVycygpLmNvbG9ycy5sZW5ndGggLyAzXCJcblx0XHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLmNvbG9yc1wiXG5cdFx0XHRcdFx0W2l0ZW1TaXplXT1cIjNcIlxuXHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0Lz5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0YXR0YWNoPVwiYXR0cmlidXRlcy5zaXplXCJcblx0XHRcdFx0XHRbY291bnRdPVwiYnVmZmVycygpLnNpemVzLmxlbmd0aFwiXG5cdFx0XHRcdFx0W2FycmF5XT1cImJ1ZmZlcnMoKS5zaXplc1wiXG5cdFx0XHRcdFx0W2l0ZW1TaXplXT1cIjFcIlxuXHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0Lz5cblx0XHRcdDwvbmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9pbnRzPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUG9pbnRzSW5zdGFuY2VzIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRJbnN0YW5jZXNPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdEluc3RhbmNlc09wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFsnbGltaXQnLCAncmFuZ2UnXSk7XG5cblx0cG9pbnRzUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8UG9pbnRzPj4oJ3BvaW50cycpO1xuXG5cdHByaXZhdGUgbGltaXQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbWl0Jyk7XG5cblx0YnVmZmVycyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBsaW1pdCA9IHRoaXMubGltaXQoKTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRwb3NpdGlvbnM6IG5ldyBGbG9hdDMyQXJyYXkobGltaXQgKiAzKSxcblx0XHRcdGNvbG9yczogRmxvYXQzMkFycmF5LmZyb20oeyBsZW5ndGg6IGxpbWl0ICogMyB9LCAoKSA9PiAxKSxcblx0XHRcdHNpemVzOiBGbG9hdDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgfSwgKCkgPT4gMSksXG5cdFx0fTtcblx0fSk7XG5cblx0cG9zaXRpb25Qb2ludHM6IEFycmF5PEVsZW1lbnRSZWY8UG9zaXRpb25Qb2ludD4gfCBQb3NpdGlvblBvaW50PiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IFBvaW50cywgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSB9KTtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwb2ludHMgPSB0aGlzLnBvaW50c1JlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIXBvaW50cykgcmV0dXJuO1xuXHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1sncG9zaXRpb24nXSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBwb2ludHMgPSB0aGlzLnBvaW50c1JlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFwb2ludHMpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgeyBsaW1pdCwgcmFuZ2UgfSA9IHRoaXMub3B0aW9ucygpO1xuXHRcdFx0Y29uc3QgeyBwb3NpdGlvbnMsIHNpemVzLCBjb2xvcnMgfSA9IHRoaXMuYnVmZmVycygpO1xuXG5cdFx0XHRwb2ludHMudXBkYXRlTWF0cml4KCk7XG5cdFx0XHRwb2ludHMudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdHBhcmVudE1hdHJpeC5jb3B5KHBvaW50cy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7XG5cblx0XHRcdHBvaW50cy5nZW9tZXRyeS5kcmF3UmFuZ2UuY291bnQgPSBNYXRoLm1pbihcblx0XHRcdFx0bGltaXQsXG5cdFx0XHRcdHJhbmdlICE9PSB1bmRlZmluZWQgPyByYW5nZSA6IGxpbWl0LFxuXHRcdFx0XHR0aGlzLnBvc2l0aW9uUG9pbnRzLmxlbmd0aCxcblx0XHRcdCk7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3NpdGlvblBvaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBwb3NpdGlvblBvaW50ID0gcmVzb2x2ZVJlZih0aGlzLnBvc2l0aW9uUG9pbnRzW2ldKTtcblx0XHRcdFx0aWYgKHBvc2l0aW9uUG9pbnQpIHtcblx0XHRcdFx0XHRwb3NpdGlvblBvaW50LmdldFdvcmxkUG9zaXRpb24ocG9zaXRpb24pLmFwcGx5TWF0cml4NChwYXJlbnRNYXRyaXgpO1xuXHRcdFx0XHRcdHBvc2l0aW9uLnRvQXJyYXkocG9zaXRpb25zLCBpICogMyk7XG5cdFx0XHRcdFx0Y2hlY2tVcGRhdGUocG9pbnRzLmdlb21ldHJ5LmF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10pO1xuXG5cdFx0XHRcdFx0cG9zaXRpb25Qb2ludC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRwb3NpdGlvblBvaW50LmNvbG9yLnRvQXJyYXkoY29sb3JzLCBpICogMyk7XG5cdFx0XHRcdFx0Y2hlY2tVcGRhdGUocG9pbnRzLmdlb21ldHJ5LmF0dHJpYnV0ZXNbJ2NvbG9yJ10pO1xuXG5cdFx0XHRcdFx0c2l6ZXMuc2V0KFtwb3NpdGlvblBvaW50LnNpemVdLCBpKTtcblx0XHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1snc2l6ZSddKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0c3Vic2NyaWJlKHJlZjogRWxlbWVudFJlZjxQb3NpdGlvblBvaW50PiB8IFBvc2l0aW9uUG9pbnQpIHtcblx0XHR0aGlzLnBvc2l0aW9uUG9pbnRzLnB1c2gocmVmKTtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0dGhpcy5wb3NpdGlvblBvaW50cyA9IHRoaXMucG9zaXRpb25Qb2ludHMuZmlsdGVyKChwKSA9PiBwICE9PSByZWYpO1xuXHRcdH07XG5cdH1cblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgRHluYW1pY0RyYXdVc2FnZSA9IER5bmFtaWNEcmF3VXNhZ2U7XG59XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvbGliL3BvaW50cy9wb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQWEsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BHLE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBYW5FLE1BQU0sT0FBTyxTQUFTO0lBT3JCO1FBTkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxFQUErQixDQUFDLENBQUM7UUFFakQscUJBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNEIsZUFBZSxDQUFDLENBQUM7UUFFbEYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBR3BDLE1BQU0sQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFMUIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQWRXLFNBQVM7a0dBQVQsU0FBUyxtVkFSWDs7OztFQUlUOzsyRkFJVyxTQUFTO2tCQVhyQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQzs7QUF3REQsTUFBTSxPQUFPLGdCQUFnQjtJQVM1QjtRQVJBLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFnQixDQUFDO1FBQzNDLFdBQU0sR0FBRyxLQUFLLEVBQWdCLENBQUM7UUFDL0IsVUFBSyxHQUFHLEtBQUssRUFBZ0IsQ0FBQztRQUM5QixXQUFNLEdBQUcsS0FBSyxDQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBK0IsQ0FBQyxDQUFDO1FBRWpELGNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFxQixRQUFRLENBQUMsQ0FBQztRQWdCMUMscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFidEQsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXBELGtCQUFrQixDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsYUFBYSxDQUFDO1lBQy9DLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFFcEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDOUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBckJXLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDh6QkFuQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBK0JUOzsyRkFJVyxnQkFBZ0I7a0JBdEM1QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUErQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQzs7QUEyQkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBTy9CLE1BQU0sdUJBQXVCLEdBQStCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0FBMEM1RSxNQUFNLE9BQU8sbUJBQW1CO0lBb0IvQjtRQW5CQSxZQUFPLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RixlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVwRCxjQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBcUIsUUFBUSxDQUFDLENBQUM7UUFFckQsVUFBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUUzQixPQUFPO2dCQUNOLFNBQVMsRUFBRSxJQUFJLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxLQUFLLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDcEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsbUJBQWMsR0FBcUQsRUFBRSxDQUFDO1FBcURuRCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQWxEdEQsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsYUFBYSxDQUFDO1lBQy9DLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDcEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFFSCxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGFBQWEsQ0FBQztZQUMvQyxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXBCLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVwRCxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFL0MsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3pDLEtBQUssRUFDTCxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQzFCLENBQUM7WUFFRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDckQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDbkIsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDcEUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFFcEQsYUFBYSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztvQkFDNUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBRWpELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUE4QztRQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUM7SUFDSCxDQUFDOzhHQXJFVyxtQkFBbUI7a0dBQW5CLG1CQUFtQixnVkFyQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQ1Q7OzJGQUlXLG1CQUFtQjtrQkF4Qy9CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUNUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2hlY2tVcGRhdGUsIGV4dGVuZCwgaW5qZWN0QmVmb3JlUmVuZGVyLCBOZ3RQb2ludHMsIG9taXQsIHBpY2ssIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJ1ZmZlckF0dHJpYnV0ZSwgQnVmZmVyR2VvbWV0cnksIER5bmFtaWNEcmF3VXNhZ2UsIE1hdHJpeDQsIFBvaW50cywgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndFBvc2l0aW9uUG9pbnQsIFBvc2l0aW9uUG9pbnQgfSBmcm9tICcuL3Bvc2l0aW9uLXBvaW50JztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1wb2ludCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3NpdGlvbi1wb2ludCAjcG9zaXRpb25Qb2ludCBbcGFyYW1ldGVyc109XCJvcHRpb25zKClcIiBbaW5zdGFuY2VdPVwicG9pbnRzLnBvaW50c1JlZigpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXBvc2l0aW9uLXBvaW50PlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzUG9pbnQge1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgUGFydGlhbDxOZ3RQb3NpdGlvblBvaW50Pik7XG5cblx0cG9zaXRpb25Qb2ludFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFBvc2l0aW9uUG9pbnQ+PigncG9zaXRpb25Qb2ludCcpO1xuXG5cdHBvaW50cyA9IGluamVjdChOZ3RzUG9pbnRzSW5zdGFuY2VzKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBQb3NpdGlvblBvaW50IH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGNsZWFuVXAgPSB0aGlzLnBvaW50cy5zdWJzY3JpYmUodGhpcy5wb3NpdGlvblBvaW50UmVmKCkubmF0aXZlRWxlbWVudCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW5VcCgpKTtcblx0XHR9KTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLXBvaW50cy1idWZmZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcG9pbnRzICNwb2ludHMgW3BhcmFtZXRlcnNdPVwib3B0aW9ucygpXCI+XG5cdFx0XHQ8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0YXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiXG5cdFx0XHRcdFx0W2NvdW50XT1cInBvc2l0aW9ucygpLmxlbmd0aCAvIHN0cmlkZSgpXCJcblx0XHRcdFx0XHRbYXJyYXldPVwicG9zaXRpb25zKClcIlxuXHRcdFx0XHRcdFtpdGVtU2l6ZV09XCJzdHJpZGUoKVwiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHRAaWYgKGNvbG9ycygpOyBhcyBjb2xvcnMpIHtcblx0XHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIlxuXHRcdFx0XHRcdFx0W2NvdW50XT1cImNvbG9ycy5sZW5ndGggLyBzdHJpZGUoKVwiXG5cdFx0XHRcdFx0XHRbYXJyYXldPVwiY29sb3JzXCJcblx0XHRcdFx0XHRcdFtpdGVtU2l6ZV09XCIzXCJcblx0XHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoc2l6ZXMoKTsgYXMgc2l6ZXMpIHtcblx0XHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMuc2l6ZVwiXG5cdFx0XHRcdFx0XHRbY291bnRdPVwic2l6ZXMubGVuZ3RoIC8gc3RyaWRlKClcIlxuXHRcdFx0XHRcdFx0W2FycmF5XT1cInNpemVzXCJcblx0XHRcdFx0XHRcdFtpdGVtU2l6ZV09XCIxXCJcblx0XHRcdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L25ndC1idWZmZXItZ2VvbWV0cnk+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXBvaW50cz5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1BvaW50c0J1ZmZlciB7XG5cdHBvc2l0aW9ucyA9IGlucHV0LnJlcXVpcmVkPEZsb2F0MzJBcnJheT4oKTtcblx0Y29sb3JzID0gaW5wdXQ8RmxvYXQzMkFycmF5PigpO1xuXHRzaXplcyA9IGlucHV0PEZsb2F0MzJBcnJheT4oKTtcblx0c3RyaWRlID0gaW5wdXQ8MiB8IDM+KDMpO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgUGFydGlhbDxOZ3RQb3NpdGlvblBvaW50Pik7XG5cblx0cG9pbnRzUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8UG9pbnRzPj4oJ3BvaW50cycpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IFBvaW50cywgQnVmZmVyQXR0cmlidXRlLCBCdWZmZXJHZW9tZXRyeSB9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBwb2ludHMgPSB0aGlzLnBvaW50c1JlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0aWYgKCFwb2ludHMpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgYXR0cmlidXRlcyA9IHBvaW50cy5nZW9tZXRyeS5hdHRyaWJ1dGVzO1xuXHRcdFx0Y2hlY2tVcGRhdGUoYXR0cmlidXRlc1sncG9zaXRpb24nXSk7XG5cdFx0XHRpZiAodGhpcy5jb2xvcnMoKSkgY2hlY2tVcGRhdGUoYXR0cmlidXRlc1snY29sb3InXSk7XG5cdFx0XHRpZiAodGhpcy5zaXplcygpKSBjaGVja1VwZGF0ZShhdHRyaWJ1dGVzWydzaXplJ10pO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IER5bmFtaWNEcmF3VXNhZ2UgPSBEeW5hbWljRHJhd1VzYWdlO1xufVxuXG5jb25zdCBwYXJlbnRNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgcG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNQb2ludHNJbnN0YW5jZXNPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RQb2ludHM+IHtcblx0cmFuZ2U/OiBudW1iZXI7XG5cdGxpbWl0OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRJbnN0YW5jZXNPcHRpb25zOiBOZ3RzUG9pbnRzSW5zdGFuY2VzT3B0aW9ucyA9IHsgbGltaXQ6IDEwMDAgfTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1wb2ludHMtaW5zdGFuY2VzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXBvaW50c1xuXHRcdFx0I3BvaW50c1xuXHRcdFx0W3VzZXJEYXRhXT1cInsgaW5zdGFuY2VzOiBwb3NpdGlvblBvaW50cyB9XCJcblx0XHRcdFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCJcblx0XHRcdFtyYXljYXN0XT1cIm51bGxcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmd0LWJ1ZmZlci1nZW9tZXRyeT5cblx0XHRcdFx0PG5ndC1idWZmZXItYXR0cmlidXRlXG5cdFx0XHRcdFx0YXR0YWNoPVwiYXR0cmlidXRlcy5wb3NpdGlvblwiXG5cdFx0XHRcdFx0W2NvdW50XT1cImJ1ZmZlcnMoKS5wb3NpdGlvbnMubGVuZ3RoIC8gM1wiXG5cdFx0XHRcdFx0W2FycmF5XT1cImJ1ZmZlcnMoKS5wb3NpdGlvbnNcIlxuXHRcdFx0XHRcdFtpdGVtU2l6ZV09XCIzXCJcblx0XHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHRcdC8+XG5cdFx0XHRcdDxuZ3QtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRcdGF0dGFjaD1cImF0dHJpYnV0ZXMuY29sb3JcIlxuXHRcdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkuY29sb3JzLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRcdFthcnJheV09XCJidWZmZXJzKCkuY29sb3JzXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8bmd0LWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0XHRhdHRhY2g9XCJhdHRyaWJ1dGVzLnNpemVcIlxuXHRcdFx0XHRcdFtjb3VudF09XCJidWZmZXJzKCkuc2l6ZXMubGVuZ3RoXCJcblx0XHRcdFx0XHRbYXJyYXldPVwiYnVmZmVycygpLnNpemVzXCJcblx0XHRcdFx0XHRbaXRlbVNpemVdPVwiMVwiXG5cdFx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0PC9uZ3QtYnVmZmVyLWdlb21ldHJ5PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wb2ludHM+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNQb2ludHNJbnN0YW5jZXMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdEluc3RhbmNlc09wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0SW5zdGFuY2VzT3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydsaW1pdCcsICdyYW5nZSddKTtcblxuXHRwb2ludHNSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxQb2ludHM+PigncG9pbnRzJyk7XG5cblx0cHJpdmF0ZSBsaW1pdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbGltaXQnKTtcblxuXHRidWZmZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gdGhpcy5saW1pdCgpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHBvc2l0aW9uczogbmV3IEZsb2F0MzJBcnJheShsaW1pdCAqIDMpLFxuXHRcdFx0Y29sb3JzOiBGbG9hdDMyQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiAzIH0sICgpID0+IDEpLFxuXHRcdFx0c2l6ZXM6IEZsb2F0MzJBcnJheS5mcm9tKHsgbGVuZ3RoOiBsaW1pdCB9LCAoKSA9PiAxKSxcblx0XHR9O1xuXHR9KTtcblxuXHRwb3NpdGlvblBvaW50czogQXJyYXk8RWxlbWVudFJlZjxQb3NpdGlvblBvaW50PiB8IFBvc2l0aW9uUG9pbnQ+ID0gW107XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgUG9pbnRzLCBCdWZmZXJBdHRyaWJ1dGUsIEJ1ZmZlckdlb21ldHJ5IH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IHBvaW50cyA9IHRoaXMucG9pbnRzUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIXBvaW50cykgcmV0dXJuO1xuXHRcdFx0Y2hlY2tVcGRhdGUocG9pbnRzLmdlb21ldHJ5LmF0dHJpYnV0ZXNbJ3Bvc2l0aW9uJ10pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IHBvaW50cyA9IHRoaXMucG9pbnRzUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIXBvaW50cykgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCB7IGxpbWl0LCByYW5nZSB9ID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0XHRjb25zdCB7IHBvc2l0aW9ucywgc2l6ZXMsIGNvbG9ycyB9ID0gdGhpcy5idWZmZXJzKCk7XG5cblx0XHRcdHBvaW50cy51cGRhdGVNYXRyaXgoKTtcblx0XHRcdHBvaW50cy51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHRcdFx0cGFyZW50TWF0cml4LmNvcHkocG9pbnRzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtcblxuXHRcdFx0cG9pbnRzLmdlb21ldHJ5LmRyYXdSYW5nZS5jb3VudCA9IE1hdGgubWluKFxuXHRcdFx0XHRsaW1pdCxcblx0XHRcdFx0cmFuZ2UgIT09IHVuZGVmaW5lZCA/IHJhbmdlIDogbGltaXQsXG5cdFx0XHRcdHRoaXMucG9zaXRpb25Qb2ludHMubGVuZ3RoLFxuXHRcdFx0KTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnBvc2l0aW9uUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHBvc2l0aW9uUG9pbnQgPSByZXNvbHZlUmVmKHRoaXMucG9zaXRpb25Qb2ludHNbaV0pO1xuXHRcdFx0XHRpZiAocG9zaXRpb25Qb2ludCkge1xuXHRcdFx0XHRcdHBvc2l0aW9uUG9pbnQuZ2V0V29ybGRQb3NpdGlvbihwb3NpdGlvbikuYXBwbHlNYXRyaXg0KHBhcmVudE1hdHJpeCk7XG5cdFx0XHRcdFx0cG9zaXRpb24udG9BcnJheShwb3NpdGlvbnMsIGkgKiAzKTtcblx0XHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1sncG9zaXRpb24nXSk7XG5cblx0XHRcdFx0XHRwb3NpdGlvblBvaW50Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdHBvc2l0aW9uUG9pbnQuY29sb3IudG9BcnJheShjb2xvcnMsIGkgKiAzKTtcblx0XHRcdFx0XHRjaGVja1VwZGF0ZShwb2ludHMuZ2VvbWV0cnkuYXR0cmlidXRlc1snY29sb3InXSk7XG5cblx0XHRcdFx0XHRzaXplcy5zZXQoW3Bvc2l0aW9uUG9pbnQuc2l6ZV0sIGkpO1xuXHRcdFx0XHRcdGNoZWNrVXBkYXRlKHBvaW50cy5nZW9tZXRyeS5hdHRyaWJ1dGVzWydzaXplJ10pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRzdWJzY3JpYmUocmVmOiBFbGVtZW50UmVmPFBvc2l0aW9uUG9pbnQ+IHwgUG9zaXRpb25Qb2ludCkge1xuXHRcdHRoaXMucG9zaXRpb25Qb2ludHMucHVzaChyZWYpO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHR0aGlzLnBvc2l0aW9uUG9pbnRzID0gdGhpcy5wb3NpdGlvblBvaW50cy5maWx0ZXIoKHApID0+IHAgIT09IHJlZik7XG5cdFx0fTtcblx0fVxuXG5cdHByb3RlY3RlZCByZWFkb25seSBEeW5hbWljRHJhd1VzYWdlID0gRHluYW1pY0RyYXdVc2FnZTtcbn1cbiJdfQ==