ngx-scandoc 1.3.9 → 15.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/core/components/camera-switch/camera-switch.component.d.ts +1 -1
  2. package/core/components/manual-scan/manual-scan.component.d.ts +1 -1
  3. package/core/components/scan/scan.component.d.ts +1 -1
  4. package/core/components/scan-results/scan-results.component.d.ts +1 -1
  5. package/core/components/webcam/webcam/webcam.component.d.ts +1 -1
  6. package/dialogs/components/blank/blank.component.d.ts +1 -1
  7. package/dialogs/components/confirm/confirm.component.d.ts +1 -1
  8. package/dialogs/components/loading/loading.component.d.ts +1 -1
  9. package/dialogs/components/prompt-manual/prompt-manual.component.d.ts +1 -1
  10. package/dialogs/components/scan-profile/scan-profile.component.d.ts +1 -1
  11. package/dialogs/components/scan-selfie/scan-selfie.component.d.ts +1 -1
  12. package/dialogs/components/turn-document/turn-document.component.d.ts +1 -1
  13. package/esm2020/core/components/camera-switch/camera-switch.component.mjs +3 -3
  14. package/esm2020/core/components/components.module.mjs +4 -4
  15. package/esm2020/core/components/manual-scan/manual-scan.component.mjs +24 -24
  16. package/esm2020/core/components/scan/scan.component.mjs +12 -12
  17. package/esm2020/core/components/scan-results/scan-results.component.mjs +5 -5
  18. package/esm2020/core/components/webcam/webcam/webcam.component.mjs +14 -14
  19. package/esm2020/core/components/webcam/webcam.module.mjs +4 -4
  20. package/esm2020/core/pipes/pipes.module.mjs +4 -4
  21. package/esm2020/core/pipes/safeResourceUrl.pipe.mjs +3 -3
  22. package/esm2020/core/shared/material.module.mjs +4 -4
  23. package/esm2020/dialogs/components/blank/blank.component.mjs +3 -3
  24. package/esm2020/dialogs/components/confirm/confirm.component.mjs +10 -10
  25. package/esm2020/dialogs/components/loading/loading.component.mjs +3 -3
  26. package/esm2020/dialogs/components/prompt-manual/prompt-manual.component.mjs +3 -3
  27. package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +14 -14
  28. package/esm2020/dialogs/components/scan-selfie/scan-selfie.component.mjs +3 -3
  29. package/esm2020/dialogs/components/turn-document/turn-document.component.mjs +3 -3
  30. package/esm2020/dialogs/dialogs.core.provider.mjs +3 -3
  31. package/esm2020/dialogs/dialogs.module.mjs +4 -4
  32. package/esm2020/forms/form.module.mjs +4 -4
  33. package/esm2020/forms/types/avatar.type.mjs +7 -7
  34. package/esm2020/forms/types/profile.image.type.mjs +4 -4
  35. package/esm2020/forms/types/title.type.mjs +3 -3
  36. package/esm2020/lib/ngx-scandoc.module.mjs +4 -4
  37. package/esm2020/providers/auth.provider.mjs +3 -3
  38. package/esm2020/providers/camera.provider.mjs +3 -3
  39. package/esm2020/providers/interceptor.provider.mjs +3 -3
  40. package/esm2020/providers/layout.provider.mjs +3 -3
  41. package/esm2020/providers/scan.form.mjs +3 -3
  42. package/esm2020/providers/scan.provider.mjs +3 -3
  43. package/esm2020/providers/translate-loader.provider.mjs +3 -3
  44. package/esm2020/providers/translation.provider.mjs +3 -3
  45. package/esm2020/providers/webrtc.provider.mjs +3 -3
  46. package/fesm2015/ngx-scandoc.mjs +166 -166
  47. package/fesm2015/ngx-scandoc.mjs.map +1 -1
  48. package/fesm2020/ngx-scandoc.mjs +165 -165
  49. package/fesm2020/ngx-scandoc.mjs.map +1 -1
  50. package/forms/types/avatar.type.d.ts +1 -1
  51. package/forms/types/profile.image.type.d.ts +1 -1
  52. package/forms/types/title.type.d.ts +1 -1
  53. package/package.json +6 -7
@@ -8,6 +8,16 @@ import * as i2 from "@angular/cdk/platform";
8
8
  import * as i3 from "../../../../providers/camera.provider";
9
9
  import * as i4 from "@angular/common";
