angular-three 2.0.0-beta.242 → 2.0.0-beta.244

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 (50) hide show
  1. package/esm2022/index.mjs +2 -2
  2. package/esm2022/lib/canvas.mjs +19 -27
  3. package/esm2022/lib/directives/args.mjs +52 -14
  4. package/esm2022/lib/instance.mjs +10 -9
  5. package/esm2022/lib/loop.mjs +2 -2
  6. package/esm2022/lib/portal.mjs +119 -111
  7. package/esm2022/lib/renderer/catalogue.mjs +2 -2
  8. package/esm2022/lib/renderer/constants.mjs +3 -5
  9. package/esm2022/lib/renderer/index.mjs +276 -194
  10. package/esm2022/lib/renderer/state.mjs +49 -0
  11. package/esm2022/lib/renderer/utils.mjs +40 -24
  12. package/esm2022/lib/roots.mjs +25 -25
  13. package/esm2022/lib/routed-scene.mjs +3 -3
  14. package/esm2022/lib/store.mjs +14 -12
  15. package/esm2022/lib/three-types.mjs +1 -1
  16. package/esm2022/lib/utils/apply-props.mjs +3 -3
  17. package/esm2022/lib/utils/before-render.mjs +4 -3
  18. package/esm2022/lib/utils/parameters.mjs +33 -28
  19. package/esm2022/lib/utils/resolve-ref.mjs +8 -0
  20. package/esm2022/lib/utils/signal-store.mjs +3 -14
  21. package/fesm2022/angular-three.mjs +720 -1089
  22. package/fesm2022/angular-three.mjs.map +1 -1
  23. package/index.d.ts +2 -2
  24. package/lib/canvas.d.ts +278 -1001
  25. package/lib/directives/args.d.ts +11 -4
  26. package/lib/instance.d.ts +8 -13
  27. package/lib/loop.d.ts +1 -1
  28. package/lib/portal.d.ts +41 -31
  29. package/lib/renderer/catalogue.d.ts +1 -1
  30. package/lib/renderer/constants.d.ts +2 -4
  31. package/lib/renderer/index.d.ts +15 -5
  32. package/lib/renderer/state.d.ts +23 -0
  33. package/lib/renderer/utils.d.ts +5 -22
  34. package/lib/roots.d.ts +5 -0
  35. package/lib/store.d.ts +12 -12
  36. package/lib/three-types.d.ts +8 -5
  37. package/lib/utils/parameters.d.ts +6 -9
  38. package/lib/utils/resolve-ref.d.ts +2 -0
  39. package/lib/utils/signal-store.d.ts +1 -5
  40. package/metadata.json +1 -1
  41. package/package.json +71 -72
  42. package/web-types.json +1 -1
  43. package/esm2022/lib/directives/common.mjs +0 -67
  44. package/esm2022/lib/directives/parent.mjs +0 -20
  45. package/esm2022/lib/ref.mjs +0 -50
  46. package/esm2022/lib/renderer/store.mjs +0 -439
  47. package/lib/directives/common.d.ts +0 -31
  48. package/lib/directives/parent.d.ts +0 -11
  49. package/lib/ref.d.ts +0 -7
  50. package/lib/renderer/store.d.ts +0 -65
@@ -1,38 +1,27 @@
1
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, Directive, inject, Injector, input, signal, SkipSelf, TemplateRef, untracked, viewChild, ViewContainerRef, } from '@angular/core';
1
+ import { afterNextRender, ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, Directive, inject, Injector, input, signal, TemplateRef, untracked, viewChild, ViewContainerRef, } from '@angular/core';
2
2
  import { injectAutoEffect } from 'ngxtension/auto-effect';
3
- import { Raycaster, Scene, Vector2, Vector3 } from 'three';
3
+ import { Raycaster, Vector2, Vector3 } from 'three';
4
4
  import { getLocalState, prepare } from './instance';
5
5
  import { SPECIAL_INTERNAL_ADD_COMMENT } from './renderer/constants';
6
- import { injectNgtStore, provideNgtStore } from './store';
6
+ import { injectStore, provideStore } from './store';
7
7
  import { injectBeforeRender } from './utils/before-render';
8
8
  import { is } from './utils/is';
9
9
  import { signalStore } from './utils/signal-store';
10
10
  import { updateCamera } from './utils/update';
11
11
  import * as i0 from "@angular/core";
