valtech-components 2.0.359 → 2.0.361
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/atoms/image/image.component.mjs +344 -12
- package/esm2022/lib/components/atoms/image/types.mjs +1 -1
- package/esm2022/lib/services/lang-provider/content.mjs +26 -1
- package/fesm2022/valtech-components.mjs +367 -12
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/image/image.component.d.ts +31 -0
- package/lib/components/atoms/image/types.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Component, HostListener, inject, Input } from '@angular/core';
|
|
3
|
+
import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonModal, IonTitle, IonToolbar, } from '@ionic/angular/standalone';
|
|
4
|
+
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
6
|
import * as i1 from "@angular/common";
|
|
5
7
|
/**
|
|
@@ -8,7 +10,16 @@ import * as i1 from "@angular/common";
|
|
|
8
10
|
* Displays an image with various display options (bordered, shaded, dark, etc).
|
|
9
11
|
* Now includes a container wrapper for better flexbox support and alignment options.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
13
|
+
* NEW: Optional preview mode with full-screen zoom capabilities:
|
|
14
|
+
* - Click to open full-screen preview (when previewMode is enabled)
|
|
15
|
+
* - Pinch-to-zoom on mobile devices
|
|
16
|
+
* - Mouse wheel zoom on desktop
|
|
17
|
+
* - Pan/drag to navigate zoomed images
|
|
18
|
+
* - Zoom controls with buttons
|
|
19
|
+
* - Keyboard shortcuts (Esc to close, +/- to zoom, 0 to reset)
|
|
20
|
+
* - Touch-friendly interface with gesture support
|
|
21
|
+
*
|
|
22
|
+
* @example Basic usage:
|
|
12
23
|
* <val-image [props]="{
|
|
13
24
|
* src: 'url',
|
|
14
25
|
* alt: 'desc',
|
|
@@ -19,11 +30,41 @@ import * as i1 from "@angular/common";
|
|
|
19
30
|
* caption: 'Image description'
|
|
20
31
|
* }"></val-image>
|
|
21
32
|
*
|
|
22
|
-
* @
|
|
33
|
+
* @example With preview mode:
|
|
34
|
+
* <val-image [props]="{
|
|
35
|
+
* src: 'url',
|
|
36
|
+
* alt: 'desc',
|
|
37
|
+
* previewMode: true,
|
|
38
|
+
* bordered: true,
|
|
39
|
+
* alignment: 'center'
|
|
40
|
+
* }"></val-image>
|
|
41
|
+
*
|
|
42
|
+
* @input props: ImageMetadata - Configuration for the image (src, alt, size, mode, alignment, caption, previewMode, etc.)
|
|
23
43
|
*/
|
|
24
44
|
export class ImageComponent {
|
|
25
45
|
constructor() {
|
|
26
46
|
this.available = true;
|
|
47
|
+
// Preview mode properties
|
|
48
|
+
this.isPreviewOpen = false;
|
|
49
|
+
this.zoomLevel = 1;
|
|
50
|
+
this.minZoom = 0.5;
|
|
51
|
+
this.maxZoom = 5;
|
|
52
|
+
this.panX = 0;
|
|
53
|
+
this.panY = 0;
|
|
54
|
+
// Touch and mouse interaction properties
|
|
55
|
+
this.isDragging = false;
|
|
56
|
+
this.lastPanX = 0;
|
|
57
|
+
this.lastPanY = 0;
|
|
58
|
+
this.startX = 0;
|
|
59
|
+
this.startY = 0;
|
|
60
|
+
// Touch gesture properties
|
|
61
|
+
this.initialDistance = 0;
|
|
62
|
+
this.initialZoom = 1;
|
|
63
|
+
this.touches = [];
|
|
64
|
+
// Lang service
|
|
65
|
+
this.langService = inject(LangService);
|
|
66
|
+
// Math for template
|
|
67
|
+
this.Math = Math;
|
|
27
68
|
}
|
|
28
69
|
ngOnInit() {
|
|
29
70
|
// Set default values
|
|
@@ -42,8 +83,142 @@ export class ImageComponent {
|
|
|
42
83
|
this.available = true;
|
|
43
84
|
}, 100);
|
|
44
85
|
}
|
|
86
|
+
// Preview mode methods
|
|
87
|
+
openPreview() {
|
|
88
|
+
if (!this.props.previewMode)
|
|
89
|
+
return;
|
|
90
|
+
this.isPreviewOpen = true;
|
|
91
|
+
this.resetZoom();
|
|
92
|
+
}
|
|
93
|
+
closePreview() {
|
|
94
|
+
this.isPreviewOpen = false;
|
|
95
|
+
}
|
|
96
|
+
// Zoom methods
|
|
97
|
+
zoomIn() {
|
|
98
|
+
if (this.zoomLevel < this.maxZoom) {
|
|
99
|
+
this.zoomLevel = Math.min(this.zoomLevel * 1.2, this.maxZoom);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
zoomOut() {
|
|
103
|
+
if (this.zoomLevel > this.minZoom) {
|
|
104
|
+
this.zoomLevel = Math.max(this.zoomLevel / 1.2, this.minZoom);
|
|
105
|
+
// Reset pan if zoomed out to 1x or less
|
|
106
|
+
if (this.zoomLevel <= 1) {
|
|
107
|
+
this.panX = 0;
|
|
108
|
+
this.panY = 0;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
resetZoom() {
|
|
113
|
+
this.zoomLevel = 1;
|
|
114
|
+
this.panX = 0;
|
|
115
|
+
this.panY = 0;
|
|
116
|
+
}
|
|
117
|
+
// Mouse events
|
|
118
|
+
onMouseDown(event) {
|
|
119
|
+
if (this.zoomLevel <= 1)
|
|
120
|
+
return;
|
|
121
|
+
this.isDragging = true;
|
|
122
|
+
this.startX = event.clientX - this.panX;
|
|
123
|
+
this.startY = event.clientY - this.panY;
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
}
|
|
126
|
+
onMouseMove(event) {
|
|
127
|
+
if (!this.isDragging || this.zoomLevel <= 1)
|
|
128
|
+
return;
|
|
129
|
+
this.panX = event.clientX - this.startX;
|
|
130
|
+
this.panY = event.clientY - this.startY;
|
|
131
|
+
event.preventDefault();
|
|
132
|
+
}
|
|
133
|
+
onMouseUp(event) {
|
|
134
|
+
this.isDragging = false;
|
|
135
|
+
}
|
|
136
|
+
// Touch events for mobile
|
|
137
|
+
onTouchStart(event) {
|
|
138
|
+
event.preventDefault();
|
|
139
|
+
this.touches = Array.from(event.touches);
|
|
140
|
+
if (this.touches.length === 1) {
|
|
141
|
+
// Single touch - start dragging
|
|
142
|
+
if (this.zoomLevel > 1) {
|
|
143
|
+
this.isDragging = true;
|
|
144
|
+
this.startX = this.touches[0].clientX - this.panX;
|
|
145
|
+
this.startY = this.touches[0].clientY - this.panY;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (this.touches.length === 2) {
|
|
149
|
+
// Two touches - start pinch zoom
|
|
150
|
+
this.isDragging = false;
|
|
151
|
+
this.initialDistance = this.getDistance(this.touches[0], this.touches[1]);
|
|
152
|
+
this.initialZoom = this.zoomLevel;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
onTouchMove(event) {
|
|
156
|
+
event.preventDefault();
|
|
157
|
+
this.touches = Array.from(event.touches);
|
|
158
|
+
if (this.touches.length === 1 && this.isDragging && this.zoomLevel > 1) {
|
|
159
|
+
// Single touch - drag
|
|
160
|
+
this.panX = this.touches[0].clientX - this.startX;
|
|
161
|
+
this.panY = this.touches[0].clientY - this.startY;
|
|
162
|
+
}
|
|
163
|
+
else if (this.touches.length === 2) {
|
|
164
|
+
// Two touches - pinch zoom
|
|
165
|
+
const currentDistance = this.getDistance(this.touches[0], this.touches[1]);
|
|
166
|
+
const scale = currentDistance / this.initialDistance;
|
|
167
|
+
this.zoomLevel = Math.min(Math.max(this.initialZoom * scale, this.minZoom), this.maxZoom);
|
|
168
|
+
// Reset pan if zoomed out to 1x or less
|
|
169
|
+
if (this.zoomLevel <= 1) {
|
|
170
|
+
this.panX = 0;
|
|
171
|
+
this.panY = 0;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
onTouchEnd(event) {
|
|
176
|
+
this.isDragging = false;
|
|
177
|
+
this.touches = Array.from(event.touches);
|
|
178
|
+
}
|
|
179
|
+
// Mouse wheel zoom
|
|
180
|
+
onWheel(event) {
|
|
181
|
+
event.preventDefault();
|
|
182
|
+
const delta = event.deltaY > 0 ? -1 : 1;
|
|
183
|
+
const zoomFactor = 1 + delta * 0.1;
|
|
184
|
+
this.zoomLevel = Math.min(Math.max(this.zoomLevel * zoomFactor, this.minZoom), this.maxZoom);
|
|
185
|
+
// Reset pan if zoomed out to 1x or less
|
|
186
|
+
if (this.zoomLevel <= 1) {
|
|
187
|
+
this.panX = 0;
|
|
188
|
+
this.panY = 0;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Helper methods
|
|
192
|
+
getDistance(touch1, touch2) {
|
|
193
|
+
const dx = touch1.clientX - touch2.clientX;
|
|
194
|
+
const dy = touch1.clientY - touch2.clientY;
|
|
195
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
196
|
+
}
|
|
197
|
+
// Keyboard shortcuts
|
|
198
|
+
onKeyDown(event) {
|
|
199
|
+
if (!this.isPreviewOpen)
|
|
200
|
+
return;
|
|
201
|
+
switch (event.key) {
|
|
202
|
+
case 'Escape':
|
|
203
|
+
this.closePreview();
|
|
204
|
+
break;
|
|
205
|
+
case '+':
|
|
206
|
+
case '=':
|
|
207
|
+
event.preventDefault();
|
|
208
|
+
this.zoomIn();
|
|
209
|
+
break;
|
|
210
|
+
case '-':
|
|
211
|
+
event.preventDefault();
|
|
212
|
+
this.zoomOut();
|
|
213
|
+
break;
|
|
214
|
+
case '0':
|
|
215
|
+
event.preventDefault();
|
|
216
|
+
this.resetZoom();
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
45
220
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ImageComponent, isStandalone: true, selector: "val-image", inputs: { props: "props" }, ngImport: i0, template: `
|
|
221
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ImageComponent, isStandalone: true, selector: "val-image", inputs: { props: "props" }, host: { listeners: { "document:keydown": "onKeyDown($event)" } }, ngImport: i0, template: `
|
|
47
222
|
<figure
|
|
48
223
|
class="val-image-container"
|
|
49
224
|
[class]="props.containerClass"
|
|
@@ -60,7 +235,11 @@ export class ImageComponent {
|
|
|
60
235
|
@if (props.src.includes('--')) {
|
|
61
236
|
<img
|
|
62
237
|
class="val-image"
|
|
63
|
-
[ngClass]="[
|
|
238
|
+
[ngClass]="[
|
|
239
|
+
props.mode,
|
|
240
|
+
!props.width ? props.size : '',
|
|
241
|
+
props.previewMode ? 'val-image--preview-enabled' : '',
|
|
242
|
+
]"
|
|
64
243
|
[ngStyle]="{
|
|
65
244
|
content: 'var(' + props.src + ')',
|
|
66
245
|
}"
|
|
@@ -73,11 +252,16 @@ export class ImageComponent {
|
|
|
73
252
|
[style.width.rem]="props.width"
|
|
74
253
|
[style.max-width.rem]="props.width"
|
|
75
254
|
[style.height.px]="props.height"
|
|
255
|
+
(click)="props.previewMode ? openPreview() : null"
|
|
76
256
|
/>
|
|
77
257
|
} @else {
|
|
78
258
|
<img
|
|
79
259
|
class="val-image"
|
|
80
|
-
[ngClass]="[
|
|
260
|
+
[ngClass]="[
|
|
261
|
+
props.mode,
|
|
262
|
+
!props.width ? props.size : '',
|
|
263
|
+
props.previewMode ? 'val-image--preview-enabled' : '',
|
|
264
|
+
]"
|
|
81
265
|
[class.bordered]="props.bordered"
|
|
82
266
|
[class.shaded]="props.shaded"
|
|
83
267
|
[class.dark]="props.dark"
|
|
@@ -88,6 +272,7 @@ export class ImageComponent {
|
|
|
88
272
|
[style.width.rem]="props.width"
|
|
89
273
|
[style.max-width.rem]="props.width"
|
|
90
274
|
[style.height.px]="props.height"
|
|
275
|
+
(click)="props.previewMode ? openPreview() : null"
|
|
91
276
|
/>
|
|
92
277
|
}
|
|
93
278
|
</div>
|
|
@@ -105,11 +290,78 @@ export class ImageComponent {
|
|
|
105
290
|
</figcaption>
|
|
106
291
|
}
|
|
107
292
|
</figure>
|
|
108
|
-
|
|
293
|
+
|
|
294
|
+
<!-- Modal de previsualización con ion-modal -->
|
|
295
|
+
<ion-modal [isOpen]="isPreviewOpen" (didDismiss)="closePreview()">
|
|
296
|
+
<ng-template>
|
|
297
|
+
<ion-header>
|
|
298
|
+
<ion-toolbar>
|
|
299
|
+
<ion-title>{{ props.alt || 'Previsualización de imagen' }}</ion-title>
|
|
300
|
+
<ion-buttons slot="end">
|
|
301
|
+
<ion-button (click)="closePreview()" fill="clear">
|
|
302
|
+
<ion-icon name="close"></ion-icon>
|
|
303
|
+
</ion-button>
|
|
304
|
+
</ion-buttons>
|
|
305
|
+
</ion-toolbar>
|
|
306
|
+
</ion-header>
|
|
307
|
+
|
|
308
|
+
<ion-content>
|
|
309
|
+
<!-- Controles de zoom -->
|
|
310
|
+
<div class="val-image-preview-controls">
|
|
311
|
+
<ion-button
|
|
312
|
+
(click)="zoomOut(); $event.stopPropagation()"
|
|
313
|
+
[disabled]="zoomLevel <= minZoom"
|
|
314
|
+
fill="clear"
|
|
315
|
+
size="large"
|
|
316
|
+
>
|
|
317
|
+
<ion-icon name="remove"></ion-icon>
|
|
318
|
+
</ion-button>
|
|
319
|
+
|
|
320
|
+
<span class="val-image-preview-zoom-level">{{ Math.round(zoomLevel * 100) }}%</span>
|
|
321
|
+
|
|
322
|
+
<ion-button
|
|
323
|
+
(click)="zoomIn(); $event.stopPropagation()"
|
|
324
|
+
[disabled]="zoomLevel >= maxZoom"
|
|
325
|
+
fill="clear"
|
|
326
|
+
size="large"
|
|
327
|
+
>
|
|
328
|
+
<ion-icon name="add"></ion-icon>
|
|
329
|
+
</ion-button>
|
|
330
|
+
</div>
|
|
331
|
+
|
|
332
|
+
<!-- Imagen ampliada -->
|
|
333
|
+
<div
|
|
334
|
+
class="val-image-preview-viewport"
|
|
335
|
+
(touchstart)="onTouchStart($event)"
|
|
336
|
+
(touchmove)="onTouchMove($event)"
|
|
337
|
+
(touchend)="onTouchEnd($event)"
|
|
338
|
+
(wheel)="onWheel($event)"
|
|
339
|
+
(mousedown)="onMouseDown($event)"
|
|
340
|
+
(mousemove)="onMouseMove($event)"
|
|
341
|
+
(mouseup)="onMouseUp($event)"
|
|
342
|
+
(mouseleave)="onMouseUp($event)"
|
|
343
|
+
>
|
|
344
|
+
<img
|
|
345
|
+
#previewImage
|
|
346
|
+
class="val-image-preview-img"
|
|
347
|
+
[src]="props.src.includes('--') ? null : props.src"
|
|
348
|
+
[ngStyle]="{
|
|
349
|
+
content: props.src.includes('--') ? 'var(' + props.src + ')' : null,
|
|
350
|
+
transform: 'scale(' + zoomLevel + ') translate(' + panX + 'px, ' + panY + 'px)',
|
|
351
|
+
cursor: isDragging ? 'grabbing' : zoomLevel > 1 ? 'grab' : 'default',
|
|
352
|
+
}"
|
|
353
|
+
[alt]="props.alt"
|
|
354
|
+
draggable="false"
|
|
355
|
+
/>
|
|
356
|
+
</div>
|
|
357
|
+
</ion-content>
|
|
358
|
+
</ng-template>
|
|
359
|
+
</ion-modal>
|
|
360
|
+
`, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.center{margin:0 auto}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}@media (max-width: 768px){.val-image .val-image-wrapper.small{width:40%}.val-image .val-image-wrapper.medium{width:60%}.val-image .val-image-wrapper.large{width:80%}.val-image .val-image-wrapper.xlarge{width:100%}}.val-image.small{width:30%}.val-image.medium{width:50%}.val-image.large{width:70%}.val-image.xlarge{width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}.val-image--preview-enabled{cursor:pointer;transition:opacity .2s ease,transform .2s ease}.val-image--preview-enabled:hover{opacity:.9;transform:scale(1.02)}ion-modal ion-content{position:relative;--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0}.val-image-preview-controls{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:1000;display:flex;align-items:center;gap:15px;background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.9);padding:10px 20px;border-radius:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 20px #00000026}.val-image-preview-zoom-level{font-size:14px;font-weight:600;min-width:50px;text-align:center;color:var(--ion-text-color)}.val-image-preview-viewport{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center;touch-action:none}.val-image-preview-img{max-width:90vw;max-height:90vh;object-fit:contain;transition:transform .1s ease-out;transform-origin:center center;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}@media (max-width: 768px){.val-image-preview-controls{bottom:10px;padding:8px 16px;gap:10px}.val-image-preview-zoom-level{font-size:12px;min-width:40px}.val-image-preview-img{max-width:95vw;max-height:85vh}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }] }); }
|
|
109
361
|
}
|
|
110
362
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, decorators: [{
|
|
111
363
|
type: Component,
|
|
112
|
-
args: [{ selector: 'val-image', standalone: true, imports: [CommonModule], template: `
|
|
364
|
+
args: [{ selector: 'val-image', standalone: true, imports: [CommonModule, IonModal, IonHeader, IonToolbar, IonTitle, IonContent, IonButton, IonIcon, IonButtons], template: `
|
|
113
365
|
<figure
|
|
114
366
|
class="val-image-container"
|
|
115
367
|
[class]="props.containerClass"
|
|
@@ -126,7 +378,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
126
378
|
@if (props.src.includes('--')) {
|
|
127
379
|
<img
|
|
128
380
|
class="val-image"
|
|
129
|
-
[ngClass]="[
|
|
381
|
+
[ngClass]="[
|
|
382
|
+
props.mode,
|
|
383
|
+
!props.width ? props.size : '',
|
|
384
|
+
props.previewMode ? 'val-image--preview-enabled' : '',
|
|
385
|
+
]"
|
|
130
386
|
[ngStyle]="{
|
|
131
387
|
content: 'var(' + props.src + ')',
|
|
132
388
|
}"
|
|
@@ -139,11 +395,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
139
395
|
[style.width.rem]="props.width"
|
|
140
396
|
[style.max-width.rem]="props.width"
|
|
141
397
|
[style.height.px]="props.height"
|
|
398
|
+
(click)="props.previewMode ? openPreview() : null"
|
|
142
399
|
/>
|
|
143
400
|
} @else {
|
|
144
401
|
<img
|
|
145
402
|
class="val-image"
|
|
146
|
-
[ngClass]="[
|
|
403
|
+
[ngClass]="[
|
|
404
|
+
props.mode,
|
|
405
|
+
!props.width ? props.size : '',
|
|
406
|
+
props.previewMode ? 'val-image--preview-enabled' : '',
|
|
407
|
+
]"
|
|
147
408
|
[class.bordered]="props.bordered"
|
|
148
409
|
[class.shaded]="props.shaded"
|
|
149
410
|
[class.dark]="props.dark"
|
|
@@ -154,6 +415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
154
415
|
[style.width.rem]="props.width"
|
|
155
416
|
[style.max-width.rem]="props.width"
|
|
156
417
|
[style.height.px]="props.height"
|
|
418
|
+
(click)="props.previewMode ? openPreview() : null"
|
|
157
419
|
/>
|
|
158
420
|
}
|
|
159
421
|
</div>
|
|
@@ -171,8 +433,78 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
171
433
|
</figcaption>
|
|
172
434
|
}
|
|
173
435
|
</figure>
|
|
174
|
-
|
|
436
|
+
|
|
437
|
+
<!-- Modal de previsualización con ion-modal -->
|
|
438
|
+
<ion-modal [isOpen]="isPreviewOpen" (didDismiss)="closePreview()">
|
|
439
|
+
<ng-template>
|
|
440
|
+
<ion-header>
|
|
441
|
+
<ion-toolbar>
|
|
442
|
+
<ion-title>{{ props.alt || 'Previsualización de imagen' }}</ion-title>
|
|
443
|
+
<ion-buttons slot="end">
|
|
444
|
+
<ion-button (click)="closePreview()" fill="clear">
|
|
445
|
+
<ion-icon name="close"></ion-icon>
|
|
446
|
+
</ion-button>
|
|
447
|
+
</ion-buttons>
|
|
448
|
+
</ion-toolbar>
|
|
449
|
+
</ion-header>
|
|
450
|
+
|
|
451
|
+
<ion-content>
|
|
452
|
+
<!-- Controles de zoom -->
|
|
453
|
+
<div class="val-image-preview-controls">
|
|
454
|
+
<ion-button
|
|
455
|
+
(click)="zoomOut(); $event.stopPropagation()"
|
|
456
|
+
[disabled]="zoomLevel <= minZoom"
|
|
457
|
+
fill="clear"
|
|
458
|
+
size="large"
|
|
459
|
+
>
|
|
460
|
+
<ion-icon name="remove"></ion-icon>
|
|
461
|
+
</ion-button>
|
|
462
|
+
|
|
463
|
+
<span class="val-image-preview-zoom-level">{{ Math.round(zoomLevel * 100) }}%</span>
|
|
464
|
+
|
|
465
|
+
<ion-button
|
|
466
|
+
(click)="zoomIn(); $event.stopPropagation()"
|
|
467
|
+
[disabled]="zoomLevel >= maxZoom"
|
|
468
|
+
fill="clear"
|
|
469
|
+
size="large"
|
|
470
|
+
>
|
|
471
|
+
<ion-icon name="add"></ion-icon>
|
|
472
|
+
</ion-button>
|
|
473
|
+
</div>
|
|
474
|
+
|
|
475
|
+
<!-- Imagen ampliada -->
|
|
476
|
+
<div
|
|
477
|
+
class="val-image-preview-viewport"
|
|
478
|
+
(touchstart)="onTouchStart($event)"
|
|
479
|
+
(touchmove)="onTouchMove($event)"
|
|
480
|
+
(touchend)="onTouchEnd($event)"
|
|
481
|
+
(wheel)="onWheel($event)"
|
|
482
|
+
(mousedown)="onMouseDown($event)"
|
|
483
|
+
(mousemove)="onMouseMove($event)"
|
|
484
|
+
(mouseup)="onMouseUp($event)"
|
|
485
|
+
(mouseleave)="onMouseUp($event)"
|
|
486
|
+
>
|
|
487
|
+
<img
|
|
488
|
+
#previewImage
|
|
489
|
+
class="val-image-preview-img"
|
|
490
|
+
[src]="props.src.includes('--') ? null : props.src"
|
|
491
|
+
[ngStyle]="{
|
|
492
|
+
content: props.src.includes('--') ? 'var(' + props.src + ')' : null,
|
|
493
|
+
transform: 'scale(' + zoomLevel + ') translate(' + panX + 'px, ' + panY + 'px)',
|
|
494
|
+
cursor: isDragging ? 'grabbing' : zoomLevel > 1 ? 'grab' : 'default',
|
|
495
|
+
}"
|
|
496
|
+
[alt]="props.alt"
|
|
497
|
+
draggable="false"
|
|
498
|
+
/>
|
|
499
|
+
</div>
|
|
500
|
+
</ion-content>
|
|
501
|
+
</ng-template>
|
|
502
|
+
</ion-modal>
|
|
503
|
+
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.center{margin:0 auto}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}@media (max-width: 768px){.val-image .val-image-wrapper.small{width:40%}.val-image .val-image-wrapper.medium{width:60%}.val-image .val-image-wrapper.large{width:80%}.val-image .val-image-wrapper.xlarge{width:100%}}.val-image.small{width:30%}.val-image.medium{width:50%}.val-image.large{width:70%}.val-image.xlarge{width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}.val-image--preview-enabled{cursor:pointer;transition:opacity .2s ease,transform .2s ease}.val-image--preview-enabled:hover{opacity:.9;transform:scale(1.02)}ion-modal ion-content{position:relative;--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0}.val-image-preview-controls{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:1000;display:flex;align-items:center;gap:15px;background:rgba(var(--ion-background-color-rgb, 255, 255, 255),.9);padding:10px 20px;border-radius:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 20px #00000026}.val-image-preview-zoom-level{font-size:14px;font-weight:600;min-width:50px;text-align:center;color:var(--ion-text-color)}.val-image-preview-viewport{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center;touch-action:none}.val-image-preview-img{max-width:90vw;max-height:90vh;object-fit:contain;transition:transform .1s ease-out;transform-origin:center center;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}@media (max-width: 768px){.val-image-preview-controls{bottom:10px;padding:8px 16px;gap:10px}.val-image-preview-zoom-level{font-size:12px;min-width:40px}.val-image-preview-img{max-width:95vw;max-height:85vh}}\n"] }]
|
|
175
504
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
176
505
|
type: Input
|
|
506
|
+
}], onKeyDown: [{
|
|
507
|
+
type: HostListener,
|
|
508
|
+
args: ['document:keydown', ['$event']]
|
|
177
509
|
}] } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUF3RXpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQU16QjtRQUZBLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFFWCxDQUFDO0lBRWhCLFFBQVE7UUFDTixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0F6QlUsY0FBYzttR0FBZCxjQUFjLGlHQXBGZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RFQsdXpJQS9EUyxZQUFZOzs0RkFxRlgsY0FBYztrQkF4RjFCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThEVDt3REF3QkQsS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtaW1hZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmlndXJlXG4gICAgICBjbGFzcz1cInZhbC1pbWFnZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNvbnRhaW5lckNsYXNzXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWxlZnQnOiBwcm9wcy5hbGlnbm1lbnQgPT09ICdsZWZ0JyxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWNlbnRlcic6IHByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcicgfHwgIXByb3BzLmFsaWdubWVudCxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLXJpZ2h0JzogcHJvcHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgICAgfVwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIGRpc3BsYXk6IHByb3BzLmZsZXggPyAnZmxleCcgOiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtaW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICBAaWYgKHByb3BzLnNyYy5pbmNsdWRlcygnLS0nKSkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltwcm9wcy5tb2RlLCAhcHJvcHMud2lkdGggPyBwcm9wcy5zaXplIDogJyddXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogJ3ZhcignICsgcHJvcHMuc3JjICsgJyknLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgICAgICAgW2NsYXNzLnNoYWRlZF09XCJwcm9wcy5zaGFkZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmRhcmtdPVwicHJvcHMuZGFya1wiXG4gICAgICAgICAgICBbY2xhc3MubGltaXRlZF09XCJwcm9wcy5saW1pdGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5jZW50ZXJdPVwicHJvcHMuYWxpZ25tZW50ID09PSAnY2VudGVyJ1wiXG4gICAgICAgICAgICBbYWx0XT1cInByb3BzLmFsdFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzcz1cInZhbC1pbWFnZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJbcHJvcHMubW9kZSwgIXByb3BzLndpZHRoID8gcHJvcHMuc2l6ZSA6ICcnXVwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgICAgICAgW2NsYXNzLnNoYWRlZF09XCJwcm9wcy5zaGFkZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmRhcmtdPVwicHJvcHMuZGFya1wiXG4gICAgICAgICAgICBbY2xhc3MubGltaXRlZF09XCJwcm9wcy5saW1pdGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5jZW50ZXJdPVwicHJvcHMuYWxpZ25tZW50ID09PSAnY2VudGVyJ1wiXG4gICAgICAgICAgICBbc3JjXT1cInByb3BzLnNyY1wiXG4gICAgICAgICAgICBbYWx0XT1cInByb3BzLmFsdFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChwcm9wcy5jYXB0aW9uKSB7XG4gICAgICAgIDxmaWdjYXB0aW9uXG4gICAgICAgICAgY2xhc3M9XCJ2YWwtaW1hZ2UtY2FwdGlvblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3ZhbC1pbWFnZS1jYXB0aW9uLS1zbWFsbCc6IHByb3BzLmNhcHRpb25TaXplID09PSAnc21hbGwnLFxuICAgICAgICAgICAgJ3ZhbC1pbWFnZS1jYXB0aW9uLS1tZWRpdW0nOiBwcm9wcy5jYXB0aW9uU2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLmNhcHRpb25TaXplLFxuICAgICAgICAgICAgJ3ZhbC1pbWFnZS1jYXB0aW9uLS1sYXJnZSc6IHByb3BzLmNhcHRpb25TaXplID09PSAnbGFyZ2UnLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuY2FwdGlvbiB9fVxuICAgICAgICA8L2ZpZ2NhcHRpb24+XG4gICAgICB9XG4gICAgPC9maWd1cmU+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtaW1hZ2VcbiAqXG4gKiBEaXNwbGF5cyBhbiBpbWFnZSB3aXRoIHZhcmlvdXMgZGlzcGxheSBvcHRpb25zIChib3JkZXJlZCwgc2hhZGVkLCBkYXJrLCBldGMpLlxuICogTm93IGluY2x1ZGVzIGEgY29udGFpbmVyIHdyYXBwZXIgZm9yIGJldHRlciBmbGV4Ym94IHN1cHBvcnQgYW5kIGFsaWdubWVudCBvcHRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWltYWdlIFtwcm9wc109XCJ7XG4gKiAgIHNyYzogJ3VybCcsXG4gKiAgIGFsdDogJ2Rlc2MnLFxuICogICB3aWR0aDogMTAwLFxuICogICBoZWlnaHQ6IDEwMCxcbiAqICAgYm9yZGVyZWQ6IHRydWUsXG4gKiAgIGFsaWdubWVudDogJ2NlbnRlcicsXG4gKiAgIGNhcHRpb246ICdJbWFnZSBkZXNjcmlwdGlvbidcbiAqIH1cIj48L3ZhbC1pbWFnZT5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IEltYWdlTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW1hZ2UgKHNyYywgYWx0LCBzaXplLCBtb2RlLCBhbGlnbm1lbnQsIGNhcHRpb24sIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByb3BzITogSW1hZ2VNZXRhZGF0YTtcblxuICBhdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXNcbiAgICBpZiAoIXRoaXMucHJvcHMuYWxpZ25tZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFsaWdubWVudCA9ICdjZW50ZXInO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucHJvcHMuY2FwdGlvblNpemUpIHtcbiAgICAgIHRoaXMucHJvcHMuY2FwdGlvblNpemUgPSAnbWVkaXVtJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLm1vZGUpIHtcbiAgICAgIHRoaXMucHJvcHMubW9kZSA9ICdib3gnO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRvVmlzaWJsZSgpIHtcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmF2YWlsYWJsZSA9IHRydWU7XG4gICAgfSwgMTAwKTtcbiAgfVxufVxuIl19
|
|
510
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsRUFDUixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7OztBQXFKcEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBZ0N6QjtRQTVCQSxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRTFCLDBCQUEwQjtRQUMxQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLFlBQU8sR0FBVyxHQUFHLENBQUM7UUFDdEIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLFNBQUksR0FBVyxDQUFDLENBQUM7UUFFakIseUNBQXlDO1FBQ3pDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUVuQiwyQkFBMkI7UUFDM0Isb0JB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMklULGluTEE1SVMsWUFBWSxrTkFBRSxRQUFRLHNEQUFFLFNBQVMsb0dBQUUsVUFBVSxtRkFBRSxRQUFRLGlGQUFFLFVBQVUsa0pBQUUsU0FBUyxvUEFBRSxPQUFPLDJKQUFFLFVBQVU7OzRGQW9MbEcsY0FBYztrQkF2TDFCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLFlBQ3BHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMklUO3dEQTBDRCxLQUFLO3NCQURKLEtBQUs7Z0JBcUxOLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uSWNvbixcbiAgSW9uTW9kYWwsXG4gIElvblRpdGxlLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtaW1hZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25Nb2RhbCwgSW9uSGVhZGVyLCBJb25Ub29sYmFyLCBJb25UaXRsZSwgSW9uQ29udGVudCwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25CdXR0b25zXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmlndXJlXG4gICAgICBjbGFzcz1cInZhbC1pbWFnZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNvbnRhaW5lckNsYXNzXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWxlZnQnOiBwcm9wcy5hbGlnbm1lbnQgPT09ICdsZWZ0JyxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWNlbnRlcic6IHByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcicgfHwgIXByb3BzLmFsaWdubWVudCxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLXJpZ2h0JzogcHJvcHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgICAgfVwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIGRpc3BsYXk6IHByb3BzLmZsZXggPyAnZmxleCcgOiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtaW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICBAaWYgKHByb3BzLnNyYy5pbmNsdWRlcygnLS0nKSkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICAgcHJvcHMubW9kZSxcbiAgICAgICAgICAgICAgIXByb3BzLndpZHRoID8gcHJvcHMuc2l6ZSA6ICcnLFxuICAgICAgICAgICAgICBwcm9wcy5wcmV2aWV3TW9kZSA/ICd2YWwtaW1hZ2UtLXByZXZpZXctZW5hYmxlZCcgOiAnJyxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBjb250ZW50OiAndmFyKCcgKyBwcm9wcy5zcmMgKyAnKScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXJlZF09XCJwcm9wcy5ib3JkZXJlZFwiXG4gICAgICAgICAgICBbY2xhc3Muc2hhZGVkXT1cInByb3BzLnNoYWRlZFwiXG4gICAgICAgICAgICBbY2xhc3MuZGFya109XCJwcm9wcy5kYXJrXCJcbiAgICAgICAgICAgIFtjbGFzcy5saW1pdGVkXT1cInByb3BzLmxpbWl0ZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmNlbnRlcl09XCJwcm9wcy5hbGlnbm1lbnQgPT09ICdjZW50ZXInXCJcbiAgICAgICAgICAgIFthbHRdPVwicHJvcHMuYWx0XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5yZW1dPVwicHJvcHMud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5yZW1dPVwicHJvcHMud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJwcm9wcy5oZWlnaHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByb3BzLnByZXZpZXdNb2RlID8gb3BlblByZXZpZXcoKSA6IG51bGxcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICAgcHJvcHMubW9kZSxcbiAgICAgICAgICAgICAgIXByb3BzLndpZHRoID8gcHJvcHMuc2l6ZSA6ICcnLFxuICAgICAgICAgICAgICBwcm9wcy5wcmV2aWV3TW9kZSA/ICd2YWwtaW1hZ2UtLXByZXZpZXctZW5hYmxlZCcgOiAnJyxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5zaGFkZWRdPVwicHJvcHMuc2hhZGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5kYXJrXT1cInByb3BzLmRhcmtcIlxuICAgICAgICAgICAgW2NsYXNzLmxpbWl0ZWRdPVwicHJvcHMubGltaXRlZFwiXG4gICAgICAgICAgICBbY2xhc3MuY2VudGVyXT1cInByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcidcIlxuICAgICAgICAgICAgW3NyY109XCJwcm9wcy5zcmNcIlxuICAgICAgICAgICAgW2FsdF09XCJwcm9wcy5hbHRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCJwcm9wcy53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnJlbV09XCJwcm9wcy53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInByb3BzLmhlaWdodFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJvcHMucHJldmlld01vZGUgPyBvcGVuUHJldmlldygpIDogbnVsbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAocHJvcHMuY2FwdGlvbikge1xuICAgICAgICA8ZmlnY2FwdGlvblxuICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlLWNhcHRpb25cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICd2YWwtaW1hZ2UtY2FwdGlvbi0tc21hbGwnOiBwcm9wcy5jYXB0aW9uU2l6ZSA9PT0gJ3NtYWxsJyxcbiAgICAgICAgICAgICd2YWwtaW1hZ2UtY2FwdGlvbi0tbWVkaXVtJzogcHJvcHMuY2FwdGlvblNpemUgPT09ICdtZWRpdW0nIHx8ICFwcm9wcy5jYXB0aW9uU2l6ZSxcbiAgICAgICAgICAgICd2YWwtaW1hZ2UtY2FwdGlvbi0tbGFyZ2UnOiBwcm9wcy5jYXB0aW9uU2l6ZSA9PT0gJ2xhcmdlJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLmNhcHRpb24gfX1cbiAgICAgICAgPC9maWdjYXB0aW9uPlxuICAgICAgfVxuICAgIDwvZmlndXJlPlxuXG4gICAgPCEtLSBNb2RhbCBkZSBwcmV2aXN1YWxpemFjacOzbiBjb24gaW9uLW1vZGFsIC0tPlxuICAgIDxpb24tbW9kYWwgW2lzT3Blbl09XCJpc1ByZXZpZXdPcGVuXCIgKGRpZERpc21pc3MpPVwiY2xvc2VQcmV2aWV3KClcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPGlvbi1oZWFkZXI+XG4gICAgICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICAgICAgPGlvbi10aXRsZT57eyBwcm9wcy5hbHQgfHwgJ1ByZXZpc3VhbGl6YWNpw7NuIGRlIGltYWdlbicgfX08L2lvbi10aXRsZT5cbiAgICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZVByZXZpZXcoKVwiIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgICAgIDwvaW9uLWhlYWRlcj5cblxuICAgICAgICA8aW9uLWNvbnRlbnQ+XG4gICAgICAgICAgPCEtLSBDb250cm9sZXMgZGUgem9vbSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctY29udHJvbHNcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJ6b29tT3V0KCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ6b29tTGV2ZWwgPD0gbWluWm9vbVwiXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicmVtb3ZlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWwtaW1hZ2UtcHJldmlldy16b29tLWxldmVsXCI+e3sgTWF0aC5yb3VuZCh6b29tTGV2ZWwgKiAxMDApIH19JTwvc3Bhbj5cblxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cInpvb21JbigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiem9vbUxldmVsID49IG1heFpvb21cIlxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEltYWdlbiBhbXBsaWFkYSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZhbC1pbWFnZS1wcmV2aWV3LXZpZXdwb3J0XCJcbiAgICAgICAgICAgICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh3aGVlbCk9XCJvbldoZWVsKCRldmVudClcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAjcHJldmlld0ltYWdlXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctaW1nXCJcbiAgICAgICAgICAgICAgW3NyY109XCJwcm9wcy5zcmMuaW5jbHVkZXMoJy0tJykgPyBudWxsIDogcHJvcHMuc3JjXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzLnNyYy5pbmNsdWRlcygnLS0nKSA/ICd2YXIoJyArIHByb3BzLnNyYyArICcpJyA6IG51bGwsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoJyArIHpvb21MZXZlbCArICcpIHRyYW5zbGF0ZSgnICsgcGFuWCArICdweCwgJyArIHBhblkgKyAncHgpJyxcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGlzRHJhZ2dpbmcgPyAnZ3JhYmJpbmcnIDogem9vbUxldmVsID4gMSA/ICdncmFiJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFthbHRdPVwicHJvcHMuYWx0XCJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pb24tY29udGVudD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtaW1hZ2VcbiAqXG4gKiBEaXNwbGF5cyBhbiBpbWFnZSB3aXRoIHZhcmlvdXMgZGlzcGxheSBvcHRpb25zIChib3JkZXJlZCwgc2hhZGVkLCBkYXJrLCBldGMpLlxuICogTm93IGluY2x1ZGVzIGEgY29udGFpbmVyIHdyYXBwZXIgZm9yIGJldHRlciBmbGV4Ym94IHN1cHBvcnQgYW5kIGFsaWdubWVudCBvcHRpb25zLlxuICpcbiAqIE5FVzogT3B0aW9uYWwgcHJldmlldyBtb2RlIHdpdGggZnVsbC1zY3JlZW4gem9vbSBjYXBhYmlsaXRpZXM6XG4gKiAtIENsaWNrIHRvIG9wZW4gZnVsbC1zY3JlZW4gcHJldmlldyAod2hlbiBwcmV2aWV3TW9kZSBpcyBlbmFibGVkKVxuICogLSBQaW5jaC10by16b29tIG9uIG1vYmlsZSBkZXZpY2VzXG4gKiAtIE1vdXNlIHdoZWVsIHpvb20gb24gZGVza3RvcFxuICogLSBQYW4vZHJhZyB0byBuYXZpZ2F0ZSB6b29tZWQgaW1hZ2VzXG4gKiAtIFpvb20gY29udHJvbHMgd2l0aCBidXR0b25zXG4gKiAtIEtleWJvYXJkIHNob3J0Y3V0cyAoRXNjIHRvIGNsb3NlLCArLy0gdG8gem9vbSwgMCB0byByZXNldClcbiAqIC0gVG91Y2gtZnJpZW5kbHkgaW50ZXJmYWNlIHdpdGggZ2VzdHVyZSBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2U6XG4gKiA8dmFsLWltYWdlIFtwcm9wc109XCJ7XG4gKiAgIHNyYzogJ3VybCcsXG4gKiAgIGFsdDogJ2Rlc2MnLFxuICogICB3aWR0aDogMTAwLFxuICogICBoZWlnaHQ6IDEwMCxcbiAqICAgYm9yZGVyZWQ6IHRydWUsXG4gKiAgIGFsaWdubWVudDogJ2NlbnRlcicsXG4gKiAgIGNhcHRpb246ICdJbWFnZSBkZXNjcmlwdGlvbidcbiAqIH1cIj48L3ZhbC1pbWFnZT5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXZpZXcgbW9kZTpcbiAqIDx2YWwtaW1hZ2UgW3Byb3BzXT1cIntcbiAqICAgc3JjOiAndXJsJyxcbiAqICAgYWx0OiAnZGVzYycsXG4gKiAgIHByZXZpZXdNb2RlOiB0cnVlLFxuICogICBib3JkZXJlZDogdHJ1ZSxcbiAqICAgYWxpZ25tZW50OiAnY2VudGVyJ1xuICogfVwiPjwvdmFsLWltYWdlPlxuICpcbiAqIEBpbnB1dCBwcm9wczogSW1hZ2VNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbWFnZSAoc3JjLCBhbHQsIHNpemUsIG1vZGUsIGFsaWdubWVudCwgY2FwdGlvbiwgcHJldmlld01vZGUsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByb3BzITogSW1hZ2VNZXRhZGF0YTtcblxuICBhdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vIFByZXZpZXcgbW9kZSBwcm9wZXJ0aWVzXG4gIGlzUHJldmlld09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgem9vbUxldmVsOiBudW1iZXIgPSAxO1xuICBtaW5ab29tOiBudW1iZXIgPSAwLjU7XG4gIG1heFpvb206IG51bWJlciA9IDU7XG4gIHBhblg6IG51bWJlciA9IDA7XG4gIHBhblk6IG51bWJlciA9IDA7XG5cbiAgLy8gVG91Y2ggYW5kIG1vdXNlIGludGVyYWN0aW9uIHByb3BlcnRpZXNcbiAgaXNEcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBsYXN0UGFuWDogbnVtYmVyID0gMDtcbiAgbGFzdFBhblk6IG51bWJlciA9IDA7XG4gIHN0YXJ0WDogbnVtYmVyID0gMDtcbiAgc3RhcnRZOiBudW1iZXIgPSAwO1xuXG4gIC8vIFRvdWNoIGdlc3R1cmUgcHJvcGVydGllc1xuICBpbml0aWFsRGlzdGFuY2U6IG51bWJlciA9IDA7XG4gIGluaXRpYWxab29tOiBudW1iZXIgPSAxO1xuICB0b3VjaGVzOiBUb3VjaFtdID0gW107XG5cbiAgLy8gTGFuZyBzZXJ2aWNlXG4gIGxhbmdTZXJ2aWNlID0gaW5qZWN0KExhbmdTZXJ2aWNlKTtcblxuICAvLyBNYXRoIGZvciB0ZW1wbGF0ZVxuICBNYXRoID0gTWF0aDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzXG4gICAgaWYgKCF0aGlzLnByb3BzLmFsaWdubWVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hbGlnbm1lbnQgPSAnY2VudGVyJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLmNhcHRpb25TaXplKSB7XG4gICAgICB0aGlzLnByb3BzLmNhcHRpb25TaXplID0gJ21lZGl1bSc7XG4gICAgfVxuICAgIGlmICghdGhpcy5wcm9wcy5tb2RlKSB7XG4gICAgICB0aGlzLnByb3BzLm1vZGUgPSAnYm94JztcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VUb1Zpc2libGUoKSB7XG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5hdmFpbGFibGUgPSB0cnVlO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICAvLyBQcmV2aWV3IG1vZGUgbWV0aG9kc1xuICBvcGVuUHJldmlldygpIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucHJldmlld01vZGUpIHJldHVybjtcbiAgICB0aGlzLmlzUHJldmlld09wZW4gPSB0cnVlO1xuICAgIHRoaXMucmVzZXRab29tKCk7XG4gIH1cblxuICBjbG9zZVByZXZpZXcoKSB7XG4gICAgdGhpcy5pc1ByZXZpZXdPcGVuID0gZmFsc2U7XG4gIH1cblxuICAvLyBab29tIG1ldGhvZHNcbiAgem9vbUluKCkge1xuICAgIGlmICh0aGlzLnpvb21MZXZlbCA8IHRoaXMubWF4Wm9vbSkge1xuICAgICAgdGhpcy56b29tTGV2ZWwgPSBNYXRoLm1pbih0aGlzLnpvb21MZXZlbCAqIDEuMiwgdGhpcy5tYXhab29tKTtcbiAgICB9XG4gIH1cblxuICB6b29tT3V0KCkge1xuICAgIGlmICh0aGlzLnpvb21MZXZlbCA+IHRoaXMubWluWm9vbSkge1xuICAgICAgdGhpcy56b29tTGV2ZWwgPSBNYXRoLm1heCh0aGlzLnpvb21MZXZlbCAvIDEuMiwgdGhpcy5taW5ab29tKTtcbiAgICAgIC8vIFJlc2V0IHBhbiBpZiB6b29tZWQgb3V0IHRvIDF4IG9yIGxlc3NcbiAgICAgIGlmICh0aGlzLnpvb21MZXZlbCA8PSAxKSB7XG4gICAgICAgIHRoaXMucGFuWCA9IDA7XG4gICAgICAgIHRoaXMucGFuWSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVzZXRab29tKCkge1xuICAgIHRoaXMuem9vbUxldmVsID0gMTtcbiAgICB0aGlzLnBhblggPSAwO1xuICAgIHRoaXMucGFuWSA9IDA7XG4gIH1cblxuICAvLyBNb3VzZSBldmVudHNcbiAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy56b29tTGV2ZWwgPD0gMSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LmNsaWVudFggLSB0aGlzLnBhblg7XG4gICAgdGhpcy5zdGFydFkgPSBldmVudC5jbGllbnRZIC0gdGhpcy5wYW5ZO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nIHx8IHRoaXMuem9vbUxldmVsIDw9IDEpIHJldHVybjtcblxuICAgIHRoaXMucGFuWCA9IGV2ZW50LmNsaWVudFggLSB0aGlzLnN0YXJ0WDtcbiAgICB0aGlzLnBhblkgPSBldmVudC5jbGllbnRZIC0gdGhpcy5zdGFydFk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIG9uTW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICB9XG5cbiAgLy8gVG91Y2ggZXZlbnRzIGZvciBtb2JpbGVcbiAgb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnRvdWNoZXMgPSBBcnJheS5mcm9tKGV2ZW50LnRvdWNoZXMpO1xuXG4gICAgaWYgKHRoaXMudG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIC8vIFNpbmdsZSB0b3VjaCAtIHN0YXJ0IGRyYWdnaW5nXG4gICAgICBpZiAodGhpcy56b29tTGV2ZWwgPiAxKSB7XG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhcnRYID0gdGhpcy50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLnBhblg7XG4gICAgICAgIHRoaXMuc3RhcnRZID0gdGhpcy50b3VjaGVzWzBdLmNsaWVudFkgLSB0aGlzLnBhblk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnRvdWNoZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAvLyBUd28gdG91Y2hlcyAtIHN0YXJ0IHBpbmNoIHpvb21cbiAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgdGhpcy5pbml0aWFsRGlzdGFuY2UgPSB0aGlzLmdldERpc3RhbmNlKHRoaXMudG91Y2hlc1swXSwgdGhpcy50b3VjaGVzWzFdKTtcbiAgICAgIHRoaXMuaW5pdGlhbFpvb20gPSB0aGlzLnpvb21MZXZlbDtcbiAgICB9XG4gIH1cblxuICBvblRvdWNoTW92ZShldmVudDogVG91Y2hFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy50b3VjaGVzID0gQXJyYXkuZnJvbShldmVudC50b3VjaGVzKTtcblxuICAgIGlmICh0aGlzLnRvdWNoZXMubGVuZ3RoID09PSAxICYmIHRoaXMuaXNEcmFnZ2luZyAmJiB0aGlzLnpvb21MZXZlbCA+IDEpIHtcbiAgICAgIC8vIFNpbmdsZSB0b3VjaCAtIGRyYWdcbiAgICAgIHRoaXMucGFuWCA9IHRoaXMudG91Y2hlc1swXS5jbGllbnRYIC0gdGhpcy5zdGFydFg7XG4gICAgICB0aGlzLnBhblkgPSB0aGlzLnRvdWNoZXNbMF0uY2xpZW50WSAtIHRoaXMuc3RhcnRZO1xuICAgIH0gZWxzZSBpZiAodGhpcy50b3VjaGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgLy8gVHdvIHRvdWNoZXMgLSBwaW5jaCB6b29tXG4gICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSB0aGlzLmdldERpc3RhbmNlKHRoaXMudG91Y2hlc1swXSwgdGhpcy50b3VjaGVzWzFdKTtcbiAgICAgIGNvbnN0IHNjYWxlID0gY3VycmVudERpc3RhbmNlIC8gdGhpcy5pbml0aWFsRGlzdGFuY2U7XG4gICAgICB0aGlzLnpvb21MZXZlbCA9IE1hdGgubWluKE1hdGgubWF4KHRoaXMuaW5pdGlhbFpvb20gKiBzY2FsZSwgdGhpcy5taW5ab29tKSwgdGhpcy5tYXhab29tKTtcblxuICAgICAgLy8gUmVzZXQgcGFuIGlmIHpvb21lZCBvdXQgdG8gMXggb3IgbGVzc1xuICAgICAgaWYgKHRoaXMuem9vbUxldmVsIDw9IDEpIHtcbiAgICAgICAgdGhpcy5wYW5YID0gMDtcbiAgICAgICAgdGhpcy5wYW5ZID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblRvdWNoRW5kKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy50b3VjaGVzID0gQXJyYXkuZnJvbShldmVudC50b3VjaGVzKTtcbiAgfVxuXG4gIC8vIE1vdXNlIHdoZWVsIHpvb21cbiAgb25XaGVlbChldmVudDogV2hlZWxFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBkZWx0YSA9IGV2ZW50LmRlbHRhWSA+IDAgPyAtMSA6IDE7XG4gICAgY29uc3Qgem9vbUZhY3RvciA9IDEgKyBkZWx0YSAqIDAuMTtcblxuICAgIHRoaXMuem9vbUxldmVsID0gTWF0aC5taW4oTWF0aC5tYXgodGhpcy56b29tTGV2ZWwgKiB6b29tRmFjdG9yLCB0aGlzLm1pblpvb20pLCB0aGlzLm1heFpvb20pO1xuXG4gICAgLy8gUmVzZXQgcGFuIGlmIHpvb21lZCBvdXQgdG8gMXggb3IgbGVzc1xuICAgIGlmICh0aGlzLnpvb21MZXZlbCA8PSAxKSB7XG4gICAgICB0aGlzLnBhblggPSAwO1xuICAgICAgdGhpcy5wYW5ZID0gMDtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kc1xuICBwcml2YXRlIGdldERpc3RhbmNlKHRvdWNoMTogVG91Y2gsIHRvdWNoMjogVG91Y2gpOiBudW1iZXIge1xuICAgIGNvbnN0IGR4ID0gdG91Y2gxLmNsaWVudFggLSB0b3VjaDIuY2xpZW50WDtcbiAgICBjb25zdCBkeSA9IHRvdWNoMS5jbGllbnRZIC0gdG91Y2gyLmNsaWVudFk7XG4gICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gIH1cblxuICAvLyBLZXlib2FyZCBzaG9ydGN1dHNcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICghdGhpcy5pc1ByZXZpZXdPcGVuKSByZXR1cm47XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5jbG9zZVByZXZpZXcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcrJzpcbiAgICAgIGNhc2UgJz0nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnpvb21JbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy0nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnpvb21PdXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5yZXNldFpvb20oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL2ltYWdlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3BzIGZvciB2YWwtaW1hZ2UgY29tcG9uZW50LlxuICpcbiAqIEBwcm9wZXJ0eSBzcmMgLSBUaGUgaW1hZ2Ugc291cmNlIFVSTC5cbiAqIEBwcm9wZXJ0eSBhbHQgLSBUaGUgYWx0IHRleHQgZm9yIHRoZSBpbWFnZS5cbiAqIEBwcm9wZXJ0eSBtb2RlIC0gVGhlIGRpc3BsYXkgbW9kZSAoJ3JvdW5kZWQnIHwgJ2NpcmN1bGFyJyB8ICdib3gnKS5cbiAqIEBwcm9wZXJ0eSBzaGFkZWQgLSBXaGV0aGVyIHRoZSBpbWFnZSBoYXMgYSBzaGFkZWQgZWZmZWN0LlxuICogQHByb3BlcnR5IGJvcmRlcmVkIC0gV2hldGhlciB0aGUgaW1hZ2UgaGFzIGEgYm9yZGVyLlxuICogQHByb3BlcnR5IGxpbWl0ZWQgLSBXaGV0aGVyIHRoZSBpbWFnZSBpcyBsaW1pdGVkIGluIHNpemUgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBkYXJrIC0gV2hldGhlciB0aGUgaW1hZ2UgdXNlcyBhIGRhcmsgc3R5bGUgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBzaXplIC0gVGhlIGltYWdlIHNpemUgKCdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJykuXG4gKiBAcHJvcGVydHkgd2lkdGggLSBUaGUgaW1hZ2Ugd2lkdGggaW4gcHggKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBoZWlnaHQgLSBUaGUgaW1hZ2UgaGVpZ2h0IGluIHB4IChvcHRpb25hbCkuXG4gKiBAcHJvcGVydHkgYWxpZ25tZW50IC0gVGhlIGFsaWdubWVudCBvZiB0aGUgaW1hZ2UgY29udGFpbmVyICgnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpLlxuICogQHByb3BlcnR5IGNhcHRpb24gLSBPcHRpb25hbCBjYXB0aW9uIHRleHQgYmVsb3cgdGhlIGltYWdlLlxuICogQHByb3BlcnR5IGNhcHRpb25TaXplIC0gU2l6ZSBvZiB0aGUgY2FwdGlvbiB0ZXh0ICgnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnKS5cbiAqIEBwcm9wZXJ0eSBjb250YWluZXJDbGFzcyAtIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgZm9yIHRoZSBjb250YWluZXIuXG4gKiBAcHJvcGVydHkgcHJldmlld01vZGUgLSBFbmFibGUgZnVsbC1zY3JlZW4gcHJldmlldyB3aXRoIHpvb20gY2FwYWJpbGl0aWVzIChvcHRpb25hbCkuXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlTWV0YWRhdGEgPSB7XG4gIHNyYzogc3RyaW5nO1xuICBhbHQ6IHN0cmluZztcbiAgbW9kZTogJ3JvdW5kZWQnIHwgJ2NpcmN1bGFyJyB8ICdib3gnO1xuICBzaGFkZWQ6IGJvb2xlYW47XG4gIGJvcmRlcmVkOiBib29sZWFuO1xuICBsaW1pdGVkPzogYm9vbGVhbjtcbiAgZGFyaz86IGJvb2xlYW47XG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgYWxpZ25tZW50PzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICBjYXB0aW9uPzogc3RyaW5nO1xuICBjYXB0aW9uU2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG4gIGNvbnRhaW5lckNsYXNzPzogc3RyaW5nO1xuICBmbGV4PzogYm9vbGVhbjsgLy8gT3B0aW9uYWwgcHJvcGVydHkgdG8gY29udHJvbCBmbGV4IGRpc3BsYXlcbiAgcHJldmlld01vZGU/OiBib29sZWFuOyAvLyBFbmFibGUgZnVsbC1zY3JlZW4gaW1hZ2UgcHJldmlldyB3aXRoIHpvb21cbn07XG4iXX0=
|