10
10
  export class WebcamComponent extends BaseComponent {
11
+ onResize() {
12
+ this.cameraProvider.rectPosition.t = 0;
13
+ // this.videoReady.next(false);
14
+ if (this.resizeTimeout) {
15
+ clearTimeout(this.resizeTimeout);
16
+ }
17
+ this.resizeTimeout = setTimeout(() => {
18
+ this.drawRectangle();
19
+ }, 50);
20
+ }
11
21
  constructor(breakpointObserver, platform, cd, zone, cameraProvider) {
12
22
  super();
13
23
  this.breakpointObserver = breakpointObserver;
@@ -27,16 +37,6 @@ export class WebcamComponent extends BaseComponent {
27
37
  this.imageCapture = new EventEmitter();
28
38
  this.initError = new EventEmitter();
29
39
  }
30
- onResize() {
31
- this.cameraProvider.rectPosition.t = 0;
32
- // this.videoReady.next(false);
33
- if (this.resizeTimeout) {
34
- clearTimeout(this.resizeTimeout);
35
- }
36
- this.resizeTimeout = setTimeout(() => {
37
- this.drawRectangle();
38
- }, 50);
39
- }
40
40
  ngAfterViewInit() {
41
41
  console.warn('[video] start');
42
42
  // initial load
@@ -363,9 +363,9 @@ export class WebcamComponent extends BaseComponent {
363
363
  console.warn('[VIDEO] destroyed');
364
364
  }
365
365
  }
366
- WebcamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamComponent, deps: [{ token: i1.BreakpointObserver }, { token: i2.Platform }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.NgxScandocCameraProvider }], target: i0.ɵɵFactoryTarget.Component });
367
- WebcamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WebcamComponent, selector: "ngx-scandoc-webcam", inputs: { imageHandler: "imageHandler", type: "type", trigger: "trigger" }, outputs: { cameraSwitched: "cameraSwitched", videoReady: "videoReady", imageCapture: "imageCapture", initError: "initError" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true, static: true }, { propertyName: "videoRef", first: true, predicate: ["video"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"webcam-wrapper\">\n <video #video autoplay muted style=\"display: block\" playsinline></video>\n\n <div class=\"rectangle\">\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"video.offsetWidth\"\n [height]=\"video.offsetHeight\"\n ></canvas>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex:1;transform:transale3d(0,0,0);background-color:#000;overflow:hidden}.webcam-wrapper{display:flex;overflow:hidden;flex-direction:row;flex:1;position:relative}.webcam-wrapper video{overflow:hidden;flex:1;object-fit:contain}.webcam-wrapper canvas{transform:translateZ(0);display:block;position:absolute;z-index:20;left:0;top:0}.webcam-wrapper .rectangle{position:absolute;left:0;top:0;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamComponent, decorators: [{
366
+ WebcamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WebcamComponent, deps: [{ token: i1.BreakpointObserver }, { token: i2.Platform }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.NgxScandocCameraProvider }], target: i0.ɵɵFactoryTarget.Component });
367
+ WebcamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: WebcamComponent, selector: "ngx-scandoc-webcam", inputs: { imageHandler: "imageHandler", type: "type", trigger: "trigger" }, outputs: { cameraSwitched: "cameraSwitched", videoReady: "videoReady", imageCapture: "imageCapture", initError: "initError" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true, static: true }, { propertyName: "videoRef", first: true, predicate: ["video"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"webcam-wrapper\">\n <video #video autoplay muted style=\"display: block\" playsinline></video>\n\n <div class=\"rectangle\">\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"video.offsetWidth\"\n [height]=\"video.offsetHeight\"\n ></canvas>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex:1;transform:transale3d(0,0,0);background-color:#000;overflow:hidden}.webcam-wrapper{display:flex;overflow:hidden;flex-direction:row;flex:1;position:relative}.webcam-wrapper video{overflow:hidden;flex:1;object-fit:contain}.webcam-wrapper canvas{transform:translateZ(0);display:block;position:absolute;z-index:20;left:0;top:0}.webcam-wrapper .rectangle{position:absolute;left:0;top:0;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WebcamComponent, decorators: [{
369
369
  type: Component,
370
370
  args: [{ selector: 'ngx-scandoc-webcam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"webcam-wrapper\">\n <video #video autoplay muted style=\"display: block\" playsinline></video>\n\n <div class=\"rectangle\">\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"video.offsetWidth\"\n [height]=\"video.offsetHeight\"\n ></canvas>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex:1;transform:transale3d(0,0,0);background-color:#000;overflow:hidden}.webcam-wrapper{display:flex;overflow:hidden;flex-direction:row;flex:1;position:relative}.webcam-wrapper video{overflow:hidden;flex:1;object-fit:contain}.webcam-wrapper canvas{transform:translateZ(0);display:block;position:absolute;z-index:20;left:0;top:0}.webcam-wrapper .rectangle{position:absolute;left:0;top:0;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%}\n"] }]
371
371
  }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }, { type: i2.Platform }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.NgxScandocCameraProvider }]; }, propDecorators: { imageHandler: [{
@@ -392,4 +392,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
392
392
  }], initError: [{
393
393
  type: Output
394
394
  }] } });
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL3dlYmNhbS93ZWJjYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vd2ViY2FtL3dlYmNhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUF5QyxNQUFNLE1BQU0sQ0FBQztBQVluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVVyRCxNQUFNLE9BQU8sZUFDWCxTQUFRLGFBQWE7SUF1RHJCLFlBQ1Msa0JBQXNDLEVBQ3RDLFFBQWtCLEVBQ2pCLEVBQXFCLEVBQ3JCLElBQVksRUFFWixjQUF3QztRQUVoRCxLQUFLLEVBQUUsQ0FBQztRQVBELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBRVosbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBekRsRCxlQUFVLEdBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGVBQVUsR0FBUTtZQUNoQixHQUFH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QUMsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs0R0F4ZVUsZUFBZTtnR0FBZixlQUFlLDRpQkNyQzVCLCtWQVlBOzJGRHlCYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzROQWdCdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFhTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWFNLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFUyxRQUFRO3NCQUFyRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5CLGNBQWM7c0JBQTlCLE1BQU07Z0JBRVUsVUFBVTtzQkFBMUIsTUFBTTtnQkFFVSxZQUFZO3NCQUE1QixNQUFNO2dCQUdVLFNBQVM7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2ViY2FtSW5pdEVycm9yIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbml0LWVycm9yJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbWFnZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXZWJjYW1VdGlsIH0gZnJvbSAnLi4vdXRpbC93ZWJjYW0udXRpbCc7XG5pbXBvcnQgeyBXZWJjYW1NaXJyb3JQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1taXJyb3ItcHJvcGVydGllcyc7XG5pbXBvcnQge1xuICBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gIEJyZWFrcG9pbnRzLFxuICBCcmVha3BvaW50U3RhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgd29ya2VydGV4dCB9IGZyb20gJy4uLy4uLy4uL2FwcC53b3JrZXInO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIHZhciBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuZG9jLXdlYmNhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWJjYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93ZWJjYW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFdlYmNhbUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSB0cmlnZ2VyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBjYW52YXNTaXplOiBhbnkgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbiAgc2hvd1ZpZGVvID0gZmFsc2U7XG5cbiAgY2FudmFzRGF0YTogYW55ID0ge1xuICAgIGN0eDogbnVsbCxcbiAgICBjdHhPOiBudWxsLFxuICB9O1xuXG4gIG1lZGlhU3RyZWFtITogTWVkaWFTdHJlYW07XG4gIEBJbnB1dCgpIGltYWdlSGFuZGxlciE6IFN1YmplY3Q8YW55PjtcblxuICBASW5wdXQoKSBwdWJsaWMgdHlwZT86ICdkb2N1bWVudCcgfCAnc2VsZmllJyB8ICdtYW51YWwnO1xuXG4gIEBJbnB1dCgpIHRyaWdnZXIhOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIC8vIHB1YmxpYyBzZXQgdHJpZ2dlcih0cmlnZ2VyOiBPYnNlcnZhYmxlPG51bWJlcj4pIHtcbiAgLy8gICBpZiAodGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uKSB7XG4gIC8vICAgICB0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgLy8gICB9XG5cbiAgLy8gICAvLyBTdWJzY3JpYmUgdG8gZXZlbnRzIGZyb20gdGhpcyBPYnNlcnZhYmxlIHRvIHRha2Ugc25hcHNob3RzXG4gIC8vICAgdGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uID0gdHJpZ2dlci5zdWJzY3JpYmUoKHRpbWUpID0+IHtcbiAgLy8gICAgIHRoaXMudGFrZVNuYXBzaG90KHRpbWUpO1xuICAvLyAgIH0pO1xuICAvLyB9XG4gIHJlc2l6ZVRpbWVvdXQ6IGFueTtcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uLnQgPSAwO1xuICAgIC8vIHRoaXMudmlkZW9SZWFkeS5uZXh0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy5yZXNpemVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRyYXdSZWN0YW5nbGUoKTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBwcml2YXRlIGNodW5rczphbnkgPSBbXTtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjYW52YXM6IGFueTtcblxuICBAVmlld0NoaWxkKCd2aWRlbycsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdmlkZW9SZWY6IGFueTtcblxuICBAT3V0cHV0KCkgcHVibGljIGNhbWVyYVN3aXRjaGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdmlkZW9SZWFkeTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1hZ2VDYXB0dXJlOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW1hZ2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFdlYmNhbUltYWdlPigpO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgaW5pdEVycm9yOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW5pdEVycm9yPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxXZWJjYW1Jbml0RXJyb3I+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuXG4gICAgcHJpdmF0ZSBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUud2FybignW3ZpZGVvXSBzdGFydCcpO1xuICAgIC8vIGluaXRpYWwgbG9hZFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIuZ2V0RGV2aWNlcygpKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0pO1xuXG4gICAgLy8gY2FtZXJhIHN3aXRjaFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIud2ViY2FtT2JzZXJ2YWJsZSkuc3Vic2NyaWJlKChkZXZpY2UpID0+IHtcbiAgICAgIGNvbnN0IHZpZGVvVHJhY2tDb25zdHJhaW50czogYW55ID0gdGhpcy5zZXRDb25zdHJhaW50cygpO1xuICAgICAgdGhpcy5zdG9wQWxsVHJhY2tzKCk7XG4gICAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB2aWRlb1RyYWNrQ29uc3RyYWludHMuZGV2aWNlSWQgPSBkZXZpY2U7XG4gICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLnRyaWdnZXIpLnN1YnNjcmliZSgodGltZSkgPT4gdGhpcy50YWtlU25hcHNob3QodGltZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCB2aWRlbygpIHtcbiAgICByZXR1cm4gdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50O1xuICB9XG4gIGdldCBpc01vYmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5BTkRST0lEIHx8IHRoaXMucGxhdGZvcm0uSU9TO1xuICB9XG4gIHByaXZhdGUgc2V0Q29uc3RyYWludHMoKSB7XG4gICAgY29uc3Qgb3V0OiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0ge307XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgb3V0LnZpZGVvID0geyBoZWlnaHQ6IHsgaWRlYWw6IDE2MDAgfSwgd2lkdGg6IHsgaWRlYWw6IDE2MDAgfSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxMDgwIH0sIHdpZHRoOiB7IGlkZWFsOiAxOTIwIH0gfTtcbiAgICAgICAgfVxuICAgICAgICBvdXQudmlkZW8uZmFjaW5nTW9kZSA9ICdlbnZpcm9ubWVudCc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZWxmaWUnOlxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxNjAwIH0sIHdpZHRoOiB7IGlkZWFsOiAxNjAwIH0gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQudmlkZW8gPSB7IGhlaWdodDogeyBpZGVhbDogMTA4MCB9LCB3aWR0aDogeyBpZGVhbDogMTkyMCB9IH07XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnZpZGVvLmZhY2luZ01vZGUgPSAndXNlcic7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQudmlkZW87XG4gIH1cblxuICBwcml2YXRlIGdldCBhY3RpdmVUcmFja1NldHRpbmdzKCkge1xuICAgIHJldHVybiB0aGlzLm1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKTtcbiAgfVxuICBwcml2YXRlIGdldCBhY3RpdmVUcmFja0NhcGFiaWxpdGllcygpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGNvbnN0IHZpZGVvVHJhY2tDb25zdHJhaW50cyA9IHRoaXMuc2V0Q29uc3RyYWludHMoKTtcblxuICAgIHRoaXMuc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgfVxuICBwcml2YXRlIHNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50czogYW55KSB7XG4gICAgdGhpcy5fX3N1YnMoXG4gICAgICBmcm9tKFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSg8TWVkaWFTdHJlYW1Db25zdHJhaW50cz57XG4gICAgICAgICAgdmlkZW86IHZpZGVvVHJhY2tDb25zdHJhaW50cyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLnN1YnNjcmliZSgoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgdGhpcy5tZWRpYVN0cmVhbSA9IHN0cmVhbTtcbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuZGV2aWNlSWQgPSB0aGlzLmFjdGl2ZVRyYWNrU2V0dGluZ3MuZGV2aWNlSWQ7XG4gICAgICB0aGlzLnN0YXJ0VmlkZW8oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRWaWRlbygpIHtcbiAgICBjb25zb2xlLmxvZygnU1RBUlQgVklERU8nKTtcbiAgICB0aGlzLnZpZGVvLnNyY09iamVjdCA9IHRoaXMubWVkaWFTdHJlYW07XG5cbiAgICB0aGlzLnZpZGVvLm9ubG9hZGVkbWV0YWRhdGEgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICAvLyAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB0aGlzLnZpZGVvLnBsYXkoKTtcbiAgICAgIHRoaXMuc2hvd1ZpZGVvID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgY29uc29sZS5sb2coJ1ZJREVPIFBMQVknKTtcbiAgICB9O1xuICAgIHRoaXMudmlkZW8ub25wbGF5ID0gKCkgPT4ge1xuICAgICAgdGhpcy52aWRlb1JlYWR5Lm5leHQodHJ1ZSk7XG4gICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudmlkZW8udmlkZW9XaWR0aCwgdGhpcy52aWRlby52aWRlb0hlaWdodCk7XG4gICAgICB0aGlzLmRyYXdSZWN0YW5nbGUoKTtcbiAgICB9O1xuICB9XG4gIHNldENhbnZhcygpIHtcbiAgICBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB7IHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuXG4gICAgY29uc3QgY2FudmFzU21hbFNpemUgPSAzODQ7XG4gICAgY29uc3Qgc21hbGxTaXplID0ge1xuICAgICAgdzogMCxcbiAgICAgIGg6IDAsXG4gICAgfTtcblxuICAgIGlmICh2aWRlb1dpZHRoID49IHZpZGVvSGVpZ2h0KSB7XG4gICAgICBzbWFsbFNpemUudyA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZSAvIGFzcGVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIHNtYWxsU2l6ZS5oID0gY2FudmFzU21hbFNpemUgKiBhc3BlY3Q7XG4gICAgfVxuXG4gICAgLy9jb25zb2xlLmxvZygnU1onLCBzbWFsbFNpemUpO1xuXG4gICAgX2NhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG4gICAgX2NhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogZmFsc2UsXG4gICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICBkZXB0aDogZmFsc2UsXG4gICAgICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBuZWVkcyBhbiBpbml0aWFsIHNpemVcbiAgICBjYW52YXMuaGVpZ2h0ID0gc21hbGxTaXplLmg7XG4gICAgY2FudmFzLndpZHRoID0gc21hbGxTaXplLnc7XG5cbiAgICBjb25zdCBjdHhPOiBhbnkgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogZmFsc2UsXG4gICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICBkZXB0aDogZmFsc2UsXG4gICAgICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FudmFzRGF0YS5jdHggPSBjdHg7XG4gICAgdGhpcy5jYW52YXNEYXRhLmN0eE8gPSBjdHhPO1xuICAgIHRoaXMuY2FudmFzRGF0YS5jYW52YXMgPSBjYW52YXM7XG4gICAgdGhpcy5jYW52YXNEYXRhLl9jYW52YXMgPSBfY2FudmFzO1xuICAgIHRoaXMuY2FudmFzRGF0YS5zaXplID0gc21hbGxTaXplO1xuXG4gICAgLy8gY29uc3Qgc3RyZWFtID0gdGhpcy52aWRlby5jYXB0dXJlU3RyZWFtKDUpO1xuXG5cblxuICAgIC8vIGNvbnN0IG1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0pO1xuXG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLnN0YXJ0KCk7XG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChlOmFueSkgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2coZSlcbiAgICAvLyAgIHRoaXMuY2h1bmtzLnB1c2goZS5kYXRhKTtcblxuICAgIC8vICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGUuZGF0YSk7XG4gICAgLy8gICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIC8vICAgYW5jaG9yLmRvd25sb2FkID0gJ215ZmlsZS53ZWJtJztcbiAgICAvLyAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIC8vICAgYW5jaG9yLmNsaWNrKCk7XG4gICAgLy8gfTtcbiAgfVxuXG4gIHByaXZhdGUgdGFrZVNlbGZpZSgpIHtcbiAgICBjb25zdCBtaW1lVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnO1xuICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgb2Zmc2V0V2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgbGV0IF9jYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vdGhpcy5jYW52YXNTbmFwc2hvdC5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgeyB3LCBoIH0gPSB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbjtcblxuICAgIGNvbnN0IGFzcGVjdCA9IHZpZGVvV2lkdGggLyBvZmZzZXRXaWR0aDtcblxuICAgIC8vIGNvbnNvbGUubG9nKHZpZGVvV2lkdGgsIG9mZnNldFdpZHRoLCBsLCB0LCB3LCBoKTtcblxuICAgIF9jYW52YXMud2lkdGggPSB3ICogYXNwZWN0O1xuICAgIF9jYW52YXMuaGVpZ2h0ID0gaCAqIGFzcGVjdDtcblxuICAgIGNvbnN0IGR4ID0gdmlkZW9XaWR0aCAtIHcgKiBhc3BlY3Q7XG4gICAgY29uc3QgZHkgPSB2aWRlb0hlaWdodCAtIGggKiBhc3BlY3Q7XG4gICAgY29uc3QgeCA9IGR4IC8gMjtcbiAgICBjb25zdCB5ID0gZHkgLyAyO1xuXG4gICAgY29uc3QgY3R4OiBhbnkgPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgYWxwaGE6IGZhbHNlLFxuICAgICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICBhbnRpYWxpYXM6IGZhbHNlLFxuICAgICAgZGVwdGg6IGZhbHNlLFxuICAgICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICB0aGlzLnZpZGVvLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0LFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0XG4gICAgICApO1xuXG4gICAgICBjb25zdCBpbWdBc1VybDogYW55ID0gX2NhbnZhcy50b0RhdGFVUkwobWltZVR5cGUsIDEpO1xuXG4gICAgICB0aGlzLmltYWdlQ2FwdHVyZS5lbWl0KFxuICAgICAgICBuZXcgV2ViY2FtSW1hZ2UoaW1nQXNVcmwsIG1pbWVUeXBlLCBuZXcgSW1hZ2VEYXRhKDEsIDEpLCBudWxsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgdGFrZVNuYXBzaG90KHRpbWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnR5cGUgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgIHRoaXMudGFrZVNlbGZpZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgIC8vIGNvbnNvbGUud2FybignU05BUCcsIHRpbWUpO1xuICAgIGlmICghdGhpcy5zaG93VmlkZW8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbnZhc1NtYWxTaXplID0gMzg0O1xuXG4gICAgICBjb25zdCBtaW1lVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnO1xuXG4gICAgICAvLyBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQgfSA9IHRoaXMudmlkZW87XG5cbiAgICAgIC8vIF9jYW52YXMud2lkdGggPSB2aWRlb1dpZHRoO1xuICAgICAgLy8gX2NhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgLy8gY29uc3QgY3R4OiBhbnkgPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgLy8gICBhbHBoYTogZmFsc2UsXG4gICAgICAvLyAgIHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuICAgICAgLy8gICBhbnRpYWxpYXM6IGZhbHNlLFxuICAgICAgLy8gICBkZXB0aDogZmFsc2UsXG4gICAgICAvLyAgIGRlc3luY2hyb25pemVkOiB0cnVlLFxuICAgICAgLy8gfSk7XG5cbiAgICAgIC8vIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBuZWVkcyBhbiBpbml0aWFsIHNpemVcbiAgICAgIC8vIGNhbnZhcy5oZWlnaHQgPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIC8vIGNhbnZhcy53aWR0aCA9IGNhbnZhc1NtYWxTaXplO1xuXG4gICAgICAvLyBjb25zdCBjdHhPOiBhbnkgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyAgIGFscGhhOiBmYWxzZSxcbiAgICAgIC8vICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICAvLyAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIC8vICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgICAvLyB9KTtcblxuICAgICAgY29uc3QgeyBjdHgsIGN0eE8sIGNhbnZhcywgX2NhbnZhcywgc2l6ZSB9ID0gdGhpcy5jYW52YXNEYXRhO1xuXG4gICAgICBpZiAoY3R4ICYmIGN0eE8pIHtcbiAgICAgICAgY3R4LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBkcmF3U3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcbiAgICAgICAgY3R4Ty5jbGVhclJlY3QoMCwgMCwgc2l6ZS53LCBzaXplLmgpO1xuXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UodGhpcy52aWRlbywgMCwgMCk7XG4gICAgICAgIC8vY29uc29sZS50aW1lKCdkcmF3VmlkZW8nKTtcbiAgICAgICAgY3R4Ty5kcmF3SW1hZ2UoX2NhbnZhcywgMCwgMCwgc2l6ZS53LCBzaXplLmgpO1xuICAgICAgICAvL2NvbnNvbGUudGltZUVuZCgnZHJhd1ZpZGVvJyk7XG4gICAgICAgIC8vY29uc29sZS50aW1lKCdEUkFXJyk7XG5cbiAgICAgICAgY29uc3QgaW1EYXRhOiBhbnkgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgICAvL2NvbnNvbGUudGltZUVuZCgnRFJBVycpO1xuXG4gICAgICAgIC8vY29uc29sZS50aW1lKCdDVFgnKTtcblxuICAgICAgICBjb25zdCByZXNpemUgPSBjYW52YXMudG9EYXRhVVJMKG1pbWVUeXBlLCAxKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWVFbmQoJ0NUWCcpO1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkaWZmID0gY3VycmVudFRpbWUgLSB0aW1lO1xuXG4gICAgICAgIC8vIHRvdGFsIHRpbWUgZm9yIHBhY2sgb25lIGltYWdlXG4gICAgICAgIGNvbnN0IGRyYXdUaW1lID0gRGF0ZS5ub3coKSAtIGRyYXdTdGFydDtcblxuICAgICAgICAvL2NvbnNvbGUud2FybignRFJBVyBUSU1FJywgZHJhd1RpbWUpO1xuICAgICAgICBjb25zdCBkZWxheU1heCA9IGRyYXdUaW1lIDwgNjAgPyAxMDAgOiAyMDA7XG5cbiAgICAgICAgY29uc3QgZGVsYXkgPSBkaWZmID4gZGVsYXlNYXggPyAwIDogZGVsYXlNYXggLSBkaWZmO1xuXG5cbiAgICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW1hZ2VDYXB0dXJlLmVtaXQobmV3IFdlYmNhbUltYWdlKCcnLCBtaW1lVHlwZSwgaW1EYXRhLCByZXNpemUpKTtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH0sIGRlbGF5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcEFsbFRyYWNrcygpIHtcbiAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm1lZGlhU3RyZWFtICYmIHRoaXMubWVkaWFTdHJlYW0uZ2V0VHJhY2tzKSB7XG4gICAgICAvLyBnZXRUcmFja3MoKSByZXR1cm5zIGFsbCBtZWRpYSB0cmFja3MgKHZpZGVvK2F1ZGlvKVxuXG4gICAgICB0aGlzLm1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrKSA9PiB7XG4gICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgdGhpcy52aWRlby5zcmNPYmplY3QucmVtb3ZlVHJhY2sodHJhY2spO1xuICAgICAgICB0aGlzLm1lZGlhU3RyZWFtLnJlbW92ZVRyYWNrKHRyYWNrKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy52aWRlby5zcmNPYmplY3QgPSBudWxsO1xuXG4gICAgICB0aGlzLnZpZGVvLmxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRyYXdSZWN0YW5nbGUoKSB7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBfY2FudmFzID0gdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudDtcbiAgICAgIGxldCBwYWRkaW5nID0gMTA7XG4gICAgICBpZiAoIXRoaXMuaXNNb2JpbGUgJiYgX2NhbnZhcy53aWR0aCAhPT0gX2NhbnZhcy5oZWlnaHQpIHtcbiAgICAgICAgcGFkZGluZyA9IDQwO1xuICAgICAgfVxuICAgICAgY29uc3QgY3R4ID0gX2NhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIF9jYW52YXMud2lkdGgsIF9jYW52YXMuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBfY2FudmFzO1xuXG5cblxuICAgICAgY29uc3QgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgICAgY29uc3QgZG9jU2l6ZSA9IHRoaXMudHlwZSA9PT0gJ3NlbGZpZScgPyAxIDogODYgLyA1NTtcblxuICAgICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuICAgICAgbGV0IF9oZWlnaHQ7XG4gICAgICBsZXQgX3dpZHRoO1xuXG4gICAgICBpZiAodmlkZW9XaWR0aCA+PSB2aWRlb0hlaWdodCkge1xuICAgICAgICBfd2lkdGggPSB3aWR0aDtcblxuICAgICAgICBfaGVpZ2h0ID0gX3dpZHRoIC8gYXNwZWN0O1xuXG4gICAgICAgIGlmIChfaGVpZ2h0ID4gaGVpZ2h0KSB7XG4gICAgICAgICAgX2hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICBfd2lkdGggPSBhc3BlY3QgKiBfaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICBfd2lkdGggPSBhc3BlY3QgKiBfaGVpZ2h0O1xuICAgICAgICBpZiAoX3dpZHRoID4gd2lkdGgpIHtcbiAgICAgICAgICBfd2lkdGggPSB3aWR0aDtcbiAgICAgICAgICBfaGVpZ2h0ID0gX3dpZHRoIC8gYXNwZWN0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgdywgaDtcblxuICAgICAgaWYgKF93aWR0aCA8PSBfaGVpZ2h0KSB7XG4gICAgICAgIHcgPSBfd2lkdGggLSAyICogcGFkZGluZztcbiAgICAgICAgaCA9IHcgLyBkb2NTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaCA9IF9oZWlnaHQgLSAyICogcGFkZGluZztcbiAgICAgICAgdyA9IGRvY1NpemUgKiBoO1xuICAgICAgfVxuXG4gICAgICBoID0gTWF0aC5mbG9vcihoKTtcbiAgICAgIHcgPSBNYXRoLmZsb29yKHcpO1xuXG5cblxuICAgICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoKHdpZHRoIC0gdykgLyAyKTtcbiAgICAgIGNvbnN0IHRvcCA9IE1hdGguZmxvb3IoKGhlaWdodCAtIGgpIC8gMik7XG5cbiAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICd3aGl0ZSc7XG5cbiAgICAgIC8vIGN0eC5zdHJva2VSZWN0KGxlZnQsIHRvcCwgX3dpZHRoLCBfaGVpZ2h0KTtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpJztcbiAgICAgLy8gY3R4LnNoYWRvd0NvbG9yID0gJ3doaXRlJztcbiAgICAgIGN0eC5zaGFkb3dCbHVyID0gMTU7XG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG5cbiAgICAgIC8vIERyYXcgdXNpbmcgNXB4IGZvciBib3JkZXIgcmFkaXVzIG9uIGFsbCBzaWRlc1xuICAgICAgLy8gc3Ryb2tlIGl0IGJ1dCBubyBmaWxsXG4gICAgICBjdHgucm91bmRSZWN0KGxlZnQsIHRvcCwgdywgaCwgNSk7XG4gICAgICBjdHguc3Ryb2tlKCk7XG4gICAgICBjdHguZmlsbCgpO1xuXG5cblxuXG4gICAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbiA9IHtcbiAgICAgICAgbDogbGVmdCxcbiAgICAgICAgdDogdG9wLFxuICAgICAgICB3LFxuICAgICAgICBoLFxuICAgICAgICBfdzogX3dpZHRoLFxuICAgICAgICBfaDogX2hlaWdodCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0Q2FudmFzKCk7XG4gICAgICAvLyBjdHguc3Ryb2tlKCk7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52aWRlby5wYXVzZSgpO1xuXG4gICAgLy8gdGhpcy52aWRlby5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjazogYW55KSA9PiB7XG4gICAgLy8gICB0cmFjay5zdG9wKCk7XG4gICAgLy8gICB0aGlzLnZpZGVvLnNyY09iamVjdC5yZW1vdmVUcmFjayh0cmFjayk7XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLnN0b3BBbGxUcmFja3MoKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuXG4gICAgY29uc29sZS53YXJuKCdbVklERU9dIGRlc3Ryb3llZCcpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2ViY2FtLXdyYXBwZXJcIj5cbiAgPHZpZGVvICN2aWRlbyBhdXRvcGxheSBtdXRlZCBzdHlsZT1cImRpc3BsYXk6IGJsb2NrXCIgcGxheXNpbmxpbmU+PC92aWRlbz5cblxuICA8ZGl2IGNsYXNzPVwicmVjdGFuZ2xlXCI+XG4gICAgPGNhbnZhc1xuICAgICAgI2NhbnZhc1xuICAgICAgW25nU3R5bGVdPVwieyB2aXNpYmlsaXR5OiBzaG93VmlkZW8gPyAndmlzaWJsZScgOiAnaGlkZGVuJyB9XCJcbiAgICAgIFt3aWR0aF09XCJ2aWRlby5vZmZzZXRXaWR0aFwiXG4gICAgICBbaGVpZ2h0XT1cInZpZGVvLm9mZnNldEhlaWdodFwiXG4gICAgPjwvY2FudmFzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL3dlYmNhbS93ZWJjYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vd2ViY2FtL3dlYmNhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUF5QyxNQUFNLE1BQU0sQ0FBQztBQVluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVVyRCxNQUFNLE9BQU8sZUFDWCxTQUFRLGFBQWE7SUE4QnJCLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLCtCQUErQjtRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQWdCRCxZQUNTLGtCQUFzQyxFQUN0QyxRQUFrQixFQUNqQixFQUFxQixFQUNyQixJQUFZLEVBRVosY0FBd0M7UUFF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QyxtQkFBbUIsRUFBRTtZQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzRHQXhlVSxlQUFlO2dHQUFmLGVBQWUsNGlCQ3JDNUIsK1ZBWUE7MkZEeUJhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU07NE5BZ0J0QyxZQUFZO3NCQUFwQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQWFOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYU0sTUFBTTtzQkFBcEQsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVTLFFBQVE7c0JBQXJELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFbkIsY0FBYztzQkFBOUIsTUFBTTtnQkFFVSxVQUFVO3NCQUExQixNQUFNO2dCQUVVLFlBQVk7c0JBQTVCLE1BQU07Z0JBR1UsU0FBUztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXZWJjYW1Jbml0RXJyb3IgfSBmcm9tICcuLi9kb21haW4vd2ViY2FtLWluaXQtZXJyb3InO1xuaW1wb3J0IHsgV2ViY2FtSW1hZ2UgfSBmcm9tICcuLi9kb21haW4vd2ViY2FtLWltYWdlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdlYmNhbVV0aWwgfSBmcm9tICcuLi91dGlsL3dlYmNhbS51dGlsJztcbmltcG9ydCB7IFdlYmNhbU1pcnJvclByb3BlcnRpZXMgfSBmcm9tICcuLi9kb21haW4vd2ViY2FtLW1pcnJvci1wcm9wZXJ0aWVzJztcbmltcG9ydCB7XG4gIEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgQnJlYWtwb2ludHMsXG4gIEJyZWFrcG9pbnRTdGF0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB3b3JrZXJ0ZXh0IH0gZnJvbSAnLi4vLi4vLi4vYXBwLndvcmtlcic7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLmNvbXBvbmVudCc7XG5cbmRlY2xhcmUgdmFyIE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3I6IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXNjYW5kb2Mtd2ViY2FtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dlYmNhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dlYmNhbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV2ViY2FtQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIHRyaWdnZXJTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIGNhbnZhc1NpemU6IGFueSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICBzaG93VmlkZW8gPSBmYWxzZTtcblxuICBjYW52YXNEYXRhOiBhbnkgPSB7XG4gICAgY3R4OiBudWxsLFxuICAgIGN0eE86IG51bGwsXG4gIH07XG5cbiAgbWVkaWFTdHJlYW0hOiBNZWRpYVN0cmVhbTtcbiAgQElucHV0KCkgaW1hZ2VIYW5kbGVyITogU3ViamVjdDxhbnk+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlPzogJ2RvY3VtZW50JyB8ICdzZWxmaWUnIHwgJ21hbnVhbCc7XG5cbiAgQElucHV0KCkgdHJpZ2dlciE6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgLy8gcHVibGljIHNldCB0cmlnZ2VyKHRyaWdnZXI6IE9ic2VydmFibGU8bnVtYmVyPikge1xuICAvLyAgIGlmICh0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24pIHtcbiAgLy8gICAgIHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAvLyAgIH1cblxuICAvLyAgIC8vIFN1YnNjcmliZSB0byBldmVudHMgZnJvbSB0aGlzIE9ic2VydmFibGUgdG8gdGFrZSBzbmFwc2hvdHNcbiAgLy8gICB0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24gPSB0cmlnZ2VyLnN1YnNjcmliZSgodGltZSkgPT4ge1xuICAvLyAgICAgdGhpcy50YWtlU25hcHNob3QodGltZSk7XG4gIC8vICAgfSk7XG4gIC8vIH1cbiAgcmVzaXplVGltZW91dDogYW55O1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoKSB7XG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci5yZWN0UG9zaXRpb24udCA9IDA7XG4gICAgLy8gdGhpcy52aWRlb1JlYWR5Lm5leHQoZmFsc2UpO1xuICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZHJhd1JlY3RhbmdsZSgpO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgY2h1bmtzOmFueSA9IFtdO1xuICBAVmlld0NoaWxkKCdjYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGNhbnZhczogYW55O1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB2aWRlb1JlZjogYW55O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FtZXJhU3dpdGNoZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyB2aWRlb1JlYWR5OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBpbWFnZUNhcHR1cmU6IEV2ZW50RW1pdHRlcjxXZWJjYW1JbWFnZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8V2ViY2FtSW1hZ2U+KCk7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBpbml0RXJyb3I6IEV2ZW50RW1pdHRlcjxXZWJjYW1Jbml0RXJyb3I+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFdlYmNhbUluaXRFcnJvcj4oKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIHB1YmxpYyBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG5cbiAgICBwcml2YXRlIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS53YXJuKCdbdmlkZW9dIHN0YXJ0Jyk7XG4gICAgLy8gaW5pdGlhbCBsb2FkXG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci5nZXREZXZpY2VzKCkpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfSk7XG5cbiAgICAvLyBjYW1lcmEgc3dpdGNoXG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci53ZWJjYW1PYnNlcnZhYmxlKS5zdWJzY3JpYmUoKGRldmljZSkgPT4ge1xuICAgICAgY29uc3QgdmlkZW9UcmFja0NvbnN0cmFpbnRzOiBhbnkgPSB0aGlzLnNldENvbnN0cmFpbnRzKCk7XG4gICAgICB0aGlzLnN0b3BBbGxUcmFja3MoKTtcbiAgICAgIHRoaXMuc2hvd1ZpZGVvID0gZmFsc2U7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHZpZGVvVHJhY2tDb25zdHJhaW50cy5kZXZpY2VJZCA9IGRldmljZTtcbiAgICAgIHRoaXMuc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX19zdWJzKHRoaXMudHJpZ2dlcikuc3Vic2NyaWJlKCh0aW1lKSA9PiB0aGlzLnRha2VTbmFwc2hvdCh0aW1lKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZGVvKCkge1xuICAgIHJldHVybiB0aGlzLnZpZGVvUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbiAgZ2V0IGlzTW9iaWxlKCkge1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLkFORFJPSUQgfHwgdGhpcy5wbGF0Zm9ybS5JT1M7XG4gIH1cbiAgcHJpdmF0ZSBzZXRDb25zdHJhaW50cygpIHtcbiAgICBjb25zdCBvdXQ6IE1lZGlhU3RyZWFtQ29uc3RyYWludHMgPSB7fTtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICBvdXQudmlkZW8gPSB7IGhlaWdodDogeyBpZGVhbDogMTYwMCB9LCB3aWR0aDogeyBpZGVhbDogMTYwMCB9IH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0LnZpZGVvID0geyBoZWlnaHQ6IHsgaWRlYWw6IDEwODAgfSwgd2lkdGg6IHsgaWRlYWw6IDE5MjAgfSB9O1xuICAgICAgICB9XG4gICAgICAgIG91dC52aWRlby5mYWNpbmdNb2RlID0gJ2Vudmlyb25tZW50JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NlbGZpZSc6XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgb3V0LnZpZGVvID0geyBoZWlnaHQ6IHsgaWRlYWw6IDE2MDAgfSwgd2lkdGg6IHsgaWRlYWw6IDE2MDAgfSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxMDgwIH0sIHdpZHRoOiB7IGlkZWFsOiAxOTIwIH0gfTtcbiAgICAgICAgfVxuICAgICAgICBvdXQudmlkZW8uZmFjaW5nTW9kZSA9ICd1c2VyJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGFjdGl2ZVRyYWNrU2V0dGluZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpO1xuICB9XG4gIHByaXZhdGUgZ2V0IGFjdGl2ZVRyYWNrQ2FwYWJpbGl0aWVzKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5tZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldENhcGFiaWxpdGllcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgY29uc3QgdmlkZW9UcmFja0NvbnN0cmFpbnRzID0gdGhpcy5zZXRDb25zdHJhaW50cygpO1xuXG4gICAgdGhpcy5zZXR1cCh2aWRlb1RyYWNrQ29uc3RyYWludHMpO1xuICB9XG4gIHByaXZhdGUgc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzOiBhbnkpIHtcbiAgICB0aGlzLl9fc3VicyhcbiAgICAgIGZyb20oXG4gICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKDxNZWRpYVN0cmVhbUNvbnN0cmFpbnRzPntcbiAgICAgICAgICB2aWRlbzogdmlkZW9UcmFja0NvbnN0cmFpbnRzLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKChzdHJlYW06IE1lZGlhU3RyZWFtKSA9PiB7XG4gICAgICB0aGlzLm1lZGlhU3RyZWFtID0gc3RyZWFtO1xuICAgICAgdGhpcy5jYW1lcmFQcm92aWRlci5kZXZpY2VJZCA9IHRoaXMuYWN0aXZlVHJhY2tTZXR0aW5ncy5kZXZpY2VJZDtcbiAgICAgIHRoaXMuc3RhcnRWaWRlbygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFZpZGVvKCkge1xuICAgIGNvbnNvbGUubG9nKCdTVEFSVCBWSURFTycpO1xuICAgIHRoaXMudmlkZW8uc3JjT2JqZWN0ID0gdGhpcy5tZWRpYVN0cmVhbTtcblxuICAgIHRoaXMudmlkZW8ub25sb2FkZWRtZXRhZGF0YSA9IChkYXRhOiBhbnkpID0+IHtcbiAgICAgIC8vICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIHRoaXMudmlkZW8ucGxheSgpO1xuICAgICAgdGhpcy5zaG93VmlkZW8gPSB0cnVlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBjb25zb2xlLmxvZygnVklERU8gUExBWScpO1xuICAgIH07XG4gICAgdGhpcy52aWRlby5vbnBsYXkgPSAoKSA9PiB7XG4gICAgICB0aGlzLnZpZGVvUmVhZHkubmV4dCh0cnVlKTtcbiAgICAgLy8gY29uc29sZS5sb2codGhpcy52aWRlby52aWRlb1dpZHRoLCB0aGlzLnZpZGVvLnZpZGVvSGVpZ2h0KTtcbiAgICAgIHRoaXMuZHJhd1JlY3RhbmdsZSgpO1xuICAgIH07XG4gIH1cbiAgc2V0Q2FudmFzKCkge1xuICAgIGxldCBfY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvL3RoaXMuY2FudmFzU25hcHNob3QubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQgfSA9IHRoaXMudmlkZW87XG5cbiAgICBjb25zdCBhc3BlY3QgPSB2aWRlb1dpZHRoIC8gdmlkZW9IZWlnaHQ7XG5cbiAgICBjb25zdCBjYW52YXNTbWFsU2l6ZSA9IDM4NDtcbiAgICBjb25zdCBzbWFsbFNpemUgPSB7XG4gICAgICB3OiAwLFxuICAgICAgaDogMCxcbiAgICB9O1xuXG4gICAgaWYgKHZpZGVvV2lkdGggPj0gdmlkZW9IZWlnaHQpIHtcbiAgICAgIHNtYWxsU2l6ZS53ID0gY2FudmFzU21hbFNpemU7XG4gICAgICBzbWFsbFNpemUuaCA9IGNhbnZhc1NtYWxTaXplIC8gYXNwZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzbWFsbFNpemUuaCA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZSAqIGFzcGVjdDtcbiAgICB9XG5cbiAgICAvL2NvbnNvbGUubG9nKCdTWicsIHNtYWxsU2l6ZSk7XG5cbiAgICBfY2FudmFzLndpZHRoID0gdmlkZW9XaWR0aDtcbiAgICBfY2FudmFzLmhlaWdodCA9IHZpZGVvSGVpZ2h0O1xuICAgIGNvbnN0IGN0eDogYW55ID0gX2NhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIGFscGhhOiBmYWxzZSxcbiAgICAgIHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuICAgICAgYW50aWFsaWFzOiBmYWxzZSxcbiAgICAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIGRlc3luY2hyb25pemVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIG5lZWRzIGFuIGluaXRpYWwgc2l6ZVxuICAgIGNhbnZhcy5oZWlnaHQgPSBzbWFsbFNpemUuaDtcbiAgICBjYW52YXMud2lkdGggPSBzbWFsbFNpemUudztcblxuICAgIGNvbnN0IGN0eE86IGFueSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIGFscGhhOiBmYWxzZSxcbiAgICAgIHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuICAgICAgYW50aWFsaWFzOiBmYWxzZSxcbiAgICAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIGRlc3luY2hyb25pemVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYW52YXNEYXRhLmN0eCA9IGN0eDtcbiAgICB0aGlzLmNhbnZhc0RhdGEuY3R4TyA9IGN0eE87XG4gICAgdGhpcy5jYW52YXNEYXRhLmNhbnZhcyA9IGNhbnZhcztcbiAgICB0aGlzLmNhbnZhc0RhdGEuX2NhbnZhcyA9IF9jYW52YXM7XG4gICAgdGhpcy5jYW52YXNEYXRhLnNpemUgPSBzbWFsbFNpemU7XG5cbiAgICAvLyBjb25zdCBzdHJlYW0gPSB0aGlzLnZpZGVvLmNhcHR1cmVTdHJlYW0oNSk7XG5cblxuXG4gICAgLy8gY29uc3QgbWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSk7XG5cblxuICAgIC8vIG1lZGlhUmVjb3JkZXIuc3RhcnQoKTtcblxuICAgIC8vIG1lZGlhUmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGU6YW55KSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhlKVxuICAgIC8vICAgdGhpcy5jaHVua3MucHVzaChlLmRhdGEpO1xuXG4gICAgLy8gICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZS5kYXRhKTtcbiAgICAvLyAgIHZhciBhbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgLy8gICBhbmNob3IuZG93bmxvYWQgPSAnbXlmaWxlLndlYm0nO1xuICAgIC8vICAgYW5jaG9yLmhyZWYgPSB1cmw7XG4gICAgLy8gICBhbmNob3IuY2xpY2soKTtcbiAgICAvLyB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0YWtlU2VsZmllKCkge1xuICAgIGNvbnN0IG1pbWVUeXBlOiBzdHJpbmcgPSAnaW1hZ2UvanBlZyc7XG4gICAgY29uc3QgeyB2aWRlb1dpZHRoLCBvZmZzZXRXaWR0aCwgdmlkZW9IZWlnaHQgfSA9IHRoaXMudmlkZW87XG5cbiAgICBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB7IHcsIGggfSA9IHRoaXMuY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uO1xuXG4gICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIG9mZnNldFdpZHRoO1xuXG4gICAgLy8gY29uc29sZS5sb2codmlkZW9XaWR0aCwgb2Zmc2V0V2lkdGgsIGwsIHQsIHcsIGgpO1xuXG4gICAgX2NhbnZhcy53aWR0aCA9IHcgKiBhc3BlY3Q7XG4gICAgX2NhbnZhcy5oZWlnaHQgPSBoICogYXNwZWN0O1xuXG4gICAgY29uc3QgZHggPSB2aWRlb1dpZHRoIC0gdyAqIGFzcGVjdDtcbiAgICBjb25zdCBkeSA9IHZpZGVvSGVpZ2h0IC0gaCAqIGFzcGVjdDtcbiAgICBjb25zdCB4ID0gZHggLyAyO1xuICAgIGNvbnN0IHkgPSBkeSAvIDI7XG5cbiAgICBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogZmFsc2UsXG4gICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICBkZXB0aDogZmFsc2UsXG4gICAgICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmIChjdHgpIHtcbiAgICAgIGN0eC5kcmF3SW1hZ2UoXG4gICAgICAgIHRoaXMudmlkZW8sXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHcgKiBhc3BlY3QsXG4gICAgICAgIGggKiBhc3BlY3QsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIHcgKiBhc3BlY3QsXG4gICAgICAgIGggKiBhc3BlY3RcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGltZ0FzVXJsOiBhbnkgPSBfY2FudmFzLnRvRGF0YVVSTChtaW1lVHlwZSwgMSk7XG5cbiAgICAgIHRoaXMuaW1hZ2VDYXB0dXJlLmVtaXQoXG4gICAgICAgIG5ldyBXZWJjYW1JbWFnZShpbWdBc1VybCwgbWltZVR5cGUsIG5ldyBJbWFnZURhdGEoMSwgMSksIG51bGwpXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0YWtlU25hcHNob3QodGltZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2RvY3VtZW50Jykge1xuICAgICAgdGhpcy50YWtlU2VsZmllKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgLy8gY29uc29sZS53YXJuKCdTTkFQJywgdGltZSk7XG4gICAgaWYgKCF0aGlzLnNob3dWaWRlbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgY2FudmFzU21hbFNpemUgPSAzODQ7XG5cbiAgICAgIGNvbnN0IG1pbWVUeXBlOiBzdHJpbmcgPSAnaW1hZ2UvanBlZyc7XG5cbiAgICAgIC8vIGxldCBfY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvL3RoaXMuY2FudmFzU25hcHNob3QubmF0aXZlRWxlbWVudDtcblxuICAgICAgY29uc3QgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgICAgLy8gX2NhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG4gICAgICAvLyBfY2FudmFzLmhlaWdodCA9IHZpZGVvSGVpZ2h0O1xuICAgICAgLy8gY29uc29sZS5sb2codmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuXG4gICAgICAvLyBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyAgIGFscGhhOiBmYWxzZSxcbiAgICAgIC8vICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICAvLyAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIC8vICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgICAvLyB9KTtcblxuICAgICAgLy8gY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIG5lZWRzIGFuIGluaXRpYWwgc2l6ZVxuICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgLy8gY2FudmFzLndpZHRoID0gY2FudmFzU21hbFNpemU7XG5cbiAgICAgIC8vIGNvbnN0IGN0eE86IGFueSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIC8vICAgYWxwaGE6IGZhbHNlLFxuICAgICAgLy8gICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIC8vICAgYW50aWFsaWFzOiBmYWxzZSxcbiAgICAgIC8vICAgZGVwdGg6IGZhbHNlLFxuICAgICAgLy8gICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICAgIC8vIH0pO1xuXG4gICAgICBjb25zdCB7IGN0eCwgY3R4TywgY2FudmFzLCBfY2FudmFzLCBzaXplIH0gPSB0aGlzLmNhbnZhc0RhdGE7XG5cbiAgICAgIGlmIChjdHggJiYgY3R4Tykge1xuICAgICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRyYXdTdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuICAgICAgICBjdHhPLmNsZWFyUmVjdCgwLCAwLCBzaXplLncsIHNpemUuaCk7XG5cbiAgICAgICAgY3R4LmRyYXdJbWFnZSh0aGlzLnZpZGVvLCAwLCAwKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWUoJ2RyYXdWaWRlbycpO1xuICAgICAgICBjdHhPLmRyYXdJbWFnZShfY2FudmFzLCAwLCAwLCBzaXplLncsIHNpemUuaCk7XG4gICAgICAgIC8vY29uc29sZS50aW1lRW5kKCdkcmF3VmlkZW8nKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWUoJ0RSQVcnKTtcblxuICAgICAgICBjb25zdCBpbURhdGE6IGFueSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuXG4gICAgICAgIC8vY29uc29sZS50aW1lRW5kKCdEUkFXJyk7XG5cbiAgICAgICAgLy9jb25zb2xlLnRpbWUoJ0NUWCcpO1xuXG4gICAgICAgIGNvbnN0IHJlc2l6ZSA9IGNhbnZhcy50b0RhdGFVUkwobWltZVR5cGUsIDEpO1xuICAgICAgICAvL2NvbnNvbGUudGltZUVuZCgnQ1RYJyk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBjdXJyZW50VGltZSAtIHRpbWU7XG5cbiAgICAgICAgLy8gdG90YWwgdGltZSBmb3IgcGFjayBvbmUgaW1hZ2VcbiAgICAgICAgY29uc3QgZHJhd1RpbWUgPSBEYXRlLm5vdygpIC0gZHJhd1N0YXJ0O1xuXG4gICAgICAgIC8vY29uc29sZS53YXJuKCdEUkFXIFRJTUUnLCBkcmF3VGltZSk7XG4gICAgICAgIGNvbnN0IGRlbGF5TWF4ID0gZHJhd1RpbWUgPCA2MCA/IDEwMCA6IDIwMDtcblxuICAgICAgICBjb25zdCBkZWxheSA9IGRpZmYgPiBkZWxheU1heCA/IDAgOiBkZWxheU1heCAtIGRpZmY7XG5cblxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbWFnZUNhcHR1cmUuZW1pdChuZXcgV2ViY2FtSW1hZ2UoJycsIG1pbWVUeXBlLCBpbURhdGEsIHJlc2l6ZSkpO1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wQWxsVHJhY2tzKCkge1xuICAgIHRoaXMuc2hvd1ZpZGVvID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubWVkaWFTdHJlYW0gJiYgdGhpcy5tZWRpYVN0cmVhbS5nZXRUcmFja3MpIHtcbiAgICAgIC8vIGdldFRyYWNrcygpIHJldHVybnMgYWxsIG1lZGlhIHRyYWNrcyAodmlkZW8rYXVkaW8pXG5cbiAgICAgIHRoaXMubWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2spID0+IHtcbiAgICAgICAgdHJhY2suc3RvcCgpO1xuICAgICAgICB0aGlzLnZpZGVvLnNyY09iamVjdC5yZW1vdmVUcmFjayh0cmFjayk7XG4gICAgICAgIHRoaXMubWVkaWFTdHJlYW0ucmVtb3ZlVHJhY2sodHJhY2spO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnZpZGVvLnNyY09iamVjdCA9IG51bGw7XG5cbiAgICAgIHRoaXMudmlkZW8ubG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZHJhd1JlY3RhbmdsZSgpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGNvbnN0IF9jYW52YXMgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50O1xuICAgICAgbGV0IHBhZGRpbmcgPSAxMDtcbiAgICAgIGlmICghdGhpcy5pc01vYmlsZSAmJiBfY2FudmFzLndpZHRoICE9PSBfY2FudmFzLmhlaWdodCkge1xuICAgICAgICBwYWRkaW5nID0gNDA7XG4gICAgICB9XG4gICAgICBjb25zdCBjdHggPSBfY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgX2NhbnZhcy53aWR0aCwgX2NhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IF9jYW52YXM7XG5cblxuXG4gICAgICBjb25zdCB7IHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgICBjb25zdCBkb2NTaXplID0gdGhpcy50eXBlID09PSAnc2VsZmllJyA/IDEgOiA4NiAvIDU1O1xuXG4gICAgICBjb25zdCBhc3BlY3QgPSB2aWRlb1dpZHRoIC8gdmlkZW9IZWlnaHQ7XG4gICAgICBsZXQgX2hlaWdodDtcbiAgICAgIGxldCBfd2lkdGg7XG5cbiAgICAgIGlmICh2aWRlb1dpZHRoID49IHZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIF93aWR0aCA9IHdpZHRoO1xuXG4gICAgICAgIF9oZWlnaHQgPSBfd2lkdGggLyBhc3BlY3Q7XG5cbiAgICAgICAgaWYgKF9oZWlnaHQgPiBoZWlnaHQpIHtcbiAgICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAgIF93aWR0aCA9IGFzcGVjdCAqIF9oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIF93aWR0aCA9IGFzcGVjdCAqIF9oZWlnaHQ7XG4gICAgICAgIGlmIChfd2lkdGggPiB3aWR0aCkge1xuICAgICAgICAgIF93aWR0aCA9IHdpZHRoO1xuICAgICAgICAgIF9oZWlnaHQgPSBfd2lkdGggLyBhc3BlY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCB3LCBoO1xuXG4gICAgICBpZiAoX3dpZHRoIDw9IF9oZWlnaHQpIHtcbiAgICAgICAgdyA9IF93aWR0aCAtIDIgKiBwYWRkaW5nO1xuICAgICAgICBoID0gdyAvIGRvY1NpemU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoID0gX2hlaWdodCAtIDIgKiBwYWRkaW5nO1xuICAgICAgICB3ID0gZG9jU2l6ZSAqIGg7XG4gICAgICB9XG5cbiAgICAgIGggPSBNYXRoLmZsb29yKGgpO1xuICAgICAgdyA9IE1hdGguZmxvb3Iodyk7XG5cblxuXG4gICAgICBjb25zdCBsZWZ0ID0gTWF0aC5mbG9vcigod2lkdGggLSB3KSAvIDIpO1xuICAgICAgY29uc3QgdG9wID0gTWF0aC5mbG9vcigoaGVpZ2h0IC0gaCkgLyAyKTtcblxuICAgICAgY3R4LnN0cm9rZVN0eWxlID0gJ3doaXRlJztcblxuICAgICAgLy8gY3R4LnN0cm9rZVJlY3QobGVmdCwgdG9wLCBfd2lkdGgsIF9oZWlnaHQpO1xuICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSknO1xuICAgICAvLyBjdHguc2hhZG93Q29sb3IgPSAnd2hpdGUnO1xuICAgICAgY3R4LnNoYWRvd0JsdXIgPSAxNTtcbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcblxuICAgICAgLy8gRHJhdyB1c2luZyA1cHggZm9yIGJvcmRlciByYWRpdXMgb24gYWxsIHNpZGVzXG4gICAgICAvLyBzdHJva2UgaXQgYnV0IG5vIGZpbGxcbiAgICAgIGN0eC5yb3VuZFJlY3QobGVmdCwgdG9wLCB3LCBoLCA1KTtcbiAgICAgIGN0eC5zdHJva2UoKTtcbiAgICAgIGN0eC5maWxsKCk7XG5cblxuXG5cbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uID0ge1xuICAgICAgICBsOiBsZWZ0LFxuICAgICAgICB0OiB0b3AsXG4gICAgICAgIHcsXG4gICAgICAgIGgsXG4gICAgICAgIF93OiBfd2lkdGgsXG4gICAgICAgIF9oOiBfaGVpZ2h0LFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXRDYW52YXMoKTtcbiAgICAgIC8vIGN0eC5zdHJva2UoKTtcbiAgICB9KTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZGVvLnBhdXNlKCk7XG5cbiAgICAvLyB0aGlzLnZpZGVvLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrOiBhbnkpID0+IHtcbiAgICAvLyAgIHRyYWNrLnN0b3AoKTtcbiAgICAvLyAgIHRoaXMudmlkZW8uc3JjT2JqZWN0LnJlbW92ZVRyYWNrKHRyYWNrKTtcbiAgICAvLyB9KTtcblxuICAgIHRoaXMuc3RvcEFsbFRyYWNrcygpO1xuXG4gICAgaWYgKHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuX19kZXN0cm95KCk7XG5cbiAgICBjb25zb2xlLndhcm4oJ1tWSURFT10gZGVzdHJveWVkJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3ZWJjYW0td3JhcHBlclwiPlxuICA8dmlkZW8gI3ZpZGVvIGF1dG9wbGF5IG11dGVkIHN0eWxlPVwiZGlzcGxheTogYmxvY2tcIiBwbGF5c2lubGluZT48L3ZpZGVvPlxuXG4gIDxkaXYgY2xhc3M9XCJyZWN0YW5nbGVcIj5cbiAgICA8Y2FudmFzXG4gICAgICAjY2FudmFzXG4gICAgICBbbmdTdHlsZV09XCJ7IHZpc2liaWxpdHk6IHNob3dWaWRlbyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH1cIlxuICAgICAgW3dpZHRoXT1cInZpZGVvLm9mZnNldFdpZHRoXCJcbiAgICAgIFtoZWlnaHRdPVwidmlkZW8ub2Zmc2V0SGVpZ2h0XCJcbiAgICA+PC9jYW52YXM+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -14,10 +14,10 @@ export class WebcamModule {
14
14
  };
