valtech-components 2.0.325 → 2.0.328
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/atoms/button/button.component.mjs +18 -18
- package/esm2022/lib/components/atoms/display/display.component.mjs +13 -16
- package/esm2022/lib/components/atoms/text/text.component.mjs +19 -19
- package/esm2022/lib/components/atoms/title/title.component.mjs +7 -7
- package/esm2022/lib/components/atoms/title/types.mjs +6 -2
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +6 -6
- package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +6 -17
- package/esm2022/lib/components/organisms/form/form.component.mjs +1 -1
- package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +198 -2
- package/esm2022/lib/shared/utils/simple-content.mjs +119 -0
- package/esm2022/public-api.mjs +3 -4
- package/fesm2022/valtech-components.mjs +520 -837
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/button/button.component.d.ts +3 -3
- package/lib/components/atoms/display/display.component.d.ts +2 -3
- package/lib/components/atoms/text/text.component.d.ts +3 -3
- package/lib/components/atoms/title/title.component.d.ts +1 -2
- package/lib/components/atoms/title/types.d.ts +10 -4
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +3 -3
- package/lib/components/molecules/language-selector/language-selector.component.d.ts +1 -3
- package/lib/services/lang-provider/lang-provider.service.d.ts +108 -1
- package/lib/shared/utils/simple-content.d.ts +120 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -3
- package/esm2022/lib/services/content-loader.service.mjs +0 -185
- package/esm2022/lib/services/content.service.mjs +0 -327
- package/esm2022/lib/shared/utils/reactive-content.mjs +0 -117
- package/lib/services/content-loader.service.d.ts +0 -98
- package/lib/services/content.service.d.ts +0 -296
- package/lib/shared/utils/reactive-content.d.ts +0 -109
|
@@ -3,7 +3,7 @@ import { BehaviorSubject, distinctUntilChanged, map, shareReplay } from 'rxjs';
|
|
|
3
3
|
import { LANG } from '../../shared/constants/storage';
|
|
4
4
|
import { LocalStorageService } from '../local-storage.service';
|
|
5
5
|
import { ValtechConfigService } from '../types';
|
|
6
|
-
import { LANGUAGES } from './types';
|
|
6
|
+
import { LANGUAGES, TextContent } from './types';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
/**
|
|
9
9
|
* LangService - Reactive language and content management service.
|
|
@@ -312,6 +312,202 @@ export class LangService {
|
|
|
312
312
|
const targetContent = classContent.Content[lang] || {};
|
|
313
313
|
return Object.keys(referenceContent).filter(key => !targetContent[key] || typeof targetContent[key] !== 'string');
|
|
314
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Register or update content for a component dynamically.
|
|
317
|
+
* This allows registering content at runtime without APP_INITIALIZER.
|
|
318
|
+
*
|
|
319
|
+
* @param className - The component class name
|
|
320
|
+
* @param content - The multilingual content object
|
|
321
|
+
* @param merge - Whether to merge with existing content (default: true)
|
|
322
|
+
*
|
|
323
|
+
* @example
|
|
324
|
+
* ```typescript
|
|
325
|
+
* this.langService.registerContent('MyComponent', {
|
|
326
|
+
* [LANGUAGES.ES]: { title: 'Título', description: 'Descripción' },
|
|
327
|
+
* [LANGUAGES.EN]: { title: 'Title', description: 'Description' }
|
|
328
|
+
* });
|
|
329
|
+
* ```
|
|
330
|
+
*/
|
|
331
|
+
registerContent(className, content, merge = true) {
|
|
332
|
+
if (!className) {
|
|
333
|
+
console.error('LangService: className is required for registerContent');
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
if (!content || typeof content !== 'object') {
|
|
337
|
+
console.error('LangService: Invalid content provided for registerContent');
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
console.log(`LangService: Registering content for "${className}"`, {
|
|
341
|
+
merge,
|
|
342
|
+
languages: Object.keys(content),
|
|
343
|
+
});
|
|
344
|
+
// Initialize component content if it doesn't exist
|
|
345
|
+
if (!this.content[className]) {
|
|
346
|
+
this.content[className] = new TextContent({});
|
|
347
|
+
}
|
|
348
|
+
// Merge or replace content for each language
|
|
349
|
+
Object.entries(content).forEach(([lang, langContent]) => {
|
|
350
|
+
if (!langContent || typeof langContent !== 'object') {
|
|
351
|
+
console.warn(`LangService: Invalid content for language "${lang}" in "${className}"`);
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
if (!this.content[className].Content[lang]) {
|
|
355
|
+
this.content[className].Content[lang] = {};
|
|
356
|
+
}
|
|
357
|
+
if (merge) {
|
|
358
|
+
this.content[className].Content[lang] = {
|
|
359
|
+
...this.content[className].Content[lang],
|
|
360
|
+
...langContent,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
this.content[className].Content[lang] = { ...langContent };
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
// Update available languages
|
|
368
|
+
this.detectAvailableLanguages();
|
|
369
|
+
console.log(`LangService: Content registered successfully for "${className}"`);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Update multiple content registrations at once.
|
|
373
|
+
*
|
|
374
|
+
* @param contentMap - Map of className to content
|
|
375
|
+
* @param merge - Whether to merge with existing content (default: true)
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* ```typescript
|
|
379
|
+
* this.langService.registerMultipleContent({
|
|
380
|
+
* 'Component1': { [LANGUAGES.ES]: { key1: 'valor1' } },
|
|
381
|
+
* 'Component2': { [LANGUAGES.EN]: { key2: 'value2' } }
|
|
382
|
+
* });
|
|
383
|
+
* ```
|
|
384
|
+
*/
|
|
385
|
+
registerMultipleContent(contentMap, merge = true) {
|
|
386
|
+
if (!contentMap || typeof contentMap !== 'object') {
|
|
387
|
+
console.error('LangService: Invalid contentMap provided for registerMultipleContent');
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
console.log('LangService: Registering multiple content entries', {
|
|
391
|
+
classes: Object.keys(contentMap),
|
|
392
|
+
merge,
|
|
393
|
+
});
|
|
394
|
+
Object.entries(contentMap).forEach(([className, content]) => {
|
|
395
|
+
this.registerContent(className, content, merge);
|
|
396
|
+
});
|
|
397
|
+
console.log('LangService: Multiple content registration completed');
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Remove content for a specific component.
|
|
401
|
+
*
|
|
402
|
+
* @param className - The component class name to remove
|
|
403
|
+
*/
|
|
404
|
+
removeContent(className) {
|
|
405
|
+
if (!className) {
|
|
406
|
+
console.error('LangService: className is required for removeContent');
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
if (this.content[className]) {
|
|
410
|
+
delete this.content[className];
|
|
411
|
+
this.detectAvailableLanguages();
|
|
412
|
+
console.log(`LangService: Content removed for "${className}"`);
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
console.warn(`LangService: No content found for "${className}" to remove`);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Get a list of all registered component classes.
|
|
420
|
+
*
|
|
421
|
+
* @returns Array of registered class names
|
|
422
|
+
*/
|
|
423
|
+
getRegisteredClasses() {
|
|
424
|
+
return Object.keys(this.content);
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Get the complete content configuration (for debugging purposes).
|
|
428
|
+
* Returns a deep copy to prevent accidental mutations.
|
|
429
|
+
*
|
|
430
|
+
* @returns Complete content configuration
|
|
431
|
+
*/
|
|
432
|
+
getContentConfiguration() {
|
|
433
|
+
return JSON.parse(JSON.stringify(this.content));
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Clear all content and reset to initial state.
|
|
437
|
+
* Useful for testing or complete reinitialization.
|
|
438
|
+
*/
|
|
439
|
+
clearAllContent() {
|
|
440
|
+
console.log('LangService: Clearing all content');
|
|
441
|
+
this.content = {};
|
|
442
|
+
this.availableLanguages = [LANGUAGES.ES]; // Reset to default
|
|
443
|
+
this.warnedMissingLanguages.clear();
|
|
444
|
+
console.log('LangService: All content cleared');
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Get content with interpolation support.
|
|
448
|
+
* Retrieves content and replaces placeholders with provided values.
|
|
449
|
+
*
|
|
450
|
+
* @param className - The component class name
|
|
451
|
+
* @param key - The text key
|
|
452
|
+
* @param interpolationData - Object with values to interpolate
|
|
453
|
+
* @param fallback - Optional fallback text if key is not found
|
|
454
|
+
* @returns Text with interpolated values
|
|
455
|
+
*/
|
|
456
|
+
getTextWithInterpolation(className, key, interpolationData, fallback) {
|
|
457
|
+
const content = this.getText(className, key, fallback);
|
|
458
|
+
return this.interpolateString(content, interpolationData);
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Get reactive content with interpolation support.
|
|
462
|
+
* Returns an Observable that emits interpolated content when language changes.
|
|
463
|
+
*
|
|
464
|
+
* @param className - The component class name
|
|
465
|
+
* @param key - The text key
|
|
466
|
+
* @param interpolationData - Object with values to interpolate
|
|
467
|
+
* @param fallback - Optional fallback text if key is not found
|
|
468
|
+
* @returns Observable that emits interpolated text
|
|
469
|
+
*/
|
|
470
|
+
getContentWithInterpolation(className, key, interpolationData, fallback) {
|
|
471
|
+
return this.getContent(className, key, fallback).pipe(map(content => this.interpolateString(content, interpolationData)));
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Interpolate a string with provided values.
|
|
475
|
+
* Replaces placeholders like {{key}} or {key} with actual values.
|
|
476
|
+
*
|
|
477
|
+
* @param content - Content string with placeholders
|
|
478
|
+
* @param values - Values to interpolate
|
|
479
|
+
* @returns Interpolated string
|
|
480
|
+
*
|
|
481
|
+
* @example
|
|
482
|
+
* ```typescript
|
|
483
|
+
* interpolateString('Hello {{name}}!', { name: 'World' })
|
|
484
|
+
* // Returns: 'Hello World!'
|
|
485
|
+
* ```
|
|
486
|
+
*/
|
|
487
|
+
interpolateString(content, values) {
|
|
488
|
+
if (!values || !content) {
|
|
489
|
+
return content;
|
|
490
|
+
}
|
|
491
|
+
return content.replace(/\{\{?(\w+)\}?\}/g, (match, key) => {
|
|
492
|
+
const value = values[key];
|
|
493
|
+
return value !== undefined ? String(value) : match;
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Legacy function equivalent to the old fromContentWithInterpolation.
|
|
498
|
+
* Provides reactive content with interpolation support for backward compatibility.
|
|
499
|
+
*
|
|
500
|
+
* @param className - The component class name
|
|
501
|
+
* @param key - The text key
|
|
502
|
+
* @param interpolationData - Object with values to interpolate
|
|
503
|
+
* @param fallback - Optional fallback text if key is not found
|
|
504
|
+
* @returns Observable that emits interpolated text
|
|
505
|
+
*
|
|
506
|
+
* @deprecated Use getContentWithInterpolation instead
|
|
507
|
+
*/
|
|
508
|
+
fromContentWithInterpolation(className, key, interpolationData, fallback) {
|
|
509
|
+
return this.getContentWithInterpolation(className, key, interpolationData, fallback);
|
|
510
|
+
}
|
|
315
511
|
// Legacy getters/setters for backward compatibility
|
|
316
512
|
get Lang() {
|
|
317
513
|
return this.currentLang;
|
|
@@ -331,4 +527,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
331
527
|
type: Inject,
|
|
332
528
|
args: [ValtechConfigService]
|
|
333
529
|
}] }] });
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxTQUFTLEVBQTRCLE1BQU0sU0FBUyxDQUFDOztBQUU5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBUXRCLFlBQTBDLE1BQXFCO1FBTHZELHVCQUFrQixHQUFpQixFQUFFLENBQUM7UUFHdEMsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUdqRCxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFaEMsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFbkQsNkNBQTZD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QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBU2MsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExBTkcgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoQ29uZmlnLCBWYWx0ZWNoQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCB7IExBTkdVQUdFUywgTGFuZ09wdGlvbiwgTGFuZ3VhZ2VUZXh0IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogTGFuZ1NlcnZpY2UgLSBSZWFjdGl2ZSBsYW5ndWFnZSBhbmQgY29udGVudCBtYW5hZ2VtZW50IHNlcnZpY2UuXG4gKlxuICogVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHJlYWN0aXZlIGNvbnRlbnQgbWFuYWdlbWVudCB3aXRoIE9ic2VydmFibGUtYmFzZWQgbGFuZ3VhZ2Ugc3dpdGNoaW5nLlxuICogQ29tcG9uZW50cyBjYW4gc3Vic2NyaWJlIHRvIGNvbnRlbnQgY2hhbmdlcyBhbmQgYXV0b21hdGljYWxseSB1cGRhdGUgd2hlbiB0aGUgbGFuZ3VhZ2UgY2hhbmdlcy5cbiAqXG4gKiBUaGUgc2VydmljZSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgYXZhaWxhYmxlIGxhbmd1YWdlcyBmcm9tIHRoZSBjb250ZW50IGNvbmZpZ3VyYXRpb25cbiAqIGFuZCBwcm92aWRlcyBpbnRlbGxpZ2VudCBmYWxsYmFja3Mgd2l0aCBjb25zb2xlIHdhcm5pbmdzIGZvciBtaXNzaW5nIHRyYW5zbGF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlKSB7fVxuICpcbiAqIC8vIEdldCBjdXJyZW50IGxhbmd1YWdlXG4gKiBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMubGFuZ1NlcnZpY2UuY3VycmVudExhbmc7XG4gKlxuICogLy8gU3Vic2NyaWJlIHRvIGxhbmd1YWdlIGNoYW5nZXNcbiAqIHRoaXMubGFuZ1NlcnZpY2UuY3VycmVudExhbmckLnN1YnNjcmliZShsYW5nID0+IGNvbnNvbGUubG9nKCdMYW5ndWFnZSBjaGFuZ2VkOicsIGxhbmcpKTtcbiAqXG4gKiAvLyBHZXQgc3RhdGljIHRleHRcbiAqIGNvbnN0IHRleHQgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQoJ0NvbXBvbmVudE5hbWUnLCAndGV4dEtleScpO1xuICpcbiAqIC8vIEdldCByZWFjdGl2ZSB0ZXh0XG4gKiBjb25zdCB0ZXh0JCA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0Q29udGVudCgnQ29tcG9uZW50TmFtZScsICd0ZXh0S2V5Jyk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExhbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZW50OiBQcm92aWRlcjtcbiAgcHJpdmF0ZSBkZWZhdWx0TGFuZzogTGFuZ09wdGlvbjtcbiAgcHJpdmF0ZSBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmdPcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkTGFuZzogQmVoYXZpb3JTdWJqZWN0PExhbmdPcHRpb24+O1xuICBwcml2YXRlIGNvbmZpZzogVmFsdGVjaENvbmZpZztcbiAgcHJpdmF0ZSB3YXJuZWRNaXNzaW5nTGFuZ3VhZ2VzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChWYWx0ZWNoQ29uZmlnU2VydmljZSkgY29uZmlnOiBWYWx0ZWNoQ29uZmlnKSB7XG4gICAgY29uc29sZS5sb2coJ0xhbmdTZXJ2aWNlOiBJbmplY3RlZCBjb25maWc6JywgY29uZmlnKTtcbiAgICB0aGlzLmNvbnRlbnQgPSBjb25maWcuY29udGVudDtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIC8vIERldGVjdCBhdmFpbGFibGUgbGFuZ3VhZ2VzIGZyb20gY29udGVudFxuICAgIHRoaXMuZGV0ZWN0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XG5cbiAgICAvLyBTZXQgZGVmYXVsdCBsYW5ndWFnZSAocHJlZmVyIFNwYW5pc2gsIHRoZW4gRW5nbGlzaCwgdGhlbiBmaXJzdCBhdmFpbGFibGUpXG4gICAgdGhpcy5kZWZhdWx0TGFuZyA9IHRoaXMuZGV0ZXJtaW5lRGVmYXVsdExhbmd1YWdlKCk7XG5cbiAgICAvLyBJbml0aWFsaXplIHdpdGggc3RvcmVkIGxhbmd1YWdlIG9yIGRlZmF1bHRcbiAgICBjb25zdCBjdXJyZW50ID0gTG9jYWxTdG9yYWdlU2VydmljZS5nZXQ8TGFuZ09wdGlvbj4oTEFORyk7XG4gICAgY29uc3QgaW5pdGlhbExhbmcgPSB0aGlzLnZhbGlkYXRlTGFuZ3VhZ2UoY3VycmVudCkgfHwgdGhpcy5kZWZhdWx0TGFuZztcblxuICAgIHRoaXMuc2VsZWN0ZWRMYW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYW5nT3B0aW9uPihpbml0aWFsTGFuZyk7XG5cbiAgICBjb25zb2xlLmxvZygnTGFuZ1NlcnZpY2U6IEluaXRpYWxpemVkIHdpdGggbGFuZ3VhZ2VzOicsIHtcbiAgICAgIGF2YWlsYWJsZTogdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMsXG4gICAgICBkZWZhdWx0OiB0aGlzLmRlZmF1bHRMYW5nLFxuICAgICAgY3VycmVudDogaW5pdGlhbExhbmcsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0IGF2YWlsYWJsZSBsYW5ndWFnZXMgZnJvbSB0aGUgY29udGVudCBjb25maWd1cmF0aW9uLlxuICAgKiBTY2FucyBhbGwgY29tcG9uZW50IGNvbnRlbnQgdG8gZmluZCB3aGljaCBsYW5ndWFnZXMgYXJlIGFjdHVhbGx5IGNvbmZpZ3VyZWQuXG4gICAqL1xuICBwcml2YXRlIGRldGVjdEF2YWlsYWJsZUxhbmd1YWdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBsYW5ndWFnZVNldCA9IG5ldyBTZXQ8TGFuZ09wdGlvbj4oKTtcblxuICAgIE9iamVjdC52YWx1ZXModGhpcy5jb250ZW50KS5mb3JFYWNoKGNvbXBvbmVudENvbnRlbnQgPT4ge1xuICAgICAgaWYgKGNvbXBvbmVudENvbnRlbnQ/LkNvbnRlbnQpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY29tcG9uZW50Q29udGVudC5Db250ZW50KS5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgICAgIGxhbmd1YWdlU2V0LmFkZChsYW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyA9IEFycmF5LmZyb20obGFuZ3VhZ2VTZXQpLnNvcnQoKTtcblxuICAgIGlmICh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUud2FybignTGFuZ1NlcnZpY2U6IE5vIGxhbmd1YWdlcyBkZXRlY3RlZCBpbiBjb250ZW50IGNvbmZpZ3VyYXRpb24hJyk7XG4gICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyA9IFtMQU5HVUFHRVMuRVNdOyAvLyBGYWxsYmFja1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGJlc3QgZGVmYXVsdCBsYW5ndWFnZSBiYXNlZCBvbiBhdmFpbGFibGUgY29udGVudC5cbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lRGVmYXVsdExhbmd1YWdlKCk6IExhbmdPcHRpb24ge1xuICAgIC8vIFByZWZlcmVuY2Ugb3JkZXI6IFNwYW5pc2gsIEVuZ2xpc2gsIHRoZW4gZmlyc3QgYXZhaWxhYmxlXG4gICAgY29uc3QgcHJlZmVycmVkT3JkZXIgPSBbTEFOR1VBR0VTLkVTLCBMQU5HVUFHRVMuRU5dO1xuXG4gICAgZm9yIChjb25zdCBwcmVmZXJyZWQgb2YgcHJlZmVycmVkT3JkZXIpIHtcbiAgICAgIGlmICh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5pbmNsdWRlcyhwcmVmZXJyZWQpKSB7XG4gICAgICAgIHJldHVybiBwcmVmZXJyZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlmIGEgbGFuZ3VhZ2UgaXMgYXZhaWxhYmxlIGluIHRoZSBjb250ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUxhbmd1YWdlKGxhbmc6IExhbmdPcHRpb24gfCBudWxsKTogTGFuZ09wdGlvbiB8IG51bGwge1xuICAgIGlmICghbGFuZykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpID8gbGFuZyA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBiZXN0IGF2YWlsYWJsZSBsYW5ndWFnZSBmb3IgYSBjb21wb25lbnQgYW5kIGtleS5cbiAgICogUHJvdmlkZXMgaW50ZWxsaWdlbnQgZmFsbGJhY2sgd2l0aCB3YXJuaW5ncy5cbiAgICovXG4gIHByaXZhdGUgZ2V0QmVzdEF2YWlsYWJsZUNvbnRlbnQoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcmVxdWVzdGVkTGFuZzogTGFuZ09wdGlvblxuICApOiB7XG4gICAgY29udGVudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGFjdHVhbExhbmc6IExhbmdPcHRpb247XG4gICAgc2hvdWxkV2FybjogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgY29tcG9uZW50Q29udGVudCA9IHRoaXMuY29udGVudFtjbGFzc05hbWVdO1xuXG4gICAgaWYgKCFjb21wb25lbnRDb250ZW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiB1bmRlZmluZWQsXG4gICAgICAgIGFjdHVhbExhbmc6IHJlcXVlc3RlZExhbmcsXG4gICAgICAgIHNob3VsZFdhcm46IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUcnkgcmVxdWVzdGVkIGxhbmd1YWdlIGZpcnN0XG4gICAgY29uc3QgcmVxdWVzdGVkQ29udGVudCA9IGNvbXBvbmVudENvbnRlbnQuQ29udGVudFtyZXF1ZXN0ZWRMYW5nXTtcbiAgICBpZiAocmVxdWVzdGVkQ29udGVudD8uW2tleV0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IHJlcXVlc3RlZENvbnRlbnRba2V5XSxcbiAgICAgICAgYWN0dWFsTGFuZzogcmVxdWVzdGVkTGFuZyxcbiAgICAgICAgc2hvdWxkV2FybjogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIExhbmd1YWdlIG5vdCBhdmFpbGFibGUsIHRyeSBmYWxsYmFja3NcbiAgICBjb25zdCB3YXJuaW5nS2V5ID0gYCR7Y2xhc3NOYW1lfS4ke2tleX0uJHtyZXF1ZXN0ZWRMYW5nfWA7XG4gICAgY29uc3Qgc2hvdWxkV2FybiA9ICF0aGlzLndhcm5lZE1pc3NpbmdMYW5ndWFnZXMuaGFzKHdhcm5pbmdLZXkpO1xuXG4gICAgaWYgKHNob3VsZFdhcm4pIHtcbiAgICAgIHRoaXMud2FybmVkTWlzc2luZ0xhbmd1YWdlcy5hZGQod2FybmluZ0tleSk7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGRlZmF1bHQgbGFuZ3VhZ2VcbiAgICBpZiAocmVxdWVzdGVkTGFuZyAhPT0gdGhpcy5kZWZhdWx0TGFuZykge1xuICAgICAgY29uc3QgZGVmYXVsdENvbnRlbnQgPSBjb21wb25lbnRDb250ZW50LkNvbnRlbnRbdGhpcy5kZWZhdWx0TGFuZ107XG4gICAgICBpZiAoZGVmYXVsdENvbnRlbnQ/LltrZXldKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogZGVmYXVsdENvbnRlbnRba2V5XSxcbiAgICAgICAgICBhY3R1YWxMYW5nOiB0aGlzLmRlZmF1bHRMYW5nLFxuICAgICAgICAgIHNob3VsZFdhcm4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJ5IGZpcnN0IGF2YWlsYWJsZSBsYW5ndWFnZVxuICAgIGZvciAoY29uc3QgYXZhaWxhYmxlTGFuZyBvZiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcykge1xuICAgICAgY29uc3QgYXZhaWxhYmxlQ29udGVudCA9IGNvbXBvbmVudENvbnRlbnQuQ29udGVudFthdmFpbGFibGVMYW5nXTtcbiAgICAgIGlmIChhdmFpbGFibGVDb250ZW50Py5ba2V5XSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IGF2YWlsYWJsZUNvbnRlbnRba2V5XSxcbiAgICAgICAgICBhY3R1YWxMYW5nOiBhdmFpbGFibGVMYW5nLFxuICAgICAgICAgIHNob3VsZFdhcm4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICAgIGFjdHVhbExhbmc6IHJlcXVlc3RlZExhbmcsXG4gICAgICBzaG91bGRXYXJuLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBjdXJyZW50IGxhbmd1YWdlIHdoZW5ldmVyIGl0IGNoYW5nZXMuXG4gICAqIFVzZSB0aGlzIHRvIHN1YnNjcmliZSB0byBsYW5ndWFnZSBjaGFuZ2VzIGluIGNvbXBvbmVudHMuXG4gICAqL1xuICBnZXQgY3VycmVudExhbmckKCk6IE9ic2VydmFibGU8TGFuZ09wdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTGFuZy5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpIC8vIEVuc3VyZSBuZXcgc3Vic2NyaWJlcnMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2Ugc3luY2hyb25vdXNseS5cbiAgICovXG4gIGdldCBjdXJyZW50TGFuZygpOiBMYW5nT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExhbmcudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFycmF5IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMgZGV0ZWN0ZWQgZnJvbSBjb250ZW50LlxuICAgKi9cbiAgZ2V0IGF2YWlsYWJsZUxhbmdzKCk6IExhbmdPcHRpb25bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmF2YWlsYWJsZUxhbmd1YWdlc107XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGxhbmd1YWdlLlxuICAgKi9cbiAgZ2V0IGRlZmF1bHRMYW5ndWFnZSgpOiBMYW5nT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0TGFuZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgYW5kIHBlcnNpc3QgaXQgdG8gbG9jYWxTdG9yYWdlLlxuICAgKiBUaGlzIHdpbGwgdHJpZ2dlciB1cGRhdGVzIGluIGFsbCByZWFjdGl2ZSBjb250ZW50IHN1YnNjcmlwdGlvbnMuXG4gICAqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBsYW5ndWFnZSBpcyBhdmFpbGFibGUgYW5kIHdhcm5zIGlmIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIGxhbmcgLSBUaGUgbGFuZ3VhZ2UgdG8gc2V0XG4gICAqL1xuICBzZXRMYW5nKGxhbmc6IExhbmdPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBMYW5nU2VydmljZTogTGFuZ3VhZ2UgXCIke2xhbmd9XCIgaXMgbm90IGF2YWlsYWJsZS4gQXZhaWxhYmxlIGxhbmd1YWdlczpgLFxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlc1xuICAgICAgKTtcbiAgICAgIGNvbnNvbGUud2FybihgTGFuZ1NlcnZpY2U6IEZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGxhbmd1YWdlIFwiJHt0aGlzLmRlZmF1bHRMYW5nfVwiYCk7XG4gICAgICBsYW5nID0gdGhpcy5kZWZhdWx0TGFuZztcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkTGFuZy5uZXh0KGxhbmcpO1xuICAgIExvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0PExhbmdPcHRpb24+KExBTkcsIGxhbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb250ZW50IGZvciBhIGNvbXBvbmVudCBjbGFzcyBhbmQga2V5IChsZWdhY3kgbWV0aG9kKS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldFRleHQoKSBvciBnZXRDb250ZW50KCkgZm9yIGJldHRlciB0eXBlIHNhZmV0eVxuICAgKi9cbiAgVGV4dChjbGFzc05hbWU6IHN0cmluZyk6IExhbmd1YWdlVGV4dCB7XG4gICAgY29uc3QgY29tcG9uZW50Q29udGVudCA9IHRoaXMuY29udGVudFtjbGFzc05hbWVdO1xuICAgIHJldHVybiBjb21wb25lbnRDb250ZW50Py5Db250ZW50W3RoaXMuc2VsZWN0ZWRMYW5nLnZhbHVlXSB8fCB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaW5nbGUgY29udGVudCBzdHJpbmcgc3luY2hyb25vdXNseSBmb3IgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gICAqIFByb3ZpZGVzIGludGVsbGlnZW50IGZhbGxiYWNrIHdpdGggd2FybmluZ3MgZm9yIG1pc3NpbmcgdHJhbnNsYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIGNvbXBvbmVudCBjbGFzcyBuYW1lXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgdGV4dCBrZXlcbiAgICogQHBhcmFtIGZhbGxiYWNrIC0gT3B0aW9uYWwgZmFsbGJhY2sgdGV4dCBpZiBrZXkgaXMgbm90IGZvdW5kXG4gICAqIEByZXR1cm5zIFRoZSB0ZXh0IHN0cmluZyBvciBmYWxsYmFja1xuICAgKi9cbiAgZ2V0VGV4dChjbGFzc05hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldEJlc3RBdmFpbGFibGVDb250ZW50KGNsYXNzTmFtZSwga2V5LCB0aGlzLnNlbGVjdGVkTGFuZy52YWx1ZSk7XG5cbiAgICBpZiAocmVzdWx0LnNob3VsZFdhcm4gJiYgcmVzdWx0LmFjdHVhbExhbmcgIT09IHRoaXMuc2VsZWN0ZWRMYW5nLnZhbHVlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBMYW5nU2VydmljZTogQ29udGVudCBcIiR7Y2xhc3NOYW1lfS4ke2tleX1cIiBub3QgYXZhaWxhYmxlIGluIFwiJHt0aGlzLnNlbGVjdGVkTGFuZy52YWx1ZX1cIi5gLFxuICAgICAgICBgVXNpbmcgXCIke3Jlc3VsdC5hY3R1YWxMYW5nfVwiIGluc3RlYWQuIEF2YWlsYWJsZSBsYW5ndWFnZXM6YCxcbiAgICAgICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5jb250ZW50IHx8IGZhbGxiYWNrIHx8IGBbJHtjbGFzc05hbWV9LiR7a2V5fV1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHJlYWN0aXZlIE9ic2VydmFibGUgZm9yIGEgc3BlY2lmaWMgdGV4dCBrZXkgdGhhdCB1cGRhdGVzIHdoZW4gbGFuZ3VhZ2UgY2hhbmdlcy5cbiAgICogVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBjb21wb25lbnRzIHRoYXQgbmVlZCByZWFjdGl2ZSBjb250ZW50LlxuICAgKiBQcm92aWRlcyBpbnRlbGxpZ2VudCBmYWxsYmFjayB3aXRoIHdhcm5pbmdzIGZvciBtaXNzaW5nIHRyYW5zbGF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRleHQga2V5XG4gICAqIEBwYXJhbSBmYWxsYmFjayAtIE9wdGlvbmFsIGZhbGxiYWNrIHRleHQgaWYga2V5IGlzIG5vdCBmb3VuZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHRleHQgc3RyaW5nIHdoZW5ldmVyIGxhbmd1YWdlIGNoYW5nZXNcbiAgICovXG4gIGdldENvbnRlbnQoY2xhc3NOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmckLnBpcGUoXG4gICAgICBtYXAobGFuZyA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0QmVzdEF2YWlsYWJsZUNvbnRlbnQoY2xhc3NOYW1lLCBrZXksIGxhbmcpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc2hvdWxkV2FybiAmJiByZXN1bHQuYWN0dWFsTGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBMYW5nU2VydmljZTogQ29udGVudCBcIiR7Y2xhc3NOYW1lfS4ke2tleX1cIiBub3QgYXZhaWxhYmxlIGluIFwiJHtsYW5nfVwiLmAsXG4gICAgICAgICAgICBgVXNpbmcgXCIke3Jlc3VsdC5hY3R1YWxMYW5nfVwiIGluc3RlYWQuIEF2YWlsYWJsZSBsYW5ndWFnZXM6YCxcbiAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQuY29udGVudCB8fCBmYWxsYmFjayB8fCBgWyR7Y2xhc3NOYW1lfS4ke2tleX1dYDtcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJlYWN0aXZlIGNvbnRlbnQgZm9yIG11bHRpcGxlIGtleXMgYXQgb25jZS5cbiAgICogUHJvdmlkZXMgaW50ZWxsaWdlbnQgZmFsbGJhY2sgd2l0aCB3YXJuaW5ncyBmb3IgbWlzc2luZyB0cmFuc2xhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWVcbiAgICogQHBhcmFtIGtleXMgLSBBcnJheSBvZiB0ZXh0IGtleXMgdG8gcmV0cmlldmVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIG9iamVjdCB3aXRoIGFsbCByZXF1ZXN0ZWQga2V5c1xuICAgKi9cbiAgZ2V0TXVsdGlwbGVDb250ZW50KGNsYXNzTmFtZTogc3RyaW5nLCBrZXlzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRMYW5nJC5waXBlKFxuICAgICAgbWFwKGxhbmcgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50UmVzdWx0ID0gdGhpcy5nZXRCZXN0QXZhaWxhYmxlQ29udGVudChjbGFzc05hbWUsIGtleSwgbGFuZyk7XG5cbiAgICAgICAgICBpZiAoY29udGVudFJlc3VsdC5zaG91bGRXYXJuICYmIGNvbnRlbnRSZXN1bHQuYWN0dWFsTGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICBgTGFuZ1NlcnZpY2U6IENvbnRlbnQgXCIke2NsYXNzTmFtZX0uJHtrZXl9XCIgbm90IGF2YWlsYWJsZSBpbiBcIiR7bGFuZ31cIi5gLFxuICAgICAgICAgICAgICBgVXNpbmcgXCIke2NvbnRlbnRSZXN1bHQuYWN0dWFsTGFuZ31cIiBpbnN0ZWFkLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBjb250ZW50UmVzdWx0LmNvbnRlbnQgfHwgYFske2NsYXNzTmFtZX0uJHtrZXl9XWA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2KSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VycikpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNvbnRlbnQga2V5IGV4aXN0cyBmb3IgYSBjb21wb25lbnQgaW4gYW55IGF2YWlsYWJsZSBsYW5ndWFnZS5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRleHQga2V5XG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGtleSBleGlzdHMgaW4gYW55IGxhbmd1YWdlXG4gICAqL1xuICBoYXNDb250ZW50KGNsYXNzTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsYXNzQ29udGVudCA9IHRoaXMuY29udGVudFtjbGFzc05hbWVdO1xuICAgIGlmICghY2xhc3NDb250ZW50KSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhjbGFzc0NvbnRlbnQuQ29udGVudCkuc29tZShcbiAgICAgIGxhbmdDb250ZW50ID0+IGxhbmdDb250ZW50ICYmIHR5cGVvZiBsYW5nQ29udGVudFtrZXldID09PSAnc3RyaW5nJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBjb250ZW50IGtleSBleGlzdHMgZm9yIGEgY29tcG9uZW50IGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWVcbiAgICogQHBhcmFtIGtleSAtIFRoZSB0ZXh0IGtleVxuICAgKiBAcGFyYW0gbGFuZyAtIFRoZSBsYW5ndWFnZSB0byBjaGVjayAoZGVmYXVsdHMgdG8gY3VycmVudCBsYW5ndWFnZSlcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUga2V5IGV4aXN0cyBpbiB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlXG4gICAqL1xuICBoYXNDb250ZW50SW5MYW5ndWFnZShjbGFzc05hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGxhbmc/OiBMYW5nT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFyZ2V0TGFuZyA9IGxhbmcgfHwgdGhpcy5jdXJyZW50TGFuZztcbiAgICBjb25zdCBjbGFzc0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXT8uQ29udGVudFt0YXJnZXRMYW5nXTtcbiAgICByZXR1cm4gY2xhc3NDb250ZW50ICYmIHR5cGVvZiBjbGFzc0NvbnRlbnRba2V5XSA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGF2YWlsYWJsZSBsYW5ndWFnZXMgZm9yIGEgc3BlY2lmaWMgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIGNvbXBvbmVudCBjbGFzcyBuYW1lXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGxhbmd1YWdlIGNvZGVzIGF2YWlsYWJsZSBmb3IgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzRm9yQ29tcG9uZW50KGNsYXNzTmFtZTogc3RyaW5nKTogTGFuZ09wdGlvbltdIHtcbiAgICBjb25zdCBjbGFzc0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXTtcbiAgICBpZiAoIWNsYXNzQ29udGVudCkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNsYXNzQ29udGVudC5Db250ZW50KS5maWx0ZXIoXG4gICAgICBsYW5nID0+IGNsYXNzQ29udGVudC5Db250ZW50W2xhbmddICYmIE9iamVjdC5rZXlzKGNsYXNzQ29udGVudC5Db250ZW50W2xhbmddKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbWlzc2luZyBjb250ZW50IGtleXMgZm9yIGEgY29tcG9uZW50IGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UuXG4gICAqIFVzZWZ1bCBmb3IgaWRlbnRpZnlpbmcgaW5jb21wbGV0ZSB0cmFuc2xhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWVcbiAgICogQHBhcmFtIGxhbmcgLSBUaGUgbGFuZ3VhZ2UgdG8gY2hlY2tcbiAgICogQHBhcmFtIHJlZmVyZW5jZUxhbmcgLSBUaGUgcmVmZXJlbmNlIGxhbmd1YWdlIHRvIGNvbXBhcmUgYWdhaW5zdCAoZGVmYXVsdHMgdG8gZGVmYXVsdCBsYW5ndWFnZSlcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbWlzc2luZyBrZXlzXG4gICAqL1xuICBnZXRNaXNzaW5nQ29udGVudEtleXMoY2xhc3NOYW1lOiBzdHJpbmcsIGxhbmc6IExhbmdPcHRpb24sIHJlZmVyZW5jZUxhbmc/OiBMYW5nT3B0aW9uKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlZkxhbmcgPSByZWZlcmVuY2VMYW5nIHx8IHRoaXMuZGVmYXVsdExhbmc7XG4gICAgY29uc3QgY2xhc3NDb250ZW50ID0gdGhpcy5jb250ZW50W2NsYXNzTmFtZV07XG5cbiAgICBpZiAoIWNsYXNzQ29udGVudCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgcmVmZXJlbmNlQ29udGVudCA9IGNsYXNzQ29udGVudC5Db250ZW50W3JlZkxhbmddIHx8IHt9O1xuICAgIGNvbnN0IHRhcmdldENvbnRlbnQgPSBjbGFzc0NvbnRlbnQuQ29udGVudFtsYW5nXSB8fCB7fTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyZWZlcmVuY2VDb250ZW50KS5maWx0ZXIoXG4gICAgICBrZXkgPT4gIXRhcmdldENvbnRlbnRba2V5XSB8fCB0eXBlb2YgdGFyZ2V0Q29udGVudFtrZXldICE9PSAnc3RyaW5nJ1xuICAgICk7XG4gIH1cblxuICAvLyBMZWdhY3kgZ2V0dGVycy9zZXR0ZXJzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIGdldCBMYW5nKCk6IExhbmdPcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRMYW5nO1xuICB9XG5cbiAgc2V0IExhbmcobGFuZzogTGFuZ09wdGlvbikge1xuICAgIHRoaXMuc2V0TGFuZyhsYW5nKTtcbiAgfVxufVxuIl19
|
|
530
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZy1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxTQUFTLEVBQThDLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFN0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFJSCxNQUFNLE9BQU8sV0FBVztJQVF0QixZQUEwQyxNQUFxQjtRQUx2RCx1QkFBa0IsR0FBaUIsRUFBRSxDQUFDO1FBR3RDLDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFHakQsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsMENBQTBDO1FBQzFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FB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QyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFnQjtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7K0dBbm1CVSxXQUFXLGtCQVFGLG9CQUFvQjttSEFSN0IsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTYyxNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTEFORyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMvc3RvcmFnZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hDb25maWcsIFZhbHRlY2hDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICcuL2NvbnRlbnQnO1xuaW1wb3J0IHsgTEFOR1VBR0VTLCBMYW5nT3B0aW9uLCBMYW5ndWFnZVRleHQsIExhbmd1YWdlc0NvbnRlbnQsIFRleHRDb250ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogTGFuZ1NlcnZpY2UgLSBSZWFjdGl2ZSBsYW5ndWFnZSBhbmQgY29udGVudCBtYW5hZ2VtZW50IHNlcnZpY2UuXG4gKlxuICogVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHJlYWN0aXZlIGNvbnRlbnQgbWFuYWdlbWVudCB3aXRoIE9ic2VydmFibGUtYmFzZWQgbGFuZ3VhZ2Ugc3dpdGNoaW5nLlxuICogQ29tcG9uZW50cyBjYW4gc3Vic2NyaWJlIHRvIGNvbnRlbnQgY2hhbmdlcyBhbmQgYXV0b21hdGljYWxseSB1cGRhdGUgd2hlbiB0aGUgbGFuZ3VhZ2UgY2hhbmdlcy5cbiAqXG4gKiBUaGUgc2VydmljZSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgYXZhaWxhYmxlIGxhbmd1YWdlcyBmcm9tIHRoZSBjb250ZW50IGNvbmZpZ3VyYXRpb25cbiAqIGFuZCBwcm92aWRlcyBpbnRlbGxpZ2VudCBmYWxsYmFja3Mgd2l0aCBjb25zb2xlIHdhcm5pbmdzIGZvciBtaXNzaW5nIHRyYW5zbGF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlKSB7fVxuICpcbiAqIC8vIEdldCBjdXJyZW50IGxhbmd1YWdlXG4gKiBjb25zdCBjdXJyZW50TGFuZyA9IHRoaXMubGFuZ1NlcnZpY2UuY3VycmVudExhbmc7XG4gKlxuICogLy8gU3Vic2NyaWJlIHRvIGxhbmd1YWdlIGNoYW5nZXNcbiAqIHRoaXMubGFuZ1NlcnZpY2UuY3VycmVudExhbmckLnN1YnNjcmliZShsYW5nID0+IGNvbnNvbGUubG9nKCdMYW5ndWFnZSBjaGFuZ2VkOicsIGxhbmcpKTtcbiAqXG4gKiAvLyBHZXQgc3RhdGljIHRleHRcbiAqIGNvbnN0IHRleHQgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQoJ0NvbXBvbmVudE5hbWUnLCAndGV4dEtleScpO1xuICpcbiAqIC8vIEdldCByZWFjdGl2ZSB0ZXh0XG4gKiBjb25zdCB0ZXh0JCA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0Q29udGVudCgnQ29tcG9uZW50TmFtZScsICd0ZXh0S2V5Jyk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExhbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZW50OiBQcm92aWRlcjtcbiAgcHJpdmF0ZSBkZWZhdWx0TGFuZzogTGFuZ09wdGlvbjtcbiAgcHJpdmF0ZSBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmdPcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkTGFuZzogQmVoYXZpb3JTdWJqZWN0PExhbmdPcHRpb24+O1xuICBwcml2YXRlIGNvbmZpZzogVmFsdGVjaENvbmZpZztcbiAgcHJpdmF0ZSB3YXJuZWRNaXNzaW5nTGFuZ3VhZ2VzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChWYWx0ZWNoQ29uZmlnU2VydmljZSkgY29uZmlnOiBWYWx0ZWNoQ29uZmlnKSB7XG4gICAgY29uc29sZS5sb2coJ0xhbmdTZXJ2aWNlOiBJbmplY3RlZCBjb25maWc6JywgY29uZmlnKTtcbiAgICB0aGlzLmNvbnRlbnQgPSBjb25maWcuY29udGVudDtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIC8vIERldGVjdCBhdmFpbGFibGUgbGFuZ3VhZ2VzIGZyb20gY29udGVudFxuICAgIHRoaXMuZGV0ZWN0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XG5cbiAgICAvLyBTZXQgZGVmYXVsdCBsYW5ndWFnZSAocHJlZmVyIFNwYW5pc2gsIHRoZW4gRW5nbGlzaCwgdGhlbiBmaXJzdCBhdmFpbGFibGUpXG4gICAgdGhpcy5kZWZhdWx0TGFuZyA9IHRoaXMuZGV0ZXJtaW5lRGVmYXVsdExhbmd1YWdlKCk7XG5cbiAgICAvLyBJbml0aWFsaXplIHdpdGggc3RvcmVkIGxhbmd1YWdlIG9yIGRlZmF1bHRcbiAgICBjb25zdCBjdXJyZW50ID0gTG9jYWxTdG9yYWdlU2VydmljZS5nZXQ8TGFuZ09wdGlvbj4oTEFORyk7XG4gICAgY29uc3QgaW5pdGlhbExhbmcgPSB0aGlzLnZhbGlkYXRlTGFuZ3VhZ2UoY3VycmVudCkgfHwgdGhpcy5kZWZhdWx0TGFuZztcblxuICAgIHRoaXMuc2VsZWN0ZWRMYW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYW5nT3B0aW9uPihpbml0aWFsTGFuZyk7XG5cbiAgICBjb25zb2xlLmxvZygnTGFuZ1NlcnZpY2U6IEluaXRpYWxpemVkIHdpdGggbGFuZ3VhZ2VzOicsIHtcbiAgICAgIGF2YWlsYWJsZTogdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMsXG4gICAgICBkZWZhdWx0OiB0aGlzLmRlZmF1bHRMYW5nLFxuICAgICAgY3VycmVudDogaW5pdGlhbExhbmcsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0IGF2YWlsYWJsZSBsYW5ndWFnZXMgZnJvbSB0aGUgY29udGVudCBjb25maWd1cmF0aW9uLlxuICAgKiBTY2FucyBhbGwgY29tcG9uZW50IGNvbnRlbnQgdG8gZmluZCB3aGljaCBsYW5ndWFnZXMgYXJlIGFjdHVhbGx5IGNvbmZpZ3VyZWQuXG4gICAqL1xuICBwcml2YXRlIGRldGVjdEF2YWlsYWJsZUxhbmd1YWdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBsYW5ndWFnZVNldCA9IG5ldyBTZXQ8TGFuZ09wdGlvbj4oKTtcblxuICAgIE9iamVjdC52YWx1ZXModGhpcy5jb250ZW50KS5mb3JFYWNoKGNvbXBvbmVudENvbnRlbnQgPT4ge1xuICAgICAgaWYgKGNvbXBvbmVudENvbnRlbnQ/LkNvbnRlbnQpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoY29tcG9uZW50Q29udGVudC5Db250ZW50KS5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgICAgIGxhbmd1YWdlU2V0LmFkZChsYW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyA9IEFycmF5LmZyb20obGFuZ3VhZ2VTZXQpLnNvcnQoKTtcblxuICAgIGlmICh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUud2FybignTGFuZ1NlcnZpY2U6IE5vIGxhbmd1YWdlcyBkZXRlY3RlZCBpbiBjb250ZW50IGNvbmZpZ3VyYXRpb24hJyk7XG4gICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyA9IFtMQU5HVUFHRVMuRVNdOyAvLyBGYWxsYmFja1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGJlc3QgZGVmYXVsdCBsYW5ndWFnZSBiYXNlZCBvbiBhdmFpbGFibGUgY29udGVudC5cbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lRGVmYXVsdExhbmd1YWdlKCk6IExhbmdPcHRpb24ge1xuICAgIC8vIFByZWZlcmVuY2Ugb3JkZXI6IFNwYW5pc2gsIEVuZ2xpc2gsIHRoZW4gZmlyc3QgYXZhaWxhYmxlXG4gICAgY29uc3QgcHJlZmVycmVkT3JkZXIgPSBbTEFOR1VBR0VTLkVTLCBMQU5HVUFHRVMuRU5dO1xuXG4gICAgZm9yIChjb25zdCBwcmVmZXJyZWQgb2YgcHJlZmVycmVkT3JkZXIpIHtcbiAgICAgIGlmICh0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5pbmNsdWRlcyhwcmVmZXJyZWQpKSB7XG4gICAgICAgIHJldHVybiBwcmVmZXJyZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlmIGEgbGFuZ3VhZ2UgaXMgYXZhaWxhYmxlIGluIHRoZSBjb250ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUxhbmd1YWdlKGxhbmc6IExhbmdPcHRpb24gfCBudWxsKTogTGFuZ09wdGlvbiB8IG51bGwge1xuICAgIGlmICghbGFuZykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpID8gbGFuZyA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBiZXN0IGF2YWlsYWJsZSBsYW5ndWFnZSBmb3IgYSBjb21wb25lbnQgYW5kIGtleS5cbiAgICogUHJvdmlkZXMgaW50ZWxsaWdlbnQgZmFsbGJhY2sgd2l0aCB3YXJuaW5ncy5cbiAgICovXG4gIHByaXZhdGUgZ2V0QmVzdEF2YWlsYWJsZUNvbnRlbnQoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcmVxdWVzdGVkTGFuZzogTGFuZ09wdGlvblxuICApOiB7XG4gICAgY29udGVudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGFjdHVhbExhbmc6IExhbmdPcHRpb247XG4gICAgc2hvdWxkV2FybjogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgY29tcG9uZW50Q29udGVudCA9IHRoaXMuY29udGVudFtjbGFzc05hbWVdO1xuXG4gICAgaWYgKCFjb21wb25lbnRDb250ZW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiB1bmRlZmluZWQsXG4gICAgICAgIGFjdHVhbExhbmc6IHJlcXVlc3RlZExhbmcsXG4gICAgICAgIHNob3VsZFdhcm46IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUcnkgcmVxdWVzdGVkIGxhbmd1YWdlIGZpcnN0XG4gICAgY29uc3QgcmVxdWVzdGVkQ29udGVudCA9IGNvbXBvbmVudENvbnRlbnQuQ29udGVudFtyZXF1ZXN0ZWRMYW5nXTtcbiAgICBpZiAocmVxdWVzdGVkQ29udGVudD8uW2tleV0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IHJlcXVlc3RlZENvbnRlbnRba2V5XSxcbiAgICAgICAgYWN0dWFsTGFuZzogcmVxdWVzdGVkTGFuZyxcbiAgICAgICAgc2hvdWxkV2FybjogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIExhbmd1YWdlIG5vdCBhdmFpbGFibGUsIHRyeSBmYWxsYmFja3NcbiAgICBjb25zdCB3YXJuaW5nS2V5ID0gYCR7Y2xhc3NOYW1lfS4ke2tleX0uJHtyZXF1ZXN0ZWRMYW5nfWA7XG4gICAgY29uc3Qgc2hvdWxkV2FybiA9ICF0aGlzLndhcm5lZE1pc3NpbmdMYW5ndWFnZXMuaGFzKHdhcm5pbmdLZXkpO1xuXG4gICAgaWYgKHNob3VsZFdhcm4pIHtcbiAgICAgIHRoaXMud2FybmVkTWlzc2luZ0xhbmd1YWdlcy5hZGQod2FybmluZ0tleSk7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGRlZmF1bHQgbGFuZ3VhZ2VcbiAgICBpZiAocmVxdWVzdGVkTGFuZyAhPT0gdGhpcy5kZWZhdWx0TGFuZykge1xuICAgICAgY29uc3QgZGVmYXVsdENvbnRlbnQgPSBjb21wb25lbnRDb250ZW50LkNvbnRlbnRbdGhpcy5kZWZhdWx0TGFuZ107XG4gICAgICBpZiAoZGVmYXVsdENvbnRlbnQ/LltrZXldKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogZGVmYXVsdENvbnRlbnRba2V5XSxcbiAgICAgICAgICBhY3R1YWxMYW5nOiB0aGlzLmRlZmF1bHRMYW5nLFxuICAgICAgICAgIHNob3VsZFdhcm4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJ5IGZpcnN0IGF2YWlsYWJsZSBsYW5ndWFnZVxuICAgIGZvciAoY29uc3QgYXZhaWxhYmxlTGFuZyBvZiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcykge1xuICAgICAgY29uc3QgYXZhaWxhYmxlQ29udGVudCA9IGNvbXBvbmVudENvbnRlbnQuQ29udGVudFthdmFpbGFibGVMYW5nXTtcbiAgICAgIGlmIChhdmFpbGFibGVDb250ZW50Py5ba2V5XSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IGF2YWlsYWJsZUNvbnRlbnRba2V5XSxcbiAgICAgICAgICBhY3R1YWxMYW5nOiBhdmFpbGFibGVMYW5nLFxuICAgICAgICAgIHNob3VsZFdhcm4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICAgIGFjdHVhbExhbmc6IHJlcXVlc3RlZExhbmcsXG4gICAgICBzaG91bGRXYXJuLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBjdXJyZW50IGxhbmd1YWdlIHdoZW5ldmVyIGl0IGNoYW5nZXMuXG4gICAqIFVzZSB0aGlzIHRvIHN1YnNjcmliZSB0byBsYW5ndWFnZSBjaGFuZ2VzIGluIGNvbXBvbmVudHMuXG4gICAqL1xuICBnZXQgY3VycmVudExhbmckKCk6IE9ic2VydmFibGU8TGFuZ09wdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTGFuZy5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpIC8vIEVuc3VyZSBuZXcgc3Vic2NyaWJlcnMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2Ugc3luY2hyb25vdXNseS5cbiAgICovXG4gIGdldCBjdXJyZW50TGFuZygpOiBMYW5nT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExhbmcudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFycmF5IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMgZGV0ZWN0ZWQgZnJvbSBjb250ZW50LlxuICAgKi9cbiAgZ2V0IGF2YWlsYWJsZUxhbmdzKCk6IExhbmdPcHRpb25bXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmF2YWlsYWJsZUxhbmd1YWdlc107XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGxhbmd1YWdlLlxuICAgKi9cbiAgZ2V0IGRlZmF1bHRMYW5ndWFnZSgpOiBMYW5nT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0TGFuZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgYW5kIHBlcnNpc3QgaXQgdG8gbG9jYWxTdG9yYWdlLlxuICAgKiBUaGlzIHdpbGwgdHJpZ2dlciB1cGRhdGVzIGluIGFsbCByZWFjdGl2ZSBjb250ZW50IHN1YnNjcmlwdGlvbnMuXG4gICAqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBsYW5ndWFnZSBpcyBhdmFpbGFibGUgYW5kIHdhcm5zIGlmIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIGxhbmcgLSBUaGUgbGFuZ3VhZ2UgdG8gc2V0XG4gICAqL1xuICBzZXRMYW5nKGxhbmc6IExhbmdPcHRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBMYW5nU2VydmljZTogTGFuZ3VhZ2UgXCIke2xhbmd9XCIgaXMgbm90IGF2YWlsYWJsZS4gQXZhaWxhYmxlIGxhbmd1YWdlczpgLFxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlc1xuICAgICAgKTtcbiAgICAgIGNvbnNvbGUud2FybihgTGFuZ1NlcnZpY2U6IEZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGxhbmd1YWdlIFwiJHt0aGlzLmRlZmF1bHRMYW5nfVwiYCk7XG4gICAgICBsYW5nID0gdGhpcy5kZWZhdWx0TGFuZztcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkTGFuZy5uZXh0KGxhbmcpO1xuICAgIExvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0PExhbmdPcHRpb24+KExBTkcsIGxhbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb250ZW50IGZvciBhIGNvbXBvbmVudCBjbGFzcyBhbmQga2V5IChsZWdhY3kgbWV0aG9kKS5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGdldFRleHQoKSBvciBnZXRDb250ZW50KCkgZm9yIGJldHRlciB0eXBlIHNhZmV0eVxuICAgKi9cbiAgVGV4dChjbGFzc05hbWU6IHN0cmluZyk6IExhbmd1YWdlVGV4dCB7XG4gICAgY29uc3QgY29tcG9uZW50Q29udGVudCA9IHRoaXMuY29udGVudFtjbGFzc05hbWVdO1xuICAgIHJldHVybiBjb21wb25lbnRDb250ZW50Py5Db250ZW50W3RoaXMuc2VsZWN0ZWRMYW5nLnZhbHVlXSB8fCB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaW5nbGUgY29udGVudCBzdHJpbmcgc3luY2hyb25vdXNseSBmb3IgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gICAqIFByb3ZpZGVzIGludGVsbGlnZW50IGZhbGxiYWNrIHdpdGggd2FybmluZ3MgZm9yIG1pc3NpbmcgdHJhbnNsYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIGNvbXBvbmVudCBjbGFzcyBuYW1lXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgdGV4dCBrZXlcbiAgICogQHBhcmFtIGZhbGxiYWNrIC0gT3B0aW9uYWwgZmFsbGJhY2sgdGV4dCBpZiBrZXkgaXMgbm90IGZvdW5kXG4gICAqIEByZXR1cm5zIFRoZSB0ZXh0IHN0cmluZyBvciBmYWxsYmFja1xuICAgKi9cbiAgZ2V0VGV4dChjbGFzc05hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldEJlc3RBdmFpbGFibGVDb250ZW50KGNsYXNzTmFtZSwga2V5LCB0aGlzLnNlbGVjdGVkTGFuZy52YWx1ZSk7XG5cbiAgICBpZiAocmVzdWx0LnNob3VsZFdhcm4gJiYgcmVzdWx0LmFjdHVhbExhbmcgIT09IHRoaXMuc2VsZWN0ZWRMYW5nLnZhbHVlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBMYW5nU2VydmljZTogQ29udGVudCBcIiR7Y2xhc3NOYW1lfS4ke2tleX1cIiBub3QgYXZhaWxhYmxlIGluIFwiJHt0aGlzLnNlbGVjdGVkTGFuZy52YWx1ZX1cIi5gLFxuICAgICAgICBgVXNpbmcgXCIke3Jlc3VsdC5hY3R1YWxMYW5nfVwiIGluc3RlYWQuIEF2YWlsYWJsZSBsYW5ndWFnZXM6YCxcbiAgICAgICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5jb250ZW50IHx8IGZhbGxiYWNrIHx8IGBbJHtjbGFzc05hbWV9LiR7a2V5fV1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHJlYWN0aXZlIE9ic2VydmFibGUgZm9yIGEgc3BlY2lmaWMgdGV4dCBrZXkgdGhhdCB1cGRhdGVzIHdoZW4gbGFuZ3VhZ2UgY2hhbmdlcy5cbiAgICogVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBjb21wb25lbnRzIHRoYXQgbmVlZCByZWFjdGl2ZSBjb250ZW50LlxuICAgKiBQcm92aWRlcyBpbnRlbGxpZ2VudCBmYWxsYmFjayB3aXRoIHdhcm5pbmdzIGZvciBtaXNzaW5nIHRyYW5zbGF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRleHQga2V5XG4gICAqIEBwYXJhbSBmYWxsYmFjayAtIE9wdGlvbmFsIGZhbGxiYWNrIHRleHQgaWYga2V5IGlzIG5vdCBmb3VuZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHRleHQgc3RyaW5nIHdoZW5ldmVyIGxhbmd1YWdlIGNoYW5nZXNcbiAgICovXG4gIGdldENvbnRlbnQoY2xhc3NOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmckLnBpcGUoXG4gICAgICBtYXAobGFuZyA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0QmVzdEF2YWlsYWJsZUNvbnRlbnQoY2xhc3NOYW1lLCBrZXksIGxhbmcpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc2hvdWxkV2FybiAmJiByZXN1bHQuYWN0dWFsTGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBMYW5nU2VydmljZTogQ29udGVudCBcIiR7Y2xhc3NOYW1lfS4ke2tleX1cIiBub3QgYXZhaWxhYmxlIGluIFwiJHtsYW5nfVwiLmAsXG4gICAgICAgICAgICBgVXNpbmcgXCIke3Jlc3VsdC5hY3R1YWxMYW5nfVwiIGluc3RlYWQuIEF2YWlsYWJsZSBsYW5ndWFnZXM6YCxcbiAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQuY29udGVudCB8fCBmYWxsYmFjayB8fCBgWyR7Y2xhc3NOYW1lfS4ke2tleX1dYDtcbiAgICAgIH0pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJlYWN0aXZlIGNvbnRlbnQgZm9yIG11bHRpcGxlIGtleXMgYXQgb25jZS5cbiAgICogUHJvdmlkZXMgaW50ZWxsaWdlbnQgZmFsbGJhY2sgd2l0aCB3YXJuaW5ncyBmb3IgbWlzc2luZyB0cmFuc2xhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWVcbiAgICogQHBhcmFtIGtleXMgLSBBcnJheSBvZiB0ZXh0IGtleXMgdG8gcmV0cmlldmVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIG9iamVjdCB3aXRoIGFsbCByZXF1ZXN0ZWQga2V5c1xuICAgKi9cbiAgZ2V0TXVsdGlwbGVDb250ZW50KGNsYXNzTmFtZTogc3RyaW5nLCBrZXlzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRMYW5nJC5waXBlKFxuICAgICAgbWFwKGxhbmcgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50UmVzdWx0ID0gdGhpcy5nZXRCZXN0QXZhaWxhYmxlQ29udGVudChjbGFzc05hbWUsIGtleSwgbGFuZyk7XG5cbiAgICAgICAgICBpZiAoY29udGVudFJlc3VsdC5zaG91bGRXYXJuICYmIGNvbnRlbnRSZXN1bHQuYWN0dWFsTGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICBgTGFuZ1NlcnZpY2U6IENvbnRlbnQgXCIke2NsYXNzTmFtZX0uJHtrZXl9XCIgbm90IGF2YWlsYWJsZSBpbiBcIiR7bGFuZ31cIi5gLFxuICAgICAgICAgICAgICBgVXNpbmcgXCIke2NvbnRlbnRSZXN1bHQuYWN0dWFsTGFuZ31cIiBpbnN0ZWFkLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBjb250ZW50UmVzdWx0LmNvbnRlbnQgfHwgYFske2NsYXNzTmFtZX0uJHtrZXl9XWA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBKU09OLnN0cmluZ2lmeShwcmV2KSA9PT0gSlNPTi5zdHJpbmdpZnkoY3VycikpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGNvbnRlbnQga2V5IGV4aXN0cyBmb3IgYSBjb21wb25lbnQgaW4gYW55IGF2YWlsYWJsZSBsYW5ndWFnZS5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRleHQga2V5XG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGtleSBleGlzdHMgaW4gYW55IGxhbmd1YWdlXG4gICAqL1xuICBoYXNDb250ZW50KGNsYXNzTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsYXNzQ29udGVudCA9IHRoaXMuY29udGVudFtjbGFzc05hbWVdO1xuICAgIGlmICghY2xhc3NDb250ZW50KSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhjbGFzc0NvbnRlbnQuQ29udGVudCkuc29tZShcbiAgICAgIGxhbmdDb250ZW50ID0+IGxhbmdDb250ZW50ICYmIHR5cGVvZiBsYW5nQ29udGVudFtrZXldID09PSAnc3RyaW5nJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBjb250ZW50IGtleSBleGlzdHMgZm9yIGEgY29tcG9uZW50IGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWVcbiAgICogQHBhcmFtIGtleSAtIFRoZSB0ZXh0IGtleVxuICAgKiBAcGFyYW0gbGFuZyAtIFRoZSBsYW5ndWFnZSB0byBjaGVjayAoZGVmYXVsdHMgdG8gY3VycmVudCBsYW5ndWFnZSlcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUga2V5IGV4aXN0cyBpbiB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlXG4gICAqL1xuICBoYXNDb250ZW50SW5MYW5ndWFnZShjbGFzc05hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGxhbmc/OiBMYW5nT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFyZ2V0TGFuZyA9IGxhbmcgfHwgdGhpcy5jdXJyZW50TGFuZztcbiAgICBjb25zdCBjbGFzc0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXT8uQ29udGVudFt0YXJnZXRMYW5nXTtcbiAgICByZXR1cm4gY2xhc3NDb250ZW50ICYmIHR5cGVvZiBjbGFzc0NvbnRlbnRba2V5XSA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGF2YWlsYWJsZSBsYW5ndWFnZXMgZm9yIGEgc3BlY2lmaWMgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIGNvbXBvbmVudCBjbGFzcyBuYW1lXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGxhbmd1YWdlIGNvZGVzIGF2YWlsYWJsZSBmb3IgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzRm9yQ29tcG9uZW50KGNsYXNzTmFtZTogc3RyaW5nKTogTGFuZ09wdGlvbltdIHtcbiAgICBjb25zdCBjbGFzc0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXTtcbiAgICBpZiAoIWNsYXNzQ29udGVudCkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNsYXNzQ29udGVudC5Db250ZW50KS5maWx0ZXIoXG4gICAgICBsYW5nID0+IGNsYXNzQ29udGVudC5Db250ZW50W2xhbmddICYmIE9iamVjdC5rZXlzKGNsYXNzQ29udGVudC5Db250ZW50W2xhbmddKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbWlzc2luZyBjb250ZW50IGtleXMgZm9yIGEgY29tcG9uZW50IGluIGEgc3BlY2lmaWMgbGFuZ3VhZ2UuXG4gICAqIFVzZWZ1bCBmb3IgaWRlbnRpZnlpbmcgaW5jb21wbGV0ZSB0cmFuc2xhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWVcbiAgICogQHBhcmFtIGxhbmcgLSBUaGUgbGFuZ3VhZ2UgdG8gY2hlY2tcbiAgICogQHBhcmFtIHJlZmVyZW5jZUxhbmcgLSBUaGUgcmVmZXJlbmNlIGxhbmd1YWdlIHRvIGNvbXBhcmUgYWdhaW5zdCAoZGVmYXVsdHMgdG8gZGVmYXVsdCBsYW5ndWFnZSlcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbWlzc2luZyBrZXlzXG4gICAqL1xuICBnZXRNaXNzaW5nQ29udGVudEtleXMoY2xhc3NOYW1lOiBzdHJpbmcsIGxhbmc6IExhbmdPcHRpb24sIHJlZmVyZW5jZUxhbmc/OiBMYW5nT3B0aW9uKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlZkxhbmcgPSByZWZlcmVuY2VMYW5nIHx8IHRoaXMuZGVmYXVsdExhbmc7XG4gICAgY29uc3QgY2xhc3NDb250ZW50ID0gdGhpcy5jb250ZW50W2NsYXNzTmFtZV07XG5cbiAgICBpZiAoIWNsYXNzQ29udGVudCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgcmVmZXJlbmNlQ29udGVudCA9IGNsYXNzQ29udGVudC5Db250ZW50W3JlZkxhbmddIHx8IHt9O1xuICAgIGNvbnN0IHRhcmdldENvbnRlbnQgPSBjbGFzc0NvbnRlbnQuQ29udGVudFtsYW5nXSB8fCB7fTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyZWZlcmVuY2VDb250ZW50KS5maWx0ZXIoXG4gICAgICBrZXkgPT4gIXRhcmdldENvbnRlbnRba2V5XSB8fCB0eXBlb2YgdGFyZ2V0Q29udGVudFtrZXldICE9PSAnc3RyaW5nJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgb3IgdXBkYXRlIGNvbnRlbnQgZm9yIGEgY29tcG9uZW50IGR5bmFtaWNhbGx5LlxuICAgKiBUaGlzIGFsbG93cyByZWdpc3RlcmluZyBjb250ZW50IGF0IHJ1bnRpbWUgd2l0aG91dCBBUFBfSU5JVElBTElaRVIuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWVcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgbXVsdGlsaW5ndWFsIGNvbnRlbnQgb2JqZWN0XG4gICAqIEBwYXJhbSBtZXJnZSAtIFdoZXRoZXIgdG8gbWVyZ2Ugd2l0aCBleGlzdGluZyBjb250ZW50IChkZWZhdWx0OiB0cnVlKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHRoaXMubGFuZ1NlcnZpY2UucmVnaXN0ZXJDb250ZW50KCdNeUNvbXBvbmVudCcsIHtcbiAgICogICBbTEFOR1VBR0VTLkVTXTogeyB0aXRsZTogJ1TDrXR1bG8nLCBkZXNjcmlwdGlvbjogJ0Rlc2NyaXBjacOzbicgfSxcbiAgICogICBbTEFOR1VBR0VTLkVOXTogeyB0aXRsZTogJ1RpdGxlJywgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICByZWdpc3RlckNvbnRlbnQoY2xhc3NOYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IExhbmd1YWdlc0NvbnRlbnQsIG1lcmdlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmICghY2xhc3NOYW1lKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdMYW5nU2VydmljZTogY2xhc3NOYW1lIGlzIHJlcXVpcmVkIGZvciByZWdpc3RlckNvbnRlbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnRlbnQgfHwgdHlwZW9mIGNvbnRlbnQgIT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdMYW5nU2VydmljZTogSW52YWxpZCBjb250ZW50IHByb3ZpZGVkIGZvciByZWdpc3RlckNvbnRlbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgTGFuZ1NlcnZpY2U6IFJlZ2lzdGVyaW5nIGNvbnRlbnQgZm9yIFwiJHtjbGFzc05hbWV9XCJgLCB7XG4gICAgICBtZXJnZSxcbiAgICAgIGxhbmd1YWdlczogT2JqZWN0LmtleXMoY29udGVudCksXG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvbXBvbmVudCBjb250ZW50IGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIXRoaXMuY29udGVudFtjbGFzc05hbWVdKSB7XG4gICAgICB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXSA9IG5ldyBUZXh0Q29udGVudCh7fSk7XG4gICAgfVxuXG4gICAgLy8gTWVyZ2Ugb3IgcmVwbGFjZSBjb250ZW50IGZvciBlYWNoIGxhbmd1YWdlXG4gICAgT2JqZWN0LmVudHJpZXMoY29udGVudCkuZm9yRWFjaCgoW2xhbmcsIGxhbmdDb250ZW50XSkgPT4ge1xuICAgICAgaWYgKCFsYW5nQ29udGVudCB8fCB0eXBlb2YgbGFuZ0NvbnRlbnQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgTGFuZ1NlcnZpY2U6IEludmFsaWQgY29udGVudCBmb3IgbGFuZ3VhZ2UgXCIke2xhbmd9XCIgaW4gXCIke2NsYXNzTmFtZX1cImApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5jb250ZW50W2NsYXNzTmFtZV0uQ29udGVudFtsYW5nXSkge1xuICAgICAgICB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXS5Db250ZW50W2xhbmddID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXJnZSkge1xuICAgICAgICB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXS5Db250ZW50W2xhbmddID0ge1xuICAgICAgICAgIC4uLnRoaXMuY29udGVudFtjbGFzc05hbWVdLkNvbnRlbnRbbGFuZ10sXG4gICAgICAgICAgLi4ubGFuZ0NvbnRlbnQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXS5Db250ZW50W2xhbmddID0geyAuLi5sYW5nQ29udGVudCB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICB0aGlzLmRldGVjdEF2YWlsYWJsZUxhbmd1YWdlcygpO1xuXG4gICAgY29uc29sZS5sb2coYExhbmdTZXJ2aWNlOiBDb250ZW50IHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5IGZvciBcIiR7Y2xhc3NOYW1lfVwiYCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG11bHRpcGxlIGNvbnRlbnQgcmVnaXN0cmF0aW9ucyBhdCBvbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGVudE1hcCAtIE1hcCBvZiBjbGFzc05hbWUgdG8gY29udGVudFxuICAgKiBAcGFyYW0gbWVyZ2UgLSBXaGV0aGVyIHRvIG1lcmdlIHdpdGggZXhpc3RpbmcgY29udGVudCAoZGVmYXVsdDogdHJ1ZSlcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB0aGlzLmxhbmdTZXJ2aWNlLnJlZ2lzdGVyTXVsdGlwbGVDb250ZW50KHtcbiAgICogICAnQ29tcG9uZW50MSc6IHsgW0xBTkdVQUdFUy5FU106IHsga2V5MTogJ3ZhbG9yMScgfSB9LFxuICAgKiAgICdDb21wb25lbnQyJzogeyBbTEFOR1VBR0VTLkVOXTogeyBrZXkyOiAndmFsdWUyJyB9IH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcmVnaXN0ZXJNdWx0aXBsZUNvbnRlbnQoXG4gICAgY29udGVudE1hcDogUmVjb3JkPHN0cmluZywgTGFuZ3VhZ2VzQ29udGVudD4sXG4gICAgbWVyZ2U6IGJvb2xlYW4gPSB0cnVlXG4gICk6IHZvaWQge1xuICAgIGlmICghY29udGVudE1hcCB8fCB0eXBlb2YgY29udGVudE1hcCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xhbmdTZXJ2aWNlOiBJbnZhbGlkIGNvbnRlbnRNYXAgcHJvdmlkZWQgZm9yIHJlZ2lzdGVyTXVsdGlwbGVDb250ZW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0xhbmdTZXJ2aWNlOiBSZWdpc3RlcmluZyBtdWx0aXBsZSBjb250ZW50IGVudHJpZXMnLCB7XG4gICAgICBjbGFzc2VzOiBPYmplY3Qua2V5cyhjb250ZW50TWFwKSxcbiAgICAgIG1lcmdlLFxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmVudHJpZXMoY29udGVudE1hcCkuZm9yRWFjaCgoW2NsYXNzTmFtZSwgY29udGVudF0pID0+IHtcbiAgICAgIHRoaXMucmVnaXN0ZXJDb250ZW50KGNsYXNzTmFtZSwgY29udGVudCwgbWVyZ2UpO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coJ0xhbmdTZXJ2aWNlOiBNdWx0aXBsZSBjb250ZW50IHJlZ2lzdHJhdGlvbiBjb21wbGV0ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgY29udGVudCBmb3IgYSBzcGVjaWZpYyBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgLSBUaGUgY29tcG9uZW50IGNsYXNzIG5hbWUgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVDb250ZW50KGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0xhbmdTZXJ2aWNlOiBjbGFzc05hbWUgaXMgcmVxdWlyZWQgZm9yIHJlbW92ZUNvbnRlbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50W2NsYXNzTmFtZV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbY2xhc3NOYW1lXTtcbiAgICAgIHRoaXMuZGV0ZWN0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XG4gICAgICBjb25zb2xlLmxvZyhgTGFuZ1NlcnZpY2U6IENvbnRlbnQgcmVtb3ZlZCBmb3IgXCIke2NsYXNzTmFtZX1cImApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYExhbmdTZXJ2aWNlOiBObyBjb250ZW50IGZvdW5kIGZvciBcIiR7Y2xhc3NOYW1lfVwiIHRvIHJlbW92ZWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIGNvbXBvbmVudCBjbGFzc2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiByZWdpc3RlcmVkIGNsYXNzIG5hbWVzXG4gICAqL1xuICBnZXRSZWdpc3RlcmVkQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udGVudCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb21wbGV0ZSBjb250ZW50IGNvbmZpZ3VyYXRpb24gKGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMpLlxuICAgKiBSZXR1cm5zIGEgZGVlcCBjb3B5IHRvIHByZXZlbnQgYWNjaWRlbnRhbCBtdXRhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIENvbXBsZXRlIGNvbnRlbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgZ2V0Q29udGVudENvbmZpZ3VyYXRpb24oKTogUHJvdmlkZXIge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY29udGVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBjb250ZW50IGFuZCByZXNldCB0byBpbml0aWFsIHN0YXRlLlxuICAgKiBVc2VmdWwgZm9yIHRlc3Rpbmcgb3IgY29tcGxldGUgcmVpbml0aWFsaXphdGlvbi5cbiAgICovXG4gIGNsZWFyQWxsQ29udGVudCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnTGFuZ1NlcnZpY2U6IENsZWFyaW5nIGFsbCBjb250ZW50Jyk7XG4gICAgdGhpcy5jb250ZW50ID0ge307XG4gICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMgPSBbTEFOR1VBR0VTLkVTXTsgLy8gUmVzZXQgdG8gZGVmYXVsdFxuICAgIHRoaXMud2FybmVkTWlzc2luZ0xhbmd1YWdlcy5jbGVhcigpO1xuICAgIGNvbnNvbGUubG9nKCdMYW5nU2VydmljZTogQWxsIGNvbnRlbnQgY2xlYXJlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb250ZW50IHdpdGggaW50ZXJwb2xhdGlvbiBzdXBwb3J0LlxuICAgKiBSZXRyaWV2ZXMgY29udGVudCBhbmQgcmVwbGFjZXMgcGxhY2Vob2xkZXJzIHdpdGggcHJvdmlkZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIGNvbXBvbmVudCBjbGFzcyBuYW1lXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgdGV4dCBrZXlcbiAgICogQHBhcmFtIGludGVycG9sYXRpb25EYXRhIC0gT2JqZWN0IHdpdGggdmFsdWVzIHRvIGludGVycG9sYXRlXG4gICAqIEBwYXJhbSBmYWxsYmFjayAtIE9wdGlvbmFsIGZhbGxiYWNrIHRleHQgaWYga2V5IGlzIG5vdCBmb3VuZFxuICAgKiBAcmV0dXJucyBUZXh0IHdpdGggaW50ZXJwb2xhdGVkIHZhbHVlc1xuICAgKi9cbiAgZ2V0VGV4dFdpdGhJbnRlcnBvbGF0aW9uKFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIGtleTogc3RyaW5nLFxuICAgIGludGVycG9sYXRpb25EYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPixcbiAgICBmYWxsYmFjaz86IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldFRleHQoY2xhc3NOYW1lLCBrZXksIGZhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVN0cmluZyhjb250ZW50LCBpbnRlcnBvbGF0aW9uRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJlYWN0aXZlIGNvbnRlbnQgd2l0aCBpbnRlcnBvbGF0aW9uIHN1cHBvcnQuXG4gICAqIFJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGludGVycG9sYXRlZCBjb250ZW50IHdoZW4gbGFuZ3VhZ2UgY2hhbmdlcy5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRleHQga2V5XG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0aW9uRGF0YSAtIE9iamVjdCB3aXRoIHZhbHVlcyB0byBpbnRlcnBvbGF0ZVxuICAgKiBAcGFyYW0gZmFsbGJhY2sgLSBPcHRpb25hbCBmYWxsYmFjayB0ZXh0IGlmIGtleSBpcyBub3QgZm91bmRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGludGVycG9sYXRlZCB0ZXh0XG4gICAqL1xuICBnZXRDb250ZW50V2l0aEludGVycG9sYXRpb24oXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAga2V5OiBzdHJpbmcsXG4gICAgaW50ZXJwb2xhdGlvbkRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+LFxuICAgIGZhbGxiYWNrPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29udGVudChjbGFzc05hbWUsIGtleSwgZmFsbGJhY2spLnBpcGUoXG4gICAgICBtYXAoY29udGVudCA9PiB0aGlzLmludGVycG9sYXRlU3RyaW5nKGNvbnRlbnQsIGludGVycG9sYXRpb25EYXRhKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVycG9sYXRlIGEgc3RyaW5nIHdpdGggcHJvdmlkZWQgdmFsdWVzLlxuICAgKiBSZXBsYWNlcyBwbGFjZWhvbGRlcnMgbGlrZSB7e2tleX19IG9yIHtrZXl9IHdpdGggYWN0dWFsIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBDb250ZW50IHN0cmluZyB3aXRoIHBsYWNlaG9sZGVyc1xuICAgKiBAcGFyYW0gdmFsdWVzIC0gVmFsdWVzIHRvIGludGVycG9sYXRlXG4gICAqIEByZXR1cm5zIEludGVycG9sYXRlZCBzdHJpbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbnRlcnBvbGF0ZVN0cmluZygnSGVsbG8ge3tuYW1lfX0hJywgeyBuYW1lOiAnV29ybGQnIH0pXG4gICAqIC8vIFJldHVybnM6ICdIZWxsbyBXb3JsZCEnXG4gICAqIGBgYFxuICAgKi9cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0ZVN0cmluZyhjb250ZW50OiBzdHJpbmcsIHZhbHVlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4pOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWVzIHx8ICFjb250ZW50KSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKC9cXHtcXHs/KFxcdyspXFx9P1xcfS9nLCAobWF0Y2gsIGtleSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNba2V5XTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHZhbHVlKSA6IG1hdGNoO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExlZ2FjeSBmdW5jdGlvbiBlcXVpdmFsZW50IHRvIHRoZSBvbGQgZnJvbUNvbnRlbnRXaXRoSW50ZXJwb2xhdGlvbi5cbiAgICogUHJvdmlkZXMgcmVhY3RpdmUgY29udGVudCB3aXRoIGludGVycG9sYXRpb24gc3VwcG9ydCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICpcbiAgICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBjb21wb25lbnQgY2xhc3MgbmFtZVxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRleHQga2V5XG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0aW9uRGF0YSAtIE9iamVjdCB3aXRoIHZhbHVlcyB0byBpbnRlcnBvbGF0ZVxuICAgKiBAcGFyYW0gZmFsbGJhY2sgLSBPcHRpb25hbCBmYWxsYmFjayB0ZXh0IGlmIGtleSBpcyBub3QgZm91bmRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGludGVycG9sYXRlZCB0ZXh0XG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBnZXRDb250ZW50V2l0aEludGVycG9sYXRpb24gaW5zdGVhZFxuICAgKi9cbiAgZnJvbUNvbnRlbnRXaXRoSW50ZXJwb2xhdGlvbihcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBpbnRlcnBvbGF0aW9uRGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4sXG4gICAgZmFsbGJhY2s/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDb250ZW50V2l0aEludGVycG9sYXRpb24oY2xhc3NOYW1lLCBrZXksIGludGVycG9sYXRpb25EYXRhLCBmYWxsYmFjayk7XG4gIH1cblxuICAvLyBMZWdhY3kgZ2V0dGVycy9zZXR0ZXJzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIGdldCBMYW5nKCk6IExhbmdPcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRMYW5nO1xuICB9XG5cbiAgc2V0IExhbmcobGFuZzogTGFuZ09wdGlvbikge1xuICAgIHRoaXMuc2V0TGFuZyhsYW5nKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simplified content utilities for the new LangService-only system.
|
|
3
|
+
* This replaces the old reactive-content.ts with a much simpler approach.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to determine if component should use reactive content.
|
|
7
|
+
* @param metadata Component metadata
|
|
8
|
+
* @returns True if component should use reactive content
|
|
9
|
+
*/
|
|
10
|
+
export function shouldUseReactiveContent(metadata) {
|
|
11
|
+
return !metadata.content && !!(metadata.contentKey && metadata.contentClass);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Extract content configuration from metadata.
|
|
15
|
+
* @param metadata Component metadata
|
|
16
|
+
* @returns Content configuration for LangService
|
|
17
|
+
*/
|
|
18
|
+
export function extractContentConfig(metadata) {
|
|
19
|
+
return {
|
|
20
|
+
className: metadata.contentClass || '',
|
|
21
|
+
key: metadata.contentKey || '',
|
|
22
|
+
fallback: metadata.contentFallback,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create reactive content metadata with defaults.
|
|
27
|
+
* @param config Partial content configuration
|
|
28
|
+
* @returns Complete reactive content metadata
|
|
29
|
+
*/
|
|
30
|
+
export function createReactiveContentMetadata(config) {
|
|
31
|
+
return {
|
|
32
|
+
content: config.content,
|
|
33
|
+
contentKey: config.contentKey,
|
|
34
|
+
contentClass: config.contentClass,
|
|
35
|
+
contentFallback: config.contentFallback,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Interpolate content string with values.
|
|
40
|
+
* Replaces placeholders like {{key}} or {key} with actual values.
|
|
41
|
+
*
|
|
42
|
+
* @param content - Content string with placeholders
|
|
43
|
+
* @param values - Values to interpolate
|
|
44
|
+
* @returns Interpolated string
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* interpolateContent('Hello {{name}}!', { name: 'World' })
|
|
49
|
+
* // Returns: 'Hello World!'
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function interpolateContent(content, values) {
|
|
53
|
+
if (!values || !content) {
|
|
54
|
+
return content;
|
|
55
|
+
}
|
|
56
|
+
return content.replace(/\{\{?(\w+)\}?\}/g, (match, key) => {
|
|
57
|
+
const value = values[key];
|
|
58
|
+
return value !== undefined ? String(value) : match;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Check if component should use reactive content with interpolation.
|
|
63
|
+
* @param metadata Component metadata with interpolation
|
|
64
|
+
* @returns True if component should use reactive content with interpolation
|
|
65
|
+
*/
|
|
66
|
+
export function shouldUseReactiveContentWithInterpolation(metadata) {
|
|
67
|
+
return shouldUseReactiveContent(metadata) && !!metadata.contentInterpolation;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extract content configuration with interpolation from metadata.
|
|
71
|
+
* @param metadata Component metadata with interpolation
|
|
72
|
+
* @returns Content configuration for LangService with interpolation data
|
|
73
|
+
*/
|
|
74
|
+
export function extractContentConfigWithInterpolation(metadata) {
|
|
75
|
+
return {
|
|
76
|
+
className: metadata.contentClass || '',
|
|
77
|
+
key: metadata.contentKey || '',
|
|
78
|
+
fallback: metadata.contentFallback,
|
|
79
|
+
interpolation: metadata.contentInterpolation,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Helper function to get reactive content with interpolation using LangService.
|
|
84
|
+
* This provides a unified way to get reactive, interpolated content.
|
|
85
|
+
*
|
|
86
|
+
* @param langService - The LangService instance
|
|
87
|
+
* @param metadata - Component metadata with interpolation
|
|
88
|
+
* @returns Observable that emits interpolated content
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const content$ = fromContentWithInterpolation(this.langService, {
|
|
93
|
+
* contentClass: 'MyComponent',
|
|
94
|
+
* contentKey: 'greeting',
|
|
95
|
+
* contentInterpolation: { name: 'World' }
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export function fromContentWithInterpolation(langService, // LangService type would cause circular dependency
|
|
100
|
+
metadata) {
|
|
101
|
+
// Observable<string> but avoiding import
|
|
102
|
+
const config = extractContentConfigWithInterpolation(metadata);
|
|
103
|
+
if (!config.className || !config.key) {
|
|
104
|
+
throw new Error('fromContentWithInterpolation requires both contentClass and contentKey');
|
|
105
|
+
}
|
|
106
|
+
return langService.getContentWithInterpolation(config.className, config.key, config.interpolation, config.fallback);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Helper function to get static content with interpolation.
|
|
110
|
+
* This provides interpolation for static content strings.
|
|
111
|
+
*
|
|
112
|
+
* @param content - Static content string
|
|
113
|
+
* @param interpolationData - Values to interpolate
|
|
114
|
+
* @returns Interpolated string
|
|
115
|
+
*/
|
|
116
|
+
export function interpolateStaticContent(content, interpolationData) {
|
|
117
|
+
return interpolateContent(content, interpolationData);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdXRpbHMvc2ltcGxlLWNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBdUNIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsUUFBaUM7SUFDeEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBaUM7SUFDcEUsT0FBTztRQUNMLFNBQVMsRUFBRSxRQUFRLENBQUMsWUFBWSxJQUFJLEVBQUU7UUFDdEMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLElBQUksRUFBRTtRQUM5QixRQUFRLEVBQUUsUUFBUSxDQUFDLGVBQWU7S0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxNQUF3QztJQUV4QyxPQUFPO1FBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtRQUM3QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7UUFDakMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBZSxFQUNmLE1BQXdDO0lBRXhDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixPQUFPLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUNBQXlDLENBQ3ZELFFBQTBDO0lBRTFDLE9BQU8sd0JBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztBQUMvRSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQ0FBcUMsQ0FBQyxRQUEwQztJQUM5RixPQUFPO1FBQ0wsU0FBUyxFQUFFLFFBQVEsQ0FBQyxZQUFZLElBQUksRUFBRTtRQUN0QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsSUFBSSxFQUFFO1FBQzlCLFFBQVEsRUFBRSxRQUFRLENBQUMsZUFBZTtRQUNsQyxhQUFhLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjtLQUM3QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxVQUFVLDRCQUE0QixDQUMxQyxXQUFnQixFQUFFLG1EQUFtRDtBQUNyRSxRQUEwQztJQUUxQyx5Q0FBeUM7SUFDekMsTUFBTSxNQUFNLEdBQUcscUNBQXFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FBQywyQkFBMkIsQ0FDNUMsTUFBTSxDQUFDLFNBQVMsRUFDaEIsTUFBTSxDQUFDLEdBQUcsRUFDVixNQUFNLENBQUMsYUFBYSxFQUNwQixNQUFNLENBQUMsUUFBUSxDQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLE9BQWUsRUFDZixpQkFBbUQ7SUFFbkQsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaW1wbGlmaWVkIGNvbnRlbnQgdXRpbGl0aWVzIGZvciB0aGUgbmV3IExhbmdTZXJ2aWNlLW9ubHkgc3lzdGVtLlxuICogVGhpcyByZXBsYWNlcyB0aGUgb2xkIHJlYWN0aXZlLWNvbnRlbnQudHMgd2l0aCBhIG11Y2ggc2ltcGxlciBhcHByb2FjaC5cbiAqL1xuXG4vKipcbiAqIEJhc2UgbWV0YWRhdGEgZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IHJlYWN0aXZlIGNvbnRlbnQuXG4gKiBTaW1wbGlmaWVkIHZlcnNpb24gdGhhdCB3b3JrcyBkaXJlY3RseSB3aXRoIExhbmdTZXJ2aWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aXZlQ29udGVudE1ldGFkYXRhIHtcbiAgLyoqIFN0YXRpYyBjb250ZW50IHRleHQgKHRha2VzIHByZWNlZGVuY2Ugb3ZlciByZWFjdGl2ZSBjb250ZW50KSAqL1xuICBjb250ZW50Pzogc3RyaW5nO1xuICAvKiogQ29udGVudCBrZXkgZm9yIHJlYWN0aXZlIGNvbnRlbnQgZnJvbSBMYW5nU2VydmljZSAqL1xuICBjb250ZW50S2V5Pzogc3RyaW5nO1xuICAvKiogQ29tcG9uZW50IGNsYXNzIG5hbWUgZm9yIGNvbnRlbnQgbG9va3VwICovXG4gIGNvbnRlbnRDbGFzcz86IHN0cmluZztcbiAgLyoqIEZhbGxiYWNrIHRleHQgaWYgY29udGVudCBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG1ldGFkYXRhIGZvciB0ZXh0LWJhc2VkIGNvbXBvbmVudHMgd2l0aCByZWFjdGl2ZSBjb250ZW50IHN1cHBvcnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RpdmVUZXh0TWV0YWRhdGEgZXh0ZW5kcyBSZWFjdGl2ZUNvbnRlbnRNZXRhZGF0YSB7XG4gIC8qKiBTdGF0aWMgY29udGVudCB0ZXh0ICovXG4gIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIC8qKiBDb250ZW50IGtleSBmb3IgcmVhY3RpdmUgbG9va3VwICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSAqL1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBGYWxsYmFjayB0ZXh0ICovXG4gIGNvbnRlbnRGYWxsYmFjaz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBtZXRhZGF0YSBmb3IgY29tcG9uZW50cyB0aGF0IHN1cHBvcnQgY29udGVudCBpbnRlcnBvbGF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aXZlQ29udGVudFdpdGhJbnRlcnBvbGF0aW9uIGV4dGVuZHMgUmVhY3RpdmVDb250ZW50TWV0YWRhdGEge1xuICAvKiogSW50ZXJwb2xhdGlvbiBkYXRhIGZvciBwYXJhbWV0ZXJpemVkIGNvbnRlbnQgKi9cbiAgY29udGVudEludGVycG9sYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+O1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgY29tcG9uZW50IHNob3VsZCB1c2UgcmVhY3RpdmUgY29udGVudC5cbiAqIEBwYXJhbSBtZXRhZGF0YSBDb21wb25lbnQgbWV0YWRhdGFcbiAqIEByZXR1cm5zIFRydWUgaWYgY29tcG9uZW50IHNob3VsZCB1c2UgcmVhY3RpdmUgY29udGVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkVXNlUmVhY3RpdmVDb250ZW50KG1ldGFkYXRhOiBSZWFjdGl2ZUNvbnRlbnRNZXRhZGF0YSk6IGJvb2xlYW4ge1xuICByZXR1cm4gIW1ldGFkYXRhLmNvbnRlbnQgJiYgISEobWV0YWRhdGEuY29udGVudEtleSAmJiBtZXRhZGF0YS5jb250ZW50Q2xhc3MpO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgY29udGVudCBjb25maWd1cmF0aW9uIGZyb20gbWV0YWRhdGEuXG4gKiBAcGFyYW0gbWV0YWRhdGEgQ29tcG9uZW50IG1ldGFkYXRhXG4gKiBAcmV0dXJucyBDb250ZW50IGNvbmZpZ3VyYXRpb24gZm9yIExhbmdTZXJ2aWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0Q29udGVudENvbmZpZyhtZXRhZGF0YTogUmVhY3RpdmVDb250ZW50TWV0YWRhdGEpIHtcbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IG1ldGFkYXRhLmNvbnRlbnRDbGFzcyB8fCAnJyxcbiAgICBrZXk6IG1ldGFkYXRhLmNvbnRlbnRLZXkgfHwgJycsXG4gICAgZmFsbGJhY2s6IG1ldGFkYXRhLmNvbnRlbnRGYWxsYmFjayxcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgcmVhY3RpdmUgY29udGVudCBtZXRhZGF0YSB3aXRoIGRlZmF1bHRzLlxuICogQHBhcmFtIGNvbmZpZyBQYXJ0aWFsIGNvbnRlbnQgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgQ29tcGxldGUgcmVhY3RpdmUgY29udGVudCBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhY3RpdmVDb250ZW50TWV0YWRhdGEoXG4gIGNvbmZpZzogUGFydGlhbDxSZWFjdGl2ZUNvbnRlbnRNZXRhZGF0YT5cbik6IFJlYWN0aXZlQ29udGVudE1ldGFkYXRhIHtcbiAgcmV0dXJuIHtcbiAgICBjb250ZW50OiBjb25maWcuY29udGVudCxcbiAgICBjb250ZW50S2V5OiBjb25maWcuY29udGVudEtleSxcbiAgICBjb250ZW50Q2xhc3M6IGNvbmZpZy5jb250ZW50Q2xhc3MsXG4gICAgY29udGVudEZhbGxiYWNrOiBjb25maWcuY29udGVudEZhbGxiYWNrLFxuICB9O1xufVxuXG4vKipcbiAqIEludGVycG9sYXRlIGNvbnRlbnQgc3RyaW5nIHdpdGggdmFsdWVzLlxuICogUmVwbGFjZXMgcGxhY2Vob2xkZXJzIGxpa2Uge3trZXl9fSBvciB7a2V5fSB3aXRoIGFjdHVhbCB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgLSBDb250ZW50IHN0cmluZyB3aXRoIHBsYWNlaG9sZGVyc1xuICogQHBhcmFtIHZhbHVlcyAtIFZhbHVlcyB0byBpbnRlcnBvbGF0ZVxuICogQHJldHVybnMgSW50ZXJwb2xhdGVkIHN0cmluZ1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcnBvbGF0ZUNvbnRlbnQoJ0hlbGxvIHt7bmFtZX19IScsIHsgbmFtZTogJ1dvcmxkJyB9KVxuICogLy8gUmV0dXJuczogJ0hlbGxvIFdvcmxkISdcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJwb2xhdGVDb250ZW50KFxuICBjb250ZW50OiBzdHJpbmcsXG4gIHZhbHVlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj5cbik6IHN0cmluZyB7XG4gIGlmICghdmFsdWVzIHx8ICFjb250ZW50KSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gY29udGVudC5yZXBsYWNlKC9cXHtcXHs/KFxcdyspXFx9P1xcfS9nLCAobWF0Y2gsIGtleSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW2tleV07XG4gICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyBTdHJpbmcodmFsdWUpIDogbWF0Y2g7XG4gIH0pO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGNvbXBvbmVudCBzaG91bGQgdXNlIHJlYWN0aXZlIGNvbnRlbnQgd2l0aCBpbnRlcnBvbGF0aW9uLlxuICogQHBhcmFtIG1ldGFkYXRhIENvbXBvbmVudCBtZXRhZGF0YSB3aXRoIGludGVycG9sYXRpb25cbiAqIEByZXR1cm5zIFRydWUgaWYgY29tcG9uZW50IHNob3VsZCB1c2UgcmVhY3RpdmUgY29udGVudCB3aXRoIGludGVycG9sYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFVzZVJlYWN0aXZlQ29udGVudFdpdGhJbnRlcnBvbGF0aW9uKFxuICBtZXRhZGF0YTogUmVhY3RpdmVDb250ZW50V2l0aEludGVycG9sYXRpb25cbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc2hvdWxkVXNlUmVhY3RpdmVDb250ZW50KG1ldGFkYXRhKSAmJiAhIW1ldGFkYXRhLmNvbnRlbnRJbnRlcnBvbGF0aW9uO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgY29udGVudCBjb25maWd1cmF0aW9uIHdpdGggaW50ZXJwb2xhdGlvbiBmcm9tIG1ldGFkYXRhLlxuICogQHBhcmFtIG1ldGFkYXRhIENvbXBvbmVudCBtZXRhZGF0YSB3aXRoIGludGVycG9sYXRpb25cbiAqIEByZXR1cm5zIENvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgTGFuZ1NlcnZpY2Ugd2l0aCBpbnRlcnBvbGF0aW9uIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RDb250ZW50Q29uZmlnV2l0aEludGVycG9sYXRpb24obWV0YWRhdGE6IFJlYWN0aXZlQ29udGVudFdpdGhJbnRlcnBvbGF0aW9uKSB7XG4gIHJldHVybiB7XG4gICAgY2xhc3NOYW1lOiBtZXRhZGF0YS5jb250ZW50Q2xhc3MgfHwgJycsXG4gICAga2V5OiBtZXRhZGF0YS5jb250ZW50S2V5IHx8ICcnLFxuICAgIGZhbGxiYWNrOiBtZXRhZGF0YS5jb250ZW50RmFsbGJhY2ssXG4gICAgaW50ZXJwb2xhdGlvbjogbWV0YWRhdGEuY29udGVudEludGVycG9sYXRpb24sXG4gIH07XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGdldCByZWFjdGl2ZSBjb250ZW50IHdpdGggaW50ZXJwb2xhdGlvbiB1c2luZyBMYW5nU2VydmljZS5cbiAqIFRoaXMgcHJvdmlkZXMgYSB1bmlmaWVkIHdheSB0byBnZXQgcmVhY3RpdmUsIGludGVycG9sYXRlZCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBsYW5nU2VydmljZSAtIFRoZSBMYW5nU2VydmljZSBpbnN0YW5jZVxuICogQHBhcmFtIG1ldGFkYXRhIC0gQ29tcG9uZW50IG1ldGFkYXRhIHdpdGggaW50ZXJwb2xhdGlvblxuICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGludGVycG9sYXRlZCBjb250ZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbnRlbnQkID0gZnJvbUNvbnRlbnRXaXRoSW50ZXJwb2xhdGlvbih0aGlzLmxhbmdTZXJ2aWNlLCB7XG4gKiAgIGNvbnRlbnRDbGFzczogJ015Q29tcG9uZW50JyxcbiAqICAgY29udGVudEtleTogJ2dyZWV0aW5nJyxcbiAqICAgY29udGVudEludGVycG9sYXRpb246IHsgbmFtZTogJ1dvcmxkJyB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUNvbnRlbnRXaXRoSW50ZXJwb2xhdGlvbihcbiAgbGFuZ1NlcnZpY2U6IGFueSwgLy8gTGFuZ1NlcnZpY2UgdHlwZSB3b3VsZCBjYXVzZSBjaXJjdWxhciBkZXBlbmRlbmN5XG4gIG1ldGFkYXRhOiBSZWFjdGl2ZUNvbnRlbnRXaXRoSW50ZXJwb2xhdGlvblxuKTogYW55IHtcbiAgLy8gT2JzZXJ2YWJsZTxzdHJpbmc+IGJ1dCBhdm9pZGluZyBpbXBvcnRcbiAgY29uc3QgY29uZmlnID0gZXh0cmFjdENvbnRlbnRDb25maWdXaXRoSW50ZXJwb2xhdGlvbihtZXRhZGF0YSk7XG5cbiAgaWYgKCFjb25maWcuY2xhc3NOYW1lIHx8ICFjb25maWcua2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmcm9tQ29udGVudFdpdGhJbnRlcnBvbGF0aW9uIHJlcXVpcmVzIGJvdGggY29udGVudENsYXNzIGFuZCBjb250ZW50S2V5Jyk7XG4gIH1cblxuICByZXR1cm4gbGFuZ1NlcnZpY2UuZ2V0Q29udGVudFdpdGhJbnRlcnBvbGF0aW9uKFxuICAgIGNvbmZpZy5jbGFzc05hbWUsXG4gICAgY29uZmlnLmtleSxcbiAgICBjb25maWcuaW50ZXJwb2xhdGlvbixcbiAgICBjb25maWcuZmFsbGJhY2tcbiAgKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHN0YXRpYyBjb250ZW50IHdpdGggaW50ZXJwb2xhdGlvbi5cbiAqIFRoaXMgcHJvdmlkZXMgaW50ZXJwb2xhdGlvbiBmb3Igc3RhdGljIGNvbnRlbnQgc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFN0YXRpYyBjb250ZW50IHN0cmluZ1xuICogQHBhcmFtIGludGVycG9sYXRpb25EYXRhIC0gVmFsdWVzIHRvIGludGVycG9sYXRlXG4gKiBAcmV0dXJucyBJbnRlcnBvbGF0ZWQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnBvbGF0ZVN0YXRpY0NvbnRlbnQoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgaW50ZXJwb2xhdGlvbkRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+XG4pOiBzdHJpbmcge1xuICByZXR1cm4gaW50ZXJwb2xhdGVDb250ZW50KGNvbnRlbnQsIGludGVycG9sYXRpb25EYXRhKTtcbn1cbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -90,8 +90,6 @@ export * from './lib/components/organisms/article/types';
|
|
|
90
90
|
export * from './lib/components/templates/layout/layout.component';
|
|
91
91
|
export * from './lib/components/templates/simple/simple.component';
|
|
92
92
|
export * from './lib/components/templates/simple/types';
|
|
93
|
-
export * from './lib/services/content-loader.service';
|
|
94
|
-
export * from './lib/services/content.service';
|
|
95
93
|
export * from './lib/services/download.service';
|
|
96
94
|
export * from './lib/services/icons.service';
|
|
97
95
|
export * from './lib/services/in-app-browser.service';
|
|
@@ -109,7 +107,8 @@ export * from './lib/shared/pipes/process-links.pipe';
|
|
|
109
107
|
export * from './lib/shared/utils/content';
|
|
110
108
|
export * from './lib/shared/utils/dom';
|
|
111
109
|
export * from './lib/shared/utils/form-defaults';
|
|
112
|
-
|
|
110
|
+
// Export specific functions from simple-content to avoid conflicts
|
|
111
|
+
export { createReactiveContentMetadata, extractContentConfig, extractContentConfigWithInterpolation, interpolateStaticContent, shouldUseReactiveContent, shouldUseReactiveContentWithInterpolation, } from './lib/shared/utils/simple-content';
|
|
113
112
|
export * from './lib/shared/utils/styles';
|
|
114
113
|
export * from './lib/shared/utils/text';
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFj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QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB2YWx0ZWNoLWNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvYXZhdGFyL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvYm94L2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9ib3gvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2J1dHRvbi9mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2Rpc3BsYXkvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvZGl2aWRlci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2hyZWYvaHJlZi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9ocmVmL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2ljb24vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9pbWFnZS90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL3Byb2dyZXNzLWJhci9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvcHJvZ3Jlc3MtYmFyL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL3RleHQvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy90aXRsZS90eXBlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FsZXJ0LWJveC9hbGVydC1ib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2FsZXJ0LWJveC90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9idXR0b24tZ3JvdXAvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jYXJkL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoZWNrLWlucHV0L2NoZWNrLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jb21tZW50LWlucHV0L2NvbW1lbnQtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtbG9hZGVyL2NvbnRlbnQtbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jb250ZW50LWxvYWRlci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2VtYWlsLWlucHV0L2VtYWlsLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9leHBhbmRhYmxlLXRleHQvZXhwYW5kYWJsZS10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9leHBhbmRhYmxlLXRleHQvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9oaW50L2hpbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2hvdXItaW5wdXQvaG91ci1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xheWVyZWQtY2FyZC9sYXllcmVkLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xheWVyZWQtY2FyZC90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9saW5rL2xpbmsuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xpbmsvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbGlua3MtY2FrZS9saW5rcy1jYWtlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9saW5rcy1jYWtlL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL25vdGVzLWJveC9ub3Rlcy1ib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL25vdGVzLWJveC90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItaW5wdXQvbnVtYmVyLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wYXNzd29yZC1pbnB1dC9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGluLWlucHV0L3Bpbi1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcG9wb3Zlci1zZWxlY3Rvci9wb3BvdmVyLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wb3BvdmVyLXNlbGVjdG9yL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Byb2dyZXNzLXN0YXR1cy9wcm9ncmVzcy1zdGF0dXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Byb2dyZXNzLXN0YXR1cy90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wcm9tcHRlci9wcm9tcHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcHJvbXB0ZXIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcmFkaW8taW5wdXQvcmFkaW8taW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3NlYXJjaGJhci9zZWFyY2hiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3NlbGVjdC1zZWFyY2gvc2VsZWN0LXNlYXJjaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvdGV4dC1pbnB1dC90ZXh0LWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy90aXRsZS1ibG9jay90aXRsZS1ibG9jay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvdGl0bGUtYmxvY2svdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcnRpY2xlL2FydGljbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2FydGljbGUvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYmFubmVyL2Jhbm5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYmFubmVyL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Zvcm0vZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9mb3JtL2Zvcm0tZm9vdGVyL2Zvcm0tZm9vdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2hlYWRlci9oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2hlYWRlci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9pdGVtLWxpc3QvaXRlbS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9pdGVtLWxpc3QvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbm8tY29udGVudC9uby1jb250ZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9uby1jb250ZW50L3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvdG9vbGJhci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy93aXphcmQvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvd2l6YXJkL3dpemFyZC1mb290ZXIvd2l6YXJkLWZvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvd2l6YXJkL3dpemFyZC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcnRpY2xlL2FydGljbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2FydGljbGUvdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9zaW1wbGUvc2ltcGxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RlbXBsYXRlcy9zaW1wbGUvdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jb250ZW50LWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9kb3dubG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaW4tYXBwLWJyb3dzZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2NvbnRlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbGFuZy1wcm92aWRlci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9saW5rLXByb2Nlc3Nvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3R5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvcGlwZXMvcHJvY2Vzcy1saW5rcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC91dGlscy9jb250ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC91dGlscy9kb20nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3V0aWxzL2Zvcm0tZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3V0aWxzL3JlYWN0aXZlLWNvbnRlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvdXRpbHMvdGV4dCc7XG5cbiJdfQ==
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFj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QUFNLG1DQUFtQyxDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdmFsdGVjaC1jb21wb25lbnRzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2F2YXRhci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2JveC9ib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvYm94L3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9idXR0b24vZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9kaXNwbGF5L3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2RpdmlkZXIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9ocmVmL2hyZWYuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvaHJlZi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL2ljb24vaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9pY29uL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvaW1hZ2UvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL3Byb2dyZXNzLWJhci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdG9tcy90ZXh0L3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXRvbXMvdGl0bGUvdHlwZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9hbGVydC1ib3gvYWxlcnQtYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9hbGVydC1ib3gvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvYnV0dG9uLWdyb3VwL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NhcmQvY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY2FyZC90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jaGVjay1pbnB1dC9jaGVjay1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY29tbWVudC1pbnB1dC9jb21tZW50LWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jb250ZW50LWxvYWRlci9jb250ZW50LWxvYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY29udGVudC1sb2FkZXIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9lbWFpbC1pbnB1dC9lbWFpbC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZXhwYW5kYWJsZS10ZXh0L2V4cGFuZGFibGUtdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZXhwYW5kYWJsZS10ZXh0L3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZpbGUtaW5wdXQvZmlsZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvaGludC9oaW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9ob3VyLWlucHV0L2hvdXItaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYXllcmVkLWNhcmQvbGF5ZXJlZC1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYXllcmVkLWNhcmQvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbGluay9saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9saW5rL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2xpbmtzLWNha2UvbGlua3MtY2FrZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbGlua3MtY2FrZS90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9ub3Rlcy1ib3gvbm90ZXMtYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9ub3Rlcy1ib3gvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Bpbi1pbnB1dC9waW4taW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3BvcG92ZXItc2VsZWN0b3IvcG9wb3Zlci1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wcm9ncmVzcy1zdGF0dXMvcHJvZ3Jlc3Mtc3RhdHVzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9wcm9ncmVzcy1zdGF0dXMvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcHJvbXB0ZXIvcHJvbXB0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Byb21wdGVyL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3JhZGlvLWlucHV0L3JhZGlvLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWFyY2hiYXIvc2VhcmNoYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWxlY3QtaW5wdXQvc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvdGl0bGUtYmxvY2svdGl0bGUtYmxvY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3RpdGxlLWJsb2NrL3R5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYXJ0aWNsZS9hcnRpY2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcnRpY2xlL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Jhbm5lci9iYW5uZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Jhbm5lci90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9mb3JtL2ZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZm9ybS9mb3JtLWZvb3Rlci9mb3JtLWZvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9oZWFkZXIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvaXRlbS1saXN0L2l0ZW0tbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvaXRlbS1saXN0L3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL25vLWNvbnRlbnQvbm8tY29udGVudC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbm8tY29udGVudC90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rvb2xiYXIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvd2l6YXJkL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3dpemFyZC93aXphcmQtZm9vdGVyL3dpemFyZC1mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3dpemFyZC93aXphcmQuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYXJ0aWNsZS9hcnRpY2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcnRpY2xlL3R5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvbGF5b3V0L2xheW91dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2ltcGxlL3NpbXBsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvc2ltcGxlL3R5cGVzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZG93bmxvYWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9pY29ucy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2luLWFwcC1icm93c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbGFuZy1wcm92aWRlci9jb250ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbGluay1wcm9jZXNzb3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90eXBlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3BpcGVzL3Byb2Nlc3MtbGlua3MucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvdXRpbHMvY29udGVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvdXRpbHMvZG9tJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC91dGlscy9mb3JtLWRlZmF1bHRzJztcbi8vIEV4cG9ydCBzcGVjaWZpYyBmdW5jdGlvbnMgZnJvbSBzaW1wbGUtY29udGVudCB0byBhdm9pZCBjb25mbGljdHNcbmV4cG9ydCB7XG4gIGNyZWF0ZVJlYWN0aXZlQ29udGVudE1ldGFkYXRhLFxuICBleHRyYWN0Q29udGVudENvbmZpZyxcbiAgZXh0cmFjdENvbnRlbnRDb25maWdXaXRoSW50ZXJwb2xhdGlvbixcbiAgaW50ZXJwb2xhdGVTdGF0aWNDb250ZW50LFxuICBSZWFjdGl2ZUNvbnRlbnRNZXRhZGF0YSxcbiAgUmVhY3RpdmVDb250ZW50V2l0aEludGVycG9sYXRpb24sXG4gIFJlYWN0aXZlVGV4dE1ldGFkYXRhLFxuICBzaG91bGRVc2VSZWFjdGl2ZUNvbnRlbnQsXG4gIHNob3VsZFVzZVJlYWN0aXZlQ29udGVudFdpdGhJbnRlcnBvbGF0aW9uLFxufSBmcm9tICcuL2xpYi9zaGFyZWQvdXRpbHMvc2ltcGxlLWNvbnRlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvdXRpbHMvdGV4dCc7XG4iXX0=
|