tas-uell-sdk 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/esm2020/lib/components/tas-btn/tas-btn.component.mjs +30 -17
- package/esm2020/lib/components/tas-incoming-appointment/tas-incoming-appointment.component.mjs +41 -28
- package/esm2020/lib/components/tas-videocall/tas-videocall.component.mjs +126 -41
- package/esm2020/lib/components/tas-waiting-room/tas-waiting-room.component.mjs +135 -34
- package/esm2020/lib/icons/tas-icons.mjs +17 -0
- package/esm2020/lib/interfaces/tas.interfaces.mjs +9 -1
- package/esm2020/lib/services/tas.service.mjs +99 -27
- package/fesm2015/tas-uell-sdk.mjs +449 -140
- package/fesm2015/tas-uell-sdk.mjs.map +1 -1
- package/fesm2020/tas-uell-sdk.mjs +447 -139
- package/fesm2020/tas-uell-sdk.mjs.map +1 -1
- package/lib/components/tas-btn/tas-btn.component.d.ts +3 -1
- package/lib/components/tas-incoming-appointment/tas-incoming-appointment.component.d.ts +15 -6
- package/lib/components/tas-videocall/tas-videocall.component.d.ts +42 -5
- package/lib/components/tas-waiting-room/tas-waiting-room.component.d.ts +32 -13
- package/lib/icons/tas-icons.d.ts +8 -0
- package/lib/interfaces/tas.interfaces.d.ts +26 -4
- package/lib/services/tas.service.d.ts +13 -2
- package/package.json +1 -1
|
@@ -41,19 +41,40 @@ export class TasWaitingRoomComponent {
|
|
|
41
41
|
this.videoCallModalRef = null;
|
|
42
42
|
// Geolocation
|
|
43
43
|
this.geoPosition = null;
|
|
44
|
+
this.geoWasDenied = false; // Tracks if user denied geo permission
|
|
45
|
+
this.geoResultSent = false; // Tracks if geo result was already sent
|
|
46
|
+
// Permission tracking for auto-join
|
|
47
|
+
this.mediaPermissionsGranted = false;
|
|
48
|
+
this.geoPermissionsResolved = false;
|
|
49
|
+
// Auto-retry tracking
|
|
50
|
+
this.retryCount = 0;
|
|
51
|
+
this.MAX_RETRIES = 1;
|
|
44
52
|
}
|
|
45
53
|
/** Whether current user is an owner */
|
|
46
54
|
get isOwner() {
|
|
47
55
|
return this.currentUser?.role === TasUserRole.OWNER;
|
|
48
56
|
}
|
|
57
|
+
/** Whether we're still requesting permissions (for template) */
|
|
58
|
+
get isRequestingPermissions() {
|
|
59
|
+
return !this.mediaPermissionsGranted || (!this.geoPermissionsResolved && !this.isOwner && !this.isBackoffice);
|
|
60
|
+
}
|
|
61
|
+
/** Whether we're waiting for admission after permissions granted (for template) */
|
|
62
|
+
get isWaitingForAdmission() {
|
|
63
|
+
return this.mediaPermissionsGranted &&
|
|
64
|
+
(this.geoPermissionsResolved || this.isOwner || this.isBackoffice) &&
|
|
65
|
+
!this.isJoinable;
|
|
66
|
+
}
|
|
49
67
|
ngOnInit() {
|
|
50
68
|
console.log('[TAS DEBUG] TasWaitingRoomComponent.ngOnInit');
|
|
51
69
|
this.requestMediaPermissions();
|
|
70
|
+
// Request geolocation permission and cache it (but don't send to backend yet)
|
|
71
|
+
// The cached position will be sent when owner requests it via activateGeo
|
|
52
72
|
this.requestGeolocation();
|
|
53
73
|
this.checkStatus();
|
|
54
74
|
}
|
|
55
75
|
/**
|
|
56
76
|
* Request camera and microphone permissions.
|
|
77
|
+
* Triggers auto-join when permissions are resolved.
|
|
57
78
|
*/
|
|
58
79
|
async requestMediaPermissions() {
|
|
59
80
|
console.log('[TAS DEBUG] Requesting media permissions...');
|
|
@@ -62,37 +83,71 @@ export class TasWaitingRoomComponent {
|
|
|
62
83
|
// Stop tracks immediately - we just needed the permission
|
|
63
84
|
stream.getTracks().forEach(track => track.stop());
|
|
64
85
|
console.log('[TAS DEBUG] Media permissions granted');
|
|
86
|
+
this.mediaPermissionsGranted = true;
|
|
65
87
|
}
|
|
66
88
|
catch (error) {
|
|
67
89
|
console.warn('[TAS DEBUG] Media permissions denied or unavailable:', error);
|
|
90
|
+
// Still allow joining - some users may not have camera/mic
|
|
91
|
+
this.mediaPermissionsGranted = true;
|
|
68
92
|
}
|
|
93
|
+
this.tryAutoJoin();
|
|
94
|
+
this.cdr.detectChanges();
|
|
69
95
|
}
|
|
70
96
|
/**
|
|
71
|
-
* Request geolocation
|
|
97
|
+
* Request geolocation permission and cache result.
|
|
72
98
|
* Only for regular users (not owners/backoffice).
|
|
73
|
-
*
|
|
99
|
+
* Actual send to backend happens after we have videoCallId.
|
|
100
|
+
* Triggers auto-join when geolocation is resolved.
|
|
74
101
|
*/
|
|
75
102
|
async requestGeolocation() {
|
|
76
103
|
// Only request geolocation for regular users, not owners/backoffice
|
|
77
104
|
if (this.isOwner || this.isBackoffice) {
|
|
78
105
|
console.log('[TAS DEBUG] Skipping geolocation for owner/backoffice');
|
|
106
|
+
this.geoPermissionsResolved = true;
|
|
79
107
|
return;
|
|
80
108
|
}
|
|
81
|
-
console.log('[TAS DEBUG] Requesting geolocation...');
|
|
109
|
+
console.log('[TAS DEBUG] Requesting geolocation permission...');
|
|
82
110
|
const position = await this.geolocationService.getCurrentPosition();
|
|
83
111
|
if (position) {
|
|
84
|
-
console.log('[TAS DEBUG] Geolocation
|
|
112
|
+
console.log('[TAS DEBUG] Geolocation granted:', position);
|
|
85
113
|
this.geoPosition = position;
|
|
86
|
-
|
|
87
|
-
this.sendGeolocationToBackend();
|
|
114
|
+
this.geoWasDenied = false;
|
|
88
115
|
}
|
|
89
116
|
else {
|
|
90
117
|
console.log('[TAS DEBUG] Geolocation denied or unavailable');
|
|
118
|
+
this.geoPosition = null;
|
|
119
|
+
this.geoWasDenied = true;
|
|
120
|
+
}
|
|
121
|
+
this.geoPermissionsResolved = true;
|
|
122
|
+
// If we already have videoCallId, send now. Otherwise, it will be sent after status response.
|
|
123
|
+
this.sendGeoResultToBackend();
|
|
124
|
+
this.tryAutoJoin();
|
|
125
|
+
this.cdr.detectChanges();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Send geo result to backend (granted or denied).
|
|
129
|
+
* Only sends if videoCallId is available and not already sent.
|
|
130
|
+
*/
|
|
131
|
+
sendGeoResultToBackend() {
|
|
132
|
+
if (!this.videoCallId) {
|
|
133
|
+
console.log('[TAS DEBUG] Cannot send geo result: videoCallId not available yet');
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (this.geoResultSent) {
|
|
137
|
+
console.log('[TAS DEBUG] Geo result already sent, skipping');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (this.geoPosition) {
|
|
141
|
+
this.sendGeolocationToBackend();
|
|
142
|
+
this.geoResultSent = true;
|
|
143
|
+
}
|
|
144
|
+
else if (this.geoWasDenied) {
|
|
145
|
+
this.sendGeoDenialToBackend();
|
|
146
|
+
this.geoResultSent = true;
|
|
91
147
|
}
|
|
92
148
|
}
|
|
93
149
|
/**
|
|
94
|
-
* Send geolocation to backend via modify user endpoint.
|
|
95
|
-
* NOTE: Endpoint call is prepared but may not be active yet.
|
|
150
|
+
* Send granted geolocation to backend via modify user endpoint.
|
|
96
151
|
*/
|
|
97
152
|
sendGeolocationToBackend() {
|
|
98
153
|
if (!this.geoPosition || !this.videoCallId) {
|
|
@@ -100,7 +155,6 @@ export class TasWaitingRoomComponent {
|
|
|
100
155
|
}
|
|
101
156
|
console.log('[TAS DEBUG] Sending geolocation to backend...');
|
|
102
157
|
const body = {
|
|
103
|
-
userId: this.currentUser?.id,
|
|
104
158
|
videoCallId: this.videoCallId,
|
|
105
159
|
action: UserCallAction.ACTIVATE_GEOLOCATION,
|
|
106
160
|
latitude: this.geoPosition.latitude,
|
|
@@ -111,6 +165,23 @@ export class TasWaitingRoomComponent {
|
|
|
111
165
|
error: (err) => console.error('[TAS DEBUG] Failed to send geolocation:', err),
|
|
112
166
|
});
|
|
113
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Send geolocation denial to backend via modify user endpoint.
|
|
170
|
+
*/
|
|
171
|
+
sendGeoDenialToBackend() {
|
|
172
|
+
if (!this.videoCallId) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
console.log('[TAS DEBUG] Sending geo denial to backend...');
|
|
176
|
+
const body = {
|
|
177
|
+
videoCallId: this.videoCallId,
|
|
178
|
+
action: UserCallAction.DENY_GEOLOCATION,
|
|
179
|
+
};
|
|
180
|
+
this.tasService.modifyProxyVideoUser(body).subscribe({
|
|
181
|
+
next: () => console.log('[TAS DEBUG] Geo denial sent successfully'),
|
|
182
|
+
error: (err) => console.error('[TAS DEBUG] Failed to send geo denial:', err),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
114
185
|
ngOnDestroy() {
|
|
115
186
|
console.log('[TAS DEBUG] TasWaitingRoomComponent.ngOnDestroy');
|
|
116
187
|
this.subscriptions.unsubscribe();
|
|
@@ -144,8 +215,8 @@ export class TasWaitingRoomComponent {
|
|
|
144
215
|
this.resolvedAppointmentId = content.appointmentId;
|
|
145
216
|
this.videoCallId = content.videoCallId;
|
|
146
217
|
console.log('[TAS DEBUG] Status response:', content);
|
|
147
|
-
//
|
|
148
|
-
this.
|
|
218
|
+
// Now that we have videoCallId, send geo result if not already sent
|
|
219
|
+
this.sendGeoResultToBackend();
|
|
149
220
|
// Start polling for status updates
|
|
150
221
|
this.tasService.startStatusPolling(statusParams);
|
|
151
222
|
// Subscribe to joinable status
|
|
@@ -161,7 +232,8 @@ export class TasWaitingRoomComponent {
|
|
|
161
232
|
}));
|
|
162
233
|
}
|
|
163
234
|
/**
|
|
164
|
-
* Handle changes to joinable status
|
|
235
|
+
* Handle changes to joinable status.
|
|
236
|
+
* Triggers auto-join when joinable becomes true.
|
|
165
237
|
*/
|
|
166
238
|
handleJoinableChange(joinable) {
|
|
167
239
|
console.log('[TAS DEBUG] handleJoinableChange called', {
|
|
@@ -177,10 +249,11 @@ export class TasWaitingRoomComponent {
|
|
|
177
249
|
console.log('[TAS DEBUG] Skipping state update - already in:', this.state);
|
|
178
250
|
return;
|
|
179
251
|
}
|
|
180
|
-
//
|
|
252
|
+
// Update state and attempt auto-join
|
|
181
253
|
if (joinable) {
|
|
182
|
-
console.log('[TAS DEBUG] Joinable is true,
|
|
254
|
+
console.log('[TAS DEBUG] Joinable is true, attempting auto-join');
|
|
183
255
|
this.state = WaitingRoomState.READY;
|
|
256
|
+
this.tryAutoJoin();
|
|
184
257
|
}
|
|
185
258
|
else {
|
|
186
259
|
console.log('[TAS DEBUG] Waiting for joinable...');
|
|
@@ -189,11 +262,33 @@ export class TasWaitingRoomComponent {
|
|
|
189
262
|
this.cdr.detectChanges();
|
|
190
263
|
}
|
|
191
264
|
/**
|
|
192
|
-
*
|
|
193
|
-
*
|
|
265
|
+
* Attempt to auto-join the session when all conditions are met.
|
|
266
|
+
* - For owners: just need joinable + sessionId
|
|
267
|
+
* - For users: need media permissions + geo resolved + joinable + sessionId
|
|
194
268
|
*/
|
|
195
|
-
|
|
196
|
-
|
|
269
|
+
tryAutoJoin() {
|
|
270
|
+
// Don't try if already joining or in error
|
|
271
|
+
if (this.state === WaitingRoomState.GETTING_TOKEN ||
|
|
272
|
+
this.state === WaitingRoomState.JOINING) {
|
|
273
|
+
console.log('[TAS DEBUG] tryAutoJoin skipped - already in state:', this.state);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
// For owners: just need joinable
|
|
277
|
+
if (this.isOwner) {
|
|
278
|
+
if (this.isJoinable && this.resolvedSessionId) {
|
|
279
|
+
console.log('[TAS DEBUG] Owner auto-joining...');
|
|
280
|
+
this.startSessionAndJoin();
|
|
281
|
+
}
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
// For users: need media + geo resolved + joinable
|
|
285
|
+
if (this.mediaPermissionsGranted &&
|
|
286
|
+
this.geoPermissionsResolved &&
|
|
287
|
+
this.isJoinable &&
|
|
288
|
+
this.resolvedSessionId) {
|
|
289
|
+
console.log('[TAS DEBUG] User auto-joining...');
|
|
290
|
+
this.startSessionAndJoin();
|
|
291
|
+
}
|
|
197
292
|
}
|
|
198
293
|
/**
|
|
199
294
|
* Check if user has owner/backoffice role
|
|
@@ -246,28 +341,34 @@ export class TasWaitingRoomComponent {
|
|
|
246
341
|
},
|
|
247
342
|
error: (err) => {
|
|
248
343
|
console.error('[TAS DEBUG] /start request failed:', err);
|
|
249
|
-
|
|
250
|
-
this.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
344
|
+
// Auto-retry on first failure
|
|
345
|
+
if (this.retryCount < this.MAX_RETRIES) {
|
|
346
|
+
this.retryCount++;
|
|
347
|
+
console.log('[TAS DEBUG] Auto-retrying... attempt:', this.retryCount);
|
|
348
|
+
this.state = WaitingRoomState.CHECKING_STATUS;
|
|
349
|
+
this.cdr.detectChanges();
|
|
350
|
+
setTimeout(() => this.startSessionAndJoin(), 2000);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
// Show error after retry fails
|
|
354
|
+
this.state = WaitingRoomState.ERROR;
|
|
355
|
+
this.errorMessage = err?.error?.message || err?.message || 'Error al iniciar la sesión. Por favor, intente nuevamente.';
|
|
356
|
+
this.tasService.stopStatusPolling();
|
|
357
|
+
console.log('[TAS DEBUG] State set to ERROR, errorMessage:', this.errorMessage);
|
|
358
|
+
this.cdr.detectChanges();
|
|
359
|
+
}
|
|
254
360
|
},
|
|
255
361
|
}));
|
|
256
362
|
}
|
|
257
363
|
/**
|
|
258
|
-
*
|
|
259
|
-
|
|
260
|
-
cancel() {
|
|
261
|
-
this.tasService.stopStatusPolling();
|
|
262
|
-
this.activeModal.dismiss('cancel');
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Retry after an error
|
|
364
|
+
* Retry after an error.
|
|
365
|
+
* Resets retry count and restarts the flow.
|
|
266
366
|
*/
|
|
267
367
|
retry() {
|
|
268
368
|
this.state = WaitingRoomState.CHECKING_STATUS;
|
|
269
369
|
this.errorMessage = '';
|
|
270
370
|
this.token = '';
|
|
371
|
+
this.retryCount = 0; // Reset retry count for auto-retry
|
|
271
372
|
this.checkStatus();
|
|
272
373
|
}
|
|
273
374
|
openVideoCallModal() {
|
|
@@ -293,10 +394,10 @@ export class TasWaitingRoomComponent {
|
|
|
293
394
|
}
|
|
294
395
|
}
|
|
295
396
|
TasWaitingRoomComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasWaitingRoomComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.TasService }, { token: i3.GeolocationService }, { token: i1.NgbModal }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
296
|
-
TasWaitingRoomComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TasWaitingRoomComponent, selector: "tas-waiting-room", inputs: { roomType: "roomType", entityId: "entityId", tenant: "tenant", businessRole: "businessRole", currentUser: "currentUser" }, ngImport: i0, template: "<div class=\"tas-waiting-room\">\n
|
|
397
|
+
TasWaitingRoomComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TasWaitingRoomComponent, selector: "tas-waiting-room", inputs: { roomType: "roomType", entityId: "entityId", tenant: "tenant", businessRole: "businessRole", currentUser: "currentUser" }, ngImport: i0, template: "<div class=\"tas-waiting-room\">\n <div class=\"waiting-room-content\">\n <div class=\"state-container\">\n <!-- Loading states (show spinner) -->\n <ng-container *ngIf=\"state !== WaitingRoomState.ERROR\">\n <div class=\"state-icon loading\">\n <div class=\"spinner\"></div>\n </div>\n \n <!-- Requesting permissions -->\n <ng-container *ngIf=\"isRequestingPermissions\">\n <p class=\"state-message\">Solicitando permisos...</p>\n <p class=\"state-submessage\">Por favor, acept\u00E1 los permisos de c\u00E1mara y micr\u00F3fono.</p>\n </ng-container>\n \n <!-- Waiting for admission (permissions granted, not joinable yet) -->\n <ng-container *ngIf=\"isWaitingForAdmission\">\n <p class=\"state-message\">Medicina laboral va a admitirte</p>\n <p class=\"state-submessage\">Por favor, permanec\u00E9 en esta pantalla.</p>\n </ng-container>\n \n <!-- Getting token / Joining -->\n <ng-container *ngIf=\"state === WaitingRoomState.GETTING_TOKEN || state === WaitingRoomState.JOINING\">\n <p class=\"state-message\">Conectando...</p>\n </ng-container>\n \n <!-- Checking status (when not requesting permissions) -->\n <ng-container *ngIf=\"state === WaitingRoomState.CHECKING_STATUS && !isRequestingPermissions\">\n <p class=\"state-message\">Verificando estado...</p>\n </ng-container>\n </ng-container>\n\n <!-- Error state (show error icon and message) -->\n <ng-container *ngIf=\"state === WaitingRoomState.ERROR\">\n <div class=\"state-icon error\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n </div>\n <p class=\"state-message error\">Ocurri\u00F3 un error</p>\n <p class=\"error-details\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n <button type=\"button\" class=\"btn action-btn retry-btn\" (click)=\"retry()\">\n <i class=\"fa fa-refresh\"></i>\n Reintentar\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".tas-waiting-room{display:flex;flex-direction:column;min-height:300px;background:#ffffff;border-radius:5px;overflow:hidden}.waiting-room-content{flex:1;display:flex;align-items:center;justify-content:center;padding:32px 40px;background:#ffffff}.state-container{text-align:center;max-width:400px;width:100%}.state-icon{width:80px;height:80px;margin:0 auto 24px;border-radius:50%;display:flex;align-items:center;justify-content:center}.state-icon i{font-size:36px}.state-icon.loading{background:rgba(29,164,177,.1);border:2px solid #1da4b1}.state-icon.error{background:rgba(238,49,107,.1);border:2px solid #ee316b}.state-icon.error i{color:#ee316b}.spinner{width:40px;height:40px;border:3px solid #e9ecef;border-top-color:#1da4b1;border-radius:50%;animation:spin 1s linear infinite}.state-message{font-size:16px;font-weight:600;margin:0 0 8px;color:#212529;line-height:24px}.state-message.error{color:#ee316b}.state-submessage{font-size:14px;color:#6c757d;margin:0 0 24px;font-weight:400}.error-details{font-size:13px;color:#ee316b;margin:0 0 24px;padding:12px 16px;background:rgba(238,49,107,.08);border-radius:8px;border:1px solid rgba(238,49,107,.2)}.action-btn{padding:12px 32px;font-size:16px;font-weight:600;border-radius:4px;border:none;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:10px}.action-btn i{font-size:16px}.action-btn.retry-btn{background:transparent;color:#6c757d;border:1px solid #e9ecef}.action-btn.retry-btn:hover{background:#f8f9fa;border-color:#6c757d;color:#212529}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 576px){.tas-waiting-room{min-height:250px}.waiting-room-content{padding:24px}.state-icon{width:64px;height:64px}.state-icon i{font-size:28px}.spinner{width:32px;height:32px}.action-btn{padding:10px 24px;font-size:14px}}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
297
398
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasWaitingRoomComponent, decorators: [{
|
|
298
399
|
type: Component,
|
|
299
|
-
args: [{ selector: 'tas-waiting-room', template: "<div class=\"tas-waiting-room\">\n
|
|
400
|
+
args: [{ selector: 'tas-waiting-room', template: "<div class=\"tas-waiting-room\">\n <div class=\"waiting-room-content\">\n <div class=\"state-container\">\n <!-- Loading states (show spinner) -->\n <ng-container *ngIf=\"state !== WaitingRoomState.ERROR\">\n <div class=\"state-icon loading\">\n <div class=\"spinner\"></div>\n </div>\n \n <!-- Requesting permissions -->\n <ng-container *ngIf=\"isRequestingPermissions\">\n <p class=\"state-message\">Solicitando permisos...</p>\n <p class=\"state-submessage\">Por favor, acept\u00E1 los permisos de c\u00E1mara y micr\u00F3fono.</p>\n </ng-container>\n \n <!-- Waiting for admission (permissions granted, not joinable yet) -->\n <ng-container *ngIf=\"isWaitingForAdmission\">\n <p class=\"state-message\">Medicina laboral va a admitirte</p>\n <p class=\"state-submessage\">Por favor, permanec\u00E9 en esta pantalla.</p>\n </ng-container>\n \n <!-- Getting token / Joining -->\n <ng-container *ngIf=\"state === WaitingRoomState.GETTING_TOKEN || state === WaitingRoomState.JOINING\">\n <p class=\"state-message\">Conectando...</p>\n </ng-container>\n \n <!-- Checking status (when not requesting permissions) -->\n <ng-container *ngIf=\"state === WaitingRoomState.CHECKING_STATUS && !isRequestingPermissions\">\n <p class=\"state-message\">Verificando estado...</p>\n </ng-container>\n </ng-container>\n\n <!-- Error state (show error icon and message) -->\n <ng-container *ngIf=\"state === WaitingRoomState.ERROR\">\n <div class=\"state-icon error\">\n <i class=\"fa fa-exclamation-triangle\"></i>\n </div>\n <p class=\"state-message error\">Ocurri\u00F3 un error</p>\n <p class=\"error-details\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n <button type=\"button\" class=\"btn action-btn retry-btn\" (click)=\"retry()\">\n <i class=\"fa fa-refresh\"></i>\n Reintentar\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: [".tas-waiting-room{display:flex;flex-direction:column;min-height:300px;background:#ffffff;border-radius:5px;overflow:hidden}.waiting-room-content{flex:1;display:flex;align-items:center;justify-content:center;padding:32px 40px;background:#ffffff}.state-container{text-align:center;max-width:400px;width:100%}.state-icon{width:80px;height:80px;margin:0 auto 24px;border-radius:50%;display:flex;align-items:center;justify-content:center}.state-icon i{font-size:36px}.state-icon.loading{background:rgba(29,164,177,.1);border:2px solid #1da4b1}.state-icon.error{background:rgba(238,49,107,.1);border:2px solid #ee316b}.state-icon.error i{color:#ee316b}.spinner{width:40px;height:40px;border:3px solid #e9ecef;border-top-color:#1da4b1;border-radius:50%;animation:spin 1s linear infinite}.state-message{font-size:16px;font-weight:600;margin:0 0 8px;color:#212529;line-height:24px}.state-message.error{color:#ee316b}.state-submessage{font-size:14px;color:#6c757d;margin:0 0 24px;font-weight:400}.error-details{font-size:13px;color:#ee316b;margin:0 0 24px;padding:12px 16px;background:rgba(238,49,107,.08);border-radius:8px;border:1px solid rgba(238,49,107,.2)}.action-btn{padding:12px 32px;font-size:16px;font-weight:600;border-radius:4px;border:none;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:10px}.action-btn i{font-size:16px}.action-btn.retry-btn{background:transparent;color:#6c757d;border:1px solid #e9ecef}.action-btn.retry-btn:hover{background:#f8f9fa;border-color:#6c757d;color:#212529}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 576px){.tas-waiting-room{min-height:250px}.waiting-room-content{padding:24px}.state-icon{width:64px;height:64px}.state-icon i{font-size:28px}.spinner{width:32px;height:32px}.action-btn{padding:10px 24px;font-size:14px}}\n"] }]
|
|
300
401
|
}], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.TasService }, { type: i3.GeolocationService }, { type: i1.NgbModal }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { roomType: [{
|
|
301
402
|
type: Input
|
|
302
403
|
}], entityId: [{
|
|
@@ -308,4 +409,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
308
409
|
}], currentUser: [{
|
|
309
410
|
type: Input
|
|
310
411
|
}] } });
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSXZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUVMLFdBQVcsRUFDWCxlQUFlLEVBQ2YsV0FBVyxFQUNYLGNBQWMsR0FFZixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7QUFFakYsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBbUMsQ0FBQTtJQUNuQyxpRUFBNkMsQ0FBQTtJQUM3QyxtQ0FBZSxDQUFBO0lBQ2YsbURBQStCLENBQUE7SUFDL0IsdUNBQW1CLENBQUE7SUFDbkIsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQU9ELE1BQU0sT0FBTyx1QkFBdUI7SUFrQ2xDLFlBQ1MsV0FBMkIsRUFDMUIsVUFBc0IsRUFDdEIsa0JBQXNDLEVBQ3RDLFlBQXNCLEVBQ3RCLEdBQXNCO1FBSnZCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FB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IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwsIE5nYk1vZGFsLCBOZ2JNb2RhbFJlZiB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFRhc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXMuc2VydmljZSc7XG5pbXBvcnQgeyBHZW9sb2NhdGlvblNlcnZpY2UsIEdlb1Bvc2l0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2VvbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFRhc0N1cnJlbnRVc2VyLFxuICBUYXNSb29tVHlwZSxcbiAgVGFzQnVzaW5lc3NSb2xlLFxuICBUYXNVc2VyUm9sZSxcbiAgVXNlckNhbGxBY3Rpb24sXG4gIFByb3h5VmlkZW9Vc2VyTW9kaWZ5UmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tICcuLi90YXMtdmlkZW9jYWxsL3Rhcy12aWRlb2NhbGwuY29tcG9uZW50JztcblxuZXhwb3J0IGVudW0gV2FpdGluZ1Jvb21TdGF0ZSB7XG4gIENIRUNLSU5HX1NUQVRVUyA9ICdDSEVDS0lOR19TVEFUVVMnLFxuICBXQUlUSU5HX0ZPUl9KT0lOQUJMRSA9ICdXQUlUSU5HX0ZPUl9KT0lOQUJMRScsXG4gIFJFQURZID0gJ1JFQURZJyxcbiAgR0VUVElOR19UT0tFTiA9ICdHRVRUSU5HX1RPS0VOJyxcbiAgSk9JTklORyA9ICdKT0lOSU5HJyxcbiAgRVJST1IgPSAnRVJST1InLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YXMtd2FpdGluZy1yb29tJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhcy13YWl0aW5nLXJvb20uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXMtd2FpdGluZy1yb29tLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhc1dhaXRpbmdSb29tQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyBTdGF0dXMgZW5kcG9pbnQgcGFyYW1zXG4gIEBJbnB1dCgpIHJvb21UeXBlOiBUYXNSb29tVHlwZSA9IFRhc1Jvb21UeXBlLlRBUztcbiAgQElucHV0KCkgZW50aXR5SWQhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHRlbmFudCE6IHN0cmluZztcbiAgQElucHV0KCkgYnVzaW5lc3NSb2xlOiBUYXNCdXNpbmVzc1JvbGUgPSBUYXNCdXNpbmVzc1JvbGUuVVNFUjtcblxuICAvLyBVc2VyIGluZm8gZm9yIHRva2VuIHJlcXVlc3RcbiAgQElucHV0KCkgY3VycmVudFVzZXIhOiBUYXNDdXJyZW50VXNlcjtcblxuICAvLyBDb21wb25lbnQgc3RhdGVcbiAgcHVibGljIHN0YXRlOiBXYWl0aW5nUm9vbVN0YXRlID0gV2FpdGluZ1Jvb21TdGF0ZS5DSEVDS0lOR19TVEFUVVM7XG4gIHB1YmxpYyBXYWl0aW5nUm9vbVN0YXRlID0gV2FpdGluZ1Jvb21TdGF0ZTsgLy8gRXhwb3NlIGVudW0gdG8gdGVtcGxhdGVcbiAgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBpc0pvaW5hYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gU2Vzc2lvbiBkYXRhIGZyb20gc3RhdHVzIHJlc3BvbnNlXG4gIHByaXZhdGUgcmVzb2x2ZWRTZXNzaW9uSWQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHJlc29sdmVkQXBwb2ludG1lbnRJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdG9rZW46IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHZpZGVvQ2FsbElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvLyBTdWJzY3JpcHRpb25zXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSB2aWRlb0NhbGxNb2RhbFJlZjogTmdiTW9kYWxSZWYgfCBudWxsID0gbnVsbDtcblxuICAvLyBHZW9sb2NhdGlvblxuICBwcml2YXRlIGdlb1Bvc2l0aW9uOiBHZW9Qb3NpdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIGN1cnJlbnQgdXNlciBpcyBhbiBvd25lciAqL1xuICBwdWJsaWMgZ2V0IGlzT3duZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXI/LnJvbGUgPT09IFRhc1VzZXJSb2xlLk9XTkVSO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcbiAgICBwcml2YXRlIHRhc1NlcnZpY2U6IFRhc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBnZW9sb2NhdGlvblNlcnZpY2U6IEdlb2xvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gVGFzV2FpdGluZ1Jvb21Db21wb25lbnQubmdPbkluaXQnKTtcbiAgICB0aGlzLnJlcXVlc3RNZWRpYVBlcm1pc3Npb25zKCk7XG4gICAgdGhpcy5yZXF1ZXN0R2VvbG9jYXRpb24oKTtcbiAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBjYW1lcmEgYW5kIG1pY3JvcGhvbmUgcGVybWlzc2lvbnMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlcXVlc3RNZWRpYVBlcm1pc3Npb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBSZXF1ZXN0aW5nIG1lZGlhIHBlcm1pc3Npb25zLi4uJyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUsIHZpZGVvOiB0cnVlIH0pO1xuICAgICAgLy8gU3RvcCB0cmFja3MgaW1tZWRpYXRlbHkgLSB3ZSBqdXN0IG5lZWRlZCB0aGUgcGVybWlzc2lvblxuICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBNZWRpYSBwZXJtaXNzaW9ucyBncmFudGVkJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1RBUyBERUJVR10gTWVkaWEgcGVybWlzc2lvbnMgZGVuaWVkIG9yIHVuYXZhaWxhYmxlOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCBnZW9sb2NhdGlvbiBpbW1lZGlhdGVseSBvbiBpbml0LlxuICAgKiBPbmx5IGZvciByZWd1bGFyIHVzZXJzIChub3Qgb3duZXJzL2JhY2tvZmZpY2UpLlxuICAgKiBJZiB1c2VyIGFsbG93cywgc3RvcmUgcG9zaXRpb24gYW5kIHNlbmQgdG8gYmFja2VuZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVxdWVzdEdlb2xvY2F0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE9ubHkgcmVxdWVzdCBnZW9sb2NhdGlvbiBmb3IgcmVndWxhciB1c2Vycywgbm90IG93bmVycy9iYWNrb2ZmaWNlXG4gICAgaWYgKHRoaXMuaXNPd25lciB8fCB0aGlzLmlzQmFja29mZmljZSkge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFNraXBwaW5nIGdlb2xvY2F0aW9uIGZvciBvd25lci9iYWNrb2ZmaWNlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFJlcXVlc3RpbmcgZ2VvbG9jYXRpb24uLi4nKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGF3YWl0IHRoaXMuZ2VvbG9jYXRpb25TZXJ2aWNlLmdldEN1cnJlbnRQb3NpdGlvbigpO1xuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIEdlb2xvY2F0aW9uIG9idGFpbmVkOicsIHBvc2l0aW9uKTtcbiAgICAgIHRoaXMuZ2VvUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgIC8vIFNlbmQgdG8gYmFja2VuZCB3aGVuIHZpZGVvQ2FsbElkIGlzIGF2YWlsYWJsZVxuICAgICAgdGhpcy5zZW5kR2VvbG9jYXRpb25Ub0JhY2tlbmQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIEdlb2xvY2F0aW9uIGRlbmllZCBvciB1bmF2YWlsYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIGdlb2xvY2F0aW9uIHRvIGJhY2tlbmQgdmlhIG1vZGlmeSB1c2VyIGVuZHBvaW50LlxuICAgKiBOT1RFOiBFbmRwb2ludCBjYWxsIGlzIHByZXBhcmVkIGJ1dCBtYXkgbm90IGJlIGFjdGl2ZSB5ZXQuXG4gICAqL1xuICBwcml2YXRlIHNlbmRHZW9sb2NhdGlvblRvQmFja2VuZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZ2VvUG9zaXRpb24gfHwgIXRoaXMudmlkZW9DYWxsSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gU2VuZGluZyBnZW9sb2NhdGlvbiB0byBiYWNrZW5kLi4uJyk7XG4gICAgY29uc3QgYm9keTogUHJveHlWaWRlb1VzZXJNb2RpZnlSZXF1ZXN0ID0ge1xuICAgICAgdXNlcklkOiB0aGlzLmN1cnJlbnRVc2VyPy5pZCxcbiAgICAgIHZpZGVvQ2FsbElkOiB0aGlzLnZpZGVvQ2FsbElkLFxuICAgICAgYWN0aW9uOiBVc2VyQ2FsbEFjdGlvbi5BQ1RJVkFURV9HRU9MT0NBVElPTixcbiAgICAgIGxhdGl0dWRlOiB0aGlzLmdlb1Bvc2l0aW9uLmxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlOiB0aGlzLmdlb1Bvc2l0aW9uLmxvbmdpdHVkZSxcbiAgICB9O1xuICAgIFxuICAgIHRoaXMudGFzU2VydmljZS5tb2RpZnlQcm94eVZpZGVvVXNlcihib2R5KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4gY29uc29sZS5sb2coJ1tUQVMgREVCVUddIEdlb2xvY2F0aW9uIHNlbnQgc3VjY2Vzc2Z1bGx5JyksXG4gICAgICBlcnJvcjogKGVycikgPT4gY29uc29sZS5lcnJvcignW1RBUyBERUJVR10gRmFpbGVkIHRvIHNlbmQgZ2VvbG9jYXRpb246JywgZXJyKSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBUYXNXYWl0aW5nUm9vbUNvbXBvbmVudC5uZ09uRGVzdHJveScpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudGFzU2VydmljZS5zdG9wU3RhdHVzUG9sbGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHN0YXR1cyB0byBnZXQgc2Vzc2lvbiBpbmZvXG4gICAqL1xuICBwcml2YXRlIGNoZWNrU3RhdHVzKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBjaGVja1N0YXR1cyBjYWxsZWQgd2l0aDonLCB7XG4gICAgICByb29tVHlwZTogdGhpcy5yb29tVHlwZSxcbiAgICAgIGVudGl0eUlkOiB0aGlzLmVudGl0eUlkLFxuICAgICAgdGVuYW50OiB0aGlzLnRlbmFudCxcbiAgICAgIGJ1c2luZXNzUm9sZTogdGhpcy5idXNpbmVzc1JvbGUsXG4gICAgICBjdXJyZW50VXNlcjogdGhpcy5jdXJyZW50VXNlcixcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkNIRUNLSU5HX1NUQVRVUztcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgY29uc3Qgc3RhdHVzUGFyYW1zID0ge1xuICAgICAgcm9vbVR5cGU6IHRoaXMucm9vbVR5cGUsXG4gICAgICBlbnRpdHlJZDogdGhpcy5lbnRpdHlJZCxcbiAgICAgIHRlbmFudDogdGhpcy50ZW5hbnQsXG4gICAgICBidXNpbmVzc1JvbGU6IHRoaXMuYnVzaW5lc3NSb2xlLFxuICAgIH07XG5cbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gQ2FsbGluZyBnZXRQcm94eVZpZGVvU3RhdHVzLi4uJyk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLmdldFByb3h5VmlkZW9TdGF0dXMoc3RhdHVzUGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gcmVzcG9uc2UuY29udGVudDtcblxuICAgICAgICAgIC8vIFN0b3JlIHNlc3Npb24gaW5mbyBmcm9tIHJlc3BvbnNlXG4gICAgICAgICAgdGhpcy5yZXNvbHZlZFNlc3Npb25JZCA9IGNvbnRlbnQuc2Vzc2lvbklkO1xuICAgICAgICAgIHRoaXMucmVzb2x2ZWRBcHBvaW50bWVudElkID0gY29udGVudC5hcHBvaW50bWVudElkO1xuICAgICAgICAgIHRoaXMudmlkZW9DYWxsSWQgPSBjb250ZW50LnZpZGVvQ2FsbElkO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFN0YXR1cyByZXNwb25zZTonLCBjb250ZW50KTtcblxuICAgICAgICAgIC8vIFRyeSB0byBzZW5kIGdlb2xvY2F0aW9uIG5vdyB0aGF0IHdlIGhhdmUgdmlkZW9DYWxsSWRcbiAgICAgICAgICB0aGlzLnNlbmRHZW9sb2NhdGlvblRvQmFja2VuZCgpO1xuXG4gICAgICAgICAgLy8gU3RhcnQgcG9sbGluZyBmb3Igc3RhdHVzIHVwZGF0ZXNcbiAgICAgICAgICB0aGlzLnRhc1NlcnZpY2Uuc3RhcnRTdGF0dXNQb2xsaW5nKHN0YXR1c1BhcmFtcyk7XG5cbiAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gam9pbmFibGUgc3RhdHVzXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMudGFzU2VydmljZS5qb2luYWJsZSQuc3Vic2NyaWJlKChqb2luYWJsZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZUpvaW5hYmxlQ2hhbmdlKGpvaW5hYmxlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVEFTIERFQlVHXSBTdGF0dXMgY2hlY2sgZmFpbGVkOicsIGVycik7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuRVJST1I7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRXJyb3IgY2hlY2tpbmcgc2Vzc2lvbiBzdGF0dXMuIFBsZWFzZSB0cnkgYWdhaW4uJztcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgY2hhbmdlcyB0byBqb2luYWJsZSBzdGF0dXNcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlSm9pbmFibGVDaGFuZ2Uoam9pbmFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gaGFuZGxlSm9pbmFibGVDaGFuZ2UgY2FsbGVkJywge1xuICAgICAgam9pbmFibGUsXG4gICAgICBjdXJyZW50U3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICByZXNvbHZlZFNlc3Npb25JZDogdGhpcy5yZXNvbHZlZFNlc3Npb25JZCxcbiAgICB9KTtcblxuICAgIHRoaXMuaXNKb2luYWJsZSA9IGpvaW5hYmxlO1xuXG4gICAgLy8gRG9uJ3QgdXBkYXRlIHN0YXRlIGlmIGFscmVhZHkgZ2V0dGluZyB0b2tlbiwgam9pbmluZywgb3IgaW4gZXJyb3JcbiAgICBpZiAoXG4gICAgICB0aGlzLnN0YXRlID09PSBXYWl0aW5nUm9vbVN0YXRlLkdFVFRJTkdfVE9LRU4gfHxcbiAgICAgIHRoaXMuc3RhdGUgPT09IFdhaXRpbmdSb29tU3RhdGUuSk9JTklORyB8fFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gV2FpdGluZ1Jvb21TdGF0ZS5FUlJPUlxuICAgICkge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFNraXBwaW5nIHN0YXRlIHVwZGF0ZSAtIGFscmVhZHkgaW46JywgdGhpcy5zdGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQm90aCB1c2VycyBhbmQgb3duZXJzOiBzaG93IGpvaW4gYnV0dG9uIGJhc2VkIG9uIGpvaW5hYmxlXG4gICAgaWYgKGpvaW5hYmxlKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gSm9pbmFibGUgaXMgdHJ1ZSwgc2hvd2luZyBqb2luIGJ1dHRvbicpO1xuICAgICAgdGhpcy5zdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuUkVBRFk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBXYWl0aW5nIGZvciBqb2luYWJsZS4uLicpO1xuICAgICAgdGhpcy5zdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuV0FJVElOR19GT1JfSk9JTkFCTEU7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyB0aGUgam9pbiBidXR0b24uXG4gICAqIENhbGxzIC9zdGFydCB0byBnZXQgdG9rZW4gdGhlbiBhdXRvLWpvaW5zLlxuICAgKi9cbiAgcHVibGljIGpvaW5TZXNzaW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRTZXNzaW9uQW5kSm9pbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHVzZXIgaGFzIG93bmVyL2JhY2tvZmZpY2Ugcm9sZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgaXNCYWNrb2ZmaWNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmJ1c2luZXNzUm9sZSA9PT0gVGFzQnVzaW5lc3NSb2xlLkJBQ0tPRkZJQ0UgfHxcbiAgICAgIHRoaXMuYnVzaW5lc3NSb2xlID09PSBUYXNCdXNpbmVzc1JvbGUuQURNSU5fTUFOQUdFUiB8fFxuICAgICAgdGhpcy5idXNpbmVzc1JvbGUgPT09IFRhc0J1c2luZXNzUm9sZS5NQU5BR0VSXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBzZXNzaW9uIGFuZCBqb2luIC0gY2FsbGVkIHdoZW4gdXNlciBjbGlja3Mgam9pbiBidXR0b25cbiAgICovXG4gIHByaXZhdGUgc3RhcnRTZXNzaW9uQW5kSm9pbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRTZXNzaW9uSWQpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkVSUk9SO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnU2Vzc2lvbiBJRCBub3QgYXZhaWxhYmxlJztcbiAgICAgIHRoaXMudGFzU2VydmljZS5zdG9wU3RhdHVzUG9sbGluZygpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkdFVFRJTkdfVE9LRU47XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gQ2FsbGluZyAvc3RhcnQgZm9yIHNlc3Npb246JywgdGhpcy5yZXNvbHZlZFNlc3Npb25JZCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlXG4gICAgICAgIC5zdGFydFByb3h5VmlkZW9TZXNzaW9uKHtcbiAgICAgICAgICBzZXNzaW9uSWQ6IHRoaXMucmVzb2x2ZWRTZXNzaW9uSWQsXG4gICAgICAgICAgbmFtZTogdGhpcy5jdXJyZW50VXNlci5uYW1lLFxuICAgICAgICAgIGxhc3RuYW1lOiB0aGlzLmN1cnJlbnRVc2VyLmxhc3RuYW1lLFxuICAgICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAodG9rZW5SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFRva2VuIHJlc3BvbnNlOicsIHRva2VuUmVzcG9uc2UpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBIYW5kbGUgY2FzZSB3aGVyZSBIVFRQIGFkYXB0ZXIgcmV0dXJucyBlcnJvciBpbiBuZXh0IGluc3RlYWQgb2YgZXJyb3IgaGFuZGxlclxuICAgICAgICAgICAgaWYgKCF0b2tlblJlc3BvbnNlPy5jb250ZW50Py50b2tlbikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVEFTIERFQlVHXSBJbnZhbGlkIHRva2VuIHJlc3BvbnNlOicsIHRva2VuUmVzcG9uc2UpO1xuICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gV2FpdGluZ1Jvb21TdGF0ZS5FUlJPUjtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAodG9rZW5SZXNwb25zZSBhcyBhbnkpPy5tZXNzYWdlIHx8ICdFcnJvciBhbCBpbmljaWFyIGxhIHNlc2nDs24uIFJlc3B1ZXN0YSBpbnbDoWxpZGEuJztcbiAgICAgICAgICAgICAgdGhpcy50YXNTZXJ2aWNlLnN0b3BTdGF0dXNQb2xsaW5nKCk7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gVG9rZW4gb2J0YWluZWQgc3VjY2Vzc2Z1bGx5LCBqb2luaW5nIHNlc3Npb24uLi4nKTtcbiAgICAgICAgICAgIHRoaXMudG9rZW4gPSB0b2tlblJlc3BvbnNlLmNvbnRlbnQudG9rZW47XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gV2FpdGluZ1Jvb21TdGF0ZS5KT0lOSU5HO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBBdXRvLWpvaW4gaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIHRoaXMudGFzU2VydmljZS5zdG9wU3RhdHVzUG9sbGluZygpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnam9pbmluZycpO1xuICAgICAgICAgICAgdGhpcy5vcGVuVmlkZW9DYWxsTW9kYWwoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVEFTIERFQlVHXSAvc3RhcnQgcmVxdWVzdCBmYWlsZWQ6JywgZXJyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkVSUk9SO1xuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8ubWVzc2FnZSB8fCAnRXJyb3IgYWwgaW5pY2lhciBsYSBzZXNpw7NuLiBQb3IgZmF2b3IsIGludGVudGUgbnVldmFtZW50ZS4nO1xuICAgICAgICAgICAgdGhpcy50YXNTZXJ2aWNlLnN0b3BTdGF0dXNQb2xsaW5nKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gU3RhdGUgc2V0IHRvIEVSUk9SLCBlcnJvck1lc3NhZ2U6JywgdGhpcy5lcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSB3YWl0aW5nIHJvb21cbiAgICovXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhc1NlcnZpY2Uuc3RvcFN0YXR1c1BvbGxpbmcoKTtcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmRpc21pc3MoJ2NhbmNlbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJ5IGFmdGVyIGFuIGVycm9yXG4gICAqL1xuICByZXRyeSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gV2FpdGluZ1Jvb21TdGF0ZS5DSEVDS0lOR19TVEFUVVM7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLnRva2VuID0gJyc7XG4gICAgdGhpcy5jaGVja1N0YXR1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVmlkZW9DYWxsTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGFzVmlkZW9jYWxsQ29tcG9uZW50LCB7XG4gICAgICBzaXplOiAneGwnLFxuICAgICAgd2luZG93Q2xhc3M6ICd0YXMtdmlkZW8tbW9kYWwnLFxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zZXNzaW9uSWQgPSB0aGlzLnJlc29sdmVkU2Vzc2lvbklkO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudG9rZW4gPSB0aGlzLnRva2VuO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuYXBwb2ludG1lbnRJZCA9IHRoaXMucmVzb2x2ZWRBcHBvaW50bWVudElkO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudmlkZW9DYWxsSWQgPSB0aGlzLnZpZGVvQ2FsbElkO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlcklkID0gdGhpcy5jdXJyZW50VXNlcj8uaWQ7XG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50ZW5hbnQgPSB0aGlzLnRlbmFudDtcbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmJ1c2luZXNzUm9sZSA9IHRoaXMuYnVzaW5lc3NSb2xlO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaXNSZXR1cm5pbmdGcm9tUGlwID0gZmFsc2U7XG5cbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLnJlc3VsdC50aGVuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYgPSBudWxsO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YXMtd2FpdGluZy1yb29tXCI+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwid2FpdGluZy1yb29tLWhlYWRlclwiPlxuICAgIDxoMiBjbGFzcz1cImhlYWRlci10aXRsZVwiPkluaWNpYXIgdHVybm88L2gyPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2UtYnRuXCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XG4gICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIENvbnRlbnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJ3YWl0aW5nLXJvb20tY29udGVudFwiPlxuICAgIDwhLS0gQ0hFQ0tJTkdfU1RBVFVTIFN0YXRlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1jb250YWluZXJcIiAqbmdJZj1cInN0YXRlID09PSBXYWl0aW5nUm9vbVN0YXRlLkNIRUNLSU5HX1NUQVRVU1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXRlLWljb24gbG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8cCBjbGFzcz1cInN0YXRlLW1lc3NhZ2VcIj5WZXJpZmljYW5kbyBlc3RhZG8gZGUgbGEgc2VzacOzbi4uLjwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gV0FJVElOR19GT1JfSk9JTkFCTEUgU3RhdGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cInN0YXRlLWNvbnRhaW5lclwiICpuZ0lmPVwic3RhdGUgPT09IFdhaXRpbmdSb29tU3RhdGUuV0FJVElOR19GT1JfSk9JTkFCTEVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1pY29uIGxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgY2xhc3M9XCJzdGF0ZS1tZXNzYWdlXCI+RXNwZXJhbmRvIHF1ZSBsYSBzZXNpw7NuIGVzdMOpIGRpc3BvbmlibGUuLi48L3A+XG4gICAgICA8cCBjbGFzcz1cInN0YXRlLXN1Ym1lc3NhZ2VcIj5Qb3IgZmF2b3IsIHBlcm1hbmVjw6kgZW4gZXN0YSBwYW50YWxsYS48L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFJFQURZIFN0YXRlIChKb2luIGJ1dHRvbiBlbmFibGVkKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdGUtY29udGFpbmVyXCIgKm5nSWY9XCJzdGF0ZSA9PT0gV2FpdGluZ1Jvb21TdGF0ZS5SRUFEWVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXRlLWljb24gcmVhZHlcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVjay1jaXJjbGVcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwIGNsYXNzPVwic3RhdGUtbWVzc2FnZSBzdWNjZXNzXCI+wqFMYSBzYWxhIGVzdMOhIGxpc3RhITwvcD5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGFjdGlvbi1idG4gam9pbi1idG5cIiAoY2xpY2spPVwiam9pblNlc3Npb24oKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNpZ24taW5cIj48L2k+XG4gICAgICAgIFVuaXJzZSBhIGxhIGxsYW1hZGFcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBKT0lOSU5HIFN0YXRlIChBdXRvLWpvaW5pbmcpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1jb250YWluZXJcIiAqbmdJZj1cInN0YXRlID09PSBXYWl0aW5nUm9vbVN0YXRlLkpPSU5JTkdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1pY29uIGxvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgY2xhc3M9XCJzdGF0ZS1tZXNzYWdlXCI+SW5ncmVzYW5kbyBhIGxhIGxsYW1hZGEuLi48L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEdFVFRJTkdfVE9LRU4gU3RhdGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cInN0YXRlLWNvbnRhaW5lclwiICpuZ0lmPVwic3RhdGUgPT09IFdhaXRpbmdSb29tU3RhdGUuR0VUVElOR19UT0tFTlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXRlLWljb24gbG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8cCBjbGFzcz1cInN0YXRlLW1lc3NhZ2VcIj5Db25lY3RhbmRvLi4uPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBFUlJPUiBTdGF0ZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdGUtY29udGFpbmVyXCIgKm5nSWY9XCJzdGF0ZSA9PT0gV2FpdGluZ1Jvb21TdGF0ZS5FUlJPUlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXRlLWljb24gZXJyb3JcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvaT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHAgY2xhc3M9XCJzdGF0ZS1tZXNzYWdlIGVycm9yXCI+T2N1cnJpw7MgdW4gZXJyb3I8L3A+XG4gICAgICA8cCBjbGFzcz1cImVycm9yLWRldGFpbHNcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGFjdGlvbi1idG4gcmV0cnktYnRuXCIgKGNsaWNrKT1cInJldHJ5KClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1yZWZyZXNoXCI+PC9pPlxuICAgICAgICBSZWludGVudGFyXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSXZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUVMLFdBQVcsRUFDWCxlQUFlLEVBQ2YsV0FBVyxFQUNYLGNBQWMsR0FFZixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7QUFFakYsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBbUMsQ0FBQTtJQUNuQyxpRUFBNkMsQ0FBQTtJQUM3QyxtQ0FBZSxDQUFBO0lBQ2YsbURBQStCLENBQUE7SUFDL0IsdUNBQW1CLENBQUE7SUFDbkIsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQU9ELE1BQU0sT0FBTyx1QkFBdUI7SUF3RGxDLFlBQ1MsV0FBMkIsRUFDMUIsVUFBc0IsRUFDdEIsa0JBQXNDLEVBQ3RDLFlBQXNCLEVBQ3RCLEdBQXNCO1FBSnZCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FB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eyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBUYXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VvbG9jYXRpb25TZXJ2aWNlLCBHZW9Qb3NpdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dlb2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBUYXNDdXJyZW50VXNlcixcbiAgVGFzUm9vbVR5cGUsXG4gIFRhc0J1c2luZXNzUm9sZSxcbiAgVGFzVXNlclJvbGUsXG4gIFVzZXJDYWxsQWN0aW9uLFxuICBQcm94eVZpZGVvVXNlck1vZGlmeVJlcXVlc3QsXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFzVmlkZW9jYWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBlbnVtIFdhaXRpbmdSb29tU3RhdGUge1xuICBDSEVDS0lOR19TVEFUVVMgPSAnQ0hFQ0tJTkdfU1RBVFVTJyxcbiAgV0FJVElOR19GT1JfSk9JTkFCTEUgPSAnV0FJVElOR19GT1JfSk9JTkFCTEUnLFxuICBSRUFEWSA9ICdSRUFEWScsXG4gIEdFVFRJTkdfVE9LRU4gPSAnR0VUVElOR19UT0tFTicsXG4gIEpPSU5JTkcgPSAnSk9JTklORycsXG4gIEVSUk9SID0gJ0VSUk9SJyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFzLXdhaXRpbmctcm9vbScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXMtd2FpdGluZy1yb29tLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNXYWl0aW5nUm9vbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gU3RhdHVzIGVuZHBvaW50IHBhcmFtc1xuICBASW5wdXQoKSByb29tVHlwZTogVGFzUm9vbVR5cGUgPSBUYXNSb29tVHlwZS5UQVM7XG4gIEBJbnB1dCgpIGVudGl0eUlkITogbnVtYmVyO1xuICBASW5wdXQoKSB0ZW5hbnQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJ1c2luZXNzUm9sZTogVGFzQnVzaW5lc3NSb2xlID0gVGFzQnVzaW5lc3NSb2xlLlVTRVI7XG5cbiAgLy8gVXNlciBpbmZvIGZvciB0b2tlbiByZXF1ZXN0XG4gIEBJbnB1dCgpIGN1cnJlbnRVc2VyITogVGFzQ3VycmVudFVzZXI7XG5cbiAgLy8gQ29tcG9uZW50IHN0YXRlXG4gIHB1YmxpYyBzdGF0ZTogV2FpdGluZ1Jvb21TdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuQ0hFQ0tJTkdfU1RBVFVTO1xuICBwdWJsaWMgV2FpdGluZ1Jvb21TdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGU7IC8vIEV4cG9zZSBlbnVtIHRvIHRlbXBsYXRlXG4gIHB1YmxpYyBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgaXNKb2luYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFNlc3Npb24gZGF0YSBmcm9tIHN0YXR1cyByZXNwb25zZVxuICBwcml2YXRlIHJlc29sdmVkU2Vzc2lvbklkOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSByZXNvbHZlZEFwcG9pbnRtZW50SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHRva2VuOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSB2aWRlb0NhbGxJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gU3Vic2NyaXB0aW9uc1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgdmlkZW9DYWxsTW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gR2VvbG9jYXRpb25cbiAgcHJpdmF0ZSBnZW9Qb3NpdGlvbjogR2VvUG9zaXRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBnZW9XYXNEZW5pZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVHJhY2tzIGlmIHVzZXIgZGVuaWVkIGdlbyBwZXJtaXNzaW9uXG4gIHByaXZhdGUgZ2VvUmVzdWx0U2VudDogYm9vbGVhbiA9IGZhbHNlOyAvLyBUcmFja3MgaWYgZ2VvIHJlc3VsdCB3YXMgYWxyZWFkeSBzZW50XG5cbiAgLy8gUGVybWlzc2lvbiB0cmFja2luZyBmb3IgYXV0by1qb2luXG4gIHByaXZhdGUgbWVkaWFQZXJtaXNzaW9uc0dyYW50ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBnZW9QZXJtaXNzaW9uc1Jlc29sdmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQXV0by1yZXRyeSB0cmFja2luZ1xuICBwcml2YXRlIHJldHJ5Q291bnQ6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUFYX1JFVFJJRVMgPSAxO1xuXG4gIC8qKiBXaGV0aGVyIGN1cnJlbnQgdXNlciBpcyBhbiBvd25lciAqL1xuICBwdWJsaWMgZ2V0IGlzT3duZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXI/LnJvbGUgPT09IFRhc1VzZXJSb2xlLk9XTkVSO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgd2UncmUgc3RpbGwgcmVxdWVzdGluZyBwZXJtaXNzaW9ucyAoZm9yIHRlbXBsYXRlKSAqL1xuICBwdWJsaWMgZ2V0IGlzUmVxdWVzdGluZ1Blcm1pc3Npb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tZWRpYVBlcm1pc3Npb25zR3JhbnRlZCB8fCAoIXRoaXMuZ2VvUGVybWlzc2lvbnNSZXNvbHZlZCAmJiAhdGhpcy5pc093bmVyICYmICF0aGlzLmlzQmFja29mZmljZSk7XG4gIH1cblxuICAvKiogV2hldGhlciB3ZSdyZSB3YWl0aW5nIGZvciBhZG1pc3Npb24gYWZ0ZXIgcGVybWlzc2lvbnMgZ3JhbnRlZCAoZm9yIHRlbXBsYXRlKSAqL1xuICBwdWJsaWMgZ2V0IGlzV2FpdGluZ0ZvckFkbWlzc2lvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tZWRpYVBlcm1pc3Npb25zR3JhbnRlZCAmJiBcbiAgICAgICAgICAgKHRoaXMuZ2VvUGVybWlzc2lvbnNSZXNvbHZlZCB8fCB0aGlzLmlzT3duZXIgfHwgdGhpcy5pc0JhY2tvZmZpY2UpICYmIFxuICAgICAgICAgICAhdGhpcy5pc0pvaW5hYmxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcbiAgICBwcml2YXRlIHRhc1NlcnZpY2U6IFRhc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBnZW9sb2NhdGlvblNlcnZpY2U6IEdlb2xvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gVGFzV2FpdGluZ1Jvb21Db21wb25lbnQubmdPbkluaXQnKTtcbiAgICB0aGlzLnJlcXVlc3RNZWRpYVBlcm1pc3Npb25zKCk7XG4gICAgLy8gUmVxdWVzdCBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uIGFuZCBjYWNoZSBpdCAoYnV0IGRvbid0IHNlbmQgdG8gYmFja2VuZCB5ZXQpXG4gICAgLy8gVGhlIGNhY2hlZCBwb3NpdGlvbiB3aWxsIGJlIHNlbnQgd2hlbiBvd25lciByZXF1ZXN0cyBpdCB2aWEgYWN0aXZhdGVHZW9cbiAgICB0aGlzLnJlcXVlc3RHZW9sb2NhdGlvbigpO1xuICAgIHRoaXMuY2hlY2tTdGF0dXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IGNhbWVyYSBhbmQgbWljcm9waG9uZSBwZXJtaXNzaW9ucy5cbiAgICogVHJpZ2dlcnMgYXV0by1qb2luIHdoZW4gcGVybWlzc2lvbnMgYXJlIHJlc29sdmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0TWVkaWFQZXJtaXNzaW9ucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gUmVxdWVzdGluZyBtZWRpYSBwZXJtaXNzaW9ucy4uLicpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlLCB2aWRlbzogdHJ1ZSB9KTtcbiAgICAgIC8vIFN0b3AgdHJhY2tzIGltbWVkaWF0ZWx5IC0gd2UganVzdCBuZWVkZWQgdGhlIHBlcm1pc3Npb25cbiAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gTWVkaWEgcGVybWlzc2lvbnMgZ3JhbnRlZCcpO1xuICAgICAgdGhpcy5tZWRpYVBlcm1pc3Npb25zR3JhbnRlZCA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW1RBUyBERUJVR10gTWVkaWEgcGVybWlzc2lvbnMgZGVuaWVkIG9yIHVuYXZhaWxhYmxlOicsIGVycm9yKTtcbiAgICAgIC8vIFN0aWxsIGFsbG93IGpvaW5pbmcgLSBzb21lIHVzZXJzIG1heSBub3QgaGF2ZSBjYW1lcmEvbWljXG4gICAgICB0aGlzLm1lZGlhUGVybWlzc2lvbnNHcmFudGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy50cnlBdXRvSm9pbigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gYW5kIGNhY2hlIHJlc3VsdC5cbiAgICogT25seSBmb3IgcmVndWxhciB1c2VycyAobm90IG93bmVycy9iYWNrb2ZmaWNlKS5cbiAgICogQWN0dWFsIHNlbmQgdG8gYmFja2VuZCBoYXBwZW5zIGFmdGVyIHdlIGhhdmUgdmlkZW9DYWxsSWQuXG4gICAqIFRyaWdnZXJzIGF1dG8tam9pbiB3aGVuIGdlb2xvY2F0aW9uIGlzIHJlc29sdmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0R2VvbG9jYXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gT25seSByZXF1ZXN0IGdlb2xvY2F0aW9uIGZvciByZWd1bGFyIHVzZXJzLCBub3Qgb3duZXJzL2JhY2tvZmZpY2VcbiAgICBpZiAodGhpcy5pc093bmVyIHx8IHRoaXMuaXNCYWNrb2ZmaWNlKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gU2tpcHBpbmcgZ2VvbG9jYXRpb24gZm9yIG93bmVyL2JhY2tvZmZpY2UnKTtcbiAgICAgIHRoaXMuZ2VvUGVybWlzc2lvbnNSZXNvbHZlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFJlcXVlc3RpbmcgZ2VvbG9jYXRpb24gcGVybWlzc2lvbi4uLicpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gYXdhaXQgdGhpcy5nZW9sb2NhdGlvblNlcnZpY2UuZ2V0Q3VycmVudFBvc2l0aW9uKCk7XG4gICAgXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gR2VvbG9jYXRpb24gZ3JhbnRlZDonLCBwb3NpdGlvbik7XG4gICAgICB0aGlzLmdlb1Bvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICB0aGlzLmdlb1dhc0RlbmllZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gR2VvbG9jYXRpb24gZGVuaWVkIG9yIHVuYXZhaWxhYmxlJyk7XG4gICAgICB0aGlzLmdlb1Bvc2l0aW9uID0gbnVsbDtcbiAgICAgIHRoaXMuZ2VvV2FzRGVuaWVkID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5nZW9QZXJtaXNzaW9uc1Jlc29sdmVkID0gdHJ1ZTtcbiAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgdmlkZW9DYWxsSWQsIHNlbmQgbm93LiBPdGhlcndpc2UsIGl0IHdpbGwgYmUgc2VudCBhZnRlciBzdGF0dXMgcmVzcG9uc2UuXG4gICAgdGhpcy5zZW5kR2VvUmVzdWx0VG9CYWNrZW5kKCk7XG4gICAgdGhpcy50cnlBdXRvSm9pbigpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIGdlbyByZXN1bHQgdG8gYmFja2VuZCAoZ3JhbnRlZCBvciBkZW5pZWQpLlxuICAgKiBPbmx5IHNlbmRzIGlmIHZpZGVvQ2FsbElkIGlzIGF2YWlsYWJsZSBhbmQgbm90IGFscmVhZHkgc2VudC5cbiAgICovXG4gIHByaXZhdGUgc2VuZEdlb1Jlc3VsdFRvQmFja2VuZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsSWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBDYW5ub3Qgc2VuZCBnZW8gcmVzdWx0OiB2aWRlb0NhbGxJZCBub3QgYXZhaWxhYmxlIHlldCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdlb1Jlc3VsdFNlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBHZW8gcmVzdWx0IGFscmVhZHkgc2VudCwgc2tpcHBpbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZW9Qb3NpdGlvbikge1xuICAgICAgdGhpcy5zZW5kR2VvbG9jYXRpb25Ub0JhY2tlbmQoKTtcbiAgICAgIHRoaXMuZ2VvUmVzdWx0U2VudCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdlb1dhc0RlbmllZCkge1xuICAgICAgdGhpcy5zZW5kR2VvRGVuaWFsVG9CYWNrZW5kKCk7XG4gICAgICB0aGlzLmdlb1Jlc3VsdFNlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIGdyYW50ZWQgZ2VvbG9jYXRpb24gdG8gYmFja2VuZCB2aWEgbW9kaWZ5IHVzZXIgZW5kcG9pbnQuXG4gICAqL1xuICBwcml2YXRlIHNlbmRHZW9sb2NhdGlvblRvQmFja2VuZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZ2VvUG9zaXRpb24gfHwgIXRoaXMudmlkZW9DYWxsSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gU2VuZGluZyBnZW9sb2NhdGlvbiB0byBiYWNrZW5kLi4uJyk7XG4gICAgY29uc3QgYm9keTogUHJveHlWaWRlb1VzZXJNb2RpZnlSZXF1ZXN0ID0ge1xuICAgICAgdmlkZW9DYWxsSWQ6IHRoaXMudmlkZW9DYWxsSWQsXG4gICAgICBhY3Rpb246IFVzZXJDYWxsQWN0aW9uLkFDVElWQVRFX0dFT0xPQ0FUSU9OLFxuICAgICAgbGF0aXR1ZGU6IHRoaXMuZ2VvUG9zaXRpb24ubGF0aXR1ZGUsXG4gICAgICBsb25naXR1ZGU6IHRoaXMuZ2VvUG9zaXRpb24ubG9uZ2l0dWRlLFxuICAgIH07XG4gICAgXG4gICAgdGhpcy50YXNTZXJ2aWNlLm1vZGlmeVByb3h5VmlkZW9Vc2VyKGJvZHkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gR2VvbG9jYXRpb24gc2VudCBzdWNjZXNzZnVsbHknKSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLmVycm9yKCdbVEFTIERFQlVHXSBGYWlsZWQgdG8gc2VuZCBnZW9sb2NhdGlvbjonLCBlcnIpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgZ2VvbG9jYXRpb24gZGVuaWFsIHRvIGJhY2tlbmQgdmlhIG1vZGlmeSB1c2VyIGVuZHBvaW50LlxuICAgKi9cbiAgcHJpdmF0ZSBzZW5kR2VvRGVuaWFsVG9CYWNrZW5kKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52aWRlb0NhbGxJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBTZW5kaW5nIGdlbyBkZW5pYWwgdG8gYmFja2VuZC4uLicpO1xuICAgIGNvbnN0IGJvZHk6IFByb3h5VmlkZW9Vc2VyTW9kaWZ5UmVxdWVzdCA9IHtcbiAgICAgIHZpZGVvQ2FsbElkOiB0aGlzLnZpZGVvQ2FsbElkLFxuICAgICAgYWN0aW9uOiBVc2VyQ2FsbEFjdGlvbi5ERU5ZX0dFT0xPQ0FUSU9OLFxuICAgIH07XG4gICAgXG4gICAgdGhpcy50YXNTZXJ2aWNlLm1vZGlmeVByb3h5VmlkZW9Vc2VyKGJvZHkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gR2VvIGRlbmlhbCBzZW50IHN1Y2Nlc3NmdWxseScpLFxuICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUuZXJyb3IoJ1tUQVMgREVCVUddIEZhaWxlZCB0byBzZW5kIGdlbyBkZW5pYWw6JywgZXJyKSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBUYXNXYWl0aW5nUm9vbUNvbXBvbmVudC5uZ09uRGVzdHJveScpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudGFzU2VydmljZS5zdG9wU3RhdHVzUG9sbGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHN0YXR1cyB0byBnZXQgc2Vzc2lvbiBpbmZvXG4gICAqL1xuICBwcml2YXRlIGNoZWNrU3RhdHVzKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBjaGVja1N0YXR1cyBjYWxsZWQgd2l0aDonLCB7XG4gICAgICByb29tVHlwZTogdGhpcy5yb29tVHlwZSxcbiAgICAgIGVudGl0eUlkOiB0aGlzLmVudGl0eUlkLFxuICAgICAgdGVuYW50OiB0aGlzLnRlbmFudCxcbiAgICAgIGJ1c2luZXNzUm9sZTogdGhpcy5idXNpbmVzc1JvbGUsXG4gICAgICBjdXJyZW50VXNlcjogdGhpcy5jdXJyZW50VXNlcixcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkNIRUNLSU5HX1NUQVRVUztcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgY29uc3Qgc3RhdHVzUGFyYW1zID0ge1xuICAgICAgcm9vbVR5cGU6IHRoaXMucm9vbVR5cGUsXG4gICAgICBlbnRpdHlJZDogdGhpcy5lbnRpdHlJZCxcbiAgICAgIHRlbmFudDogdGhpcy50ZW5hbnQsXG4gICAgICBidXNpbmVzc1JvbGU6IHRoaXMuYnVzaW5lc3NSb2xlLFxuICAgIH07XG5cbiAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gQ2FsbGluZyBnZXRQcm94eVZpZGVvU3RhdHVzLi4uJyk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLmdldFByb3h5VmlkZW9TdGF0dXMoc3RhdHVzUGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gcmVzcG9uc2UuY29udGVudDtcblxuICAgICAgICAgIC8vIFN0b3JlIHNlc3Npb24gaW5mbyBmcm9tIHJlc3BvbnNlXG4gICAgICAgICAgdGhpcy5yZXNvbHZlZFNlc3Npb25JZCA9IGNvbnRlbnQuc2Vzc2lvbklkO1xuICAgICAgICAgIHRoaXMucmVzb2x2ZWRBcHBvaW50bWVudElkID0gY29udGVudC5hcHBvaW50bWVudElkO1xuICAgICAgICAgIHRoaXMudmlkZW9DYWxsSWQgPSBjb250ZW50LnZpZGVvQ2FsbElkO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFN0YXR1cyByZXNwb25zZTonLCBjb250ZW50KTtcblxuICAgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgdmlkZW9DYWxsSWQsIHNlbmQgZ2VvIHJlc3VsdCBpZiBub3QgYWxyZWFkeSBzZW50XG4gICAgICAgICAgdGhpcy5zZW5kR2VvUmVzdWx0VG9CYWNrZW5kKCk7XG5cbiAgICAgICAgICAvLyBTdGFydCBwb2xsaW5nIGZvciBzdGF0dXMgdXBkYXRlc1xuICAgICAgICAgIHRoaXMudGFzU2VydmljZS5zdGFydFN0YXR1c1BvbGxpbmcoc3RhdHVzUGFyYW1zKTtcblxuICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBqb2luYWJsZSBzdGF0dXNcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy50YXNTZXJ2aWNlLmpvaW5hYmxlJC5zdWJzY3JpYmUoKGpvaW5hYmxlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlSm9pbmFibGVDaGFuZ2Uoam9pbmFibGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUQVMgREVCVUddIFN0YXR1cyBjaGVjayBmYWlsZWQ6JywgZXJyKTtcbiAgICAgICAgICB0aGlzLnN0YXRlID0gV2FpdGluZ1Jvb21TdGF0ZS5FUlJPUjtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdFcnJvciBjaGVja2luZyBzZXNzaW9uIHN0YXR1cy4gUGxlYXNlIHRyeSBhZ2Fpbi4nO1xuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjaGFuZ2VzIHRvIGpvaW5hYmxlIHN0YXR1cy5cbiAgICogVHJpZ2dlcnMgYXV0by1qb2luIHdoZW4gam9pbmFibGUgYmVjb21lcyB0cnVlLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVKb2luYWJsZUNoYW5nZShqb2luYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBoYW5kbGVKb2luYWJsZUNoYW5nZSBjYWxsZWQnLCB7XG4gICAgICBqb2luYWJsZSxcbiAgICAgIGN1cnJlbnRTdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgIHJlc29sdmVkU2Vzc2lvbklkOiB0aGlzLnJlc29sdmVkU2Vzc2lvbklkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pc0pvaW5hYmxlID0gam9pbmFibGU7XG5cbiAgICAvLyBEb24ndCB1cGRhdGUgc3RhdGUgaWYgYWxyZWFkeSBnZXR0aW5nIHRva2VuLCBqb2luaW5nLCBvciBpbiBlcnJvclxuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgPT09IFdhaXRpbmdSb29tU3RhdGUuR0VUVElOR19UT0tFTiB8fFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gV2FpdGluZ1Jvb21TdGF0ZS5KT0lOSU5HIHx8XG4gICAgICB0aGlzLnN0YXRlID09PSBXYWl0aW5nUm9vbVN0YXRlLkVSUk9SXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gU2tpcHBpbmcgc3RhdGUgdXBkYXRlIC0gYWxyZWFkeSBpbjonLCB0aGlzLnN0YXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgc3RhdGUgYW5kIGF0dGVtcHQgYXV0by1qb2luXG4gICAgaWYgKGpvaW5hYmxlKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gSm9pbmFibGUgaXMgdHJ1ZSwgYXR0ZW1wdGluZyBhdXRvLWpvaW4nKTtcbiAgICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLlJFQURZO1xuICAgICAgdGhpcy50cnlBdXRvSm9pbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gV2FpdGluZyBmb3Igam9pbmFibGUuLi4nKTtcbiAgICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLldBSVRJTkdfRk9SX0pPSU5BQkxFO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdCB0byBhdXRvLWpvaW4gdGhlIHNlc3Npb24gd2hlbiBhbGwgY29uZGl0aW9ucyBhcmUgbWV0LlxuICAgKiAtIEZvciBvd25lcnM6IGp1c3QgbmVlZCBqb2luYWJsZSArIHNlc3Npb25JZFxuICAgKiAtIEZvciB1c2VyczogbmVlZCBtZWRpYSBwZXJtaXNzaW9ucyArIGdlbyByZXNvbHZlZCArIGpvaW5hYmxlICsgc2Vzc2lvbklkXG4gICAqL1xuICBwcml2YXRlIHRyeUF1dG9Kb2luKCk6IHZvaWQge1xuICAgIC8vIERvbid0IHRyeSBpZiBhbHJlYWR5IGpvaW5pbmcgb3IgaW4gZXJyb3JcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gV2FpdGluZ1Jvb21TdGF0ZS5HRVRUSU5HX1RPS0VOIHx8IFxuICAgICAgICB0aGlzLnN0YXRlID09PSBXYWl0aW5nUm9vbVN0YXRlLkpPSU5JTkcpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSB0cnlBdXRvSm9pbiBza2lwcGVkIC0gYWxyZWFkeSBpbiBzdGF0ZTonLCB0aGlzLnN0YXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBGb3Igb3duZXJzOiBqdXN0IG5lZWQgam9pbmFibGVcbiAgICBpZiAodGhpcy5pc093bmVyKSB7XG4gICAgICBpZiAodGhpcy5pc0pvaW5hYmxlICYmIHRoaXMucmVzb2x2ZWRTZXNzaW9uSWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIE93bmVyIGF1dG8tam9pbmluZy4uLicpO1xuICAgICAgICB0aGlzLnN0YXJ0U2Vzc2lvbkFuZEpvaW4oKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBGb3IgdXNlcnM6IG5lZWQgbWVkaWEgKyBnZW8gcmVzb2x2ZWQgKyBqb2luYWJsZVxuICAgIGlmICh0aGlzLm1lZGlhUGVybWlzc2lvbnNHcmFudGVkICYmIFxuICAgICAgICB0aGlzLmdlb1Blcm1pc3Npb25zUmVzb2x2ZWQgJiYgXG4gICAgICAgIHRoaXMuaXNKb2luYWJsZSAmJiBcbiAgICAgICAgdGhpcy5yZXNvbHZlZFNlc3Npb25JZCkge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFVzZXIgYXV0by1qb2luaW5nLi4uJyk7XG4gICAgICB0aGlzLnN0YXJ0U2Vzc2lvbkFuZEpvaW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdXNlciBoYXMgb3duZXIvYmFja29mZmljZSByb2xlXG4gICAqL1xuICBwcml2YXRlIGdldCBpc0JhY2tvZmZpY2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYnVzaW5lc3NSb2xlID09PSBUYXNCdXNpbmVzc1JvbGUuQkFDS09GRklDRSB8fFxuICAgICAgdGhpcy5idXNpbmVzc1JvbGUgPT09IFRhc0J1c2luZXNzUm9sZS5BRE1JTl9NQU5BR0VSIHx8XG4gICAgICB0aGlzLmJ1c2luZXNzUm9sZSA9PT0gVGFzQnVzaW5lc3NSb2xlLk1BTkFHRVJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHNlc3Npb24gYW5kIGpvaW4gLSBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBqb2luIGJ1dHRvblxuICAgKi9cbiAgcHJpdmF0ZSBzdGFydFNlc3Npb25BbmRKb2luKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNvbHZlZFNlc3Npb25JZCkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuRVJST1I7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdTZXNzaW9uIElEIG5vdCBhdmFpbGFibGUnO1xuICAgICAgdGhpcy50YXNTZXJ2aWNlLnN0b3BTdGF0dXNQb2xsaW5nKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuR0VUVElOR19UT0tFTjtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBDYWxsaW5nIC9zdGFydCBmb3Igc2Vzc2lvbjonLCB0aGlzLnJlc29sdmVkU2Vzc2lvbklkKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnRhc1NlcnZpY2VcbiAgICAgICAgLnN0YXJ0UHJveHlWaWRlb1Nlc3Npb24oe1xuICAgICAgICAgIHNlc3Npb25JZDogdGhpcy5yZXNvbHZlZFNlc3Npb25JZCxcbiAgICAgICAgICBuYW1lOiB0aGlzLmN1cnJlbnRVc2VyLm5hbWUsXG4gICAgICAgICAgbGFzdG5hbWU6IHRoaXMuY3VycmVudFVzZXIubGFzdG5hbWUsXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICh0b2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gVG9rZW4gcmVzcG9uc2U6JywgdG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIEhUVFAgYWRhcHRlciByZXR1cm5zIGVycm9yIGluIG5leHQgaW5zdGVhZCBvZiBlcnJvciBoYW5kbGVyXG4gICAgICAgICAgICBpZiAoIXRva2VuUmVzcG9uc2U/LmNvbnRlbnQ/LnRva2VuKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUQVMgREVCVUddIEludmFsaWQgdG9rZW4gcmVzcG9uc2U6JywgdG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkVSUk9SO1xuICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICh0b2tlblJlc3BvbnNlIGFzIGFueSk/Lm1lc3NhZ2UgfHwgJ0Vycm9yIGFsIGluaWNpYXIgbGEgc2VzacOzbi4gUmVzcHVlc3RhIGludsOhbGlkYS4nO1xuICAgICAgICAgICAgICB0aGlzLnRhc1NlcnZpY2Uuc3RvcFN0YXR1c1BvbGxpbmcoKTtcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBUb2tlbiBvYnRhaW5lZCBzdWNjZXNzZnVsbHksIGpvaW5pbmcgc2Vzc2lvbi4uLicpO1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuUmVzcG9uc2UuY29udGVudC50b2tlbjtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkpPSU5JTkc7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIEF1dG8tam9pbiBpbW1lZGlhdGVseVxuICAgICAgICAgICAgdGhpcy50YXNTZXJ2aWNlLnN0b3BTdGF0dXNQb2xsaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdqb2luaW5nJyk7XG4gICAgICAgICAgICB0aGlzLm9wZW5WaWRlb0NhbGxNb2RhbCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUQVMgREVCVUddIC9zdGFydCByZXF1ZXN0IGZhaWxlZDonLCBlcnIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBBdXRvLXJldHJ5IG9uIGZpcnN0IGZhaWx1cmVcbiAgICAgICAgICAgIGlmICh0aGlzLnJldHJ5Q291bnQgPCB0aGlzLk1BWF9SRVRSSUVTKSB7XG4gICAgICAgICAgICAgIHRoaXMucmV0cnlDb3VudCsrO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gQXV0by1yZXRyeWluZy4uLiBhdHRlbXB0OicsIHRoaXMucmV0cnlDb3VudCk7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBXYWl0aW5nUm9vbVN0YXRlLkNIRUNLSU5HX1NUQVRVUztcbiAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc3RhcnRTZXNzaW9uQW5kSm9pbigpLCAyMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFNob3cgZXJyb3IgYWZ0ZXIgcmV0cnkgZmFpbHNcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuRVJST1I7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ0Vycm9yIGFsIGluaWNpYXIgbGEgc2VzacOzbi4gUG9yIGZhdm9yLCBpbnRlbnRlIG51ZXZhbWVudGUuJztcbiAgICAgICAgICAgICAgdGhpcy50YXNTZXJ2aWNlLnN0b3BTdGF0dXNQb2xsaW5nKCk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBTdGF0ZSBzZXQgdG8gRVJST1IsIGVycm9yTWVzc2FnZTonLCB0aGlzLmVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFJldHJ5IGFmdGVyIGFuIGVycm9yLlxuICAgKiBSZXNldHMgcmV0cnkgY291bnQgYW5kIHJlc3RhcnRzIHRoZSBmbG93LlxuICAgKi9cbiAgcmV0cnkoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9IFdhaXRpbmdSb29tU3RhdGUuQ0hFQ0tJTkdfU1RBVFVTO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgdGhpcy50b2tlbiA9ICcnO1xuICAgIHRoaXMucmV0cnlDb3VudCA9IDA7IC8vIFJlc2V0IHJldHJ5IGNvdW50IGZvciBhdXRvLXJldHJ5XG4gICAgdGhpcy5jaGVja1N0YXR1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVmlkZW9DYWxsTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGFzVmlkZW9jYWxsQ29tcG9uZW50LCB7XG4gICAgICBzaXplOiAneGwnLFxuICAgICAgd2luZG93Q2xhc3M6ICd0YXMtdmlkZW8tbW9kYWwnLFxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zZXNzaW9uSWQgPSB0aGlzLnJlc29sdmVkU2Vzc2lvbklkO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudG9rZW4gPSB0aGlzLnRva2VuO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuYXBwb2ludG1lbnRJZCA9IHRoaXMucmVzb2x2ZWRBcHBvaW50bWVudElkO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudmlkZW9DYWxsSWQgPSB0aGlzLnZpZGVvQ2FsbElkO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudXNlcklkID0gdGhpcy5jdXJyZW50VXNlcj8uaWQ7XG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50ZW5hbnQgPSB0aGlzLnRlbmFudDtcbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmJ1c2luZXNzUm9sZSA9IHRoaXMuYnVzaW5lc3NSb2xlO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaXNSZXR1cm5pbmdGcm9tUGlwID0gZmFsc2U7XG5cbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLnJlc3VsdC50aGVuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYgPSBudWxsO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YXMtd2FpdGluZy1yb29tXCI+XG4gIDxkaXYgY2xhc3M9XCJ3YWl0aW5nLXJvb20tY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1jb250YWluZXJcIj5cbiAgICAgIDwhLS0gTG9hZGluZyBzdGF0ZXMgKHNob3cgc3Bpbm5lcikgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUgIT09IFdhaXRpbmdSb29tU3RhdGUuRVJST1JcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRlLWljb24gbG9hZGluZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgPCEtLSBSZXF1ZXN0aW5nIHBlcm1pc3Npb25zIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZXF1ZXN0aW5nUGVybWlzc2lvbnNcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cInN0YXRlLW1lc3NhZ2VcIj5Tb2xpY2l0YW5kbyBwZXJtaXNvcy4uLjwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cInN0YXRlLXN1Ym1lc3NhZ2VcIj5Qb3IgZmF2b3IsIGFjZXB0w6EgbG9zIHBlcm1pc29zIGRlIGPDoW1hcmEgeSBtaWNyw7Nmb25vLjwvcD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIFxuICAgICAgICA8IS0tIFdhaXRpbmcgZm9yIGFkbWlzc2lvbiAocGVybWlzc2lvbnMgZ3JhbnRlZCwgbm90IGpvaW5hYmxlIHlldCkgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1dhaXRpbmdGb3JBZG1pc3Npb25cIj5cbiAgICAgICAgICA8cCBjbGFzcz1cInN0YXRlLW1lc3NhZ2VcIj5NZWRpY2luYSBsYWJvcmFsIHZhIGEgYWRtaXRpcnRlPC9wPlxuICAgICAgICAgIDxwIGNsYXNzPVwic3RhdGUtc3VibWVzc2FnZVwiPlBvciBmYXZvciwgcGVybWFuZWPDqSBlbiBlc3RhIHBhbnRhbGxhLjwvcD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIFxuICAgICAgICA8IS0tIEdldHRpbmcgdG9rZW4gLyBKb2luaW5nIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUgPT09IFdhaXRpbmdSb29tU3RhdGUuR0VUVElOR19UT0tFTiB8fCBzdGF0ZSA9PT0gV2FpdGluZ1Jvb21TdGF0ZS5KT0lOSU5HXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJzdGF0ZS1tZXNzYWdlXCI+Q29uZWN0YW5kby4uLjwvcD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIFxuICAgICAgICA8IS0tIENoZWNraW5nIHN0YXR1cyAod2hlbiBub3QgcmVxdWVzdGluZyBwZXJtaXNzaW9ucykgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZSA9PT0gV2FpdGluZ1Jvb21TdGF0ZS5DSEVDS0lOR19TVEFUVVMgJiYgIWlzUmVxdWVzdGluZ1Blcm1pc3Npb25zXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJzdGF0ZS1tZXNzYWdlXCI+VmVyaWZpY2FuZG8gZXN0YWRvLi4uPC9wPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEVycm9yIHN0YXRlIChzaG93IGVycm9yIGljb24gYW5kIG1lc3NhZ2UpIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlID09PSBXYWl0aW5nUm9vbVN0YXRlLkVSUk9SXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0ZS1pY29uIGVycm9yXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwic3RhdGUtbWVzc2FnZSBlcnJvclwiPk9jdXJyacOzIHVuIGVycm9yPC9wPlxuICAgICAgICA8cCBjbGFzcz1cImVycm9yLWRldGFpbHNcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYWN0aW9uLWJ0biByZXRyeS1idG5cIiAoY2xpY2spPVwicmV0cnkoKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVmcmVzaFwiPjwvaT5cbiAgICAgICAgICBSZWludGVudGFyXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG icons used internally by TAS SDK components.
|
|
3
|
+
* Icons are stored as strings to avoid asset bundling complexity.
|
|
4
|
+
*/
|
|
5
|
+
export const TAS_ICONS = {
|
|
6
|
+
home: `<svg width="120" height="100" viewBox="0 0 120 100" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
7
|
+
<rect x="10" width="100" height="100" rx="50" fill="#44D8E8" fill-opacity="0.2"/>
|
|
8
|
+
<path d="M45 70C43.625 70 42.4479 69.5104 41.4688 68.5313C40.4896 67.5521 40 66.375 40 65V46.5625L37.5 48.5C36.9583 48.9167 36.3438 49.0833 35.6562 49C34.9688 48.9167 34.4167 48.5833 34 48C33.5833 47.4583 33.4271 46.8542 33.5312 46.1875C33.6354 45.5208 33.9583 44.9792 34.5 44.5625L56.9375 27.3125C57.3958 26.9792 57.8854 26.7292 58.4062 26.5625C58.9271 26.3958 59.4583 26.3125 60 26.3125C60.5417 26.3125 61.0729 26.3958 61.5938 26.5625C62.1146 26.7292 62.6042 26.9792 63.0625 27.3125L85.5 44.5C86.0417 44.9167 86.3646 45.4583 86.4688 46.125C86.5729 46.7917 86.4167 47.4167 86 48C85.5833 48.5833 85.0417 48.9063 84.375 48.9688C83.7083 49.0313 83.0833 48.8542 82.5 48.4375L60 31.25L45 42.75V65H50.0625C50.7708 65 51.3542 65.2396 51.8125 65.7188C52.2708 66.1979 52.5 66.7917 52.5 67.5C52.5 68.2083 52.2604 68.8021 51.7812 69.2813C51.3021 69.7604 50.7083 70 50 70H45ZM67.3125 73.9375C66.9792 73.9375 66.6667 73.875 66.375 73.75C66.0833 73.625 65.8125 73.4375 65.5625 73.1875L58.5 66.125C58 65.625 57.75 65.0417 57.75 64.375C57.75 63.7083 58 63.125 58.5 62.625C59 62.125 59.5833 61.875 60.25 61.875C60.9167 61.875 61.5 62.125 62 62.625L67.3125 67.875L79.6875 55.5C80.1875 55 80.7812 54.7604 81.4688 54.7813C82.1562 54.8021 82.75 55.0625 83.25 55.5625C83.75 56.0625 84 56.6458 84 57.3125C84 57.9792 83.75 58.5625 83.25 59.0625L69.0625 73.1875C68.8125 73.4375 68.5417 73.625 68.25 73.75C67.9583 73.875 67.6458 73.9375 67.3125 73.9375Z" fill="white"/>
|
|
9
|
+
<path d="M110 5L106.575 3.425L105 0L103.425 3.425L100 5L103.425 6.575L105 10L106.575 6.575L110 5Z" fill="#44D8E8"/>
|
|
10
|
+
<path d="M10 51L6.575 49.425L5 46L3.425 49.425L0 51L3.425 52.575L5 56L6.575 52.575L10 51Z" fill="#44D8E8"/>
|
|
11
|
+
<path d="M95 43.5L93.2875 42.7125L92.5 41L91.7125 42.7125L90 43.5L91.7125 44.2875L92.5 46L93.2875 44.2875L95 43.5Z" fill="#44D8E8"/>
|
|
12
|
+
<path d="M42 4.5L40.2875 3.7125L39.5 2L38.7125 3.7125L37 4.5L38.7125 5.2875L39.5 7L40.2875 5.2875L42 4.5Z" fill="#44D8E8"/>
|
|
13
|
+
<path d="M88 83.5L86.2875 82.7125L85.5 81L84.7125 82.7125L83 83.5L84.7125 84.2875L85.5 86L86.2875 84.2875L88 83.5Z" fill="#44D8E8"/>
|
|
14
|
+
<path d="M120 97.5L118.287 96.7125L117.5 95L116.713 96.7125L115 97.5L116.713 98.2875L117.5 100L118.287 98.2875L120 97.5Z" fill="#44D8E8"/>
|
|
15
|
+
</svg>`,
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWljb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFzLXVlbGwtc2RrL3NyYy9saWIvaWNvbnMvdGFzLWljb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixJQUFJLEVBQUU7Ozs7Ozs7OztPQVNEO0NBQ0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU1ZHIGljb25zIHVzZWQgaW50ZXJuYWxseSBieSBUQVMgU0RLIGNvbXBvbmVudHMuXG4gKiBJY29ucyBhcmUgc3RvcmVkIGFzIHN0cmluZ3MgdG8gYXZvaWQgYXNzZXQgYnVuZGxpbmcgY29tcGxleGl0eS5cbiAqL1xuXG5leHBvcnQgY29uc3QgVEFTX0lDT05TID0ge1xuICBob21lOiBgPHN2ZyB3aWR0aD1cIjEyMFwiIGhlaWdodD1cIjEwMFwiIHZpZXdCb3g9XCIwIDAgMTIwIDEwMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPHJlY3QgeD1cIjEwXCIgd2lkdGg9XCIxMDBcIiBoZWlnaHQ9XCIxMDBcIiByeD1cIjUwXCIgZmlsbD1cIiM0NEQ4RThcIiBmaWxsLW9wYWNpdHk9XCIwLjJcIi8+XG48cGF0aCBkPVwiTTQ1IDcwQzQzLjYyNSA3MCA0Mi40NDc5IDY5LjUxMDQgNDEuNDY4OCA2OC41MzEzQzQwLjQ4OTYgNjcuNTUyMSA0MCA2Ni4zNzUgNDAgNjVWNDYuNTYyNUwzNy41IDQ4LjVDMzYuOTU4MyA0OC45MTY3IDM2LjM0MzggNDkuMDgzMyAzNS42NTYyIDQ5QzM0Ljk2ODggNDguOTE2NyAzNC40MTY3IDQ4LjU4MzMgMzQgNDhDMzMuNTgzMyA0Ny40NTgzIDMzLjQyNzEgNDYuODU0MiAzMy41MzEyIDQ2LjE4NzVDMzMuNjM1NCA0NS41MjA4IDMzLjk1ODMgNDQuOTc5MiAzNC41IDQ0LjU2MjVMNTYuOTM3NSAyNy4zMTI1QzU3LjM5NTggMjYuOTc5MiA1Ny44ODU0IDI2LjcyOTIgNTguNDA2MiAyNi41NjI1QzU4LjkyNzEgMjYuMzk1OCA1OS40NTgzIDI2LjMxMjUgNjAgMjYuMzEyNUM2MC41NDE3IDI2LjMxMjUgNjEuMDcyOSAyNi4zOTU4IDYxLjU5MzggMjYuNTYyNUM2Mi4xMTQ2IDI2LjcyOTIgNjIuNjA0MiAyNi45NzkyIDYzLjA2MjUgMjcuMzEyNUw4NS41IDQ0LjVDODYuMDQxNyA0NC45MTY3IDg2LjM2NDYgNDUuNDU4MyA4Ni40Njg4IDQ2LjEyNUM4Ni41NzI5IDQ2Ljc5MTcgODYuNDE2NyA0Ny40MTY3IDg2IDQ4Qzg1LjU4MzMgNDguNTgzMyA4NS4wNDE3IDQ4LjkwNjMgODQuMzc1IDQ4Ljk2ODhDODMuNzA4MyA0OS4wMzEzIDgzLjA4MzMgNDguODU0MiA4Mi41IDQ4LjQzNzVMNjAgMzEuMjVMNDUgNDIuNzVWNjVINTAuMDYyNUM1MC43NzA4IDY1IDUxLjM1NDIgNjUuMjM5NiA1MS44MTI1IDY1LjcxODhDNTIuMjcwOCA2Ni4xOTc5IDUyLjUgNjYuNzkxNyA1Mi41IDY3LjVDNTIuNSA2OC4yMDgzIDUyLjI2MDQgNjguODAyMSA1MS43ODEyIDY5LjI4MTNDNTEuMzAyMSA2OS43NjA0IDUwLjcwODMgNzAgNTAgNzBINDVaTTY3LjMxMjUgNzMuOTM3NUM2Ni45NzkyIDczLjkzNzUgNjYuNjY2NyA3My44NzUgNjYuMzc1IDczLjc1QzY2LjA4MzMgNzMuNjI1IDY1LjgxMjUgNzMuNDM3NSA2NS41NjI1IDczLjE4NzVMNTguNSA2Ni4xMjVDNTggNjUuNjI1IDU3Ljc1IDY1LjA0MTcgNTcuNzUgNjQuMzc1QzU3Ljc1IDYzLjcwODMgNTggNjMuMTI1IDU4LjUgNjIuNjI1QzU5IDYyLjEyNSA1OS41ODMzIDYxLjg3NSA2MC4yNSA2MS44NzVDNjAuOTE2NyA2MS44NzUgNjEuNSA2Mi4xMjUgNjIgNjIuNjI1TDY3LjMxMjUgNjcuODc1TDc5LjY4NzUgNTUuNUM4MC4xODc1IDU1IDgwLjc4MTIgNTQuNzYwNCA4MS40Njg4IDU0Ljc4MTNDODIuMTU2MiA1NC44MDIxIDgyLjc1IDU1LjA2MjUgODMuMjUgNTUuNTYyNUM4My43NSA1Ni4wNjI1IDg0IDU2LjY0NTggODQgNTcuMzEyNUM4NCA1Ny45NzkyIDgzLjc1IDU4LjU2MjUgODMuMjUgNTkuMDYyNUw2OS4wNjI1IDczLjE4NzVDNjguODEyNSA3My40Mzc1IDY4LjU0MTcgNzMuNjI1IDY4LjI1IDczLjc1QzY3Ljk1ODMgNzMuODc1IDY3LjY0NTggNzMuOTM3NSA2Ny4zMTI1IDczLjkzNzVaXCIgZmlsbD1cIndoaXRlXCIvPlxuPHBhdGggZD1cIk0xMTAgNUwxMDYuNTc1IDMuNDI1TDEwNSAwTDEwMy40MjUgMy40MjVMMTAwIDVMMTAzLjQyNSA2LjU3NUwxMDUgMTBMMTA2LjU3NSA2LjU3NUwxMTAgNVpcIiBmaWxsPVwiIzQ0RDhFOFwiLz5cbjxwYXRoIGQ9XCJNMTAgNTFMNi41NzUgNDkuNDI1TDUgNDZMMy40MjUgNDkuNDI1TDAgNTFMMy40MjUgNTIuNTc1TDUgNTZMNi41NzUgNTIuNTc1TDEwIDUxWlwiIGZpbGw9XCIjNDREOEU4XCIvPlxuPHBhdGggZD1cIk05NSA0My41TDkzLjI4NzUgNDIuNzEyNUw5Mi41IDQxTDkxLjcxMjUgNDIuNzEyNUw5MCA0My41TDkxLjcxMjUgNDQuMjg3NUw5Mi41IDQ2TDkzLjI4NzUgNDQuMjg3NUw5NSA0My41WlwiIGZpbGw9XCIjNDREOEU4XCIvPlxuPHBhdGggZD1cIk00MiA0LjVMNDAuMjg3NSAzLjcxMjVMMzkuNSAyTDM4LjcxMjUgMy43MTI1TDM3IDQuNUwzOC43MTI1IDUuMjg3NUwzOS41IDdMNDAuMjg3NSA1LjI4NzVMNDIgNC41WlwiIGZpbGw9XCIjNDREOEU4XCIvPlxuPHBhdGggZD1cIk04OCA4My41TDg2LjI4NzUgODIuNzEyNUw4NS41IDgxTDg0LjcxMjUgODIuNzEyNUw4MyA4My41TDg0LjcxMjUgODQuMjg3NUw4NS41IDg2TDg2LjI4NzUgODQuMjg3NUw4OCA4My41WlwiIGZpbGw9XCIjNDREOEU4XCIvPlxuPHBhdGggZD1cIk0xMjAgOTcuNUwxMTguMjg3IDk2LjcxMjVMMTE3LjUgOTVMMTE2LjcxMyA5Ni43MTI1TDExNSA5Ny41TDExNi43MTMgOTguMjg3NUwxMTcuNSAxMDBMMTE4LjI4NyA5OC4yODc1TDEyMCA5Ny41WlwiIGZpbGw9XCIjNDREOEU4XCIvPlxuPC9zdmc+YCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhc0ljb25OYW1lID0ga2V5b2YgdHlwZW9mIFRBU19JQ09OUztcbiJdfQ==
|
|
@@ -45,7 +45,14 @@ export var UserCallAction;
|
|
|
45
45
|
UserCallAction["CHANGE_STATUS"] = "CHANGE_STATUS";
|
|
46
46
|
UserCallAction["REQUEST_GEOLOCALIZATION"] = "REQUEST_GEOLOCALIZATION";
|
|
47
47
|
UserCallAction["ACTIVATE_GEOLOCATION"] = "ACTIVATE_GEOLOCATION";
|
|
48
|
+
UserCallAction["DENY_GEOLOCATION"] = "DENY_GEOLOCATION";
|
|
48
49
|
})(UserCallAction || (UserCallAction = {}));
|
|
50
|
+
export var GeoStatus;
|
|
51
|
+
(function (GeoStatus) {
|
|
52
|
+
GeoStatus["PENDING"] = "PENDING";
|
|
53
|
+
GeoStatus["GRANTED"] = "GRANTED";
|
|
54
|
+
GeoStatus["DENIED"] = "DENIED";
|
|
55
|
+
})(GeoStatus || (GeoStatus = {}));
|
|
49
56
|
export var RoomUserStatus;
|
|
50
57
|
(function (RoomUserStatus) {
|
|
51
58
|
RoomUserStatus["ASSIGNED"] = "ASSIGNED";
|
|
@@ -72,5 +79,6 @@ export var AppointmentStatus;
|
|
|
72
79
|
AppointmentStatus["CONFIRMED"] = "CONFIRMED";
|
|
73
80
|
AppointmentStatus["CANCELLED"] = "CANCELLED";
|
|
74
81
|
AppointmentStatus["RESCHEDULED"] = "RESCHEDULED";
|
|
82
|
+
AppointmentStatus["ACTIVE"] = "ACTIVE";
|
|
75
83
|
})(AppointmentStatus || (AppointmentStatus = {}));
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFFBQVE7QUFDUixNQUFNLENBQU4sSUFBWSxXQUtYO0FBTEQsV0FBWSxXQUFXO0lBQ3JCLDBCQUFXLENBQUE7SUFDWCx3QkFBUyxDQUFBO0lBQ1Qsa0NBQW1CLENBQUE7SUFDbkIsb0RBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQUxXLFdBQVcsS0FBWCxXQUFXLFFBS3RCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4Qiw2Q0FBMkIsQ0FBQTtJQUMzQix5Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0lBQ2Isc0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN6QixrREFBK0IsQ0FBQTtJQUMvQixzQ0FBbUIsQ0FBQTtJQUNuQiw0Q0FBeUIsQ0FBQTtJQUN6QixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGVBQWUsS0FBZixlQUFlLFFBSzFCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1Qix1Q0FBaUIsQ0FBQTtJQUNqQiwyQ0FBcUIsQ0FBQTtJQUNyQix5Q0FBbUIsQ0FBQTtJQUNuQiw2Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsK0JBQWlCLENBQUE7SUFDakIsbUNBQXFCLENBQUE7SUFDckIsbUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FRWDtBQVJELFdBQVksY0FBYztJQUN4QiwyREFBeUMsQ0FBQTtJQUN6QywyREFBeUMsQ0FBQTtJQUN6Qyw2QkFBVyxDQUFBO0lBQ1gsaURBQStCLENBQUE7SUFDL0IscUVBQW1ELENBQUE7SUFDbkQsK0RBQTZDLENBQUE7SUFDN0MsdURBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQVJXLGNBQWMsS0FBZCxjQUFjLFFBUXpCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNuQixnQ0FBbUIsQ0FBQTtJQUNuQixnQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3hCLHVDQUFxQixDQUFBO0lBQ3JCLHFDQUFtQixDQUFBO0lBQ25CLG1DQUFpQixDQUFBO0lBQ2pCLHVDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFMVyxjQUFjLEtBQWQsY0FBYyxRQUt6QjtBQUVELE1BQU0sQ0FBTixJQUFZLFNBTVg7QUFORCxXQUFZLFNBQVM7SUFDbkIsMEJBQWEsQ0FBQTtJQUNiLHNDQUF5QixDQUFBO0lBQ3pCLG9DQUF1QixDQUFBO0lBQ3ZCLDBDQUE2QixDQUFBO0lBQzdCLDRCQUFlLENBQUE7QUFDakIsQ0FBQyxFQU5XLFNBQVMsS0FBVCxTQUFTLFFBTXBCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFHWDtBQUhELFdBQVksUUFBUTtJQUNsQixxQ0FBeUIsQ0FBQTtJQUN6Qix1QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CO0FBK0dELG9CQUFvQjtBQUNwQixNQUFNLENBQU4sSUFBWSxpQkFLWDtBQUxELFdBQVksaUJBQWlCO0lBQzNCLDRDQUF1QixDQUFBO0lBQ3ZCLDRDQUF1QixDQUFBO0lBQ3ZCLGdEQUEyQixDQUFBO0lBQzNCLHNDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSzVCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRW51bXNcbmV4cG9ydCBlbnVtIFRhc1Jvb21UeXBlIHtcbiAgVEFTID0gJ1RBUycsXG4gIEpNID0gJ0pNJyxcbiAgV0VCSU5BUiA9ICdXRUJJTkFSJyxcbiAgV0VMTE5FU1NfTUFOQUdFUiA9ICdXRUxMTkVTU19NQU5BR0VSJyxcbn1cblxuZXhwb3J0IGVudW0gVGFzU2Vzc2lvblR5cGUge1xuICBTUE9OVEFORU9VUyA9ICdTUE9OVEFORU9VUycsXG4gIFNDSEVEVUxFRCA9ICdTQ0hFRFVMRUQnLFxufVxuXG5leHBvcnQgZW51bSBUYXNVc2VyUm9sZSB7XG4gIE9XTkVSID0gJ09XTkVSJyxcbiAgVVNFUiA9ICdVU0VSJyxcbiAgTU9ERVJBVE9SID0gJ01PREVSQVRPUicsXG59XG5cbmV4cG9ydCBlbnVtIFRhc0J1c2luZXNzUm9sZSB7XG4gIEFETUlOX01BTkFHRVIgPSAnQURNSU5fTUFOQUdFUicsXG4gIE1BTkFHRVIgPSAnTUFOQUdFUicsXG4gIEJBQ0tPRkZJQ0UgPSAnQkFDS09GRklDRScsXG4gIFVTRVIgPSAnVVNFUicsXG59XG5cbmV4cG9ydCBlbnVtIFZpZGVvU2Vzc2lvblN0YXR1cyB7XG4gIEFDVElWRSA9ICdBQ1RJVkUnLFxuICBJTkFDVElWRSA9ICdJTkFDVElWRScsXG4gIFBFTkRJTkcgPSAnUEVORElORycsXG4gIFNDSEVEVUxFRCA9ICdTQ0hFRFVMRUQnLFxufVxuXG5leHBvcnQgZW51bSBVc2VyU3RhdHVzIHtcbiAgQUNUSVZFID0gJ0FDVElWRScsXG4gIElOQUNUSVZFID0gJ0lOQUNUSVZFJyxcbiAgQVNTSUdORUQgPSAnQVNTSUdORUQnLFxufVxuXG5leHBvcnQgZW51bSBVc2VyQ2FsbEFjdGlvbiB7XG4gIFdBSVRJTkdfUk9PTV9FTlRFUiA9ICdXQUlUSU5HX1JPT01fRU5URVInLFxuICBXQUlUSU5HX1JPT01fTEVBVkUgPSAnV0FJVElOR19ST09NX0xFQVZFJyxcbiAgQkFOID0gJ0JBTicsXG4gIENIQU5HRV9TVEFUVVMgPSAnQ0hBTkdFX1NUQVRVUycsXG4gIFJFUVVFU1RfR0VPTE9DQUxJWkFUSU9OID0gJ1JFUVVFU1RfR0VPTE9DQUxJWkFUSU9OJyxcbiAgQUNUSVZBVEVfR0VPTE9DQVRJT04gPSAnQUNUSVZBVEVfR0VPTE9DQVRJT04nLFxuICBERU5ZX0dFT0xPQ0FUSU9OID0gJ0RFTllfR0VPTE9DQVRJT04nLFxufVxuXG5leHBvcnQgZW51bSBHZW9TdGF0dXMge1xuICBQRU5ESU5HID0gJ1BFTkRJTkcnLFxuICBHUkFOVEVEID0gJ0dSQU5URUQnLFxuICBERU5JRUQgPSAnREVOSUVEJyxcbn1cblxuZXhwb3J0IGVudW0gUm9vbVVzZXJTdGF0dXMge1xuICBBU1NJR05FRCA9ICdBU1NJR05FRCcsXG4gIFdBSVRJTkcgPSAnV0FJVElORycsXG4gIEpPSU5FRCA9ICdKT0lORUQnLFxuICBGSU5JU0hFRCA9ICdGSU5JU0hFRCcsXG59XG5cbmV4cG9ydCBlbnVtIENhbGxTdGF0ZSB7XG4gIElETEUgPSAnSURMRScsXG4gIENPTk5FQ1RJTkcgPSAnQ09OTkVDVElORycsXG4gIENPTk5FQ1RFRCA9ICdDT05ORUNURUQnLFxuICBESVNDT05ORUNURUQgPSAnRElTQ09OTkVDVEVEJyxcbiAgRVJST1IgPSAnRVJST1InLFxufVxuXG5leHBvcnQgZW51bSBWaWV3TW9kZSB7XG4gIEZVTExTQ1JFRU4gPSAnRlVMTFNDUkVFTicsXG4gIFBJUCA9ICdQSVAnLFxufVxuXG4vLyBVc2VyIGludGVyZmFjZXNcbmV4cG9ydCBpbnRlcmZhY2UgVGFzQ3VycmVudFVzZXIge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG4gIHJvbGU6IFRhc1VzZXJSb2xlO1xufVxuXG4vKiogSW5wdXQgY29uZmlndXJhdGlvbiBmb3IgdGhlIFRBUyB2aWRlbyBjYWxsIGxpYnJhcnkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFzQ2FsbENvbmZpZyB7XG4gIC8vIFN0YXR1cyBlbmRwb2ludCBwYXJhbXNcbiAgYXBwb2ludG1lbnRJZD86IG51bWJlcjtcbiAgc2Vzc2lvbklkPzogc3RyaW5nO1xuICByb29tVHlwZTogVGFzUm9vbVR5cGU7XG4gIGVudGl0eUlkOiBudW1iZXI7XG4gIHRlbmFudDogc3RyaW5nO1xuICBidXNpbmVzc1JvbGU6IFRhc0J1c2luZXNzUm9sZTtcbiAgLy8gQ3VycmVudCB1c2VyIGluZm8gKGZvciB0b2tlbiByZXF1ZXN0KVxuICBjdXJyZW50VXNlcjogVGFzQ3VycmVudFVzZXI7XG59XG5cbi8vIEFQSSBSZXF1ZXN0L1Jlc3BvbnNlIGludGVyZmFjZXNcbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRTZXNzaW9uUmVxdWVzdCB7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVUb2tlblJlcXVlc3Qge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICByb2xlVkM6IFRhc1VzZXJSb2xlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlVG9rZW5SZXNwb25zZSB7XG4gIGNvbnRlbnQ6IHtcbiAgICB0b2tlbjogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5VmlkZW9TdGF0dXNSZXF1ZXN0IHtcbiAgYXBwb2ludG1lbnRJZD86IG51bWJlcjtcbiAgYnVzaW5lc3NSb2xlPzogVGFzQnVzaW5lc3NSb2xlO1xuICB0ZW5hbnQ/OiBzdHJpbmc7XG4gIHNlc3Npb25JZD86IHN0cmluZztcbiAgcm9vbVR5cGU/OiBUYXNSb29tVHlwZTtcbiAgZW50aXR5SWQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlWaWRlb1N0YXR1c1VzZXIge1xuICB1c2VySWQ6IG51bWJlcjtcbiAgcm9sOiBUYXNVc2VyUm9sZTtcbiAgc3RhdHVzOiBVc2VyU3RhdHVzO1xuICBnZW9TdGF0dXM6IEdlb1N0YXR1cztcbiAgbGF0aXR1ZGU6IG51bWJlciB8IG51bGw7XG4gIGxvbmdpdHVkZTogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm94eVZpZGVvU3RhdHVzUmVzcG9uc2Uge1xuICBjb250ZW50OiB7XG4gICAgdmlkZW9DYWxsSWQ6IG51bWJlcjtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICBzdGF0dXNWTDogVmlkZW9TZXNzaW9uU3RhdHVzO1xuICAgIGpvaW5hYmxlOiBib29sZWFuO1xuICAgIHdhaXRpbmdSb29tQXZhaWxhYmxlOiBib29sZWFuO1xuICAgIGFwcG9pbnRtZW50SWQ6IG51bWJlcjtcbiAgICBhY3RpdmF0ZUdlbzogYm9vbGVhbjtcbiAgICBnZW9SZXF1ZXN0QWN0aXZlOiBib29sZWFuIHwgbnVsbDsgLy8gT3duZXIgc2VudCBnZW8gcmVxdWVzdCwgd2FpdGluZyBmb3IgdXNlciByZXNwb25zZVxuICAgIGFsbEdlb0dyYW50ZWQ6IGJvb2xlYW47IC8vIEFsbCB1c2VycyBoYXZlIHJlc3BvbmRlZCB3aXRoIGdlb1xuICAgIHVzZXJzOiBQcm94eVZpZGVvU3RhdHVzVXNlcltdO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5VmlkZW9GaW5pc2hSZXF1ZXN0IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIGJ1c2luZXNzUm9sZTogVGFzQnVzaW5lc3NSb2xlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbmlzaFNlc3Npb25SZXNwb25zZSB7XG4gIGNvbnRlbnQ6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY2FsbFN0YXR1czogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5VmlkZW9Vc2VyTW9kaWZ5UmVxdWVzdCB7XG4gIHVzZXJJZD86IG51bWJlcjtcbiAgdmlkZW9DYWxsSWQ6IG51bWJlcjtcbiAgYWN0aW9uPzogVXNlckNhbGxBY3Rpb247XG4gIG5ld1N0YXR1cz86IFJvb21Vc2VyU3RhdHVzO1xuICBsYXRpdHVkZT86IG51bWJlcjtcbiAgbG9uZ2l0dWRlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdhaXRpbmdSb29tVXNlciB7XG4gIHVzZXJJZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogUm9vbVVzZXJTdGF0dXM7XG59XG5cbi8qKiBVc2VyIGdlb2xvY2F0aW9uIGluZm8gZm9yIG93bmVyIHBhbmVsICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJHZW9JbmZvIHtcbiAgdXNlcklkOiBudW1iZXI7XG4gIGdlb1N0YXR1czogR2VvU3RhdHVzO1xuICBsYXRpdHVkZTogbnVtYmVyIHwgbnVsbDtcbiAgbG9uZ2l0dWRlOiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBcHBvaW50bWVudCB0eXBlc1xuZXhwb3J0IGVudW0gQXBwb2ludG1lbnRTdGF0dXMge1xuICBDT05GSVJNRUQgPSAnQ09ORklSTUVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIFJFU0NIRURVTEVEID0gJ1JFU0NIRURVTEVEJyxcbiAgQUNUSVZFID0gJ0FDVElWRScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFzUGFydGljaXBhbnQge1xuICB1c2VySWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhc0FwcG9pbnRtZW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgYWdlbmRhSWQ6IG51bWJlcjtcbiAgZGF0ZTogc3RyaW5nOyAgICAgICAvLyBcIllZWVktTU0tRERcIlxuICBzdGFydFRpbWU6IHN0cmluZzsgIC8vIFwiSEg6bW1cIlxuICBlbmRUaW1lOiBzdHJpbmc7ICAgIC8vIFwiSEg6bW1cIlxuICBib29raW5nVHlwZTogc3RyaW5nO1xuICBzdGF0dXM6IEFwcG9pbnRtZW50U3RhdHVzO1xuICB0aXRsZTogc3RyaW5nO1xuICBub3Rlczogc3RyaW5nO1xuICBlbnRpdHlJZDogbnVtYmVyO1xuICByb29tVHlwZTogVGFzUm9vbVR5cGU7XG4gIHBhcnRpY2lwYW50czogVGFzUGFydGljaXBhbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRBcHBvaW50bWVudHNSZXF1ZXN0IHtcbiAgZnJvbURhdGU6IHN0cmluZzsgIC8vIFlZWVktTU0tRERcbiAgdG9EYXRlOiBzdHJpbmc7ICAgIC8vIFlZWVktTU0tRERcbiAgZW50aXR5SWQ/OiBudW1iZXI7IC8vIE9wdGlvbmFsIGVudGl0eSBJRCBmaWx0ZXJcbn1cbiJdfQ==
|