valtech-components 2.0.684 → 2.0.686
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/organisms/avatar-upload/avatar-upload.component.mjs +38 -13
- package/esm2022/lib/services/firebase/storage.service.mjs +30 -1
- package/esm2022/lib/services/firebase/types.mjs +1 -1
- package/esm2022/lib/services/i18n/default-content.mjs +47 -1
- package/fesm2022/valtech-components.mjs +112 -12
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/article/article.component.d.ts +1 -1
- package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +2 -0
- package/lib/components/organisms/toolbar/toolbar.component.d.ts +1 -1
- package/lib/services/firebase/storage.service.d.ts +22 -0
- package/lib/services/firebase/types.d.ts +6 -0
- package/package.json +1 -1
|
@@ -118,10 +118,14 @@ export class AvatarUploadComponent {
|
|
|
118
118
|
onImageError() {
|
|
119
119
|
this.imageLoadError.set(true);
|
|
120
120
|
}
|
|
121
|
+
/** Timeout for upload operations (30 seconds) */
|
|
122
|
+
static { this.UPLOAD_TIMEOUT_MS = 30000; }
|
|
121
123
|
/** Process cropped image and upload */
|
|
122
124
|
async processAndUpload(croppedBlob) {
|
|
123
125
|
this.loading.set(true);
|
|
124
126
|
this.uploadStart.emit();
|
|
127
|
+
// Timeout promise to prevent infinite loading
|
|
128
|
+
const uploadTimeout = new Promise((_, reject) => setTimeout(() => reject(new Error('Upload timeout')), AvatarUploadComponent.UPLOAD_TIMEOUT_MS));
|
|
125
129
|
try {
|
|
126
130
|
const config = this.config();
|
|
127
131
|
// 1. Compress image
|
|
@@ -140,20 +144,27 @@ export class AvatarUploadComponent {
|
|
|
140
144
|
if (!userId) {
|
|
141
145
|
throw new Error('User not authenticated');
|
|
142
146
|
}
|
|
143
|
-
// 5. Upload to Firebase Storage
|
|
144
|
-
|
|
145
|
-
const avatarPath =
|
|
146
|
-
const thumbPath =
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
// 5. Upload to Firebase Storage with predictable paths
|
|
148
|
+
// Path: users/{userId}/avatar.jpg - allows any app to construct URL with just userId
|
|
149
|
+
const avatarPath = `users/${userId}/avatar.jpg`;
|
|
150
|
+
const thumbPath = `users/${userId}/thumb.jpg`;
|
|
151
|
+
// Race against timeout to prevent infinite loading
|
|
152
|
+
const [avatarResult, thumbResult] = await Promise.race([
|
|
153
|
+
Promise.all([
|
|
154
|
+
this.storageService.uploadAndGetUrl(avatarPath, compressed.blob),
|
|
155
|
+
this.storageService.uploadAndGetUrl(thumbPath, thumbnail.blob),
|
|
156
|
+
]),
|
|
157
|
+
uploadTimeout,
|
|
150
158
|
]);
|
|
151
|
-
// 6. Update backend
|
|
159
|
+
// 6. Update backend with URLs
|
|
152
160
|
await firstValueFrom(this.authService.updateAvatar({
|
|
153
161
|
avatarUrl: avatarResult.downloadUrl,
|
|
154
162
|
avatarThumbnail: thumbResult.downloadUrl,
|
|
155
163
|
}));
|
|
156
|
-
// 7.
|
|
164
|
+
// 7. Update preview with cache-busting to force refresh
|
|
165
|
+
const cacheBuster = `?t=${Date.now()}`;
|
|
166
|
+
this.previewUrl.set(avatarResult.downloadUrl + cacheBuster);
|
|
167
|
+
// 8. Emit success
|
|
157
168
|
const result = {
|
|
158
169
|
avatarUrl: avatarResult.downloadUrl,
|
|
159
170
|
thumbnailUrl: thumbResult.downloadUrl,
|
|
@@ -163,9 +174,23 @@ export class AvatarUploadComponent {
|
|
|
163
174
|
catch (err) {
|
|
164
175
|
// Revert preview on error
|
|
165
176
|
this.previewUrl.set(null);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
177
|
+
// Determine error message based on error type
|
|
178
|
+
let message;
|
|
179
|
+
if (err instanceof Error) {
|
|
180
|
+
if (err.message === 'Upload timeout') {
|
|
181
|
+
message =
|
|
182
|
+
this.i18n.t('uploadTimeout', this.config().i18nNamespace) ||
|
|
183
|
+
'La subida tardó demasiado. Verifica tu conexión.';
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
message = err.message;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
message =
|
|
191
|
+
this.i18n.t('uploadError', this.config().i18nNamespace) ||
|
|
192
|
+
'Error al subir la imagen';
|
|
193
|
+
}
|
|
169
194
|
this.emitError('uploadFailed', message, err);
|
|
170
195
|
}
|
|
171
196
|
finally {
|
|
@@ -342,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
342
367
|
}], uploadStart: [{
|
|
343
368
|
type: Output
|
|
344
369
|
}] } });
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F2YXRhci11cGxvYWQvYXZhdGFyLXVwbG9hZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxzQkFBc0IsR0FJdkIsTUFBTSxTQUFTLENBQUM7O0FBRWpCLFFBQVEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFtRkgsTUFBTSxPQUFPLHFCQUFxQjtJQWxGbEM7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QyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO0lBQ2YsU0FBUyxDQUNmLElBQStCLEVBQy9CLE9BQWUsRUFDZixhQUF1QjtRQUV2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDOytHQXBMVSxxQkFBcUI7bUdBQXJCLHFCQUFxQix3WUE5RXRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRVQsODBEQTVFUyxZQUFZLCtCQUFFLE9BQU8sMkpBQUUsVUFBVSx5R0FBRSxRQUFRLHNEQUFFLGtCQUFrQjs7NEZBK0U5RCxxQkFBcUI7a0JBbEZqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsWUFDaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJFVDs4QkFTdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQU1aLFFBQVE7c0JBQWpCLE1BQU07Z0JBR0csS0FBSztzQkFBZCxNQUFNO2dCQUdHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24sIElvbk1vZGFsLCBJb25TcGlubmVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNhbWVyYU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlyZWJhc2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEltYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ltYWdlJztcbmltcG9ydCB7IEltYWdlQ3JvcENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9pbWFnZS1jcm9wJztcbmltcG9ydCB7XG4gIEFWQVRBUl9VUExPQURfREVGQVVMVFMsXG4gIEF2YXRhclVwbG9hZEVycm9yLFxuICBBdmF0YXJVcGxvYWRNZXRhZGF0YSxcbiAgQXZhdGFyVXBsb2FkUmVzdWx0LFxufSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBjYW1lcmFPdXRsaW5lIH0pO1xuXG4vKipcbiAqIEF2YXRhclVwbG9hZENvbXBvbmVudFxuICpcbiAqIEEgY29tcGxldGUgYXZhdGFyIHVwbG9hZCBzb2x1dGlvbiB3aXRoOlxuICogLSBJbWFnZSBzZWxlY3Rpb24gZnJvbSBkZXZpY2VcbiAqIC0gQ3JvcCBtb2RhbCB3aXRoIHJvdW5kIHByZXZpZXdcbiAqIC0gQXV0b21hdGljIGNvbXByZXNzaW9uIGFuZCB0aHVtYm5haWwgZ2VuZXJhdGlvblxuICogLSBVcGxvYWQgdG8gRmlyZWJhc2UgU3RvcmFnZVxuICogLSBCYWNrZW5kIHN5bmMgdmlhIEF1dGhTZXJ2aWNlXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtYXZhdGFyLXVwbG9hZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGN1cnJlbnRVcmw6IHVzZXIoKT8uYXZhdGFyVXJsLFxuICogICAgIGluaXRpYWxzOiAnSkQnLFxuICogICAgIHNpemU6IDEyMFxuICogICB9XCJcbiAqICAgKHVwbG9hZGVkKT1cIm9uQXZhdGFyVXBsb2FkZWQoJGV2ZW50KVwiXG4gKiAgIChlcnJvcik9XCJvbkVycm9yKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXZhdGFyLXVwbG9hZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIElvblNwaW5uZXIsIElvbk1vZGFsLCBJbWFnZUNyb3BDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXZhdGFyLXVwbG9hZFwiXG4gICAgICBbc3R5bGUuLS1hdmF0YXItc2l6ZS5weF09XCJjb25maWcoKS5zaXplXCJcbiAgICAgIFtjbGFzcy5hdmF0YXItdXBsb2FkLS1sb2FkaW5nXT1cImxvYWRpbmcoKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jb250YWluZXJcIj5cbiAgICAgICAgPCEtLSBBdmF0YXIgSW1hZ2Ugb3IgSW5pdGlhbHMgLS0+XG4gICAgICAgIEBpZiAoZGlzcGxheVVybCgpKSB7XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgY2xhc3M9XCJhdmF0YXItaW1hZ2VcIlxuICAgICAgICAgICAgW3NyY109XCJkaXNwbGF5VXJsKClcIlxuICAgICAgICAgICAgYWx0PVwiQXZhdGFyXCJcbiAgICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhdmF0YXItaW5pdGlhbHNcIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiY29uZmlnKCkuYmFja2dyb3VuZENvbG9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBjb25maWcoKS5pbml0aWFscyB8fCAnPycgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRWRpdCBCdXR0b24gLS0+XG4gICAgICAgIEBpZiAoY29uZmlnKCkuZWRpdGFibGUgJiYgIWxvYWRpbmcoKSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdC1idXR0b25cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImVkaXRCdXR0b25MYWJlbCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbWVyYS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gTG9hZGluZyBPdmVybGF5IC0tPlxuICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBIaWRkZW4gRmlsZSBJbnB1dCAtLT5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgYWNjZXB0PVwiaW1hZ2UvanBlZyxpbWFnZS9wbmcsaW1hZ2Uvd2VicFwiXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgIGhpZGRlblxuICAgICAgLz5cblxuICAgICAgPCEtLSBDcm9wIE1vZGFsIC0tPlxuICAgICAgPGlvbi1tb2RhbFxuICAgICAgICBbaXNPcGVuXT1cInNob3dDcm9wTW9kYWwoKVwiXG4gICAgICAgIChkaWREaXNtaXNzKT1cIm9uQ3JvcENhbmNlbCgpXCJcbiAgICAgICAgW2JyZWFrcG9pbnRzXT1cIlswLCAxXVwiXG4gICAgICAgIFtpbml0aWFsQnJlYWtwb2ludF09XCIxXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRGaWxlKCkpIHtcbiAgICAgICAgICAgIDx2YWwtaW1hZ2UtY3JvcFxuICAgICAgICAgICAgICBbaW1hZ2VdPVwic2VsZWN0ZWRGaWxlKCkhXCJcbiAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cIjFcIlxuICAgICAgICAgICAgICBbcm91bmRDcm9wcGVyXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaTE4bk5hbWVzcGFjZV09XCJjb25maWcoKS5pMThuTmFtZXNwYWNlXCJcbiAgICAgICAgICAgICAgKGNyb3BDb21wbGV0ZSk9XCJvbkNyb3BDb21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGNhbmNlbCk9XCJvbkNyb3BDYW5jZWwoKVwiXG4gICAgICAgICAgICAgIChsb2FkRmFpbGVkKT1cIm9uQ3JvcExvYWRGYWlsZWQoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvaW9uLW1vZGFsPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXItdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhclVwbG9hZENvbXBvbmVudCB7XG4gIHByaXZhdGUgaW1hZ2VTZXJ2aWNlID0gaW5qZWN0KEltYWdlU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PEF2YXRhclVwbG9hZE1ldGFkYXRhPih7fSk7XG5cbiAgLyoqIEVtaXR0ZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCB1cGxvYWQgYW5kIGJhY2tlbmQgc3luYyAqL1xuICBAT3V0cHV0KCkgdXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEF2YXRhclVwbG9hZFJlc3VsdD4oKTtcblxuICAvKiogRW1pdHRlZCBvbiBhbnkgZXJyb3IgZHVyaW5nIHRoZSBwcm9jZXNzICovXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8QXZhdGFyVXBsb2FkRXJyb3I+KCk7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiB1cGxvYWQgc3RhcnRzICovXG4gIEBPdXRwdXQoKSB1cGxvYWRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZVxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93Q3JvcE1vZGFsID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkRmlsZSA9IHNpZ25hbDxGaWxlIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBwcmV2aWV3VXJsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgaW1hZ2VMb2FkRXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBNZXJnZWQgY29uZmlnIHdpdGggZGVmYXVsdHMgKi9cbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4uQVZBVEFSX1VQTE9BRF9ERUZBVUxUUyxcbiAgICAuLi50aGlzLnByb3BzKCksXG4gIH0pKTtcblxuICAvKiogVVJMIHRvIGRpc3BsYXkgKHByZXZpZXcgdGFrZXMgcHJpb3JpdHkgb3ZlciBjdXJyZW50KSAqL1xuICBwcm90ZWN0ZWQgZGlzcGxheVVybCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pbWFnZUxvYWRFcnJvcigpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3VXJsKCkgfHwgdGhpcy5jb25maWcoKS5jdXJyZW50VXJsIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8qKiBBcmlhIGxhYmVsIGZvciBlZGl0IGJ1dHRvbiAqL1xuICBwcm90ZWN0ZWQgZWRpdEJ1dHRvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdjaGFuZ2VQaG90bycsIHRoaXMuY29uZmlnKCkuaTE4bk5hbWVzcGFjZSkgfHwgJ0NhbWJpYXIgZm90byc7XG4gIH0pO1xuXG4gIC8qKiBPcGVuIGZpbGUgcGlja2VyIGRpYWxvZyAqL1xuICBvcGVuRmlsZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGZpbGUgc2VsZWN0aW9uICovXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG5cbiAgICBpZiAoIWZpbGUpIHJldHVybjtcblxuICAgIC8vIFJlc2V0IGlucHV0IGZvciBzYW1lIGZpbGUgc2VsZWN0aW9uXG4gICAgaW5wdXQudmFsdWUgPSAnJztcblxuICAgIC8vIFZhbGlkYXRlIGZpbGVcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy5pbWFnZVNlcnZpY2UudmFsaWRhdGUoZmlsZSwge1xuICAgICAgbWF4U2l6ZTogdGhpcy5jb25maWcoKS5tYXhGaWxlU2l6ZSxcbiAgICAgIGFsbG93ZWRUeXBlczogWydpbWFnZS9qcGVnJywgJ2ltYWdlL3BuZycsICdpbWFnZS93ZWJwJ10sXG4gICAgfSk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHRoaXMuZW1pdEVycm9yKHZhbGlkYXRpb24uZXJyb3IgYXMgQXZhdGFyVXBsb2FkRXJyb3JbJ3R5cGUnXSwgdmFsaWRhdGlvbi5tZXNzYWdlISk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gT3BlbiBjcm9wIG1vZGFsXG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc2V0KGZpbGUpO1xuICAgIHRoaXMuc2hvd0Nyb3BNb2RhbC5zZXQodHJ1ZSk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNyb3AgY29tcGxldGlvbiAqL1xuICBhc3luYyBvbkNyb3BDb21wbGV0ZShjcm9wcGVkQmxvYjogQmxvYik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2hvd0Nyb3BNb2RhbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnNldChudWxsKTtcblxuICAgIGF3YWl0IHRoaXMucHJvY2Vzc0FuZFVwbG9hZChjcm9wcGVkQmxvYik7XG4gIH1cblxuICAvKiogSGFuZGxlIGNyb3AgY2FuY2VsICovXG4gIG9uQ3JvcENhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDcm9wTW9kYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQobnVsbCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNyb3AgbG9hZCBmYWlsdXJlICovXG4gIG9uQ3JvcExvYWRGYWlsZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q3JvcE1vZGFsLnNldChmYWxzZSk7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc2V0KG51bGwpO1xuICAgIHRoaXMuZW1pdEVycm9yKCdpbnZhbGlkVHlwZScsIHRoaXMuaTE4bi50KCdsb2FkRmFpbGVkJywgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKSB8fCAnTm8gc2UgcHVkbyBjYXJnYXIgbGEgaW1hZ2VuJyk7XG4gIH1cblxuICAvKiogSGFuZGxlIGltYWdlIGxvYWQgZXJyb3IgKi9cbiAgb25JbWFnZUVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VMb2FkRXJyb3Iuc2V0KHRydWUpO1xuICB9XG5cbiAgLyoqIFByb2Nlc3MgY3JvcHBlZCBpbWFnZSBhbmQgdXBsb2FkICovXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0FuZFVwbG9hZChjcm9wcGVkQmxvYjogQmxvYik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy51cGxvYWRTdGFydC5lbWl0KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcblxuICAgICAgLy8gMS4gQ29tcHJlc3MgaW1hZ2VcbiAgICAgIGNvbnN0IGNvbXByZXNzZWQgPSBhd2FpdCB0aGlzLmltYWdlU2VydmljZS5jb21wcmVzcyhjcm9wcGVkQmxvYiwge1xuICAgICAgICBtYXhXaWR0aDogY29uZmlnLm1heFdpZHRoLFxuICAgICAgICBtYXhIZWlnaHQ6IGNvbmZpZy5tYXhXaWR0aCxcbiAgICAgICAgcXVhbGl0eTogY29uZmlnLmNvbXByZXNzUXVhbGl0eSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyAyLiBHZW5lcmF0ZSB0aHVtYm5haWxcbiAgICAgIGNvbnN0IHRodW1ibmFpbCA9IGF3YWl0IHRoaXMuaW1hZ2VTZXJ2aWNlLnRodW1ibmFpbChcbiAgICAgICAgY29tcHJlc3NlZC5ibG9iLFxuICAgICAgICBjb25maWcudGh1bWJuYWlsU2l6ZVxuICAgICAgKTtcblxuICAgICAgLy8gMy4gU2V0IHByZXZpZXcgaW1tZWRpYXRlbHlcbiAgICAgIHRoaXMucHJldmlld1VybC5zZXQoY29tcHJlc3NlZC5kYXRhVXJsKTtcbiAgICAgIHRoaXMuaW1hZ2VMb2FkRXJyb3Iuc2V0KGZhbHNlKTtcblxuICAgICAgLy8gNC4gR2V0IHVzZXIgSUQgZm9yIHN0b3JhZ2UgcGF0aFxuICAgICAgY29uc3QgdXNlcklkID0gdGhpcy5hdXRoU2VydmljZS51c2VyKCk/LnVzZXJJZDtcbiAgICAgIGlmICghdXNlcklkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aGVudGljYXRlZCcpO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBVcGxvYWQgdG8gRmlyZWJhc2UgU3RvcmFnZVxuICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGF2YXRhclBhdGggPSBgJHtjb25maWcuc3RvcmFnZVBhdGh9LyR7dXNlcklkfS9hdmF0YXJfJHt0aW1lc3RhbXB9LmpwZ2A7XG4gICAgICBjb25zdCB0aHVtYlBhdGggPSBgJHtjb25maWcuc3RvcmFnZVBhdGh9LyR7dXNlcklkfS90aHVtYl8ke3RpbWVzdGFtcH0uanBnYDtcblxuICAgICAgY29uc3QgW2F2YXRhclJlc3VsdCwgdGh1bWJSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwbG9hZEFuZEdldFVybChhdmF0YXJQYXRoLCBjb21wcmVzc2VkLmJsb2IpLFxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwbG9hZEFuZEdldFVybCh0aHVtYlBhdGgsIHRodW1ibmFpbC5ibG9iKSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyA2LiBVcGRhdGUgYmFja2VuZFxuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudXBkYXRlQXZhdGFyKHtcbiAgICAgICAgICBhdmF0YXJVcmw6IGF2YXRhclJlc3VsdC5kb3dubG9hZFVybCxcbiAgICAgICAgICBhdmF0YXJUaHVtYm5haWw6IHRodW1iUmVzdWx0LmRvd25sb2FkVXJsLFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgLy8gNy4gRW1pdCBzdWNjZXNzXG4gICAgICBjb25zdCByZXN1bHQ6IEF2YXRhclVwbG9hZFJlc3VsdCA9IHtcbiAgICAgICAgYXZhdGFyVXJsOiBhdmF0YXJSZXN1bHQuZG93bmxvYWRVcmwsXG4gICAgICAgIHRodW1ibmFpbFVybDogdGh1bWJSZXN1bHQuZG93bmxvYWRVcmwsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnVwbG9hZGVkLmVtaXQocmVzdWx0KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFJldmVydCBwcmV2aWV3IG9uIGVycm9yXG4gICAgICB0aGlzLnByZXZpZXdVcmwuc2V0KG51bGwpO1xuXG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICA/IGVyci5tZXNzYWdlXG4gICAgICAgICAgOiB0aGlzLmkxOG4udCgndXBsb2FkRXJyb3InLCB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UpIHx8ICdFcnJvciBhbCBzdWJpciBsYSBpbWFnZW4nO1xuXG4gICAgICB0aGlzLmVtaXRFcnJvcigndXBsb2FkRmFpbGVkJywgbWVzc2FnZSwgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVtaXQgZXJyb3IgZXZlbnQgKi9cbiAgcHJpdmF0ZSBlbWl0RXJyb3IoXG4gICAgdHlwZTogQXZhdGFyVXBsb2FkRXJyb3JbJ3R5cGUnXSxcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxFcnJvcj86IHVua25vd25cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvci5lbWl0KHsgdHlwZSwgbWVzc2FnZSwgb3JpZ2luYWxFcnJvciB9KTtcbiAgfVxufVxuIl19
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F2YXRhci11cGxvYWQvYXZhdGFyLXVwbG9hZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxzQkFBc0IsR0FJdkIsTUFBTSxTQUFTLENBQUM7O0FBRWpCLFFBQVEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFtRkgsTUFBTSxPQUFPLHFCQUFxQjtJQWxGbEM7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QTJFVCw4MERBNUVTLFlBQVksK0JBQUUsT0FBTywySkFBRSxVQUFVLHlHQUFFLFFBQVEsc0RBQUUsa0JBQWtCOzs0RkErRTlELHFCQUFxQjtrQkFsRmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxZQUNoRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkVUOzhCQVN1QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBTVosUUFBUTtzQkFBakIsTUFBTTtnQkFHRyxLQUFLO3NCQUFkLE1BQU07Z0JBR0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uTW9kYWwsIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2FtZXJhT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXJlYmFzZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgSW1hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW1hZ2UnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2ltYWdlLWNyb3AnO1xuaW1wb3J0IHtcbiAgQVZBVEFSX1VQTE9BRF9ERUZBVUxUUyxcbiAgQXZhdGFyVXBsb2FkRXJyb3IsXG4gIEF2YXRhclVwbG9hZE1ldGFkYXRhLFxuICBBdmF0YXJVcGxvYWRSZXN1bHQsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IGNhbWVyYU91dGxpbmUgfSk7XG5cbi8qKlxuICogQXZhdGFyVXBsb2FkQ29tcG9uZW50XG4gKlxuICogQSBjb21wbGV0ZSBhdmF0YXIgdXBsb2FkIHNvbHV0aW9uIHdpdGg6XG4gKiAtIEltYWdlIHNlbGVjdGlvbiBmcm9tIGRldmljZVxuICogLSBDcm9wIG1vZGFsIHdpdGggcm91bmQgcHJldmlld1xuICogLSBBdXRvbWF0aWMgY29tcHJlc3Npb24gYW5kIHRodW1ibmFpbCBnZW5lcmF0aW9uXG4gKiAtIFVwbG9hZCB0byBGaXJlYmFzZSBTdG9yYWdlXG4gKiAtIEJhY2tlbmQgc3luYyB2aWEgQXV0aFNlcnZpY2VcbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1hdmF0YXItdXBsb2FkXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY3VycmVudFVybDogdXNlcigpPy5hdmF0YXJVcmwsXG4gKiAgICAgaW5pdGlhbHM6ICdKRCcsXG4gKiAgICAgc2l6ZTogMTIwXG4gKiAgIH1cIlxuICogICAodXBsb2FkZWQpPVwib25BdmF0YXJVcGxvYWRlZCgkZXZlbnQpXCJcbiAqICAgKGVycm9yKT1cIm9uRXJyb3IoJGV2ZW50KVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hdmF0YXItdXBsb2FkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbiwgSW9uU3Bpbm5lciwgSW9uTW9kYWwsIEltYWdlQ3JvcENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJhdmF0YXItdXBsb2FkXCJcbiAgICAgIFtzdHlsZS4tLWF2YXRhci1zaXplLnB4XT1cImNvbmZpZygpLnNpemVcIlxuICAgICAgW2NsYXNzLmF2YXRhci11cGxvYWQtLWxvYWRpbmddPVwibG9hZGluZygpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIEF2YXRhciBJbWFnZSBvciBJbml0aWFscyAtLT5cbiAgICAgICAgQGlmIChkaXNwbGF5VXJsKCkpIHtcbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzcz1cImF2YXRhci1pbWFnZVwiXG4gICAgICAgICAgICBbc3JjXT1cImRpc3BsYXlVcmwoKVwiXG4gICAgICAgICAgICBhbHQ9XCJBdmF0YXJcIlxuICAgICAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF2YXRhci1pbml0aWFsc1wiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb25maWcoKS5iYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGNvbmZpZygpLmluaXRpYWxzIHx8ICc/JyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBFZGl0IEJ1dHRvbiAtLT5cbiAgICAgICAgQGlmIChjb25maWcoKS5lZGl0YWJsZSAmJiAhbG9hZGluZygpKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ1dHRvblwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcigpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZWRpdEJ1dHRvbkxhYmVsKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2FtZXJhLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBMb2FkaW5nIE92ZXJsYXkgLS0+XG4gICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEhpZGRlbiBGaWxlIElucHV0IC0tPlxuICAgICAgPGlucHV0XG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBhY2NlcHQ9XCJpbWFnZS9qcGVnLGltYWdlL3BuZyxpbWFnZS93ZWJwXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgaGlkZGVuXG4gICAgICAvPlxuXG4gICAgICA8IS0tIENyb3AgTW9kYWwgLS0+XG4gICAgICA8aW9uLW1vZGFsXG4gICAgICAgIFtpc09wZW5dPVwic2hvd0Nyb3BNb2RhbCgpXCJcbiAgICAgICAgKGRpZERpc21pc3MpPVwib25Dcm9wQ2FuY2VsKClcIlxuICAgICAgICBbYnJlYWtwb2ludHNdPVwiWzAsIDFdXCJcbiAgICAgICAgW2luaXRpYWxCcmVha3BvaW50XT1cIjFcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgQGlmIChzZWxlY3RlZEZpbGUoKSkge1xuICAgICAgICAgICAgPHZhbC1pbWFnZS1jcm9wXG4gICAgICAgICAgICAgIFtpbWFnZV09XCJzZWxlY3RlZEZpbGUoKSFcIlxuICAgICAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiMVwiXG4gICAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtpMThuTmFtZXNwYWNlXT1cImNvbmZpZygpLmkxOG5OYW1lc3BhY2VcIlxuICAgICAgICAgICAgICAoY3JvcENvbXBsZXRlKT1cIm9uQ3JvcENvbXBsZXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAoY2FuY2VsKT1cIm9uQ3JvcENhbmNlbCgpXCJcbiAgICAgICAgICAgICAgKGxvYWRGYWlsZWQpPVwib25Dcm9wTG9hZEZhaWxlZCgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9pb24tbW9kYWw+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2F2YXRhci11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyVXBsb2FkQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpbWFnZVNlcnZpY2UgPSBpbmplY3QoSW1hZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZSA9IGluamVjdChTdG9yYWdlU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgLyoqIENvbXBvbmVudCBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQ8QXZhdGFyVXBsb2FkTWV0YWRhdGE+KHt9KTtcblxuICAvKiogRW1pdHRlZCBhZnRlciBzdWNjZXNzZnVsIHVwbG9hZCBhbmQgYmFja2VuZCBzeW5jICovXG4gIEBPdXRwdXQoKSB1cGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QXZhdGFyVXBsb2FkUmVzdWx0PigpO1xuXG4gIC8qKiBFbWl0dGVkIG9uIGFueSBlcnJvciBkdXJpbmcgdGhlIHByb2Nlc3MgKi9cbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxBdmF0YXJVcGxvYWRFcnJvcj4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHVwbG9hZCBzdGFydHMgKi9cbiAgQE91dHB1dCgpIHVwbG9hZFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIEludGVybmFsIHN0YXRlXG4gIHByb3RlY3RlZCBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dDcm9wTW9kYWwgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRGaWxlID0gc2lnbmFsPEZpbGUgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHByZXZpZXdVcmwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBpbWFnZUxvYWRFcnJvciA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqIE1lcmdlZCBjb25maWcgd2l0aCBkZWZhdWx0cyAqL1xuICBwcm90ZWN0ZWQgY29uZmlnID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAuLi5BVkFUQVJfVVBMT0FEX0RFRkFVTFRTLFxuICAgIC4uLnRoaXMucHJvcHMoKSxcbiAgfSkpO1xuXG4gIC8qKiBVUkwgdG8gZGlzcGxheSAocHJldmlldyB0YWtlcyBwcmlvcml0eSBvdmVyIGN1cnJlbnQpICovXG4gIHByb3RlY3RlZCBkaXNwbGF5VXJsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmltYWdlTG9hZEVycm9yKCkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0aGlzLnByZXZpZXdVcmwoKSB8fCB0aGlzLmNvbmZpZygpLmN1cnJlbnRVcmwgfHwgbnVsbDtcbiAgfSk7XG5cbiAgLyoqIEFyaWEgbGFiZWwgZm9yIGVkaXQgYnV0dG9uICovXG4gIHByb3RlY3RlZCBlZGl0QnV0dG9uTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ2NoYW5nZVBob3RvJywgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKSB8fCAnQ2FtYmlhciBmb3RvJztcbiAgfSk7XG5cbiAgLyoqIE9wZW4gZmlsZSBwaWNrZXIgZGlhbG9nICovXG4gIG9wZW5GaWxlUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgZmlsZSBzZWxlY3Rpb24gKi9cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcblxuICAgIGlmICghZmlsZSkgcmV0dXJuO1xuXG4gICAgLy8gUmVzZXQgaW5wdXQgZm9yIHNhbWUgZmlsZSBzZWxlY3Rpb25cbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuXG4gICAgLy8gVmFsaWRhdGUgZmlsZVxuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB0aGlzLmltYWdlU2VydmljZS52YWxpZGF0ZShmaWxlLCB7XG4gICAgICBtYXhTaXplOiB0aGlzLmNvbmZpZygpLm1heEZpbGVTaXplLFxuICAgICAgYWxsb3dlZFR5cGVzOiBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvcG5nJywgJ2ltYWdlL3dlYnAnXSxcbiAgICB9KTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgdGhpcy5lbWl0RXJyb3IodmFsaWRhdGlvbi5lcnJvciBhcyBBdmF0YXJVcGxvYWRFcnJvclsndHlwZSddLCB2YWxpZGF0aW9uLm1lc3NhZ2UhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPcGVuIGNyb3AgbW9kYWxcbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQoZmlsZSk7XG4gICAgdGhpcy5zaG93Q3JvcE1vZGFsLnNldCh0cnVlKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgY3JvcCBjb21wbGV0aW9uICovXG4gIGFzeW5jIG9uQ3JvcENvbXBsZXRlKGNyb3BwZWRCbG9iOiBCbG9iKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zaG93Q3JvcE1vZGFsLnNldChmYWxzZSk7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUuc2V0KG51bGwpO1xuXG4gICAgYXdhaXQgdGhpcy5wcm9jZXNzQW5kVXBsb2FkKGNyb3BwZWRCbG9iKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgY3JvcCBjYW5jZWwgKi9cbiAgb25Dcm9wQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0Nyb3BNb2RhbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlLnNldChudWxsKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgY3JvcCBsb2FkIGZhaWx1cmUgKi9cbiAgb25Dcm9wTG9hZEZhaWxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDcm9wTW9kYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZS5zZXQobnVsbCk7XG4gICAgdGhpcy5lbWl0RXJyb3IoJ2ludmFsaWRUeXBlJywgdGhpcy5pMThuLnQoJ2xvYWRGYWlsZWQnLCB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UpIHx8ICdObyBzZSBwdWRvIGNhcmdhciBsYSBpbWFnZW4nKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgaW1hZ2UgbG9hZCBlcnJvciAqL1xuICBvbkltYWdlRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZUxvYWRFcnJvci5zZXQodHJ1ZSk7XG4gIH1cblxuICAvKiogVGltZW91dCBmb3IgdXBsb2FkIG9wZXJhdGlvbnMgKDMwIHNlY29uZHMpICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFVQTE9BRF9USU1FT1VUX01TID0gMzAwMDA7XG5cbiAgLyoqIFByb2Nlc3MgY3JvcHBlZCBpbWFnZSBhbmQgdXBsb2FkICovXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0FuZFVwbG9hZChjcm9wcGVkQmxvYjogQmxvYik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy51cGxvYWRTdGFydC5lbWl0KCk7XG5cbiAgICAvLyBUaW1lb3V0IHByb21pc2UgdG8gcHJldmVudCBpbmZpbml0ZSBsb2FkaW5nXG4gICAgY29uc3QgdXBsb2FkVGltZW91dCA9IG5ldyBQcm9taXNlPG5ldmVyPigoXywgcmVqZWN0KSA9PlxuICAgICAgc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignVXBsb2FkIHRpbWVvdXQnKSksXG4gICAgICAgIEF2YXRhclVwbG9hZENvbXBvbmVudC5VUExPQURfVElNRU9VVF9NU1xuICAgICAgKVxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcblxuICAgICAgLy8gMS4gQ29tcHJlc3MgaW1hZ2VcbiAgICAgIGNvbnN0IGNvbXByZXNzZWQgPSBhd2FpdCB0aGlzLmltYWdlU2VydmljZS5jb21wcmVzcyhjcm9wcGVkQmxvYiwge1xuICAgICAgICBtYXhXaWR0aDogY29uZmlnLm1heFdpZHRoLFxuICAgICAgICBtYXhIZWlnaHQ6IGNvbmZpZy5tYXhXaWR0aCxcbiAgICAgICAgcXVhbGl0eTogY29uZmlnLmNvbXByZXNzUXVhbGl0eSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyAyLiBHZW5lcmF0ZSB0aHVtYm5haWxcbiAgICAgIGNvbnN0IHRodW1ibmFpbCA9IGF3YWl0IHRoaXMuaW1hZ2VTZXJ2aWNlLnRodW1ibmFpbChcbiAgICAgICAgY29tcHJlc3NlZC5ibG9iLFxuICAgICAgICBjb25maWcudGh1bWJuYWlsU2l6ZVxuICAgICAgKTtcblxuICAgICAgLy8gMy4gU2V0IHByZXZpZXcgaW1tZWRpYXRlbHlcbiAgICAgIHRoaXMucHJldmlld1VybC5zZXQoY29tcHJlc3NlZC5kYXRhVXJsKTtcbiAgICAgIHRoaXMuaW1hZ2VMb2FkRXJyb3Iuc2V0KGZhbHNlKTtcblxuICAgICAgLy8gNC4gR2V0IHVzZXIgSUQgZm9yIHN0b3JhZ2UgcGF0aFxuICAgICAgY29uc3QgdXNlcklkID0gdGhpcy5hdXRoU2VydmljZS51c2VyKCk/LnVzZXJJZDtcbiAgICAgIGlmICghdXNlcklkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVXNlciBub3QgYXV0aGVudGljYXRlZCcpO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBVcGxvYWQgdG8gRmlyZWJhc2UgU3RvcmFnZSB3aXRoIHByZWRpY3RhYmxlIHBhdGhzXG4gICAgICAvLyBQYXRoOiB1c2Vycy97dXNlcklkfS9hdmF0YXIuanBnIC0gYWxsb3dzIGFueSBhcHAgdG8gY29uc3RydWN0IFVSTCB3aXRoIGp1c3QgdXNlcklkXG4gICAgICBjb25zdCBhdmF0YXJQYXRoID0gYHVzZXJzLyR7dXNlcklkfS9hdmF0YXIuanBnYDtcbiAgICAgIGNvbnN0IHRodW1iUGF0aCA9IGB1c2Vycy8ke3VzZXJJZH0vdGh1bWIuanBnYDtcblxuICAgICAgLy8gUmFjZSBhZ2FpbnN0IHRpbWVvdXQgdG8gcHJldmVudCBpbmZpbml0ZSBsb2FkaW5nXG4gICAgICBjb25zdCBbYXZhdGFyUmVzdWx0LCB0aHVtYlJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGxvYWRBbmRHZXRVcmwoYXZhdGFyUGF0aCwgY29tcHJlc3NlZC5ibG9iKSxcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwbG9hZEFuZEdldFVybCh0aHVtYlBhdGgsIHRodW1ibmFpbC5ibG9iKSxcbiAgICAgICAgXSksXG4gICAgICAgIHVwbG9hZFRpbWVvdXQsXG4gICAgICBdKTtcblxuICAgICAgLy8gNi4gVXBkYXRlIGJhY2tlbmQgd2l0aCBVUkxzXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS51cGRhdGVBdmF0YXIoe1xuICAgICAgICAgIGF2YXRhclVybDogYXZhdGFyUmVzdWx0LmRvd25sb2FkVXJsLFxuICAgICAgICAgIGF2YXRhclRodW1ibmFpbDogdGh1bWJSZXN1bHQuZG93bmxvYWRVcmwsXG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICAvLyA3LiBVcGRhdGUgcHJldmlldyB3aXRoIGNhY2hlLWJ1c3RpbmcgdG8gZm9yY2UgcmVmcmVzaFxuICAgICAgY29uc3QgY2FjaGVCdXN0ZXIgPSBgP3Q9JHtEYXRlLm5vdygpfWA7XG4gICAgICB0aGlzLnByZXZpZXdVcmwuc2V0KGF2YXRhclJlc3VsdC5kb3dubG9hZFVybCArIGNhY2hlQnVzdGVyKTtcblxuICAgICAgLy8gOC4gRW1pdCBzdWNjZXNzXG4gICAgICBjb25zdCByZXN1bHQ6IEF2YXRhclVwbG9hZFJlc3VsdCA9IHtcbiAgICAgICAgYXZhdGFyVXJsOiBhdmF0YXJSZXN1bHQuZG93bmxvYWRVcmwsXG4gICAgICAgIHRodW1ibmFpbFVybDogdGh1bWJSZXN1bHQuZG93bmxvYWRVcmwsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnVwbG9hZGVkLmVtaXQocmVzdWx0KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFJldmVydCBwcmV2aWV3IG9uIGVycm9yXG4gICAgICB0aGlzLnByZXZpZXdVcmwuc2V0KG51bGwpO1xuXG4gICAgICAvLyBEZXRlcm1pbmUgZXJyb3IgbWVzc2FnZSBiYXNlZCBvbiBlcnJvciB0eXBlXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGlmIChlcnIubWVzc2FnZSA9PT0gJ1VwbG9hZCB0aW1lb3V0Jykge1xuICAgICAgICAgIG1lc3NhZ2UgPVxuICAgICAgICAgICAgdGhpcy5pMThuLnQoJ3VwbG9hZFRpbWVvdXQnLCB0aGlzLmNvbmZpZygpLmkxOG5OYW1lc3BhY2UpIHx8XG4gICAgICAgICAgICAnTGEgc3ViaWRhIHRhcmTDsyBkZW1hc2lhZG8uIFZlcmlmaWNhIHR1IGNvbmV4acOzbi4nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9XG4gICAgICAgICAgdGhpcy5pMThuLnQoJ3VwbG9hZEVycm9yJywgdGhpcy5jb25maWcoKS5pMThuTmFtZXNwYWNlKSB8fFxuICAgICAgICAgICdFcnJvciBhbCBzdWJpciBsYSBpbWFnZW4nO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRFcnJvcigndXBsb2FkRmFpbGVkJywgbWVzc2FnZSwgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVtaXQgZXJyb3IgZXZlbnQgKi9cbiAgcHJpdmF0ZSBlbWl0RXJyb3IoXG4gICAgdHlwZTogQXZhdGFyVXBsb2FkRXJyb3JbJ3R5cGUnXSxcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxFcnJvcj86IHVua25vd25cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvci5lbWl0KHsgdHlwZSwgbWVzc2FnZSwgb3JpZ2luYWxFcnJvciB9KTtcbiAgfVxufVxuIl19
|
|
@@ -381,6 +381,35 @@ export class StorageService {
|
|
|
381
381
|
return ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt'].includes(ext);
|
|
382
382
|
}
|
|
383
383
|
// ===========================================================================
|
|
384
|
+
// USER AVATAR HELPERS
|
|
385
|
+
// ===========================================================================
|
|
386
|
+
/**
|
|
387
|
+
* Construye la URL de avatar de un usuario.
|
|
388
|
+
*
|
|
389
|
+
* Los avatares se almacenan en paths predecibles: `users/{userId}/avatar.jpg`
|
|
390
|
+
* Esto permite que cualquier app pueda mostrar avatares sin pedir la URL al backend,
|
|
391
|
+
* solo necesita el userId.
|
|
392
|
+
*
|
|
393
|
+
* @param userId - ID del usuario (ULID)
|
|
394
|
+
* @param type - 'avatar' para imagen completa, 'thumb' para thumbnail
|
|
395
|
+
* @returns URL directa de Firebase Storage
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* ```typescript
|
|
399
|
+
* // Mostrar avatar de cualquier usuario
|
|
400
|
+
* const avatarUrl = storage.getUserAvatarUrl('01ABCD...');
|
|
401
|
+
* const thumbUrl = storage.getUserAvatarUrl('01ABCD...', 'thumb');
|
|
402
|
+
*
|
|
403
|
+
* // Con cache-busting
|
|
404
|
+
* const freshUrl = storage.getUserAvatarUrl(userId) + `&t=${Date.now()}`;
|
|
405
|
+
* ```
|
|
406
|
+
*/
|
|
407
|
+
getUserAvatarUrl(userId, type = 'avatar') {
|
|
408
|
+
const bucket = this.config?.firebase?.storageBucket || 'myvaltech-dev.firebasestorage.app';
|
|
409
|
+
const path = `users/${userId}/${type}.jpg`;
|
|
410
|
+
return `https://firebasestorage.googleapis.com/v0/b/${bucket}/o/${encodeURIComponent(path)}?alt=media`;
|
|
411
|
+
}
|
|
412
|
+
// ===========================================================================
|
|
384
413
|
// MÉTODOS PRIVADOS
|
|
385
414
|
// ===========================================================================
|
|
386
415
|
/**
|
|
@@ -438,4 +467,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
438
467
|
type: Injectable,
|
|
439
468
|
args: [{ providedIn: 'root' }]
|
|
440
469
|
}], ctorParameters: () => [{ type: i1.Storage }] });
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxXQUFXLEVBQ1gsT0FBTyxFQUNQLEdBQUcsRUFFSCxvQkFBb0IsR0FHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBR25EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRjVCLFdBQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU5QixDQUFDO0lBRXhDOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsU0FBUztJQUNULDhFQUE4RTtJQUU5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNCRztJQUNILE1BQU0sQ0FBQyxJQUFZLEVBQUUsSUFBaUIsRUFBRSxRQUEwQjtRQUNoRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkQsTUFBTSxjQUFjLEdBQW1CO1lBQ3JDLFdBQVcsRUFBRSxRQUFRLEVBQUUsV0FBVyxJQUFJLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BGLGNBQWMsRUFBRSxRQUFRLEVBQUUsY0FBYztZQUN4QyxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVk7U0FDckMsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDcEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQWlCO1lBQ3BELGdCQUFnQixFQUFFLENBQUM7WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ3JCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsS0FBSyxFQUFFLFNBQVM7U0FDakIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEVBQUUsQ0FDTCxlQUFlLEVBQ2YsQ0FBQyxRQUE0QixFQUFFLEVBQUU7WUFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCO2dCQUMzQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7Z0JBQy9CLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQy9FLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDekMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDckIsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxFQUFFLE9BQU87YUFDZixDQUFDLENBQUM7WUFDSCxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNyQixVQUFVLEVBQUUsR0FBRztnQkFDZixLQUFLLEVBQUUsU0FBUzthQUNqQixDQUFDLENBQUM7WUFDSCxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQ25CLElBQVksRUFDWixJQUFpQixFQUNqQixRQUEwQjtRQUUxQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUMxQyxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUU7b0JBQ25CLElBQUksQ0FBQzt3QkFDSCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQzt3QkFDbkQsTUFBTSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3JELE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUVyRCxPQUFPLENBQUM7NEJBQ04sV0FBVzs0QkFDWCxRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVE7NEJBQ2pDLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSTs0QkFDekIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJOzRCQUN6QixXQUFXLEVBQUUsY0FBYyxDQUFDLFdBQVcsSUFBSSwwQkFBMEI7NEJBQ3JFLFFBQVEsRUFBRSxjQUFjLENBQUMsY0FBYyxJQUFJLEVBQUU7eUJBQzlDLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDdEMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNoQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FDckIsSUFBWSxFQUNaLE9BQWUsRUFDZixRQUEwQjtRQUUxQixzQ0FBc0M7UUFDdEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5QiwwQkFBMEI7UUFDMUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9DLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFMUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDdEMsV0FBVztZQUNYLEdBQUcsUUFBUTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsV0FBVztJQUNYLDhFQUE4RTtJQUU5RTs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDbkQsT0FBTyxNQUFNLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQVk7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ25ELE1BQU0sUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9DLE9BQU87Z0JBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO2dCQUNqQyxjQUFjLEVBQUUsUUFBUSxDQUFDLGNBQWM7Z0JBQ3ZDLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtnQkFDbkMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7YUFDcEIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsU0FBUztJQUNULDhFQUE4RTtJQUU5RTs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ25ELE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQWU7UUFDbEMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsT0FBTztJQUNQLDhFQUE4RTtJQUU5RTs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBWTtRQUNyQixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDbkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFekMsT0FBTztnQkFDTCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ2hELGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0NBQWdDO2FBQzNELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLGFBQWE7SUFDYiw4RUFBOEU7SUFFOUU7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsZ0JBQWdCLENBQUMsWUFBb0IsRUFBRSxNQUFlO1FBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRW5FLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLEdBQUcsTUFBTSxJQUFJLFNBQVMsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTyxHQUFHLFNBQVMsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILFlBQVksQ0FBQyxTQUFpQixFQUFFLFlBQW9CLEVBQUUsTUFBZTtRQUNuRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1FBQ2xFLE9BQU8sR0FBRyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLFFBQWdCO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsUUFBZ0I7UUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsOEVBQThFO0lBQzlFLG1CQUFtQjtJQUNuQiw4RUFBOEU7SUFFOUU7O09BRUc7SUFDSyxZQUFZLENBQUMsS0FBYTtRQUNoQyxRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxTQUFTLENBQUM7WUFDbkIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLEtBQUssT0FBTztnQkFDVixPQUFPLE9BQU8sQ0FBQztZQUNqQjtnQkFDRSxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZSxDQUFDLEtBQWM7UUFDcEMsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEdBQUksS0FBMkIsQ0FBQyxJQUFJLENBQUM7WUFFL0MsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDYixLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTyxzQkFBc0IsQ0FBQztnQkFDaEMsS0FBSyxzQkFBc0I7b0JBQ3pCLE9BQU8sK0NBQStDLENBQUM7Z0JBQ3pELEtBQUssa0JBQWtCO29CQUNyQixPQUFPLDRCQUE0QixDQUFDO2dCQUN0QyxLQUFLLHdCQUF3QjtvQkFDM0IsT0FBTywyQ0FBMkMsQ0FBQztnQkFDckQsS0FBSywwQkFBMEI7b0JBQzdCLE9BQU8sMEJBQTBCLENBQUM7Z0JBQ3BDLEtBQUssOEJBQThCO29CQUNqQyxPQUFPLHFDQUFxQyxDQUFDO2dCQUMvQyxLQUFLLHFCQUFxQjtvQkFDeEIsT0FBTyx5QkFBeUIsQ0FBQztnQkFDbkMsS0FBSywwQkFBMEI7b0JBQzdCLE9BQU8sb0JBQW9CLENBQUM7Z0JBQzlCO29CQUNFLE9BQU8sS0FBSyxDQUFDLE9BQU8sSUFBSSxxQ0FBcUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8scUNBQXFDLENBQUM7SUFDL0MsQ0FBQzsrR0EvYVUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdG9yYWdlIFNlcnZpY2VcbiAqXG4gKiBTZXJ2aWNpbyBwYXJhIG9wZXJhY2lvbmVzIGRlIEZpcmViYXNlIFN0b3JhZ2UuXG4gKiBTb3BvcnRhIHVwbG9hZCBjb24gdHJhY2tpbmcgZGUgcHJvZ3Jlc28sIGRvd25sb2FkIHkgZ2VzdGnDs24gZGUgYXJjaGl2b3MuXG4gKi9cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBkZWxldGVPYmplY3QsXG4gIGdldERvd25sb2FkVVJMLFxuICBnZXRNZXRhZGF0YSxcbiAgbGlzdEFsbCxcbiAgcmVmLFxuICBTdG9yYWdlLFxuICB1cGxvYWRCeXRlc1Jlc3VtYWJsZSxcbiAgVXBsb2FkTWV0YWRhdGEsXG4gIFVwbG9hZFRhc2tTbmFwc2hvdCxcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9zdG9yYWdlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFN0b3JhZ2VMaXN0UmVzdWx0LCBTdG9yYWdlTWV0YWRhdGEsIFVwbG9hZFByb2dyZXNzLCBVcGxvYWRSZXN1bHQsIFVwbG9hZFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBGaXJlYmFzZSBTdG9yYWdlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQge1xuICogICBwcml2YXRlIHN0b3JhZ2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICpcbiAqICAgdXBsb2FkUHJvZ3Jlc3MgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAqICAgZG93bmxvYWRVcmwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gKlxuICogICBhc3luYyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcbiAqICAgICBjb25zdCBmaWxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcz8uWzBdO1xuICogICAgIGlmICghZmlsZSkgcmV0dXJuO1xuICpcbiAqICAgICAvLyBVcGxvYWQgY29uIHByb2dyZXNvXG4gKiAgICAgdGhpcy5zdG9yYWdlLnVwbG9hZChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gLCBmaWxlKS5zdWJzY3JpYmUoe1xuICogICAgICAgbmV4dDogKHByb2dyZXNzKSA9PiB0aGlzLnVwbG9hZFByb2dyZXNzLnNldChwcm9ncmVzcy5wZXJjZW50YWdlKSxcbiAqICAgICAgIGNvbXBsZXRlOiBhc3luYyAoKSA9PiB7XG4gKiAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXREb3dubG9hZFVybChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gKTtcbiAqICAgICAgICAgdGhpcy5kb3dubG9hZFVybC5zZXQodXJsKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2UpIHt9XG5cbiAgLyoqXG4gICAqIFByZWZpamEgZWwgcGF0aCBkZSBzdG9yYWdlIGNvbiBlbCBhcHBJZCBzaSBlc3TDoSBjb25maWd1cmFkby5cbiAgICogU2kgbm8gaGF5IGFwcElkLCByZXRvcm5hIGVsIHBhdGggc2luIG1vZGlmaWNhciAoYmFja3dhcmQgY29tcGF0aWJsZSkuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBwcmVmaXhTdG9yYWdlUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jb25maWc/LmFwcElkKSByZXR1cm4gcGF0aDtcbiAgICByZXR1cm4gYCR7dGhpcy5jb25maWcuYXBwSWR9LyR7cGF0aH1gO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVQTE9BRFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIGNvbiB0cmFja2luZyBkZSBwcm9ncmVzby5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGVuIFN0b3JhZ2UgZG9uZGUgZ3VhcmRhciBlbCBhcmNoaXZvXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyIChGaWxlIG8gQmxvYilcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gTWV0YWRhdGEgb3BjaW9uYWwgKGNvbnRlbnRUeXBlLCBjdXN0b21NZXRhZGF0YSlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBxdWUgZW1pdGUgZWwgcHJvZ3Jlc28geSBjb21wbGV0YSBjdWFuZG8gdGVybWluYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFVwbG9hZCBiw6FzaWNvXG4gICAqIHN0b3JhZ2UudXBsb2FkKCdpbWFnZXMvcGhvdG8uanBnJywgZmlsZSkuc3Vic2NyaWJlKHtcbiAgICogICBuZXh0OiAocHJvZ3Jlc3MpID0+IGNvbnNvbGUubG9nKGAke3Byb2dyZXNzLnBlcmNlbnRhZ2V9JWApLFxuICAgKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnVXBsb2FkIGNvbXBsZXRhZG8nKVxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gQ29uIG1ldGFkYXRhXG4gICAqIHN0b3JhZ2UudXBsb2FkKCdkb2NzL3JlcG9ydC5wZGYnLCBmaWxlLCB7XG4gICAqICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgKiAgIGN1c3RvbU1ldGFkYXRhOiB7IHVwbG9hZGVkQnk6ICd1c2VyMTIzJyB9XG4gICAqIH0pLnN1YnNjcmliZSguLi4pO1xuICAgKiBgYGBcbiAgICovXG4gIHVwbG9hZChwYXRoOiBzdHJpbmcsIGZpbGU6IEZpbGUgfCBCbG9iLCBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YSk6IE9ic2VydmFibGU8VXBsb2FkUHJvZ3Jlc3M+IHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgIGNvbnN0IHVwbG9hZE1ldGFkYXRhOiBVcGxvYWRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRlbnRUeXBlOiBtZXRhZGF0YT8uY29udGVudFR5cGUgfHwgKGZpbGUgaW5zdGFuY2VvZiBGaWxlID8gZmlsZS50eXBlIDogdW5kZWZpbmVkKSxcbiAgICAgIGN1c3RvbU1ldGFkYXRhOiBtZXRhZGF0YT8uY3VzdG9tTWV0YWRhdGEsXG4gICAgICBjYWNoZUNvbnRyb2w6IG1ldGFkYXRhPy5jYWNoZUNvbnRyb2wsXG4gICAgfTtcblxuICAgIGNvbnN0IHRhc2sgPSB1cGxvYWRCeXRlc1Jlc3VtYWJsZShzdG9yYWdlUmVmLCBmaWxlLCB1cGxvYWRNZXRhZGF0YSk7XG4gICAgY29uc3QgcHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVcGxvYWRQcm9ncmVzcz4oe1xuICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgIHRvdGFsQnl0ZXM6IGZpbGUuc2l6ZSxcbiAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICBzdGF0ZTogJ3J1bm5pbmcnLFxuICAgIH0pO1xuXG4gICAgdGFzay5vbihcbiAgICAgICdzdGF0ZV9jaGFuZ2VkJyxcbiAgICAgIChzbmFwc2hvdDogVXBsb2FkVGFza1NuYXBzaG90KSA9PiB7XG4gICAgICAgIHByb2dyZXNzJC5uZXh0KHtcbiAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiBzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkLFxuICAgICAgICAgIHRvdGFsQnl0ZXM6IHNuYXBzaG90LnRvdGFsQnl0ZXMsXG4gICAgICAgICAgcGVyY2VudGFnZTogTWF0aC5yb3VuZCgoc25hcHNob3QuYnl0ZXNUcmFuc2ZlcnJlZCAvIHNuYXBzaG90LnRvdGFsQnl0ZXMpICogMTAwKSxcbiAgICAgICAgICBzdGF0ZTogdGhpcy5tYXBUYXNrU3RhdGUoc25hcHNob3Quc3RhdGUpLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IDAsXG4gICAgICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgc3RhdGU6ICdlcnJvcicsXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9ncmVzcyQuZXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHByb2dyZXNzJC5uZXh0KHtcbiAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiBmaWxlLnNpemUsXG4gICAgICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgICBzdGF0ZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvZ3Jlc3MkLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBwcm9ncmVzcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIHkgcmV0b3JuYSBsYSBVUkwgZGUgZGVzY2FyZ2EgYWwgY29tcGxldGFyLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZW4gU3RvcmFnZVxuICAgKiBAcGFyYW0gZmlsZSAtIEFyY2hpdm8gYSBzdWJpclxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBNZXRhZGF0YSBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSZXN1bHRhZG8gZGVsIHVwbG9hZCBjb24gVVJMIGRlIGRlc2NhcmdhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS51cGxvYWRBbmRHZXRVcmwoJ2F2YXRhcnMvdXNlcjEyMy5qcGcnLCBmaWxlKTtcbiAgICogY29uc29sZS5sb2coJ1VSTDonLCByZXN1bHQuZG93bmxvYWRVcmwpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHVwbG9hZEFuZEdldFVybChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZTogRmlsZSB8IEJsb2IsXG4gICAgbWV0YWRhdGE/OiBTdG9yYWdlTWV0YWRhdGFcbiAgKTogUHJvbWlzZTxVcGxvYWRSZXN1bHQ+IHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnVwbG9hZChwYXRoLCBmaWxlLCBtZXRhZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkTWV0YWRhdGEgPSBhd2FpdCBnZXRNZXRhZGF0YShzdG9yYWdlUmVmKTtcblxuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIGRvd25sb2FkVXJsLFxuICAgICAgICAgICAgICBmdWxsUGF0aDogc3RvcmVkTWV0YWRhdGEuZnVsbFBhdGgsXG4gICAgICAgICAgICAgIG5hbWU6IHN0b3JlZE1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgIHNpemU6IHN0b3JlZE1ldGFkYXRhLnNpemUsXG4gICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBzdG9yZWRNZXRhZGF0YS5jb250ZW50VHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyxcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IHN0b3JlZE1ldGFkYXRhLmN1c3RvbU1ldGFkYXRhIHx8IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YmUgdW4gYXJjaGl2byBkZXNkZSB1bmEgRGF0YSBVUkwgKGJhc2U2NCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBkYXRhVXJsIC0gRGF0YSBVUkwgKGVqOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LC4uLicpXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRGVzZGUgY2FudmFzXG4gICAqIGNvbnN0IGRhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS51cGxvYWRGcm9tRGF0YVVybCgnaW1hZ2VzL2RyYXdpbmcucG5nJywgZGF0YVVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkRnJvbURhdGFVcmwoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGRhdGFVcmw6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIC8vIEV4dHJhZXIgY29udGVudCB0eXBlIHkgZGF0b3MgYmFzZTY0XG4gICAgY29uc3QgbWF0Y2hlcyA9IGRhdGFVcmwubWF0Y2goL15kYXRhOihbXjtdKyk7YmFzZTY0LCguKykkLyk7XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgVVJMIGludsOhbGlkYScpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWF0Y2hlc1sxXTtcbiAgICBjb25zdCBiYXNlNjREYXRhID0gbWF0Y2hlc1syXTtcblxuICAgIC8vIENvbnZlcnRpciBiYXNlNjQgYSBCbG9iXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkQW5kR2V0VXJsKHBhdGgsIGJsb2IsIHtcbiAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgLi4ubWV0YWRhdGEsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRE9XTkxPQURcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgVVJMIGRlIGRlc2NhcmdhIGRlIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBlbiBTdG9yYWdlXG4gICAqIEByZXR1cm5zIFVSTCBkZSBkZXNjYXJnYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHVybCA9IGF3YWl0IHN0b3JhZ2UuZ2V0RG93bmxvYWRVcmwoJ2ltYWdlcy9waG90by5qcGcnKTtcbiAgICogLy8gVXNhciBlbiA8aW1nIFtzcmNdPVwidXJsXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0RG93bmxvYWRVcmwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgcmV0dXJuIGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBtZXRhZGF0YSBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm9cbiAgICogQHJldHVybnMgTWV0YWRhdGEgZGVsIGFyY2hpdm9cbiAgICovXG4gIGFzeW5jIGdldE1ldGFkYXRhKHBhdGg6IHN0cmluZyk6IFByb21pc2U8U3RvcmFnZU1ldGFkYXRhICYgeyBzaXplOiBudW1iZXI7IG5hbWU6IHN0cmluZyB9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgZ2V0TWV0YWRhdGEoc3RvcmFnZVJlZik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50VHlwZTogbWV0YWRhdGEuY29udGVudFR5cGUsXG4gICAgICAgIGN1c3RvbU1ldGFkYXRhOiBtZXRhZGF0YS5jdXN0b21NZXRhZGF0YSxcbiAgICAgICAgY2FjaGVDb250cm9sOiBtZXRhZGF0YS5jYWNoZUNvbnRyb2wsXG4gICAgICAgIHNpemU6IG1ldGFkYXRhLnNpemUsXG4gICAgICAgIG5hbWU6IG1ldGFkYXRhLm5hbWUsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gREVMRVRFXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBhIGVsaW1pbmFyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgc3RvcmFnZS5kZWxldGUoJ2ltYWdlcy9vbGQtcGhvdG8uanBnJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBhd2FpdCBkZWxldGVPYmplY3Qoc3RvcmFnZVJlZik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIG3Dumx0aXBsZXMgYXJjaGl2b3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRocyAtIEFycmF5IGRlIHJ1dGFzIGEgZWxpbWluYXJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBzdG9yYWdlLmRlbGV0ZU11bHRpcGxlKFtcbiAgICogICAnaW1hZ2VzL3Bob3RvMS5qcGcnLFxuICAgKiAgICdpbWFnZXMvcGhvdG8yLmpwZydcbiAgICogXSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTXVsdGlwbGUocGF0aHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocGF0aHMubWFwKChwYXRoKSA9PiB0aGlzLmRlbGV0ZShwYXRoKSkpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExJU1RcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIExpc3RhIGFyY2hpdm9zIGVuIHVuIGRpcmVjdG9yaW8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgZGlyZWN0b3Jpb1xuICAgKiBAcmV0dXJucyBMaXN0YSBkZSBydXRhcyBkZSBhcmNoaXZvc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JhZ2UubGlzdCgnaW1hZ2VzLycpO1xuICAgKiBjb25zb2xlLmxvZyhyZXN1bHQuaXRlbXMpOyAvLyBbJ2ltYWdlcy9waG90bzEuanBnJywgJ2ltYWdlcy9waG90bzIuanBnJ11cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBsaXN0KHBhdGg6IHN0cmluZyk6IFByb21pc2U8U3RvcmFnZUxpc3RSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGlzdEFsbChzdG9yYWdlUmVmKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZnVsbFBhdGgpLFxuICAgICAgICBuZXh0UGFnZVRva2VuOiB1bmRlZmluZWQsIC8vIGxpc3RBbGwgbm8gc29wb3J0YSBwYWdpbmFjacOzblxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVUSUxJREFERVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdlbmVyYSB1biBub21icmUgZGUgYXJjaGl2byDDum5pY28gY29uIHRpbWVzdGFtcC5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbCBkZWwgYXJjaGl2b1xuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBOb21icmUgw7puaWNvXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdW5pcXVlTmFtZSA9IHN0b3JhZ2UuZ2VuZXJhdGVGaWxlTmFtZSgncGhvdG8uanBnJywgJ3VzZXIxMjMnKTtcbiAgICogLy8gPT4gJ3VzZXIxMjNfMTcwMzA5MTIzNDU2N19waG90by5qcGcnXG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuZXJhdGVGaWxlTmFtZShvcmlnaW5hbE5hbWU6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNhbml0aXplZE5hbWUgPSBvcmlnaW5hbE5hbWUucmVwbGFjZSgvW15hLXpBLVowLTkuLV0vZywgJ18nKTtcblxuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7dGltZXN0YW1wfV8ke3Nhbml0aXplZE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RpbWVzdGFtcH1fJHtzYW5pdGl6ZWROYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhIHVuYSBydXRhIMO6bmljYSBwYXJhIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgLSBEaXJlY3RvcmlvIGJhc2VcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbFxuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSdXRhIGNvbXBsZXRhIMO6bmljYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBhdGggPSBzdG9yYWdlLmdlbmVyYXRlUGF0aCgndXBsb2FkcycsICdwaG90by5qcGcnLCAndXNlcjEyMycpO1xuICAgKiAvLyA9PiAndXBsb2Fkcy91c2VyMTIzXzE3MDMwOTEyMzQ1NjdfcGhvdG8uanBnJ1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmVyYXRlUGF0aChkaXJlY3Rvcnk6IHN0cmluZywgb3JpZ2luYWxOYW1lOiBzdHJpbmcsIHByZWZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmdlbmVyYXRlRmlsZU5hbWUob3JpZ2luYWxOYW1lLCBwcmVmaXgpO1xuICAgIGNvbnN0IGNsZWFuRGlyID0gZGlyZWN0b3J5LnJlcGxhY2UoL1xcLyskLywgJycpOyAvLyBSZW1vdmVyIC8gZmluYWxcbiAgICByZXR1cm4gYCR7Y2xlYW5EaXJ9LyR7ZmlsZU5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGV4dGVuc2nDs24gZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIC0gTm9tYnJlIGRlbCBhcmNoaXZvXG4gICAqIEByZXR1cm5zIEV4dGVuc2nDs24gKHNpbiBlbCBwdW50bylcbiAgICovXG4gIGdldEV4dGVuc2lvbihmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IGZpbGVuYW1lLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0cy5wb3AoKSEudG9Mb3dlckNhc2UoKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW5hIGltYWdlbiBiYXPDoW5kb3NlIGVuIHN1IGV4dGVuc2nDs24uXG4gICAqL1xuICBpc0ltYWdlKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEV4dGVuc2lvbihmaWxlbmFtZSk7XG4gICAgcmV0dXJuIFsnanBnJywgJ2pwZWcnLCAncG5nJywgJ2dpZicsICd3ZWJwJywgJ3N2ZycsICdibXAnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW4gZG9jdW1lbnRvLlxuICAgKi9cbiAgaXNEb2N1bWVudChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXh0ID0gdGhpcy5nZXRFeHRlbnNpb24oZmlsZW5hbWUpO1xuICAgIHJldHVybiBbJ3BkZicsICdkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICd0eHQnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE3DiVRPRE9TIFBSSVZBRE9TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBNYXBlYSBlbCBlc3RhZG8gZGUgbGEgdGFyZWEgZGUgdXBsb2FkXG4gICAqL1xuICBwcml2YXRlIG1hcFRhc2tTdGF0ZShzdGF0ZTogc3RyaW5nKTogVXBsb2FkU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgJ3J1bm5pbmcnOlxuICAgICAgICByZXR1cm4gJ3J1bm5pbmcnO1xuICAgICAgY2FzZSAncGF1c2VkJzpcbiAgICAgICAgcmV0dXJuICdwYXVzZWQnO1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICBjYXNlICdjYW5jZWxlZCc6XG4gICAgICAgIHJldHVybiAnY2FuY2VsZWQnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAncnVubmluZyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZpZXJ0ZSBlcnJvcmVzIGRlIFN0b3JhZ2UgYSBtZW5zYWplcyBlbiBlc3Bhw7FvbFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2UoZXJyb3I6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjb25zdCBjb2RlID0gKGVycm9yIGFzIHsgY29kZT86IHN0cmluZyB9KS5jb2RlO1xuXG4gICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9vYmplY3Qtbm90LWZvdW5kJzpcbiAgICAgICAgICByZXR1cm4gJ0VsIGFyY2hpdm8gbm8gZXhpc3RlJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS91bmF1dGhvcml6ZWQnOlxuICAgICAgICAgIHJldHVybiAnTm8gdGllbmVzIHBlcm1pc28gcGFyYSBhY2NlZGVyIGEgZXN0ZSBhcmNoaXZvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9jYW5jZWxlZCc6XG4gICAgICAgICAgcmV0dXJuICdMYSBvcGVyYWNpw7NuIGZ1ZSBjYW5jZWxhZGEnO1xuICAgICAgICBjYXNlICdzdG9yYWdlL3F1b3RhLWV4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gJ1NlIGhhIGV4Y2VkaWRvIGxhIGN1b3RhIGRlIGFsbWFjZW5hbWllbnRvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9pbnZhbGlkLWNoZWNrc3VtJzpcbiAgICAgICAgICByZXR1cm4gJ0VsIGFyY2hpdm8gZXN0w6EgY29ycnVwdG8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL3JldHJ5LWxpbWl0LWV4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gJ0Vycm9yIGRlIGNvbmV4acOzbi4gSW50ZW50YSBkZSBudWV2byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC11cmwnOlxuICAgICAgICAgIHJldHVybiAnVVJMIGRlIGFyY2hpdm8gaW52w6FsaWRhJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9pbnZhbGlkLWFyZ3VtZW50JzpcbiAgICAgICAgICByZXR1cm4gJ0FyZ3VtZW50byBpbnbDoWxpZG8nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlIHx8ICdFcnJvciBkZSBhbG1hY2VuYW1pZW50byBkZXNjb25vY2lkbyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICdFcnJvciBkZSBhbG1hY2VuYW1pZW50byBkZXNjb25vY2lkbyc7XG4gIH1cbn1cbiJdfQ==
|
|
470
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxXQUFXLEVBQ1gsT0FBTyxFQUNQLEdBQUcsRUFFSCxvQkFBb0IsR0FHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBR25EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRjVCLFdBQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU5QixDQUFDO0lBRXhDOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsU0FBUztJQUNULDhFQUE4RTtJQUU5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNCRztJQUNILE1BQU0sQ0FBQyxJQUFZLEVBQUUsSUFBaUIsRUFBRSxRQUEwQjtRQUNoRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMs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QixPQUFPLHNCQUFzQixDQUFDO2dCQUNoQyxLQUFLLHNCQUFzQjtvQkFDekIsT0FBTywrQ0FBK0MsQ0FBQztnQkFDekQsS0FBSyxrQkFBa0I7b0JBQ3JCLE9BQU8sNEJBQTRCLENBQUM7Z0JBQ3RDLEtBQUssd0JBQXdCO29CQUMzQixPQUFPLDJDQUEyQyxDQUFDO2dCQUNyRCxLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTywwQkFBMEIsQ0FBQztnQkFDcEMsS0FBSyw4QkFBOEI7b0JBQ2pDLE9BQU8scUNBQXFDLENBQUM7Z0JBQy9DLEtBQUsscUJBQXFCO29CQUN4QixPQUFPLHlCQUF5QixDQUFDO2dCQUNuQyxLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTyxvQkFBb0IsQ0FBQztnQkFDOUI7b0JBQ0UsT0FBTyxLQUFLLENBQUMsT0FBTyxJQUFJLHFDQUFxQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxxQ0FBcUMsQ0FBQztJQUMvQyxDQUFDOytHQTljVSxjQUFjO21IQUFkLGNBQWMsY0FERCxNQUFNOzs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0b3JhZ2UgU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIHBhcmEgb3BlcmFjaW9uZXMgZGUgRmlyZWJhc2UgU3RvcmFnZS5cbiAqIFNvcG9ydGEgdXBsb2FkIGNvbiB0cmFja2luZyBkZSBwcm9ncmVzbywgZG93bmxvYWQgeSBnZXN0acOzbiBkZSBhcmNoaXZvcy5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlbGV0ZU9iamVjdCxcbiAgZ2V0RG93bmxvYWRVUkwsXG4gIGdldE1ldGFkYXRhLFxuICBsaXN0QWxsLFxuICByZWYsXG4gIFN0b3JhZ2UsXG4gIHVwbG9hZEJ5dGVzUmVzdW1hYmxlLFxuICBVcGxvYWRNZXRhZGF0YSxcbiAgVXBsb2FkVGFza1NuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmFnZUxpc3RSZXN1bHQsIFN0b3JhZ2VNZXRhZGF0YSwgVXBsb2FkUHJvZ3Jlc3MsIFVwbG9hZFJlc3VsdCwgVXBsb2FkU3RhdGUgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIEZpcmViYXNlIFN0b3JhZ2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgc3RvcmFnZSA9IGluamVjdChTdG9yYWdlU2VydmljZSk7XG4gKlxuICogICB1cGxvYWRQcm9ncmVzcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICogICBkb3dubG9hZFVybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAqXG4gKiAgIGFzeW5jIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xuICogICAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XG4gKiAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gKlxuICogICAgIC8vIFVwbG9hZCBjb24gcHJvZ3Jlc29cbiAqICAgICB0aGlzLnN0b3JhZ2UudXBsb2FkKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWAsIGZpbGUpLnN1YnNjcmliZSh7XG4gKiAgICAgICBuZXh0OiAocHJvZ3Jlc3MpID0+IHRoaXMudXBsb2FkUHJvZ3Jlc3Muc2V0KHByb2dyZXNzLnBlcmNlbnRhZ2UpLFxuICogICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAqICAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldERvd25sb2FkVXJsKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWApO1xuICogICAgICAgICB0aGlzLmRvd25sb2FkVXJsLnNldCh1cmwpO1xuICogICAgICAgfVxuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSkge31cblxuICAvKipcbiAgICogUHJlZmlqYSBlbCBwYXRoIGRlIHN0b3JhZ2UgY29uIGVsIGFwcElkIHNpIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICAgKiBTaSBubyBoYXkgYXBwSWQsIHJldG9ybmEgZWwgcGF0aCBzaW4gbW9kaWZpY2FyIChiYWNrd2FyZCBjb21wYXRpYmxlKS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHByZWZpeFN0b3JhZ2VQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZz8uYXBwSWQpIHJldHVybiBwYXRoO1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy5hcHBJZH0vJHtwYXRofWA7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVBMT0FEXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8gY29uIHRyYWNraW5nIGRlIHByb2dyZXNvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZW4gU3RvcmFnZSBkb25kZSBndWFyZGFyIGVsIGFyY2hpdm9cbiAgICogQHBhcmFtIGZpbGUgLSBBcmNoaXZvIGEgc3ViaXIgKEZpbGUgbyBCbG9iKVxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBNZXRhZGF0YSBvcGNpb25hbCAoY29udGVudFR5cGUsIGN1c3RvbU1ldGFkYXRhKVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHF1ZSBlbWl0ZSBlbCBwcm9ncmVzbyB5IGNvbXBsZXRhIGN1YW5kbyB0ZXJtaW5hXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gVXBsb2FkIGLDoXNpY29cbiAgICogc3RvcmFnZS51cGxvYWQoJ2ltYWdlcy9waG90by5qcGcnLCBmaWxlKS5zdWJzY3JpYmUoe1xuICAgKiAgIG5leHQ6IChwcm9ncmVzcykgPT4gY29uc29sZS5sb2coYCR7cHJvZ3Jlc3MucGVyY2VudGFnZX0lYCksXG4gICAqICAgY29tcGxldGU6ICgpID0+IGNvbnNvbGUubG9nKCdVcGxvYWQgY29tcGxldGFkbycpXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBDb24gbWV0YWRhdGFcbiAgICogc3RvcmFnZS51cGxvYWQoJ2RvY3MvcmVwb3J0LnBkZicsIGZpbGUsIHtcbiAgICogICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAqICAgY3VzdG9tTWV0YWRhdGE6IHsgdXBsb2FkZWRCeTogJ3VzZXIxMjMnIH1cbiAgICogfSkuc3Vic2NyaWJlKC4uLik7XG4gICAqIGBgYFxuICAgKi9cbiAgdXBsb2FkKHBhdGg6IHN0cmluZywgZmlsZTogRmlsZSB8IEJsb2IsIG1ldGFkYXRhPzogU3RvcmFnZU1ldGFkYXRhKTogT2JzZXJ2YWJsZTxVcGxvYWRQcm9ncmVzcz4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgY29uc3QgdXBsb2FkTWV0YWRhdGE6IFVwbG9hZE1ldGFkYXRhID0ge1xuICAgICAgY29udGVudFR5cGU6IG1ldGFkYXRhPy5jb250ZW50VHlwZSB8fCAoZmlsZSBpbnN0YW5jZW9mIEZpbGUgPyBmaWxlLnR5cGUgOiB1bmRlZmluZWQpLFxuICAgICAgY3VzdG9tTWV0YWRhdGE6IG1ldGFkYXRhPy5jdXN0b21NZXRhZGF0YSxcbiAgICAgIGNhY2hlQ29udHJvbDogbWV0YWRhdGE/LmNhY2hlQ29udHJvbCxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFzayA9IHVwbG9hZEJ5dGVzUmVzdW1hYmxlKHN0b3JhZ2VSZWYsIGZpbGUsIHVwbG9hZE1ldGFkYXRhKTtcbiAgICBjb25zdCBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVwbG9hZFByb2dyZXNzPih7XG4gICAgICBieXRlc1RyYW5zZmVycmVkOiAwLFxuICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgIHN0YXRlOiAncnVubmluZycsXG4gICAgfSk7XG5cbiAgICB0YXNrLm9uKFxuICAgICAgJ3N0YXRlX2NoYW5nZWQnLFxuICAgICAgKHNuYXBzaG90OiBVcGxvYWRUYXNrU25hcHNob3QpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IHNuYXBzaG90LmJ5dGVzVHJhbnNmZXJyZWQsXG4gICAgICAgICAgdG90YWxCeXRlczogc25hcHNob3QudG90YWxCeXRlcyxcbiAgICAgICAgICBwZXJjZW50YWdlOiBNYXRoLnJvdW5kKChzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkIC8gc25hcHNob3QudG90YWxCeXRlcykgKiAxMDApLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLm1hcFRhc2tTdGF0ZShzbmFwc2hvdC5zdGF0ZSksXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBwcm9ncmVzcyQubmV4dCh7XG4gICAgICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICBzdGF0ZTogJ2Vycm9yJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2dyZXNzJC5lcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IGZpbGUuc2l6ZSxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxuICAgICAgICAgIHN0YXRlOiAnc3VjY2VzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9ncmVzcyQuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHByb2dyZXNzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8geSByZXRvcm5hIGxhIFVSTCBkZSBkZXNjYXJnYSBhbCBjb21wbGV0YXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkIGNvbiBVUkwgZGUgZGVzY2FyZ2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLnVwbG9hZEFuZEdldFVybCgnYXZhdGFycy91c2VyMTIzLmpwZycsIGZpbGUpO1xuICAgKiBjb25zb2xlLmxvZygnVVJMOicsIHJlc3VsdC5kb3dubG9hZFVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkQW5kR2V0VXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlIHwgQmxvYixcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMudXBsb2FkKHBhdGgsIGZpbGUsIG1ldGFkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgICBjb21wbGV0ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gYXdhaXQgZ2V0RG93bmxvYWRVUkwoc3RvcmFnZVJlZik7XG4gICAgICAgICAgICBjb25zdCBzdG9yZWRNZXRhZGF0YSA9IGF3YWl0IGdldE1ldGFkYXRhKHN0b3JhZ2VSZWYpO1xuXG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgZG93bmxvYWRVcmwsXG4gICAgICAgICAgICAgIGZ1bGxQYXRoOiBzdG9yZWRNZXRhZGF0YS5mdWxsUGF0aCxcbiAgICAgICAgICAgICAgbmFtZTogc3RvcmVkTWV0YWRhdGEubmFtZSxcbiAgICAgICAgICAgICAgc2l6ZTogc3RvcmVkTWV0YWRhdGEuc2l6ZSxcbiAgICAgICAgICAgICAgY29udGVudFR5cGU6IHN0b3JlZE1ldGFkYXRhLmNvbnRlbnRUeXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuICAgICAgICAgICAgICBtZXRhZGF0YTogc3RvcmVkTWV0YWRhdGEuY3VzdG9tTWV0YWRhdGEgfHwge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiByZWplY3QoZXJyb3IpLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIGRlc2RlIHVuYSBEYXRhIFVSTCAoYmFzZTY0KS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGVuIFN0b3JhZ2VcbiAgICogQHBhcmFtIGRhdGFVcmwgLSBEYXRhIFVSTCAoZWo6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsLi4uJylcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gTWV0YWRhdGEgb3BjaW9uYWxcbiAgICogQHJldHVybnMgUmVzdWx0YWRvIGRlbCB1cGxvYWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBEZXNkZSBjYW52YXNcbiAgICogY29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLnVwbG9hZEZyb21EYXRhVXJsKCdpbWFnZXMvZHJhd2luZy5wbmcnLCBkYXRhVXJsKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyB1cGxvYWRGcm9tRGF0YVVybChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZGF0YVVybDogc3RyaW5nLFxuICAgIG1ldGFkYXRhPzogU3RvcmFnZU1ldGFkYXRhXG4gICk6IFByb21pc2U8VXBsb2FkUmVzdWx0PiB7XG4gICAgLy8gRXh0cmFlciBjb250ZW50IHR5cGUgeSBkYXRvcyBiYXNlNjRcbiAgICBjb25zdCBtYXRjaGVzID0gZGF0YVVybC5tYXRjaCgvXmRhdGE6KFteO10rKTtiYXNlNjQsKC4rKSQvKTtcbiAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGF0YSBVUkwgaW52w6FsaWRhJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSBtYXRjaGVzWzFdO1xuICAgIGNvbnN0IGJhc2U2NERhdGEgPSBtYXRjaGVzWzJdO1xuXG4gICAgLy8gQ29udmVydGlyIGJhc2U2NCBhIEJsb2JcbiAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYmFzZTY0RGF0YSk7XG4gICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBieXRlTnVtYmVyc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG5cbiAgICByZXR1cm4gdGhpcy51cGxvYWRBbmRHZXRVcmwocGF0aCwgYmxvYiwge1xuICAgICAgY29udGVudFR5cGUsXG4gICAgICAuLi5tZXRhZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBET1dOTE9BRFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBVUkwgZGUgZGVzY2FyZ2EgZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBhcmNoaXZvIGVuIFN0b3JhZ2VcbiAgICogQHJldHVybnMgVVJMIGRlIGRlc2NhcmdhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdXJsID0gYXdhaXQgc3RvcmFnZS5nZXREb3dubG9hZFVybCgnaW1hZ2VzL3Bob3RvLmpwZycpO1xuICAgKiAvLyBVc2FyIGVuIDxpbWcgW3NyY109XCJ1cmxcIj5cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXREb3dubG9hZFVybChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICByZXR1cm4gYXdhaXQgZ2V0RG93bmxvYWRVUkwoc3RvcmFnZVJlZik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIG1ldGFkYXRhIGRlIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2b1xuICAgKiBAcmV0dXJucyBNZXRhZGF0YSBkZWwgYXJjaGl2b1xuICAgKi9cbiAgYXN5bmMgZ2V0TWV0YWRhdGEocGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlTWV0YWRhdGEgJiB7IHNpemU6IG51bWJlcjsgbmFtZTogc3RyaW5nIH0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBnZXRNZXRhZGF0YShzdG9yYWdlUmVmKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnRUeXBlOiBtZXRhZGF0YS5jb250ZW50VHlwZSxcbiAgICAgICAgY3VzdG9tTWV0YWRhdGE6IG1ldGFkYXRhLmN1c3RvbU1ldGFkYXRhLFxuICAgICAgICBjYWNoZUNvbnRyb2w6IG1ldGFkYXRhLmNhY2hlQ29udHJvbCxcbiAgICAgICAgc2l6ZTogbWV0YWRhdGEuc2l6ZSxcbiAgICAgICAgbmFtZTogbWV0YWRhdGEubmFtZSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBERUxFVEVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBhcmNoaXZvIGEgZWxpbWluYXJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBzdG9yYWdlLmRlbGV0ZSgnaW1hZ2VzL29sZC1waG90by5qcGcnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBkZWxldGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIGF3YWl0IGRlbGV0ZU9iamVjdChzdG9yYWdlUmVmKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgbcO6bHRpcGxlcyBhcmNoaXZvcy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhzIC0gQXJyYXkgZGUgcnV0YXMgYSBlbGltaW5hclxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IHN0b3JhZ2UuZGVsZXRlTXVsdGlwbGUoW1xuICAgKiAgICdpbWFnZXMvcGhvdG8xLmpwZycsXG4gICAqICAgJ2ltYWdlcy9waG90bzIuanBnJ1xuICAgKiBdKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBkZWxldGVNdWx0aXBsZShwYXRoczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwYXRocy5tYXAoKHBhdGgpID0+IHRoaXMuZGVsZXRlKHBhdGgpKSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTElTVFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTGlzdGEgYXJjaGl2b3MgZW4gdW4gZGlyZWN0b3Jpby5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBkaXJlY3RvcmlvXG4gICAqIEByZXR1cm5zIExpc3RhIGRlIHJ1dGFzIGRlIGFyY2hpdm9zXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS5saXN0KCdpbWFnZXMvJyk7XG4gICAqIGNvbnNvbGUubG9nKHJlc3VsdC5pdGVtcyk7IC8vIFsnaW1hZ2VzL3Bob3RvMS5qcGcnLCAnaW1hZ2VzL3Bob3RvMi5qcGcnXVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGxpc3QocGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlTGlzdFJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsaXN0QWxsKHN0b3JhZ2VSZWYpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5mdWxsUGF0aCksXG4gICAgICAgIG5leHRQYWdlVG9rZW46IHVuZGVmaW5lZCwgLy8gbGlzdEFsbCBubyBzb3BvcnRhIHBhZ2luYWNpw7NuXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2VuZXJhIHVuIG5vbWJyZSBkZSBhcmNoaXZvIMO6bmljbyBjb24gdGltZXN0YW1wLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxOYW1lIC0gTm9tYnJlIG9yaWdpbmFsIGRlbCBhcmNoaXZvXG4gICAqIEBwYXJhbSBwcmVmaXggLSBQcmVmaWpvIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIE5vbWJyZSDDum5pY29cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB1bmlxdWVOYW1lID0gc3RvcmFnZS5nZW5lcmF0ZUZpbGVOYW1lKCdwaG90by5qcGcnLCAndXNlcjEyMycpO1xuICAgKiAvLyA9PiAndXNlcjEyM18xNzAzMDkxMjM0NTY3X3Bob3RvLmpwZydcbiAgICogYGBgXG4gICAqL1xuICBnZW5lcmF0ZUZpbGVOYW1lKG9yaWdpbmFsTmFtZTogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2FuaXRpemVkTmFtZSA9IG9yaWdpbmFsTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOS4tXS9nLCAnXycpO1xuXG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH1fJHt0aW1lc3RhbXB9XyR7c2FuaXRpemVkTmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGltZXN0YW1wfV8ke3Nhbml0aXplZE5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmEgdW5hIHJ1dGEgw7puaWNhIHBhcmEgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdG9yeSAtIERpcmVjdG9yaW8gYmFzZVxuICAgKiBAcGFyYW0gb3JpZ2luYWxOYW1lIC0gTm9tYnJlIG9yaWdpbmFsXG4gICAqIEBwYXJhbSBwcmVmaXggLSBQcmVmaWpvIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJ1dGEgY29tcGxldGEgw7puaWNhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcGF0aCA9IHN0b3JhZ2UuZ2VuZXJhdGVQYXRoKCd1cGxvYWRzJywgJ3Bob3RvLmpwZycsICd1c2VyMTIzJyk7XG4gICAqIC8vID0+ICd1cGxvYWRzL3VzZXIxMjNfMTcwMzA5MTIzNDU2N19waG90by5qcGcnXG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuZXJhdGVQYXRoKGRpcmVjdG9yeTogc3RyaW5nLCBvcmlnaW5hbE5hbWU6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZ2VuZXJhdGVGaWxlTmFtZShvcmlnaW5hbE5hbWUsIHByZWZpeCk7XG4gICAgY29uc3QgY2xlYW5EaXIgPSBkaXJlY3RvcnkucmVwbGFjZSgvXFwvKyQvLCAnJyk7IC8vIFJlbW92ZXIgLyBmaW5hbFxuICAgIHJldHVybiBgJHtjbGVhbkRpcn0vJHtmaWxlTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgZXh0ZW5zacOzbiBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZW5hbWUgLSBOb21icmUgZGVsIGFyY2hpdm9cbiAgICogQHJldHVybnMgRXh0ZW5zacOzbiAoc2luIGVsIHB1bnRvKVxuICAgKi9cbiAgZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gZmlsZW5hbWUuc3BsaXQoJy4nKTtcbiAgICByZXR1cm4gcGFydHMubGVuZ3RoID4gMSA/IHBhcnRzLnBvcCgpIS50b0xvd2VyQ2FzZSgpIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gYXJjaGl2byBlcyB1bmEgaW1hZ2VuIGJhc8OhbmRvc2UgZW4gc3UgZXh0ZW5zacOzbi5cbiAgICovXG4gIGlzSW1hZ2UoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dCA9IHRoaXMuZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lKTtcbiAgICByZXR1cm4gWydqcGcnLCAnanBlZycsICdwbmcnLCAnZ2lmJywgJ3dlYnAnLCAnc3ZnJywgJ2JtcCddLmluY2x1ZGVzKGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gYXJjaGl2byBlcyB1biBkb2N1bWVudG8uXG4gICAqL1xuICBpc0RvY3VtZW50KGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEV4dGVuc2lvbihmaWxlbmFtZSk7XG4gICAgcmV0dXJuIFsncGRmJywgJ2RvYycsICdkb2N4JywgJ3hscycsICd4bHN4JywgJ3BwdCcsICdwcHR4JywgJ3R4dCddLmluY2x1ZGVzKGV4dCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVNFUiBBVkFUQVIgSEVMUEVSU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ29uc3RydXllIGxhIFVSTCBkZSBhdmF0YXIgZGUgdW4gdXN1YXJpby5cbiAgICpcbiAgICogTG9zIGF2YXRhcmVzIHNlIGFsbWFjZW5hbiBlbiBwYXRocyBwcmVkZWNpYmxlczogYHVzZXJzL3t1c2VySWR9L2F2YXRhci5qcGdgXG4gICAqIEVzdG8gcGVybWl0ZSBxdWUgY3VhbHF1aWVyIGFwcCBwdWVkYSBtb3N0cmFyIGF2YXRhcmVzIHNpbiBwZWRpciBsYSBVUkwgYWwgYmFja2VuZCxcbiAgICogc29sbyBuZWNlc2l0YSBlbCB1c2VySWQuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VySWQgLSBJRCBkZWwgdXN1YXJpbyAoVUxJRClcbiAgICogQHBhcmFtIHR5cGUgLSAnYXZhdGFyJyBwYXJhIGltYWdlbiBjb21wbGV0YSwgJ3RodW1iJyBwYXJhIHRodW1ibmFpbFxuICAgKiBAcmV0dXJucyBVUkwgZGlyZWN0YSBkZSBGaXJlYmFzZSBTdG9yYWdlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gTW9zdHJhciBhdmF0YXIgZGUgY3VhbHF1aWVyIHVzdWFyaW9cbiAgICogY29uc3QgYXZhdGFyVXJsID0gc3RvcmFnZS5nZXRVc2VyQXZhdGFyVXJsKCcwMUFCQ0QuLi4nKTtcbiAgICogY29uc3QgdGh1bWJVcmwgPSBzdG9yYWdlLmdldFVzZXJBdmF0YXJVcmwoJzAxQUJDRC4uLicsICd0aHVtYicpO1xuICAgKlxuICAgKiAvLyBDb24gY2FjaGUtYnVzdGluZ1xuICAgKiBjb25zdCBmcmVzaFVybCA9IHN0b3JhZ2UuZ2V0VXNlckF2YXRhclVybCh1c2VySWQpICsgYCZ0PSR7RGF0ZS5ub3coKX1gO1xuICAgKiBgYGBcbiAgICovXG4gIGdldFVzZXJBdmF0YXJVcmwodXNlcklkOiBzdHJpbmcsIHR5cGU6ICdhdmF0YXInIHwgJ3RodW1iJyA9ICdhdmF0YXInKTogc3RyaW5nIHtcbiAgICBjb25zdCBidWNrZXQgPSB0aGlzLmNvbmZpZz8uZmlyZWJhc2U/LnN0b3JhZ2VCdWNrZXQgfHwgJ215dmFsdGVjaC1kZXYuZmlyZWJhc2VzdG9yYWdlLmFwcCc7XG4gICAgY29uc3QgcGF0aCA9IGB1c2Vycy8ke3VzZXJJZH0vJHt0eXBlfS5qcGdgO1xuICAgIHJldHVybiBgaHR0cHM6Ly9maXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vdjAvYi8ke2J1Y2tldH0vby8ke2VuY29kZVVSSUNvbXBvbmVudChwYXRoKX0/YWx0PW1lZGlhYDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQUklWQURPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTWFwZWEgZWwgZXN0YWRvIGRlIGxhIHRhcmVhIGRlIHVwbG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBUYXNrU3RhdGUoc3RhdGU6IHN0cmluZyk6IFVwbG9hZFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlICdydW5uaW5nJzpcbiAgICAgICAgcmV0dXJuICdydW5uaW5nJztcbiAgICAgIGNhc2UgJ3BhdXNlZCc6XG4gICAgICAgIHJldHVybiAncGF1c2VkJztcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgY2FzZSAnY2FuY2VsZWQnOlxuICAgICAgICByZXR1cm4gJ2NhbmNlbGVkJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3J1bm5pbmcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252aWVydGUgZXJyb3JlcyBkZSBTdG9yYWdlIGEgbWVuc2FqZXMgZW4gZXNwYcOxb2xcbiAgICovXG4gIHByaXZhdGUgZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgY29kZSA9IChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZTtcblxuICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2Uvb2JqZWN0LW5vdC1mb3VuZCc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIG5vIGV4aXN0ZSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvdW5hdXRob3JpemVkJzpcbiAgICAgICAgICByZXR1cm4gJ05vIHRpZW5lcyBwZXJtaXNvIHBhcmEgYWNjZWRlciBhIGVzdGUgYXJjaGl2byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvY2FuY2VsZWQnOlxuICAgICAgICAgIHJldHVybiAnTGEgb3BlcmFjacOzbiBmdWUgY2FuY2VsYWRhJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9xdW90YS1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdTZSBoYSBleGNlZGlkbyBsYSBjdW90YSBkZSBhbG1hY2VuYW1pZW50byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1jaGVja3N1bSc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIGVzdMOhIGNvcnJ1cHRvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9yZXRyeS1saW1pdC1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdFcnJvciBkZSBjb25leGnDs24uIEludGVudGEgZGUgbnVldm8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtdXJsJzpcbiAgICAgICAgICByZXR1cm4gJ1VSTCBkZSBhcmNoaXZvIGludsOhbGlkYSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1hcmd1bWVudCc6XG4gICAgICAgICAgcmV0dXJuICdBcmd1bWVudG8gaW52w6FsaWRvJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXJyb3IubWVzc2FnZSB8fCAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICB9XG59XG4iXX0=
|
|
@@ -15,4 +15,4 @@ export const DEFAULT_EMULATOR_CONFIG = {
|
|
|
15
15
|
storage: { host: 'localhost', port: 9199 },
|
|
16
16
|
auth: { host: 'localhost', port: 9099 },
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBMkNIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQW1CO0lBQ3JELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUM1QyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDMUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0NBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZpcmViYXNlIFR5cGVzXG4gKlxuICogVGlwb3MgZSBpbnRlcmZhY2VzIHBhcmEgbGEgaW50ZWdyYWNpw7NuIGRlIEZpcmViYXNlIGVuIHZhbHRlY2gtY29tcG9uZW50cy5cbiAqIFRvZG9zIGxvcyBtb2RlbG9zIGRlIEZpcmVzdG9yZSBkZWJlbiBleHRlbmRlciBGaXJlc3RvcmVEb2N1bWVudC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFuYWx5dGljc0NvbmZpZyB9IGZyb20gJy4vYW5hbHl0aWNzLXR5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09ORklHVVJBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZSBGaXJlYmFzZSAodmFsb3JlcyBkZSBmaXJlYmFzZUNvbmZpZylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZUNvbmZpZyB7XG4gIGFwaUtleTogc3RyaW5nO1xuICBhdXRoRG9tYWluOiBzdHJpbmc7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBzdG9yYWdlQnVja2V0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1NlbmRlcklkOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG4gIG1lYXN1cmVtZW50SWQ/OiBzdHJpbmc7XG4gIC8qKiBIYWJpbGl0YXIgRmlyZWJhc2UgQ2xvdWQgTWVzc2FnaW5nIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgZW5hYmxlTWVzc2FnaW5nPzogYm9vbGVhbjtcbiAgLyoqIFZBUElEIGtleSBwYXJhIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAqL1xuICBtZXNzYWdpbmdWYXBpZEtleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZSBlbXVsYWRvcmVzIHBhcmEgZGVzYXJyb2xsbyBsb2NhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtdWxhdG9yQ29uZmlnIHtcbiAgZmlyZXN0b3JlPzoge1xuICAgIGhvc3Q6IHN0cmluZztcbiAgICBwb3J0OiBudW1iZXI7XG4gIH07XG4gIGF1dGg/OiB7XG4gICAgaG9zdDogc3RyaW5nO1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgfTtcbiAgc3RvcmFnZT86IHtcbiAgICBob3N0OiBzdHJpbmc7XG4gICAgcG9ydDogbnVtYmVyO1xuICB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBvciBkZWZlY3RvIGRlIGVtdWxhZG9yZXMuXG4gKiBQdWVydG9zIGVzdMOhbmRhciB1c2Fkb3MgZW4gdG9kb3MgbG9zIHByb3llY3RvcyBmcm9udGVuZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZmlyZWJhc2UuZ29vZ2xlLmNvbS9kb2NzL2VtdWxhdG9yLXN1aXRlXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VNVUxBVE9SX0NPTkZJRzogRW11bGF0b3JDb25maWcgPSB7XG4gIGZpcmVzdG9yZTogeyBob3N0OiAnbG9jYWxob3N0JywgcG9ydDogOTA4MCB9LFxuICBzdG9yYWdlOiB7IGhvc3Q6ICdsb2NhbGhvc3QnLCBwb3J0OiA5MTk5IH0sXG4gIGF1dGg6IHsgaG9zdDogJ2xvY2FsaG9zdCcsIHBvcnQ6IDkwOTkgfSxcbn07XG5cbi8qKlxuICogSWRlbnRpZmljYWRvciBkZSBhcGxpY2FjacOzbiBwYXJhIG5hbWVzcGFjaW5nIGF1dG9tw6F0aWNvIGVuIEZpcmVzdG9yZSB5IFN0b3JhZ2UuXG4gKiBQZXJtaXRlIGFpc2xhciBkYXRvcyBkZSBkaWZlcmVudGVzIGFwcHMgZGVudHJvIGRlbCBtaXNtbyBwcm95ZWN0byBGaXJlYmFzZS5cbiAqXG4gKiBDYWRhIGFwcCBjb25zdW1pZG9yYSBkZWZpbmUgc3VzIHByb3Bpb3MgdmFsb3JlcyBkZSBBcHBJZCBlbiBzdSBjb25maWd1cmFjacOzbiBsb2NhbC5cbiAqL1xuZXhwb3J0IHR5cGUgQXBwSWQgPSBzdHJpbmc7XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gY29tcGxldGEgZGUgVmFsdGVjaCBGaXJlYmFzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHRlY2hGaXJlYmFzZUNvbmZpZyB7XG4gIC8qKiBDb25maWd1cmFjacOzbiBkZSBGaXJlYmFzZSAqL1xuICBmaXJlYmFzZTogRmlyZWJhc2VDb25maWc7XG4gIC8qKiBDb25maWd1cmFjacOzbiBkZSBlbXVsYWRvcmVzIChvcGNpb25hbCwgcGFyYSBkZXNhcnJvbGxvKSAqL1xuICBlbXVsYXRvcj86IEVtdWxhdG9yQ29uZmlnO1xuICAvKiogSGFiaWxpdGFyIHBlcnNpc3RlbmNpYSBvZmZsaW5lIGRlIEZpcmVzdG9yZSAoZGVmYXVsdDogZmFsc2UpICovXG4gIHBlcnNpc3RlbmNlPzogYm9vbGVhbjtcbiAgLyoqIEhhYmlsaXRhciBGaXJlYmFzZSBDbG91ZCBNZXNzYWdpbmcgKGRlZmF1bHQ6IGZhbHNlKSAtIHJlcXVpZXJlIFNlcnZpY2UgV29ya2VyICovXG4gIGVuYWJsZU1lc3NhZ2luZz86IGJvb2xlYW47XG4gIC8qKiBWQVBJRCBrZXkgcGFyYSBGaXJlYmFzZSBDbG91ZCBNZXNzYWdpbmcgKi9cbiAgbWVzc2FnaW5nVmFwaWRLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJRCBkZSBsYSBhcGxpY2FjacOzbiBwYXJhIG5hbWVzcGFjaW5nIGF1dG9tw6F0aWNvLlxuICAgKiBTaSBzZSBwcm9wb3JjaW9uYTpcbiAgICogLSBGaXJlc3RvcmU6IHByZWZpamEgY29sZWNjaW9uZXMgY29uIGBhcHBzL3thcHBJZH0vYFxuICAgKiAtIFN0b3JhZ2U6IHByZWZpamEgcGF0aHMgY29uIGB7YXBwSWR9L2BcbiAgICogU2kgbm8gc2UgcHJvcG9yY2lvbmEsIGxvcyBwYXRocyBxdWVkYW4gc2luIG1vZGlmaWNhciAoYmFja3dhcmQgY29tcGF0aWJsZSkuXG4gICAqL1xuICBhcHBJZD86IEFwcElkO1xuICAvKipcbiAgICogUGVyc2lzdGUgbWVuc2FqZXMgRkNNIGVuIGxvY2FsU3RvcmFnZSBwYXJhIGRlYnVnZ2luZy5cbiAgICogU29sbyBwYXJhIGRlc2Fycm9sbG8sIHBlcm1pdGUgdmVyIG1lbnNhamVzIGVuIERldlRvb2xzLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgZGVidWdNZXNzYWdlUGVyc2lzdGVuY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIYWJpbGl0YXIgRmlyZWJhc2UgQW5hbHl0aWNzIC8gR0E0IChkZWZhdWx0OiBmYWxzZSkuXG4gICAqIFJlcXVpZXJlIG1lYXN1cmVtZW50SWQgZW4gZmlyZWJhc2UgY29uZmlnLlxuICAgKi9cbiAgZW5hYmxlQW5hbHl0aWNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJhY2nDs24gZGV0YWxsYWRhIGRlIEFuYWx5dGljcy5cbiAgICogU29sbyBhcGxpY2Egc2kgZW5hYmxlQW5hbHl0aWNzIGVzIHRydWUuXG4gICAqL1xuICBhbmFseXRpY3NDb25maWc/OiBBbmFseXRpY3NDb25maWc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJUkVTVE9SRSAtIERPQ1VNRU5UT1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbnRlcmZhY2UgYmFzZSBwYXJhIHRvZG9zIGxvcyBkb2N1bWVudG9zIGRlIEZpcmVzdG9yZS5cbiAqIFRvZG9zIGxvcyBtb2RlbG9zIGRlYmVuIGV4dGVuZGVyIGVzdGEgaW50ZXJmYWNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbnRlcmZhY2UgVXNlciBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBlbWFpbDogc3RyaW5nO1xuICogfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdG9yZURvY3VtZW50IHtcbiAgLyoqIElEIGRlbCBkb2N1bWVudG8gKGFzaWduYWRvIHBvciBGaXJlc3RvcmUpICovXG4gIGlkPzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgY3JlYWNpw7NuIChtYW5lamFkYSBhdXRvbcOhdGljYW1lbnRlKSAqL1xuICBjcmVhdGVkQXQ/OiBEYXRlO1xuICAvKiogRmVjaGEgZGUgw7psdGltYSBhY3R1YWxpemFjacOzbiAobWFuZWphZGEgYXV0b23DoXRpY2FtZW50ZSkgKi9cbiAgdXBkYXRlZEF0PzogRGF0ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRklSRVNUT1JFIC0gUVVFUklFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE9wZXJhZG9yZXMgZGlzcG9uaWJsZXMgcGFyYSBjbMOhdXN1bGFzIHdoZXJlXG4gKi9cbmV4cG9ydCB0eXBlIFdoZXJlT3BlcmF0b3IgPVxuICB8ICc9PSdcbiAgfCAnIT0nXG4gIHwgJzwnXG4gIHwgJzw9J1xuICB8ICc+J1xuICB8ICc+PSdcbiAgfCAnYXJyYXktY29udGFpbnMnXG4gIHwgJ2FycmF5LWNvbnRhaW5zLWFueSdcbiAgfCAnaW4nXG4gIHwgJ25vdC1pbic7XG5cbi8qKlxuICogQ2zDoXVzdWxhIHdoZXJlIHBhcmEgZmlsdHJhciBkb2N1bWVudG9zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2hlcmVDbGF1c2Uge1xuICAvKiogQ2FtcG8gYSBmaWx0cmFyICovXG4gIGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBPcGVyYWRvciBkZSBjb21wYXJhY2nDs24gKi9cbiAgb3BlcmF0b3I6IFdoZXJlT3BlcmF0b3I7XG4gIC8qKiBWYWxvciBhIGNvbXBhcmFyICovXG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG4vKipcbiAqIERpcmVjY2nDs24gZGUgb3JkZW5hbWllbnRvXG4gKi9cbmV4cG9ydCB0eXBlIE9yZGVyRGlyZWN0aW9uID0gJ2FzYycgfCAnZGVzYyc7XG5cbi8qKlxuICogQ2zDoXVzdWxhIG9yZGVyQnkgcGFyYSBvcmRlbmFyIHJlc3VsdGFkb3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmRlckJ5Q2xhdXNlIHtcbiAgLyoqIENhbXBvIHBvciBlbCBjdWFsIG9yZGVuYXIgKi9cbiAgZmllbGQ6IHN0cmluZztcbiAgLyoqIERpcmVjY2nDs24gZGVsIG9yZGVuYW1pZW50byAqL1xuICBkaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIE9wY2lvbmVzIHBhcmEgcXVlcmllcyBkZSBGaXJlc3RvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9wdGlvbnMge1xuICAvKiogRmlsdHJvcyB3aGVyZSAoQU5EIGVudHJlIHRvZG9zKSAqL1xuICB3aGVyZT86IFdoZXJlQ2xhdXNlW107XG4gIC8qKiBPcmRlbmFtaWVudG8gZGUgcmVzdWx0YWRvcyAqL1xuICBvcmRlckJ5PzogT3JkZXJCeUNsYXVzZVtdO1xuICAvKiogTMOtbWl0ZSBkZSBkb2N1bWVudG9zIGEgcmV0b3JuYXIgKi9cbiAgbGltaXQ/OiBudW1iZXI7XG4gIC8qKiBDdXJzb3IgcGFyYSBwYWdpbmFjacOzbjogZW1wZXphciBkZXNwdcOpcyBkZSBlc3RlIGRvY3VtZW50byAqL1xuICBzdGFydEFmdGVyPzogdW5rbm93bjtcbiAgLyoqIEN1cnNvciBwYXJhIHBhZ2luYWNpw7NuOiBlbXBlemFyIGVuIGVzdGUgZG9jdW1lbnRvICovXG4gIHN0YXJ0QXQ/OiB1bmtub3duO1xuICAvKiogQ3Vyc29yIHBhcmEgcGFnaW5hY2nDs246IHRlcm1pbmFyIGFudGVzIGRlIGVzdGUgZG9jdW1lbnRvICovXG4gIGVuZEJlZm9yZT86IHVua25vd247XG4gIC8qKiBDdXJzb3IgcGFyYSBwYWdpbmFjacOzbjogdGVybWluYXIgZW4gZXN0ZSBkb2N1bWVudG8gKi9cbiAgZW5kQXQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIE9wY2lvbmVzIGFkaWNpb25hbGVzIHBhcmEgc3Vic2NyaXBjaW9uZXMgcmVhbC10aW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uT3B0aW9ucyBleHRlbmRzIFF1ZXJ5T3B0aW9ucyB7XG4gIC8qKiBJbmNsdWlyIGNhbWJpb3MgZGUgbWV0YWRhdGEgKGVqOiBwZW5kaW5nV3JpdGVzKSAqL1xuICBpbmNsdWRlTWV0YWRhdGFDaGFuZ2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgdW5hIHF1ZXJ5IHBhZ2luYWRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVkUmVzdWx0PFQ+IHtcbiAgLyoqIERvY3VtZW50b3MgZGUgbGEgcMOhZ2luYSBhY3R1YWwgKi9cbiAgZGF0YTogVFtdO1xuICAvKiogSW5kaWNhIHNpIGhheSBtw6FzIHDDoWdpbmFzIGRpc3BvbmlibGVzICovXG4gIGhhc01vcmU6IGJvb2xlYW47XG4gIC8qKiBDdXJzb3IgcGFyYSBsYSBzaWd1aWVudGUgcMOhZ2luYSAocGFzYXIgYSBzdGFydEFmdGVyKSAqL1xuICBsYXN0RG9jOiB1bmtub3duO1xuICAvKiogVG90YWwgZGUgZG9jdW1lbnRvcyAob3BjaW9uYWwsIHJlcXVpZXJlIHF1ZXJ5IGFkaWNpb25hbCkgKi9cbiAgdG90YWw/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUT1JBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gZGUgdW5hIG9wZXJhY2nDs24gZGUgdXBsb2FkXG4gKi9cbmV4cG9ydCB0eXBlIFVwbG9hZFN0YXRlID0gJ3J1bm5pbmcnIHwgJ3BhdXNlZCcgfCAnc3VjY2VzcycgfCAnY2FuY2VsZWQnIHwgJ2Vycm9yJztcblxuLyoqXG4gKiBQcm9ncmVzbyBkZSB1cGxvYWQgZGUgYXJjaGl2b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFByb2dyZXNzIHtcbiAgLyoqIEJ5dGVzIHRyYW5zZmVyaWRvcyBoYXN0YSBhaG9yYSAqL1xuICBieXRlc1RyYW5zZmVycmVkOiBudW1iZXI7XG4gIC8qKiBUb3RhbCBkZSBieXRlcyBhIHRyYW5zZmVyaXIgKi9cbiAgdG90YWxCeXRlczogbnVtYmVyO1xuICAvKiogUG9yY2VudGFqZSBjb21wbGV0YWRvICgwLTEwMCkgKi9cbiAgcGVyY2VudGFnZTogbnVtYmVyO1xuICAvKiogRXN0YWRvIGFjdHVhbCBkZWwgdXBsb2FkICovXG4gIHN0YXRlOiBVcGxvYWRTdGF0ZTtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgdW4gdXBsb2FkIGNvbXBsZXRhZG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRSZXN1bHQge1xuICAvKiogVVJMIGRlIGRlc2NhcmdhIGRlbCBhcmNoaXZvICovXG4gIGRvd25sb2FkVXJsOiBzdHJpbmc7XG4gIC8qKiBSdXRhIGNvbXBsZXRhIGVuIFN0b3JhZ2UgKi9cbiAgZnVsbFBhdGg6IHN0cmluZztcbiAgLyoqIE5vbWJyZSBkZWwgYXJjaGl2byAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUYW1hw7FvIGVuIGJ5dGVzICovXG4gIHNpemU6IG51bWJlcjtcbiAgLyoqIFRpcG8gTUlNRSBkZWwgYXJjaGl2byAqL1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgcGVyc29uYWxpemFkYSAqL1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBwYXJhIGFyY2hpdm9zIGVuIFN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTWV0YWRhdGEge1xuICAvKiogVGlwbyBNSU1FIGRlbCBhcmNoaXZvICovXG4gIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgcGVyc29uYWxpemFkYSAoa2V5LXZhbHVlKSAqL1xuICBjdXN0b21NZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBDb250cm9sIGRlIGNhY2jDqSBIVFRQICovXG4gIGNhY2hlQ29udHJvbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgbGlzdGFyIGFyY2hpdm9zIGVuIFN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTGlzdFJlc3VsdCB7XG4gIC8qKiBSdXRhcyBkZSBsb3MgYXJjaGl2b3MgZW5jb250cmFkb3MgKi9cbiAgaXRlbXM6IHN0cmluZ1tdO1xuICAvKiogVG9rZW4gcGFyYSBsYSBzaWd1aWVudGUgcMOhZ2luYSAoc2kgaGF5IG3DoXMpICovXG4gIG5leHRQYWdlVG9rZW4/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJCQUMgLSBQRVJNSVNPUyBZIE9SR0FOSVpBQ0lPTkVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGRlIG1lbWJlcnNoaXAgZW4gdW5hIG9yZ2FuaXphY2nDs24uXG4gKiBSZXByZXNlbnRhIGVsIHJvbCB5IHBlcm1pc29zIHF1ZSB0aWVuZSB1biB1c3VhcmlvIGVuIHVuYSBvcmcgZXNwZWPDrWZpY2EuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtYmVyc2hpcEluZm8ge1xuICAvKiogSUQgZGVsIHJvbCAoZWo6ICdhZG1pbicsICdlZGl0b3InLCAndmlld2VyJykgKi9cbiAgcm9sZUlkOiBzdHJpbmc7XG4gIC8qKiBOb21icmUgZGVsIHJvbCBwYXJhIGRpc3BsYXkgKi9cbiAgcm9sZU5hbWU6IHN0cmluZztcbiAgLyoqIExpc3RhIGRlIHBlcm1pc29zIGVuIGZvcm1hdG8gJ3Jlc291cmNlOmFjdGlvbicgKi9cbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVzdHJ1Y3R1cmEgY29tcGxldGEgZGUgY2xhaW1zIGNvbiBSQkFDLlxuICogRXN0b3MgY2xhaW1zIGVzdMOhbiBkaXNwb25pYmxlcyBlbiByZXF1ZXN0LmF1dGgudG9rZW4gZW4gRmlyZXN0b3JlIFJ1bGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJCQUNDbGFpbXMge1xuICAvKiogRW1haWwgZGVsIHVzdWFyaW8gKi9cbiAgZW1haWw6IHN0cmluZztcbiAgLyoqIE5vbWJyZSBjb21wbGV0byBkZWwgdXN1YXJpbyAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBTaSBlbCBlbWFpbCBlc3TDoSB2ZXJpZmljYWRvICovXG4gIHZlcmlmaWVkOiBib29sZWFuO1xuICAvKipcbiAgICogTWFwYSBkZSBvcmdhbml6YWNpb25lcyBkb25kZSBlbCB1c3VhcmlvIHRpZW5lIHJvbGVzLlxuICAgKiBLZXkgPSBvcmdJZCwgVmFsdWUgPSBpbmZvcm1hY2nDs24gZGVsIHJvbCB5IHBlcm1pc29zIGVuIGVzYSBvcmcuXG4gICAqL1xuICBtZW1iZXJzaGlwczogUmVjb3JkPHN0cmluZywgTWVtYmVyc2hpcEluZm8+O1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3R1YWxtZW50ZSBzZWxlY2Npb25hZGEgKi9cbiAgYWN0aXZlT3JnOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGRlIHVuYSBvcmdhbml6YWNpw7NuIHBhcmEgZGlzcGxheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXphdGlvbkluZm8ge1xuICAvKiogSUQgw7puaWNvIGRlIGxhIG9yZ2FuaXphY2nDs24gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFJvbCBkZWwgdXN1YXJpbyBlbiBlc3RhIG9yZ2FuaXphY2nDs24gKi9cbiAgcm9sZUlkOiBzdHJpbmc7XG4gIC8qKiBOb21icmUgZGVsIHJvbCBwYXJhIGRpc3BsYXkgKi9cbiAgcm9sZU5hbWU6IHN0cmluZztcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvIGVuIGVzdGEgb3JnYW5pemFjacOzbiAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFVVEggLyBTRVNTSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGRlbCB1c3VhcmlvIGRlIEZpcmViYXNlIChzaW1wbGlmaWNhZGEpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZWJhc2VVc2VyIHtcbiAgLyoqIFVJRCDDum5pY28gZGVsIHVzdWFyaW8gKi9cbiAgdWlkOiBzdHJpbmc7XG4gIC8qKiBFbWFpbCBkZWwgdXN1YXJpbyAqL1xuICBlbWFpbDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIE5vbWJyZSBwYXJhIG1vc3RyYXIgKi9cbiAgZGlzcGxheU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBVUkwgZGUgZm90byBkZSBwZXJmaWwgKi9cbiAgcGhvdG9VUkw6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBFbWFpbCB2ZXJpZmljYWRvICovXG4gIGVtYWlsVmVyaWZpZWQ6IGJvb2xlYW47XG4gIC8qKiBVc3VhcmlvIGFuw7NuaW1vICovXG4gIGlzQW5vbnltb3VzOiBib29sZWFuO1xuICAvKiogUHJvdmVlZG9yIGRlIGF1dGVudGljYWNpw7NuICovXG4gIHByb3ZpZGVySWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFc3RhZG8gZGUgbGEgc2VzacOzbiBkZSBGaXJlYmFzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb25TdGF0ZSB7XG4gIC8qKiBVc3VhcmlvIGFjdHVhbCAobnVsbCBzaSBubyBhdXRlbnRpY2FkbykgKi9cbiAgdXNlcjogRmlyZWJhc2VVc2VyIHwgbnVsbDtcbiAgLyoqIEluZGljYSBzaSBlbCB1c3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgLyoqIEluZGljYSBzaSBzZSBlc3TDoSBjYXJnYW5kbyBlbCBlc3RhZG8gZGUgYXV0aCAqL1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgbG8gaGF5KSAqL1xuICBlcnJvcjogRXJyb3IgfCBudWxsO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRVNTQUdJTkcgKEZDTSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gZGVsIHBlcm1pc28gZGUgbm90aWZpY2FjaW9uZXNcbiAqL1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUGVybWlzc2lvbiA9ICdncmFudGVkJyB8ICdkZW5pZWQnIHwgJ2RlZmF1bHQnO1xuXG4vKipcbiAqIFBheWxvYWQgZGUgdW5hIG5vdGlmaWNhY2nDs24gcHVzaFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvblBheWxvYWQge1xuICAvKiogVMOtdHVsbyBkZSBsYSBub3RpZmljYWNpw7NuICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogQ3VlcnBvIGRlbCBtZW5zYWplICovXG4gIGJvZHk/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZGUgaW1hZ2VuICovXG4gIGltYWdlPzogc3RyaW5nO1xuICAvKiogRGF0b3MgcGVyc29uYWxpemFkb3MgKi9cbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBJRCBkZWwgbWVuc2FqZSBkZSBGQ00gKi9cbiAgbWVzc2FnZUlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFjY2nDs24gZGUgbmF2ZWdhY2nDs24gZGVzZGUgdW5hIG5vdGlmaWNhY2nDs25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25BY3Rpb24ge1xuICAvKiogUnV0YSBpbnRlcm5hIGRlIGxhIGFwcCAoZWo6ICcvb3JkZXJzLzEyMycpICovXG4gIHJvdXRlPzogc3RyaW5nO1xuICAvKiogVVJMIGV4dGVybmEgKGVqOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScpICovXG4gIHVybD86IHN0cmluZztcbiAgLyoqIFBhcsOhbWV0cm9zIGRlIHF1ZXJ5IHN0cmluZyAqL1xuICBxdWVyeVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBUaXBvIGRlIGFjY2nDs24gcGVyc29uYWxpemFkYSAqL1xuICBhY3Rpb25UeXBlPzogc3RyaW5nO1xuICAvKiogRGF0b3MgYWRpY2lvbmFsZXMgcGFyYSBsYSBhY2Npw7NuICovXG4gIGFjdGlvbkRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBFdmVudG8gZGUgY2xpY2sgZW4gdW5hIG5vdGlmaWNhY2nDs25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25DbGlja0V2ZW50IHtcbiAgLyoqIFBheWxvYWQgb3JpZ2luYWwgZGUgbGEgbm90aWZpY2FjacOzbiAqL1xuICBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvblBheWxvYWQ7XG4gIC8qKiBBY2Npw7NuIGRlIG5hdmVnYWNpw7NuIGV4dHJhw61kYSAqL1xuICBhY3Rpb246IE5vdGlmaWNhdGlvbkFjdGlvbjtcbiAgLyoqIFRpbWVzdGFtcCBkZWwgY2xpY2sgKi9cbiAgdGltZXN0YW1wOiBEYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFUlJPUkVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ8OzZGlnb3MgZGUgZXJyb3IgZGUgRmlyZWJhc2VcbiAqL1xuZXhwb3J0IHR5cGUgRmlyZWJhc2VFcnJvckNvZGUgPVxuICB8ICdwZXJtaXNzaW9uLWRlbmllZCdcbiAgfCAnbm90LWZvdW5kJ1xuICB8ICdhbHJlYWR5LWV4aXN0cydcbiAgfCAncmVzb3VyY2UtZXhoYXVzdGVkJ1xuICB8ICdjYW5jZWxsZWQnXG4gIHwgJ3Vua25vd24nXG4gIHwgJ2ludmFsaWQtYXJndW1lbnQnXG4gIHwgJ2RlYWRsaW5lLWV4Y2VlZGVkJ1xuICB8ICd1bmF1dGhlbnRpY2F0ZWQnO1xuXG4vKipcbiAqIEVycm9yIGRlIEZpcmViYXNlIHRpcGFkb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmViYXNlRXJyb3Ige1xuICAvKiogQ8OzZGlnbyBkZWwgZXJyb3IgKi9cbiAgY29kZTogRmlyZWJhc2VFcnJvckNvZGU7XG4gIC8qKiBNZW5zYWplIGRlIGVycm9yIChlbiBlc3Bhw7FvbCkgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogRXJyb3Igb3JpZ2luYWwgZGUgRmlyZWJhc2UgKi9cbiAgb3JpZ2luYWxFcnJvcj86IHVua25vd247XG59XG4iXX0=
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBMkNIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQW1CO0lBQ3JELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUM1QyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDMUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0NBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZpcmViYXNlIFR5cGVzXG4gKlxuICogVGlwb3MgZSBpbnRlcmZhY2VzIHBhcmEgbGEgaW50ZWdyYWNpw7NuIGRlIEZpcmViYXNlIGVuIHZhbHRlY2gtY29tcG9uZW50cy5cbiAqIFRvZG9zIGxvcyBtb2RlbG9zIGRlIEZpcmVzdG9yZSBkZWJlbiBleHRlbmRlciBGaXJlc3RvcmVEb2N1bWVudC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFuYWx5dGljc0NvbmZpZyB9IGZyb20gJy4vYW5hbHl0aWNzLXR5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09ORklHVVJBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZSBGaXJlYmFzZSAodmFsb3JlcyBkZSBmaXJlYmFzZUNvbmZpZylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZUNvbmZpZyB7XG4gIGFwaUtleTogc3RyaW5nO1xuICBhdXRoRG9tYWluOiBzdHJpbmc7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBzdG9yYWdlQnVja2V0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1NlbmRlcklkOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG4gIG1lYXN1cmVtZW50SWQ/OiBzdHJpbmc7XG4gIC8qKiBIYWJpbGl0YXIgRmlyZWJhc2UgQ2xvdWQgTWVzc2FnaW5nIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgZW5hYmxlTWVzc2FnaW5nPzogYm9vbGVhbjtcbiAgLyoqIFZBUElEIGtleSBwYXJhIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAqL1xuICBtZXNzYWdpbmdWYXBpZEtleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZSBlbXVsYWRvcmVzIHBhcmEgZGVzYXJyb2xsbyBsb2NhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtdWxhdG9yQ29uZmlnIHtcbiAgZmlyZXN0b3JlPzoge1xuICAgIGhvc3Q6IHN0cmluZztcbiAgICBwb3J0OiBudW1iZXI7XG4gIH07XG4gIGF1dGg/OiB7XG4gICAgaG9zdDogc3RyaW5nO1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgfTtcbiAgc3RvcmFnZT86IHtcbiAgICBob3N0OiBzdHJpbmc7XG4gICAgcG9ydDogbnVtYmVyO1xuICB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBvciBkZWZlY3RvIGRlIGVtdWxhZG9yZXMuXG4gKiBQdWVydG9zIGVzdMOhbmRhciB1c2Fkb3MgZW4gdG9kb3MgbG9zIHByb3llY3RvcyBmcm9udGVuZC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZmlyZWJhc2UuZ29vZ2xlLmNvbS9kb2NzL2VtdWxhdG9yLXN1aXRlXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VNVUxBVE9SX0NPTkZJRzogRW11bGF0b3JDb25maWcgPSB7XG4gIGZpcmVzdG9yZTogeyBob3N0OiAnbG9jYWxob3N0JywgcG9ydDogOTA4MCB9LFxuICBzdG9yYWdlOiB7IGhvc3Q6ICdsb2NhbGhvc3QnLCBwb3J0OiA5MTk5IH0sXG4gIGF1dGg6IHsgaG9zdDogJ2xvY2FsaG9zdCcsIHBvcnQ6IDkwOTkgfSxcbn07XG5cbi8qKlxuICogSWRlbnRpZmljYWRvciBkZSBhcGxpY2FjacOzbiBwYXJhIG5hbWVzcGFjaW5nIGF1dG9tw6F0aWNvIGVuIEZpcmVzdG9yZSB5IFN0b3JhZ2UuXG4gKiBQZXJtaXRlIGFpc2xhciBkYXRvcyBkZSBkaWZlcmVudGVzIGFwcHMgZGVudHJvIGRlbCBtaXNtbyBwcm95ZWN0byBGaXJlYmFzZS5cbiAqXG4gKiBDYWRhIGFwcCBjb25zdW1pZG9yYSBkZWZpbmUgc3VzIHByb3Bpb3MgdmFsb3JlcyBkZSBBcHBJZCBlbiBzdSBjb25maWd1cmFjacOzbiBsb2NhbC5cbiAqL1xuZXhwb3J0IHR5cGUgQXBwSWQgPSBzdHJpbmc7XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gY29tcGxldGEgZGUgVmFsdGVjaCBGaXJlYmFzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHRlY2hGaXJlYmFzZUNvbmZpZyB7XG4gIC8qKiBDb25maWd1cmFjacOzbiBkZSBGaXJlYmFzZSAqL1xuICBmaXJlYmFzZTogRmlyZWJhc2VDb25maWc7XG4gIC8qKiBDb25maWd1cmFjacOzbiBkZSBlbXVsYWRvcmVzIChvcGNpb25hbCwgcGFyYSBkZXNhcnJvbGxvKSAqL1xuICBlbXVsYXRvcj86IEVtdWxhdG9yQ29uZmlnO1xuICAvKiogSGFiaWxpdGFyIHBlcnNpc3RlbmNpYSBvZmZsaW5lIGRlIEZpcmVzdG9yZSAoZGVmYXVsdDogZmFsc2UpICovXG4gIHBlcnNpc3RlbmNlPzogYm9vbGVhbjtcbiAgLyoqIEhhYmlsaXRhciBGaXJlYmFzZSBDbG91ZCBNZXNzYWdpbmcgKGRlZmF1bHQ6IGZhbHNlKSAtIHJlcXVpZXJlIFNlcnZpY2UgV29ya2VyICovXG4gIGVuYWJsZU1lc3NhZ2luZz86IGJvb2xlYW47XG4gIC8qKiBWQVBJRCBrZXkgcGFyYSBGaXJlYmFzZSBDbG91ZCBNZXNzYWdpbmcgKi9cbiAgbWVzc2FnaW5nVmFwaWRLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJRCBkZSBsYSBhcGxpY2FjacOzbiBwYXJhIG5hbWVzcGFjaW5nIGF1dG9tw6F0aWNvLlxuICAgKiBTaSBzZSBwcm9wb3JjaW9uYTpcbiAgICogLSBGaXJlc3RvcmU6IHByZWZpamEgY29sZWNjaW9uZXMgY29uIGBhcHBzL3thcHBJZH0vYFxuICAgKiAtIFN0b3JhZ2U6IHByZWZpamEgcGF0aHMgY29uIGB7YXBwSWR9L2BcbiAgICogU2kgbm8gc2UgcHJvcG9yY2lvbmEsIGxvcyBwYXRocyBxdWVkYW4gc2luIG1vZGlmaWNhciAoYmFja3dhcmQgY29tcGF0aWJsZSkuXG4gICAqL1xuICBhcHBJZD86IEFwcElkO1xuICAvKipcbiAgICogUGVyc2lzdGUgbWVuc2FqZXMgRkNNIGVuIGxvY2FsU3RvcmFnZSBwYXJhIGRlYnVnZ2luZy5cbiAgICogU29sbyBwYXJhIGRlc2Fycm9sbG8sIHBlcm1pdGUgdmVyIG1lbnNhamVzIGVuIERldlRvb2xzLlxuICAgKiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgZGVidWdNZXNzYWdlUGVyc2lzdGVuY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIYWJpbGl0YXIgRmlyZWJhc2UgQW5hbHl0aWNzIC8gR0E0IChkZWZhdWx0OiBmYWxzZSkuXG4gICAqIFJlcXVpZXJlIG1lYXN1cmVtZW50SWQgZW4gZmlyZWJhc2UgY29uZmlnLlxuICAgKi9cbiAgZW5hYmxlQW5hbHl0aWNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJhY2nDs24gZGV0YWxsYWRhIGRlIEFuYWx5dGljcy5cbiAgICogU29sbyBhcGxpY2Egc2kgZW5hYmxlQW5hbHl0aWNzIGVzIHRydWUuXG4gICAqL1xuICBhbmFseXRpY3NDb25maWc/OiBBbmFseXRpY3NDb25maWc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJUkVTVE9SRSAtIERPQ1VNRU5UT1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbnRlcmZhY2UgYmFzZSBwYXJhIHRvZG9zIGxvcyBkb2N1bWVudG9zIGRlIEZpcmVzdG9yZS5cbiAqIFRvZG9zIGxvcyBtb2RlbG9zIGRlYmVuIGV4dGVuZGVyIGVzdGEgaW50ZXJmYWNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbnRlcmZhY2UgVXNlciBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBlbWFpbDogc3RyaW5nO1xuICogfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdG9yZURvY3VtZW50IHtcbiAgLyoqIElEIGRlbCBkb2N1bWVudG8gKGFzaWduYWRvIHBvciBGaXJlc3RvcmUpICovXG4gIGlkPzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgY3JlYWNpw7NuIChtYW5lamFkYSBhdXRvbcOhdGljYW1lbnRlKSAqL1xuICBjcmVhdGVkQXQ/OiBEYXRlO1xuICAvKiogRmVjaGEgZGUgw7psdGltYSBhY3R1YWxpemFjacOzbiAobWFuZWphZGEgYXV0b23DoXRpY2FtZW50ZSkgKi9cbiAgdXBkYXRlZEF0PzogRGF0ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRklSRVNUT1JFIC0gUVVFUklFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE9wZXJhZG9yZXMgZGlzcG9uaWJsZXMgcGFyYSBjbMOhdXN1bGFzIHdoZXJlXG4gKi9cbmV4cG9ydCB0eXBlIFdoZXJlT3BlcmF0b3IgPVxuICB8ICc9PSdcbiAgfCAnIT0nXG4gIHwgJzwnXG4gIHwgJzw9J1xuICB8ICc+J1xuICB8ICc+PSdcbiAgfCAnYXJyYXktY29udGFpbnMnXG4gIHwgJ2FycmF5LWNvbnRhaW5zLWFueSdcbiAgfCAnaW4nXG4gIHwgJ25vdC1pbic7XG5cbi8qKlxuICogQ2zDoXVzdWxhIHdoZXJlIHBhcmEgZmlsdHJhciBkb2N1bWVudG9zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2hlcmVDbGF1c2Uge1xuICAvKiogQ2FtcG8gYSBmaWx0cmFyICovXG4gIGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBPcGVyYWRvciBkZSBjb21wYXJhY2nDs24gKi9cbiAgb3BlcmF0b3I6IFdoZXJlT3BlcmF0b3I7XG4gIC8qKiBWYWxvciBhIGNvbXBhcmFyICovXG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG4vKipcbiAqIERpcmVjY2nDs24gZGUgb3JkZW5hbWllbnRvXG4gKi9cbmV4cG9ydCB0eXBlIE9yZGVyRGlyZWN0aW9uID0gJ2FzYycgfCAnZGVzYyc7XG5cbi8qKlxuICogQ2zDoXVzdWxhIG9yZGVyQnkgcGFyYSBvcmRlbmFyIHJlc3VsdGFkb3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmRlckJ5Q2xhdXNlIHtcbiAgLyoqIENhbXBvIHBvciBlbCBjdWFsIG9yZGVuYXIgKi9cbiAgZmllbGQ6IHN0cmluZztcbiAgLyoqIERpcmVjY2nDs24gZGVsIG9yZGVuYW1pZW50byAqL1xuICBkaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIE9wY2lvbmVzIHBhcmEgcXVlcmllcyBkZSBGaXJlc3RvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9wdGlvbnMge1xuICAvKiogRmlsdHJvcyB3aGVyZSAoQU5EIGVudHJlIHRvZG9zKSAqL1xuICB3aGVyZT86IFdoZXJlQ2xhdXNlW107XG4gIC8qKiBPcmRlbmFtaWVudG8gZGUgcmVzdWx0YWRvcyAqL1xuICBvcmRlckJ5PzogT3JkZXJCeUNsYXVzZVtdO1xuICAvKiogTMOtbWl0ZSBkZSBkb2N1bWVudG9zIGEgcmV0b3JuYXIgKi9cbiAgbGltaXQ/OiBudW1iZXI7XG4gIC8qKiBDdXJzb3IgcGFyYSBwYWdpbmFjacOzbjogZW1wZXphciBkZXNwdcOpcyBkZSBlc3RlIGRvY3VtZW50byAqL1xuICBzdGFydEFmdGVyPzogdW5rbm93bjtcbiAgLyoqIEN1cnNvciBwYXJhIHBhZ2luYWNpw7NuOiBlbXBlemFyIGVuIGVzdGUgZG9jdW1lbnRvICovXG4gIHN0YXJ0QXQ/OiB1bmtub3duO1xuICAvKiogQ3Vyc29yIHBhcmEgcGFnaW5hY2nDs246IHRlcm1pbmFyIGFudGVzIGRlIGVzdGUgZG9jdW1lbnRvICovXG4gIGVuZEJlZm9yZT86IHVua25vd247XG4gIC8qKiBDdXJzb3IgcGFyYSBwYWdpbmFjacOzbjogdGVybWluYXIgZW4gZXN0ZSBkb2N1bWVudG8gKi9cbiAgZW5kQXQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIE9wY2lvbmVzIGFkaWNpb25hbGVzIHBhcmEgc3Vic2NyaXBjaW9uZXMgcmVhbC10aW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uT3B0aW9ucyBleHRlbmRzIFF1ZXJ5T3B0aW9ucyB7XG4gIC8qKiBJbmNsdWlyIGNhbWJpb3MgZGUgbWV0YWRhdGEgKGVqOiBwZW5kaW5nV3JpdGVzKSAqL1xuICBpbmNsdWRlTWV0YWRhdGFDaGFuZ2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgdW5hIHF1ZXJ5IHBhZ2luYWRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVkUmVzdWx0PFQ+IHtcbiAgLyoqIERvY3VtZW50b3MgZGUgbGEgcMOhZ2luYSBhY3R1YWwgKi9cbiAgZGF0YTogVFtdO1xuICAvKiogSW5kaWNhIHNpIGhheSBtw6FzIHDDoWdpbmFzIGRpc3BvbmlibGVzICovXG4gIGhhc01vcmU6IGJvb2xlYW47XG4gIC8qKiBDdXJzb3IgcGFyYSBsYSBzaWd1aWVudGUgcMOhZ2luYSAocGFzYXIgYSBzdGFydEFmdGVyKSAqL1xuICBsYXN0RG9jOiB1bmtub3duO1xuICAvKiogVG90YWwgZGUgZG9jdW1lbnRvcyAob3BjaW9uYWwsIHJlcXVpZXJlIHF1ZXJ5IGFkaWNpb25hbCkgKi9cbiAgdG90YWw/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUT1JBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gZGUgdW5hIG9wZXJhY2nDs24gZGUgdXBsb2FkXG4gKi9cbmV4cG9ydCB0eXBlIFVwbG9hZFN0YXRlID0gJ3J1bm5pbmcnIHwgJ3BhdXNlZCcgfCAnc3VjY2VzcycgfCAnY2FuY2VsZWQnIHwgJ2Vycm9yJztcblxuLyoqXG4gKiBQcm9ncmVzbyBkZSB1cGxvYWQgZGUgYXJjaGl2b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFByb2dyZXNzIHtcbiAgLyoqIEJ5dGVzIHRyYW5zZmVyaWRvcyBoYXN0YSBhaG9yYSAqL1xuICBieXRlc1RyYW5zZmVycmVkOiBudW1iZXI7XG4gIC8qKiBUb3RhbCBkZSBieXRlcyBhIHRyYW5zZmVyaXIgKi9cbiAgdG90YWxCeXRlczogbnVtYmVyO1xuICAvKiogUG9yY2VudGFqZSBjb21wbGV0YWRvICgwLTEwMCkgKi9cbiAgcGVyY2VudGFnZTogbnVtYmVyO1xuICAvKiogRXN0YWRvIGFjdHVhbCBkZWwgdXBsb2FkICovXG4gIHN0YXRlOiBVcGxvYWRTdGF0ZTtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgdW4gdXBsb2FkIGNvbXBsZXRhZG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRSZXN1bHQge1xuICAvKiogVVJMIGRlIGRlc2NhcmdhIGRlbCBhcmNoaXZvICovXG4gIGRvd25sb2FkVXJsOiBzdHJpbmc7XG4gIC8qKiBSdXRhIGNvbXBsZXRhIGVuIFN0b3JhZ2UgKi9cbiAgZnVsbFBhdGg6IHN0cmluZztcbiAgLyoqIE5vbWJyZSBkZWwgYXJjaGl2byAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUYW1hw7FvIGVuIGJ5dGVzICovXG4gIHNpemU6IG51bWJlcjtcbiAgLyoqIFRpcG8gTUlNRSBkZWwgYXJjaGl2byAqL1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgcGVyc29uYWxpemFkYSAqL1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBwYXJhIGFyY2hpdm9zIGVuIFN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTWV0YWRhdGEge1xuICAvKiogVGlwbyBNSU1FIGRlbCBhcmNoaXZvICovXG4gIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgcGVyc29uYWxpemFkYSAoa2V5LXZhbHVlKSAqL1xuICBjdXN0b21NZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBDb250cm9sIGRlIGNhY2jDqSBIVFRQICovXG4gIGNhY2hlQ29udHJvbD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNraXAgdGhlIGFwcElkIHByZWZpeCBmb3Igc2hhcmVkIHBhdGhzLlxuICAgKiBVc2UgdGhpcyBmb3IgY3Jvc3MtYXBwIHBhdGhzIGxpa2UgdXNlciBhdmF0YXJzOiBgdXNlcnMve3VzZXJJZH0vYXZhdGFyLmpwZ2BcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNraXBQcmVmaXg/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3VsdGFkbyBkZSBsaXN0YXIgYXJjaGl2b3MgZW4gU3RvcmFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VMaXN0UmVzdWx0IHtcbiAgLyoqIFJ1dGFzIGRlIGxvcyBhcmNoaXZvcyBlbmNvbnRyYWRvcyAqL1xuICBpdGVtczogc3RyaW5nW107XG4gIC8qKiBUb2tlbiBwYXJhIGxhIHNpZ3VpZW50ZSBww6FnaW5hIChzaSBoYXkgbcOhcykgKi9cbiAgbmV4dFBhZ2VUb2tlbj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkJBQyAtIFBFUk1JU09TIFkgT1JHQU5JWkFDSU9ORVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGUgbWVtYmVyc2hpcCBlbiB1bmEgb3JnYW5pemFjacOzbi5cbiAqIFJlcHJlc2VudGEgZWwgcm9sIHkgcGVybWlzb3MgcXVlIHRpZW5lIHVuIHVzdWFyaW8gZW4gdW5hIG9yZyBlc3BlY8OtZmljYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1iZXJzaGlwSW5mbyB7XG4gIC8qKiBJRCBkZWwgcm9sIChlajogJ2FkbWluJywgJ2VkaXRvcicsICd2aWV3ZXInKSAqL1xuICByb2xlSWQ6IHN0cmluZztcbiAgLyoqIE5vbWJyZSBkZWwgcm9sIHBhcmEgZGlzcGxheSAqL1xuICByb2xlTmFtZTogc3RyaW5nO1xuICAvKiogTGlzdGEgZGUgcGVybWlzb3MgZW4gZm9ybWF0byAncmVzb3VyY2U6YWN0aW9uJyAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG59XG5cbi8qKlxuICogRXN0cnVjdHVyYSBjb21wbGV0YSBkZSBjbGFpbXMgY29uIFJCQUMuXG4gKiBFc3RvcyBjbGFpbXMgZXN0w6FuIGRpc3BvbmlibGVzIGVuIHJlcXVlc3QuYXV0aC50b2tlbiBlbiBGaXJlc3RvcmUgUnVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUkJBQ0NsYWltcyB7XG4gIC8qKiBFbWFpbCBkZWwgdXN1YXJpbyAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiogTm9tYnJlIGNvbXBsZXRvIGRlbCB1c3VhcmlvICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFNpIGVsIGVtYWlsIGVzdMOhIHZlcmlmaWNhZG8gKi9cbiAgdmVyaWZpZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYXBhIGRlIG9yZ2FuaXphY2lvbmVzIGRvbmRlIGVsIHVzdWFyaW8gdGllbmUgcm9sZXMuXG4gICAqIEtleSA9IG9yZ0lkLCBWYWx1ZSA9IGluZm9ybWFjacOzbiBkZWwgcm9sIHkgcGVybWlzb3MgZW4gZXNhIG9yZy5cbiAgICovXG4gIG1lbWJlcnNoaXBzOiBSZWNvcmQ8c3RyaW5nLCBNZW1iZXJzaGlwSW5mbz47XG4gIC8qKiBJRCBkZSBsYSBvcmdhbml6YWNpw7NuIGFjdHVhbG1lbnRlIHNlbGVjY2lvbmFkYSAqL1xuICBhY3RpdmVPcmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGUgdW5hIG9yZ2FuaXphY2nDs24gcGFyYSBkaXNwbGF5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemF0aW9uSW5mbyB7XG4gIC8qKiBJRCDDum5pY28gZGUgbGEgb3JnYW5pemFjacOzbiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogUm9sIGRlbCB1c3VhcmlvIGVuIGVzdGEgb3JnYW5pemFjacOzbiAqL1xuICByb2xlSWQ6IHN0cmluZztcbiAgLyoqIE5vbWJyZSBkZWwgcm9sIHBhcmEgZGlzcGxheSAqL1xuICByb2xlTmFtZTogc3RyaW5nO1xuICAvKiogUGVybWlzb3MgZGVsIHVzdWFyaW8gZW4gZXN0YSBvcmdhbml6YWNpw7NuICovXG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUSCAvIFNFU1NJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gZGUgRmlyZWJhc2UgKHNpbXBsaWZpY2FkYSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZVVzZXIge1xuICAvKiogVUlEIMO6bmljbyBkZWwgdXN1YXJpbyAqL1xuICB1aWQ6IHN0cmluZztcbiAgLyoqIEVtYWlsIGRlbCB1c3VhcmlvICovXG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTm9tYnJlIHBhcmEgbW9zdHJhciAqL1xuICBkaXNwbGF5TmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFVSTCBkZSBmb3RvIGRlIHBlcmZpbCAqL1xuICBwaG90b1VSTDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIEVtYWlsIHZlcmlmaWNhZG8gKi9cbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgLyoqIFVzdWFyaW8gYW7Ds25pbW8gKi9cbiAgaXNBbm9ueW1vdXM6IGJvb2xlYW47XG4gIC8qKiBQcm92ZWVkb3IgZGUgYXV0ZW50aWNhY2nDs24gKi9cbiAgcHJvdmlkZXJJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzdGFkbyBkZSBsYSBzZXNpw7NuIGRlIEZpcmViYXNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblN0YXRlIHtcbiAgLyoqIFVzdWFyaW8gYWN0dWFsIChudWxsIHNpIG5vIGF1dGVudGljYWRvKSAqL1xuICB1c2VyOiBGaXJlYmFzZVVzZXIgfCBudWxsO1xuICAvKiogSW5kaWNhIHNpIGVsIHVzdWFyaW8gZXN0w6EgYXV0ZW50aWNhZG8gKi9cbiAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xuICAvKiogSW5kaWNhIHNpIHNlIGVzdMOhIGNhcmdhbmRvIGVsIGVzdGFkbyBkZSBhdXRoICovXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIGRlIGF1dGVudGljYWNpw7NuIChzaSBsbyBoYXkpICovXG4gIGVycm9yOiBFcnJvciB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1FU1NBR0lORyAoRkNNKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEVzdGFkbyBkZWwgcGVybWlzbyBkZSBub3RpZmljYWNpb25lc1xuICovXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QZXJtaXNzaW9uID0gJ2dyYW50ZWQnIHwgJ2RlbmllZCcgfCAnZGVmYXVsdCc7XG5cbi8qKlxuICogUGF5bG9hZCBkZSB1bmEgbm90aWZpY2FjacOzbiBwdXNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uUGF5bG9hZCB7XG4gIC8qKiBUw610dWxvIGRlIGxhIG5vdGlmaWNhY2nDs24gKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBDdWVycG8gZGVsIG1lbnNhamUgKi9cbiAgYm9keT86IHN0cmluZztcbiAgLyoqIFVSTCBkZSBpbWFnZW4gKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIC8qKiBEYXRvcyBwZXJzb25hbGl6YWRvcyAqL1xuICBkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIElEIGRlbCBtZW5zYWplIGRlIEZDTSAqL1xuICBtZXNzYWdlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWNjacOzbiBkZSBuYXZlZ2FjacOzbiBkZXNkZSB1bmEgbm90aWZpY2FjacOzblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkFjdGlvbiB7XG4gIC8qKiBSdXRhIGludGVybmEgZGUgbGEgYXBwIChlajogJy9vcmRlcnMvMTIzJykgKi9cbiAgcm91dGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZXh0ZXJuYSAoZWo6ICdodHRwczovL2V4YW1wbGUuY29tJykgKi9cbiAgdXJsPzogc3RyaW5nO1xuICAvKiogUGFyw6FtZXRyb3MgZGUgcXVlcnkgc3RyaW5nICovXG4gIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFRpcG8gZGUgYWNjacOzbiBwZXJzb25hbGl6YWRhICovXG4gIGFjdGlvblR5cGU/OiBzdHJpbmc7XG4gIC8qKiBEYXRvcyBhZGljaW9uYWxlcyBwYXJhIGxhIGFjY2nDs24gKi9cbiAgYWN0aW9uRGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIEV2ZW50byBkZSBjbGljayBlbiB1bmEgbm90aWZpY2FjacOzblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNsaWNrRXZlbnQge1xuICAvKiogUGF5bG9hZCBvcmlnaW5hbCBkZSBsYSBub3RpZmljYWNpw7NuICovXG4gIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uUGF5bG9hZDtcbiAgLyoqIEFjY2nDs24gZGUgbmF2ZWdhY2nDs24gZXh0cmHDrWRhICovXG4gIGFjdGlvbjogTm90aWZpY2F0aW9uQWN0aW9uO1xuICAvKiogVGltZXN0YW1wIGRlbCBjbGljayAqL1xuICB0aW1lc3RhbXA6IERhdGU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVSUk9SRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDw7NkaWdvcyBkZSBlcnJvciBkZSBGaXJlYmFzZVxuICovXG5leHBvcnQgdHlwZSBGaXJlYmFzZUVycm9yQ29kZSA9XG4gIHwgJ3Blcm1pc3Npb24tZGVuaWVkJ1xuICB8ICdub3QtZm91bmQnXG4gIHwgJ2FscmVhZHktZXhpc3RzJ1xuICB8ICdyZXNvdXJjZS1leGhhdXN0ZWQnXG4gIHwgJ2NhbmNlbGxlZCdcbiAgfCAndW5rbm93bidcbiAgfCAnaW52YWxpZC1hcmd1bWVudCdcbiAgfCAnZGVhZGxpbmUtZXhjZWVkZWQnXG4gIHwgJ3VuYXV0aGVudGljYXRlZCc7XG5cbi8qKlxuICogRXJyb3IgZGUgRmlyZWJhc2UgdGlwYWRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZWJhc2VFcnJvciB7XG4gIC8qKiBDw7NkaWdvIGRlbCBlcnJvciAqL1xuICBjb2RlOiBGaXJlYmFzZUVycm9yQ29kZTtcbiAgLyoqIE1lbnNhamUgZGUgZXJyb3IgKGVuIGVzcGHDsW9sKSAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBFcnJvciBvcmlnaW5hbCBkZSBGaXJlYmFzZSAqL1xuICBvcmlnaW5hbEVycm9yPzogdW5rbm93bjtcbn1cbiJdfQ==
|