angular-three 2.0.0-beta.3 → 2.0.0-beta.5

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.
@@ -111,6 +111,7 @@ class NgtCanvas extends NgtSignalStore {
111
111
  this.#store.set({
112
112
  onPointerMissed: (event) => {
113
113
  this.pointerMissed.emit(event);
114
+ safeDetectChanges(this.#cdr);
114
115
  },
115
116
  });
116
117
  }
@@ -136,9 +137,8 @@ class NgtCanvas extends NgtSignalStore {
136
137
  if (width > 0 && height > 0) {
137
138
  if (!this.#store.isInit)
138
139
  this.#store.init();
139
- const inputs = this.select();
140
140
  this.#resizeRef = this.#zone.run(() => effect(() => {
141
- const canvasInputs = inputs();
141
+ const canvasInputs = this.state();
142
142
  this.#zone.runOutsideAngular(() => {
143
143
  this.#store.configure({ ...canvasInputs, size: { width, height, top, left } }, this.glCanvas.nativeElement);
144
144
  });
@@ -208,15 +208,15 @@ class NgtCanvas extends NgtSignalStore {
208
208
  }
209
209
  });
210
210
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", scene: "scene", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: "sceneGraph", sceneGraphInputs: "sceneGraphInputs", compoundPrefixes: "compoundPrefixes", linear: "linear", legacy: "legacy", flat: "flat", orthographic: "orthographic", frameloop: "frameloop", dpr: "dpr", raycaster: "raycaster", shadows: "shadows", camera: "camera", scene: "scene", gl: "gl", eventSource: "eventSource", eventPrefix: "eventPrefix", lookAt: "lookAt", performance: "performance" }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [NgtStore, provideNgxResizeOptions({ emitInZone: false, emitInitialResult: true })], viewQueries: [{ propertyName: "glCanvas", first: true, predicate: ["glCanvas"], descendants: true, static: true }, { propertyName: "glAnchor", first: true, predicate: ["glCanvas"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
213
213
  <div (ngxResize)="onResize($event)" style="height: 100%; width: 100%;">
214
214
  <canvas #glCanvas style="display: block;"> </canvas>
215
215
  </div>
