@ngneat/helipopper 10.0.0-alpha.1 → 10.1.0-alpha.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.
package/README.md CHANGED
@@ -49,12 +49,12 @@ $ pnpm i @ngneat/helipopper
49
49
  Configure it as shown below:
50
50
 
51
51
  ```ts
52
- import { provideTippyConfig, tooltipVariation, popperVariation } from '@ngneat/helipopper';
52
+ import { provideTippyLoader provideTippyConfig, tooltipVariation, popperVariation } from '@ngneat/helipopper/config';
53
53
 
54
54
  bootstrapApplication(AppComponent, {
55
55
  providers: [
56
+ provideTippyLoader(() => import('tippy.js')),
56
57
  provideTippyConfig({
57
- loader: () => import('tippy.js'),
58
58
  defaultVariation: 'tooltip',
59
59
  variations: {
60
60
  tooltip: tooltipVariation,
@@ -65,14 +65,12 @@ bootstrapApplication(AppComponent, {
65
65
  });
66
66
  ```
67
67
 
68
- Please note that the `loader` property is required, as it specifies how Tippy is loaded - either synchronously or asynchronously. When dynamic import is used, the library will load only when the first Tippy directive is rendered. If we want it to load synchronously, we use the following:
68
+ Please note that the `provideTippyLoader` is required, as it specifies how Tippy is loaded - either synchronously or asynchronously. When dynamic import is used, the library will load only when the first Tippy directive is rendered. If we want it to load synchronously, we use the following:
69
69
 
70
70
  ```ts
71
71
  import tippy from 'tippy.js';
72
72
 
73
- provideTippyConfig({
74
- loader: () => tippy,
75
- });
73
+ provideTippyLoader(() => tippy);
76
74
  ```
77
75
 
78
76
  Add the styles you want to `styles.scss`:
@@ -85,7 +83,19 @@ Add the styles you want to `styles.scss`:
85
83
 