12
- const privateKeys = [
13
- 'get',
14
- 'set',
15
- 'select',
16
- 'setSize',
17
- 'setDpr',
18
- 'setFrameloop',
19
- 'events',
20
- 'invalidate',
21
- 'advance',
22
- 'size',
23
- 'viewport',
24
- ];
25
12
  export class NgtPortalBeforeRender {
26
13
  constructor() {
27
- this.portalStore = injectNgtStore();
28
- this.injector = inject(Injector);
14
+ this.portalStore = injectStore();
29
15
  this.renderPriority = input(1);
30
16
  this.parentScene = input.required();
31
17
  this.parentCamera = input.required();
32
- afterNextRender(() => {
18
+ injectAutoEffect()((injector) => {
19
+ // track state
20
+ this.portalStore.state();
21
+ const priority = this.renderPriority();
33
22
  let oldClear;
34
- injectBeforeRender(() => {
35
- const { gl, scene, camera } = this.portalStore.get();
23
+ return injectBeforeRender(() => {
24
+ const { gl, scene, camera } = this.portalStore.snapshot;
36
25
  oldClear = gl.autoClear;
37
26
  if (this.renderPriority() === 1) {
38
27
  // clear scene and render with default
@@ -45,19 +34,19 @@ export class NgtPortalBeforeRender {
45
34
  gl.render(scene, camera);
46
35
  // restore
47
36
  gl.autoClear = oldClear;
48
- }, { priority: this.renderPriority(), injector: this.injector });
37
+ }, { priority, injector });
49
38
  });
50
39
  }
51
40
  onPointerOver() {
52
41
  /* noop */
53
42
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.3", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: false, transformFunction: null }, parentScene: { classPropertyName: "parentScene", publicName: "parentScene", isSignal: true, isRequired: true, transformFunction: null }, parentCamera: { classPropertyName: "parentCamera", publicName: "parentCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.6", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: false, transformFunction: null }, parentScene: { classPropertyName: "parentScene", publicName: "parentScene", isSignal: true, isRequired: true, transformFunction: null }, parentCamera: { classPropertyName: "parentCamera", publicName: "parentCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
56
45
  <!-- Without an element that receives pointer events state.pointer will always be 0/0 -->
57
46
  <ngt-group (pointerover)="onPointerOver()" attach="none" />
58
47
  `, isInline: true }); }
59
48
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
61
50
  type: Component,
62
51
  args: [{
63
52
  selector: 'ngt-portal-before-render',
@@ -70,145 +59,164 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
70
59
  }]
71
60
  }], ctorParameters: () => [] });
72
61
  export class NgtPortalContent {
73
- constructor(vcr, parentVcr) {
74
- const commentNode = vcr.element.nativeElement;
62
+ constructor() {
63
+ const { element: comment } = inject(ViewContainerRef);
64
+ const { element: parentComment } = inject(ViewContainerRef, { skipSelf: true });
65
+ const commentNode = comment.nativeElement;
75
66
  if (commentNode[SPECIAL_INTERNAL_ADD_COMMENT]) {
76
- commentNode[SPECIAL_INTERNAL_ADD_COMMENT](parentVcr.element.nativeElement);
67
+ commentNode[SPECIAL_INTERNAL_ADD_COMMENT](parentComment.nativeElement);
77
68
  delete commentNode[SPECIAL_INTERNAL_ADD_COMMENT];
78
69
  }
79
70
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtPortalContent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ViewContainerRef, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
81
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.3", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
71
+ static ngTemplateContextGuard(_, ctx) {
72
+ return true;
73
+ }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
82
76
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtPortalContent, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtPortalContent, decorators: [{
84
78
  type: Directive,
85
79
  args: [{ selector: 'ng-template[portalContent]', standalone: true }]
86
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ViewContainerRef, decorators: [{
87
- type: SkipSelf
88
- }] }] });
80
+ }], ctorParameters: () => [] });
81
+ // Keys that shouldn't be copied between stores
82
+ export const privateKeys = [
83
+ 'setSize',
84
+ 'setFrameloop',
85
+ 'setDpr',
86
+ 'events',
87
+ 'setEvents',
88
+ 'invalidate',
89
+ 'advance',
90
+ 'size',
91
+ 'viewport',
92
+ ];
89
93
  export class NgtPortal {
90
94
  constructor() {
91
- this.container = input(prepare(new Scene()));
92
- this.camera = input();
93
- this.state = input();
95
+ this.container = input.required();
96
+ this.state = input({});
97
+ /**
98
+ * @decsription turn this on to enable "HUD" like rendering
99
+ */
94
100
  this.autoRender = input(false);
95
101
  this.autoRenderPriority = input(1);
96
- this.portalContentTemplate = contentChild.required(NgtPortalContent, { read: TemplateRef });
97
- this.portalContentAnchor = viewChild.required('portalContentAnchor', { read: ViewContainerRef });
98
- this.destroyRef = inject(DestroyRef);
99
- this.autoEffect = injectAutoEffect();
100
- this.parentStore = injectNgtStore({ skipSelf: true });
101
- this.portalStore = injectNgtStore({ self: true });
102
- this.portalRendered = signal(false);
103
- this.renderAutoBeforeRender = computed(() => this.portalRendered() && this.autoRender());
104
- this.parentScene = this.parentStore.get('scene');
105
- this.parentCamera = this.parentStore.get('camera');
102
+ this.portalContent = contentChild.required(NgtPortalContent, { read: TemplateRef });
103
+ this.portalAnchor = viewChild.required('anchor', { read: ViewContainerRef });
104
+ this.injector = inject(Injector);
105
+ this.portalStore = injectStore({ self: true });
106
+ this.parentStore = injectStore({ skipSelf: true });
107
+ this.parentScene = this.parentStore.select('scene');
108
+ this.parentCamera = this.parentStore.select('camera');
106
109
  this.raycaster = new Raycaster();
107
110
  this.pointer = new Vector2();
111
+ this.portalRendered = signal(false);
112
+ this.renderAutoBeforeRender = computed(() => this.portalRendered() && this.autoRender());
113
+ const autoEffect = injectAutoEffect();
114
+ const parentState = this.parentStore.select();
108
115
  afterNextRender(() => {
109
- const parentState = this.parentStore.snapshot;
110
- let [container, state, autoRender, autoRenderPriority] = [
111
- this.container(),
112
- this.state(),
113
- this.autoRender(),
114
- this.autoRenderPriority(),
115
- ];
116
- let stateFromInput = state;
117
- if (!stateFromInput && autoRender) {
118
- stateFromInput = { events: { priority: autoRenderPriority + 1 } };
119
- }
120
- const { events = {}, size = {}, ...rest } = stateFromInput || {};
116
+ const previousState = this.parentStore.snapshot;
117
+ const { events = {}, size = {}, ...rest } = this.state();
118
+ let container = this.container();
121
119
  if (!is.instance(container)) {
122
- container = prepare(container);
120
+ container = prepare(container, { store: this.portalStore });
123
121
  }
124
122
  const localState = getLocalState(container);
125
123
  if (localState && !localState.store) {
126
124
  localState.store = this.portalStore;
127
125
  }
128
126
  this.portalStore.update({
129
- ...parentState,
127
+ ...previousState,
130
128
  scene: container,
131
129
  raycaster: this.raycaster,
132
130
  pointer: this.pointer,
131
+ events: { ...previousState.events, ...events },
132
+ size: { ...previousState.size, ...size },
133
133
  previousRoot: this.parentStore,
134
- events: { ...parentState.events, ...events },
135
- size: { ...parentState.size, ...size },
136
134
  ...rest,
137
135
  setEvents: (events) => this.portalStore.update((state) => ({ ...state, events: { ...state.events, ...events } })),
138
136
  });
139
- this.autoEffect(() => {
140
- const previous = this.parentStore.state();
141
- this.portalStore.update((state) => this.inject(previous, state));
142
- });
143
- untracked(() => {
144
- const portalView = this.portalContentAnchor().createEmbeddedView(this.portalContentTemplate());
145
- portalView.detectChanges();
146
- this.destroyRef.onDestroy(() => {
147
- portalView.destroy();
137
+ autoEffect(() => {
138
+ const state = this.state();
139
+ const _parentState = parentState();
140
+ this.portalStore.update((prev) => this.inject(_parentState, prev, state, untracked(this.container)));
141
+ untracked(() => {
142
+ if (this.portalView) {
143
+ this.portalView.detectChanges();
144
+ return;
145
+ }
146
+ this.portalView = this.portalAnchor().createEmbeddedView(this.portalContent(), { container: this.container(), injector: this.injector }, { injector: this.injector });
147
+ this.portalView.detectChanges();
148
+ this.portalRendered.set(true);
148
149
  });
149
150
  });
150
- this.portalRendered.set(true);
151
+ });
152
+ inject(DestroyRef).onDestroy(() => {
153
+ this.portalView?.destroy();
151
154
  });
152
155
  }
153
- inject(rootState, injectState) {
154
- const intersect = { ...rootState };
155
- Object.keys(intersect).forEach((key) => {
156
+ inject(parentState, portalState, injectedState, container) {
157
+ const { events = {}, size, ...rest } = injectedState;
158
+ const intersect = { ...parentState }; // all prev state props
159
+ Object.keys(parentState).forEach((key) => {
156
160
  if (privateKeys.includes(key) ||
157
- rootState[key] !== injectState[key]) {
161
+ (parentState[key] !== portalState[key] &&
162
+ portalState[key])) {
158
163
  delete intersect[key];
159
164
  }
160
165
  });
161
- const container = untracked(this.container);
162
- const { size, events, ...restInputsState } = untracked(this.state) || {};
163
166
  let viewport = undefined;
164
- if (injectState && size) {
165
- const camera = injectState.camera;
166
- viewport = rootState.viewport.getCurrentViewport(camera, new Vector3(), size);
167
- if (camera !== rootState.camera)
167
+ if (portalState && size) {
168
+ const camera = portalState.camera;
169
+ // Calculate the override viewport, if present
170
+ viewport = parentState.viewport.getCurrentViewport(camera, new Vector3(), size);
171
+ // Update the portal camera, if it differs from the previous layer
172
+ if (camera !== parentState.camera) {
168
173
  updateCamera(camera, size);
174
+ }
169
175
  }
170
176
  return {
171
177
  ...intersect,
172
178
  scene: container,
173
- previousRoot: this.parentStore,
174
- events: { ...rootState.events, ...(injectState?.events || {}), ...events },
175
- size: { ...rootState.size, ...size },
176
- viewport: { ...rootState.viewport, ...(viewport || {}) },
177
- ...restInputsState,
179
+ raycaster: this.raycaster,
180
+ pointer: this.pointer,
181
+ events: { ...parentState.events, ...(portalState.events || {}), ...(events || {}) },
182
+ size: { ...parentState.size, ...(size || {}) },
183
+ viewport: { ...parentState.viewport, ...(viewport || {}) },
184
+ ...rest,
178
185
  };
179
186
  }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, autoRender: { classPropertyName: "autoRender", publicName: "autoRender", isSignal: true, isRequired: false, transformFunction: null }, autoRenderPriority: { classPropertyName: "autoRenderPriority", publicName: "autoRenderPriority", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideNgtStore(signalStore({}))], queries: [{ propertyName: "portalContentTemplate", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "portalContentAnchor", first: true, predicate: ["portalContentAnchor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
182
- <ng-container #portalContentAnchor>
183
- @if (renderAutoBeforeRender()) {
184
- <ngt-portal-before-render
185
- [renderPriority]="autoRenderPriority()"
186
- [parentScene]="parentScene"
187
- [parentCamera]="parentCamera"
188
- />
189
- }
190
- </ng-container>
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: true, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, autoRender: { classPropertyName: "autoRender", publicName: "autoRender", isSignal: true, isRequired: false, transformFunction: null }, autoRenderPriority: { classPropertyName: "autoRenderPriority", publicName: "autoRenderPriority", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideStore(() => signalStore({}))], queries: [{ propertyName: "portalContent", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "portalAnchor", first: true, predicate: ["anchor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
189
+ <ng-container #anchor />
190
+
191
+ @if (renderAutoBeforeRender()) {
192
+ <ngt-portal-before-render
193
+ [renderPriority]="autoRenderPriority()"
194
+ [parentScene]="parentScene()"
195
+ [parentCamera]="parentCamera()"
196
+ />
197
+ }
191
198
  `, isInline: true, dependencies: [{ kind: "component", type: NgtPortalBeforeRender, selector: "ngt-portal-before-render", inputs: ["renderPriority", "parentScene", "parentCamera"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
192
199
  }
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: NgtPortal, decorators: [{
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgtPortal, decorators: [{
194
201
  type: Component,
195
202
  args: [{
196
203
  selector: 'ngt-portal',
197
204
  standalone: true,
198
205
  template: `
199
- <ng-container #portalContentAnchor>
200
- @if (renderAutoBeforeRender()) {
201
- <ngt-portal-before-render
202
- [renderPriority]="autoRenderPriority()"
203
- [parentScene]="parentScene"
204
- [parentCamera]="parentCamera"
205
- />
206
- }
207
- </ng-container>
206
+ <ng-container #anchor />
207
+
208
+ @if (renderAutoBeforeRender()) {
209
+ <ngt-portal-before-render
210
+ [renderPriority]="autoRenderPriority()"
211
+ [parentScene]="parentScene()"
212
+ [parentCamera]="parentCamera()"
213
+ />
214
+ }
208
215
  `,
209
216
  imports: [NgtPortalBeforeRender],
210
- providers: [provideNgtStore(signalStore({}))],
217
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
211
218
  changeDetection: ChangeDetectionStrategy.OnPush,
219
+ providers: [provideStore(() => signalStore({}))],
212
220
  }]
213
221
  }], ctorParameters: () => [] });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsU0FBUyxFQUVULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBb0IsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQXFCLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTlDLE1BQU0sV0FBVyxHQUFHO0lBQ25CLEtBQUs7SUFDTCxLQUFLO0lBQ0wsUUFBUTtJQUNSLFNBQVM7SUFDVCxRQUFRO0lBQ1IsY0FBYztJQUNkLFFBQVE7SUFDUixZQUFZO0lBQ1osU0FBUztJQUNULE1BQU07SUFD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QVEsRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3hELEdBQUcsZUFBZTtTQUNOLENBQUM7SUFDZixDQUFDOzhHQXhIVyxTQUFTO2tHQUFULFNBQVMsa3VCQUhWLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZFQWtCVCxnQkFBZ0IsMkJBQVUsV0FBVyxvSkFDWCxnQkFBZ0IsNkNBL0I5RTs7Ozs7Ozs7OztFQVVULDREQTdEVyxxQkFBcUI7OzJGQWtFckIsU0FBUztrQkFsQnJCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7RUFVVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDaEMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN2RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRJbmplY3Rvcixcblx0aW5wdXQsXG5cdHNpZ25hbCxcblx0U2tpcFNlbGYsXG5cdFRlbXBsYXRlUmVmLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcblx0Vmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBDYW1lcmEsIE9iamVjdDNELCBSYXljYXN0ZXIsIFNjZW5lLCBWZWN0b3IyLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0RXZlbnRNYW5hZ2VyIH0gZnJvbSAnLi9ldmVudHMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgcHJlcGFyZSB9IGZyb20gJy4vaW5zdGFuY2UnO1xuaW1wb3J0IHsgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCB9IGZyb20gJy4vcmVuZGVyZXIvY29uc3RhbnRzJztcbmltcG9ydCB7IGluamVjdE5ndFN0b3JlLCBOZ3RTaXplLCBOZ3RTdGF0ZSwgcHJvdmlkZU5ndFN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIgfSBmcm9tICcuL3V0aWxzL2JlZm9yZS1yZW5kZXInO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IHNpZ25hbFN0b3JlIH0gZnJvbSAnLi91dGlscy9zaWduYWwtc3RvcmUnO1xuaW1wb3J0IHsgdXBkYXRlQ2FtZXJhIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5jb25zdCBwcml2YXRlS2V5cyA9IFtcblx0J2dldCcsXG5cdCdzZXQnLFxuXHQnc2VsZWN0Jyxcblx0J3NldFNpemUnLFxuXHQnc2V0RHByJyxcblx0J3NldEZyYW1lbG9vcCcsXG5cdCdldmVudHMnLFxuXHQnaW52YWxpZGF0ZScsXG5cdCdhZHZhbmNlJyxcblx0J3NpemUnLFxuXHQndmlld3BvcnQnLFxuXSBhcyBjb25zdDtcbnR5cGUgUHJpdmF0ZUtleXMgPSAodHlwZW9mIHByaXZhdGVLZXlzKVtudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndFBvcnRhbElucHV0cyB7XG5cdGNvbnRhaW5lcjogRWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRDtcblx0Y2FtZXJhOiBFbGVtZW50UmVmPENhbWVyYT4gfCBDYW1lcmE7XG5cdHN0YXRlOiBQYXJ0aWFsPFxuXHRcdE9taXQ8Tmd0U3RhdGUsIFByaXZhdGVLZXlzPiAmIHtcblx0XHRcdGV2ZW50czogUGFydGlhbDxQaWNrPE5ndEV2ZW50TWFuYWdlcjxhbnk+LCAnZW5hYmxlZCcgfCAncHJpb3JpdHknIHwgJ2NvbXB1dGUnIHwgJ2Nvbm5lY3RlZCc+Pjtcblx0XHRcdHNpemU6IE5ndFNpemU7XG5cdFx0fVxuXHQ+O1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3QtcG9ydGFsLWJlZm9yZS1yZW5kZXInLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDwhLS0gV2l0aG91dCBhbiBlbGVtZW50IHRoYXQgcmVjZWl2ZXMgcG9pbnRlciBldmVudHMgc3RhdGUucG9pbnRlciB3aWxsIGFsd2F5cyBiZSAwLzAgLS0+XG5cdFx0PG5ndC1ncm91cCAocG9pbnRlcm92ZXIpPVwib25Qb2ludGVyT3ZlcigpXCIgYXR0YWNoPVwibm9uZVwiIC8+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsQmVmb3JlUmVuZGVyIHtcblx0cHJpdmF0ZSBwb3J0YWxTdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG5cdHJlbmRlclByaW9yaXR5ID0gaW5wdXQoMSk7XG5cdHBhcmVudFNjZW5lID0gaW5wdXQucmVxdWlyZWQ8U2NlbmU+KCk7XG5cdHBhcmVudENhbWVyYSA9IGlucHV0LnJlcXVpcmVkPENhbWVyYT4oKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0bGV0IG9sZENsZWFyOiBib29sZWFuO1xuXHRcdFx0aW5qZWN0QmVmb3JlUmVuZGVyKFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgeyBnbCwgc2NlbmUsIGNhbWVyYSB9ID0gdGhpcy5wb3J0YWxTdG9yZS5nZXQoKTtcblx0XHRcdFx0XHRvbGRDbGVhciA9IGdsLmF1dG9DbGVhcjtcblx0XHRcdFx0XHRpZiAodGhpcy5yZW5kZXJQcmlvcml0eSgpID09PSAxKSB7XG5cdFx0XHRcdFx0XHQvLyBjbGVhciBzY2VuZSBhbmQgcmVuZGVyIHdpdGggZGVmYXVsdFxuXHRcdFx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGdsLnJlbmRlcih0aGlzLnBhcmVudFNjZW5lKCksIHRoaXMucGFyZW50Q2FtZXJhKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBkaXNhYmxlIGNsZWFuaW5nXG5cdFx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gZmFsc2U7XG5cdFx0XHRcdFx0Z2wuY2xlYXJEZXB0aCgpO1xuXHRcdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0XHQvLyByZXN0b3JlXG5cdFx0XHRcdFx0Z2wuYXV0b0NsZWFyID0gb2xkQ2xlYXI7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgcHJpb3JpdHk6IHRoaXMucmVuZGVyUHJpb3JpdHkoKSwgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cblxuXHRvblBvaW50ZXJPdmVyKCkge1xuXHRcdC8qIG5vb3AgKi9cblx0fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtwb3J0YWxDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxDb250ZW50IHtcblx0Y29uc3RydWN0b3IodmNyOiBWaWV3Q29udGFpbmVyUmVmLCBAU2tpcFNlbGYoKSBwYXJlbnRWY3I6IFZpZXdDb250YWluZXJSZWYpIHtcblx0XHRjb25zdCBjb21tZW50Tm9kZSA9IHZjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKGNvbW1lbnROb2RlW1NQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlRdKSB7XG5cdFx0XHRjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXShwYXJlbnRWY3IuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcblx0XHRcdGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcblx0XHR9XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LXBvcnRhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRhaW5lciAjcG9ydGFsQ29udGVudEFuY2hvcj5cblx0XHRcdEBpZiAocmVuZGVyQXV0b0JlZm9yZVJlbmRlcigpKSB7XG5cdFx0XHRcdDxuZ3QtcG9ydGFsLWJlZm9yZS1yZW5kZXJcblx0XHRcdFx0XHRbcmVuZGVyUHJpb3JpdHldPVwiYXV0b1JlbmRlclByaW9yaXR5KClcIlxuXHRcdFx0XHRcdFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZVwiXG5cdFx0XHRcdFx0W3BhcmVudENhbWVyYV09XCJwYXJlbnRDYW1lcmFcIlxuXHRcdFx0XHQvPlxuXHRcdFx0fVxuXHRcdDwvbmctY29udGFpbmVyPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0UG9ydGFsQmVmb3JlUmVuZGVyXSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZU5ndFN0b3JlKHNpZ25hbFN0b3JlPE5ndFN0YXRlPih7fSkpXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndFBvcnRhbCB7XG5cdGNvbnRhaW5lciA9IGlucHV0PE9iamVjdDNEPihwcmVwYXJlKG5ldyBTY2VuZSgpKSk7XG5cdGNhbWVyYSA9IGlucHV0PEVsZW1lbnRSZWY8Q2FtZXJhPiB8IENhbWVyYT4oKTtcblx0c3RhdGUgPSBpbnB1dDxcblx0XHRQYXJ0aWFsPFxuXHRcdFx0T21pdDxOZ3RTdGF0ZSwgUHJpdmF0ZUtleXM+ICYge1xuXHRcdFx0XHRldmVudHM6IFBhcnRpYWw8UGljazxOZ3RFdmVudE1hbmFnZXI8YW55PiwgJ2VuYWJsZWQnIHwgJ3ByaW9yaXR5JyB8ICdjb21wdXRlJyB8ICdjb25uZWN0ZWQnPj47XG5cdFx0XHRcdHNpemU6IE5ndFNpemU7XG5cdFx0XHR9XG5cdFx0PlxuXHQ+KCk7XG5cblx0YXV0b1JlbmRlciA9IGlucHV0KGZhbHNlKTtcblx0YXV0b1JlbmRlclByaW9yaXR5ID0gaW5wdXQoMSk7XG5cblx0cG9ydGFsQ29udGVudFRlbXBsYXRlID0gY29udGVudENoaWxkLnJlcXVpcmVkKE5ndFBvcnRhbENvbnRlbnQsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSk7XG5cdHBvcnRhbENvbnRlbnRBbmNob3IgPSB2aWV3Q2hpbGQucmVxdWlyZWQoJ3BvcnRhbENvbnRlbnRBbmNob3InLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSk7XG5cblx0cHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXHRwcml2YXRlIGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cdHByaXZhdGUgcGFyZW50U3RvcmUgPSBpbmplY3ROZ3RTdG9yZSh7IHNraXBTZWxmOiB0cnVlIH0pO1xuXHRwcml2YXRlIHBvcnRhbFN0b3JlID0gaW5qZWN0Tmd0U3RvcmUoeyBzZWxmOiB0cnVlIH0pO1xuXG5cdHByaXZhdGUgcG9ydGFsUmVuZGVyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG5cdHByb3RlY3RlZCByZW5kZXJBdXRvQmVmb3JlUmVuZGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wb3J0YWxSZW5kZXJlZCgpICYmIHRoaXMuYXV0b1JlbmRlcigpKTtcblx0cHJvdGVjdGVkIHBhcmVudFNjZW5lID0gdGhpcy5wYXJlbnRTdG9yZS5nZXQoJ3NjZW5lJyk7XG5cdHByb3RlY3RlZCBwYXJlbnRDYW1lcmEgPSB0aGlzLnBhcmVudFN0b3JlLmdldCgnY2FtZXJhJyk7XG5cblx0cHJpdmF0ZSByYXljYXN0ZXIgPSBuZXcgUmF5Y2FzdGVyKCk7XG5cdHByaXZhdGUgcG9pbnRlciA9IG5ldyBWZWN0b3IyKCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IHBhcmVudFN0YXRlID0gdGhpcy5wYXJlbnRTdG9yZS5zbmFwc2hvdDtcblx0XHRcdGxldCBbY29udGFpbmVyLCBzdGF0ZSwgYXV0b1JlbmRlciwgYXV0b1JlbmRlclByaW9yaXR5XSA9IFtcblx0XHRcdFx0dGhpcy5jb250YWluZXIoKSxcblx0XHRcdFx0dGhpcy5zdGF0ZSgpLFxuXHRcdFx0XHR0aGlzLmF1dG9SZW5kZXIoKSxcblx0XHRcdFx0dGhpcy5hdXRvUmVuZGVyUHJpb3JpdHkoKSxcblx0XHRcdF07XG5cblx0XHRcdGxldCBzdGF0ZUZyb21JbnB1dCA9IHN0YXRlO1xuXG5cdFx0XHRpZiAoIXN0YXRlRnJvbUlucHV0ICYmIGF1dG9SZW5kZXIpIHtcblx0XHRcdFx0c3RhdGVGcm9tSW5wdXQgPSB7IGV2ZW50czogeyBwcmlvcml0eTogYXV0b1JlbmRlclByaW9yaXR5ICsgMSB9IH07XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHsgZXZlbnRzID0ge30sIHNpemUgPSB7fSwgLi4ucmVzdCB9ID0gc3RhdGVGcm9tSW5wdXQgfHwge307XG5cblx0XHRcdGlmICghaXMuaW5zdGFuY2UoY29udGFpbmVyKSkge1xuXHRcdFx0XHRjb250YWluZXIgPSBwcmVwYXJlKGNvbnRhaW5lcik7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNvbnRhaW5lcik7XG5cdFx0XHRpZiAobG9jYWxTdGF0ZSAmJiAhbG9jYWxTdGF0ZS5zdG9yZSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLnN0b3JlID0gdGhpcy5wb3J0YWxTdG9yZTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5wb3J0YWxTdG9yZS51cGRhdGUoe1xuXHRcdFx0XHQuLi5wYXJlbnRTdGF0ZSxcblx0XHRcdFx0c2NlbmU6IGNvbnRhaW5lciBhcyBTY2VuZSxcblx0XHRcdFx0cmF5Y2FzdGVyOiB0aGlzLnJheWNhc3Rlcixcblx0XHRcdFx0cG9pbnRlcjogdGhpcy5wb2ludGVyLFxuXHRcdFx0XHRwcmV2aW91c1Jvb3Q6IHRoaXMucGFyZW50U3RvcmUsXG5cdFx0XHRcdGV2ZW50czogeyAuLi5wYXJlbnRTdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9LFxuXHRcdFx0XHRzaXplOiB7IC4uLnBhcmVudFN0YXRlLnNpemUsIC4uLnNpemUgfSxcblx0XHRcdFx0Li4ucmVzdCxcblx0XHRcdFx0c2V0RXZlbnRzOiAoZXZlbnRzKSA9PlxuXHRcdFx0XHRcdHRoaXMucG9ydGFsU3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGV2ZW50czogeyAuLi5zdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9IH0pKSxcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmF1dG9FZmZlY3QoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwcmV2aW91cyA9IHRoaXMucGFyZW50U3RvcmUuc3RhdGUoKTtcblx0XHRcdFx0dGhpcy5wb3J0YWxTdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB0aGlzLmluamVjdChwcmV2aW91cywgc3RhdGUpKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwb3J0YWxWaWV3ID0gdGhpcy5wb3J0YWxDb250ZW50QW5jaG9yKCkuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMucG9ydGFsQ29udGVudFRlbXBsYXRlKCkpO1xuXHRcdFx0XHRwb3J0YWxWaWV3LmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0dGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHRcdFx0cG9ydGFsVmlldy5kZXN0cm95KCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMucG9ydGFsUmVuZGVyZWQuc2V0KHRydWUpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBpbmplY3Qocm9vdFN0YXRlOiBOZ3RTdGF0ZSwgaW5qZWN0U3RhdGU6IE5ndFN0YXRlKSB7XG5cdFx0Y29uc3QgaW50ZXJzZWN0OiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHsgLi4ucm9vdFN0YXRlIH07XG5cblx0XHRPYmplY3Qua2V5cyhpbnRlcnNlY3QpLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRwcml2YXRlS2V5cy5pbmNsdWRlcyhrZXkgYXMgUHJpdmF0ZUtleXMpIHx8XG5cdFx0XHRcdHJvb3RTdGF0ZVtrZXkgYXMga2V5b2YgTmd0U3RhdGVdICE9PSBpbmplY3RTdGF0ZVtrZXkgYXMga2V5b2YgTmd0U3RhdGVdXG5cdFx0XHQpIHtcblx0XHRcdFx0ZGVsZXRlIGludGVyc2VjdFtrZXkgYXMga2V5b2YgTmd0U3RhdGVdO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgY29udGFpbmVyID0gdW50cmFja2VkKHRoaXMuY29udGFpbmVyKTtcblx0XHRjb25zdCB7IHNpemUsIGV2ZW50cywgLi4ucmVzdElucHV0c1N0YXRlIH0gPSB1bnRyYWNrZWQodGhpcy5zdGF0ZSkgfHwge307XG5cblx0XHRsZXQgdmlld3BvcnQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKGluamVjdFN0YXRlICYmIHNpemUpIHtcblx0XHRcdGNvbnN0IGNhbWVyYSA9IGluamVjdFN0YXRlLmNhbWVyYTtcblx0XHRcdHZpZXdwb3J0ID0gcm9vdFN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIG5ldyBWZWN0b3IzKCksIHNpemUpO1xuXHRcdFx0aWYgKGNhbWVyYSAhPT0gcm9vdFN0YXRlLmNhbWVyYSkgdXBkYXRlQ2FtZXJhKGNhbWVyYSwgc2l6ZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmludGVyc2VjdCxcblx0XHRcdHNjZW5lOiBjb250YWluZXIsXG5cdFx0XHRwcmV2aW91c1Jvb3Q6IHRoaXMucGFyZW50U3RvcmUsXG5cdFx0XHRldmVudHM6IHsgLi4ucm9vdFN0YXRlLmV2ZW50cywgLi4uKGluamVjdFN0YXRlPy5ldmVudHMgfHwge30pLCAuLi5ldmVudHMgfSxcblx0XHRcdHNpemU6IHsgLi4ucm9vdFN0YXRlLnNpemUsIC4uLnNpemUgfSxcblx0XHRcdHZpZXdwb3J0OiB7IC4uLnJvb3RTdGF0ZS52aWV3cG9ydCwgLi4uKHZpZXdwb3J0IHx8IHt9KSB9LFxuXHRcdFx0Li4ucmVzdElucHV0c1N0YXRlLFxuXHRcdH0gYXMgTmd0U3RhdGU7XG5cdH1cbn1cbiJdfQ==
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsU0FBUyxFQUVULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxnQkFBZ0IsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFvQixTQUFTLEVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFxQixZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVc5QyxNQUFNLE9BQU8scUJBQXFCO0lBT2pDO1FBTlEsZ0JBQVcsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUVwQyxtQkFBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVMsQ0FBQztR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QUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERlc3Ryb3lSZWYsXG5cdERpcmVjdGl2ZSxcblx0RW1iZWRkZWRWaWV3UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgQ2FtZXJhLCBPYmplY3QzRCwgUmF5Y2FzdGVyLCBTY2VuZSwgVmVjdG9yMiwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndENvbXB1dGVGdW5jdGlvbiB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIHByZXBhcmUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgfSBmcm9tICcuL3JlbmRlcmVyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpbmplY3RTdG9yZSwgTmd0U2l6ZSwgTmd0U3RhdGUsIHByb3ZpZGVTdG9yZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyIH0gZnJvbSAnLi91dGlscy9iZWZvcmUtcmVuZGVyJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4vdXRpbHMvdXBkYXRlJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LXBvcnRhbC1iZWZvcmUtcmVuZGVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8IS0tIFdpdGhvdXQgYW4gZWxlbWVudCB0aGF0IHJlY2VpdmVzIHBvaW50ZXIgZXZlbnRzIHN0YXRlLnBvaW50ZXIgd2lsbCBhbHdheXMgYmUgMC8wIC0tPlxuXHRcdDxuZ3QtZ3JvdXAgKHBvaW50ZXJvdmVyKT1cIm9uUG9pbnRlck92ZXIoKVwiIGF0dGFjaD1cIm5vbmVcIiAvPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndFBvcnRhbEJlZm9yZVJlbmRlciB7XG5cdHByaXZhdGUgcG9ydGFsU3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXG5cdHJlbmRlclByaW9yaXR5ID0gaW5wdXQoMSk7XG5cdHBhcmVudFNjZW5lID0gaW5wdXQucmVxdWlyZWQ8U2NlbmU+KCk7XG5cdHBhcmVudENhbWVyYSA9IGlucHV0LnJlcXVpcmVkPENhbWVyYT4oKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3RBdXRvRWZmZWN0KCkoKGluamVjdG9yKSA9PiB7XG5cdFx0XHQvLyB0cmFjayBzdGF0ZVxuXHRcdFx0dGhpcy5wb3J0YWxTdG9yZS5zdGF0ZSgpO1xuXHRcdFx0Y29uc3QgcHJpb3JpdHkgPSB0aGlzLnJlbmRlclByaW9yaXR5KCk7XG5cblx0XHRcdGxldCBvbGRDbGVhcjogYm9vbGVhbjtcblx0XHRcdHJldHVybiBpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCB7IGdsLCBzY2VuZSwgY2FtZXJhIH0gPSB0aGlzLnBvcnRhbFN0b3JlLnNuYXBzaG90O1xuXHRcdFx0XHRcdG9sZENsZWFyID0gZ2wuYXV0b0NsZWFyO1xuXHRcdFx0XHRcdGlmICh0aGlzLnJlbmRlclByaW9yaXR5KCkgPT09IDEpIHtcblx0XHRcdFx0XHRcdC8vIGNsZWFyIHNjZW5lIGFuZCByZW5kZXIgd2l0aCBkZWZhdWx0XG5cdFx0XHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSB0cnVlO1xuXHRcdFx0XHRcdFx0Z2wucmVuZGVyKHRoaXMucGFyZW50U2NlbmUoKSwgdGhpcy5wYXJlbnRDYW1lcmEoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGRpc2FibGUgY2xlYW5pbmdcblx0XHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSBmYWxzZTtcblx0XHRcdFx0XHRnbC5jbGVhckRlcHRoKCk7XG5cdFx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRcdC8vIHJlc3RvcmVcblx0XHRcdFx0XHRnbC5hdXRvQ2xlYXIgPSBvbGRDbGVhcjtcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBwcmlvcml0eSwgaW5qZWN0b3IgfSxcblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cblxuXHRvblBvaW50ZXJPdmVyKCkge1xuXHRcdC8qIG5vb3AgKi9cblx0fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtwb3J0YWxDb250ZW50XScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RQb3J0YWxDb250ZW50IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29uc3QgeyBlbGVtZW50OiBjb21tZW50IH0gPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cdFx0Y29uc3QgeyBlbGVtZW50OiBwYXJlbnRDb21tZW50IH0gPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZiwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcblxuXHRcdGNvbnN0IGNvbW1lbnROb2RlID0gY29tbWVudC5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuXHRcdFx0Y29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0ocGFyZW50Q29tbWVudC5uYXRpdmVFbGVtZW50KTtcblx0XHRcdGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfOiBOZ3RQb3J0YWxDb250ZW50LCBjdHg6IHVua25vd24pOiBjdHggaXMgeyBjb250YWluZXI6IE9iamVjdDNEOyBpbmplY3RvcjogSW5qZWN0b3IgfSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cbi8vIEtleXMgdGhhdCBzaG91bGRuJ3QgYmUgY29waWVkIGJldHdlZW4gc3RvcmVzXG5leHBvcnQgY29uc3QgcHJpdmF0ZUtleXMgPSBbXG5cdCdzZXRTaXplJyxcblx0J3NldEZyYW1lbG9vcCcsXG5cdCdzZXREcHInLFxuXHQnZXZlbnRzJyxcblx0J3NldEV2ZW50cycsXG5cdCdpbnZhbGlkYXRlJyxcblx0J2FkdmFuY2UnLFxuXHQnc2l6ZScsXG5cdCd2aWV3cG9ydCcsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBOZ3RQb3J0YWxQcml2YXRlS2V5cyA9ICh0eXBlb2YgcHJpdmF0ZUtleXMpW251bWJlcl07XG5cbmV4cG9ydCB0eXBlIE5ndFBvcnRhbEluamVjdGFibGVTdGF0ZSA9IFBhcnRpYWw8XG5cdE9taXQ8Tmd0U3RhdGUsIE5ndFBvcnRhbFByaXZhdGVLZXlzPiAmIHtcblx0XHRldmVudHM/OiB7XG5cdFx0XHRlbmFibGVkPzogYm9vbGVhbjtcblx0XHRcdHByaW9yaXR5PzogbnVtYmVyO1xuXHRcdFx0Y29tcHV0ZT86IE5ndENvbXB1dGVGdW5jdGlvbjtcblx0XHRcdGNvbm5lY3RlZD86IGFueTtcblx0XHR9O1xuXHRcdHNpemU/OiBOZ3RTaXplO1xuXHR9XG4+O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3QtcG9ydGFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGFpbmVyICNhbmNob3IgLz5cblxuXHRcdEBpZiAocmVuZGVyQXV0b0JlZm9yZVJlbmRlcigpKSB7XG5cdFx0XHQ8bmd0LXBvcnRhbC1iZWZvcmUtcmVuZGVyXG5cdFx0XHRcdFtyZW5kZXJQcmlvcml0eV09XCJhdXRvUmVuZGVyUHJpb3JpdHkoKVwiXG5cdFx0XHRcdFtwYXJlbnRTY2VuZV09XCJwYXJlbnRTY2VuZSgpXCJcblx0XHRcdFx0W3BhcmVudENhbWVyYV09XCJwYXJlbnRDYW1lcmEoKVwiXG5cdFx0XHQvPlxuXHRcdH1cblx0YCxcblx0aW1wb3J0czogW05ndFBvcnRhbEJlZm9yZVJlbmRlcl0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVTdG9yZSgoKSA9PiBzaWduYWxTdG9yZSh7fSkpXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0UG9ydGFsIHtcblx0Y29udGFpbmVyID0gaW5wdXQucmVxdWlyZWQ8T2JqZWN0M0Q+KCk7XG5cdHN0YXRlID0gaW5wdXQ8Tmd0UG9ydGFsSW5qZWN0YWJsZVN0YXRlPih7fSk7XG5cblx0LyoqXG5cdCAqIEBkZWNzcmlwdGlvbiB0dXJuIHRoaXMgb24gdG8gZW5hYmxlIFwiSFVEXCIgbGlrZSByZW5kZXJpbmdcblx0ICovXG5cdGF1dG9SZW5kZXIgPSBpbnB1dChmYWxzZSk7XG5cdGF1dG9SZW5kZXJQcmlvcml0eSA9IGlucHV0KDEpO1xuXG5cdHBvcnRhbENvbnRlbnQgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoTmd0UG9ydGFsQ29udGVudCwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KTtcblx0cG9ydGFsQW5jaG9yID0gdmlld0NoaWxkLnJlcXVpcmVkKCdhbmNob3InLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSk7XG5cblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdHByaXZhdGUgcG9ydGFsU3RvcmUgPSBpbmplY3RTdG9yZSh7IHNlbGY6IHRydWUgfSk7XG5cdHByaXZhdGUgcGFyZW50U3RvcmUgPSBpbmplY3RTdG9yZSh7IHNraXBTZWxmOiB0cnVlIH0pO1xuXHRwYXJlbnRTY2VuZSA9IHRoaXMucGFyZW50U3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwYXJlbnRDYW1lcmEgPSB0aGlzLnBhcmVudFN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cblx0cHJpdmF0ZSByYXljYXN0ZXIgPSBuZXcgUmF5Y2FzdGVyKCk7XG5cdHByaXZhdGUgcG9pbnRlciA9IG5ldyBWZWN0b3IyKCk7XG5cdHByaXZhdGUgcG9ydGFsUmVuZGVyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG5cdHJlbmRlckF1dG9CZWZvcmVSZW5kZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBvcnRhbFJlbmRlcmVkKCkgJiYgdGhpcy5hdXRvUmVuZGVyKCkpO1xuXG5cdHByaXZhdGUgcG9ydGFsVmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXG5cdFx0Y29uc3QgcGFyZW50U3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLnNlbGVjdCgpO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLnBhcmVudFN0b3JlLnNuYXBzaG90O1xuXG5cdFx0XHRjb25zdCB7IGV2ZW50cyA9IHt9LCBzaXplID0ge30sIC4uLnJlc3QgfSA9IHRoaXMuc3RhdGUoKTtcblx0XHRcdGxldCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcigpO1xuXG5cdFx0XHRpZiAoIWlzLmluc3RhbmNlKGNvbnRhaW5lcikpIHtcblx0XHRcdFx0Y29udGFpbmVyID0gcHJlcGFyZShjb250YWluZXIsIHsgc3RvcmU6IHRoaXMucG9ydGFsU3RvcmUgfSk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNvbnRhaW5lcik7XG5cdFx0XHRpZiAobG9jYWxTdGF0ZSAmJiAhbG9jYWxTdGF0ZS5zdG9yZSkge1xuXHRcdFx0XHRsb2NhbFN0YXRlLnN0b3JlID0gdGhpcy5wb3J0YWxTdG9yZTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5wb3J0YWxTdG9yZS51cGRhdGUoe1xuXHRcdFx0XHQuLi5wcmV2aW91c1N0YXRlLFxuXHRcdFx0XHRzY2VuZTogY29udGFpbmVyIGFzIFNjZW5lLFxuXHRcdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuXHRcdFx0XHRwb2ludGVyOiB0aGlzLnBvaW50ZXIsXG5cdFx0XHRcdGV2ZW50czogeyAuLi5wcmV2aW91c1N0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0sXG5cdFx0XHRcdHNpemU6IHsgLi4ucHJldmlvdXNTdGF0ZS5zaXplLCAuLi5zaXplIH0sXG5cdFx0XHRcdHByZXZpb3VzUm9vdDogdGhpcy5wYXJlbnRTdG9yZSxcblx0XHRcdFx0Li4ucmVzdCxcblx0XHRcdFx0c2V0RXZlbnRzOiAoZXZlbnRzKSA9PlxuXHRcdFx0XHRcdHRoaXMucG9ydGFsU3RvcmUudXBkYXRlKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGV2ZW50czogeyAuLi5zdGF0ZS5ldmVudHMsIC4uLmV2ZW50cyB9IH0pKSxcblx0XHRcdH0pO1xuXG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XG5cdFx0XHRcdGNvbnN0IF9wYXJlbnRTdGF0ZSA9IHBhcmVudFN0YXRlKCk7XG5cdFx0XHRcdHRoaXMucG9ydGFsU3RvcmUudXBkYXRlKChwcmV2KSA9PiB0aGlzLmluamVjdChfcGFyZW50U3RhdGUsIHByZXYsIHN0YXRlLCB1bnRyYWNrZWQodGhpcy5jb250YWluZXIpKSk7XG5cdFx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucG9ydGFsVmlldykge1xuXHRcdFx0XHRcdFx0dGhpcy5wb3J0YWxWaWV3LmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLnBvcnRhbFZpZXcgPSB0aGlzLnBvcnRhbEFuY2hvcigpLmNyZWF0ZUVtYmVkZGVkVmlldyhcblx0XHRcdFx0XHRcdHRoaXMucG9ydGFsQ29udGVudCgpLFxuXHRcdFx0XHRcdFx0eyBjb250YWluZXI6IHRoaXMuY29udGFpbmVyKCksIGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0XHRcdFx0XHR7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR0aGlzLnBvcnRhbFZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHRcdHRoaXMucG9ydGFsUmVuZGVyZWQuc2V0KHRydWUpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHR0aGlzLnBvcnRhbFZpZXc/LmRlc3Ryb3koKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgaW5qZWN0KFxuXHRcdHBhcmVudFN0YXRlOiBOZ3RTdGF0ZSxcblx0XHRwb3J0YWxTdGF0ZTogTmd0U3RhdGUsXG5cdFx0aW5qZWN0ZWRTdGF0ZTogTmd0UG9ydGFsSW5qZWN0YWJsZVN0YXRlLFxuXHRcdGNvbnRhaW5lcjogT2JqZWN0M0QsXG5cdCkge1xuXHRcdGNvbnN0IHsgZXZlbnRzID0ge30sIHNpemUsIC4uLnJlc3QgfSA9IGluamVjdGVkU3RhdGU7XG5cdFx0Y29uc3QgaW50ZXJzZWN0OiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHsgLi4ucGFyZW50U3RhdGUgfTsgLy8gYWxsIHByZXYgc3RhdGUgcHJvcHNcblxuXHRcdE9iamVjdC5rZXlzKHBhcmVudFN0YXRlKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0cHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5IGFzIE5ndFBvcnRhbFByaXZhdGVLZXlzKSB8fFxuXHRcdFx0XHQocGFyZW50U3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAhPT0gcG9ydGFsU3RhdGVba2V5IGFzIGtleW9mIE5ndFN0YXRlXSAmJlxuXHRcdFx0XHRcdHBvcnRhbFN0YXRlW2tleSBhcyBrZXlvZiBOZ3RTdGF0ZV0pXG5cdFx0XHQpIHtcblx0XHRcdFx0ZGVsZXRlIGludGVyc2VjdFtrZXkgYXMga2V5b2YgTmd0U3RhdGVdO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0bGV0IHZpZXdwb3J0ID0gdW5kZWZpbmVkO1xuXHRcdGlmIChwb3J0YWxTdGF0ZSAmJiBzaXplKSB7XG5cdFx0XHRjb25zdCBjYW1lcmEgPSBwb3J0YWxTdGF0ZS5jYW1lcmE7XG5cdFx0XHQvLyBDYWxjdWxhdGUgdGhlIG92ZXJyaWRlIHZpZXdwb3J0LCBpZiBwcmVzZW50XG5cdFx0XHR2aWV3cG9ydCA9IHBhcmVudFN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIG5ldyBWZWN0b3IzKCksIHNpemUpO1xuXHRcdFx0Ly8gVXBkYXRlIHRoZSBwb3J0YWwgY2FtZXJhLCBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGxheWVyXG5cdFx0XHRpZiAoY2FtZXJhICE9PSBwYXJlbnRTdGF0ZS5jYW1lcmEpIHtcblx0XHRcdFx0dXBkYXRlQ2FtZXJhKGNhbWVyYSwgc2l6ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmludGVyc2VjdCxcblx0XHRcdHNjZW5lOiBjb250YWluZXIgYXMgU2NlbmUsXG5cdFx0XHRyYXljYXN0ZXI6IHRoaXMucmF5Y2FzdGVyLFxuXHRcdFx0cG9pbnRlcjogdGhpcy5wb2ludGVyLFxuXHRcdFx0ZXZlbnRzOiB7IC4uLnBhcmVudFN0YXRlLmV2ZW50cywgLi4uKHBvcnRhbFN0YXRlLmV2ZW50cyB8fCB7fSksIC4uLihldmVudHMgfHwge30pIH0sXG5cdFx0XHRzaXplOiB7IC4uLnBhcmVudFN0YXRlLnNpemUsIC4uLihzaXplIHx8IHt9KSB9LFxuXHRcdFx0dmlld3BvcnQ6IHsgLi4ucGFyZW50U3RhdGUudmlld3BvcnQsIC4uLih2aWV3cG9ydCB8fCB7fSkgfSxcblx0XHRcdC4uLnJlc3QsXG5cdFx0fTtcblx0fVxufVxuIl19
@@ -3,5 +3,5 @@ const catalogue = {};
3
3
  export function extend(objects) {
4
4
  Object.assign(catalogue, objects);
5
5
  }
6
- export const [injectNgtCatalogue] = createInjectionToken(() => catalogue);
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZ3VlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY2F0YWxvZ3VlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSXpFLE1BQU0sU0FBUyxHQUFzQyxFQUFFLENBQUM7QUFFeEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFlO0lBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ25neHRlbnNpb24vY3JlYXRlLWluamVjdGlvbi10b2tlbic7XG5cbmV4cG9ydCB0eXBlIE5ndEFueUNvbnN0cnVjdG9yID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuXG5jb25zdCBjYXRhbG9ndWU6IFJlY29yZDxzdHJpbmcsIE5ndEFueUNvbnN0cnVjdG9yPiA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iamVjdHM6IG9iamVjdCk6IHZvaWQge1xuXHRPYmplY3QuYXNzaWduKGNhdGFsb2d1ZSwgb2JqZWN0cyk7XG59XG5cbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0Q2F0YWxvZ3VlXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKCgpID0+IGNhdGFsb2d1ZSk7XG4iXX0=
6
+ export const [injectCatalogue] = createInjectionToken(() => catalogue);
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZ3VlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY2F0YWxvZ3VlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSXpFLE1BQU0sU0FBUyxHQUFzQyxFQUFFLENBQUM7QUFFeEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFlO0lBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSW5qZWN0aW9uVG9rZW4gfSBmcm9tICduZ3h0ZW5zaW9uL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuXG5leHBvcnQgdHlwZSBOZ3RBbnlDb25zdHJ1Y3RvciA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuY29uc3QgY2F0YWxvZ3VlOiBSZWNvcmQ8c3RyaW5nLCBOZ3RBbnlDb25zdHJ1Y3Rvcj4gPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZChvYmplY3RzOiBvYmplY3QpOiB2b2lkIHtcblx0T2JqZWN0LmFzc2lnbihjYXRhbG9ndWUsIG9iamVjdHMpO1xufVxuXG5leHBvcnQgY29uc3QgW2luamVjdENhdGFsb2d1ZV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbigoKSA9PiBjYXRhbG9ndWUpO1xuIl19
@@ -7,16 +7,14 @@ export const SPECIAL_DOM_TAG = {
7
7
  NGT_VALUE: 'ngt-value',
8
8
  };
9
9
  export const SPECIAL_PROPERTIES = {
10
- COMPOUND: 'ngtCompound',
11
10
  RENDER_PRIORITY: 'priority',
12
11
  ATTACH: 'attach',
13
12
  RAW_VALUE: 'rawValue',
14
13
  PARAMETERS: 'parameters',
15
- REF: 'ref',
16
14
  };
17
15
  export const SPECIAL_EVENTS = {
18
16
  BEFORE_RENDER: 'beforeRender',
19
- AFTER_UPDATE: 'afterUpdate',
20
- AFTER_ATTACH: 'afterAttach',
17
+ UPDATED: 'updated',
18
+ ATTACHED: 'attached',
21
19
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsOEJBQThCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzlCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0NBQ2IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2pDLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLEdBQUcsRUFBRSxLQUFLO0NBQ0QsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM3QixhQUFhLEVBQUUsY0FBYztJQUM3QixZQUFZLEVBQUUsYUFBYTtJQUMzQixZQUFZLEVBQUUsYUFBYTtDQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFJPVVRFRF9TQ0VORSA9ICdfX25ndF9yZW5kZXJlcl9pc19yb3V0ZWRfc2NlbmVfXyc7XG5leHBvcnQgY29uc3QgSFRNTCA9ICdfX25ndF9yZW5kZXJlcl9pc19odG1sJztcbmV4cG9ydCBjb25zdCBTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UID0gJ19fbmd0X3JlbmRlcmVyX2FkZF9jb21tZW50X18nO1xuXG5leHBvcnQgY29uc3QgU1BFQ0lBTF9ET01fVEFHID0ge1xuXHROR1RfUE9SVEFMOiAnbmd0LXBvcnRhbCcsXG5cdE5HVF9QUklNSVRJVkU6ICduZ3QtcHJpbWl0aXZlJyxcblx0TkdUX1ZBTFVFOiAnbmd0LXZhbHVlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX1BST1BFUlRJRVMgPSB7XG5cdENPTVBPVU5EOiAnbmd0Q29tcG91bmQnLFxuXHRSRU5ERVJfUFJJT1JJVFk6ICdwcmlvcml0eScsXG5cdEFUVEFDSDogJ2F0dGFjaCcsXG5cdFJBV19WQUxVRTogJ3Jhd1ZhbHVlJyxcblx0UEFSQU1FVEVSUzogJ3BhcmFtZXRlcnMnLFxuXHRSRUY6ICdyZWYnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfRVZFTlRTID0ge1xuXHRCRUZPUkVfUkVOREVSOiAnYmVmb3JlUmVuZGVyJyxcblx0QUZURVJfVVBEQVRFOiAnYWZ0ZXJVcGRhdGUnLFxuXHRBRlRFUl9BVFRBQ0g6ICdhZnRlckF0dGFjaCcsXG59IGFzIGNvbnN0O1xuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsOEJBQThCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzlCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0NBQ2IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2pDLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLFVBQVUsRUFBRSxZQUFZO0NBQ2YsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM3QixhQUFhLEVBQUUsY0FBYztJQUM3QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUk9VVEVEX1NDRU5FID0gJ19fbmd0X3JlbmRlcmVyX2lzX3JvdXRlZF9zY2VuZV9fJztcbmV4cG9ydCBjb25zdCBIVE1MID0gJ19fbmd0X3JlbmRlcmVyX2lzX2h0bWwnO1xuZXhwb3J0IGNvbnN0IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgPSAnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyc7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0RPTV9UQUcgPSB7XG5cdE5HVF9QT1JUQUw6ICduZ3QtcG9ydGFsJyxcblx0TkdUX1BSSU1JVElWRTogJ25ndC1wcmltaXRpdmUnLFxuXHROR1RfVkFMVUU6ICduZ3QtdmFsdWUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfUFJPUEVSVElFUyA9IHtcblx0UkVOREVSX1BSSU9SSVRZOiAncHJpb3JpdHknLFxuXHRBVFRBQ0g6ICdhdHRhY2gnLFxuXHRSQVdfVkFMVUU6ICdyYXdWYWx1ZScsXG5cdFBBUkFNRVRFUlM6ICdwYXJhbWV0ZXJzJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0VWRU5UUyA9IHtcblx0QkVGT1JFX1JFTkRFUjogJ2JlZm9yZVJlbmRlcicsXG5cdFVQREFURUQ6ICd1cGRhdGVkJyxcblx0QVRUQUNIRUQ6ICdhdHRhY2hlZCcsXG59IGFzIGNvbnN0O1xuIl19