15
15
  }
16
16
  }
17
- WebcamModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
- WebcamModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: WebcamModule, declarations: [WebcamComponent], imports: [CommonModule, PlatformModule], exports: [WebcamComponent] });
19
- WebcamModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamModule, imports: [CommonModule, PlatformModule] });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamModule, decorators: [{
17
+ WebcamModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WebcamModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
+ WebcamModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: WebcamModule, declarations: [WebcamComponent], imports: [CommonModule, PlatformModule], exports: [WebcamComponent] });
19
+ WebcamModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WebcamModule, imports: [CommonModule, PlatformModule] });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WebcamModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  imports: [CommonModule, PlatformModule],
@@ -3,10 +3,10 @@ import { SafeResourceUrlPipe } from './safeResourceUrl.pipe';
3
3
  import * as i0 from "@angular/core";
4
4
  export class CorePipesModule {
5
5
  }
6
- CorePipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CorePipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- CorePipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: CorePipesModule, declarations: [SafeResourceUrlPipe], exports: [SafeResourceUrlPipe] });
8
- CorePipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CorePipesModule });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CorePipesModule, decorators: [{
6
+ CorePipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CorePipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ CorePipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: CorePipesModule, declarations: [SafeResourceUrlPipe], exports: [SafeResourceUrlPipe] });
8
+ CorePipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CorePipesModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CorePipesModule, decorators: [{
10
10
  type: NgModule,
11
11
  args: [{
12
12
  declarations: [SafeResourceUrlPipe],
@@ -11,9 +11,9 @@ export class SafeResourceUrlPipe {
11
11
  // return this.sanitizer.bypassSecurityTrustXxx(style); - see docs
12
12
  }
13
13
  }
14
- SafeResourceUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SafeResourceUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
15
- SafeResourceUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: SafeResourceUrlPipe, name: "safeResourceUrl" });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SafeResourceUrlPipe, decorators: [{
14
+ SafeResourceUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SafeResourceUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
15
+ SafeResourceUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SafeResourceUrlPipe, name: "safeResourceUrl" });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SafeResourceUrlPipe, decorators: [{
17
17
  type: Pipe,
18
18
  args: [{ name: 'safeResourceUrl' }]
19
19
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
@@ -24,8 +24,8 @@ import { MatTabsModule } from '@angular/material/tabs';
24
24
  import * as i0 from "@angular/core";
25
25
  export class MaterialModule {
26
26
  }
27
- MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28
- MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: MaterialModule, imports: [MatNativeDateModule,
27
+ MaterialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28
+ MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: MaterialModule, imports: [MatNativeDateModule,
29
29
  MatDatepickerModule,
30
30
  MatCardModule,
31
31
  MatMenuModule,
@@ -66,7 +66,7 @@ MaterialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
66
66
  MatTabsModule,
67
67
  MatSlideToggleModule,
68
68
  MatAutocompleteModule] });
69
- MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MaterialModule, imports: [MatNativeDateModule,
69
+ MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MaterialModule, imports: [MatNativeDateModule,
70
70
  MatDatepickerModule,
71
71
  MatCardModule,
72
72
  MatMenuModule,
@@ -107,7 +107,7 @@ MaterialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
107
107
  MatTabsModule,
108
108
  MatSlideToggleModule,
109
109
  MatAutocompleteModule] });
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MaterialModule, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MaterialModule, decorators: [{
111
111
  type: NgModule,
112
112
  args: [{
113
113
  imports: [
@@ -31,9 +31,9 @@ export class BlankComponent {
31
31
  }
32
32
  }
33
33
  }
34
- BlankComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlankComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
35
- BlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BlankComponent, selector: "app-dialog-blank", viewQueries: [{ propertyName: "body", first: true, predicate: ["body"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-template #body></ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;height:100%}\n"] });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlankComponent, decorators: [{
34
+ BlankComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BlankComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
35
+ BlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: BlankComponent, selector: "app-dialog-blank", viewQueries: [{ propertyName: "body", first: true, predicate: ["body"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-template #body></ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;height:100%}\n"] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BlankComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'app-dialog-blank', template: "<ng-template #body></ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;overflow:hidden;height:100%}\n"] }]
39
39
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -6,6 +6,12 @@ import * as i2 from "@angular/common";
6
6
  import * as i3 from "@angular/material/button";
7
7
  import * as i4 from "@ngx-translate/core";
8
8
  export class ConfirmComponent {
9
+ onEnterPress(e) {
10
+ this.action(true);
11
+ }
12
+ onEscapePress(e) {
13
+ this.action(false);
14
+ }
9
15
  constructor(dialogRef, data) {
10
16
  this.dialogRef = dialogRef;
11
17
  this.data = data;
@@ -17,12 +23,6 @@ export class ConfirmComponent {
17
23
  };
18
24
  this.options = {};
19
25
  }
20
- onEnterPress(e) {
21
- this.action(true);
22
- }
23
- onEscapePress(e) {
24
- this.action(false);
25
- }
26
26
  ngOnInit() {
27
27
  console.log(this.data);
28
28
  this.options = this.data.options || {};
@@ -33,9 +33,9 @@ export class ConfirmComponent {
33
33
  }
34
34
  close() { }
35
35
  }
36
- ConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConfirmComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
37
- ConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ConfirmComponent, selector: "app-confirm", host: { listeners: { "document:keyup.enter": "onEnterPress($event)", "document:keyup.escape": "onEscapePress($event)" } }, ngImport: i0, template: "<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ data.title | translate }}\n\n <!-- {{ data.text.statusText }} {{ data.text.status }} -->\n </div>\n\n <span fxFlex></span>\n\n <!-- <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button> -->\n <!-- <mat-icon class=\"mr-16\" style=\"color:#888;\">info_outline</mat-icon> -->\n</header>\n\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <div class=\"text\" *ngIf=\"data.text\">\n <span [innerHtml]=\"data.text\"></span>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button\n *ngIf=\"!data.alert && !options?.hideCancelButton\"\n (click)=\"action(false)\"\n mat-raised-button\n >\n {{ data.cancel || \"scandoc.cancel\" | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || \"scandoc.confirm\" | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || \"scandoc.ok\" | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.title{font-size:18px}.text{padding:0 30px;text-align:center;font-size:16px;margin:40px 0}.actions{min-height:60px;padding:0 20px}.actions button{min-width:120px;margin-right:16px;text-transform:uppercase;box-shadow:none;border:1px solid rgba(0,0,0,.12)}footer{background-color:#fff}footer button{box-shadow:none!important;border:1px solid rgba(0,0,0,.12);font-size:13px}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConfirmComponent, decorators: [{
36
+ ConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfirmComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
37
+ ConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ConfirmComponent, selector: "app-confirm", host: { listeners: { "document:keyup.enter": "onEnterPress($event)", "document:keyup.escape": "onEscapePress($event)" } }, ngImport: i0, template: "<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ data.title | translate }}\n\n <!-- {{ data.text.statusText }} {{ data.text.status }} -->\n </div>\n\n <span fxFlex></span>\n\n <!-- <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button> -->\n <!-- <mat-icon class=\"mr-16\" style=\"color:#888;\">info_outline</mat-icon> -->\n</header>\n\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <div class=\"text\" *ngIf=\"data.text\">\n <span [innerHtml]=\"data.text\"></span>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button\n *ngIf=\"!data.alert && !options?.hideCancelButton\"\n (click)=\"action(false)\"\n mat-raised-button\n >\n {{ data.cancel || \"scandoc.cancel\" | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || \"scandoc.confirm\" | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || \"scandoc.ok\" | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.title{font-size:18px}.text{padding:0 30px;text-align:center;font-size:16px;margin:40px 0}.actions{min-height:60px;padding:0 20px}.actions button{min-width:120px;margin-right:16px;text-transform:uppercase;box-shadow:none;border:1px solid rgba(0,0,0,.12)}footer{background-color:#fff}footer button{box-shadow:none!important;border:1px solid rgba(0,0,0,.12);font-size:13px}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfirmComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ selector: 'app-confirm', template: "<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ data.title | translate }}\n\n <!-- {{ data.text.statusText }} {{ data.text.status }} -->\n </div>\n\n <span fxFlex></span>\n\n <!-- <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button> -->\n <!-- <mat-icon class=\"mr-16\" style=\"color:#888;\">info_outline</mat-icon> -->\n</header>\n\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <div class=\"text\" *ngIf=\"data.text\">\n <span [innerHtml]=\"data.text\"></span>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button\n *ngIf=\"!data.alert && !options?.hideCancelButton\"\n (click)=\"action(false)\"\n mat-raised-button\n >\n {{ data.cancel || \"scandoc.cancel\" | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || \"scandoc.confirm\" | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || \"scandoc.ok\" | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.title{font-size:18px}.text{padding:0 30px;text-align:center;font-size:16px;margin:40px 0}.actions{min-height:60px;padding:0 20px}.actions button{min-width:120px;margin-right:16px;text-transform:uppercase;box-shadow:none;border:1px solid rgba(0,0,0,.12)}footer{background-color:#fff}footer button{box-shadow:none!important;border:1px solid rgba(0,0,0,.12);font-size:13px}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"] }]
41
41
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -48,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
48
48
  type: HostListener,
49
49
  args: ['document:keyup.escape', ['$event']]
50
50
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBYXpFLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQjNCLFlBQ1MsU0FBeUMsRUFDaEIsSUFBUTtRQURqQyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFJO1FBcEIxQyxnQkFBVyxHQUFDLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQUc7WUFDUCxLQUFLLEVBQUUsZUFBZTtZQUN0QixNQUFNLEVBQUUsYUFBYTtZQUNyQixLQUFLLEVBQUUsVUFBVTtTQUNsQixDQUFDO1FBRUYsWUFBTyxHQUFZLEVBQUUsQ0FBQztJQWNuQixDQUFDO0lBWEosWUFBWSxDQUFDLENBQWdCO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFnQjtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFPRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7SUFDOUQsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFPO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELEtBQUssS0FBSSxDQUFDOzs2R0FoQ0MsZ0JBQWdCLDhDQXFCakIsZUFBZTtpR0FyQmQsZ0JBQWdCLDhLQ2Q3QixneERBK0RBOzJGRGpEYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTs7MEJBeUJwQixNQUFNOzJCQUFDLGVBQWU7NENBVnpCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLaEQsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmludGVyZmFjZSBvcHRpb25zIHtcbiAgaGlkZU9rQnV0dG9uPzogYm9vbGVhbjtcbiAgaGlkZUNhbmNlbEJ1dHRvbj86IGJvb2xlYW47XG4gIGhpZGVOb0J1dHRvbj86IGJvb2xlYW47XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29uZmlybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlybS5jb21wb25lbnQuc2NzcycsICcuLy4uLy4uL3Njc3MvZGlhbG9nLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNob3dEZXRhaWxzPWZhbHNlO1xuICBpbWFnZXMgPSB7XG4gICAgYWxlcnQ6ICdwYWdlLWxvc3Quc3ZnJyxcbiAgICBwcm9tcHQ6ICdiZWRyb29tLnN2ZycsXG4gICAgZGlydHk6ICdvcHBzLnN2ZycsXG4gIH07XG4gIHR5cGU6YW55O1xuICBvcHRpb25zOiBvcHRpb25zID0ge307XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZW50ZXInLCBbJyRldmVudCddKVxuICBvbkVudGVyUHJlc3MoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuYWN0aW9uKHRydWUpO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gIG9uRXNjYXBlUHJlc3MoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMuYWN0aW9uKGZhbHNlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb25maXJtQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6YW55LFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5kYXRhKTtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmRhdGEub3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLm9wdGlvbnMudHlwZSB8fCB0aGlzLmRhdGEudHlwZSB8fCAncHJvbXB0JztcbiAgfVxuICBhY3Rpb24oa2V5OmFueSkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGtleSk7XG4gIH1cbiAgY2xvc2UoKSB7fVxufVxuIiwiPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZVwiIG5nQ2xhc3MubHQtc209XCJ0aXRsZS1zbWFsbFwiPlxuICAgIHt7IGRhdGEudGl0bGUgfCB0cmFuc2xhdGUgfX1cblxuICAgIDwhLS0ge3sgZGF0YS50ZXh0LnN0YXR1c1RleHQgfX0ge3sgZGF0YS50ZXh0LnN0YXR1cyB9fSAtLT5cbiAgPC9kaXY+XG5cbiAgPHNwYW4gZnhGbGV4Pjwvc3Bhbj5cblxuICA8IS0tIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cblxuICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICA8L2J1dHRvbj4gLS0+XG4gIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwibXItMTZcIiBzdHlsZT1cImNvbG9yOiM4ODg7XCI+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj4gLS0+XG48L2hlYWRlcj5cblxuPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gIDwhLS0gPGltZ1xuICAgIHN0eWxlPVwiaGVpZ2h0OiAyNDBweDsgbWFyZ2luOiAzNHB4IDBweDtkaXNwbGF5OiBub25lO1wiXG4gICAgW3NyY109XCInL2Fzc2V0cy9pbWFnZXMvaWxsdXN0cmF0aW9ucy8nICsgaW1hZ2VzW3R5cGVdXCJcbiAgLz4gLS0+XG4gIDwhLS0gPGltZyBzdHlsZT1cIndpZHRoOjYwcHg7XCIgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvaWxsdXN0cmF0aW9ucy9kb29yLWxvY2sucG5nXCI+IC0tPlxuXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJkYXRhLnRleHRcIj5cbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImRhdGEudGV4dFwiPjwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSAgLS0+XG5cbjxmb290ZXI+XG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIWRhdGEuYWxlcnQgJiYgIW9wdGlvbnM/LmhpZGVDYW5jZWxCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImFjdGlvbihmYWxzZSlcIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICA+XG4gICAgICB7eyBkYXRhLmNhbmNlbCB8fCBcInNjYW5kb2MuY2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiZGF0YS5ubyAmJiAhb3B0aW9ucz8uaGlkZU5vQnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJhY3Rpb24oJ25vJylcIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICA+XG4gICAgICB7eyBkYXRhLm5vIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhZGF0YS5oaWRlT2tCdXR0b24gJiYgIW9wdGlvbnM/LmhpZGVPa0J1dHRvblwiXG4gICAgICAoY2xpY2spPVwiYWN0aW9uKHRydWUpXCJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhLmFsZXJ0XCI+XG4gICAgICAgIHt7IGRhdGEub2sgfHwgXCJzY2FuZG9jLmNvbmZpcm1cIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLmFsZXJ0XCI+XG4gICAgICAgIHt7IGRhdGEub2sgfHwgXCJzY2FuZG9jLm9rXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9vdGVyPlxuIl19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBYXpFLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFBWSxDQUFDLENBQWdCO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFnQjtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxZQUNTLFNBQXlDLEVBQ2hCLElBQVE7UUFEakMsY0FBUyxHQUFULFNBQVMsQ0FBZ0M7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBSTtRQXBCMUMsZ0JBQVcsR0FBQyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFHO1lBQ1AsS0FBSyxFQUFFLGVBQWU7WUFDdEIsTUFBTSxFQUFFLGFBQWE7WUFDckIsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQztRQUVGLFlBQU8sR0FBWSxFQUFFLENBQUM7SUFjbkIsQ0FBQztJQUVKLFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQU87UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0QsS0FBSyxLQUFJLENBQUM7OzZHQWhDQyxnQkFBZ0IsOENBcUJqQixlQUFlO2lHQXJCZCxnQkFBZ0IsOEtDZDdCLGd4REErREE7MkZEakRhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhOzswQkF5QnBCLE1BQU07MkJBQUMsZUFBZTs0Q0FWekIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLHNCQUFzQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUtoRCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW50ZXJmYWNlIG9wdGlvbnMge1xuICBoaWRlT2tCdXR0b24/OiBib29sZWFuO1xuICBoaWRlQ2FuY2VsQnV0dG9uPzogYm9vbGVhbjtcbiAgaGlkZU5vQnV0dG9uPzogYm9vbGVhbjtcbiAgdHlwZT86IHN0cmluZztcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb25maXJtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25maXJtLmNvbXBvbmVudC5zY3NzJywgJy4vLi4vLi4vc2Nzcy9kaWFsb2cuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2hvd0RldGFpbHM9ZmFsc2U7XG4gIGltYWdlcyA9IHtcbiAgICBhbGVydDogJ3BhZ2UtbG9zdC5zdmcnLFxuICAgIHByb21wdDogJ2JlZHJvb20uc3ZnJyxcbiAgICBkaXJ0eTogJ29wcHMuc3ZnJyxcbiAgfTtcbiAgdHlwZTphbnk7XG4gIG9wdGlvbnM6IG9wdGlvbnMgPSB7fTtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cC5lbnRlcicsIFsnJGV2ZW50J10pXG4gIG9uRW50ZXJQcmVzcyhlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5hY3Rpb24odHJ1ZSk7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25Fc2NhcGVQcmVzcyhlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5hY3Rpb24oZmFsc2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENvbmZpcm1Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTphbnksXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEpO1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGF0YS5vcHRpb25zIHx8IHt9O1xuICAgIHRoaXMudHlwZSA9IHRoaXMub3B0aW9ucy50eXBlIHx8IHRoaXMuZGF0YS50eXBlIHx8ICdwcm9tcHQnO1xuICB9XG4gIGFjdGlvbihrZXk6YW55KSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoa2V5KTtcbiAgfVxuICBjbG9zZSgpIHt9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgPGRpdiBjbGFzcz1cInRpdGxlXCIgbmdDbGFzcy5sdC1zbT1cInRpdGxlLXNtYWxsXCI+XG4gICAge3sgZGF0YS50aXRsZSB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPCEtLSB7eyBkYXRhLnRleHQuc3RhdHVzVGV4dCB9fSB7eyBkYXRhLnRleHQuc3RhdHVzIH19IC0tPlxuICA8L2Rpdj5cblxuICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxuXG4gIDwhLS0gPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxuXG4gIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPiAtLT5cbiAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJtci0xNlwiIHN0eWxlPVwiY29sb3I6Izg4ODtcIj5pbmZvX291dGxpbmU8L21hdC1pY29uPiAtLT5cbjwvaGVhZGVyPlxuXG48ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cbiAgPCEtLSA8aW1nXG4gICAgc3R5bGU9XCJoZWlnaHQ6IDI0MHB4OyBtYXJnaW46IDM0cHggMHB4O2Rpc3BsYXk6IG5vbmU7XCJcbiAgICBbc3JjXT1cIicvYXNzZXRzL2ltYWdlcy9pbGx1c3RyYXRpb25zLycgKyBpbWFnZXNbdHlwZV1cIlxuICAvPiAtLT5cbiAgPCEtLSA8aW1nIHN0eWxlPVwid2lkdGg6NjBweDtcIiBzcmM9XCIvYXNzZXRzL2ltYWdlcy9pbGx1c3RyYXRpb25zL2Rvb3ItbG9jay5wbmdcIj4gLS0+XG5cbiAgPGRpdiBjbGFzcz1cInRleHRcIiAqbmdJZj1cImRhdGEudGV4dFwiPlxuICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiZGF0YS50ZXh0XCI+PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tICAtLT5cblxuPGZvb3Rlcj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhZGF0YS5hbGVydCAmJiAhb3B0aW9ucz8uaGlkZUNhbmNlbEJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiYWN0aW9uKGZhbHNlKVwiXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgID5cbiAgICAgIHt7IGRhdGEuY2FuY2VsIHx8IFwic2NhbmRvYy5jYW5jZWxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJkYXRhLm5vICYmICFvcHRpb25zPy5oaWRlTm9CdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImFjdGlvbignbm8nKVwiXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgID5cbiAgICAgIHt7IGRhdGEubm8gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIiFkYXRhLmhpZGVPa0J1dHRvbiAmJiAhb3B0aW9ucz8uaGlkZU9rQnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJhY3Rpb24odHJ1ZSlcIlxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRhdGEuYWxlcnRcIj5cbiAgICAgICAge3sgZGF0YS5vayB8fCBcInNjYW5kb2MuY29uZmlybVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuYWxlcnRcIj5cbiAgICAgICAge3sgZGF0YS5vayB8fCBcInNjYW5kb2Mub2tcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb290ZXI+XG4iXX0=
@@ -3,9 +3,9 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/material/progress-bar";
4
4
  export class LoadingComponent {
5
5
  }
6
- LoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- LoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LoadingComponent, selector: "app-loading", ngImport: i0, template: "<div style=\"width:240px;\">\n\n <div class=\"pb-16\" style=\"font-size: 18px;padding-bottom:16px;\">\n Loading...\n </div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoadingComponent, decorators: [{
6
+ LoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ LoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: LoadingComponent, selector: "app-loading", ngImport: i0, template: "<div style=\"width:240px;\">\n\n <div class=\"pb-16\" style=\"font-size: 18px;padding-bottom:16px;\">\n Loading...\n </div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LoadingComponent, decorators: [{
9
9
  type: Component,
10
10
  args: [{ selector: 'app-loading', template: "<div style=\"width:240px;\">\n\n <div class=\"pb-16\" style=\"font-size: 18px;padding-bottom:16px;\">\n Loading...\n </div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n</div>\n" }]
11
11
  }] });
@@ -18,9 +18,9 @@ export class PromptManualComponent {
18
18
  this.dialogRef.close(key);
19
19
  }
20
20
  }
21
- PromptManualComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PromptManualComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
22
- PromptManualComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PromptManualComponent, selector: "app-prompt-manual", ngImport: i0, template: "<div class=\"inner\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <mat-icon>screenshot_keyboard</mat-icon>\n <div class=\"text\">\n {{ \"scandoc.manual\" | translate }}\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <button style=\"margin-right: 8px\" (click)=\"close(true)\" mat-raised-button>\n {{ \"scandoc.yes\" | translate }}\n </button>\n <button style=\"margin-left: 8px\" (click)=\"close(false)\" mat-raised-button>\n {{ \"scandoc.no\" | translate }}\n </button>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.inner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px 0}.inner mat-icon{width:60px;height:60px;font-size:60px}.inner .text{margin:20px 0}footer{display:flex;flex-direction:row;align-items:center;justify-content:center;padding-bottom:10px}footer button{max-width:120px;box-shadow:none;border:1px solid #ccc;flex:1}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PromptManualComponent, decorators: [{
21
+ PromptManualComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PromptManualComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
22
+ PromptManualComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PromptManualComponent, selector: "app-prompt-manual", ngImport: i0, template: "<div class=\"inner\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <mat-icon>screenshot_keyboard</mat-icon>\n <div class=\"text\">\n {{ \"scandoc.manual\" | translate }}\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <button style=\"margin-right: 8px\" (click)=\"close(true)\" mat-raised-button>\n {{ \"scandoc.yes\" | translate }}\n </button>\n <button style=\"margin-left: 8px\" (click)=\"close(false)\" mat-raised-button>\n {{ \"scandoc.no\" | translate }}\n </button>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.inner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px 0}.inner mat-icon{width:60px;height:60px;font-size:60px}.inner .text{margin:20px 0}footer{display:flex;flex-direction:row;align-items:center;justify-content:center;padding-bottom:10px}footer button{max-width:120px;box-shadow:none;border:1px solid #ccc;flex:1}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PromptManualComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'app-prompt-manual', template: "<div class=\"inner\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <mat-icon>screenshot_keyboard</mat-icon>\n <div class=\"text\">\n {{ \"scandoc.manual\" | translate }}\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <button style=\"margin-right: 8px\" (click)=\"close(true)\" mat-raised-button>\n {{ \"scandoc.yes\" | translate }}\n </button>\n <button style=\"margin-left: 8px\" (click)=\"close(false)\" mat-raised-button>\n {{ \"scandoc.no\" | translate }}\n </button>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.inner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px 0}.inner mat-icon{width:60px;height:60px;font-size:60px}.inner .text{margin:20px 0}footer{display:flex;flex-direction:row;align-items:center;justify-content:center;padding-bottom:10px}footer button{max-width:120px;box-shadow:none;border:1px solid #ccc;flex:1}\n"] }]
26
26
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -13,16 +13,6 @@ import * as i9 from "../../../core/components/scan/scan.component";
13
13
  import * as i10 from "../../../core/components/camera-switch/camera-switch.component";