86
84
  You have the freedom to [customize](https://atomiks.github.io/tippyjs/v6/themes/) it if you need to.
87
85
 
88
- Import the standalone `TippyDirective` and use it in your templates:
86
+ Import the standalone `TippyDirective` in your components:
87
+
88
+ ```ts
89
+ import { TippyDirective } from '@ngneat/helipopper';
90
+
91
+ @Component({
92
+ standalone: true,
93
+ imports: [TippyDirective],
94
+ })
95
+ class ExampleComponent {}
96
+ ```
97
+
98
+ And use it in your templates:
89
99
 
90
100
  ```html
91
101
  <button tp="Helpful Message">I have a tooltip</button>
@@ -119,11 +129,11 @@ export const tooltipVariation = {
119
129
  ### Use `Component` as content
120
130
 
121
131
  ```ts
122
- import { TIPPY_REF, TippyInstance } from '@ngneat/helipopper';
132
+ import { injectTippyRef, TippyInstance } from '@ngneat/helipopper/config';
123
133
 
124
134
  @Component()
125
135
  class MyComponent {
126
- tippy = inject(TIPPY_REF);
136
+ tippy = injectTippyRef();
127
137
  }
128
138
  ```
129
139
 
@@ -137,7 +147,9 @@ You can pass the `onlyTextOverflow` input to show the tooltip only when the host
137
147
 
138
148
  ```html
139
149
  <div style="max-width: 100px;" class="overflow-hidden flex">
140
- <p class="ellipsis" [tp]="text" tpPlacement="right" [tpOnlyTextOverflow]="true">{{ text }}</p>
150
+ <p class="ellipsis" [tp]="text" tpPlacement="right" [tpOnlyTextOverflow]="true">
151
+ {{ text }}
152
+ </p>
141
153
  </div>
142
154
  ```
143
155
 
@@ -185,7 +197,12 @@ Note that it's using [`IntersectionObserver`](https://caniuse.com/intersectionob
185
197
  First, define the `contextMenu` variation:
186
198
 
187
199
  ```ts
188
- import { popperVariation, tooltipVariation, provideTippyConfig, withContextMenuVariation } from '@ngneat/helipopper';
200
+ import {
201
+ popperVariation,
202
+ tooltipVariation,
203
+ provideTippyConfig,
204
+ withContextMenuVariation,
205
+ } from '@ngneat/helipopper/config';
189
206
 
190
207
  bootstrapApplication(AppComponent, {
191
208
  providers: [
@@ -212,7 +229,14 @@ Now you can use it in your template:
212
229
  </ng-template>
213
230
 
214
231
  <ul>
215
- <li *ngFor="let item of list" [tp]="contextMenu" [tpData]="item" tpVariation="contextMenu">{{ item.label }}</li>
232
+ <li
233
+ *ngFor="let item of list"
234
+ [tp]="contextMenu"
235
+ [tpData]="item"
236
+ tpVariation="contextMenu"
237
+ >
238
+ {{ item.label }}
239
+ </li>
216
240
  </ul>
217
241
  ```
218
242
 
@@ -230,7 +254,9 @@ Now you can use it in your template:
230
254
  Use isVisible to trigger show and hide. Set trigger to manual.
231
255
 
232
256
  ```html
233
- <div tp="Helpful Message" tpTrigger="manual" [tpIsVisible]="visibility">Click Open to see me</div>
257
+ <div tp="Helpful Message" tpTrigger="manual" [tpIsVisible]="visibility">
258
+ Click Open to see me
259
+ </div>
234
260
 
235
261
  <button (click)="visibility = true">Open</button>
236
262
  <button (click)="visibility = false">Close</button>
@@ -296,9 +322,11 @@ class Component {
296
322
  tippy: TippyInstance;
297
323
  private tippyService = inject(TippyService);
298
324
 
299
- show() {
325
+ async show() {
300
326
  if (!this.tippy) {
301
- this.tippy = this.tippyService.create(this.inputName, 'this field is required');
327
+ this.tippy = await firstValueFrom(
328
+ this.tippyService.create(this.inputName, 'this field is required')
329
+ );
302
330
  }
303
331
 
304
332
  this.tippy.show();
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ngneat/helipopper/config" />
5
+ export * from './public-api';
@@ -0,0 +1,2 @@
1
+ import { type TippyInstance } from './tippy.types';
2
+ export declare function injectTippyRef(): TippyInstance;
@@ -0,0 +1,4 @@
1
+ import { type Provider } from '@angular/core';
2
+ import { type TippyLoader, type TippyConfig } from './tippy.types';
3
+ export declare function provideTippyLoader(loader: TippyLoader): import("@angular/core").EnvironmentProviders;
4
+ export declare function provideTippyConfig(config: TippyConfig): Provider;
@@ -0,0 +1,4 @@
1
+ export { tooltipVariation, popperVariation, withContextMenuVariation } from './defaults';
2
+ export { CreateOptions, TippyInstance, TippyProps, ExtendedTippyProps, TippyElement, ExtendedTippyInstance, TippyConfig, TippyLoader, TIPPY_LOADER, TIPPY_REF, TIPPY_CONFIG, } from './tippy.types';
3
+ export { provideTippyLoader, provideTippyConfig } from './providers';
4
+ export { injectTippyRef } from './inject-tippy';
@@ -8,7 +8,6 @@ export interface CreateOptions extends Partial<TippyProps>, ViewOptions {
8
8
  className: string | string[];
9
9
  data: any;
10
10
  }
11
- export declare const TIPPY_REF: InjectionToken<TippyInstance>;
12
11
  export interface TippyInstance extends Instance {
13
12
  data?: any;
14
13
  }
@@ -25,9 +24,10 @@ export interface ExtendedTippyInstance<T> extends TippyInstance {
25
24
  $viewOptions: ViewOptions;
26
25
  context?: ViewOptions['context'];
27
26
  }
28
- export interface TippyConfig extends Partial<ExtendedTippyProps> {
29
- loader: () => typeof tippy | Promise<{
30
- default: typeof tippy;
31
- }>;
32
- }
33
- export declare const TIPPY_CONFIG: InjectionToken<TippyConfig>;
27
+ export type TippyConfig = Partial<ExtendedTippyProps>;
28
+ export type TippyLoader = () => typeof tippy | Promise<{
29
+ default: typeof tippy;
30
+ }>;
31
+ export declare const TIPPY_LOADER: InjectionToken<TippyLoader>;
32
+ export declare const TIPPY_REF: InjectionToken<TippyInstance>;
33
+ export declare const TIPPY_CONFIG: InjectionToken<Partial<ExtendedTippyProps>>;
@@ -0,0 +1,25 @@
1
+ export const tooltipVariation = {
2
+ theme: undefined,
3
+ arrow: false,
4
+ animation: 'scale',
5
+ trigger: 'mouseenter',
6
+ offset: [0, 5],
7
+ };
8
+ export const popperVariation = {
9
+ theme: 'light',
10
+ arrow: true,
11
+ offset: [0, 10],
12
+ animation: undefined,
13
+ trigger: 'click',
14
+ interactive: true,
15
+ };
16
+ export function withContextMenuVariation(baseVariation) {
17
+ return {
18
+ ...baseVariation,
19
+ placement: 'right-start',
20
+ trigger: 'manual',
21
+ arrow: false,
22
+ offset: [0, 0],
23
+ };
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9jb25maWcvc3JjL2RlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFjO0lBQ3pDLEtBQUssRUFBRSxTQUFTO0lBQ2hCLEtBQUssRUFBRSxLQUFLO0lBQ1osU0FBUyxFQUFFLE9BQU87SUFDbEIsT0FBTyxFQUFFLFlBQVk7SUFDckIsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWM7SUFDeEMsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDZixTQUFTLEVBQUUsU0FBUztJQUNwQixPQUFPLEVBQUUsT0FBTztJQUNoQixXQUFXLEVBQUUsSUFBSTtDQUNsQixDQUFDO0FBRUYsTUFBTSxVQUFVLHdCQUF3QixDQUFDLGFBQXdCO0lBQy9ELE9BQU87UUFDTCxHQUFHLGFBQWE7UUFDaEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsT0FBTyxFQUFFLFFBQVE7UUFDakIsS0FBSyxFQUFFLEtBQUs7UUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRpcHB5UHJvcHMgfSBmcm9tICcuL3RpcHB5LnR5cGVzJztcblxuLy8gQSB2YXJpYXRpb24gaXMgYSBzZXQgb2YgcHJlZGVmaW5lZCB0aXBweSBwcm9wZXJ0aWVzLlxudHlwZSBWYXJpYXRpb24gPSBQYXJ0aWFsPFRpcHB5UHJvcHM+O1xuXG5leHBvcnQgY29uc3QgdG9vbHRpcFZhcmlhdGlvbjogVmFyaWF0aW9uID0ge1xuICB0aGVtZTogdW5kZWZpbmVkLFxuICBhcnJvdzogZmFsc2UsXG4gIGFuaW1hdGlvbjogJ3NjYWxlJyxcbiAgdHJpZ2dlcjogJ21vdXNlZW50ZXInLFxuICBvZmZzZXQ6IFswLCA1XSxcbn07XG5cbmV4cG9ydCBjb25zdCBwb3BwZXJWYXJpYXRpb246IFZhcmlhdGlvbiA9IHtcbiAgdGhlbWU6ICdsaWdodCcsXG4gIGFycm93OiB0cnVlLFxuICBvZmZzZXQ6IFswLCAxMF0sXG4gIGFuaW1hdGlvbjogdW5kZWZpbmVkLFxuICB0cmlnZ2VyOiAnY2xpY2snLFxuICBpbnRlcmFjdGl2ZTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ29udGV4dE1lbnVWYXJpYXRpb24oYmFzZVZhcmlhdGlvbjogVmFyaWF0aW9uKTogVmFyaWF0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlVmFyaWF0aW9uLFxuICAgIHBsYWNlbWVudDogJ3JpZ2h0LXN0YXJ0JyxcbiAgICB0cmlnZ2VyOiAnbWFudWFsJyxcbiAgICBhcnJvdzogZmFsc2UsXG4gICAgb2Zmc2V0OiBbMCwgMF0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { inject } from '@angular/core';
2
+ import { TIPPY_REF } from './tippy.types';
3
+ export function injectTippyRef() {
4
+ const instance = inject(TIPPY_REF, { optional: true });
5
+ if (instance) {
6
+ return instance;
7
+ }
8
+ throw new Error('tp is not provided in the current context or on one of its ancestors');
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXRpcHB5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvY29uZmlnL3NyYy9pbmplY3QtdGlwcHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUFNLGVBQWUsQ0FBQztBQUU5RCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdkQsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFDMUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUSVBQWV9SRUYsIHR5cGUgVGlwcHlJbnN0YW5jZSB9IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VGlwcHlSZWYoKTogVGlwcHlJbnN0YW5jZSB7XG4gIGNvbnN0IGluc3RhbmNlID0gaW5qZWN0KFRJUFBZX1JFRiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBpZiAoaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3RwIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY3VycmVudCBjb250ZXh0IG9yIG9uIG9uZSBvZiBpdHMgYW5jZXN0b3JzJyk7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmduZWF0LWhlbGlwb3BwZXItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvY29uZmlnL3NyYy9uZ25lYXQtaGVsaXBvcHBlci1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { makeEnvironmentProviders } from '@angular/core';
2
+ import { TIPPY_CONFIG, TIPPY_LOADER, } from './tippy.types';
3
+ export function provideTippyLoader(loader) {
4
+ return makeEnvironmentProviders([{ provide: TIPPY_LOADER, useValue: loader }]);
5
+ }
6
+ export function provideTippyConfig(config) {
7
+ return { provide: TIPPY_CONFIG, useValue: config };
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvY29uZmlnL3NyYy9wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksR0FHYixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBbUI7SUFDcEQsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBbUI7SUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMsIHR5cGUgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgVElQUFlfQ09ORklHLFxuICBUSVBQWV9MT0FERVIsXG4gIHR5cGUgVGlwcHlMb2FkZXIsXG4gIHR5cGUgVGlwcHlDb25maWcsXG59IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVRpcHB5TG9hZGVyKGxvYWRlcjogVGlwcHlMb2FkZXIpIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbeyBwcm92aWRlOiBUSVBQWV9MT0FERVIsIHVzZVZhbHVlOiBsb2FkZXIgfV0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVRpcHB5Q29uZmlnKGNvbmZpZzogVGlwcHlDb25maWcpOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IFRJUFBZX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9O1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ export { tooltipVariation, popperVariation, withContextMenuVariation } from './defaults';
2
+ export { TIPPY_LOADER, TIPPY_REF, TIPPY_CONFIG, } from './tippy.types';
3
+ export { provideTippyLoader, provideTippyConfig } from './providers';
4
+ export { injectTippyRef } from './inject-tippy';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL2NvbmZpZy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pGLE9BQU8sRUFTTCxZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgdG9vbHRpcFZhcmlhdGlvbiwgcG9wcGVyVmFyaWF0aW9uLCB3aXRoQ29udGV4dE1lbnVWYXJpYXRpb24gfSBmcm9tICcuL2RlZmF1bHRzJztcbmV4cG9ydCB7XG4gIENyZWF0ZU9wdGlvbnMsXG4gIFRpcHB5SW5zdGFuY2UsXG4gIFRpcHB5UHJvcHMsXG4gIEV4dGVuZGVkVGlwcHlQcm9wcyxcbiAgVGlwcHlFbGVtZW50LFxuICBFeHRlbmRlZFRpcHB5SW5zdGFuY2UsXG4gIFRpcHB5Q29uZmlnLFxuICBUaXBweUxvYWRlcixcbiAgVElQUFlfTE9BREVSLFxuICBUSVBQWV9SRUYsXG4gIFRJUFBZX0NPTkZJRyxcbn0gZnJvbSAnLi90aXBweS50eXBlcyc7XG5leHBvcnQgeyBwcm92aWRlVGlwcHlMb2FkZXIsIHByb3ZpZGVUaXBweUNvbmZpZyB9IGZyb20gJy4vcHJvdmlkZXJzJztcbmV4cG9ydCB7IGluamVjdFRpcHB5UmVmIH0gZnJvbSAnLi9pbmplY3QtdGlwcHknO1xuIl19
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const TIPPY_LOADER = new InjectionToken('TIPPY_LOADER');
3
+ export const TIPPY_REF = /* @__PURE__ */ new InjectionToken('TIPPY_REF');
4
+ export const TIPPY_CONFIG = new InjectionToken('Tippy config');
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9jb25maWcvc3JjL3RpcHB5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFtQzNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBYyxjQUFjLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLElBQUksY0FBYyxDQUFnQixXQUFXLENBQUMsQ0FBQztBQUV4RixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWMsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB0aXBweSBmcm9tICd0aXBweS5qcyc7XG5pbXBvcnQgdHlwZSB7IEluc3RhbmNlLCBQcm9wcyB9IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJlc29sdmVWaWV3UmVmLCBWaWV3T3B0aW9ucyB9IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFRpcHB5UHJvcHM+LCBWaWV3T3B0aW9ucyB7XG4gIHZhcmlhdGlvbjogc3RyaW5nO1xuICBwcmVzZXJ2ZVZpZXc6IGJvb2xlYW47XG4gIGNsYXNzTmFtZTogc3RyaW5nIHwgc3RyaW5nW107XG4gIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaXBweUluc3RhbmNlIGV4dGVuZHMgSW5zdGFuY2Uge1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgdHlwZSBUaXBweVByb3BzID0gUHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRUaXBweVByb3BzIGV4dGVuZHMgVGlwcHlQcm9wcyB7XG4gIHZhcmlhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8VGlwcHlQcm9wcz4+O1xuICBkZWZhdWx0VmFyaWF0aW9uOiBrZXlvZiBFeHRlbmRlZFRpcHB5UHJvcHNbJ3ZhcmlhdGlvbnMnXTtcbiAgYmVmb3JlUmVuZGVyPzogKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nO1xuICB6SW5kZXhHZXR0ZXI/KCk6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgVGlwcHlFbGVtZW50ID0gRWxlbWVudFJlZiB8IEVsZW1lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5kZWRUaXBweUluc3RhbmNlPFQ+IGV4dGVuZHMgVGlwcHlJbnN0YW5jZSB7XG4gIHZpZXc6IFJlc29sdmVWaWV3UmVmPFQ+IHwgbnVsbDtcbiAgJHZpZXdPcHRpb25zOiBWaWV3T3B0aW9ucztcbiAgY29udGV4dD86IFZpZXdPcHRpb25zWydjb250ZXh0J107XG59XG5cbmV4cG9ydCB0eXBlIFRpcHB5Q29uZmlnID0gUGFydGlhbDxFeHRlbmRlZFRpcHB5UHJvcHM+O1xuXG5leHBvcnQgdHlwZSBUaXBweUxvYWRlciA9ICgpID0+IHR5cGVvZiB0aXBweSB8IFByb21pc2U8eyBkZWZhdWx0OiB0eXBlb2YgdGlwcHkgfT47XG5cbmV4cG9ydCBjb25zdCBUSVBQWV9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGlwcHlMb2FkZXI+KCdUSVBQWV9MT0FERVInKTtcblxuZXhwb3J0IGNvbnN0IFRJUFBZX1JFRiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgSW5qZWN0aW9uVG9rZW48VGlwcHlJbnN0YW5jZT4oJ1RJUFBZX1JFRicpO1xuXG5leHBvcnQgY29uc3QgVElQUFlfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFRpcHB5Q29uZmlnPignVGlwcHkgY29uZmlnJyk7XG4iXX0=
@@ -5,7 +5,7 @@ import { fromEvent, merge, Observable, Subject } from 'rxjs';
5
5
  import { filter, map, switchMap, takeUntil } from 'rxjs/operators';
6
6
  import { isComponent, isString, isTemplateRef, } from '@ngneat/overview';
7
7
  import { coerceCssPixelValue, dimensionsChanges, inView, isElementOverflow, normalizeClassName, observeVisibility, onlyTippyProps, overflowChanges, } from './utils';
8
- import { TIPPY_CONFIG, TIPPY_REF, } from './tippy.types';
8
+ import { TIPPY_CONFIG, TIPPY_REF, } from '@ngneat/helipopper/config';
9
9
  import { TippyFactory } from './tippy.factory';
10
10
  import { coerceBooleanAttribute } from './coercion';
11
11
  import * as i0 from "@angular/core";
@@ -479,4 +479,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
479
479
  type: Output,
480
480
  args: ['tpVisible']
481
481
  }] } });
482
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvc3JjL2xpYi90aXBweS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFFTixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFFBQVEsRUFDUixhQUFhLEdBSWQsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEdBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRXBELG1EQUFtRDtB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YyxrQkFzSmYsWUFBWTtrR0F0SlgsY0FBYzs7MkZBQWQsY0FBYztrQkFOMUIsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxNQUFNO29CQUNoQixRQUFRLEVBQUUsT0FBTztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkF1SkksTUFBTTsyQkFBQyxZQUFZO3VLQWxDRCxPQUFPO3NCQUEzQixNQUFNO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBjb21wdXRlZCxcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBpbnB1dCxcbiAgSW5wdXRTaWduYWwsXG4gIG1vZGVsLFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBTaW1wbGVDaGFuZ2VzLFxuICB1bnRyYWNrZWQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7IEluc3RhbmNlIH0gZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ29udGVudCxcbiAgaXNDb21wb25lbnQsXG4gIGlzU3RyaW5nLFxuICBpc1RlbXBsYXRlUmVmLFxuICBWaWV3T3B0aW9ucyxcbiAgVmlld1JlZixcbiAgVmlld1NlcnZpY2UsXG59IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuXG5pbXBvcnQge1xuICBjb2VyY2VDc3NQaXhlbFZhbHVlLFxuICBkaW1lbnNpb25zQ2hhbmdlcyxcbiAgaW5WaWV3LFxuICBpc0VsZW1lbnRPdmVyZmxvdyxcbiAgbm9ybWFsaXplQ2xhc3NOYW1lLFxuICBvYnNlcnZlVmlzaWJpbGl0eSxcbiAgb25seVRpcHB5UHJvcHMsXG4gIG92ZXJmbG93Q2hhbmdlcyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBUSVBQWV9DT05GSUcsXG4gIFRJUFBZX1JFRixcbiAgVGlwcHlDb25maWcsXG4gIFRpcHB5SW5zdGFuY2UsXG4gIFRpcHB5UHJvcHMsXG59IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuaW1wb3J0IHsgVGlwcHlGYWN0b3J5IH0gZnJvbSAnLi90aXBweS5mYWN0b3J5JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICcuL2NvZXJjaW9uJztcblxuLy8gVGhlc2UgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyB1c2VkIGJ5IGB0aXBweS5qc2AuXG4vLyBXZSBhcmUgcHJvdmlkaW5nIHRoZW0gYXMgZGVmYXVsdCBpbnB1dCB2YWx1ZXMuXG4vLyBUaGUgYHRpcHB5LmpzYCByZXBvc2l0b3J5IGhhcyBiZWVuIGFyY2hpdmVkIGFuZCBpcyB1bmxpa2VseSB0b1xuLy8gY2hhbmdlIGluIHRoZSBmdXR1cmUsIHNvIGl0IGlzIHNhZmUgdG8gdXNlIHRoZXNlIHZhbHVlcyBhcyBkZWZhdWx0cy5cbmNvbnN0IGRlZmF1bHRBcHBlbmRUbzogVGlwcHlQcm9wc1snYXBwZW5kVG8nXSA9ICgpID0+IGRvY3VtZW50LmJvZHk7XG5jb25zdCBkZWZhdWx0RGVsYXk6IFRpcHB5UHJvcHNbJ2RlbGF5J10gPSAwO1xuY29uc3QgZGVmYXVsdER1cmF0aW9uOiBUaXBweVByb3BzWydkdXJhdGlvbiddID0gWzMwMCwgMjUwXTtcbmNvbnN0IGRlZmF1bHRJbnRlcmFjdGl2ZUJvcmRlcjogVGlwcHlQcm9wc1snaW50ZXJhY3RpdmVCb3JkZXInXSA9IDI7XG5jb25zdCBkZWZhdWx0TWF4V2lkdGg6IFRpcHB5UHJvcHNbJ21heFdpZHRoJ10gPSAzNTA7XG5jb25zdCBkZWZhdWx0T2Zmc2V0OiBUaXBweVByb3BzWydvZmZzZXQnXSA9IFswLCAxMF07XG5jb25zdCBkZWZhdWx0UGxhY2VtZW50OiBUaXBweVByb3BzWydwbGFjZW1lbnQnXSA9ICd0b3AnO1xuY29uc3QgZGVmYXVsdFRyaWdnZXI6IFRpcHB5UHJvcHNbJ3RyaWdnZXInXSA9ICdtb3VzZWVudGVyIGZvY3VzJztcbmNvbnN0IGRlZmF1bHRUcmlnZ2VyVGFyZ2V0OiBUaXBweVByb3BzWyd0cmlnZ2VyVGFyZ2V0J10gPSBudWxsO1xuY29uc3QgZGVmYXVsdFpJbmRleDogVGlwcHlQcm9wc1snekluZGV4J10gPSA5OTk5O1xuY29uc3QgZGVmYXVsdEFuaW1hdGlvbjogVGlwcHlQcm9wc1snYW5pbWF0aW9uJ10gPSAnZmFkZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1t0cF0nLFxuICBleHBvcnRBczogJ3RpcHB5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVGlwcHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uSW5pdCB7XG4gIHJlYWRvbmx5IGFwcGVuZFRvID0gaW5wdXQoZGVmYXVsdEFwcGVuZFRvLCB7XG4gICAgYWxpYXM6ICd0cEFwcGVuZFRvJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY29udGVudCA9IGlucHV0PENvbnRlbnQgfCB1bmRlZmluZWQgfCBudWxsPignJywgeyBhbGlhczogJ3RwJyB9KTtcblxuICByZWFkb25seSBkZWxheSA9IGlucHV0KGRlZmF1bHREZWxheSwge1xuICAgIGFsaWFzOiAndHBEZWxheScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGR1cmF0aW9uID0gaW5wdXQoZGVmYXVsdER1cmF0aW9uLCB7XG4gICAgYWxpYXM6ICd0cER1cmF0aW9uJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaGlkZU9uQ2xpY2sgPSBpbnB1dCh0cnVlLCB7XG4gICAgYWxpYXM6ICd0cEhpZGVPbkNsaWNrJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaW50ZXJhY3RpdmUgPSBpbnB1dChmYWxzZSwge1xuICAgIGFsaWFzOiAndHBJbnRlcmFjdGl2ZScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGludGVyYWN0aXZlQm9yZGVyID0gaW5wdXQoZGVmYXVsdEludGVyYWN0aXZlQm9yZGVyLCB7XG4gICAgYWxpYXM6ICd0cEludGVyYWN0aXZlQm9yZGVyJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbWF4V2lkdGggPSBpbnB1dChkZWZhdWx0TWF4V2lkdGgsIHtcbiAgICBhbGlhczogJ3RwTWF4V2lkdGgnLFxuICB9KTtcblxuICAvLyBOb3RlIHRoYXQgc29tZSBvZiB0aGUgaW5wdXQgc2lnbmFsIHR5cGVzIGFyZSBkZWNsYXJlZCBleHBsaWNpdGx5IGJlY2F1c2UgdGhlIGNvbXBpbGVyXG4gIC8vIGFsc28gdXNlcyB0eXBlcyBmcm9tIGBAcG9wcGVyanMvY29yZWAgYW5kIHJlcXVpcmVzIGEgdHlwZSBhbm5vdGF0aW9uLlxuICByZWFkb25seSBvZmZzZXQ6IElucHV0U2lnbmFsPFRpcHB5UHJvcHNbJ29mZnNldCddPiA9IGlucHV0KGRlZmF1bHRPZmZzZXQsIHtcbiAgICBhbGlhczogJ3RwT2Zmc2V0JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGxhY2VtZW50OiBJbnB1dFNpZ25hbDxUaXBweVByb3BzWydwbGFjZW1lbnQnXT4gPSBpbnB1dChkZWZhdWx0UGxhY2VtZW50LCB7XG4gICAgYWxpYXM6ICd0cFBsYWNlbWVudCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBvcHBlck9wdGlvbnM6IElucHV0U2lnbmFsPFRpcHB5UHJvcHNbJ3BvcHBlck9wdGlvbnMnXT4gPSBpbnB1dChcbiAgICB7fSxcbiAgICB7XG4gICAgICBhbGlhczogJ3RwUG9wcGVyT3B0aW9ucycsXG4gICAgfVxuICApO1xuXG4gIHJlYWRvbmx5IHNob3dPbkNyZWF0ZSA9IGlucHV0KGZhbHNlLCB7XG4gICAgYWxpYXM6ICd0cFNob3dPbkNyZWF0ZScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHRyaWdnZXIgPSBpbnB1dChkZWZhdWx0VHJpZ2dlciwge1xuICAgIGFsaWFzOiAndHBUcmlnZ2VyJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdHJpZ2dlclRhcmdldCA9IGlucHV0KGRlZmF1bHRUcmlnZ2VyVGFyZ2V0LCB7XG4gICAgYWxpYXM6ICd0cFRyaWdnZXJUYXJnZXQnLFxuICB9KTtcblxuICByZWFkb25seSB6SW5kZXggPSBpbnB1dChkZWZhdWx0WkluZGV4LCB7XG4gICAgYWxpYXM6ICd0cFpJbmRleCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFuaW1hdGlvbiA9IGlucHV0KGRlZmF1bHRBbmltYXRpb24sIHtcbiAgICBhbGlhczogJ3RwQW5pbWF0aW9uJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdXNlVGV4dENvbnRlbnQgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwVXNlVGV4dENvbnRlbnQnLFxuICB9KTtcblxuICByZWFkb25seSBpc0xhenkgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwSXNMYXp5JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdmFyaWF0aW9uID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHsgYWxpYXM6ICd0cFZhcmlhdGlvbicgfSk7XG5cbiAgcmVhZG9ubHkgaXNFbmFibGVkID0gaW5wdXQodHJ1ZSwgeyBhbGlhczogJ3RwSXNFbmFibGVkJyB9KTtcblxuICByZWFkb25seSBjbGFzc05hbWUgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJycsIHsgYWxpYXM6ICd0cENsYXNzTmFtZScgfSk7XG5cbiAgcmVhZG9ubHkgb25seVRleHRPdmVyZmxvdyA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBPbmx5VGV4dE92ZXJmbG93JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc3RhdGljV2lkdGhIb3N0ID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cFN0YXRpY1dpZHRoSG9zdCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRhdGEgPSBpbnB1dDxhbnk+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwRGF0YScgfSk7XG5cbiAgcmVhZG9ubHkgdXNlSG9zdFdpZHRoID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cFVzZUhvc3RXaWR0aCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGhpZGVPbkVzY2FwZSA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBIaWRlT25Fc2NhcGUnLFxuICB9KTtcblxuICByZWFkb25seSBkZXRlY3RDaGFuZ2VzQ29tcG9uZW50ID0gaW5wdXQodHJ1ZSwgeyBhbGlhczogJ3RwRGV0ZWN0Q2hhbmdlc0NvbXBvbmVudCcgfSk7XG5cbiAgcmVhZG9ubHkgcG9wcGVyV2lkdGggPSBpbnB1dDxudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge1xuICAgIGFsaWFzOiAndHBQb3BwZXJXaWR0aCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGN1c3RvbUhvc3QgPSBpbnB1dDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7IGFsaWFzOiAndHBIb3N0JyB9KTtcblxuICByZWFkb25seSBpc1Zpc2libGUgPSBtb2RlbChmYWxzZSwgeyBhbGlhczogJ3RwSXNWaXNpYmxlJyB9KTtcblxuICBAT3V0cHV0KCd0cFZpc2libGUnKSB2aXNpYmxlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByb3RlY3RlZCBpbnN0YW5jZSE6IFRpcHB5SW5zdGFuY2U7XG4gIHByb3RlY3RlZCB2aWV3UmVmOiBWaWV3UmVmIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBwcm9wcyE6IFBhcnRpYWw8VGlwcHlDb25maWc+O1xuICBwcm90ZWN0ZWQgdmFyaWF0aW9uRGVmaW5lZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgdmlld09wdGlvbnMkOiBWaWV3T3B0aW9ucyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBXZSBoYWQgdXNlIGB2aXNpYmxlYCBldmVudCBlbWl0dGVyIHByZXZpb3VzbHkgYXMgYSBgdGFrZVVudGlsYCBzdWJzY3JpYmVyIGluIG11bHRpcGxlIHBsYWNlc1xuICAgKiB3aXRoaW4gdGhlIGRpcmVjdGl2ZS5cbiAgICogVGhpcyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHk7IHRodXMgd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggdGhlIGB2aXNpYmxlYCBldmVudCBlbWl0dGVyXG4gICAqIGFuZCB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25zIG9ubHkgd2hlbiB0aGUgYHZpc2libGVgIGV2ZW50IGlzIGJlaW5nIGxpc3RlbmVkIG91dHNpZGVcbiAgICogaW4gdGhlIHRlbXBsYXRlIChgPGJ1dHRvbiBbdGlwcHldPVwiLi4uXCIgKHZpc2libGUpPVwiLi4uXCI+PC9idXR0b24+YCkuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmlzaWJsZUludGVybmFsID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSB2aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwOiBWb2lkRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb250ZW50Q2hhbmdlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBob3N0ID0gY29tcHV0ZWQ8SFRNTEVsZW1lbnQ+KFxuICAgICgpID0+IHRoaXMuY3VzdG9tSG9zdCgpIHx8IHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50XG4gICk7XG5cbiAgLy8gSXQgc2hvdWxkIGJlIGEgZ2V0dGVyIGJlY2F1c2UgY29tcHV0YXRpb25zIGFyZSBjYWNoZWQgdW50aWxcbiAgLy8gYW55IG9mIHRoZSBwcm9kdWNlcnMgY2hhbmdlLlxuICBwcml2YXRlIGdldCBob3N0V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIGlzU2VydmVyID0gaXNQbGF0Zm9ybVNlcnZlcihpbmplY3QoUExBVEZPUk1fSUQpKTtcbiAgcHJpdmF0ZSB0aXBweUZhY3RvcnkgPSBpbmplY3QoVGlwcHlGYWN0b3J5KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRJUFBZX0NPTkZJRykgcHJvdGVjdGVkIGdsb2JhbENvbmZpZzogVGlwcHlDb25maWcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgdmlld1NlcnZpY2U6IFZpZXdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lLFxuICAgIHByb3RlY3RlZCBob3N0UmVmOiBFbGVtZW50UmVmXG4gICkge1xuICAgIGlmICh0aGlzLmlzU2VydmVyKSByZXR1cm47XG5cbiAgICB0aGlzLnNldHVwTGlzdGVuZXJzKCk7XG5cbiAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgIHRoaXMuaW5zdGFuY2U/LmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICAgIHRoaXMudmlzaWJpbGl0eU9ic2VydmVyQ2xlYW51cD8uKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHJldHVybjtcblxuICAgIGNvbnN0IHZhcmlhdGlvbiA9IHRoaXMudmFyaWF0aW9uKCkgfHwgdGhpcy5nbG9iYWxDb25maWcuZGVmYXVsdFZhcmlhdGlvbiB8fCAnJztcbiAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5rZXlzKGNoYW5nZXMpXG4gICAgICAvLyBgaXNWaXNpYmxlYCBpcyBub3QgcmVxdWlyZWQgYXMgYSBwcm9wIHNpbmNlIHdlIHVwZGF0ZSBpdCBtYW51YWxseVxuICAgICAgLy8gaW4gYW4gZWZmZWN0LWxpa2UgbWFubmVyLlxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkgIT09ICdpc1Zpc2libGUnKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKGFjY3VtdWxhdG9yLCBrZXkpID0+ICh7IC4uLmFjY3VtdWxhdG9yLCBba2V5XTogY2hhbmdlc1trZXldLmN1cnJlbnRWYWx1ZSB9KSxcbiAgICAgICAgeyAuLi50aGlzLmdsb2JhbENvbmZpZy52YXJpYXRpb25zPy5bdmFyaWF0aW9uXSB9XG4gICAgICApO1xuXG4gICAgdGhpcy51cGRhdGVQcm9wcyhwcm9wcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy51c2VIb3N0V2lkdGgoKSkge1xuICAgICAgdGhpcy5wcm9wcy5tYXhXaWR0aCA9IHRoaXMuaG9zdFdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaXNMYXp5KCkpIHtcbiAgICAgIGNvbnN0IGhvc3RJblZpZXckID0gaW5WaWV3KHRoaXMuaG9zdCgpKTtcblxuICAgICAgaWYgKHRoaXMub25seVRleHRPdmVyZmxvdygpKSB7XG4gICAgICAgIGhvc3RJblZpZXckXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pc092ZXJmbG93aW5nJCgpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGlzRWxlbWVudE92ZXJmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coaXNFbGVtZW50T3ZlcmZsb3cpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaG9zdEluVmlldyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbmNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5vbmx5VGV4dE92ZXJmbG93KCkpIHtcbiAgICAgIHRoaXMuaXNPdmVyZmxvd2luZyQoKVxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoaXNFbGVtZW50T3ZlcmZsb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrT3ZlcmZsb3coaXNFbGVtZW50T3ZlcmZsb3cpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVJbnN0YW5jZSgpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3lWaWV3KCkge1xuICAgIHRoaXMudmlld09wdGlvbnMkID0gbnVsbDtcbiAgICB0aGlzLnZpZXdSZWY/LmRlc3Ryb3koKTtcbiAgICB0aGlzLnZpZXdSZWYgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCB3aGVuIHlvdSBhcHBlbmQgdG8gYW4gZWxlbWVudCB0aGF0IHlvdSBtaWdodCByZW1vdmUgZnJvbSB0aGUgRE9NLlxuICAgKiBJbiBzdWNoIGNhc2VzIHdlIHdhbnQgdG8gaGlkZSB0aGUgdG9vbHRpcCBhbmQgbGV0IGl0IGdvIHRocm91Z2ggdGhlIGRlc3Ryb3kgbGlmZWN5Y2xlLlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYSBncmlkIHJvdyB3aXRoIGFuIGVsZW1lbnQgdGhhdCB5b3UgdG9nZ2xlIHVzaW5nIHRoZSBkaXNwbGF5IENTUyBwcm9wZXJ0eSBvbiBob3Zlci5cbiAgICovXG4gIG9ic2VydmVIb3N0VmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlcikgcmV0dXJuO1xuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gb2JzZXJ2ZSB0aGUgaG9zdCB2aXNpYmlsaXR5IGlmIHdlIGFyZSBhcHBlbmRpbmcgdG8gdGhlIGJvZHkuXG4gICAgaWYgKHRoaXMucHJvcHMuYXBwZW5kVG8gJiYgdGhpcy5wcm9wcy5hcHBlbmRUbyAhPT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgdGhpcy52aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwPy4oKTtcbiAgICAgIHJldHVybiB0aGlzLnZpc2libGVJbnRlcm5hbFxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoaXNWaXNpYmxlKSA9PiB7XG4gICAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwID0gb2JzZXJ2ZVZpc2liaWxpdHkoXG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UucmVmZXJlbmNlLFxuICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB3ZSBoYXZlIGFuaW1hdGlvbiBvbiB0aGUgcG9wcGVyIGl0IGRvZXNuJ3QgY2xvc2UgaW1tZWRpYXRlbHkgZG9lc24ndCB0cmlnZ2VyIHRoZSBgdHBWaXNpYmxlYCBldmVudC5cbiAgICAgICAgICAgICAgICAvLyBUaXBweSBpcyByZWx5aW5nIG9uIHRoZSB0cmFuc2l0aW9uZW5kIGV2ZW50IHRvIHRyaWdnZXIgdGhlIGBvbkhpZGRlbmAgY2FsbGJhY2suXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F0b21pa3MvdGlwcHlqcy9ibG9iL21hc3Rlci9zcmMvZG9tLXV0aWxzLnRzI0wxMTdcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGV2ZW50IG5ldmVyIGZpcmVzIGJlY2F1c2UgdGhlIHBvcHBlciBpcyByZW1vdmVkIGZyb20gdGhlIERPTSBiZWZvcmUgdGhlIHRyYW5zaXRpb24gZW5kcy5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5hbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub25IaWRkZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eU9ic2VydmVyQ2xlYW51cD8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMuaW5zdGFuY2U/LnNob3coKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5pbnN0YW5jZT8uaGlkZSgpO1xuICB9XG5cbiAgZW5hYmxlKCkge1xuICAgIHRoaXMuaW5zdGFuY2U/LmVuYWJsZSgpO1xuICB9XG5cbiAgZGlzYWJsZSgpIHtcbiAgICB0aGlzLmluc3RhbmNlPy5kaXNhYmxlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlUHJvcHMocHJvcHM6IFBhcnRpYWw8VGlwcHlDb25maWc+KSB7XG4gICAgdGhpcy5zZXRQcm9wcyh7IC4uLnRoaXMucHJvcHMsIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFByb3BzKHByb3BzOiBQYXJ0aWFsPFRpcHB5Q29uZmlnPikge1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmluc3RhbmNlPy5zZXRQcm9wcyhvbmx5VGlwcHlQcm9wcyhwcm9wcykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFN0YXR1cyhpc0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBpc0VuYWJsZWQgPyB0aGlzLmluc3RhbmNlPy5lbmFibGUoKSA6IHRoaXMuaW5zdGFuY2U/LmRpc2FibGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVJbnN0YW5jZSgpIHtcbiAgICBpZiAoIXRoaXMuY29udGVudCgpICYmICF0aGlzLnVzZVRleHRDb250ZW50KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpcHB5RmFjdG9yeVxuICAgICAgLmNyZWF0ZSh0aGlzLmhvc3QoKSwge1xuICAgICAgICBhbGxvd0hUTUw6IHRydWUsXG4gICAgICAgIGFwcGVuZFRvOiBkb2N1bWVudC5ib2R5LFxuICAgICAgICAuLi4odGhpcy5nbG9iYWxDb25maWcuekluZGV4R2V0dGVyXG4gICAgICAgICAgPyB7IHpJbmRleDogdGhpcy5nbG9iYWxDb25maWcuekluZGV4R2V0dGVyKCkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi5vbmx5VGlwcHlQcm9wcyh0aGlzLmdsb2JhbENvbmZpZyksXG4gICAgICAgIC4uLm9ubHlUaXBweVByb3BzKHRoaXMucHJvcHMpLFxuICAgICAgICBvbk1vdW50OiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlLnNldChpc1Zpc2libGUpO1xuICAgICAgICAgIHRoaXMudmlzaWJsZUludGVybmFsLm5leHQoaXNWaXNpYmxlKTtcbiAgICAgICAgICBpZiAodGhpcy52aXNpYmxlLm9ic2VydmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy52aXNpYmxlLm5leHQoaXNWaXNpYmxlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudXNlSG9zdFdpZHRoKCkgJiYgdGhpcy5saXN0ZW5Ub0hvc3RSZXNpemUoKTtcbiAgICAgICAgICB0aGlzLmdsb2JhbENvbmZpZy5vbk1vdW50Py4oaW5zdGFuY2UpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNyZWF0ZTogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmNsYXNzTGlzdC5hZGQoXG4gICAgICAgICAgICBgdGlwcHktdmFyaWF0aW9uLSR7dGhpcy52YXJpYXRpb24oKSB8fCB0aGlzLmdsb2JhbENvbmZpZy5kZWZhdWx0VmFyaWF0aW9ufWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLmNsYXNzTmFtZSgpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtsYXNzIG9mIG5vcm1hbGl6ZUNsYXNzTmFtZSh0aGlzLmNsYXNzTmFtZSgpKSkge1xuICAgICAgICAgICAgICBpbnN0YW5jZS5wb3BwZXIuY2xhc3NMaXN0LmFkZChrbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uQ3JlYXRlPy4oaW5zdGFuY2UpO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSgpID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5zaG93KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvblNob3c6IChpbnN0YW5jZSkgPT4ge1xuICAgICAgICAgIGluc3RhbmNlLnJlZmVyZW5jZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGlwcHktb3BlbicsICcnKTtcblxuICAgICAgICAgIC8vIFdlJ3JlIHJlLWVudGVyaW5nIGJlY2F1c2Ugd2UgbWlnaHQgY3JlYXRlIGFuIEFuZ3VsYXIgY29tcG9uZW50LFxuICAgICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSBkb25lIHdpdGhpbiB0aGUgem9uZS5cbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucmVzb2x2ZUNvbnRlbnQoaW5zdGFuY2UpKTtcblxuICAgICAgICAgIGlmIChpc1N0cmluZyhjb250ZW50KSkge1xuICAgICAgICAgICAgaW5zdGFuY2Uuc2V0UHJvcHMoeyBhbGxvd0hUTUw6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWNvbnRlbnQ/LnRyaW0oKSkge1xuICAgICAgICAgICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaW5zdGFuY2Uuc2V0Q29udGVudChjb250ZW50KTtcbiAgICAgICAgICB0aGlzLmhpZGVPbkVzY2FwZSgpICYmIHRoaXMuaGFuZGxlRXNjYXBlQnV0dG9uKCk7XG5cbiAgICAgICAgICBpZiAodGhpcy51c2VIb3N0V2lkdGgoKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbnN0YW5jZVdpZHRoKGluc3RhbmNlLCB0aGlzLmhvc3RXaWR0aCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBvcHBlcldpZHRoKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5zdGFuY2VXaWR0aChpbnN0YW5jZSwgdGhpcy5wb3BwZXJXaWR0aCgpISk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uU2hvdz8uKGluc3RhbmNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25IaWRlKGluc3RhbmNlKSB7XG4gICAgICAgICAgaW5zdGFuY2UucmVmZXJlbmNlLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSGlkZGVuOiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgICB0aGlzLm9uSGlkZGVuKGluc3RhbmNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICB0aGlzLnNldFN0YXR1cyh0aGlzLmlzRW5hYmxlZCgpKTtcbiAgICAgICAgdGhpcy5zZXRQcm9wcyh0aGlzLnByb3BzKTtcblxuICAgICAgICB0aGlzLnZhcmlhdGlvbigpID09PSAnY29udGV4dE1lbnUnICYmIHRoaXMuaGFuZGxlQ29udGV4dE1lbnUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVDb250ZW50KGluc3RhbmNlOiBUaXBweUluc3RhbmNlKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudCgpO1xuXG4gICAgaWYgKCF0aGlzLnZpZXdPcHRpb25zJCAmJiAhaXNTdHJpbmcoY29udGVudCkpIHtcbiAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVElQUFlfUkVGLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHRoaXMuaW5zdGFuY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGEoKTtcblxuICAgICAgaWYgKGlzQ29tcG9uZW50KGNvbnRlbnQpKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZGF0YSA9IGRhdGE7XG5cbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucyQgPSB7XG4gICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGlzVGVtcGxhdGVSZWYoY29udGVudCkpIHtcbiAgICAgICAgdGhpcy52aWV3T3B0aW9ucyQgPSB7XG4gICAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGhpcy5oaWRlLmJpbmQodGhpcyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdSZWYgPSB0aGlzLnZpZXdTZXJ2aWNlLmNyZWF0ZVZpZXcoY29udGVudCEsIHtcbiAgICAgIHZjcjogdGhpcy52Y3IsXG4gICAgICAuLi50aGlzLnZpZXdPcHRpb25zJCxcbiAgICB9KTtcblxuICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBkZXRlY3RDaGFuZ2VzIGZvciBvblB1c2ggY29tcG9uZW50cyB0byB1cGRhdGUgdGhlIGNvbnRlbnRcbiAgICBpZiAodGhpcy5kZXRlY3RDaGFuZ2VzQ29tcG9uZW50KCkgJiYgaXNDb21wb25lbnQoY29udGVudCkpIHtcbiAgICAgIHRoaXMudmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbGV0IG5ld0NvbnRlbnQgPSB0aGlzLnZpZXdSZWYuZ2V0RWxlbWVudCgpO1xuXG4gICAgaWYgKHRoaXMudXNlVGV4dENvbnRlbnQoKSkge1xuICAgICAgbmV3Q29udGVudCA9IGluc3RhbmNlLnJlZmVyZW5jZS50ZXh0Q29udGVudCE7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKG5ld0NvbnRlbnQpICYmIHRoaXMuZ2xvYmFsQ29uZmlnLmJlZm9yZVJlbmRlcikge1xuICAgICAgbmV3Q29udGVudCA9IHRoaXMuZ2xvYmFsQ29uZmlnLmJlZm9yZVJlbmRlcihuZXdDb250ZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb250ZXh0TWVudSgpIHtcbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0KCksICdjb250ZXh0bWVudScpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZXRQcm9wcyh7XG4gICAgICAgICAgZ2V0UmVmZXJlbmNlQ2xpZW50UmVjdDogKCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgIHRvcDogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgICAgYm90dG9tOiBldmVudC5jbGllbnRZLFxuICAgICAgICAgICAgICBsZWZ0OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICByaWdodDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgIH0gYXMgRE9NUmVjdFJlYWRPbmx5KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zaG93KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVFc2NhcGVCdXR0b24oKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LmJvZHksICdrZXlkb3duJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgY29kZSB9OiBLZXlib2FyZEV2ZW50KSA9PiBjb2RlID09PSAnRXNjYXBlJyksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnZpc2libGVJbnRlcm5hbC5waXBlKGZpbHRlcigodikgPT4gIXYpKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGlkZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja092ZXJmbG93KGlzRWxlbWVudE92ZXJmbG93OiBib29sZWFuKSB7XG4gICAgaWYgKGlzRWxlbWVudE92ZXJmbG93KSB7XG4gICAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnN0YW5jZT8uZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub0hvc3RSZXNpemUoKSB7XG4gICAgZGltZW5zaW9uc0NoYW5nZXModGhpcy5ob3N0KCkpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy52aXNpYmxlSW50ZXJuYWwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldEluc3RhbmNlV2lkdGgodGhpcy5pbnN0YW5jZSwgdGhpcy5ob3N0V2lkdGgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0SW5zdGFuY2VXaWR0aChpbnN0YW5jZTogSW5zdGFuY2UsIHdpZHRoOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zdCBpblBpeGVscyA9IGNvZXJjZUNzc1BpeGVsVmFsdWUod2lkdGgpO1xuICAgIGluc3RhbmNlLnBvcHBlci5zdHlsZS53aWR0aCA9IGluUGl4ZWxzO1xuICAgIGluc3RhbmNlLnBvcHBlci5zdHlsZS5tYXhXaWR0aCA9IGluUGl4ZWxzO1xuICAgIChpbnN0YW5jZS5wb3BwZXIuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLm1heFdpZHRoID0gaW5QaXhlbHM7XG4gIH1cblxuICBwcml2YXRlIG9uSGlkZGVuKGluc3RhbmNlOiBUaXBweUluc3RhbmNlID0gdGhpcy5pbnN0YW5jZSkge1xuICAgIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmlzVmlzaWJsZS5zZXQoaXNWaXNpYmxlKTtcbiAgICB0aGlzLnZpc2libGVJbnRlcm5hbC5uZXh0KGlzVmlzaWJsZSk7XG4gICAgaWYgKHRoaXMudmlzaWJsZS5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudmlzaWJsZS5uZXh0KGlzVmlzaWJsZSkpO1xuICAgIH1cbiAgICB0aGlzLmdsb2JhbENvbmZpZy5vbkhpZGRlbj8uKGluc3RhbmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNPdmVyZmxvd2luZyQoKSB7XG4gICAgY29uc3QgaG9zdCA9IHRoaXMuaG9zdCgpO1xuICAgIGNvbnN0IG5vdGlmaWVycyQgPSBbb3ZlcmZsb3dDaGFuZ2VzKGhvc3QpXTtcblxuICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSBob3N0IGhhcyBhIHN0YXRpYyB3aWR0aCBidXQgdGhlIGNvbnRlbnQgbWlnaHQgY2hhbmdlXG4gICAgaWYgKHRoaXMuc3RhdGljV2lkdGhIb3N0KCkpIHtcbiAgICAgIG5vdGlmaWVycyQucHVzaChcbiAgICAgICAgdGhpcy5jb250ZW50Q2hhbmdlZC5waXBlKFxuICAgICAgICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGNvbnRlbnQgdG8gYmUgcmVuZGVyZWQgYmVmb3JlIHdlIGNhbiBjaGVjayBpZiBpdCdzIG92ZXJmbG93aW5nLlxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoKSA9PiBjYW5jZWxBbmltYXRpb25GcmFtZShpZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAoKCkgPT4gaXNFbGVtZW50T3ZlcmZsb3coaG9zdCkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKC4uLm5vdGlmaWVycyQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gQ2FwdHVyZSBzaWduYWwgcmVhZCB0byB0cmFjayBpdHMgY2hhbmdlcy5cbiAgICAgIHRoaXMuY29udGVudCgpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuY29udGVudENoYW5nZWQubmV4dCgpKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnNldFN0YXR1cyh0aGlzLmlzRW5hYmxlZCgpKSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGhpcy5pc1Zpc2libGUoKTtcbiAgICAgIGlzVmlzaWJsZSA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
482
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hlbGlwb3BwZXIvc3JjL2xpYi90aXBweS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFFTixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFFBQVEsRUFDUixhQUFhLEdBSWQsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEdBSVYsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFFcEQsbURBQW1E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QUFjLGtCQXNKZixZQUFZO2tHQXRKWCxjQUFjOzsyRkFBZCxjQUFjO2tCQU4xQixTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLE1BQU07b0JBQ2hCLFFBQVEsRUFBRSxPQUFPO29CQUNqQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQXVKSSxNQUFNOzJCQUFDLFlBQVk7dUtBbENELE9BQU87c0JBQTNCLE1BQU07dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGNvbXB1dGVkLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIGlucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgbW9kZWwsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIHVudHJhY2tlZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB0eXBlIHsgSW5zdGFuY2UgfSBmcm9tICd0aXBweS5qcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb250ZW50LFxuICBpc0NvbXBvbmVudCxcbiAgaXNTdHJpbmcsXG4gIGlzVGVtcGxhdGVSZWYsXG4gIFZpZXdPcHRpb25zLFxuICBWaWV3UmVmLFxuICBWaWV3U2VydmljZSxcbn0gZnJvbSAnQG5nbmVhdC9vdmVydmlldyc7XG5cbmltcG9ydCB7XG4gIGNvZXJjZUNzc1BpeGVsVmFsdWUsXG4gIGRpbWVuc2lvbnNDaGFuZ2VzLFxuICBpblZpZXcsXG4gIGlzRWxlbWVudE92ZXJmbG93LFxuICBub3JtYWxpemVDbGFzc05hbWUsXG4gIG9ic2VydmVWaXNpYmlsaXR5LFxuICBvbmx5VGlwcHlQcm9wcyxcbiAgb3ZlcmZsb3dDaGFuZ2VzLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gIFRJUFBZX0NPTkZJRyxcbiAgVElQUFlfUkVGLFxuICBUaXBweUNvbmZpZyxcbiAgVGlwcHlJbnN0YW5jZSxcbiAgVGlwcHlQcm9wcyxcbn0gZnJvbSAnQG5nbmVhdC9oZWxpcG9wcGVyL2NvbmZpZyc7XG5pbXBvcnQgeyBUaXBweUZhY3RvcnkgfSBmcm9tICcuL3RpcHB5LmZhY3RvcnknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJy4vY29lcmNpb24nO1xuXG4vLyBUaGVzZSBhcmUgdGhlIGRlZmF1bHQgdmFsdWVzIHVzZWQgYnkgYHRpcHB5LmpzYC5cbi8vIFdlIGFyZSBwcm92aWRpbmcgdGhlbSBhcyBkZWZhdWx0IGlucHV0IHZhbHVlcy5cbi8vIFRoZSBgdGlwcHkuanNgIHJlcG9zaXRvcnkgaGFzIGJlZW4gYXJjaGl2ZWQgYW5kIGlzIHVubGlrZWx5IHRvXG4vLyBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwgc28gaXQgaXMgc2FmZSB0byB1c2UgdGhlc2UgdmFsdWVzIGFzIGRlZmF1bHRzLlxuY29uc3QgZGVmYXVsdEFwcGVuZFRvOiBUaXBweVByb3BzWydhcHBlbmRUbyddID0gKCkgPT4gZG9jdW1lbnQuYm9keTtcbmNvbnN0IGRlZmF1bHREZWxheTogVGlwcHlQcm9wc1snZGVsYXknXSA9IDA7XG5jb25zdCBkZWZhdWx0RHVyYXRpb246IFRpcHB5UHJvcHNbJ2R1cmF0aW9uJ10gPSBbMzAwLCAyNTBdO1xuY29uc3QgZGVmYXVsdEludGVyYWN0aXZlQm9yZGVyOiBUaXBweVByb3BzWydpbnRlcmFjdGl2ZUJvcmRlciddID0gMjtcbmNvbnN0IGRlZmF1bHRNYXhXaWR0aDogVGlwcHlQcm9wc1snbWF4V2lkdGgnXSA9IDM1MDtcbmNvbnN0IGRlZmF1bHRPZmZzZXQ6IFRpcHB5UHJvcHNbJ29mZnNldCddID0gWzAsIDEwXTtcbmNvbnN0IGRlZmF1bHRQbGFjZW1lbnQ6IFRpcHB5UHJvcHNbJ3BsYWNlbWVudCddID0gJ3RvcCc7XG5jb25zdCBkZWZhdWx0VHJpZ2dlcjogVGlwcHlQcm9wc1sndHJpZ2dlciddID0gJ21vdXNlZW50ZXIgZm9jdXMnO1xuY29uc3QgZGVmYXVsdFRyaWdnZXJUYXJnZXQ6IFRpcHB5UHJvcHNbJ3RyaWdnZXJUYXJnZXQnXSA9IG51bGw7XG5jb25zdCBkZWZhdWx0WkluZGV4OiBUaXBweVByb3BzWyd6SW5kZXgnXSA9IDk5OTk7XG5jb25zdCBkZWZhdWx0QW5pbWF0aW9uOiBUaXBweVByb3BzWydhbmltYXRpb24nXSA9ICdmYWRlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW3RwXScsXG4gIGV4cG9ydEFzOiAndGlwcHknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUaXBweURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcbiAgcmVhZG9ubHkgYXBwZW5kVG8gPSBpbnB1dChkZWZhdWx0QXBwZW5kVG8sIHtcbiAgICBhbGlhczogJ3RwQXBwZW5kVG8nLFxuICB9KTtcblxuICByZWFkb25seSBjb250ZW50ID0gaW5wdXQ8Q29udGVudCB8IHVuZGVmaW5lZCB8IG51bGw+KCcnLCB7IGFsaWFzOiAndHAnIH0pO1xuXG4gIHJlYWRvbmx5IGRlbGF5ID0gaW5wdXQoZGVmYXVsdERlbGF5LCB7XG4gICAgYWxpYXM6ICd0cERlbGF5JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZHVyYXRpb24gPSBpbnB1dChkZWZhdWx0RHVyYXRpb24sIHtcbiAgICBhbGlhczogJ3RwRHVyYXRpb24nLFxuICB9KTtcblxuICByZWFkb25seSBoaWRlT25DbGljayA9IGlucHV0KHRydWUsIHtcbiAgICBhbGlhczogJ3RwSGlkZU9uQ2xpY2snLFxuICB9KTtcblxuICByZWFkb25seSBpbnRlcmFjdGl2ZSA9IGlucHV0KGZhbHNlLCB7XG4gICAgYWxpYXM6ICd0cEludGVyYWN0aXZlJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaW50ZXJhY3RpdmVCb3JkZXIgPSBpbnB1dChkZWZhdWx0SW50ZXJhY3RpdmVCb3JkZXIsIHtcbiAgICBhbGlhczogJ3RwSW50ZXJhY3RpdmVCb3JkZXInLFxuICB9KTtcblxuICByZWFkb25seSBtYXhXaWR0aCA9IGlucHV0KGRlZmF1bHRNYXhXaWR0aCwge1xuICAgIGFsaWFzOiAndHBNYXhXaWR0aCcsXG4gIH0pO1xuXG4gIC8vIE5vdGUgdGhhdCBzb21lIG9mIHRoZSBpbnB1dCBzaWduYWwgdHlwZXMgYXJlIGRlY2xhcmVkIGV4cGxpY2l0bHkgYmVjYXVzZSB0aGUgY29tcGlsZXJcbiAgLy8gYWxzbyB1c2VzIHR5cGVzIGZyb20gYEBwb3BwZXJqcy9jb3JlYCBhbmQgcmVxdWlyZXMgYSB0eXBlIGFubm90YXRpb24uXG4gIHJlYWRvbmx5IG9mZnNldDogSW5wdXRTaWduYWw8VGlwcHlQcm9wc1snb2Zmc2V0J10+ID0gaW5wdXQoZGVmYXVsdE9mZnNldCwge1xuICAgIGFsaWFzOiAndHBPZmZzZXQnLFxuICB9KTtcblxuICByZWFkb25seSBwbGFjZW1lbnQ6IElucHV0U2lnbmFsPFRpcHB5UHJvcHNbJ3BsYWNlbWVudCddPiA9IGlucHV0KGRlZmF1bHRQbGFjZW1lbnQsIHtcbiAgICBhbGlhczogJ3RwUGxhY2VtZW50JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcG9wcGVyT3B0aW9uczogSW5wdXRTaWduYWw8VGlwcHlQcm9wc1sncG9wcGVyT3B0aW9ucyddPiA9IGlucHV0KFxuICAgIHt9LFxuICAgIHtcbiAgICAgIGFsaWFzOiAndHBQb3BwZXJPcHRpb25zJyxcbiAgICB9XG4gICk7XG5cbiAgcmVhZG9ubHkgc2hvd09uQ3JlYXRlID0gaW5wdXQoZmFsc2UsIHtcbiAgICBhbGlhczogJ3RwU2hvd09uQ3JlYXRlJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdHJpZ2dlciA9IGlucHV0KGRlZmF1bHRUcmlnZ2VyLCB7XG4gICAgYWxpYXM6ICd0cFRyaWdnZXInLFxuICB9KTtcblxuICByZWFkb25seSB0cmlnZ2VyVGFyZ2V0ID0gaW5wdXQoZGVmYXVsdFRyaWdnZXJUYXJnZXQsIHtcbiAgICBhbGlhczogJ3RwVHJpZ2dlclRhcmdldCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0KGRlZmF1bHRaSW5kZXgsIHtcbiAgICBhbGlhczogJ3RwWkluZGV4JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYW5pbWF0aW9uID0gaW5wdXQoZGVmYXVsdEFuaW1hdGlvbiwge1xuICAgIGFsaWFzOiAndHBBbmltYXRpb24nLFxuICB9KTtcblxuICByZWFkb25seSB1c2VUZXh0Q29udGVudCA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBVc2VUZXh0Q29udGVudCcsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGlzTGF6eSA9IGlucHV0KGZhbHNlLCB7XG4gICAgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuQXR0cmlidXRlLFxuICAgIGFsaWFzOiAndHBJc0xhenknLFxuICB9KTtcblxuICByZWFkb25seSB2YXJpYXRpb24gPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3RwVmFyaWF0aW9uJyB9KTtcblxuICByZWFkb25seSBpc0VuYWJsZWQgPSBpbnB1dCh0cnVlLCB7IGFsaWFzOiAndHBJc0VuYWJsZWQnIH0pO1xuXG4gIHJlYWRvbmx5IGNsYXNzTmFtZSA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPignJywgeyBhbGlhczogJ3RwQ2xhc3NOYW1lJyB9KTtcblxuICByZWFkb25seSBvbmx5VGV4dE92ZXJmbG93ID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cE9ubHlUZXh0T3ZlcmZsb3cnLFxuICB9KTtcblxuICByZWFkb25seSBzdGF0aWNXaWR0aEhvc3QgPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwU3RhdGljV2lkdGhIb3N0JyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGF0YSA9IGlucHV0PGFueT4odW5kZWZpbmVkLCB7IGFsaWFzOiAndHBEYXRhJyB9KTtcblxuICByZWFkb25seSB1c2VIb3N0V2lkdGggPSBpbnB1dChmYWxzZSwge1xuICAgIHRyYW5zZm9ybTogY29lcmNlQm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBhbGlhczogJ3RwVXNlSG9zdFdpZHRoJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaGlkZU9uRXNjYXBlID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgYWxpYXM6ICd0cEhpZGVPbkVzY2FwZScsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRldGVjdENoYW5nZXNDb21wb25lbnQgPSBpbnB1dCh0cnVlLCB7IGFsaWFzOiAndHBEZXRlY3RDaGFuZ2VzQ29tcG9uZW50JyB9KTtcblxuICByZWFkb25seSBwb3BwZXJXaWR0aCA9IGlucHV0PG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG4gICAgYWxpYXM6ICd0cFBvcHBlcldpZHRoJyxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY3VzdG9tSG9zdCA9IGlucHV0PEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHsgYWxpYXM6ICd0cEhvc3QnIH0pO1xuXG4gIHJlYWRvbmx5IGlzVmlzaWJsZSA9IG1vZGVsKGZhbHNlLCB7IGFsaWFzOiAndHBJc1Zpc2libGUnIH0pO1xuXG4gIEBPdXRwdXQoJ3RwVmlzaWJsZScpIHZpc2libGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHJvdGVjdGVkIGluc3RhbmNlITogVGlwcHlJbnN0YW5jZTtcbiAgcHJvdGVjdGVkIHZpZXdSZWY6IFZpZXdSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIHByb3BzITogUGFydGlhbDxUaXBweUNvbmZpZz47XG4gIHByb3RlY3RlZCB2YXJpYXRpb25EZWZpbmVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCB2aWV3T3B0aW9ucyQ6IFZpZXdPcHRpb25zIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFdlIGhhZCB1c2UgYHZpc2libGVgIGV2ZW50IGVtaXR0ZXIgcHJldmlvdXNseSBhcyBhIGB0YWtlVW50aWxgIHN1YnNjcmliZXIgaW4gbXVsdGlwbGUgcGxhY2VzXG4gICAqIHdpdGhpbiB0aGUgZGlyZWN0aXZlLlxuICAgKiBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seTsgdGh1cyB3ZSBkb24ndCBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgYHZpc2libGVgIGV2ZW50IGVtaXR0ZXJcbiAgICogYW5kIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbnMgb25seSB3aGVuIHRoZSBgdmlzaWJsZWAgZXZlbnQgaXMgYmVpbmcgbGlzdGVuZWQgb3V0c2lkZVxuICAgKiBpbiB0aGUgdGVtcGxhdGUgKGA8YnV0dG9uIFt0aXBweV09XCIuLi5cIiAodmlzaWJsZSk9XCIuLi5cIj48L2J1dHRvbj5gKS5cbiAgICovXG4gIHByb3RlY3RlZCB2aXNpYmxlSW50ZXJuYWwgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIHZpc2liaWxpdHlPYnNlcnZlckNsZWFudXA6IFZvaWRGdW5jdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbnRlbnRDaGFuZ2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIGhvc3QgPSBjb21wdXRlZDxIVE1MRWxlbWVudD4oXG4gICAgKCkgPT4gdGhpcy5jdXN0b21Ib3N0KCkgfHwgdGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnRcbiAgKTtcblxuICAvLyBJdCBzaG91bGQgYmUgYSBnZXR0ZXIgYmVjYXVzZSBjb21wdXRhdGlvbnMgYXJlIGNhY2hlZCB1bnRpbFxuICAvLyBhbnkgb2YgdGhlIHByb2R1Y2VycyBjaGFuZ2UuXG4gIHByaXZhdGUgZ2V0IGhvc3RXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgaXNTZXJ2ZXIgPSBpc1BsYXRmb3JtU2VydmVyKGluamVjdChQTEFURk9STV9JRCkpO1xuICBwcml2YXRlIHRpcHB5RmFjdG9yeSA9IGluamVjdChUaXBweUZhY3RvcnkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVElQUFlfQ09ORklHKSBwcm90ZWN0ZWQgZ2xvYmFsQ29uZmlnOiBUaXBweUNvbmZpZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCB2aWV3U2VydmljZTogVmlld1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJvdGVjdGVkIGhvc3RSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXIpIHJldHVybjtcblxuICAgIHRoaXMuc2V0dXBMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdGhpcy5pbnN0YW5jZT8uZGVzdHJveSgpO1xuICAgICAgdGhpcy5kZXN0cm95VmlldygpO1xuICAgICAgdGhpcy52aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwPy4oKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlcikgcmV0dXJuO1xuXG4gICAgY29uc3QgdmFyaWF0aW9uID0gdGhpcy52YXJpYXRpb24oKSB8fCB0aGlzLmdsb2JhbENvbmZpZy5kZWZhdWx0VmFyaWF0aW9uIHx8ICcnO1xuICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmtleXMoY2hhbmdlcylcbiAgICAgIC8vIGBpc1Zpc2libGVgIGlzIG5vdCByZXF1aXJlZCBhcyBhIHByb3Agc2luY2Ugd2UgdXBkYXRlIGl0IG1hbnVhbGx5XG4gICAgICAvLyBpbiBhbiBlZmZlY3QtbGlrZSBtYW5uZXIuXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGtleSAhPT0gJ2lzVmlzaWJsZScpXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoYWNjdW11bGF0b3IsIGtleSkgPT4gKHsgLi4uYWNjdW11bGF0b3IsIFtrZXldOiBjaGFuZ2VzW2tleV0uY3VycmVudFZhbHVlIH0pLFxuICAgICAgICB7IC4uLnRoaXMuZ2xvYmFsQ29uZmlnLnZhcmlhdGlvbnM/Llt2YXJpYXRpb25dIH1cbiAgICAgICk7XG5cbiAgICB0aGlzLnVwZGF0ZVByb3BzKHByb3BzKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnVzZUhvc3RXaWR0aCgpKSB7XG4gICAgICB0aGlzLnByb3BzLm1heFdpZHRoID0gdGhpcy5ob3N0V2lkdGg7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmlzU2VydmVyKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5pc0xhenkoKSkge1xuICAgICAgY29uc3QgaG9zdEluVmlldyQgPSBpblZpZXcodGhpcy5ob3N0KCkpO1xuXG4gICAgICBpZiAodGhpcy5vbmx5VGV4dE92ZXJmbG93KCkpIHtcbiAgICAgICAgaG9zdEluVmlldyRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmlzT3ZlcmZsb3dpbmckKCkpLFxuICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoaXNFbGVtZW50T3ZlcmZsb3cpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdyhpc0VsZW1lbnRPdmVyZmxvdyk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBob3N0SW5WaWV3JC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdGFuY2UoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9ubHlUZXh0T3ZlcmZsb3coKSkge1xuICAgICAgdGhpcy5pc092ZXJmbG93aW5nJCgpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAuc3Vic2NyaWJlKChpc0VsZW1lbnRPdmVyZmxvdykgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tPdmVyZmxvdyhpc0VsZW1lbnRPdmVyZmxvdyk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUluc3RhbmNlKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveVZpZXcoKSB7XG4gICAgdGhpcy52aWV3T3B0aW9ucyQgPSBudWxsO1xuICAgIHRoaXMudmlld1JlZj8uZGVzdHJveSgpO1xuICAgIHRoaXMudmlld1JlZiA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIHdoZW4geW91IGFwcGVuZCB0byBhbiBlbGVtZW50IHRoYXQgeW91IG1pZ2h0IHJlbW92ZSBmcm9tIHRoZSBET00uXG4gICAqIEluIHN1Y2ggY2FzZXMgd2Ugd2FudCB0byBoaWRlIHRoZSB0b29sdGlwIGFuZCBsZXQgaXQgZ28gdGhyb3VnaCB0aGUgZGVzdHJveSBsaWZlY3ljbGUuXG4gICAqIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBhIGdyaWQgcm93IHdpdGggYW4gZWxlbWVudCB0aGF0IHlvdSB0b2dnbGUgdXNpbmcgdGhlIGRpc3BsYXkgQ1NTIHByb3BlcnR5IG9uIGhvdmVyLlxuICAgKi9cbiAgb2JzZXJ2ZUhvc3RWaXNpYmlsaXR5KCkge1xuICAgIGlmICh0aGlzLmlzU2VydmVyKSByZXR1cm47XG4gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBvYnNlcnZlIHRoZSBob3N0IHZpc2liaWxpdHkgaWYgd2UgYXJlIGFwcGVuZGluZyB0byB0aGUgYm9keS5cbiAgICBpZiAodGhpcy5wcm9wcy5hcHBlbmRUbyAmJiB0aGlzLnByb3BzLmFwcGVuZFRvICE9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICB0aGlzLnZpc2liaWxpdHlPYnNlcnZlckNsZWFudXA/LigpO1xuICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUludGVybmFsXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAuc3Vic2NyaWJlKChpc1Zpc2libGUpID0+IHtcbiAgICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlPYnNlcnZlckNsZWFudXAgPSBvYnNlcnZlVmlzaWJpbGl0eShcbiAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGhhdmUgYW5pbWF0aW9uIG9uIHRoZSBwb3BwZXIgaXQgZG9lc24ndCBjbG9zZSBpbW1lZGlhdGVseSBkb2Vzbid0IHRyaWdnZXIgdGhlIGB0cFZpc2libGVgIGV2ZW50LlxuICAgICAgICAgICAgICAgIC8vIFRpcHB5IGlzIHJlbHlpbmcgb24gdGhlIHRyYW5zaXRpb25lbmQgZXZlbnQgdG8gdHJpZ2dlciB0aGUgYG9uSGlkZGVuYCBjYWxsYmFjay5cbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXRvbWlrcy90aXBweWpzL2Jsb2IvbWFzdGVyL3NyYy9kb20tdXRpbHMudHMjTDExN1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgZXZlbnQgbmV2ZXIgZmlyZXMgYmVjYXVzZSB0aGUgcG9wcGVyIGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NIGJlZm9yZSB0aGUgdHJhbnNpdGlvbiBlbmRzLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgdGhpcy5vbkhpZGRlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5T2JzZXJ2ZXJDbGVhbnVwPy4oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNob3coKSB7XG4gICAgdGhpcy5pbnN0YW5jZT8uc2hvdygpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLmluc3RhbmNlPy5oaWRlKCk7XG4gIH1cblxuICBlbmFibGUoKSB7XG4gICAgdGhpcy5pbnN0YW5jZT8uZW5hYmxlKCk7XG4gIH1cblxuICBkaXNhYmxlKCkge1xuICAgIHRoaXMuaW5zdGFuY2U/LmRpc2FibGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVQcm9wcyhwcm9wczogUGFydGlhbDxUaXBweUNvbmZpZz4pIHtcbiAgICB0aGlzLnNldFByb3BzKHsgLi4udGhpcy5wcm9wcywgLi4ucHJvcHMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0UHJvcHMocHJvcHM6IFBhcnRpYWw8VGlwcHlDb25maWc+KSB7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuaW5zdGFuY2U/LnNldFByb3BzKG9ubHlUaXBweVByb3BzKHByb3BzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0U3RhdHVzKGlzRW5hYmxlZDogYm9vbGVhbikge1xuICAgIGlzRW5hYmxlZCA/IHRoaXMuaW5zdGFuY2U/LmVuYWJsZSgpIDogdGhpcy5pbnN0YW5jZT8uZGlzYWJsZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUluc3RhbmNlKCkge1xuICAgIGlmICghdGhpcy5jb250ZW50KCkgJiYgIXRoaXMudXNlVGV4dENvbnRlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudGlwcHlGYWN0b3J5XG4gICAgICAuY3JlYXRlKHRoaXMuaG9zdCgpLCB7XG4gICAgICAgIGFsbG93SFRNTDogdHJ1ZSxcbiAgICAgICAgYXBwZW5kVG86IGRvY3VtZW50LmJvZHksXG4gICAgICAgIC4uLih0aGlzLmdsb2JhbENvbmZpZy56SW5kZXhHZXR0ZXJcbiAgICAgICAgICA/IHsgekluZGV4OiB0aGlzLmdsb2JhbENvbmZpZy56SW5kZXhHZXR0ZXIoKSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLm9ubHlUaXBweVByb3BzKHRoaXMuZ2xvYmFsQ29uZmlnKSxcbiAgICAgICAgLi4ub25seVRpcHB5UHJvcHModGhpcy5wcm9wcyksXG4gICAgICAgIG9uTW91bnQ6IChpbnN0YW5jZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUuc2V0KGlzVmlzaWJsZSk7XG4gICAgICAgICAgdGhpcy52aXNpYmxlSW50ZXJuYWwubmV4dChpc1Zpc2libGUpO1xuICAgICAgICAgIGlmICh0aGlzLnZpc2libGUub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnZpc2libGUubmV4dChpc1Zpc2libGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51c2VIb3N0V2lkdGgoKSAmJiB0aGlzLmxpc3RlblRvSG9zdFJlc2l6ZSgpO1xuICAgICAgICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uTW91bnQ/LihpbnN0YW5jZSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ3JlYXRlOiAoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgICBpbnN0YW5jZS5wb3BwZXIuY2xhc3NMaXN0LmFkZChcbiAgICAgICAgICAgIGB0aXBweS12YXJpYXRpb24tJHt0aGlzLnZhcmlhdGlvbigpIHx8IHRoaXMuZ2xvYmFsQ29uZmlnLmRlZmF1bHRWYXJpYXRpb259YFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRoaXMuY2xhc3NOYW1lKCkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2Ygbm9ybWFsaXplQ2xhc3NOYW1lKHRoaXMuY2xhc3NOYW1lKCkpKSB7XG4gICAgICAgICAgICAgIGluc3RhbmNlLnBvcHBlci5jbGFzc0xpc3QuYWRkKGtsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5nbG9iYWxDb25maWcub25DcmVhdGU/LihpbnN0YW5jZSk7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlKCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLnNob3coKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uU2hvdzogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgICAgaW5zdGFuY2UucmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJywgJycpO1xuXG4gICAgICAgICAgLy8gV2UncmUgcmUtZW50ZXJpbmcgYmVjYXVzZSB3ZSBtaWdodCBjcmVhdGUgYW4gQW5ndWxhciBjb21wb25lbnQsXG4gICAgICAgICAgLy8gd2hpY2ggc2hvdWxkIGJlIGRvbmUgd2l0aGluIHRoZSB6b25lLlxuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZXNvbHZlQ29udGVudChpbnN0YW5jZSkpO1xuXG4gICAgICAgICAgaWYgKGlzU3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5zZXRQcm9wcyh7IGFsbG93SFRNTDogZmFsc2UgfSk7XG5cbiAgICAgICAgICAgIGlmICghY29udGVudD8udHJpbSgpKSB7XG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpbnN0YW5jZS5zZXRDb250ZW50KGNvbnRlbnQpO1xuICAgICAgICAgIHRoaXMuaGlkZU9uRXNjYXBlKCkgJiYgdGhpcy5oYW5kbGVFc2NhcGVCdXR0b24oKTtcblxuICAgICAgICAgIGlmICh0aGlzLnVzZUhvc3RXaWR0aCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEluc3RhbmNlV2lkdGgoaW5zdGFuY2UsIHRoaXMuaG9zdFdpZHRoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucG9wcGVyV2lkdGgoKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbnN0YW5jZVdpZHRoKGluc3RhbmNlLCB0aGlzLnBvcHBlcldpZHRoKCkhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5nbG9iYWxDb25maWcub25TaG93Py4oaW5zdGFuY2UpO1xuICAgICAgICB9LFxuICAgICAgICBvbkhpZGUoaW5zdGFuY2UpIHtcbiAgICAgICAgICBpbnN0YW5jZS5yZWZlcmVuY2UucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25IaWRkZW46IChpbnN0YW5jZSkgPT4ge1xuICAgICAgICAgIHRoaXMub25IaWRkZW4oaW5zdGFuY2UpO1xuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoaW5zdGFuY2UpID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdHVzKHRoaXMuaXNFbmFibGVkKCkpO1xuICAgICAgICB0aGlzLnNldFByb3BzKHRoaXMucHJvcHMpO1xuXG4gICAgICAgIHRoaXMudmFyaWF0aW9uKCkgPT09ICdjb250ZXh0TWVudScgJiYgdGhpcy5oYW5kbGVDb250ZXh0TWVudSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzb2x2ZUNvbnRlbnQoaW5zdGFuY2U6IFRpcHB5SW5zdGFuY2UpIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50KCk7XG5cbiAgICBpZiAoIXRoaXMudmlld09wdGlvbnMkICYmICFpc1N0cmluZyhjb250ZW50KSkge1xuICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSVBQWV9SRUYsXG4gICAgICAgICAgICB1c2VWYWx1ZTogdGhpcy5pbnN0YW5jZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgICBpZiAoaXNDb21wb25lbnQoY29udGVudCkpIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5kYXRhID0gZGF0YTtcblxuICAgICAgICB0aGlzLnZpZXdPcHRpb25zJCA9IHtcbiAgICAgICAgICBpbmplY3RvcixcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoaXNUZW1wbGF0ZVJlZihjb250ZW50KSkge1xuICAgICAgICB0aGlzLnZpZXdPcHRpb25zJCA9IHtcbiAgICAgICAgICBpbmplY3RvcixcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgJGltcGxpY2l0OiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudmlld1JlZiA9IHRoaXMudmlld1NlcnZpY2UuY3JlYXRlVmlldyhjb250ZW50ISwge1xuICAgICAgdmNyOiB0aGlzLnZjcixcbiAgICAgIC4uLnRoaXMudmlld09wdGlvbnMkLFxuICAgIH0pO1xuXG4gICAgLy8gV2UgbmVlZCB0byBjYWxsIGRldGVjdENoYW5nZXMgZm9yIG9uUHVzaCBjb21wb25lbnRzIHRvIHVwZGF0ZSB0aGUgY29udGVudFxuICAgIGlmICh0aGlzLmRldGVjdENoYW5nZXNDb21wb25lbnQoKSAmJiBpc0NvbXBvbmVudChjb250ZW50KSkge1xuICAgICAgdGhpcy52aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Q29udGVudCA9IHRoaXMudmlld1JlZi5nZXRFbGVtZW50KCk7XG5cbiAgICBpZiAodGhpcy51c2VUZXh0Q29udGVudCgpKSB7XG4gICAgICBuZXdDb250ZW50ID0gaW5zdGFuY2UucmVmZXJlbmNlLnRleHRDb250ZW50ITtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcobmV3Q29udGVudCkgJiYgdGhpcy5nbG9iYWxDb25maWcuYmVmb3JlUmVuZGVyKSB7XG4gICAgICBuZXdDb250ZW50ID0gdGhpcy5nbG9iYWxDb25maWcuYmVmb3JlUmVuZGVyKG5ld0NvbnRlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdDb250ZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRleHRNZW51KCkge1xuICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QoKSwgJ2NvbnRleHRtZW51JylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnNldFByb3BzKHtcbiAgICAgICAgICBnZXRSZWZlcmVuY2VDbGllbnRSZWN0OiAoKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgdG9wOiBldmVudC5jbGllbnRZLFxuICAgICAgICAgICAgICBib3R0b206IGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgICAgIGxlZnQ6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICAgIHJpZ2h0OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgfSBhcyBET01SZWN0UmVhZE9ubHkpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnNob3coKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUVzY2FwZUJ1dHRvbigpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQuYm9keSwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBjb2RlIH06IEtleWJvYXJkRXZlbnQpID0+IGNvZGUgPT09ICdFc2NhcGUnKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudmlzaWJsZUludGVybmFsLnBpcGUoZmlsdGVyKCh2KSA9PiAhdikpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrT3ZlcmZsb3coaXNFbGVtZW50T3ZlcmZsb3c6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNFbGVtZW50T3ZlcmZsb3cpIHtcbiAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkge1xuICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbmNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluc3RhbmNlLmVuYWJsZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluc3RhbmNlPy5kaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGxpc3RlblRvSG9zdFJlc2l6ZSgpIHtcbiAgICBkaW1lbnNpb25zQ2hhbmdlcyh0aGlzLmhvc3QoKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnZpc2libGVJbnRlcm5hbCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0SW5zdGFuY2VXaWR0aCh0aGlzLmluc3RhbmNlLCB0aGlzLmhvc3RXaWR0aCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRJbnN0YW5jZVdpZHRoKGluc3RhbmNlOiBJbnN0YW5jZSwgd2lkdGg6IHN0cmluZyB8IG51bWJlcikge1xuICAgIGNvbnN0IGluUGl4ZWxzID0gY29lcmNlQ3NzUGl4ZWxWYWx1ZSh3aWR0aCk7XG4gICAgaW5zdGFuY2UucG9wcGVyLnN0eWxlLndpZHRoID0gaW5QaXhlbHM7XG4gICAgaW5zdGFuY2UucG9wcGVyLnN0eWxlLm1heFdpZHRoID0gaW5QaXhlbHM7XG4gICAgKGluc3RhbmNlLnBvcHBlci5maXJzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudCkuc3R5bGUubWF4V2lkdGggPSBpblBpeGVscztcbiAgfVxuXG4gIHByaXZhdGUgb25IaWRkZW4oaW5zdGFuY2U6IFRpcHB5SW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlKSB7XG4gICAgdGhpcy5kZXN0cm95VmlldygpO1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNWaXNpYmxlLnNldChpc1Zpc2libGUpO1xuICAgIHRoaXMudmlzaWJsZUludGVybmFsLm5leHQoaXNWaXNpYmxlKTtcbiAgICBpZiAodGhpcy52aXNpYmxlLm9ic2VydmVkKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy52aXNpYmxlLm5leHQoaXNWaXNpYmxlKSk7XG4gICAgfVxuICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uSGlkZGVuPy4oaW5zdGFuY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc092ZXJmbG93aW5nJCgpIHtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5ob3N0KCk7XG4gICAgY29uc3Qgbm90aWZpZXJzJCA9IFtvdmVyZmxvd0NoYW5nZXMoaG9zdCldO1xuXG4gICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIGhvc3QgaGFzIGEgc3RhdGljIHdpZHRoIGJ1dCB0aGUgY29udGVudCBtaWdodCBjaGFuZ2VcbiAgICBpZiAodGhpcy5zdGF0aWNXaWR0aEhvc3QoKSkge1xuICAgICAgbm90aWZpZXJzJC5wdXNoKFxuICAgICAgICB0aGlzLmNvbnRlbnRDaGFuZ2VkLnBpcGUoXG4gICAgICAgICAgLy8gV2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29udGVudCB0byBiZSByZW5kZXJlZCBiZWZvcmUgd2UgY2FuIGNoZWNrIGlmIGl0J3Mgb3ZlcmZsb3dpbmcuXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuICgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcCgoKSA9PiBpc0VsZW1lbnRPdmVyZmxvdyhob3N0KSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoLi4ubm90aWZpZXJzJCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBDYXB0dXJlIHNpZ25hbCByZWFkIHRvIHRyYWNrIGl0cyBjaGFuZ2VzLlxuICAgICAgdGhpcy5jb250ZW50KCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5jb250ZW50Q2hhbmdlZC5uZXh0KCkpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHRoaXMuc2V0U3RhdHVzKHRoaXMuaXNFbmFibGVkKCkpKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpc1Zpc2libGUgPSB0aGlzLmlzVmlzaWJsZSgpO1xuICAgICAgaXNWaXNpYmxlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { inject, Injectable, NgZone } from '@angular/core';
2
2
  import { defer, from, map, of, shareReplay } from 'rxjs';
3
- import { TIPPY_CONFIG } from './tippy.types';
3
+ import { TIPPY_LOADER } from '@ngneat/helipopper/config';
4
4
  import * as i0 from "@angular/core";
5
5
  // We need to use `isPromise` instead of checking whether
6
6
  // `value instanceof Promise`. In zone.js patched environments, `global.Promise`
@@ -13,7 +13,7 @@ function isPromise(value) {
13
13
  export class TippyFactory {
14
14
  constructor() {
15
15
  this._ngZone = inject(NgZone);
16
- this._config = inject(TIPPY_CONFIG);
16
+ this._loader = inject(TIPPY_LOADER);
17
17
  this._tippyImpl$ = null;
18
18
  }
19
19
  /**
@@ -26,8 +26,10 @@ export class TippyFactory {
26
26
  // synchronous and to avoid triggering the `defer` callback repeatedly
27
27
  // when new subscribers arrive.
28
28
  this._tippyImpl$ ||= defer(() => {
29
- const maybeTippy = this._ngZone.runOutsideAngular(() => this._config.loader());
30
- return isPromise(maybeTippy) ? from(maybeTippy).pipe(map((tippy) => tippy.default)) : of(maybeTippy);
29
+ const maybeTippy = this._ngZone.runOutsideAngular(() => this._loader());
30
+ return isPromise(maybeTippy)
31
+ ? from(maybeTippy).pipe(map((tippy) => tippy.default))
32
+ : of(maybeTippy);
31
33
  }).pipe(shareReplay());
32
34
  return this._tippyImpl$.pipe(map((tippy) => {
33
35
  return this._ngZone.runOutsideAngular(() => tippy(target, props));
@@ -40,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
40
42
  type: Injectable,
41
43
  args: [{ providedIn: 'root' }]
42
44
  }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sZUFBZSxDQUFDOztBQUU5RCx5REFBeUQ7QUFDekQsZ0ZBQWdGO0FBQ2hGLDZCQUE2QjtBQUM3Qiw2RUFBNkU7QUFDN0Usa0NBQWtDO0FBQ2xDLFNBQVMsU0FBUyxDQUFJLEtBQVU7SUFDOUIsT0FBTyxPQUFPLEtBQUssRUFBRSxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQzNDLENBQUM7QUFHRCxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVtQixZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpCLFlBQU8sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFeEMsZ0JBQVcsR0FBb0MsSUFBSSxDQUFDO0tBc0I3RDtJQXBCQzs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQW1CLEVBQUUsS0FBMkI7UUFDckQsK0RBQStEO1FBQy9ELHNFQUFzRTtRQUN0RSwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV2QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OEdBMUJVLFlBQVk7a0hBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHRpcHB5IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZlciwgZnJvbSwgbWFwLCB0eXBlIE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUSVBQWV9DT05GSUcsIHR5cGUgVGlwcHlQcm9wcyB9IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuXG4vLyBXZSBuZWVkIHRvIHVzZSBgaXNQcm9taXNlYCBpbnN0ZWFkIG9mIGNoZWNraW5nIHdoZXRoZXJcbi8vIGB2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2VgLiBJbiB6b25lLmpzIHBhdGNoZWQgZW52aXJvbm1lbnRzLCBgZ2xvYmFsLlByb21pc2VgXG4vLyBpcyB0aGUgYFpvbmVBd2FyZVByb21pc2VgLlxuLy8gYGltcG9ydCguLi4pYCByZXR1cm5zIGEgbmF0aXZlIHByb21pc2UgKG5vdCBhIGBab25lQXdhcmVQcm9taXNlYCksIGNhdXNpbmdcbi8vIGBpbnN0YW5jZW9mYCBjaGVjayB0byBiZSBmYWxzeS5cbmZ1bmN0aW9uIGlzUHJvbWlzZTxUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgUHJvbWlzZTxUPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWU/LnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGlwcHlGYWN0b3J5IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnID0gaW5qZWN0KFRJUFBZX0NPTkZJRyk7XG5cbiAgcHJpdmF0ZSBfdGlwcHlJbXBsJDogT2JzZXJ2YWJsZTx0eXBlb2YgdGlwcHk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoaXMgcmV0dXJucyBhbiBvYnNlcnZhYmxlIGJlY2F1c2UgdGhlIHVzZXIgc2hvdWxkIHByb3ZpZGUgYSBgbG9hZGVyYFxuICAgKiBmdW5jdGlvbiwgd2hpY2ggbWF5IHJldHVybiBhIHByb21pc2UgaWYgdGhlIHRpcHB5LmpzIGxpYnJhcnkgaXMgdG8gYmVcbiAgICogbG9hZGVkIGFzeW5jaHJvbm91c2x5LlxuICAgKi9cbiAgY3JlYXRlKHRhcmdldDogSFRNTEVsZW1lbnQsIHByb3BzPzogUGFydGlhbDxUaXBweVByb3BzPikge1xuICAgIC8vIFdlIHVzZSBgc2hhcmVSZXBsYXlgIHRvIGVuc3VyZSB0aGF0IHN1YnNlcXVlbnQgZW1pc3Npb25zIGFyZVxuICAgIC8vIHN5bmNocm9ub3VzIGFuZCB0byBhdm9pZCB0cmlnZ2VyaW5nIHRoZSBgZGVmZXJgIGNhbGxiYWNrIHJlcGVhdGVkbHlcbiAgICAvLyB3aGVuIG5ldyBzdWJzY3JpYmVycyBhcnJpdmUuXG4gICAgdGhpcy5fdGlwcHlJbXBsJCB8fD0gZGVmZXIoKCkgPT4ge1xuICAgICAgY29uc3QgbWF5YmVUaXBweSA9IHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLl9jb25maWcubG9hZGVyKCkpO1xuICAgICAgcmV0dXJuIGlzUHJvbWlzZShtYXliZVRpcHB5KSA/IGZyb20obWF5YmVUaXBweSkucGlwZShtYXAoKHRpcHB5KSA9PiB0aXBweS5kZWZhdWx0KSkgOiBvZihtYXliZVRpcHB5KTtcbiAgICB9KS5waXBlKHNoYXJlUmVwbGF5KCkpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3RpcHB5SW1wbCQucGlwZShcbiAgICAgIG1hcCgodGlwcHkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aXBweSh0YXJnZXQsIHByb3BzKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7O0FBRTFFLHlEQUF5RDtBQUN6RCxnRkFBZ0Y7QUFDaEYsNkJBQTZCO0FBQzdCLDZFQUE2RTtBQUM3RSxrQ0FBa0M7QUFDbEMsU0FBUyxTQUFTLENBQUksS0FBVTtJQUM5QixPQUFPLE9BQU8sS0FBSyxFQUFFLElBQUksS0FBSyxVQUFVLENBQUM7QUFDM0MsQ0FBQztBQUdELE1BQU0sT0FBTyxZQUFZO0lBRHpCO1FBRW1CLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV4QyxnQkFBVyxHQUFvQyxJQUFJLENBQUM7S0F3QjdEO0lBdEJDOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsTUFBbUIsRUFBRSxLQUEyQjtRQUNyRCwrREFBK0Q7UUFDL0Qsc0VBQXNFO1FBQ3RFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN4RSxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0RCxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0E1QlUsWUFBWTtrSEFBWixZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgdGlwcHkgZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmVyLCBmcm9tLCBtYXAsIHR5cGUgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUSVBQWV9MT0FERVIsIHR5cGUgVGlwcHlQcm9wcyB9IGZyb20gJ0BuZ25lYXQvaGVsaXBvcHBlci9jb25maWcnO1xuXG4vLyBXZSBuZWVkIHRvIHVzZSBgaXNQcm9taXNlYCBpbnN0ZWFkIG9mIGNoZWNraW5nIHdoZXRoZXJcbi8vIGB2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2VgLiBJbiB6b25lLmpzIHBhdGNoZWQgZW52aXJvbm1lbnRzLCBgZ2xvYmFsLlByb21pc2VgXG4vLyBpcyB0aGUgYFpvbmVBd2FyZVByb21pc2VgLlxuLy8gYGltcG9ydCguLi4pYCByZXR1cm5zIGEgbmF0aXZlIHByb21pc2UgKG5vdCBhIGBab25lQXdhcmVQcm9taXNlYCksIGNhdXNpbmdcbi8vIGBpbnN0YW5jZW9mYCBjaGVjayB0byBiZSBmYWxzeS5cbmZ1bmN0aW9uIGlzUHJvbWlzZTxUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgUHJvbWlzZTxUPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWU/LnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGlwcHlGYWN0b3J5IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVyID0gaW5qZWN0KFRJUFBZX0xPQURFUik7XG5cbiAgcHJpdmF0ZSBfdGlwcHlJbXBsJDogT2JzZXJ2YWJsZTx0eXBlb2YgdGlwcHk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoaXMgcmV0dXJucyBhbiBvYnNlcnZhYmxlIGJlY2F1c2UgdGhlIHVzZXIgc2hvdWxkIHByb3ZpZGUgYSBgbG9hZGVyYFxuICAgKiBmdW5jdGlvbiwgd2hpY2ggbWF5IHJldHVybiBhIHByb21pc2UgaWYgdGhlIHRpcHB5LmpzIGxpYnJhcnkgaXMgdG8gYmVcbiAgICogbG9hZGVkIGFzeW5jaHJvbm91c2x5LlxuICAgKi9cbiAgY3JlYXRlKHRhcmdldDogSFRNTEVsZW1lbnQsIHByb3BzPzogUGFydGlhbDxUaXBweVByb3BzPikge1xuICAgIC8vIFdlIHVzZSBgc2hhcmVSZXBsYXlgIHRvIGVuc3VyZSB0aGF0IHN1YnNlcXVlbnQgZW1pc3Npb25zIGFyZVxuICAgIC8vIHN5bmNocm9ub3VzIGFuZCB0byBhdm9pZCB0cmlnZ2VyaW5nIHRoZSBgZGVmZXJgIGNhbGxiYWNrIHJlcGVhdGVkbHlcbiAgICAvLyB3aGVuIG5ldyBzdWJzY3JpYmVycyBhcnJpdmUuXG4gICAgdGhpcy5fdGlwcHlJbXBsJCB8fD0gZGVmZXIoKCkgPT4ge1xuICAgICAgY29uc3QgbWF5YmVUaXBweSA9IHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLl9sb2FkZXIoKSk7XG4gICAgICByZXR1cm4gaXNQcm9taXNlKG1heWJlVGlwcHkpXG4gICAgICAgID8gZnJvbShtYXliZVRpcHB5KS5waXBlKG1hcCgodGlwcHkpID0+IHRpcHB5LmRlZmF1bHQpKVxuICAgICAgICA6IG9mKG1heWJlVGlwcHkpO1xuICAgIH0pLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG5cbiAgICByZXR1cm4gdGhpcy5fdGlwcHlJbXBsJC5waXBlKFxuICAgICAgbWFwKCh0aXBweSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRpcHB5KHRhcmdldCwgcHJvcHMpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { inject, Inject, Injectable, Injector } from '@angular/core';
2
2
  import { isComponent, isTemplateRef, } from '@ngneat/overview';
3
- import { TIPPY_CONFIG, TIPPY_REF, } from './tippy.types';
3
+ import { TIPPY_CONFIG, TIPPY_REF, } from '@ngneat/helipopper/config';
4
4
  import { normalizeClassName, onlyTippyProps } from './utils';
5
5
  import { TippyFactory } from './tippy.factory';
6
6
  import * as i0 from "@angular/core";
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
81
81
  type: Inject,
82
82
  args: [TIPPY_CONFIG]
83
83
  }] }, { type: i1.ViewService }, { type: i0.Injector }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxHQUdkLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUdMLFlBQVksRUFDWixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUcvQyxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUNnQyxZQUF5QixFQUMvQyxJQUFpQixFQUNqQixRQUFrQjtRQUZJLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUxYLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBTW5ELENBQUM7SUFFSixNQUFNLENBQ0osSUFBaUIsRUFDakIsT0FBVSxFQUNWLFVBQWtDLEVBQUU7UUFFcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUNoRixNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLFFBQWtDLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVB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QUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLN0IsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBpc0NvbXBvbmVudCxcbiAgaXNUZW1wbGF0ZVJlZixcbiAgUmVzb2x2ZVZpZXdSZWYsXG4gIFZpZXdTZXJ2aWNlLFxufSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBDcmVhdGVPcHRpb25zLFxuICBFeHRlbmRlZFRpcHB5SW5zdGFuY2UsXG4gIFRJUFBZX0NPTkZJRyxcbiAgVElQUFlfUkVGLFxuICBUaXBweUNvbmZpZyxcbiAgVGlwcHlJbnN0YW5jZSxcbn0gZnJvbSAnLi90aXBweS50eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVDbGFzc05hbWUsIG9ubHlUaXBweVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUaXBweUZhY3RvcnkgfSBmcm9tICcuL3RpcHB5LmZhY3RvcnknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRpcHB5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpcHB5RmFjdG9yeSA9IGluamVjdChUaXBweUZhY3RvcnkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVElQUFlfQ09ORklHKSBwcml2YXRlIGdsb2JhbENvbmZpZzogVGlwcHlDb25maWcsXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgY3JlYXRlPFQgZXh0ZW5kcyBDb250ZW50PihcbiAgICBob3N0OiBIVE1MRWxlbWVudCxcbiAgICBjb250ZW50OiBULFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8Q3JlYXRlT3B0aW9ucz4gPSB7fVxuICApOiBPYnNlcnZhYmxlPEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPj4ge1xuICAgIGNvbnN0IHZhcmlhdGlvbiA9IG9wdGlvbnMudmFyaWF0aW9uIHx8IHRoaXMuZ2xvYmFsQ29uZmlnLmRlZmF1bHRWYXJpYXRpb24gfHwgJyc7XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgb25TaG93OiAoaW5zdGFuY2U6IEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPikgPT4ge1xuICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJywgJycpO1xuICAgICAgICBpZiAoIWluc3RhbmNlLiR2aWV3T3B0aW9ucykge1xuICAgICAgICAgIGluc3RhbmNlLiR2aWV3T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBwcm92aWRlOiBUSVBQWV9SRUYsXG4gICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogaW5zdGFuY2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcGFyZW50OiBvcHRpb25zLmluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGlzVGVtcGxhdGVSZWYoY29udGVudCkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLiR2aWV3T3B0aW9ucy5jb250ZXh0ID0ge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGluc3RhbmNlLmhpZGUuYmluZChpbnN0YW5jZSksXG4gICAgICAgICAgICAgIC4uLm9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NvbXBvbmVudChjb250ZW50KSkge1xuICAgICAgICAgICAgaW5zdGFuY2UuY29udGV4dCA9IG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgICAgIGluc3RhbmNlLmRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5zdGFuY2UudmlldyB8fD0gdGhpcy52aWV3LmNyZWF0ZVZpZXcoY29udGVudCwge1xuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgLi4uaW5zdGFuY2UuJHZpZXdPcHRpb25zLFxuICAgICAgICB9KSBhcyBSZXNvbHZlVmlld1JlZjxUPjtcblxuICAgICAgICBpbnN0YW5jZS5zZXRDb250ZW50KGluc3RhbmNlLnZpZXcuZ2V0RWxlbWVudCgpKTtcbiAgICAgICAgb3B0aW9ucz8ub25TaG93Py4oaW5zdGFuY2UpO1xuICAgICAgfSxcbiAgICAgIG9uSGlkZGVuOiAoaW5zdGFuY2U6IEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPikgPT4ge1xuICAgICAgICBob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJyk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnByZXNlcnZlVmlldykge1xuICAgICAgICAgIGluc3RhbmNlLnZpZXc/LmRlc3Ryb3koKTtcbiAgICAgICAgICBpbnN0YW5jZS52aWV3ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zPy5vbkhpZGRlbj8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgICAuLi5vbmx5VGlwcHlQcm9wcyh0aGlzLmdsb2JhbENvbmZpZyksXG4gICAgICAuLi50aGlzLmdsb2JhbENvbmZpZy52YXJpYXRpb25zPy5bdmFyaWF0aW9uXSxcbiAgICAgIC4uLm9ubHlUaXBweVByb3BzKG9wdGlvbnMpLFxuICAgICAgb25DcmVhdGU6IChpbnN0YW5jZTogVGlwcHlJbnN0YW5jZSkgPT4ge1xuICAgICAgICBpbnN0YW5jZS5wb3BwZXIuY2xhc3NMaXN0LmFkZChgdGlwcHktdmFyaWF0aW9uLSR7dmFyaWF0aW9ufWApO1xuICAgICAgICBpZiAob3B0aW9ucy5jbGFzc05hbWUpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtsYXNzIG9mIG5vcm1hbGl6ZUNsYXNzTmFtZShvcHRpb25zLmNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLnBvcHBlci5jbGFzc0xpc3QuYWRkKGtsYXNzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nbG9iYWxDb25maWcub25DcmVhdGU/LihpbnN0YW5jZSk7XG4gICAgICAgIG9wdGlvbnMub25DcmVhdGU/LihpbnN0YW5jZSk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5fdGlwcHlGYWN0b3J5LmNyZWF0ZShob3N0LCBjb25maWcpIGFzIE9ic2VydmFibGU8XG4gICAgICBFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD5cbiAgICA+O1xuICB9XG59XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxHQUdkLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUdMLFlBQVksRUFDWixTQUFTLEdBR1YsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRy9DLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQ2dDLFlBQXlCLEVBQy9DLElBQWlCLEVBQ2pCLFFBQWtCO1FBRkksaUJBQVksR0FBWixZQUFZLENBQWE7UUFDL0MsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTFgsa0JBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFNbkQsQ0FBQztJQUVKLE1BQU0sQ0FDSixJQUFpQixFQUNqQixPQUFVLEVBQ1YsVUFBa0MsRUFBRTtRQUVwQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQ2hGLE1BQU0sTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsUUFBa0MsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVks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LFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUs3QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGlzQ29tcG9uZW50LFxuICBpc1RlbXBsYXRlUmVmLFxuICBSZXNvbHZlVmlld1JlZixcbiAgVmlld1NlcnZpY2UsXG59IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIENyZWF0ZU9wdGlvbnMsXG4gIEV4dGVuZGVkVGlwcHlJbnN0YW5jZSxcbiAgVElQUFlfQ09ORklHLFxuICBUSVBQWV9SRUYsXG4gIFRpcHB5Q29uZmlnLFxuICBUaXBweUluc3RhbmNlLFxufSBmcm9tICdAbmduZWF0L2hlbGlwb3BwZXIvY29uZmlnJztcbmltcG9ydCB7IG5vcm1hbGl6ZUNsYXNzTmFtZSwgb25seVRpcHB5UHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRpcHB5RmFjdG9yeSB9IGZyb20gJy4vdGlwcHkuZmFjdG9yeSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGlwcHlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGlwcHlGYWN0b3J5ID0gaW5qZWN0KFRpcHB5RmFjdG9yeSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUSVBQWV9DT05GSUcpIHByaXZhdGUgZ2xvYmFsQ29uZmlnOiBUaXBweUNvbmZpZyxcbiAgICBwcml2YXRlIHZpZXc6IFZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICBjcmVhdGU8VCBleHRlbmRzIENvbnRlbnQ+KFxuICAgIGhvc3Q6IEhUTUxFbGVtZW50LFxuICAgIGNvbnRlbnQ6IFQsXG4gICAgb3B0aW9uczogUGFydGlhbDxDcmVhdGVPcHRpb25zPiA9IHt9XG4gICk6IE9ic2VydmFibGU8RXh0ZW5kZWRUaXBweUluc3RhbmNlPFQ+PiB7XG4gICAgY29uc3QgdmFyaWF0aW9uID0gb3B0aW9ucy52YXJpYXRpb24gfHwgdGhpcy5nbG9iYWxDb25maWcuZGVmYXVsdFZhcmlhdGlvbiB8fCAnJztcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBvblNob3c6IChpbnN0YW5jZTogRXh0ZW5kZWRUaXBweUluc3RhbmNlPFQ+KSA9PiB7XG4gICAgICAgIGhvc3Quc2V0QXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nLCAnJyk7XG4gICAgICAgIGlmICghaW5zdGFuY2UuJHZpZXdPcHRpb25zKSB7XG4gICAgICAgICAgaW5zdGFuY2UuJHZpZXdPcHRpb25zID0ge1xuICAgICAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IFRJUFBZX1JFRixcbiAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBwYXJlbnQ6IG9wdGlvbnMuaW5qZWN0b3IgfHwgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoaXNUZW1wbGF0ZVJlZihjb250ZW50KSkge1xuICAgICAgICAgICAgaW5zdGFuY2UuJHZpZXdPcHRpb25zLmNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogaW5zdGFuY2UuaGlkZS5iaW5kKGluc3RhbmNlKSxcbiAgICAgICAgICAgICAgLi4ub3B0aW9ucy5jb250ZXh0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQ29tcG9uZW50KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5jb250ZXh0ID0gb3B0aW9ucy5jb250ZXh0O1xuICAgICAgICAgICAgaW5zdGFuY2UuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpbnN0YW5jZS52aWV3IHx8PSB0aGlzLnZpZXcuY3JlYXRlVmlldyhjb250ZW50LCB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAuLi5pbnN0YW5jZS4kdmlld09wdGlvbnMsXG4gICAgICAgIH0pIGFzIFJlc29sdmVWaWV3UmVmPFQ+O1xuXG4gICAgICAgIGluc3RhbmNlLnNldENvbnRlbnQoaW5zdGFuY2Uudmlldy5nZXRFbGVtZW50KCkpO1xuICAgICAgICBvcHRpb25zPy5vblNob3c/LihpbnN0YW5jZSk7XG4gICAgICB9LFxuICAgICAgb25IaWRkZW46IChpbnN0YW5jZTogRXh0ZW5kZWRUaXBweUluc3RhbmNlPFQ+KSA9PiB7XG4gICAgICAgIGhvc3QucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nKTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMucHJlc2VydmVWaWV3KSB7XG4gICAgICAgICAgaW5zdGFuY2Uudmlldz8uZGVzdHJveSgpO1xuICAgICAgICAgIGluc3RhbmNlLnZpZXcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnM/Lm9uSGlkZGVuPy4oaW5zdGFuY2UpO1xuICAgICAgfSxcbiAgICAgIC4uLm9ubHlUaXBweVByb3BzKHRoaXMuZ2xvYmFsQ29uZmlnKSxcbiAgICAgIC4uLnRoaXMuZ2xvYmFsQ29uZmlnLnZhcmlhdGlvbnM/Llt2YXJpYXRpb25dLFxuICAgICAgLi4ub25seVRpcHB5UHJvcHMob3B0aW9ucyksXG4gICAgICBvbkNyZWF0ZTogKGluc3RhbmNlOiBUaXBweUluc3RhbmNlKSA9PiB7XG4gICAgICAgIGluc3RhbmNlLnBvcHBlci5jbGFzc0xpc3QuYWRkKGB0aXBweS12YXJpYXRpb24tJHt2YXJpYXRpb259YCk7XG4gICAgICAgIGlmIChvcHRpb25zLmNsYXNzTmFtZSkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2Ygbm9ybWFsaXplQ2xhc3NOYW1lKG9wdGlvbnMuY2xhc3NOYW1lKSkge1xuICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmNsYXNzTGlzdC5hZGQoa2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdsb2JhbENvbmZpZy5vbkNyZWF0ZT8uKGluc3RhbmNlKTtcbiAgICAgICAgb3B0aW9ucy5vbkNyZWF0ZT8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLl90aXBweUZhY3RvcnkuY3JlYXRlKGhvc3QsIGNvbmZpZykgYXMgT2JzZXJ2YWJsZTxcbiAgICAgIEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPlxuICAgID47XG4gIH1cbn1cbiJdfQ==