216
216
  `, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
217
217
  }
218
218
  export { NgtCanvas };
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCanvas, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCanvas, decorators: [{
220
220
  type: Component,
221
221
  args: [{
222
222
  selector: 'ngt-canvas',
@@ -279,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
279
279
  type: ViewChild,
280
280
  args: ['glCanvas', { static: true, read: ViewContainerRef }]
281
281
  }] } });
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLE1BQU0sRUFDTixNQUFNLEdBTVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxZQUFZLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFaEUsTUFhYSxTQUFVLFNBQVEsY0FBK0I7SUFDakQsWUFBWSxDQUErQjtJQUMzQyxTQUFTLENBQW9CO0lBQzdCLEtBQUssQ0FBaUQ7SUFDdEQsS0FBSyxDQUFrQjtJQUN2QixJQUFJLENBQTZCO0lBQ2pDLE1BQU0sQ0FBb0I7SUFFMUIsUUFBUSxDQUErQjtJQU1oRCxJQUFhLE1BQU0sQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxHQUFH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SUFBSSxFQUFFO2dCQUNoQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLO2dCQUlPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxHQUFHO3NCQUFmLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxFQUFFO3NCQUFkLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBSU8sV0FBVztzQkFBdkIsS0FBSztnQkFJSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRWtDLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDMEIsUUFBUTtzQkFBeEUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgZWZmZWN0LFxuICAgIGluamVjdCxcbiAgICB0eXBlIENvbXBvbmVudFJlZixcbiAgICB0eXBlIE9uQ2hhbmdlcyxcbiAgICB0eXBlIE9uSW5pdCxcbiAgICB0eXBlIFNpbXBsZUNoYW5nZXMsXG4gICAgdHlwZSBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neFJlc2l6ZSwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMsIHR5cGUgTmd4UmVzaXplUmVzdWx0IH0gZnJvbSAnbmd4LXJlc2l6ZSc7XG5pbXBvcnQgeyBjcmVhdGVQb2ludGVyRXZlbnRzIH0gZnJvbSAnLi9kb20vZXZlbnRzJztcbmltcG9ydCB7IGluamVjdE5ndExvYWRlciB9IGZyb20gJy4vbG9hZGVyJztcbmltcG9ydCB7IHByb3ZpZGVOZ3RSZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXIvcHJvdmlkZXInO1xuaW1wb3J0IHsgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3N0b3Jlcy9zaWduYWwuc3RvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUsIHJvb3RTdGF0ZU1hcCB9IGZyb20gJy4vc3RvcmVzL3N0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkLCBOZ3RDYW52YXNJbnB1dHMsIE5ndERvbUV2ZW50LCBOZ3REcHIsIE5ndFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1jYW52YXMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAobmd4UmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7XCI+XG4gICAgICAgICAgICA8Y2FudmFzICNnbENhbnZhcyBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPiA8L2NhbnZhcz5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBpbXBvcnRzOiBbTmd4UmVzaXplXSxcbiAgICBwcm92aWRlcnM6IFtOZ3RTdG9yZSwgcHJvdmlkZU5neFJlc2l6ZU9wdGlvbnMoeyBlbWl0SW5ab25lOiBmYWxzZSwgZW1pdEluaXRpYWxSZXN1bHQ6IHRydWUgfSldLFxuICAgIGhvc3Q6IHsgc3R5bGU6ICdkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO292ZXJmbG93OiBoaWRkZW47JyB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RDYW52YXMgZXh0ZW5kcyBOZ3RTaWduYWxTdG9yZTxOZ3RDYW52YXNJbnB1dHM+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5ICNlbnZJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHJlYWRvbmx5ICNob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWYpIGFzIEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcmVhZG9ubHkgI2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcmVhZG9ubHkgI3N0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcblxuICAgIHJlYWRvbmx5ICNpc1JlYWR5ID0gdGhpcy4jc3RvcmUuc2VsZWN0KCdyZWFkeScpO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2NlbmVHcmFwaCE6IFR5cGU8dW5rbm93bj47XG4gICAgQElucHV0KCkgc2NlbmVHcmFwaElucHV0czogTmd0QW55UmVjb3JkID0ge307XG4gICAgQElucHV0KCkgY29tcG91bmRQcmVmaXhlczogc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCBsaW5lYXIobGluZWFyOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGluZWFyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBsZWdhY3kobGVnYWN5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgbGVnYWN5IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmbGF0KGZsYXQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmbGF0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcnRob2dyYXBoaWMob3J0aG9ncmFwaGljOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgb3J0aG9ncmFwaGljIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBmcmFtZWxvb3AoZnJhbWVsb29wOiBOZ3RDYW52YXNJbnB1dHNbJ2ZyYW1lbG9vcCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZnJhbWVsb29wIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkcHIoZHByOiBOZ3REcHIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkcHIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJheWNhc3RlcihyYXljYXN0ZXI6IFBhcnRpYWw8VEhSRUUuUmF5Y2FzdGVyPikge1xuICAgICAgICB0aGlzLnNldCh7IHJheWNhc3RlciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hhZG93cyhzaGFkb3dzOiBib29sZWFuIHwgUGFydGlhbDxUSFJFRS5XZWJHTFNoYWRvd01hcD4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzaGFkb3dzIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjYW1lcmEoY2FtZXJhOiBOZ3RDYW52YXNJbnB1dHNbJ2NhbWVyYSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY2FtZXJhIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzY2VuZShzY2VuZTogTmd0Q2FudmFzSW5wdXRzWydzY2VuZSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NlbmUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGdsKGdsOiBOZ3RDYW52YXNJbnB1dHNbJ2dsJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBnbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZXZlbnRTb3VyY2UoZXZlbnRTb3VyY2U6IE5ndENhbnZhc0lucHV0c1snZXZlbnRTb3VyY2UnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGV2ZW50U291cmNlIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBldmVudFByZWZpeChldmVudFByZWZpeDogTmd0Q2FudmFzSW5wdXRzWydldmVudFByZWZpeCddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXZlbnRQcmVmaXggfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGxvb2tBdChsb29rQXQ6IE5ndENhbnZhc0lucHV0c1snbG9va0F0J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsb29rQXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHBlcmZvcm1hbmNlKHBlcmZvcm1hbmNlOiBOZ3RDYW52YXNJbnB1dHNbJ3BlcmZvcm1hbmNlJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBwZXJmb3JtYW5jZSB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgY3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd0U3RhdGU+KCk7XG4gICAgQE91dHB1dCgpIHBvaW50ZXJNaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdnbENhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIGdsQ2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnZ2xDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBnbEFuY2hvciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICAjZ2xSZWY/OiBDb21wb25lbnRSZWY8dW5rbm93bj47XG4gICAgI2dsRW52SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgIHNoYWRvd3M6IGZhbHNlLFxuICAgICAgICAgICAgbGluZWFyOiBmYWxzZSxcbiAgICAgICAgICAgIGZsYXQ6IGZhbHNlLFxuICAgICAgICAgICAgbGVnYWN5OiBmYWxzZSxcbiAgICAgICAgICAgIG9ydGhvZ3JhcGhpYzogZmFsc2UsXG4gICAgICAgICAgICBmcmFtZWxvb3A6ICdhbHdheXMnLFxuICAgICAgICAgICAgZHByOiBbMSwgMl0sXG4gICAgICAgICAgICBldmVudHM6IGNyZWF0ZVBvaW50ZXJFdmVudHMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuI2dsUmVmKSB0aGlzLiNnbFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICBpZiAodGhpcy4jZ2xFbnZJbmplY3RvcikgdGhpcy4jZ2xFbnZJbmplY3Rvci5kZXN0cm95KCk7XG4gICAgICAgICAgICBpbmplY3ROZ3RMb2FkZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy4jc3RvcmUuZGVzdHJveSh0aGlzLmdsQ2FudmFzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgaGJQb2ludGVyRXZlbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3QoJ2V2ZW50U291cmNlJykoKSAhPT0gdGhpcy4jaG9zdC5uYXRpdmVFbGVtZW50ID8gJ25vbmUnIDogJ2F1dG8nO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NjZW5lR3JhcGhJbnB1dHMnXSAmJiAhY2hhbmdlc1snc2NlbmVHcmFwaElucHV0cyddLmZpcnN0Q2hhbmdlICYmIHRoaXMuI2dsUmVmKSB7XG4gICAgICAgICAgICB0aGlzLiNzZXRTY2VuZUdyYXBoSW5wdXRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldCgnZXZlbnRTb3VyY2UnKSkge1xuICAgICAgICAgICAgLy8gc2V0IGRlZmF1bHQgZXZlbnQgc291cmNlIHRvIHRoZSBob3N0IGVsZW1lbnRcbiAgICAgICAgICAgIHRoaXMuc2V0KHsgZXZlbnRTb3VyY2U6IHRoaXMuI2hvc3QubmF0aXZlRWxlbWVudCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvaW50ZXJNaXNzZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3N0b3JlLnNldCh7XG4gICAgICAgICAgICAgICAgb25Qb2ludGVyTWlzc2VkOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyTWlzc2VkLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldHVwIE5ndFN0b3JlXG4gICAgICAgIHRoaXMuI3N0b3JlLmluaXQoKTtcblxuICAgICAgICAvLyBzZXQgcm9vdFN0YXRlTWFwXG4gICAgICAgIHJvb3RTdGF0ZU1hcC5zZXQodGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50LCB0aGlzLiNzdG9yZSk7XG5cbiAgICAgICAgLy8gc3Vic2NyaWJlIHRvIHN0b3JlIHRvIGxpc3RlbiBmb3IgcmVhZHkgc3RhdGVcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaXNSZWFkeSgpKSB0aGlzLiNzdG9yZVJlYWR5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBpbmplY3RvcjogdGhpcy4jaW5qZWN0b3IsIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAjcmVzaXplUmVmPzogUmV0dXJuVHlwZTx0eXBlb2YgZWZmZWN0PjtcbiAgICAvLyBOT1RFOiB0aGlzIGlzIGludm9rZWQgb3V0c2lkZSBvZiBBbmd1bGFyIFpvbmVcbiAgICBvblJlc2l6ZSh7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9OiBOZ3hSZXNpemVSZXN1bHQpIHtcbiAgICAgICAgLy8gZGVzdHJveSBwcmV2aW91cyBlZmZlY3RcbiAgICAgICAgaWYgKHRoaXMuI3Jlc2l6ZVJlZikge1xuICAgICAgICAgICAgdGhpcy4jcmVzaXplUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiNzdG9yZS5pc0luaXQpIHRoaXMuI3N0b3JlLmluaXQoKTtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuc2VsZWN0KCk7XG4gICAgICAgICAgICB0aGlzLiNyZXNpemVSZWYgPSB0aGlzLiN6b25lLnJ1bigoKSA9PlxuICAgICAgICAgICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FudmFzSW5wdXRzID0gaW5wdXRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNzdG9yZS5jb25maWd1cmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4uY2FudmFzSW5wdXRzLCBzaXplOiB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpbmplY3RvcjogdGhpcy4jaW5qZWN0b3IsIG1hbnVhbENsZWFudXA6IHRydWUsIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTk9URTogVGhpcyBpcyBpbnZva2VkIG91dHNpZGUgb2YgQW5ndWxhciBab25lXG4gICAgI3N0b3JlUmVhZHkoKSB7XG4gICAgICAgIC8vIGNhbnZhcyBpcyByZWFkeSwgbGV0J3MgYWN0aXZhdGUgdGhlIGxvb3BcbiAgICAgICAgdGhpcy4jc3RvcmUuc2V0KChzdGF0ZSkgPT4gKHsgaW50ZXJuYWw6IHsgLi4uc3RhdGUuaW50ZXJuYWwsIGFjdGl2ZTogdHJ1ZSB9IH0pKTtcblxuICAgICAgICBjb25zdCBpbnB1dHMgPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuI3N0b3JlLmdldCgpO1xuXG4gICAgICAgIC8vIGNvbm5lY3QgdG8gZXZlbnQgc291cmNlXG4gICAgICAgIHN0YXRlLmV2ZW50cy5jb25uZWN0Py4oaXMucmVmKGlucHV0cy5ldmVudFNvdXJjZSkgPyBpbnB1dHMuZXZlbnRTb3VyY2UubmF0aXZlRWxlbWVudCA6IGlucHV0cy5ldmVudFNvdXJjZSk7XG5cbiAgICAgICAgLy8gc2V0dXAgY29tcHV0ZSBmdW5jdGlvbiBmb3IgZXZlbnRzXG4gICAgICAgIGlmIChpbnB1dHMuZXZlbnRQcmVmaXgpIHtcbiAgICAgICAgICAgIHN0YXRlLnNldEV2ZW50cyh7XG4gICAgICAgICAgICAgICAgY29tcHV0ZTogKGV2ZW50LCBzdG9yZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclN0YXRlID0gc3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSBldmVudFsoaW5wdXRzLmV2ZW50UHJlZml4ICsgJ1gnKSBhcyBrZXlvZiBOZ3REb21FdmVudF0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZXZlbnRbKGlucHV0cy5ldmVudFByZWZpeCArICdZJykgYXMga2V5b2YgTmd0RG9tRXZlbnRdIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJTdGF0ZS5wb2ludGVyLnNldCgoeCAvIGlubmVyU3RhdGUuc2l6ZS53aWR0aCkgKiAyIC0gMSwgLSh5IC8gaW5uZXJTdGF0ZS5zaXplLmhlaWdodCkgKiAyICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyU3RhdGUucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoaW5uZXJTdGF0ZS5wb2ludGVyLCBpbm5lclN0YXRlLmNhbWVyYSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1pdCBjcmVhdGVkIGV2ZW50IGlmIG9ic2VydmVkXG4gICAgICAgIGlmICh0aGlzLmNyZWF0ZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIC8vIGJ1dCBnbyBiYWNrIGludG8gem9uZSB0byBydW4gaXRcbiAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZWQuZW1pdCh0aGlzLiNzdG9yZS5nZXQoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlbmRlclxuICAgICAgICBpZiAodGhpcy4jZ2xSZWYpIHRoaXMuI2dsUmVmLmRlc3Ryb3koKTtcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jZ2xFbnZJbmplY3RvciA9IGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlTmd0UmVuZGVyZXIoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IHRoaXMuI3N0b3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWY6IHRoaXMuI2NkcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kUHJlZml4ZXM6IHRoaXMuY29tcG91bmRQcmVmaXhlcyxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0aGlzLiNlbnZJbmplY3RvclxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy4jZ2xSZWYgPSB0aGlzLmdsQW5jaG9yLmNyZWF0ZUNvbXBvbmVudCh0aGlzLnNjZW5lR3JhcGgsIHtcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLiNnbEVudkluamVjdG9yLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLiNzZXRTY2VuZUdyYXBoSW5wdXRzKCk7XG4gICAgICAgICAgICB0aGlzLiNvdmVycmlkZUNoYW5nZURldGVjdG9yUmVmKCk7XG4gICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLiNjZHIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAjb3ZlcnJpZGVDaGFuZ2VEZXRlY3RvclJlZigpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEZXRlY3RDaGFuZ2VzID0gdGhpcy4jY2RyLmRldGVjdENoYW5nZXMuYmluZCh0aGlzLiNjZHIpO1xuICAgICAgICB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIG9yaWdpbmFsRGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy4jZ2xSZWY/LmNoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAjc2V0U2NlbmVHcmFwaElucHV0cygpIHtcbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuI2dsUmVmKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zY2VuZUdyYXBoSW5wdXRzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNnbFJlZi5zZXRJbnB1dChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy4jZ2xSZWYuY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvY2FudmFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLE1BQU0sRUFDTixNQUFNLEdBTVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBd0IsTUFBTSxZQUFZLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFaEUsTUFhYSxTQUFVLFNBQVEsY0FBK0I7SUFDakQsWUFBWSxDQUErQjtJQUMzQyxTQUFTLENBQW9CO0lBQzdCLEtBQUssQ0FBaUQ7SUFDdEQsS0FBSyxDQUFrQjtJQUN2QixJQUFJLENBQTZCO0lBQ2pDLE1BQU0sQ0FBb0I7SUFFMUIsUUFBUSxDQUErQjtJQU1oRCxJQUFhLE1BQU0sQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLElBQUksQ0FBQyxJQUFhO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLFlBQVksQ0FBQyxZQUFxQjtRQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBYSxTQUFTLENBQUMsU0FBdUM7UUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQWEsR0FBRyxDQUFDLEdBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsU0FBUyxDQUFDLFNBQW1DO1FBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFhLE9BQU8sQ0FBQyxPQUFnRDtRQUNqRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBaUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQStCO1FBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFhLEVBQUUsQ0FBQyxFQUF5QjtRQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBYSxXQUFXLENBQUMsV0FBMkM7UUFDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsV0FBVyxDQUFDLFdBQTJDO1FBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFhLE1BQU0sQ0FBQyxNQUFpQztRQUNqRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxXQUFXLENBQUMsV0FBMkM7UUFDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQVFELE1BQU0sQ0FBeUI7SUFDL0IsY0FBYyxDQUF1QjtJQUVyQztRQUNJLEtBQUssQ0FBQztZQUNGLE9BQU8sRUFBRSxLQUFLO1lBQ2QsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsS0FBSztZQUNYLE1BQU0sRUFBRSxLQUFLO1lBQ2IsWUFBWSxFQUFFLEtBQUs7WUFDbkIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNYLE1BQU0sRUFBRSxtQkFBbUI7U0FDOUIsQ0FBQyxDQUFDO1FBNUZFLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixVQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBNEIsQ0FBQztRQUN0RCxVQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqQyxXQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFCLGFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUd2QyxxQkFBZ0IsR0FBaUIsRUFBRSxDQUFDO1FBQ3BDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQThEL0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFDdkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBb0JyRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkMsSUFBSSxJQUFJLENBQUMsY0FBYztnQkFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZELGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2RixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN4RixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUMvQjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUIsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDWixlQUFlLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7YUFDSixDQUFDLENBQUM7U0FDTjtRQUVELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRW5CLG1CQUFtQjtRQUNuQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzRCwrQ0FBK0M7UUFDL0MsTUFBTSxDQUNGLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUNELEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQ3hELENBQUM7SUFDTixDQUFDO0lBRUQsVUFBVSxDQUE2QjtJQUN2QyxnREFBZ0Q7SUFDaEQsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFtQjtRQUNsRCwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7UUFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDbEMsTUFBTSxDQUNGLEdBQUcsRUFBRTtnQkFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO29CQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDakIsRUFBRSxHQUFHLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FDOUIsQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzdFLENBQ0osQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxXQUFXO1FBQ1AsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVoQywwQkFBMEI7UUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUzRyxvQ0FBb0M7UUFDcEMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3BCLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ1osT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUN0QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFzQixDQUFXLENBQUM7b0JBQzNFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFzQixDQUFXLENBQUM7b0JBQzNFLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuRyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUUsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNOO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdkIsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFdkMscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcseUJBQXlCLENBQzNDO2dCQUNJLGtCQUFrQixDQUFDO29CQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQzVCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7aUJBQzFDLENBQUM7YUFDTCxFQUNELElBQUksQ0FBQyxZQUFZLENBQ3BCLENBQUM7WUFFRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3pELG1CQUFtQixFQUFFLElBQUksQ0FBQyxjQUFjO2FBQzNDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCwwQkFBMEI7UUFDdEIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtZQUMzQixxQkFBcUIsRUFBRSxDQUFDO1lBQ3hCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7b0JBQzlELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDcEM7Z0JBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3BEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXJQUSxTQUFTO2tHQUFULFNBQVMsd29CQUpQLENBQUMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGdOQWtGakQsZ0JBQWdCLHVGQXhGbkQ7Ozs7S0FJVCw0REFDUyxTQUFTOztTQUtWLFNBQVM7MkZBQVQsU0FBUztrQkFickIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztLQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUM5RixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsOEVBQThFLEVBQUU7b0JBQy9GLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDswRUFXOEIsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBSU8sWUFBWTtzQkFBeEIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLEdBQUc7c0JBQWYsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlPLEVBQUU7c0JBQWQsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFa0MsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUMwQixRQUFRO3NCQUF4RSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIHR5cGUgQ29tcG9uZW50UmVmLFxuICAgIHR5cGUgT25DaGFuZ2VzLFxuICAgIHR5cGUgT25Jbml0LFxuICAgIHR5cGUgU2ltcGxlQ2hhbmdlcyxcbiAgICB0eXBlIFR5cGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4UmVzaXplLCBwcm92aWRlTmd4UmVzaXplT3B0aW9ucywgdHlwZSBOZ3hSZXNpemVSZXN1bHQgfSBmcm9tICduZ3gtcmVzaXplJztcbmltcG9ydCB7IGNyZWF0ZVBvaW50ZXJFdmVudHMgfSBmcm9tICcuL2RvbS9ldmVudHMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0TG9hZGVyIH0gZnJvbSAnLi9sb2FkZXInO1xuaW1wb3J0IHsgcHJvdmlkZU5ndFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlci9wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3RTaWduYWxTdG9yZSB9IGZyb20gJy4vc3RvcmVzL3NpZ25hbC5zdG9yZSc7XG5pbXBvcnQgeyBOZ3RTdG9yZSwgcm9vdFN0YXRlTWFwIH0gZnJvbSAnLi9zdG9yZXMvc3RvcmUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndENhbnZhc0lucHV0cywgTmd0RG9tRXZlbnQsIE5ndERwciwgTmd0U3RhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4vdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd0LWNhbnZhcycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IChuZ3hSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIj5cbiAgICAgICAgICAgIDxjYW52YXMgI2dsQ2FudmFzIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7XCI+IDwvY2FudmFzPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGltcG9ydHM6IFtOZ3hSZXNpemVdLFxuICAgIHByb3ZpZGVyczogW05ndFN0b3JlLCBwcm92aWRlTmd4UmVzaXplT3B0aW9ucyh7IGVtaXRJblpvbmU6IGZhbHNlLCBlbWl0SW5pdGlhbFJlc3VsdDogdHJ1ZSB9KV0sXG4gICAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGJsb2NrO3Bvc2l0aW9uOiByZWxhdGl2ZTt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7b3ZlcmZsb3c6IGhpZGRlbjsnIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndENhbnZhcyBleHRlbmRzIE5ndFNpZ25hbFN0b3JlPE5ndENhbnZhc0lucHV0cz4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcmVhZG9ubHkgI2VudkluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcmVhZG9ubHkgI2hvc3QgPSBpbmplY3QoRWxlbWVudFJlZikgYXMgRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgcmVhZG9ubHkgI3pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICByZWFkb25seSAjY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICByZWFkb25seSAjc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgcmVhZG9ubHkgI2lzUmVhZHkgPSB0aGlzLiNzdG9yZS5zZWxlY3QoJ3JlYWR5Jyk7XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzY2VuZUdyYXBoITogVHlwZTx1bmtub3duPjtcbiAgICBASW5wdXQoKSBzY2VuZUdyYXBoSW5wdXRzOiBOZ3RBbnlSZWNvcmQgPSB7fTtcbiAgICBASW5wdXQoKSBjb21wb3VuZFByZWZpeGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgc2V0IGxpbmVhcihsaW5lYXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsaW5lYXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGxlZ2FjeShsZWdhY3k6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBsZWdhY3kgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZsYXQoZmxhdDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGZsYXQgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG9ydGhvZ3JhcGhpYyhvcnRob2dyYXBoaWM6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBvcnRob2dyYXBoaWMgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGZyYW1lbG9vcChmcmFtZWxvb3A6IE5ndENhbnZhc0lucHV0c1snZnJhbWVsb29wJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBmcmFtZWxvb3AgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRwcihkcHI6IE5ndERwcikge1xuICAgICAgICB0aGlzLnNldCh7IGRwciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmF5Y2FzdGVyKHJheWNhc3RlcjogUGFydGlhbDxUSFJFRS5SYXljYXN0ZXI+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcmF5Y2FzdGVyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzaGFkb3dzKHNoYWRvd3M6IGJvb2xlYW4gfCBQYXJ0aWFsPFRIUkVFLldlYkdMU2hhZG93TWFwPikge1xuICAgICAgICB0aGlzLnNldCh7IHNoYWRvd3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNhbWVyYShjYW1lcmE6IE5ndENhbnZhc0lucHV0c1snY2FtZXJhJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjYW1lcmEgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNjZW5lKHNjZW5lOiBOZ3RDYW52YXNJbnB1dHNbJ3NjZW5lJ10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBzY2VuZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZ2woZ2w6IE5ndENhbnZhc0lucHV0c1snZ2wnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGdsIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBldmVudFNvdXJjZShldmVudFNvdXJjZTogTmd0Q2FudmFzSW5wdXRzWydldmVudFNvdXJjZSddKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZXZlbnRTb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGV2ZW50UHJlZml4KGV2ZW50UHJlZml4OiBOZ3RDYW52YXNJbnB1dHNbJ2V2ZW50UHJlZml4J10pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBldmVudFByZWZpeCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbG9va0F0KGxvb2tBdDogTmd0Q2FudmFzSW5wdXRzWydsb29rQXQnXSkge1xuICAgICAgICB0aGlzLnNldCh7IGxvb2tBdCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcGVyZm9ybWFuY2UocGVyZm9ybWFuY2U6IE5ndENhbnZhc0lucHV0c1sncGVyZm9ybWFuY2UnXSkge1xuICAgICAgICB0aGlzLnNldCh7IHBlcmZvcm1hbmNlIH0pO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBjcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOZ3RTdGF0ZT4oKTtcbiAgICBAT3V0cHV0KCkgcG9pbnRlck1pc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2dsQ2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgZ2xDYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdnbENhbnZhcycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGdsQW5jaG9yITogVmlld0NvbnRhaW5lclJlZjtcblxuICAgICNnbFJlZj86IENvbXBvbmVudFJlZjx1bmtub3duPjtcbiAgICAjZ2xFbnZJbmplY3Rvcj86IEVudmlyb25tZW50SW5qZWN0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgc2hhZG93czogZmFsc2UsXG4gICAgICAgICAgICBsaW5lYXI6IGZhbHNlLFxuICAgICAgICAgICAgZmxhdDogZmFsc2UsXG4gICAgICAgICAgICBsZWdhY3k6IGZhbHNlLFxuICAgICAgICAgICAgb3J0aG9ncmFwaGljOiBmYWxzZSxcbiAgICAgICAgICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycsXG4gICAgICAgICAgICBkcHI6IFsxLCAyXSxcbiAgICAgICAgICAgIGV2ZW50czogY3JlYXRlUG9pbnRlckV2ZW50cyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jZ2xSZWYpIHRoaXMuI2dsUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNnbEVudkluamVjdG9yKSB0aGlzLiNnbEVudkluamVjdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIGluamVjdE5ndExvYWRlci5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLiNzdG9yZS5kZXN0cm95KHRoaXMuZ2xDYW52YXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBoYlBvaW50ZXJFdmVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdCgnZXZlbnRTb3VyY2UnKSgpICE9PSB0aGlzLiNob3N0Lm5hdGl2ZUVsZW1lbnQgPyAnbm9uZScgOiAnYXV0byc7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snc2NlbmVHcmFwaElucHV0cyddICYmICFjaGFuZ2VzWydzY2VuZUdyYXBoSW5wdXRzJ10uZmlyc3RDaGFuZ2UgJiYgdGhpcy4jZ2xSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuI3NldFNjZW5lR3JhcGhJbnB1dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZ2V0KCdldmVudFNvdXJjZScpKSB7XG4gICAgICAgICAgICAvLyBzZXQgZGVmYXVsdCBldmVudCBzb3VyY2UgdG8gdGhlIGhvc3QgZWxlbWVudFxuICAgICAgICAgICAgdGhpcy5zZXQoeyBldmVudFNvdXJjZTogdGhpcy4jaG9zdC5uYXRpdmVFbGVtZW50IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucG9pbnRlck1pc3NlZC5vYnNlcnZlZCkge1xuICAgICAgICAgICAgdGhpcy4jc3RvcmUuc2V0KHtcbiAgICAgICAgICAgICAgICBvblBvaW50ZXJNaXNzZWQ6IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJNaXNzZWQuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKHRoaXMuI2Nkcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dXAgTmd0U3RvcmVcbiAgICAgICAgdGhpcy4jc3RvcmUuaW5pdCgpO1xuXG4gICAgICAgIC8vIHNldCByb290U3RhdGVNYXBcbiAgICAgICAgcm9vdFN0YXRlTWFwLnNldCh0aGlzLmdsQ2FudmFzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuI3N0b3JlKTtcblxuICAgICAgICAvLyBzdWJzY3JpYmUgdG8gc3RvcmUgdG8gbGlzdGVuIGZvciByZWFkeSBzdGF0ZVxuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy4jem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNpc1JlYWR5KCkpIHRoaXMuI3N0b3JlUmVhZHkoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGluamVjdG9yOiB0aGlzLiNpbmplY3RvciwgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgICNyZXNpemVSZWY/OiBSZXR1cm5UeXBlPHR5cGVvZiBlZmZlY3Q+O1xuICAgIC8vIE5PVEU6IHRoaXMgaXMgaW52b2tlZCBvdXRzaWRlIG9mIEFuZ3VsYXIgWm9uZVxuICAgIG9uUmVzaXplKHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH06IE5neFJlc2l6ZVJlc3VsdCkge1xuICAgICAgICAvLyBkZXN0cm95IHByZXZpb3VzIGVmZmVjdFxuICAgICAgICBpZiAodGhpcy4jcmVzaXplUmVmKSB7XG4gICAgICAgICAgICB0aGlzLiNyZXNpemVSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuI3N0b3JlLmlzSW5pdCkgdGhpcy4jc3RvcmUuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy4jcmVzaXplUmVmID0gdGhpcy4jem9uZS5ydW4oKCkgPT5cbiAgICAgICAgICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhc0lucHV0cyA9IHRoaXMuc3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI3N0b3JlLmNvbmZpZ3VyZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAuLi5jYW52YXNJbnB1dHMsIHNpemU6IHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nbENhbnZhcy5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7IGluamVjdG9yOiB0aGlzLiNpbmplY3RvciwgbWFudWFsQ2xlYW51cDogdHJ1ZSwgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOT1RFOiBUaGlzIGlzIGludm9rZWQgb3V0c2lkZSBvZiBBbmd1bGFyIFpvbmVcbiAgICAjc3RvcmVSZWFkeSgpIHtcbiAgICAgICAgLy8gY2FudmFzIGlzIHJlYWR5LCBsZXQncyBhY3RpdmF0ZSB0aGUgbG9vcFxuICAgICAgICB0aGlzLiNzdG9yZS5zZXQoKHN0YXRlKSA9PiAoeyBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgYWN0aXZlOiB0cnVlIH0gfSkpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IHRoaXMuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy4jc3RvcmUuZ2V0KCk7XG5cbiAgICAgICAgLy8gY29ubmVjdCB0byBldmVudCBzb3VyY2VcbiAgICAgICAgc3RhdGUuZXZlbnRzLmNvbm5lY3Q/Lihpcy5yZWYoaW5wdXRzLmV2ZW50U291cmNlKSA/IGlucHV0cy5ldmVudFNvdXJjZS5uYXRpdmVFbGVtZW50IDogaW5wdXRzLmV2ZW50U291cmNlKTtcblxuICAgICAgICAvLyBzZXR1cCBjb21wdXRlIGZ1bmN0aW9uIGZvciBldmVudHNcbiAgICAgICAgaWYgKGlucHV0cy5ldmVudFByZWZpeCkge1xuICAgICAgICAgICAgc3RhdGUuc2V0RXZlbnRzKHtcbiAgICAgICAgICAgICAgICBjb21wdXRlOiAoZXZlbnQsIHN0b3JlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyU3RhdGUgPSBzdG9yZS5nZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeCA9IGV2ZW50WyhpbnB1dHMuZXZlbnRQcmVmaXggKyAnWCcpIGFzIGtleW9mIE5ndERvbUV2ZW50XSBhcyBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBldmVudFsoaW5wdXRzLmV2ZW50UHJlZml4ICsgJ1knKSBhcyBrZXlvZiBOZ3REb21FdmVudF0gYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBpbm5lclN0YXRlLnBvaW50ZXIuc2V0KCh4IC8gaW5uZXJTdGF0ZS5zaXplLndpZHRoKSAqIDIgLSAxLCAtKHkgLyBpbm5lclN0YXRlLnNpemUuaGVpZ2h0KSAqIDIgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJTdGF0ZS5yYXljYXN0ZXIuc2V0RnJvbUNhbWVyYShpbm5lclN0YXRlLnBvaW50ZXIsIGlubmVyU3RhdGUuY2FtZXJhKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbWl0IGNyZWF0ZWQgZXZlbnQgaWYgb2JzZXJ2ZWRcbiAgICAgICAgaWYgKHRoaXMuY3JlYXRlZC5vYnNlcnZlZCkge1xuICAgICAgICAgICAgLy8gYnV0IGdvIGJhY2sgaW50byB6b25lIHRvIHJ1biBpdFxuICAgICAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlZC5lbWl0KHRoaXMuI3N0b3JlLmdldCgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVuZGVyXG4gICAgICAgIGlmICh0aGlzLiNnbFJlZikgdGhpcy4jZ2xSZWYuZGVzdHJveSgpO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNnbEVudkluamVjdG9yID0gY3JlYXRlRW52aXJvbm1lbnRJbmplY3RvcihcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVOZ3RSZW5kZXJlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogdGhpcy4jc3RvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZjogdGhpcy4jY2RyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG91bmRQcmVmaXhlczogdGhpcy5jb21wb3VuZFByZWZpeGVzLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRoaXMuI2VudkluamVjdG9yXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLiNnbFJlZiA9IHRoaXMuZ2xBbmNob3IuY3JlYXRlQ29tcG9uZW50KHRoaXMuc2NlbmVHcmFwaCwge1xuICAgICAgICAgICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2dsRW52SW5qZWN0b3IsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuI3NldFNjZW5lR3JhcGhJbnB1dHMoKTtcbiAgICAgICAgICAgIHRoaXMuI292ZXJyaWRlQ2hhbmdlRGV0ZWN0b3JSZWYoKTtcbiAgICAgICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKHRoaXMuI2Nkcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICNvdmVycmlkZUNoYW5nZURldGVjdG9yUmVmKCkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbERldGVjdENoYW5nZXMgPSB0aGlzLiNjZHIuZGV0ZWN0Q2hhbmdlcy5iaW5kKHRoaXMuI2Nkcik7XG4gICAgICAgIHRoaXMuI2Nkci5kZXRlY3RDaGFuZ2VzID0gKCkgPT4ge1xuICAgICAgICAgICAgb3JpZ2luYWxEZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLiNnbFJlZj8uY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgICNzZXRTY2VuZUdyYXBoSW5wdXRzKCkge1xuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy4jZ2xSZWYpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnNjZW5lR3JhcGhJbnB1dHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2dsUmVmLnNldElucHV0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzYWZlRGV0ZWN0Q2hhbmdlcyh0aGlzLiNnbFJlZi5jaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { ChangeDetectorRef, DestroyRef, ElementRef, computed, inject, runInInjectionContext, untracked, } from '@angular/core';
1
+ import { ApplicationRef, ChangeDetectorRef, DestroyRef, ElementRef, computed, inject, runInInjectionContext, untracked, } from '@angular/core';
2
2
  import { assertInjectionContext } from '../utils/assert-in-injection-context';
3
3
  import { getLocalState } from '../utils/instance';
4
4
  import { is } from '../utils/is';
@@ -8,6 +8,7 @@ export function injectNgtRef(initial = null, injector) {
8
8
  injector = assertInjectionContext(injectNgtRef, injector);
9
9
  return runInInjectionContext(injector, () => {
10
10
  const cdr = inject(ChangeDetectorRef);
11
+ const appRef = inject(ApplicationRef);
11
12
  const ref = is.ref(initial) ? initial : new ElementRef(initial);
12
13
  const signalRef = createSignal(ref.nativeElement);
13
14
  const readonlySignal = signalRef.asReadonly();
@@ -35,15 +36,14 @@ export function injectNgtRef(initial = null, injector) {
35
36
  set: (newElement) => {
36
37
  if (newElement !== untracked(signalRef)) {
37
38
  signalRef.set(newElement);
38
- safeDetectChanges(cdr);
39
+ // trigger CDR
40
+ requestAnimationFrame(() => void safeDetectChanges(cdr));
39
41
  }
40
42
  },
41
43
  get: () => readonlySignal(),
42
44
  });
43
- Object.defineProperty(ref, 'untracked', {
44
- get: () => untracked(readonlySignal),
45
- });
45
+ Object.defineProperty(ref, 'untracked', { get: () => untracked(readonlySignal) });
46
46
  return Object.assign(ref, { children });
47
47
  });
48
48
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGkvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFVBQVUsRUFHVixRQUFRLEVBQ1IsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTy9DLE1BQU0sVUFBVSxZQUFZLENBQ3hCLFVBQTJDLElBQUssRUFDaEQsUUFBbUI7SUFFbkIsUUFBUSxHQUFHLHNCQUFzQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRCxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBVyxPQUFtQixDQUFDLENBQUM7UUFDdEYsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUV6QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFeEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUEwQyxTQUFTLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkIsTUFBTSxDQUFDLEdBQUcsQ0FDTixJQUFJLEVBQ0osUUFBUSxDQUFDLEdBQUcsRUFBRTtvQkFDVixNQUFNLFFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFFBQVE7d0JBQUUsT0FBTyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTt3QkFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxJQUFJLEtBQUssU0FBUzt3QkFBRSxPQUFPLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxJQUFJLEtBQUssWUFBWTt3QkFBRSxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDMUQsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUNMLENBQUM7YUFDTDtZQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUU7WUFDeEMsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksVUFBVSxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDckMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUIsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzFCO1lBQ0wsQ0FBQztZQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUU7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFO1lBQ3BDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBNkIsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3RvcixcbiAgICBTaWduYWwsXG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJy4uL3V0aWxzL2Fzc2VydC1pbi1pbmplY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlIH0gZnJvbSAnLi4vdXRpbHMvaW5zdGFuY2UnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4uL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnLi4vdXRpbHMvc2lnbmFsJztcblxuZXhwb3J0IHR5cGUgTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+ID0gRWxlbWVudFJlZjxURWxlbWVudD4gJiB7XG4gICAgY2hpbGRyZW46ICh0eXBlPzogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnIHwgJ2JvdGgnKSA9PiBTaWduYWw8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIHVudHJhY2tlZDogVEVsZW1lbnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0UmVmPFRFbGVtZW50PihcbiAgICBpbml0aWFsOiBFbGVtZW50UmVmPFRFbGVtZW50PiB8IFRFbGVtZW50ID0gbnVsbCEsXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvclxuKTogTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+IHtcbiAgICBpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0UmVmLCBpbmplY3Rvcik7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4ge1xuICAgICAgICBjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCByZWYgPSBpcy5yZWYoaW5pdGlhbCkgPyBpbml0aWFsIDogbmV3IEVsZW1lbnRSZWY8VEVsZW1lbnQ+KGluaXRpYWwgYXMgVEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBzaWduYWxSZWYgPSBjcmVhdGVTaWduYWwocmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZWFkb25seVNpZ25hbCA9IHNpZ25hbFJlZi5hc1JlYWRvbmx5KCk7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHZvaWQgY2FjaGVkLmNsZWFyKCkpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gKHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJyB8ICdib3RoJyA9ICdvYmplY3RzJykgPT4ge1xuICAgICAgICAgICAgaWYgKCFjYWNoZWQuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSByZWFkb25seVNpZ25hbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZSkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbFN0YXRlLm9iamVjdHMgfHwgIWxvY2FsU3RhdGUubm9uT2JqZWN0cykgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3RzJykgcmV0dXJuIGxvY2FsU3RhdGUub2JqZWN0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdub25PYmplY3RzJykgcmV0dXJuIGxvY2FsU3RhdGUubm9uT2JqZWN0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5sb2NhbFN0YXRlLm9iamVjdHMoKSwgLi4ubG9jYWxTdGF0ZS5ub25PYmplY3RzKCldO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkLmdldCh0eXBlKSE7XG4gICAgICAgIH07XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwgJ25hdGl2ZUVsZW1lbnQnLCB7XG4gICAgICAgICAgICBzZXQ6IChuZXdFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnQgIT09IHVudHJhY2tlZChzaWduYWxSZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpZ25hbFJlZi5zZXQobmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHNhZmVEZXRlY3RDaGFuZ2VzKGNkcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldDogKCkgPT4gcmVhZG9ubHlTaWduYWwoKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwgJ3VudHJhY2tlZCcsIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gdW50cmFja2VkKHJlYWRvbmx5U2lnbmFsKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocmVmLCB7IGNoaWxkcmVuIH0pIGFzIE5ndEluamVjdGVkUmVmPFRFbGVtZW50PjtcbiAgICB9KTtcbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGkvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixVQUFVLEVBR1YsUUFBUSxFQUNSLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVMvQyxNQUFNLFVBQVUsWUFBWSxDQUN4QixVQUEyQyxJQUFLLEVBQ2hELFFBQW1CO0lBRW5CLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsT0FBTyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFXLE9BQW1CLENBQUMsQ0FBQztRQUN0RixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXpCLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUV4RCxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQTBDLFNBQVMsRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQixNQUFNLENBQUMsR0FBRyxDQUNOLElBQUksRUFDSixRQUFRLENBQUMsR0FBRyxFQUFFO29CQUNWLE1BQU0sUUFBUSxHQUFHLGNBQWMsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsUUFBUTt3QkFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVO3dCQUFFLE9BQU8sRUFBRSxDQUFDO29CQUM3RCxJQUFJLElBQUksS0FBSyxTQUFTO3dCQUFFLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNwRCxJQUFJLElBQUksS0FBSyxZQUFZO3dCQUFFLE9BQU8sVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUMxRCxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQ0wsQ0FBQzthQUNMO1lBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRTtZQUN4QyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxVQUFVLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNyQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQixjQUFjO29CQUNkLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDNUQ7WUFDTCxDQUFDO1lBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRTtTQUM5QixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQTZCLENBQUM7SUFDeEUsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgU2lnbmFsLFxuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gICAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGFzc2VydEluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuLi91dGlscy9hc3NlcnQtaW4taW5qZWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJy4uL3V0aWxzL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcbmltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJy4uL3V0aWxzL3NpZ25hbCc7XG5cbmV4cG9ydCB0eXBlIE5ndEluamVjdGVkUmVmPFRFbGVtZW50PiA9IEVsZW1lbnRSZWY8VEVsZW1lbnQ+ICYge1xuICAgIC8qIGNvbnN1bWVycyBzaG91bGQgdXNlIHRoaXMgZm9yIGxpc3RlbnRpbmcgdG8gY2hpbGRyZW4gY2hhbmdlcyBvbiB0aGlzIHJlZiAqL1xuICAgIGNoaWxkcmVuOiAodHlwZT86ICdvYmplY3RzJyB8ICdub25PYmplY3RzJyB8ICdib3RoJykgPT4gU2lnbmFsPE5ndEluc3RhbmNlTm9kZVtdPjtcbiAgICAvKiBjb25zdW1lcnMgc2hvdWxkIHVzZSB0aGlzIHRvIHJlYWQgdGhlIHJlZiBjdXJyZW50IHZhbHVlIHdpdGhvdXQgcmVnaXN0ZXJpbmcgdGhlIHNpZ25hbCAqL1xuICAgIHVudHJhY2tlZDogVEVsZW1lbnQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0UmVmPFRFbGVtZW50PihcbiAgICBpbml0aWFsOiBFbGVtZW50UmVmPFRFbGVtZW50PiB8IFRFbGVtZW50ID0gbnVsbCEsXG4gICAgaW5qZWN0b3I/OiBJbmplY3RvclxuKTogTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+IHtcbiAgICBpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0UmVmLCBpbmplY3Rvcik7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4ge1xuICAgICAgICBjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCBhcHBSZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuICAgICAgICBjb25zdCByZWYgPSBpcy5yZWYoaW5pdGlhbCkgPyBpbml0aWFsIDogbmV3IEVsZW1lbnRSZWY8VEVsZW1lbnQ+KGluaXRpYWwgYXMgVEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBzaWduYWxSZWYgPSBjcmVhdGVTaWduYWwocmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZWFkb25seVNpZ25hbCA9IHNpZ25hbFJlZi5hc1JlYWRvbmx5KCk7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IG5ldyBNYXAoKTtcblxuICAgICAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHZvaWQgY2FjaGVkLmNsZWFyKCkpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gKHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJyB8ICdib3RoJyA9ICdvYmplY3RzJykgPT4ge1xuICAgICAgICAgICAgaWYgKCFjYWNoZWQuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSByZWFkb25seVNpZ25hbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZSkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsb2NhbFN0YXRlLm9iamVjdHMgfHwgIWxvY2FsU3RhdGUubm9uT2JqZWN0cykgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3RzJykgcmV0dXJuIGxvY2FsU3RhdGUub2JqZWN0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdub25PYmplY3RzJykgcmV0dXJuIGxvY2FsU3RhdGUubm9uT2JqZWN0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5sb2NhbFN0YXRlLm9iamVjdHMoKSwgLi4ubG9jYWxTdGF0ZS5ub25PYmplY3RzKCldO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkLmdldCh0eXBlKSE7XG4gICAgICAgIH07XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZiwgJ25hdGl2ZUVsZW1lbnQnLCB7XG4gICAgICAgICAgICBzZXQ6IChuZXdFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnQgIT09IHVudHJhY2tlZChzaWduYWxSZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpZ25hbFJlZi5zZXQobmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgQ0RSXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB2b2lkIHNhZmVEZXRlY3RDaGFuZ2VzKGNkcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHJlYWRvbmx5U2lnbmFsKCksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWYsICd1bnRyYWNrZWQnLCB7IGdldDogKCkgPT4gdW50cmFja2VkKHJlYWRvbmx5U2lnbmFsKSB9KTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZWYsIHsgY2hpbGRyZW4gfSkgYXMgTmd0SW5qZWN0ZWRSZWY8VEVsZW1lbnQ+O1xuICAgIH0pO1xufVxuIl19
@@ -20,11 +20,11 @@ class NgtArgs extends NgtCommonDirective {
20
20
  validate() {
21
21
  return !this.injected && !!this.#injectedArgs.length;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtArgs, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtArgs, isStandalone: true, selector: "[args]", inputs: { args: "args" }, usesInheritance: true, ngImport: i0 }); }
25
25
  }
26
26
  export { NgtArgs };
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtArgs, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtArgs, decorators: [{
28
28
  type: Directive,
29
29
  args: [{ selector: '[args]', standalone: true }]
30
30
  }], propDecorators: { args: [{
@@ -1,5 +1,6 @@
1
1
  import { Directive, inject, NgZone, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import { SPECIAL_INTERNAL_ADD_COMMENT } from '../renderer/utils';
3
+ import { safeDetectChanges } from '../utils/safe-detect-changes';
3
4
  import * as i0 from "@angular/core";
4
5
  class NgtCommonDirective {
5
6
  #vcr;
@@ -25,15 +26,15 @@ class NgtCommonDirective {
25
26
  }
26
27
  this.#zone.runOutsideAngular(() => {
27
28
  this.#view = this.#vcr.createEmbeddedView(this.#template);
28
- this.#view.detectChanges();
29
+ safeDetectChanges(this.#view);
29
30
  });
30
31
  }
31
32
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
33
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtCommonDirective, ngImport: i0 }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtCommonDirective, ngImport: i0 }); }
34
35
  }
35
36
  export { NgtCommonDirective };
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtCommonDirective, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtCommonDirective, decorators: [{
37
38
  type: Directive
38
39
  }], ctorParameters: function () { return []; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRWpFLE1BQ3NCLGtCQUFrQjtJQUMzQixJQUFJLENBQTRCO0lBQ2hDLEtBQUssQ0FBa0I7SUFDdkIsU0FBUyxDQUF1QjtJQUl6QyxLQUFLLENBQTRCO0lBRWpDO1FBUlMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUk5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDcEQsSUFBSSxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRTtZQUMzQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sV0FBVyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBSVMsVUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN4QjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDOzhHQTdCaUIsa0JBQWtCO2tHQUFsQixrQkFBa0I7O1NBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUR2QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbWJlZGRlZFZpZXdSZWYsIGluamVjdCwgTmdab25lLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVCB9IGZyb20gJy4uL3JlbmRlcmVyL3V0aWxzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0Q29tbW9uRGlyZWN0aXZlIHtcbiAgICByZWFkb25seSAjdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcmVhZG9ubHkgI3RlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblxuICAgIHByb3RlY3RlZCBpbmplY3RlZCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzaG91bGRDcmVhdGVWaWV3ID0gdHJ1ZTtcbiAgICAjdmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IHRoaXMuI3Zjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuICAgICAgICAgICAgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0oKTtcbiAgICAgICAgICAgIGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFic3RyYWN0IHZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVmlldygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQ3JlYXRlVmlldykge1xuICAgICAgICAgICAgaWYgKHRoaXMuI3ZpZXcgJiYgIXRoaXMuI3ZpZXcuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jdmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiN2aWV3ID0gdGhpcy4jdmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLiN0ZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy4jdmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGlyZWN0aXZlcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRWpFLE1BQ3NCLGtCQUFrQjtJQUMzQixJQUFJLENBQTRCO0lBQ2hDLEtBQUssQ0FBa0I7SUFDdkIsU0FBUyxDQUF1QjtJQUl6QyxLQUFLLENBQTRCO0lBRWpDO1FBUlMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLFVBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUk5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDcEQsSUFBSSxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRTtZQUMzQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sV0FBVyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBSVMsVUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN4QjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMxRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7OEdBN0JpQixrQkFBa0I7a0dBQWxCLGtCQUFrQjs7U0FBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRHZDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgaW5qZWN0LCBOZ1pvbmUsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UIH0gZnJvbSAnLi4vcmVuZGVyZXIvdXRpbHMnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmd0Q29tbW9uRGlyZWN0aXZlIHtcbiAgICByZWFkb25seSAjdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcmVhZG9ubHkgI3RlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmKTtcblxuICAgIHByb3RlY3RlZCBpbmplY3RlZCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBzaG91bGRDcmVhdGVWaWV3ID0gdHJ1ZTtcbiAgICAjdmlldz86IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBjb21tZW50Tm9kZSA9IHRoaXMuI3Zjci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXSkge1xuICAgICAgICAgICAgY29tbWVudE5vZGVbU1BFQ0lBTF9JTlRFUk5BTF9BRERfQ09NTUVOVF0oKTtcbiAgICAgICAgICAgIGRlbGV0ZSBjb21tZW50Tm9kZVtTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFic3RyYWN0IHZhbGlkYXRlKCk6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVmlldygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQ3JlYXRlVmlldykge1xuICAgICAgICAgICAgaWYgKHRoaXMuI3ZpZXcgJiYgIXRoaXMuI3ZpZXcuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jdmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiN6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiN2aWV3ID0gdGhpcy4jdmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLiN0ZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXModGhpcy4jdmlldyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -20,11 +20,11 @@ class NgtParent extends NgtCommonDirective {
20
20
  validate() {
21
21
  return !this.injected && !!this.#injectedParent;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtParent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtParent, isStandalone: true, selector: "[parent]", inputs: { parent: "parent" }, usesInheritance: true, ngImport: i0 }); }
25
25
  }
26
26
  export { NgtParent };
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtParent, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtParent, decorators: [{
28
28
  type: Directive,
29
29
  args: [{ selector: '[parent]', standalone: true }]
30
30
  }], propDecorators: { parent: [{
@@ -5,11 +5,11 @@ class NgtRepeat extends NgForOf {
5
5
  set ngForRepeat(count) {
6
6
  this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
9
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtRepeat, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
9
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: NgtRepeat, isStandalone: true, selector: "[ngFor][ngForRepeat]", inputs: { ngForRepeat: "ngForRepeat" }, usesInheritance: true, ngImport: i0 }); }
10
10
  }
11
11
  export { NgtRepeat };
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtRepeat, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: NgtRepeat, decorators: [{
13
13
  type: Directive,
14
14
  args: [{ selector: '[ngFor][ngForRepeat]', standalone: true }]
15
15
  }], propDecorators: { ngForRepeat: [{
@@ -1,65 +1,61 @@
1
- import { ChangeDetectorRef, computed, effect, inject, runInInjectionContext, signal, untracked, } from '@angular/core';
1
+ import { ChangeDetectorRef, effect, inject, runInInjectionContext, signal } from '@angular/core';
2
2
  import { assertInjectionContext } from './utils/assert-in-injection-context';
3
3
  import { makeObjectGraph } from './utils/make';
4
4
  import { safeDetectChanges } from './utils/safe-detect-changes';
5
5
  import { requestAnimationInInjectionContext } from './utils/timing';
6
6
  const cached = new Map();
7
+ function normalizeInputs(input) {
8
+ if (Array.isArray(input))
9
+ return input;
10
+ if (typeof input === 'string')
11
+ return [input];
12
+ return Object.values(input);
13
+ }
7
14
  function load(loaderConstructorFactory, inputs, { extensions, onProgress, } = {}) {
8
- const computedUrls = computed(() => {
9
- const input = inputs();
10
- if (Array.isArray(input))
11
- return input;
12
- if (typeof input === 'string')
13
- return [input];
14
- return Object.values(input);
15
- });
16
15
  return () => {
17
- const urls = computedUrls();
18
- const loaderConstructor = loaderConstructorFactory(urls);
19
- const loader = new loaderConstructor();
16
+ const urls = normalizeInputs(inputs());
17
+ const loader = new (loaderConstructorFactory(urls))();
20
18
  if (extensions)
21
19
  extensions(loader);
22
- return urls.map((url) => new Promise((resolve, reject) => {
23
- if (cached.has(url)) {
24
- resolve(cached.get(url));
20
+ // TODO: reevaluate this
21
+ return urls.map((url) => {
22
+ if (!cached.has(url)) {
23
+ cached.set(url, new Promise((resolve, reject) => {
24
+ loader.load(url, (data) => {
25
+ if ('scene' in data)
26
+ Object.assign(data, makeObjectGraph(data['scene']));
27
+ resolve(data);
28
+ }, onProgress, (error) => reject(new Error(`[NGT] Could not load ${url}: ${error}`)));
29
+ }));
25
30
  }
26
- else {
27
- loader.load(url, (data) => {
28
- if ('scene' in data)
29
- Object.assign(data, makeObjectGraph(data['scene']));
30
- cached.set(url, data);
31
- resolve(data);
32
- }, onProgress, (error) => reject(new Error(`[NGT] Could not load ${url}: ${error}`)));
33
- }
34
- }));
31
+ return cached.get(url);
32
+ });
35
33
  };
36
34
  }
37
35
  export function injectNgtLoader(loaderConstructorFactory, inputs, { extensions, onProgress, injector, } = {}) {
38
36
  injector = assertInjectionContext(injectNgtLoader, injector);
37
+ const response = signal(null);
39
38
  return runInInjectionContext(injector, () => {
40
39
  const cdr = inject(ChangeDetectorRef);
41
- const response = signal(null);
42
40
  const effector = load(loaderConstructorFactory, inputs, { extensions, onProgress });
43
41
  requestAnimationInInjectionContext(() => {
44
42
  effect(() => {
45
- const originalUrls = untracked(inputs);
46
- Promise.all(effector())
47
- .then((results) => {
48
- if (Array.isArray(originalUrls))
49
- return results;
50
- if (typeof originalUrls === 'string')
51
- return results[0];
52
- const keys = Object.keys(originalUrls);
53
- return keys.reduce((result, key) => {
54
- result[key] = results[keys.indexOf(key)];
55
- return result;
56
- }, {});
57
- })
58
- .then((value) => {
59
- response.set(value);
43
+ const originalUrls = inputs();
44
+ Promise.all(effector()).then((results) => {
45
+ response.update(() => {
46
+ if (Array.isArray(originalUrls))
47
+ return results;
48
+ if (typeof originalUrls === 'string')
49
+ return results[0];
50
+ const keys = Object.keys(originalUrls);
51
+ return keys.reduce((result, key) => {
52
+ result[key] = results[keys.indexOf(key)];
53
+ return result;
54
+ }, {});
55
+ });
60
56
  safeDetectChanges(cdr);
61
57
  });
62
- });
58
+ }, { allowSignalWrites: true });
63
59
  });
64
60
  return response.asReadonly();
65
61
  });
@@ -70,4 +66,4 @@ injectNgtLoader['preload'] = (loaderConstructorFactory, inputs, extensions) => {
70
66
  injectNgtLoader['destroy'] = () => {
71
67
  cached.clear();
72
68
  };
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixTQUFTLEdBRVosTUFBTSxlQUFlLENBQUM7QUFVdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU9wRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRXpCLFNBQVMsSUFBSSxDQUtULHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixFQUNJLFVBQVUsRUFDVixVQUFVLE1BSVYsRUFBRTtJQUVOLE1BQU0sWUFBWSxHQUFxQixRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2pELE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN2QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLEVBQUU7UUFDUixNQUFNLElBQUksR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUM1QixNQUFNLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLFVBQVU7WUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUNYLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDSixJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM1QixJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0gsTUFBTSxDQUFDLElBQUksQ0FDUCxHQUFHLEVBQ0gsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDTCxJQUFJLE9BQU8sSUFBSyxJQUFxQjt3QkFDakMsTUFBTSxDQUFDLE1BQU0sQ0FDVCxJQUFvQixFQUNwQixlQUFlLENBQUUsSUFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNuRCxDQUFDO29CQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLENBQUMsRUFDRCxVQUFVLEVBQ1YsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDeEUsQ0FBQzthQUNMO1FBQ0wsQ0FBQyxDQUFDLENBQ1QsQ0FBQztJQUNOLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQU0zQix3QkFBa0UsRUFDbEUsTUFBa0IsRUFDbEIsRUFDSSxVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsTUFLUixFQUFFO0lBRU4sUUFBUSxHQUFHLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFpRixJQUFLLENBQUMsQ0FBQztRQUMvRyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFcEYsa0NBQWtDLENBQUMsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ1IsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNsQixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDZCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO3dCQUFFLE9BQU8sT0FBTyxDQUFDO29CQUNoRCxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVE7d0JBQUUsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTt3QkFDOUIsTUFBdUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUMzRCxPQUFPLE1BQU0sQ0FBQztvQkFDbEIsQ0FBQyxFQUFFLEVBQXFGLENBQUMsQ0FBQztnQkFDOUYsQ0FBQyxDQUFDO3FCQUNELElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNaLFFBQVEsQ0FBQyxHQUFHLENBQ1IsS0FBdUYsQ0FDMUYsQ0FBQztvQkFDRixpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBS3pCLHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixVQUFvRCxFQUN0RCxFQUFFO0lBQ0EsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUYsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsRUFBRTtJQUM5QixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBJbmplY3RvcixcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIHR5cGUgU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgR0xURiB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0dMVEZMb2FkZXInO1xuaW1wb3J0IHR5cGUge1xuICAgIE5ndEFueVJlY29yZCxcbiAgICBOZ3RCcmFuY2hpbmdSZXR1cm4sXG4gICAgTmd0TG9hZGVyRXh0ZW5zaW9ucyxcbiAgICBOZ3RMb2FkZXJQcm90byxcbiAgICBOZ3RMb2FkZXJSZXR1cm5UeXBlLFxuICAgIE5ndE9iamVjdE1hcCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnLi91dGlscy9hc3NlcnQtaW4taW5qZWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgbWFrZU9iamVjdEdyYXBoIH0gZnJvbSAnLi91dGlscy9tYWtlJztcbmltcG9ydCB7IHNhZmVEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnLi91dGlscy9zYWZlLWRldGVjdC1jaGFuZ2VzJztcbmltcG9ydCB7IHJlcXVlc3RBbmltYXRpb25JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICcuL3V0aWxzL3RpbWluZyc7XG5cbmV4cG9ydCB0eXBlIE5ndExvYWRlclJlc3VsdHM8XG4gICAgVElucHV0IGV4dGVuZHMgc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIFRSZXR1cm5cbj4gPSBUSW5wdXQgZXh0ZW5kcyBzdHJpbmdbXSA/IFRSZXR1cm5bXSA6IFRJbnB1dCBleHRlbmRzIG9iamVjdCA/IHsgW2tleSBpbiBrZXlvZiBUSW5wdXRdOiBUUmV0dXJuIH0gOiBUUmV0dXJuO1xuXG5jb25zdCBjYWNoZWQgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIGxvYWQ8XG4gICAgVERhdGEsXG4gICAgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUTG9hZGVyQ29uc3RydWN0b3IgZXh0ZW5kcyBOZ3RMb2FkZXJQcm90bzxURGF0YT5cbj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBzdHJpbmdbXSkgPT4gVExvYWRlckNvbnN0cnVjdG9yLFxuICAgIGlucHV0czogKCkgPT4gVFVybCxcbiAgICB7XG4gICAgICAgIGV4dGVuc2lvbnMsXG4gICAgICAgIG9uUHJvZ3Jlc3MsXG4gICAgfToge1xuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9uczxUTG9hZGVyQ29uc3RydWN0b3I+O1xuICAgICAgICBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkO1xuICAgIH0gPSB7fVxuKSB7XG4gICAgY29uc3QgY29tcHV0ZWRVcmxzOiBTaWduYWw8c3RyaW5nW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0cygpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHJldHVybiBbaW5wdXRdO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnB1dCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmxzID0gY29tcHV0ZWRVcmxzKCk7XG4gICAgICAgIGNvbnN0IGxvYWRlckNvbnN0cnVjdG9yID0gbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5KHVybHMpO1xuICAgICAgICBjb25zdCBsb2FkZXIgPSBuZXcgbG9hZGVyQ29uc3RydWN0b3IoKTtcbiAgICAgICAgaWYgKGV4dGVuc2lvbnMpIGV4dGVuc2lvbnMobG9hZGVyKTtcblxuICAgICAgICByZXR1cm4gdXJscy5tYXAoXG4gICAgICAgICAgICAodXJsKSA9PlxuICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZC5oYXModXJsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjYWNoZWQuZ2V0KHVybCkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnc2NlbmUnIGluIChkYXRhIGFzIE5ndEFueVJlY29yZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgYXMgTmd0QW55UmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VPYmplY3RHcmFwaCgoZGF0YSBhcyBOZ3RBbnlSZWNvcmQpWydzY2VuZSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkLnNldCh1cmwsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChuZXcgRXJyb3IoYFtOR1RdIENvdWxkIG5vdCBsb2FkICR7dXJsfTogJHtlcnJvcn1gKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RMb2FkZXI8XG4gICAgVERhdGEsXG4gICAgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUTG9hZGVyQ29uc3RydWN0b3IgZXh0ZW5kcyBOZ3RMb2FkZXJQcm90bzxURGF0YT4sXG4gICAgVFJldHVybiA9IE5ndExvYWRlclJldHVyblR5cGU8VERhdGEsIFRMb2FkZXJDb25zdHJ1Y3Rvcj5cbj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBzdHJpbmdbXSkgPT4gVExvYWRlckNvbnN0cnVjdG9yLFxuICAgIGlucHV0czogKCkgPT4gVFVybCxcbiAgICB7XG4gICAgICAgIGV4dGVuc2lvbnMsXG4gICAgICAgIG9uUHJvZ3Jlc3MsXG4gICAgICAgIGluamVjdG9yLFxuICAgIH06IHtcbiAgICAgICAgZXh0ZW5zaW9ucz86IE5ndExvYWRlckV4dGVuc2lvbnM8VExvYWRlckNvbnN0cnVjdG9yPjtcbiAgICAgICAgb25Qcm9ncmVzcz86IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZDtcbiAgICAgICAgaW5qZWN0b3I/OiBJbmplY3RvcjtcbiAgICB9ID0ge31cbik6IFNpZ25hbDxOZ3RMb2FkZXJSZXN1bHRzPFRVcmwsIE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj4+IHtcbiAgICBpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0TG9hZGVyLCBpbmplY3Rvcik7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4ge1xuICAgICAgICBjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHNpZ25hbDxOZ3RMb2FkZXJSZXN1bHRzPFRVcmwsIE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPj4+KG51bGwhKTtcbiAgICAgICAgY29uc3QgZWZmZWN0b3IgPSBsb2FkKGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeSwgaW5wdXRzLCB7IGV4dGVuc2lvbnMsIG9uUHJvZ3Jlc3MgfSk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVXJscyA9IHVudHJhY2tlZChpbnB1dHMpO1xuICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGVmZmVjdG9yKCkpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcmlnaW5hbFVybHMpKSByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxVcmxzID09PSAnc3RyaW5nJykgcmV0dXJuIHJlc3VsdHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3JpZ2luYWxVcmxzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlzLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0IGFzIE5ndEFueVJlY29yZClba2V5XSA9IHJlc3VsdHNba2V5cy5pbmRleE9mKGtleSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSBhcyB7IFtrZXkgaW4ga2V5b2YgVFVybF06IE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgYXMgTmd0TG9hZGVyUmVzdWx0czxUVXJsLCBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVybiwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD4+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXMoY2RyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmFzUmVhZG9ubHkoKTtcbiAgICB9KTtcbn1cblxuaW5qZWN0Tmd0TG9hZGVyWydwcmVsb2FkJ10gPSA8XG4gICAgVERhdGEsXG4gICAgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUTG9hZGVyQ29uc3RydWN0b3IgZXh0ZW5kcyBOZ3RMb2FkZXJQcm90bzxURGF0YT5cbj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBzdHJpbmdbXSkgPT4gVExvYWRlckNvbnN0cnVjdG9yLFxuICAgIGlucHV0czogKCkgPT4gVFVybCxcbiAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9uczxUTG9hZGVyQ29uc3RydWN0b3I+XG4pID0+IHtcbiAgICBQcm9taXNlLmFsbChsb2FkKGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeSwgaW5wdXRzLCB7IGV4dGVuc2lvbnMgfSkoKSk7XG59O1xuXG5pbmplY3ROZ3RMb2FkZXJbJ2Rlc3Ryb3knXSA9ICgpID0+IHtcbiAgICBjYWNoZWQuY2xlYXIoKTtcbn07XG4iXX0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQVV4SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3BFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFekIsU0FBUyxlQUFlLENBQUMsS0FBaUQ7SUFDdEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUtULHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixFQUNJLFVBQVUsRUFDVixVQUFVLE1BSVYsRUFBRTtJQUVOLE9BQU8sR0FBRyxFQUFFO1FBQ1IsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLFVBQVU7WUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENB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Q0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBS3pCLHdCQUFrRSxFQUNsRSxNQUFrQixFQUNsQixVQUFvRCxFQUN0RCxFQUFFO0lBQ0EsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUYsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsRUFBRTtJQUM5QixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdG9yLCBlZmZlY3QsIGluamVjdCwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBzaWduYWwsIHR5cGUgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEdMVEYgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vbG9hZGVycy9HTFRGTG9hZGVyJztcbmltcG9ydCB0eXBlIHtcbiAgICBOZ3RBbnlSZWNvcmQsXG4gICAgTmd0QnJhbmNoaW5nUmV0dXJuLFxuICAgIE5ndExvYWRlckV4dGVuc2lvbnMsXG4gICAgTmd0TG9hZGVyUHJvdG8sXG4gICAgTmd0TG9hZGVyUmV0dXJuVHlwZSxcbiAgICBOZ3RPYmplY3RNYXAsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJy4vdXRpbHMvYXNzZXJ0LWluLWluamVjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IG1ha2VPYmplY3RHcmFwaCB9IGZyb20gJy4vdXRpbHMvbWFrZSc7XG5pbXBvcnQgeyBzYWZlRGV0ZWN0Q2hhbmdlcyB9IGZyb20gJy4vdXRpbHMvc2FmZS1kZXRlY3QtY2hhbmdlcyc7XG5pbXBvcnQgeyByZXF1ZXN0QW5pbWF0aW9uSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnLi91dGlscy90aW1pbmcnO1xuXG5leHBvcnQgdHlwZSBOZ3RMb2FkZXJSZXN1bHRzPFxuICAgIFRJbnB1dCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUUmV0dXJuXG4+ID0gVElucHV0IGV4dGVuZHMgc3RyaW5nW10gPyBUUmV0dXJuW10gOiBUSW5wdXQgZXh0ZW5kcyBvYmplY3QgPyB7IFtrZXkgaW4ga2V5b2YgVElucHV0XTogVFJldHVybiB9IDogVFJldHVybjtcblxuY29uc3QgY2FjaGVkID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiBub3JtYWxpemVJbnB1dHMoaW5wdXQ6IHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSByZXR1cm4gW2lucHV0XTtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnB1dCk7XG59XG5cbmZ1bmN0aW9uIGxvYWQ8XG4gICAgVERhdGEsXG4gICAgVFVybCBleHRlbmRzIHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBUTG9hZGVyQ29uc3RydWN0b3IgZXh0ZW5kcyBOZ3RMb2FkZXJQcm90bzxURGF0YT5cbj4oXG4gICAgbG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5OiAoaW5wdXRzOiBzdHJpbmdbXSkgPT4gVExvYWRlckNvbnN0cnVjdG9yLFxuICAgIGlucHV0czogKCkgPT4gVFVybCxcbiAgICB7XG4gICAgICAgIGV4dGVuc2lvbnMsXG4gICAgICAgIG9uUHJvZ3Jlc3MsXG4gICAgfToge1xuICAgICAgICBleHRlbnNpb25zPzogTmd0TG9hZGVyRXh0ZW5zaW9uczxUTG9hZGVyQ29uc3RydWN0b3I+O1xuICAgICAgICBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkO1xuICAgIH0gPSB7fVxuKSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJscyA9IG5vcm1hbGl6ZUlucHV0cyhpbnB1dHMoKSk7XG4gICAgICAgIGNvbnN0IGxvYWRlciA9IG5ldyAobG9hZGVyQ29uc3RydWN0b3JGYWN0b3J5KHVybHMpKSgpO1xuICAgICAgICBpZiAoZXh0ZW5zaW9ucykgZXh0ZW5zaW9ucyhsb2FkZXIpO1xuICAgICAgICAvLyBUT0RPOiByZWV2YWx1YXRlIHRoaXNcbiAgICAgICAgcmV0dXJuIHVybHMubWFwKCh1cmwpID0+IHtcbiAgICAgICAgICAgIGlmICghY2FjaGVkLmhhcyh1cmwpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVkLnNldChcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdzY2VuZScgaW4gKGRhdGEgYXMgTmd0QW55UmVjb3JkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBhcyBOZ3RBbnlSZWNvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZU9iamVjdEdyYXBoKChkYXRhIGFzIE5ndEFueVJlY29yZClbJ3NjZW5lJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHJlamVjdChuZXcgRXJyb3IoYFtOR1RdIENvdWxkIG5vdCBsb2FkICR7dXJsfTogJHtlcnJvcn1gKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjYWNoZWQuZ2V0KHVybCkhO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0TG9hZGVyPFxuICAgIFREYXRhLFxuICAgIFRVcmwgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgVExvYWRlckNvbnN0cnVjdG9yIGV4dGVuZHMgTmd0TG9hZGVyUHJvdG88VERhdGE+LFxuICAgIFRSZXR1cm4gPSBOZ3RMb2FkZXJSZXR1cm5UeXBlPFREYXRhLCBUTG9hZGVyQ29uc3RydWN0b3I+XG4+KFxuICAgIGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeTogKGlucHV0czogc3RyaW5nW10pID0+IFRMb2FkZXJDb25zdHJ1Y3RvcixcbiAgICBpbnB1dHM6ICgpID0+IFRVcmwsXG4gICAge1xuICAgICAgICBleHRlbnNpb25zLFxuICAgICAgICBvblByb2dyZXNzLFxuICAgICAgICBpbmplY3RvcixcbiAgICB9OiB7XG4gICAgICAgIGV4dGVuc2lvbnM/OiBOZ3RMb2FkZXJFeHRlbnNpb25zPFRMb2FkZXJDb25zdHJ1Y3Rvcj47XG4gICAgICAgIG9uUHJvZ3Jlc3M/OiAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHZvaWQ7XG4gICAgICAgIGluamVjdG9yPzogSW5qZWN0b3I7XG4gICAgfSA9IHt9XG4pOiBTaWduYWw8Tmd0TG9hZGVyUmVzdWx0czxUVXJsLCBOZ3RCcmFuY2hpbmdSZXR1cm48VFJldHVybiwgR0xURiwgR0xURiAmIE5ndE9iamVjdE1hcD4+PiB7XG4gICAgaW5qZWN0b3IgPSBhc3NlcnRJbmplY3Rpb25Db250ZXh0KGluamVjdE5ndExvYWRlciwgaW5qZWN0b3IpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gc2lnbmFsPE5ndExvYWRlclJlc3VsdHM8VFVybCwgTmd0QnJhbmNoaW5nUmV0dXJuPFRSZXR1cm4sIEdMVEYsIEdMVEYgJiBOZ3RPYmplY3RNYXA+Pj4obnVsbCEpO1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgY29uc3QgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgY29uc3QgZWZmZWN0b3IgPSBsb2FkKGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeSwgaW5wdXRzLCB7IGV4dGVuc2lvbnMsIG9uUHJvZ3Jlc3MgfSk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbFVybHMgPSBpbnB1dHMoKTtcbiAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5hbGwoZWZmZWN0b3IoKSkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXBkYXRlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvcmlnaW5hbFVybHMpKSByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9yaWdpbmFsVXJscyA9PT0gJ3N0cmluZycpIHJldHVybiByZXN1bHRzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvcmlnaW5hbFVybHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlzLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCBhcyBOZ3RBbnlSZWNvcmQpW2tleV0gPSByZXN1bHRzW2tleXMuaW5kZXhPZihrZXkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7fSBhcyB7IFtrZXkgaW4ga2V5b2YgVFVybF06IE5ndEJyYW5jaGluZ1JldHVybjxUUmV0dXJuLCBHTFRGLCBHTFRGICYgTmd0T2JqZWN0TWFwPiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2FmZURldGVjdENoYW5nZXMoY2RyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXNwb25zZS5hc1JlYWRvbmx5KCk7XG4gICAgfSk7XG59XG5cbmluamVjdE5ndExvYWRlclsncHJlbG9hZCddID0gPFxuICAgIFREYXRhLFxuICAgIFRVcmwgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgVExvYWRlckNvbnN0cnVjdG9yIGV4dGVuZHMgTmd0TG9hZGVyUHJvdG88VERhdGE+XG4+KFxuICAgIGxvYWRlckNvbnN0cnVjdG9yRmFjdG9yeTogKGlucHV0czogc3RyaW5nW10pID0+IFRMb2FkZXJDb25zdHJ1Y3RvcixcbiAgICBpbnB1dHM6ICgpID0+IFRVcmwsXG4gICAgZXh0ZW5zaW9ucz86IE5ndExvYWRlckV4dGVuc2lvbnM8VExvYWRlckNvbnN0cnVjdG9yPlxuKSA9PiB7XG4gICAgUHJvbWlzZS5hbGwobG9hZChsb2FkZXJDb25zdHJ1Y3RvckZhY3RvcnksIGlucHV0cywgeyBleHRlbnNpb25zIH0pKCkpO1xufTtcblxuaW5qZWN0Tmd0TG9hZGVyWydkZXN0cm95J10gPSAoKSA9PiB7XG4gICAgY2FjaGVkLmNsZWFyKCk7XG59O1xuIl19