14
14
  import * as i11 from "@ngx-translate/core";
15
15
  export class ScanProfileComponent extends BaseComponent {
16
- constructor(dialogs, cameraProvider, scanProvider, dialogRef, platform) {
17
- super();
18
- this.dialogs = dialogs;
19
- this.cameraProvider = cameraProvider;
20
- this.scanProvider = scanProvider;
21
- this.dialogRef = dialogRef;
22
- this.platform = platform;
23
- this.type = 'desktop';
24
- this.showDialog = false;
25
- }
26
16
  handleTouchMove(event) {
27
17
  // console.log(event);
28
18
  if (event.touches.length > 1) {
@@ -34,6 +24,16 @@ export class ScanProfileComponent extends BaseComponent {
34
24
  // event.stopImmediatePropagation();
35
25
  }
36
26
  }
27
+ constructor(dialogs, cameraProvider, scanProvider, dialogRef, platform) {
28
+ super();
29
+ this.dialogs = dialogs;
30
+ this.cameraProvider = cameraProvider;
31
+ this.scanProvider = scanProvider;
32
+ this.dialogRef = dialogRef;
33
+ this.platform = platform;
34
+ this.type = 'desktop';
35
+ this.showDialog = false;
36
+ }
37
37
  ngAfterViewInit() {
38
38
  // console.log(this.cameraProvider)
39
39
  }
@@ -65,9 +65,9 @@ export class ScanProfileComponent extends BaseComponent {
65
65
  this.dialogRef?.close();
66
66
  }
67
67
  }
68
- ScanProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, deps: [{ token: i1.DialogsCoreProvider }, { token: i2.NgxScandocCameraProvider }, { token: i3.ScanProvider }, { token: i4.MatDialogRef }, { token: i5.Platform }], target: i0.ɵɵFactoryTarget.Component });
69
- ScanProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanProfileComponent, selector: "app-scan-profile", inputs: { type: "type" }, host: { listeners: { "touchmove": "handleTouchMove($event)" } }, usesInheritance: true, ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.ScanComponent, selector: "ngx-scan", inputs: ["type", "dialogs", "showDialog"], outputs: ["actions"] }, { kind: "component", type: i10.CameraSwitchComponent, selector: "ngx-scan-camera-switch" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, decorators: [{
68
+ ScanProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScanProfileComponent, deps: [{ token: i1.DialogsCoreProvider }, { token: i2.NgxScandocCameraProvider }, { token: i3.ScanProvider }, { token: i4.MatDialogRef }, { token: i5.Platform }], target: i0.ɵɵFactoryTarget.Component });
69
+ ScanProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ScanProfileComponent, selector: "app-scan-profile", inputs: { type: "type" }, host: { listeners: { "touchmove": "handleTouchMove($event)" } }, usesInheritance: true, ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.ScanComponent, selector: "ngx-scan", inputs: ["type", "dialogs", "showDialog"], outputs: ["actions"] }, { kind: "component", type: i10.CameraSwitchComponent, selector: "ngx-scan-camera-switch" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ScanProfileComponent, decorators: [{
71
71
  type: Component,
72
72
  args: [{ selector: 'app-scan-profile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}@media only screen and (max-width: 768px){header .title{font-size:12px!important;line-height:18px!important}}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"] }]
73
73
  }], ctorParameters: function () { return [{ type: i1.DialogsCoreProvider }, { type: i2.NgxScandocCameraProvider }, { type: i3.ScanProvider }, { type: i4.MatDialogRef }, { type: i5.Platform }]; }, propDecorators: { type: [{
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
76
76
  type: HostListener,
77
77
  args: ['touchmove', ['$event']]
78
78
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9kaWFsb2dzL2NvbXBvbmVudHMvc2Nhbi1wcm9maWxlL3NjYW4tcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL3NjYW4tcHJvZmlsZS9zY2FuLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxZQUFZLEVBSVosdUJBQXVCLEVBQ3ZCLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFZeEUsTUFBTSxPQUFPLG9CQUNYLFNBQVEsYUFBYTtJQW9CckIsWUFDUyxPQUE0QixFQUM1QixjQUF3QyxFQUN2QyxZQUEwQixFQUMzQixTQUE2QyxFQUM1QyxRQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQU5ELFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN2QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUM1QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBdEJuQixTQUFJLEdBQUcsU0FBUyxDQUFDO1FBRTFCLGVBQVUsR0FBRyxLQUFLLENBQUM7SUF1Qm5CLENBQUM7SUFyQkQsZUFBZSxDQUFDLEtBQVU7UUFDeEIsc0JBQXNCO1FBQ3RCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtRQUNELHlDQUF5QztRQUV6QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLDBCQUEwQjtZQUMxQixvQ0FBb0M7U0FDckM7SUFDSCxDQUFDO0lBV0QsZUFBZTtRQUNiLG1DQUFtQztJQUNyQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxZQUFZO2dCQUNmLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO29CQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ25DO2dCQUNELE1BQU07WUFFUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDeEMsTUFBTTtZQUNSLEtBQUssZUFBZTtnQkFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxrQkFBa0I7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDOztpSEE5RFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMEtDMUJqQyxnc0JBNEJBOzJGREZhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs4TkFNdEMsSUFBSTtzQkFBWixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ3NDb3JlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9kaWFsb2dzL2RpYWxvZ3MuY29yZS5wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IFNjYW5Qcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9zY2FuLnByb3ZpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNjYW4tcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2FuLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2FuLXByb2ZpbGUuY29tcG9uZW50LnNjc3MnLCAnLi4vLi4vc2Nzcy9kaWFsb2cuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NhblByb2ZpbGVDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHR5cGUgPSAnZGVza3RvcCc7XG5cbiAgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBoYW5kbGVUb3VjaE1vdmUoZXZlbnQ6IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhkb2N1bWVudC5ib2R5LnN0eWxlLnpvb20pO1xuXG4gICAgaWYgKGV2ZW50LnNjYWxlICE9PSAxKSB7XG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ3M6IERpYWxvZ3NDb3JlUHJvdmlkZXIsXG4gICAgcHVibGljIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBzY2FuUHJvdmlkZXI6IFNjYW5Qcm92aWRlcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2NhblByb2ZpbGVDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY2FtZXJhUHJvdmlkZXIpXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fX2Rlc3Ryb3koKTtcbiAgICBjb25zb2xlLmxvZygnREVTJyk7XG4gIH1cblxuICBhY3Rpb25zKGV2ZW50OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ3NjYW5GaW5pc2gnOlxuICAgICAgICBpZiAodGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmhpZGVSZXN1bHRzKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKGV2ZW50LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdtYW51YWxNb2RlJzpcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKHsgbWFudWFsOiB0cnVlIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NjYW5EYXRhQ2xvc2UnOlxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHVybkRvY3VtZW50T3Zlcic6XG4gICAgICAgIHRoaXMuX19zdWJzKHRoaXMuZGlhbG9ncy50dXJuRG9jdW1lbnQoZXZlbnQuc2lkZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcbiAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZVwiID5cbiAgICB7eyBcInNjYW5kb2MudGl0bGVcIiB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cblxuICA8c3BhbiBzdHlsZT1cImZsZXg6IDFcIj48L3NwYW4+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNofCBhc3luY1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMHB4IDE2cHhcIj5cbiAgICAgIDxuZ3gtc2Nhbi1jYW1lcmEtc3dpdGNoPjwvbmd4LXNjYW4tY2FtZXJhLXN3aXRjaD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdkZXNrdG9wJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cblxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L2hlYWRlcj5cblxuPG5neC1zY2FuXG4gIChhY3Rpb25zKT1cImFjdGlvbnMoJGV2ZW50KVwiXG4gIFtzaG93RGlhbG9nXT1cInNob3dEaWFsb2dcIlxuICBbZGlhbG9nc109XCJkaWFsb2dzXCJcbj48L25neC1zY2FuPlxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1wcm9maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9kaWFsb2dzL2NvbXBvbmVudHMvc2Nhbi1wcm9maWxlL3NjYW4tcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvZGlhbG9ncy9jb21wb25lbnRzL3NjYW4tcHJvZmlsZS9zY2FuLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxZQUFZLEVBSVosdUJBQXVCLEVBQ3ZCLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFZeEUsTUFBTSxPQUFPLG9CQUNYLFNBQVEsYUFBYTtJQU9yQixlQUFlLENBQUMsS0FBVTtRQUN4QixzQkFBc0I7UUFDdEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QseUNBQXlDO1FBRXpDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDckIsMEJBQTBCO1lBQzFCLG9DQUFvQztTQUNyQztJQUNILENBQUM7SUFFRCxZQUNTLE9BQTRCLEVBQzVCLGNBQXdDLEVBQ3ZDLFlBQTBCLEVBQzNCLFNBQTZDLEVBQzVDLFFBQWtCO1FBRTFCLEtBQUssRUFBRSxDQUFDO1FBTkQsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzVDLGFBQVEsR0FBUixRQUFRLENBQVU7UUF0Qm5CLFNBQUksR0FBRyxTQUFTLENBQUM7UUFFMUIsZUFBVSxHQUFHLEtBQUssQ0FBQztJQXVCbkIsQ0FBQztJQUNELGVBQWU7UUFDYixtQ0FBbUM7SUFDckMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssWUFBWTtnQkFDZixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuQztnQkFDRCxNQUFNO1lBRVIsS0FBSyxZQUFZO2dCQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLE1BQU07WUFDUixLQUFLLGVBQWU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssa0JBQWtCO2dCQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2hFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7aUhBOURVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDBLQzFCakMsZ3NCQTRCQTsyRkRGYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07OE5BTXRDLElBQUk7c0JBQVosS0FBSztnQkFJTixlQUFlO3NCQURkLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dzQ29yZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vZGlhbG9ncy9kaWFsb2dzLmNvcmUucHJvdmlkZXInO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBTY2FuUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvc2Nhbi5wcm92aWRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zY2FuLXByb2ZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nhbi1wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nhbi1wcm9maWxlLmNvbXBvbmVudC5zY3NzJywgJy4uLy4uL3Njc3MvZGlhbG9nLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjYW5Qcm9maWxlQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSB0eXBlID0gJ2Rlc2t0b3AnO1xuXG4gIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2htb3ZlJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlVG91Y2hNb3ZlKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgaWYgKGV2ZW50LnRvdWNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coZG9jdW1lbnQuYm9keS5zdHlsZS56b29tKTtcblxuICAgIGlmIChldmVudC5zY2FsZSAhPT0gMSkge1xuICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIC8vIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dzOiBEaWFsb2dzQ29yZVByb3ZpZGVyLFxuICAgIHB1YmxpYyBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyLFxuICAgIHByaXZhdGUgc2NhblByb3ZpZGVyOiBTY2FuUHJvdmlkZXIsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNjYW5Qcm9maWxlQ29tcG9uZW50PixcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNhbWVyYVByb3ZpZGVyKVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX19kZXN0cm95KCk7XG4gICAgY29uc29sZS5sb2coJ0RFUycpO1xuICB9XG5cbiAgYWN0aW9ucyhldmVudDogYW55KSB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdzY2FuRmluaXNoJzpcbiAgICAgICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5oaWRlUmVzdWx0cykge1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZShldmVudC5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbWFudWFsTW9kZSc6XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSh7IG1hbnVhbDogdHJ1ZSB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzY2FuRGF0YUNsb3NlJzpcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKGV2ZW50LmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3R1cm5Eb2N1bWVudE92ZXInOlxuICAgICAgICB0aGlzLl9fc3Vicyh0aGlzLmRpYWxvZ3MudHVybkRvY3VtZW50KGV2ZW50LnNpZGUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICA8ZGl2IGNsYXNzPVwidGl0bGVcIiA+XG4gICAge3sgXCJzY2FuZG9jLnRpdGxlXCIgfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG5cbiAgPHNwYW4gc3R5bGU9XCJmbGV4OiAxXCI+PC9zcGFuPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaHwgYXN5bmNcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDBweCAxNnB4XCI+XG4gICAgICA8bmd4LXNjYW4tY2FtZXJhLXN3aXRjaD48L25neC1zY2FuLWNhbWVyYS1zd2l0Y2g+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAnZGVza3RvcCdcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yXCI+PC9kaXY+XG5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9oZWFkZXI+XG5cbjxuZ3gtc2NhblxuICAoYWN0aW9ucyk9XCJhY3Rpb25zKCRldmVudClcIlxuICBbc2hvd0RpYWxvZ109XCJzaG93RGlhbG9nXCJcbiAgW2RpYWxvZ3NdPVwiZGlhbG9nc1wiXG4+PC9uZ3gtc2Nhbj5cbiJdfQ==