valtech-components 4.0.153 → 4.0.155
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/organisms/api-keys-view/api-keys.routes.mjs +3 -1
- package/esm2022/lib/components/organisms/article/article.component.mjs +8 -6
- package/esm2022/lib/components/organisms/permissions-view/permissions.routes.mjs +3 -1
- package/esm2022/lib/services/auth/guards.mjs +48 -1
- package/esm2022/lib/services/auth/index.mjs +2 -2
- package/esm2022/lib/services/markdown-article/markdown-article-parser.mjs +20 -11
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +76 -17
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/article/article.component.d.ts +3 -1
- package/lib/services/auth/guards.d.ts +36 -0
- package/lib/services/auth/index.d.ts +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/services/firebase/firebase-messaging-sw.js +0 -145
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { rbacGuard } from '../../../services/auth/guards';
|
|
1
2
|
import { ApiKeysViewComponent } from './api-keys-view.component';
|
|
2
3
|
/**
|
|
3
4
|
* Helper para montar la vista de Client API Keys (`val-api-keys-view`) como ruta
|
|
@@ -20,8 +21,9 @@ export function provideValtechApiKeysRoutes(opts) {
|
|
|
20
21
|
{
|
|
21
22
|
path: opts?.path ?? 'api-keys',
|
|
22
23
|
component: ApiKeysViewComponent,
|
|
24
|
+
canActivate: [rbacGuard('api-keys:read')],
|
|
23
25
|
data: { apiKeysConfig: opts?.config },
|
|
24
26
|
},
|
|
25
27
|
];
|
|
26
28
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hcGkta2V5cy12aWV3L2FwaS1rZXlzLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHakU7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLElBRzNDO0lBQ0MsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksVUFBVTtZQUM5QixTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUN0QztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgcmJhY0d1YXJkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9ndWFyZHMnO1xuaW1wb3J0IHsgQXBpS2V5c1ZpZXdDb21wb25lbnQgfSBmcm9tICcuL2FwaS1rZXlzLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaUtleXNWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogSGVscGVyIHBhcmEgbW9udGFyIGxhIHZpc3RhIGRlIENsaWVudCBBUEkgS2V5cyAoYHZhbC1hcGkta2V5cy12aWV3YCkgY29tbyBydXRhXG4gKiBlbiB1bmEgYXBwIGRlbCBmYWN0b3J5LiBFbCBgY29uZmlnYCBzZSBwYXNhIHBvciByb3V0ZSBgZGF0YWAgKGBhcGlLZXlzQ29uZmlnYCkgeVxuICogZWwgY29tcG9uZW50ZSBsbyBsZWUgY29tbyBmYWxsYmFjayBkZSBzdSBgQElucHV0KCkgY29uZmlnYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIHNldHRpbmdzLnJvdXRlcy50c1xuICogaW1wb3J0IHsgcHJvdmlkZVZhbHRlY2hBcGlLZXlzUm91dGVzIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBleHBvcnQgY29uc3Qgc2V0dGluZ3NSb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgLi4ucHJvdmlkZVZhbHRlY2hBcGlLZXlzUm91dGVzKCksICAgICAgICAgICAgICAgICAgLy8g4oaSIC9hcHAvc2V0dGluZ3MvYXBpLWtleXNcbiAqICAgLy8gLi4ucHJvdmlkZVZhbHRlY2hBcGlLZXlzUm91dGVzKHsgcGF0aDogJ2ludGVncmF0aW9ucy9rZXlzJyB9KSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVWYWx0ZWNoQXBpS2V5c1JvdXRlcyhvcHRzPzoge1xuICBwYXRoPzogc3RyaW5nO1xuICBjb25maWc/OiBBcGlLZXlzVmlld0NvbmZpZztcbn0pOiBSb3V0ZXMge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhdGg6IG9wdHM/LnBhdGggPz8gJ2FwaS1rZXlzJyxcbiAgICAgIGNvbXBvbmVudDogQXBpS2V5c1ZpZXdDb21wb25lbnQsXG4gICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgnYXBpLWtleXM6cmVhZCcpXSxcbiAgICAgIGRhdGE6IHsgYXBpS2V5c0NvbmZpZzogb3B0cz8uY29uZmlnIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
|
|
@@ -8,6 +8,7 @@ import { TitleComponent } from '../../atoms/title/title.component';
|
|
|
8
8
|
import { CodeDisplayComponent } from '../../molecules/code-display/code-display.component';
|
|
9
9
|
import { NotesBoxComponent } from '../../molecules/notes-box/notes-box.component';
|
|
10
10
|
import { PlainCodeBoxComponent } from '../../molecules/plain-code-box/plain-code-box.component';
|
|
11
|
+
import { ProcessLinksPipe } from '../../../shared/pipes/process-links.pipe';
|
|
11
12
|
import { ARTICLE_SPACING, } from './types';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "@angular/common";
|
|
@@ -315,7 +316,7 @@ export class ArticleComponent {
|
|
|
315
316
|
<span *ngIf="getListElement(element).props.listType === 'checklist'" class="val-article__list-check"
|
|
316
317
|
>✓</span
|
|
317
318
|
>
|
|
318
|
-
<span [innerHTML]="item.text"></span>
|
|
319
|
+
<span [innerHTML]="item.text | processLinks"></span>
|
|
319
320
|
</li>
|
|
320
321
|
</ul>
|
|
321
322
|
<ol
|
|
@@ -323,7 +324,7 @@ export class ArticleComponent {
|
|
|
323
324
|
class="val-article__list val-article__list--ordered"
|
|
324
325
|
>
|
|
325
326
|
<li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
|
|
326
|
-
<span [innerHTML]="item.text"></span>
|
|
327
|
+
<span [innerHTML]="item.text | processLinks"></span>
|
|
327
328
|
</li>
|
|
328
329
|
</ol>
|
|
329
330
|
</ng-container>
|
|
@@ -394,7 +395,7 @@ export class ArticleComponent {
|
|
|
394
395
|
</ng-container>
|
|
395
396
|
</div>
|
|
396
397
|
</article>
|
|
397
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-article{width:100%;margin:0 auto;line-height:1.6;color:var(--ion-color-dark, #1f2937);display:block;position:static}.val-article--centered{margin:0 auto}.val-article--light{background-color:var(--ion-color-light, #ffffff);color:var(--ion-color-dark, #1f2937)}.val-article--dark{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article__element{position:relative}.val-article__element:last-child{margin-bottom:0!important}.val-article__spacing-top--none{margin-top:0!important}.val-article__spacing-top--small{margin-top:.5rem!important}.val-article__spacing-top--medium{margin-top:1rem!important}.val-article__spacing-top--large{margin-top:1.5rem!important}.val-article__spacing-top--xlarge{margin-top:2.5rem!important}.val-article__spacing-bottom--none{margin-bottom:0!important}.val-article__spacing-bottom--small{margin-bottom:.5rem!important}.val-article__spacing-bottom--medium{margin-bottom:1rem!important}.val-article__spacing-bottom--large{margin-bottom:1.5rem!important}.val-article__spacing-bottom--xlarge{margin-bottom:2.5rem!important}.val-article__spacing-horizontal--none{margin-left:0!important;margin-right:0!important}.val-article__spacing-horizontal--small{margin-left:.5rem!important;margin-right:.5rem!important}.val-article__spacing-horizontal--medium{margin-left:1rem!important;margin-right:1rem!important}.val-article__spacing-horizontal--large{margin-left:1.5rem!important;margin-right:1.5rem!important}.val-article__spacing-horizontal--xlarge{margin-left:2.5rem!important;margin-right:2.5rem!important}.val-article__quote{border-left:4px solid #0969da;padding:1rem;background-color:var(--ion-color-light-shade, #f8f9fa);border-radius:0 8px 8px 0;font-style:italic}.val-article__quote-content{margin-bottom:.5rem;font-size:1.1em}.val-article__quote-author{font-size:.9em;color:var(--ion-color-medium, #6c757d);font-style:normal;font-weight:500;text-align:right}.val-article__quote-source{font-weight:400;opacity:.8}.val-article__highlight{padding:1rem;background-color:var(--ion-color-warning-tint, #fff3cd);border:1px solid var(--ion-color-warning, #ffc107);border-radius:4px}.val-article__highlight--rounded{border-radius:12px}.val-article__code{border-radius:8px;overflow:hidden;border:1px solid #e1e5e9}.val-article__code-language{background-color:var(--ion-color-medium-tint, #f8f9fa);padding:.5rem 1rem;font-size:.875em;font-weight:500;color:var(--ion-color-dark, #495057);border-bottom:1px solid #e1e5e9;text-transform:uppercase;letter-spacing:.5px}.val-article__code-content{background-color:#f6f8fa;color:#24292e;padding:1rem;margin:0;overflow-x:auto;font-family:SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875em;line-height:1.5}.val-article__code-content code{background:none;padding:0;font-size:inherit;color:inherit}.val-article__code-content--dark{background-color:#161b22;color:#f0f6fc}.val-article__list{padding-left:1.5rem}.val-article__list--ordered{list-style-type:decimal}.val-article__list-item{margin-bottom:.5rem;line-height:1.6;position:relative}.val-article__list-item:last-child{margin-bottom:0}.val-article__list-check{color:var(--ion-color-success, #28a745);font-weight:700;margin-right:.5rem;position:absolute;left:-1.5rem}.val-article .val-article__list:has(.val-article__list-check){list-style:none;padding-left:1rem}.val-article__button-container--left{text-align:left}.val-article__button-container--center{text-align:center}.val-article__button-container--right{text-align:right}.val-article__separator{text-align:center}.val-article__separator-line{border:none;height:1px;background-color:#d0d7de;margin:0}.val-article__separator-line--thin{height:1px}.val-article__separator-line--thick{height:3px}.val-article__separator-dots{color:#d0d7de;font-size:1.5em;letter-spacing:.5em;-webkit-user-select:none;user-select:none}.val-article__separator-space{height:0}.val-article__image{text-align:center}.val-article__image--left{text-align:left}.val-article__image--center{text-align:center}.val-article__image--right{text-align:right}.val-article__image-content{max-width:100%;height:auto;border-radius:4px;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease}.val-article__image-content:hover{transform:scale(1.02)}.val-article__image-content--rounded{border-radius:12px}.val-article__image-caption{margin-top:.5rem;font-size:.875em;color:var(--ion-color-medium, #6c757d);font-style:italic;text-align:center}.val-article__video{text-align:center}.val-article__video-content{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px #00000026}.val-article__video-title{margin-top:.5rem;font-size:.9em;color:var(--ion-color-medium, #6c757d);font-weight:500}.val-article__custom *{max-width:100%}@media (max-width: 768px){.val-article__code-content{font-size:.8em;padding:.5rem}.val-article__image-content:hover{transform:none}.val-article__quote,.val-article__highlight{padding:.5rem}}:host-context(body.dark) .val-article--auto,:host-context(.dark) .val-article--auto,:host-context(.ion-palette-dark) .val-article--auto,:host-context(html.ion-palette-dark) .val-article--auto,:host-context([data-theme=dark]) .val-article--auto{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}:host-context(body.dark) .val-article--auto .val-article__quote,:host-context(.dark) .val-article--auto .val-article__quote,:host-context(.ion-palette-dark) .val-article--auto .val-article__quote,:host-context(html.ion-palette-dark) .val-article--auto .val-article__quote,:host-context([data-theme=dark]) .val-article--auto .val-article__quote{background-color:#ffffff14;border-left-color:var(--ion-color-primary)}:host-context(body.dark) .val-article--auto .val-article__highlight,:host-context(.dark) .val-article--auto .val-article__highlight,:host-context(.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context(html.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context([data-theme=dark]) .val-article--auto .val-article__highlight{background-color:#ffc1071a;border-color:var(--ion-color-warning-shade, #e0a800)}:host-context(body.dark) .val-article--auto .val-article__code-content,:host-context(.dark) .val-article--auto .val-article__code-content,:host-context(.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context(html.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context([data-theme=dark]) .val-article--auto .val-article__code-content{background-color:#161b22;color:#f0f6fc}.val-article__element{animation:fadeInUp .3s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.val-article__separator-line{background-color:currentColor;opacity:.5}.val-article__quote{border-left-width:6px}}@media (prefers-reduced-motion: reduce){.val-article .val-article__element{animation:none}.val-article__image-content{transition:none}.val-article__image-content:hover{transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: CodeDisplayComponent, selector: "val-code-display", inputs: ["props"] }, { kind: "component", type: NotesBoxComponent, selector: "val-notes-box", inputs: ["props"] }, { kind: "component", type: PlainCodeBoxComponent, selector: "val-plain-code-box", inputs: ["props"] }] }); }
|
|
398
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-article{width:100%;margin:0 auto;line-height:1.6;color:var(--ion-color-dark, #1f2937);display:block;position:static}.val-article--centered{margin:0 auto}.val-article--light{background-color:var(--ion-color-light, #ffffff);color:var(--ion-color-dark, #1f2937)}.val-article--dark{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article__element{position:relative}.val-article__element:last-child{margin-bottom:0!important}.val-article__spacing-top--none{margin-top:0!important}.val-article__spacing-top--small{margin-top:.5rem!important}.val-article__spacing-top--medium{margin-top:1rem!important}.val-article__spacing-top--large{margin-top:1.5rem!important}.val-article__spacing-top--xlarge{margin-top:2.5rem!important}.val-article__spacing-bottom--none{margin-bottom:0!important}.val-article__spacing-bottom--small{margin-bottom:.5rem!important}.val-article__spacing-bottom--medium{margin-bottom:1rem!important}.val-article__spacing-bottom--large{margin-bottom:1.5rem!important}.val-article__spacing-bottom--xlarge{margin-bottom:2.5rem!important}.val-article__spacing-horizontal--none{margin-left:0!important;margin-right:0!important}.val-article__spacing-horizontal--small{margin-left:.5rem!important;margin-right:.5rem!important}.val-article__spacing-horizontal--medium{margin-left:1rem!important;margin-right:1rem!important}.val-article__spacing-horizontal--large{margin-left:1.5rem!important;margin-right:1.5rem!important}.val-article__spacing-horizontal--xlarge{margin-left:2.5rem!important;margin-right:2.5rem!important}.val-article__quote{border-left:4px solid #0969da;padding:1rem;background-color:var(--ion-color-light-shade, #f8f9fa);border-radius:0 8px 8px 0;font-style:italic}.val-article__quote-content{margin-bottom:.5rem;font-size:1.1em}.val-article__quote-author{font-size:.9em;color:var(--ion-color-medium, #6c757d);font-style:normal;font-weight:500;text-align:right}.val-article__quote-source{font-weight:400;opacity:.8}.val-article__highlight{padding:1rem;background-color:var(--ion-color-warning-tint, #fff3cd);border:1px solid var(--ion-color-warning, #ffc107);border-radius:4px}.val-article__highlight--rounded{border-radius:12px}.val-article__code{border-radius:8px;overflow:hidden;border:1px solid #e1e5e9}.val-article__code-language{background-color:var(--ion-color-medium-tint, #f8f9fa);padding:.5rem 1rem;font-size:.875em;font-weight:500;color:var(--ion-color-dark, #495057);border-bottom:1px solid #e1e5e9;text-transform:uppercase;letter-spacing:.5px}.val-article__code-content{background-color:#f6f8fa;color:#24292e;padding:1rem;margin:0;overflow-x:auto;font-family:SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875em;line-height:1.5}.val-article__code-content code{background:none;padding:0;font-size:inherit;color:inherit}.val-article__code-content--dark{background-color:#161b22;color:#f0f6fc}.val-article__list{padding-left:1.5rem}.val-article__list--ordered{list-style-type:decimal}.val-article__list-item{margin-bottom:.5rem;line-height:1.6;position:relative}.val-article__list-item:last-child{margin-bottom:0}.val-article__list-check{color:var(--ion-color-success, #28a745);font-weight:700;margin-right:.5rem;position:absolute;left:-1.5rem}.val-article .val-article__list:has(.val-article__list-check){list-style:none;padding-left:1rem}.val-article__button-container--left{text-align:left}.val-article__button-container--center{text-align:center}.val-article__button-container--right{text-align:right}.val-article__separator{text-align:center}.val-article__separator-line{border:none;height:1px;background-color:#d0d7de;margin:0}.val-article__separator-line--thin{height:1px}.val-article__separator-line--thick{height:3px}.val-article__separator-dots{color:#d0d7de;font-size:1.5em;letter-spacing:.5em;-webkit-user-select:none;user-select:none}.val-article__separator-space{height:0}.val-article__image{text-align:center}.val-article__image--left{text-align:left}.val-article__image--center{text-align:center}.val-article__image--right{text-align:right}.val-article__image-content{max-width:100%;height:auto;border-radius:4px;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease}.val-article__image-content:hover{transform:scale(1.02)}.val-article__image-content--rounded{border-radius:12px}.val-article__image-caption{margin-top:.5rem;font-size:.875em;color:var(--ion-color-medium, #6c757d);font-style:italic;text-align:center}.val-article__video{text-align:center}.val-article__video-content{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px #00000026}.val-article__video-title{margin-top:.5rem;font-size:.9em;color:var(--ion-color-medium, #6c757d);font-weight:500}.val-article__custom *{max-width:100%}@media (max-width: 768px){.val-article__code-content{font-size:.8em;padding:.5rem}.val-article__image-content:hover{transform:none}.val-article__quote,.val-article__highlight{padding:.5rem}}:host-context(body.dark) .val-article--auto,:host-context(.dark) .val-article--auto,:host-context(.ion-palette-dark) .val-article--auto,:host-context(html.ion-palette-dark) .val-article--auto,:host-context([data-theme=dark]) .val-article--auto{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}:host-context(body.dark) .val-article--auto .val-article__quote,:host-context(.dark) .val-article--auto .val-article__quote,:host-context(.ion-palette-dark) .val-article--auto .val-article__quote,:host-context(html.ion-palette-dark) .val-article--auto .val-article__quote,:host-context([data-theme=dark]) .val-article--auto .val-article__quote{background-color:#ffffff14;border-left-color:var(--ion-color-primary)}:host-context(body.dark) .val-article--auto .val-article__highlight,:host-context(.dark) .val-article--auto .val-article__highlight,:host-context(.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context(html.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context([data-theme=dark]) .val-article--auto .val-article__highlight{background-color:#ffc1071a;border-color:var(--ion-color-warning-shade, #e0a800)}:host-context(body.dark) .val-article--auto .val-article__code-content,:host-context(.dark) .val-article--auto .val-article__code-content,:host-context(.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context(html.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context([data-theme=dark]) .val-article--auto .val-article__code-content{background-color:#161b22;color:#f0f6fc}.val-article__element{animation:fadeInUp .3s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.val-article__separator-line{background-color:currentColor;opacity:.5}.val-article__quote{border-left-width:6px}}@media (prefers-reduced-motion: reduce){.val-article .val-article__element{animation:none}.val-article__image-content{transition:none}.val-article__image-content:hover{transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: CodeDisplayComponent, selector: "val-code-display", inputs: ["props"] }, { kind: "component", type: NotesBoxComponent, selector: "val-notes-box", inputs: ["props"] }, { kind: "component", type: PlainCodeBoxComponent, selector: "val-plain-code-box", inputs: ["props"] }, { kind: "pipe", type: ProcessLinksPipe, name: "processLinks" }] }); }
|
|
398
399
|
}
|
|
399
400
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ArticleComponent, decorators: [{
|
|
400
401
|
type: Component,
|
|
@@ -408,6 +409,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
408
409
|
CodeDisplayComponent,
|
|
409
410
|
NotesBoxComponent,
|
|
410
411
|
PlainCodeBoxComponent,
|
|
412
|
+
ProcessLinksPipe,
|
|
411
413
|
], template: `
|
|
412
414
|
<article
|
|
413
415
|
class="val-article"
|
|
@@ -492,7 +494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
492
494
|
<span *ngIf="getListElement(element).props.listType === 'checklist'" class="val-article__list-check"
|
|
493
495
|
>✓</span
|
|
494
496
|
>
|
|
495
|
-
<span [innerHTML]="item.text"></span>
|
|
497
|
+
<span [innerHTML]="item.text | processLinks"></span>
|
|
496
498
|
</li>
|
|
497
499
|
</ul>
|
|
498
500
|
<ol
|
|
@@ -500,7 +502,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
500
502
|
class="val-article__list val-article__list--ordered"
|
|
501
503
|
>
|
|
502
504
|
<li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
|
|
503
|
-
<span [innerHTML]="item.text"></span>
|
|
505
|
+
<span [innerHTML]="item.text | processLinks"></span>
|
|
504
506
|
</li>
|
|
505
507
|
</ol>
|
|
506
508
|
</ng-container>
|
|
@@ -575,4 +577,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
575
577
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
576
578
|
type: Input
|
|
577
579
|
}] } });
|
|
578
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2FydGljbGUvYXJ0aWNsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUUzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUVoRyxPQUFPLEVBQ0wsZUFBZSxHQW1CaEIsTUFBTSxTQUFTLENBQUM7OztBQXVMakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBUTNCLGdCQUFlLENBQUM7SUFFaEIsUUFBUTtRQUNOLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFD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QztJQUNKLENBQUM7K0dBeE9VLGdCQUFnQjttR0FBaEIsZ0JBQWdCLG1HQTlMakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtS1Qsb21UQTdLQyxZQUFZLG1iQUNaLGdCQUFnQiwyRUFDaEIsY0FBYyx5RUFDZCxhQUFhLHdFQUNiLGVBQWUsMEdBQ2YsY0FBYyx5RUFDZCxvQkFBb0IsZ0ZBQ3BCLGlCQUFpQiw2RUFDakIscUJBQXFCOzs0RkFnTVosZ0JBQWdCO2tCQTVNNUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixxQkFBcUI7cUJBQ3RCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtS1Q7d0RBaUNELEtBQUs7c0JBREosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEltYWdlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy9pbWFnZS90eXBlcyc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2RlRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb2RlLWRpc3BsYXkvY29kZS1kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2RlRGlzcGxheU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvZGUtZGlzcGxheS90eXBlcyc7XG5pbXBvcnQgeyBOb3Rlc0JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9ub3Rlcy1ib3gvbm90ZXMtYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3Rlc0JveE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL25vdGVzLWJveC90eXBlcyc7XG5pbXBvcnQgeyBQbGFpbkNvZGVCb3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGxhaW4tY29kZS1ib3gvcGxhaW4tY29kZS1ib3guY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWluQ29kZUJveE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3BsYWluLWNvZGUtYm94L3R5cGVzJztcbmltcG9ydCB7XG4gIEFSVElDTEVfU1BBQ0lORyxcbiAgQXJ0aWNsZUJ1dHRvbkVsZW1lbnQsXG4gIEFydGljbGVDb2RlRWxlbWVudCxcbiAgQXJ0aWNsZUNvbW1hbmRFbGVtZW50LFxuICBBcnRpY2xlQ29udGVudFR5cGUsXG4gIEFydGljbGVDdXN0b21FbGVtZW50LFxuICBBcnRpY2xlRWxlbWVudCxcbiAgQXJ0aWNsZUhpZ2hsaWdodEVsZW1lbnQsXG4gIEFydGljbGVJbWFnZUVsZW1lbnQsXG4gIEFydGljbGVMaXN0RWxlbWVudCxcbiAgQXJ0aWNsZU1ldGFkYXRhLFxuICBBcnRpY2xlTm90ZUVsZW1lbnQsXG4gIEFydGljbGVRdW90ZUVsZW1lbnQsXG4gIEFydGljbGVTZXBhcmF0b3JFbGVtZW50LFxuICBBcnRpY2xlU3BhY2luZyxcbiAgQXJ0aWNsZVN1YnRpdGxlRWxlbWVudCxcbiAgQXJ0aWNsZVRleHRFbGVtZW50LFxuICBBcnRpY2xlVGl0bGVFbGVtZW50LFxuICBBcnRpY2xlVmlkZW9FbGVtZW50LFxufSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWFydGljbGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgSW1hZ2VDb21wb25lbnQsXG4gICAgQ29kZURpc3BsYXlDb21wb25lbnQsXG4gICAgTm90ZXNCb3hDb21wb25lbnQsXG4gICAgUGxhaW5Db2RlQm94Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxhcnRpY2xlXG4gICAgICBjbGFzcz1cInZhbC1hcnRpY2xlXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICd2YWwtYXJ0aWNsZS0tY2VudGVyZWQnOiBwcm9wcy5jZW50ZXJlZCxcbiAgICAgICAgJ3ZhbC1hcnRpY2xlLS1saWdodCc6IHByb3BzLnRoZW1lID09PSAnbGlnaHQnLFxuICAgICAgICAndmFsLWFydGljbGUtLWRhcmsnOiBwcm9wcy50aGVtZSA9PT0gJ2RhcmsnLFxuICAgICAgfVwiXG4gICAgICBbc3R5bGUubWF4LXdpZHRoXT1cInByb3BzLm1heFdpZHRoXCJcbiAgICAgIFtuZ1N0eWxlXT1cImdldENvbnRhaW5lclN0eWxlcygpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHByb3BzLmVsZW1lbnRzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICBjbGFzcz1cInZhbC1hcnRpY2xlX19lbGVtZW50XCJcbiAgICAgICAgW2NsYXNzXT1cImVsZW1lbnQuY3NzQ2xhc3NcIlxuICAgICAgICBbbmdDbGFzc109XCJnZXRFbGVtZW50U3BhY2luZ0NsYXNzKGVsZW1lbnQpXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZWxlbWVudC52aXNpYmxlID09PSBmYWxzZSA/ICdub25lJyA6ICdibG9jaydcIlxuICAgICAgPlxuICAgICAgICA8IS0tIFTDrXR1bG8gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICd0aXRsZSdcIj5cbiAgICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cImdldFRpdGxlRWxlbWVudChlbGVtZW50KS5wcm9wc1wiPjwvdmFsLWRpc3BsYXk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gU3VidMOtdHVsbyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cImdldFN1YnRpdGxlRWxlbWVudChlbGVtZW50KS5wcm9wc1wiPjwvdmFsLXRpdGxlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFRleHRvL1DDoXJyYWZvIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSAndGV4dCcgfHwgZWxlbWVudC50eXBlID09PSAncGFyYWdyYXBoJ1wiPlxuICAgICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwiZ2V0VGV4dEVsZW1lbnQoZWxlbWVudCkucHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIENpdGEgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdxdW90ZSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWFydGljbGVfX3F1b3RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWFydGljbGVfX3F1b3RlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJnZXRRdW90ZVRleHRQcm9wcyhlbGVtZW50KVwiPjwvdmFsLXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRRdW90ZUVsZW1lbnQoZWxlbWVudCkucHJvcHMuYXV0aG9yXCIgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fcXVvdGUtYXV0aG9yXCI+XG4gICAgICAgICAgICAgIOKAlCB7eyBnZXRRdW90ZUVsZW1lbnQoZWxlbWVudCkucHJvcHMuYXV0aG9yIH19XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0UXVvdGVFbGVtZW50KGVsZW1lbnQpLnByb3BzLnNvdXJjZVwiIGNsYXNzPVwidmFsLWFydGljbGVfX3F1b3RlLXNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICwge3sgZ2V0UXVvdGVFbGVtZW50KGVsZW1lbnQpLnByb3BzLnNvdXJjZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUZXh0byBkZXN0YWNhZG8gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdoaWdobGlnaHQnXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9faGlnaGxpZ2h0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3ZhbC1hcnRpY2xlX19oaWdobGlnaHQtLXJvdW5kZWQnOiBnZXRIaWdobGlnaHRFbGVtZW50KGVsZW1lbnQpLnByb3BzLnJvdW5kZWQsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEhpZ2hsaWdodENvbG9yKGVsZW1lbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cImdldEhpZ2hsaWdodFRleHRQcm9wcyhlbGVtZW50KVwiPjwvdmFsLXRleHQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQ8OzZGlnbyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2NvZGUnXCI+XG4gICAgICAgICAgPHZhbC1jb2RlLWRpc3BsYXkgW3Byb3BzXT1cImdldENvZGVEaXNwbGF5UHJvcHMoZWxlbWVudClcIj48L3ZhbC1jb2RlLWRpc3BsYXk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTm90YSBkZXN0YWNhZGEgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdub3RlJ1wiPlxuICAgICAgICAgIDx2YWwtbm90ZXMtYm94IFtwcm9wc109XCJnZXROb3RlQm94UHJvcHMoZWxlbWVudClcIj48L3ZhbC1ub3Rlcy1ib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQ29tYW5kbyBkZSB0ZXJtaW5hbCAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2NvbW1hbmQnXCI+XG4gICAgICAgICAgPHZhbC1wbGFpbi1jb2RlLWJveCBbcHJvcHNdPVwiZ2V0Q29tbWFuZFByb3BzKGVsZW1lbnQpXCI+PC92YWwtcGxhaW4tY29kZS1ib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTGlzdGEgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdsaXN0J1wiPlxuICAgICAgICAgIDx1bCAqbmdJZj1cImdldExpc3RFbGVtZW50KGVsZW1lbnQpLnByb3BzLmxpc3RUeXBlICE9PSAnb3JkZXJlZCdcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19saXN0XCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0TGlzdEVsZW1lbnQoZWxlbWVudCkucHJvcHMuaXRlbXNcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRMaXN0RWxlbWVudChlbGVtZW50KS5wcm9wcy5saXN0VHlwZSA9PT0gJ2NoZWNrbGlzdCdcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19saXN0LWNoZWNrXCJcbiAgICAgICAgICAgICAgICA+4pyTPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpdGVtLnRleHRcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPG9sXG4gICAgICAgICAgICAqbmdJZj1cImdldExpc3RFbGVtZW50KGVsZW1lbnQpLnByb3BzLmxpc3RUeXBlID09PSAnb3JkZXJlZCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fbGlzdCB2YWwtYXJ0aWNsZV9fbGlzdC0tb3JkZXJlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldExpc3RFbGVtZW50KGVsZW1lbnQpLnByb3BzLml0ZW1zXCIgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbS50ZXh0XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L29sPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEJvdMOzbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2J1dHRvbidcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZhbC1hcnRpY2xlX19idXR0b24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3ZhbC1hcnRpY2xlX19idXR0b24tY29udGFpbmVyLS1sZWZ0JzogZ2V0QnV0dG9uRWxlbWVudChlbGVtZW50KS5wcm9wcy5hbGlnbm1lbnQgPT09ICdsZWZ0JyxcbiAgICAgICAgICAgICAgJ3ZhbC1hcnRpY2xlX19idXR0b24tY29udGFpbmVyLS1jZW50ZXInOiBnZXRCdXR0b25FbGVtZW50KGVsZW1lbnQpLnByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcicsXG4gICAgICAgICAgICAgICd2YWwtYXJ0aWNsZV9fYnV0dG9uLWNvbnRhaW5lci0tcmlnaHQnOiBnZXRCdXR0b25FbGVtZW50KGVsZW1lbnQpLnByb3BzLmFsaWdubWVudCA9PT0gJ3JpZ2h0JyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJnZXRCdXR0b25Qcm9wcyhlbGVtZW50KVwiPjwvdmFsLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBTZXBhcmFkb3IgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdzZXBhcmF0b3InXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1hcnRpY2xlX19zZXBhcmF0b3JcIj5cbiAgICAgICAgICAgIDxoclxuICAgICAgICAgICAgICAqbmdJZj1cImdldFNlcGFyYXRvckVsZW1lbnQoZWxlbWVudCkucHJvcHMuc3R5bGUgPT09ICdsaW5lJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWFydGljbGVfX3NlcGFyYXRvci1saW5lXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICd2YWwtYXJ0aWNsZV9fc2VwYXJhdG9yLWxpbmUtLXRoaW4nOiBnZXRTZXBhcmF0b3JFbGVtZW50KGVsZW1lbnQpLnByb3BzLnRoaWNrbmVzcyA9PT0gJ3RoaW4nLFxuICAgICAgICAgICAgICAgICd2YWwtYXJ0aWNsZV9fc2VwYXJhdG9yLWxpbmUtLXRoaWNrJzogZ2V0U2VwYXJhdG9yRWxlbWVudChlbGVtZW50KS5wcm9wcy50aGlja25lc3MgPT09ICd0aGljaycsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRTZXBhcmF0b3JFbGVtZW50KGVsZW1lbnQpLnByb3BzLnN0eWxlID09PSAnZG90cydcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19zZXBhcmF0b3ItZG90c1wiPlxuICAgICAgICAgICAgICDigKIg4oCiIOKAolxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZ2V0U2VwYXJhdG9yRWxlbWVudChlbGVtZW50KS5wcm9wcy5zdHlsZSA9PT0gJ3NwYWNlJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWFydGljbGVfX3NlcGFyYXRvci1zcGFjZVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gSW1hZ2VuIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSAnaW1hZ2UnXCI+XG4gICAgICAgICAgPHZhbC1pbWFnZSBbcHJvcHNdPVwiZ2V0SW1hZ2VNZXRhZGF0YShlbGVtZW50KVwiPjwvdmFsLWltYWdlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFZpZGVvIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSAndmlkZW8nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1hcnRpY2xlX192aWRlb1wiPlxuICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgIFtzcmNdPVwiZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnNyY1wiXG4gICAgICAgICAgICAgIFtwb3N0ZXJdPVwiZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnBvc3RlclwiXG4gICAgICAgICAgICAgIFtjb250cm9sc109XCJnZXRWaWRlb0VsZW1lbnQoZWxlbWVudCkucHJvcHMuY29udHJvbHMgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgW2F1dG9wbGF5XT1cImdldFZpZGVvRWxlbWVudChlbGVtZW50KS5wcm9wcy5hdXRvcGxheVwiXG4gICAgICAgICAgICAgIFttdXRlZF09XCJnZXRWaWRlb0VsZW1lbnQoZWxlbWVudCkucHJvcHMubXV0ZWRcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImdldFZpZGVvRWxlbWVudChlbGVtZW50KS5wcm9wcy5tYXhXaWR0aFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWFydGljbGVfX3ZpZGVvLWNvbnRlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBUdSBuYXZlZ2Fkb3Igbm8gc29wb3J0YSBlbCBlbGVtZW50byB2aWRlby5cbiAgICAgICAgICAgIDwvdmlkZW8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnRpdGxlXCIgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fdmlkZW8tdGl0bGVcIj5cbiAgICAgICAgICAgICAge3sgZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnRpdGxlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBDb250ZW5pZG8gcGVyc29uYWxpemFkbyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2N1c3RvbSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWFydGljbGVfX2N1c3RvbVwiIFtpbm5lckhUTUxdPVwiZ2V0Q3VzdG9tRWxlbWVudChlbGVtZW50KS5wcm9wcy5odG1sQ29udGVudFwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXJ0aWNsZT5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYXJ0aWNsZS5jb21wb25lbnQuc2NzcyddLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCwgLy8gQ29tZW50YWRvIHRlbXBvcmFsbWVudGUgcGFyYSBkZWJ1Z1xufSlcbi8qKlxuICogdmFsLWFydGljbGVcbiAqXG4gKiBDb21wb25lbnRlIHBhcmEgY3JlYXIgYXJ0w61jdWxvcywgYmxvZ3MgeSBkb2N1bWVudGFjacOzbiBkZSBmb3JtYSBkZWNsYXJhdGl2YS5cbiAqIFBlcm1pdGUgY29tYmluYXIgbcO6bHRpcGxlcyBlbGVtZW50b3MgKHTDrXR1bG9zLCB0ZXh0bywgaW3DoWdlbmVzLCBjw7NkaWdvLCBldGMuKVxuICogY29uIGVzcGFjaWFkbyBhdXRvbcOhdGljbyB5IHNvcG9ydGUgbXVsdGktaWRpb21hLlxuICpcbiAqIEBleGFtcGxlIFVzbyBiw6FzaWNvOlxuICogYGBgaHRtbFxuICogPHZhbC1hcnRpY2xlIFtwcm9wc109XCJhcnRpY2xlQ29uZmlnXCI+PC92YWwtYXJ0aWNsZT5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbiBBcnRpY2xlQnVpbGRlcjpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFydGljbGVDb25maWcgPSBuZXcgQXJ0aWNsZUJ1aWxkZXIoKVxuICogICAudGl0bGUodGl0bGVQcm9wcylcbiAqICAgLnBhcmFncmFwaCh0ZXh0UHJvcHMpXG4gKiAgIC5jb2RlKCdjb25zb2xlLmxvZyhcIkhlbGxvIFdvcmxkXCIpJywgJ2phdmFzY3JpcHQnKVxuICogICAuYnVpbGQoKTtcbiAqIGBgYFxuICpcbiAqIEBpbnB1dCBwcm9wczogQXJ0aWNsZU1ldGFkYXRhIC0gQ29uZmlndXJhY2nDs24gY29tcGxldGEgZGVsIGFydMOtY3Vsb1xuICovXG5leHBvcnQgY2xhc3MgQXJ0aWNsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb25maWd1cmFjacOzbiBkZWwgYXJ0w61jdWxvXG4gICAqIEB0eXBlIHtBcnRpY2xlTWV0YWRhdGF9XG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wcyE6IEFydGljbGVNZXRhZGF0YTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gVmFsaWRhY2nDs24gYsOhc2ljYVxuICAgIGlmICghdGhpcy5wcm9wcyB8fCAhdGhpcy5wcm9wcy5lbGVtZW50cykge1xuICAgICAgY29uc29sZS53YXJuKCd2YWwtYXJ0aWNsZTogcHJvcHMuZWxlbWVudHMgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsb3MgZXN0aWxvcyBkZSBwYWRkaW5nIHBhcmEgZWwgY29udGVuZWRvciBhcnRpY2xlXG4gICAqL1xuICBnZXRDb250YWluZXJTdHlsZXMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3Qgc3BhY2luZyA9IHRoaXMucHJvcHMuY29udGFpbmVyU3BhY2luZztcbiAgICBpZiAoIXNwYWNpbmcpIHJldHVybiB7fTtcblxuICAgIGNvbnN0IHN0eWxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGNvbnN0IHNwYWNpbmdWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBub25lOiAnMCcsXG4gICAgICBzbWFsbDogJzAuNXJlbScsXG4gICAgICBtZWRpdW06ICcxcmVtJyxcbiAgICAgIGxhcmdlOiAnMS41cmVtJyxcbiAgICAgIHhsYXJnZTogJzIuNXJlbScsXG4gICAgfTtcblxuICAgIGlmIChzcGFjaW5nLnRvcCkgc3R5bGVzWydwYWRkaW5nLXRvcCddID0gc3BhY2luZ1ZhbHVlc1tzcGFjaW5nLnRvcF07XG4gICAgaWYgKHNwYWNpbmcuYm90dG9tKSBzdHlsZXNbJ3BhZGRpbmctYm90dG9tJ10gPSBzcGFjaW5nVmFsdWVzW3NwYWNpbmcuYm90dG9tXTtcbiAgICBpZiAoc3BhY2luZy5ob3Jpem9udGFsKSB7XG4gICAgICBzdHlsZXNbJ3BhZGRpbmctbGVmdCddID0gc3BhY2luZ1ZhbHVlc1tzcGFjaW5nLmhvcml6b250YWxdO1xuICAgICAgc3R5bGVzWydwYWRkaW5nLXJpZ2h0J10gPSBzcGFjaW5nVmFsdWVzW3NwYWNpbmcuaG9yaXpvbnRhbF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jacOzbiBkZSB0cmFja0J5IHBhcmEgb3B0aW1pemFyIGVsIHJlbmRlcmluZyBkZSBlbGVtZW50b3NcbiAgICovXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IGFueSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuaWQgfHwgaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCBlc3BhY2lhZG8gcG9yIGRlZmVjdG8gc2Vnw7puIGVsIHRpcG8gZGUgZWxlbWVudG9cbiAgICovXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFNwYWNpbmdGb3JUeXBlKHR5cGU6IEFydGljbGVDb250ZW50VHlwZSk6IEFydGljbGVTcGFjaW5nIHtcbiAgICBjb25zdCBzcGFjaW5nTWFwOiBSZWNvcmQ8QXJ0aWNsZUNvbnRlbnRUeXBlLCBBcnRpY2xlU3BhY2luZz4gPSB7XG4gICAgICB0aXRsZTogQVJUSUNMRV9TUEFDSU5HLlRJVExFLFxuICAgICAgc3VidGl0bGU6IEFSVElDTEVfU1BBQ0lORy5TVUJUSVRMRSxcbiAgICAgIHRleHQ6IEFSVElDTEVfU1BBQ0lORy5QQVJBR1JBUEgsXG4gICAgICBwYXJhZ3JhcGg6IEFSVElDTEVfU1BBQ0lORy5QQVJBR1JBUEgsXG4gICAgICBxdW90ZTogQVJUSUNMRV9TUEFDSU5HLlFVT1RFLFxuICAgICAgaGlnaGxpZ2h0OiBBUlRJQ0xFX1NQQUNJTkcuTUVESVVNLFxuICAgICAgY29kZTogQVJUSUNMRV9TUEFDSU5HLkNPREUsXG4gICAgICBub3RlOiBBUlRJQ0xFX1NQQUNJTkcuTk9URSxcbiAgICAgIGNvbW1hbmQ6IEFSVElDTEVfU1BBQ0lORy5DT01NQU5ELFxuICAgICAgbGlzdDogQVJUSUNMRV9TUEFDSU5HLkxJU1QsXG4gICAgICBidXR0b246IEFSVElDTEVfU1BBQ0lORy5CVVRUT04sXG4gICAgICBzZXBhcmF0b3I6IEFSVElDTEVfU1BBQ0lORy5TRVBBUkFUT1IsXG4gICAgICBpbWFnZTogQVJUSUNMRV9TUEFDSU5HLklNQUdFLFxuICAgICAgdmlkZW86IEFSVElDTEVfU1BBQ0lORy5JTUFHRSxcbiAgICAgIGN1c3RvbTogQVJUSUNMRV9TUEFDSU5HLk1FRElVTSxcbiAgICB9O1xuICAgIHJldHVybiBzcGFjaW5nTWFwW3R5cGVdIHx8IEFSVElDTEVfU1BBQ0lORy5NRURJVU07XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYXMgY2xhc2VzIENTUyBwYXJhIGVsIGVzcGFjaWFkbyBkZWwgZWxlbWVudG8uXG4gICAqIFByaW9yaWRhZDogZWxlbWVudC5zcGFjaW5nID4gZWxlbWVudFNwYWNpbmcgPiBlc3BhY2lhZG8gbmF0aXZvIHBvciB0aXBvXG4gICAqL1xuICBnZXRFbGVtZW50U3BhY2luZ0NsYXNzKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBkZWZhdWx0Rm9yVHlwZSA9IHRoaXMuZ2V0RGVmYXVsdFNwYWNpbmdGb3JUeXBlKGVsZW1lbnQudHlwZSk7XG4gICAgY29uc3QgZ2xvYmFsT3ZlcnJpZGUgPSB0aGlzLnByb3BzLmVsZW1lbnRTcGFjaW5nIHx8IHRoaXMucHJvcHMuZGVmYXVsdFNwYWNpbmc7IC8vIGJhY2t3YXJkIGNvbXBhdFxuXG4gICAgY29uc3Qgc3BhY2luZzogQXJ0aWNsZVNwYWNpbmcgPSB7XG4gICAgICB0b3A6IGVsZW1lbnQuc3BhY2luZz8udG9wID8/IGdsb2JhbE92ZXJyaWRlPy50b3AgPz8gZGVmYXVsdEZvclR5cGUudG9wLFxuICAgICAgYm90dG9tOiBlbGVtZW50LnNwYWNpbmc/LmJvdHRvbSA/PyBnbG9iYWxPdmVycmlkZT8uYm90dG9tID8/IGRlZmF1bHRGb3JUeXBlLmJvdHRvbSxcbiAgICAgIGhvcml6b250YWw6IGVsZW1lbnQuc3BhY2luZz8uaG9yaXpvbnRhbCA/PyBnbG9iYWxPdmVycmlkZT8uaG9yaXpvbnRhbCA/PyBkZWZhdWx0Rm9yVHlwZS5ob3Jpem9udGFsLFxuICAgIH07XG5cbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChzcGFjaW5nLnRvcCkgY2xhc3Nlcy5wdXNoKGB2YWwtYXJ0aWNsZV9fc3BhY2luZy10b3AtLSR7c3BhY2luZy50b3B9YCk7XG4gICAgaWYgKHNwYWNpbmcuYm90dG9tKSBjbGFzc2VzLnB1c2goYHZhbC1hcnRpY2xlX19zcGFjaW5nLWJvdHRvbS0tJHtzcGFjaW5nLmJvdHRvbX1gKTtcbiAgICBpZiAoc3BhY2luZy5ob3Jpem9udGFsKSBjbGFzc2VzLnB1c2goYHZhbC1hcnRpY2xlX19zcGFjaW5nLWhvcml6b250YWwtLSR7c3BhY2luZy5ob3Jpem9udGFsfWApO1xuXG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICB9XG5cbiAgLy8gPT09IEZVTkNJT05FUyBERSBUSVBPIFBBUkEgVFlQRVNDUklQVCA9PT1cblxuICBnZXRUaXRsZUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlVGl0bGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlVGl0bGVFbGVtZW50O1xuICB9XG5cbiAgZ2V0U3VidGl0bGVFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZVN1YnRpdGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZVN1YnRpdGxlRWxlbWVudDtcbiAgfVxuXG4gIGdldFRleHRFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZVRleHRFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlVGV4dEVsZW1lbnQ7XG4gIH1cblxuICBnZXRRdW90ZUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlUXVvdGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlUXVvdGVFbGVtZW50O1xuICB9XG5cbiAgZ2V0SGlnaGxpZ2h0RWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVIaWdobGlnaHRFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlSGlnaGxpZ2h0RWxlbWVudDtcbiAgfVxuXG4gIGdldENvZGVFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZUNvZGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlQ29kZUVsZW1lbnQ7XG4gIH1cblxuICBnZXRMaXN0RWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVMaXN0RWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZUxpc3RFbGVtZW50O1xuICB9XG5cbiAgZ2V0QnV0dG9uRWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVCdXR0b25FbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlQnV0dG9uRWxlbWVudDtcbiAgfVxuXG4gIGdldFNlcGFyYXRvckVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlU2VwYXJhdG9yRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZVNlcGFyYXRvckVsZW1lbnQ7XG4gIH1cblxuICBnZXRJbWFnZUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlSW1hZ2VFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlSW1hZ2VFbGVtZW50O1xuICB9XG5cbiAgZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZVZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZVZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldEN1c3RvbUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlQ3VzdG9tRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZUN1c3RvbUVsZW1lbnQ7XG4gIH1cblxuICAvLyA9PT0gRlVOQ0lPTkVTIEFVWElMSUFSRVMgUEFSQSBQUk9QUyA9PT1cblxuICBnZXRRdW90ZVRleHRQcm9wcyhlbGVtZW50OiBBcnRpY2xlRWxlbWVudCkge1xuICAgIGNvbnN0IHF1b3RlRWxlbWVudCA9IHRoaXMuZ2V0UXVvdGVFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHsgYXV0aG9yLCBzb3VyY2UsIC4uLnRleHRQcm9wcyB9ID0gcXVvdGVFbGVtZW50LnByb3BzO1xuICAgIHJldHVybiB0ZXh0UHJvcHM7XG4gIH1cblxuICBnZXRIaWdobGlnaHRUZXh0UHJvcHMoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpIHtcbiAgICBjb25zdCBoaWdobGlnaHRFbGVtZW50ID0gdGhpcy5nZXRIaWdobGlnaHRFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHsgYmFja2dyb3VuZENvbG9yLCByb3VuZGVkLCAuLi50ZXh0UHJvcHMgfSA9IGhpZ2hsaWdodEVsZW1lbnQucHJvcHM7XG4gICAgcmV0dXJuIHRleHRQcm9wcztcbiAgfVxuXG4gIGdldEhpZ2hsaWdodENvbG9yKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBoaWdobGlnaHRFbGVtZW50ID0gdGhpcy5nZXRIaWdobGlnaHRFbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiBoaWdobGlnaHRFbGVtZW50LnByb3BzLmJhY2tncm91bmRDb2xvciB8fCAndmFyKC0taW9uLWNvbG9yLWxpZ2h0KSc7XG4gIH1cblxuICBnZXRCdXR0b25Qcm9wcyhlbGVtZW50OiBBcnRpY2xlRWxlbWVudCkge1xuICAgIGNvbnN0IGJ1dHRvbkVsZW1lbnQgPSB0aGlzLmdldEJ1dHRvbkVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgeyBhbGlnbm1lbnQsIC4uLmJ1dHRvblByb3BzIH0gPSBidXR0b25FbGVtZW50LnByb3BzO1xuICAgIHJldHVybiBidXR0b25Qcm9wcztcbiAgfVxuXG4gIGdldENvZGVEaXNwbGF5UHJvcHMoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBDb2RlRGlzcGxheU1ldGFkYXRhIHtcbiAgICBjb25zdCBjb2RlRWxlbWVudCA9IHRoaXMuZ2V0Q29kZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IGNvZGVFbGVtZW50LnByb3BzLmNvZGUsXG4gICAgICBsYW5ndWFnZTogY29kZUVsZW1lbnQucHJvcHMubGFuZ3VhZ2UgfHwgJ3R5cGVzY3JpcHQnLFxuICAgICAgdGFiczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGdldE5vdGVFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZU5vdGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlTm90ZUVsZW1lbnQ7XG4gIH1cblxuICBnZXRDb21tYW5kRWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVDb21tYW5kRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZUNvbW1hbmRFbGVtZW50O1xuICB9XG5cbiAgZ2V0Tm90ZUJveFByb3BzKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogTm90ZXNCb3hNZXRhZGF0YSB7XG4gICAgY29uc3Qgbm90ZUVsZW1lbnQgPSB0aGlzLmdldE5vdGVFbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiBub3RlRWxlbWVudC5wcm9wcy50ZXh0LFxuICAgICAgLy8gYD8/YCAobm90IGB8fGApIHNvIGV4cGxpY2l0IGVtcHR5IHN0cmluZyBzdXBwcmVzc2VzIHRoZSBwcmVmaXguXG4gICAgICBwcmVmaXg6IG5vdGVFbGVtZW50LnByb3BzLnByZWZpeCA/PyAnTm90YTonLFxuICAgICAgY29sb3I6IG5vdGVFbGVtZW50LnByb3BzLmNvbG9yIHx8ICd3YXJuaW5nJyxcbiAgICAgIHRleHRDb2xvcjogbm90ZUVsZW1lbnQucHJvcHMudGV4dENvbG9yIHx8ICdkYXJrJyxcbiAgICAgIHNpemU6IG5vdGVFbGVtZW50LnByb3BzLnNpemUgfHwgJ21lZGl1bScsXG4gICAgICByb3VuZGVkOiBub3RlRWxlbWVudC5wcm9wcy5yb3VuZGVkID8/IHRydWUsXG4gICAgICBwYWRkaW5nOiBub3RlRWxlbWVudC5wcm9wcy5wYWRkaW5nLFxuICAgICAgYWxsb3dQYXJ0aWFsQm9sZDogbm90ZUVsZW1lbnQucHJvcHMuYWxsb3dQYXJ0aWFsQm9sZCxcbiAgICAgIHByb2Nlc3NMaW5rczogbm90ZUVsZW1lbnQucHJvcHMucHJvY2Vzc0xpbmtzLFxuICAgICAgY29tcGFjdDogbm90ZUVsZW1lbnQucHJvcHMuY29tcGFjdCxcbiAgICAgIGFsaWduOiBub3RlRWxlbWVudC5wcm9wcy5hbGlnbixcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q29tbWFuZFByb3BzKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogUGxhaW5Db2RlQm94TWV0YWRhdGEge1xuICAgIGNvbnN0IGNvbW1hbmRFbGVtZW50ID0gdGhpcy5nZXRDb21tYW5kRWxlbWVudChlbGVtZW50KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluZXM6IGNvbW1hbmRFbGVtZW50LnByb3BzLmxpbmVzLFxuICAgICAgc2hvd0NvcHlCdXR0b246IGNvbW1hbmRFbGVtZW50LnByb3BzLnNob3dDb3B5QnV0dG9uID8/IHRydWUsXG4gICAgICBsYW5ndWFnZTogY29tbWFuZEVsZW1lbnQucHJvcHMubGFuZ3VhZ2UsXG4gICAgfTtcbiAgfVxuXG4gIGdldEltYWdlTWV0YWRhdGEoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBJbWFnZU1ldGFkYXRhIHtcbiAgICBjb25zdCBpbWFnZUVsZW1lbnQgPSB0aGlzLmdldEltYWdlRWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBwcm9wcyA9IGltYWdlRWxlbWVudC5wcm9wcztcblxuICAgIHJldHVybiB7XG4gICAgICBzcmM6IHByb3BzLnNyYyxcbiAgICAgIGFsdDogcHJvcHMuYWx0LFxuICAgICAgbW9kZTogcHJvcHMucm91bmRlZCA/ICdyb3VuZGVkJyA6ICdib3gnLFxuICAgICAgc2l6ZTogcHJvcHMuc2l6ZSB8fCAnbWVkaXVtJyxcbiAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICBhbGlnbm1lbnQ6IHByb3BzLmFsaWdubWVudCB8fCAnY2VudGVyJyxcbiAgICAgIGNhcHRpb246IHByb3BzLmNhcHRpb24sXG4gICAgICBjYXB0aW9uU2l6ZTogJ21lZGl1bScgYXMgY29uc3QsXG4gICAgICB3aWR0aDogcHJvcHMubWF4V2lkdGggPyBwYXJzZUludChwcm9wcy5tYXhXaWR0aC5yZXBsYWNlKCdweCcsICcnKSkgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2aWV3TW9kZTogcHJvcHMucHJldmlldyB8fCBmYWxzZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
580
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2FydGljbGUvYXJ0aWNsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUUzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsZUFBZSxHQW1CaEIsTUFBTSxTQUFTLENBQUM7OztBQXdMakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBUTNCLGdCQUFlLENBQUM7SUFFaEIsUUFBUTtRQUNOLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsT0FBTyxDQUFDLElB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LFdBQVcsRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUs7U0FDcEMsQ0FBQztJQUNKLENBQUM7K0dBeE9VLGdCQUFnQjttR0FBaEIsZ0JBQWdCLG1HQTlMakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtS1Qsb21UQTlLQyxZQUFZLG1iQUNaLGdCQUFnQiwyRUFDaEIsY0FBYyx5RUFDZCxhQUFhLHdFQUNiLGVBQWUsMEdBQ2YsY0FBYyx5RUFDZCxvQkFBb0IsZ0ZBQ3BCLGlCQUFpQiw2RUFDakIscUJBQXFCLDZFQUNyQixnQkFBZ0I7OzRGQWdNUCxnQkFBZ0I7a0JBN001QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3FCQUNqQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUtUO3dEQWlDRCxLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2ltYWdlL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbWFnZU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXRvbXMvaW1hZ2UvdHlwZXMnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kZURpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29kZS1kaXNwbGF5L2NvZGUtZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kZURpc3BsYXlNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb2RlLWRpc3BsYXkvdHlwZXMnO1xuaW1wb3J0IHsgTm90ZXNCb3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbm90ZXMtYm94L25vdGVzLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm90ZXNCb3hNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9ub3Rlcy1ib3gvdHlwZXMnO1xuaW1wb3J0IHsgUGxhaW5Db2RlQm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3BsYWluLWNvZGUtYm94L3BsYWluLWNvZGUtYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpbkNvZGVCb3hNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9wbGFpbi1jb2RlLWJveC90eXBlcyc7XG5pbXBvcnQgeyBQcm9jZXNzTGlua3NQaXBlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3BpcGVzL3Byb2Nlc3MtbGlua3MucGlwZSc7XG5pbXBvcnQge1xuICBBUlRJQ0xFX1NQQUNJTkcsXG4gIEFydGljbGVCdXR0b25FbGVtZW50LFxuICBBcnRpY2xlQ29kZUVsZW1lbnQsXG4gIEFydGljbGVDb21tYW5kRWxlbWVudCxcbiAgQXJ0aWNsZUNvbnRlbnRUeXBlLFxuICBBcnRpY2xlQ3VzdG9tRWxlbWVudCxcbiAgQXJ0aWNsZUVsZW1lbnQsXG4gIEFydGljbGVIaWdobGlnaHRFbGVtZW50LFxuICBBcnRpY2xlSW1hZ2VFbGVtZW50LFxuICBBcnRpY2xlTGlzdEVsZW1lbnQsXG4gIEFydGljbGVNZXRhZGF0YSxcbiAgQXJ0aWNsZU5vdGVFbGVtZW50LFxuICBBcnRpY2xlUXVvdGVFbGVtZW50LFxuICBBcnRpY2xlU2VwYXJhdG9yRWxlbWVudCxcbiAgQXJ0aWNsZVNwYWNpbmcsXG4gIEFydGljbGVTdWJ0aXRsZUVsZW1lbnQsXG4gIEFydGljbGVUZXh0RWxlbWVudCxcbiAgQXJ0aWNsZVRpdGxlRWxlbWVudCxcbiAgQXJ0aWNsZVZpZGVvRWxlbWVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hcnRpY2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEltYWdlQ29tcG9uZW50LFxuICAgIENvZGVEaXNwbGF5Q29tcG9uZW50LFxuICAgIE5vdGVzQm94Q29tcG9uZW50LFxuICAgIFBsYWluQ29kZUJveENvbXBvbmVudCxcbiAgICBQcm9jZXNzTGlua3NQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxhcnRpY2xlXG4gICAgICBjbGFzcz1cInZhbC1hcnRpY2xlXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICd2YWwtYXJ0aWNsZS0tY2VudGVyZWQnOiBwcm9wcy5jZW50ZXJlZCxcbiAgICAgICAgJ3ZhbC1hcnRpY2xlLS1saWdodCc6IHByb3BzLnRoZW1lID09PSAnbGlnaHQnLFxuICAgICAgICAndmFsLWFydGljbGUtLWRhcmsnOiBwcm9wcy50aGVtZSA9PT0gJ2RhcmsnLFxuICAgICAgfVwiXG4gICAgICBbc3R5bGUubWF4LXdpZHRoXT1cInByb3BzLm1heFdpZHRoXCJcbiAgICAgIFtuZ1N0eWxlXT1cImdldENvbnRhaW5lclN0eWxlcygpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHByb3BzLmVsZW1lbnRzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICBjbGFzcz1cInZhbC1hcnRpY2xlX19lbGVtZW50XCJcbiAgICAgICAgW2NsYXNzXT1cImVsZW1lbnQuY3NzQ2xhc3NcIlxuICAgICAgICBbbmdDbGFzc109XCJnZXRFbGVtZW50U3BhY2luZ0NsYXNzKGVsZW1lbnQpXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZWxlbWVudC52aXNpYmxlID09PSBmYWxzZSA/ICdub25lJyA6ICdibG9jaydcIlxuICAgICAgPlxuICAgICAgICA8IS0tIFTDrXR1bG8gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICd0aXRsZSdcIj5cbiAgICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cImdldFRpdGxlRWxlbWVudChlbGVtZW50KS5wcm9wc1wiPjwvdmFsLWRpc3BsYXk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gU3VidMOtdHVsbyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cImdldFN1YnRpdGxlRWxlbWVudChlbGVtZW50KS5wcm9wc1wiPjwvdmFsLXRpdGxlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFRleHRvL1DDoXJyYWZvIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSAndGV4dCcgfHwgZWxlbWVudC50eXBlID09PSAncGFyYWdyYXBoJ1wiPlxuICAgICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwiZ2V0VGV4dEVsZW1lbnQoZWxlbWVudCkucHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIENpdGEgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdxdW90ZSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWFydGljbGVfX3F1b3RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWFydGljbGVfX3F1b3RlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJnZXRRdW90ZVRleHRQcm9wcyhlbGVtZW50KVwiPjwvdmFsLXRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRRdW90ZUVsZW1lbnQoZWxlbWVudCkucHJvcHMuYXV0aG9yXCIgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fcXVvdGUtYXV0aG9yXCI+XG4gICAgICAgICAgICAgIOKAlCB7eyBnZXRRdW90ZUVsZW1lbnQoZWxlbWVudCkucHJvcHMuYXV0aG9yIH19XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0UXVvdGVFbGVtZW50KGVsZW1lbnQpLnByb3BzLnNvdXJjZVwiIGNsYXNzPVwidmFsLWFydGljbGVfX3F1b3RlLXNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICwge3sgZ2V0UXVvdGVFbGVtZW50KGVsZW1lbnQpLnByb3BzLnNvdXJjZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBUZXh0byBkZXN0YWNhZG8gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdoaWdobGlnaHQnXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9faGlnaGxpZ2h0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3ZhbC1hcnRpY2xlX19oaWdobGlnaHQtLXJvdW5kZWQnOiBnZXRIaWdobGlnaHRFbGVtZW50KGVsZW1lbnQpLnByb3BzLnJvdW5kZWQsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEhpZ2hsaWdodENvbG9yKGVsZW1lbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cImdldEhpZ2hsaWdodFRleHRQcm9wcyhlbGVtZW50KVwiPjwvdmFsLXRleHQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQ8OzZGlnbyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2NvZGUnXCI+XG4gICAgICAgICAgPHZhbC1jb2RlLWRpc3BsYXkgW3Byb3BzXT1cImdldENvZGVEaXNwbGF5UHJvcHMoZWxlbWVudClcIj48L3ZhbC1jb2RlLWRpc3BsYXk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTm90YSBkZXN0YWNhZGEgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdub3RlJ1wiPlxuICAgICAgICAgIDx2YWwtbm90ZXMtYm94IFtwcm9wc109XCJnZXROb3RlQm94UHJvcHMoZWxlbWVudClcIj48L3ZhbC1ub3Rlcy1ib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQ29tYW5kbyBkZSB0ZXJtaW5hbCAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2NvbW1hbmQnXCI+XG4gICAgICAgICAgPHZhbC1wbGFpbi1jb2RlLWJveCBbcHJvcHNdPVwiZ2V0Q29tbWFuZFByb3BzKGVsZW1lbnQpXCI+PC92YWwtcGxhaW4tY29kZS1ib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gTGlzdGEgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdsaXN0J1wiPlxuICAgICAgICAgIDx1bCAqbmdJZj1cImdldExpc3RFbGVtZW50KGVsZW1lbnQpLnByb3BzLmxpc3RUeXBlICE9PSAnb3JkZXJlZCdcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19saXN0XCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0TGlzdEVsZW1lbnQoZWxlbWVudCkucHJvcHMuaXRlbXNcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnZXRMaXN0RWxlbWVudChlbGVtZW50KS5wcm9wcy5saXN0VHlwZSA9PT0gJ2NoZWNrbGlzdCdcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19saXN0LWNoZWNrXCJcbiAgICAgICAgICAgICAgICA+4pyTPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpdGVtLnRleHQgfCBwcm9jZXNzTGlua3NcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPG9sXG4gICAgICAgICAgICAqbmdJZj1cImdldExpc3RFbGVtZW50KGVsZW1lbnQpLnByb3BzLmxpc3RUeXBlID09PSAnb3JkZXJlZCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fbGlzdCB2YWwtYXJ0aWNsZV9fbGlzdC0tb3JkZXJlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldExpc3RFbGVtZW50KGVsZW1lbnQpLnByb3BzLml0ZW1zXCIgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbS50ZXh0IHwgcHJvY2Vzc0xpbmtzXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L29sPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEJvdMOzbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2J1dHRvbidcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZhbC1hcnRpY2xlX19idXR0b24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3ZhbC1hcnRpY2xlX19idXR0b24tY29udGFpbmVyLS1sZWZ0JzogZ2V0QnV0dG9uRWxlbWVudChlbGVtZW50KS5wcm9wcy5hbGlnbm1lbnQgPT09ICdsZWZ0JyxcbiAgICAgICAgICAgICAgJ3ZhbC1hcnRpY2xlX19idXR0b24tY29udGFpbmVyLS1jZW50ZXInOiBnZXRCdXR0b25FbGVtZW50KGVsZW1lbnQpLnByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcicsXG4gICAgICAgICAgICAgICd2YWwtYXJ0aWNsZV9fYnV0dG9uLWNvbnRhaW5lci0tcmlnaHQnOiBnZXRCdXR0b25FbGVtZW50KGVsZW1lbnQpLnByb3BzLmFsaWdubWVudCA9PT0gJ3JpZ2h0JyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJnZXRCdXR0b25Qcm9wcyhlbGVtZW50KVwiPjwvdmFsLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBTZXBhcmFkb3IgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGUgPT09ICdzZXBhcmF0b3InXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1hcnRpY2xlX19zZXBhcmF0b3JcIj5cbiAgICAgICAgICAgIDxoclxuICAgICAgICAgICAgICAqbmdJZj1cImdldFNlcGFyYXRvckVsZW1lbnQoZWxlbWVudCkucHJvcHMuc3R5bGUgPT09ICdsaW5lJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWFydGljbGVfX3NlcGFyYXRvci1saW5lXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICd2YWwtYXJ0aWNsZV9fc2VwYXJhdG9yLWxpbmUtLXRoaW4nOiBnZXRTZXBhcmF0b3JFbGVtZW50KGVsZW1lbnQpLnByb3BzLnRoaWNrbmVzcyA9PT0gJ3RoaW4nLFxuICAgICAgICAgICAgICAgICd2YWwtYXJ0aWNsZV9fc2VwYXJhdG9yLWxpbmUtLXRoaWNrJzogZ2V0U2VwYXJhdG9yRWxlbWVudChlbGVtZW50KS5wcm9wcy50aGlja25lc3MgPT09ICd0aGljaycsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRTZXBhcmF0b3JFbGVtZW50KGVsZW1lbnQpLnByb3BzLnN0eWxlID09PSAnZG90cydcIiBjbGFzcz1cInZhbC1hcnRpY2xlX19zZXBhcmF0b3ItZG90c1wiPlxuICAgICAgICAgICAgICDigKIg4oCiIOKAolxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZ2V0U2VwYXJhdG9yRWxlbWVudChlbGVtZW50KS5wcm9wcy5zdHlsZSA9PT0gJ3NwYWNlJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWFydGljbGVfX3NlcGFyYXRvci1zcGFjZVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gSW1hZ2VuIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSAnaW1hZ2UnXCI+XG4gICAgICAgICAgPHZhbC1pbWFnZSBbcHJvcHNdPVwiZ2V0SW1hZ2VNZXRhZGF0YShlbGVtZW50KVwiPjwvdmFsLWltYWdlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFZpZGVvIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlID09PSAndmlkZW8nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1hcnRpY2xlX192aWRlb1wiPlxuICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgIFtzcmNdPVwiZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnNyY1wiXG4gICAgICAgICAgICAgIFtwb3N0ZXJdPVwiZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnBvc3RlclwiXG4gICAgICAgICAgICAgIFtjb250cm9sc109XCJnZXRWaWRlb0VsZW1lbnQoZWxlbWVudCkucHJvcHMuY29udHJvbHMgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgW2F1dG9wbGF5XT1cImdldFZpZGVvRWxlbWVudChlbGVtZW50KS5wcm9wcy5hdXRvcGxheVwiXG4gICAgICAgICAgICAgIFttdXRlZF09XCJnZXRWaWRlb0VsZW1lbnQoZWxlbWVudCkucHJvcHMubXV0ZWRcIlxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImdldFZpZGVvRWxlbWVudChlbGVtZW50KS5wcm9wcy5tYXhXaWR0aFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWFydGljbGVfX3ZpZGVvLWNvbnRlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBUdSBuYXZlZ2Fkb3Igbm8gc29wb3J0YSBlbCBlbGVtZW50byB2aWRlby5cbiAgICAgICAgICAgIDwvdmlkZW8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnRpdGxlXCIgY2xhc3M9XCJ2YWwtYXJ0aWNsZV9fdmlkZW8tdGl0bGVcIj5cbiAgICAgICAgICAgICAge3sgZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQpLnByb3BzLnRpdGxlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBDb250ZW5pZG8gcGVyc29uYWxpemFkbyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQudHlwZSA9PT0gJ2N1c3RvbSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWFydGljbGVfX2N1c3RvbVwiIFtpbm5lckhUTUxdPVwiZ2V0Q3VzdG9tRWxlbWVudChlbGVtZW50KS5wcm9wcy5odG1sQ29udGVudFwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXJ0aWNsZT5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vYXJ0aWNsZS5jb21wb25lbnQuc2NzcyddLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCwgLy8gQ29tZW50YWRvIHRlbXBvcmFsbWVudGUgcGFyYSBkZWJ1Z1xufSlcbi8qKlxuICogdmFsLWFydGljbGVcbiAqXG4gKiBDb21wb25lbnRlIHBhcmEgY3JlYXIgYXJ0w61jdWxvcywgYmxvZ3MgeSBkb2N1bWVudGFjacOzbiBkZSBmb3JtYSBkZWNsYXJhdGl2YS5cbiAqIFBlcm1pdGUgY29tYmluYXIgbcO6bHRpcGxlcyBlbGVtZW50b3MgKHTDrXR1bG9zLCB0ZXh0bywgaW3DoWdlbmVzLCBjw7NkaWdvLCBldGMuKVxuICogY29uIGVzcGFjaWFkbyBhdXRvbcOhdGljbyB5IHNvcG9ydGUgbXVsdGktaWRpb21hLlxuICpcbiAqIEBleGFtcGxlIFVzbyBiw6FzaWNvOlxuICogYGBgaHRtbFxuICogPHZhbC1hcnRpY2xlIFtwcm9wc109XCJhcnRpY2xlQ29uZmlnXCI+PC92YWwtYXJ0aWNsZT5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbiBBcnRpY2xlQnVpbGRlcjpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFydGljbGVDb25maWcgPSBuZXcgQXJ0aWNsZUJ1aWxkZXIoKVxuICogICAudGl0bGUodGl0bGVQcm9wcylcbiAqICAgLnBhcmFncmFwaCh0ZXh0UHJvcHMpXG4gKiAgIC5jb2RlKCdjb25zb2xlLmxvZyhcIkhlbGxvIFdvcmxkXCIpJywgJ2phdmFzY3JpcHQnKVxuICogICAuYnVpbGQoKTtcbiAqIGBgYFxuICpcbiAqIEBpbnB1dCBwcm9wczogQXJ0aWNsZU1ldGFkYXRhIC0gQ29uZmlndXJhY2nDs24gY29tcGxldGEgZGVsIGFydMOtY3Vsb1xuICovXG5leHBvcnQgY2xhc3MgQXJ0aWNsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb25maWd1cmFjacOzbiBkZWwgYXJ0w61jdWxvXG4gICAqIEB0eXBlIHtBcnRpY2xlTWV0YWRhdGF9XG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wcyE6IEFydGljbGVNZXRhZGF0YTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gVmFsaWRhY2nDs24gYsOhc2ljYVxuICAgIGlmICghdGhpcy5wcm9wcyB8fCAhdGhpcy5wcm9wcy5lbGVtZW50cykge1xuICAgICAgY29uc29sZS53YXJuKCd2YWwtYXJ0aWNsZTogcHJvcHMuZWxlbWVudHMgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsb3MgZXN0aWxvcyBkZSBwYWRkaW5nIHBhcmEgZWwgY29udGVuZWRvciBhcnRpY2xlXG4gICAqL1xuICBnZXRDb250YWluZXJTdHlsZXMoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3Qgc3BhY2luZyA9IHRoaXMucHJvcHMuY29udGFpbmVyU3BhY2luZztcbiAgICBpZiAoIXNwYWNpbmcpIHJldHVybiB7fTtcblxuICAgIGNvbnN0IHN0eWxlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGNvbnN0IHNwYWNpbmdWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBub25lOiAnMCcsXG4gICAgICBzbWFsbDogJzAuNXJlbScsXG4gICAgICBtZWRpdW06ICcxcmVtJyxcbiAgICAgIGxhcmdlOiAnMS41cmVtJyxcbiAgICAgIHhsYXJnZTogJzIuNXJlbScsXG4gICAgfTtcblxuICAgIGlmIChzcGFjaW5nLnRvcCkgc3R5bGVzWydwYWRkaW5nLXRvcCddID0gc3BhY2luZ1ZhbHVlc1tzcGFjaW5nLnRvcF07XG4gICAgaWYgKHNwYWNpbmcuYm90dG9tKSBzdHlsZXNbJ3BhZGRpbmctYm90dG9tJ10gPSBzcGFjaW5nVmFsdWVzW3NwYWNpbmcuYm90dG9tXTtcbiAgICBpZiAoc3BhY2luZy5ob3Jpem9udGFsKSB7XG4gICAgICBzdHlsZXNbJ3BhZGRpbmctbGVmdCddID0gc3BhY2luZ1ZhbHVlc1tzcGFjaW5nLmhvcml6b250YWxdO1xuICAgICAgc3R5bGVzWydwYWRkaW5nLXJpZ2h0J10gPSBzcGFjaW5nVmFsdWVzW3NwYWNpbmcuaG9yaXpvbnRhbF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jacOzbiBkZSB0cmFja0J5IHBhcmEgb3B0aW1pemFyIGVsIHJlbmRlcmluZyBkZSBlbGVtZW50b3NcbiAgICovXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IGFueSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuaWQgfHwgaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCBlc3BhY2lhZG8gcG9yIGRlZmVjdG8gc2Vnw7puIGVsIHRpcG8gZGUgZWxlbWVudG9cbiAgICovXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFNwYWNpbmdGb3JUeXBlKHR5cGU6IEFydGljbGVDb250ZW50VHlwZSk6IEFydGljbGVTcGFjaW5nIHtcbiAgICBjb25zdCBzcGFjaW5nTWFwOiBSZWNvcmQ8QXJ0aWNsZUNvbnRlbnRUeXBlLCBBcnRpY2xlU3BhY2luZz4gPSB7XG4gICAgICB0aXRsZTogQVJUSUNMRV9TUEFDSU5HLlRJVExFLFxuICAgICAgc3VidGl0bGU6IEFSVElDTEVfU1BBQ0lORy5TVUJUSVRMRSxcbiAgICAgIHRleHQ6IEFSVElDTEVfU1BBQ0lORy5QQVJBR1JBUEgsXG4gICAgICBwYXJhZ3JhcGg6IEFSVElDTEVfU1BBQ0lORy5QQVJBR1JBUEgsXG4gICAgICBxdW90ZTogQVJUSUNMRV9TUEFDSU5HLlFVT1RFLFxuICAgICAgaGlnaGxpZ2h0OiBBUlRJQ0xFX1NQQUNJTkcuTUVESVVNLFxuICAgICAgY29kZTogQVJUSUNMRV9TUEFDSU5HLkNPREUsXG4gICAgICBub3RlOiBBUlRJQ0xFX1NQQUNJTkcuTk9URSxcbiAgICAgIGNvbW1hbmQ6IEFSVElDTEVfU1BBQ0lORy5DT01NQU5ELFxuICAgICAgbGlzdDogQVJUSUNMRV9TUEFDSU5HLkxJU1QsXG4gICAgICBidXR0b246IEFSVElDTEVfU1BBQ0lORy5CVVRUT04sXG4gICAgICBzZXBhcmF0b3I6IEFSVElDTEVfU1BBQ0lORy5TRVBBUkFUT1IsXG4gICAgICBpbWFnZTogQVJUSUNMRV9TUEFDSU5HLklNQUdFLFxuICAgICAgdmlkZW86IEFSVElDTEVfU1BBQ0lORy5JTUFHRSxcbiAgICAgIGN1c3RvbTogQVJUSUNMRV9TUEFDSU5HLk1FRElVTSxcbiAgICB9O1xuICAgIHJldHVybiBzcGFjaW5nTWFwW3R5cGVdIHx8IEFSVElDTEVfU1BBQ0lORy5NRURJVU07XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYXMgY2xhc2VzIENTUyBwYXJhIGVsIGVzcGFjaWFkbyBkZWwgZWxlbWVudG8uXG4gICAqIFByaW9yaWRhZDogZWxlbWVudC5zcGFjaW5nID4gZWxlbWVudFNwYWNpbmcgPiBlc3BhY2lhZG8gbmF0aXZvIHBvciB0aXBvXG4gICAqL1xuICBnZXRFbGVtZW50U3BhY2luZ0NsYXNzKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBkZWZhdWx0Rm9yVHlwZSA9IHRoaXMuZ2V0RGVmYXVsdFNwYWNpbmdGb3JUeXBlKGVsZW1lbnQudHlwZSk7XG4gICAgY29uc3QgZ2xvYmFsT3ZlcnJpZGUgPSB0aGlzLnByb3BzLmVsZW1lbnRTcGFjaW5nIHx8IHRoaXMucHJvcHMuZGVmYXVsdFNwYWNpbmc7IC8vIGJhY2t3YXJkIGNvbXBhdFxuXG4gICAgY29uc3Qgc3BhY2luZzogQXJ0aWNsZVNwYWNpbmcgPSB7XG4gICAgICB0b3A6IGVsZW1lbnQuc3BhY2luZz8udG9wID8/IGdsb2JhbE92ZXJyaWRlPy50b3AgPz8gZGVmYXVsdEZvclR5cGUudG9wLFxuICAgICAgYm90dG9tOiBlbGVtZW50LnNwYWNpbmc/LmJvdHRvbSA/PyBnbG9iYWxPdmVycmlkZT8uYm90dG9tID8/IGRlZmF1bHRGb3JUeXBlLmJvdHRvbSxcbiAgICAgIGhvcml6b250YWw6IGVsZW1lbnQuc3BhY2luZz8uaG9yaXpvbnRhbCA/PyBnbG9iYWxPdmVycmlkZT8uaG9yaXpvbnRhbCA/PyBkZWZhdWx0Rm9yVHlwZS5ob3Jpem9udGFsLFxuICAgIH07XG5cbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChzcGFjaW5nLnRvcCkgY2xhc3Nlcy5wdXNoKGB2YWwtYXJ0aWNsZV9fc3BhY2luZy10b3AtLSR7c3BhY2luZy50b3B9YCk7XG4gICAgaWYgKHNwYWNpbmcuYm90dG9tKSBjbGFzc2VzLnB1c2goYHZhbC1hcnRpY2xlX19zcGFjaW5nLWJvdHRvbS0tJHtzcGFjaW5nLmJvdHRvbX1gKTtcbiAgICBpZiAoc3BhY2luZy5ob3Jpem9udGFsKSBjbGFzc2VzLnB1c2goYHZhbC1hcnRpY2xlX19zcGFjaW5nLWhvcml6b250YWwtLSR7c3BhY2luZy5ob3Jpem9udGFsfWApO1xuXG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuICB9XG5cbiAgLy8gPT09IEZVTkNJT05FUyBERSBUSVBPIFBBUkEgVFlQRVNDUklQVCA9PT1cblxuICBnZXRUaXRsZUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlVGl0bGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlVGl0bGVFbGVtZW50O1xuICB9XG5cbiAgZ2V0U3VidGl0bGVFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZVN1YnRpdGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZVN1YnRpdGxlRWxlbWVudDtcbiAgfVxuXG4gIGdldFRleHRFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZVRleHRFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlVGV4dEVsZW1lbnQ7XG4gIH1cblxuICBnZXRRdW90ZUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlUXVvdGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlUXVvdGVFbGVtZW50O1xuICB9XG5cbiAgZ2V0SGlnaGxpZ2h0RWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVIaWdobGlnaHRFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlSGlnaGxpZ2h0RWxlbWVudDtcbiAgfVxuXG4gIGdldENvZGVFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZUNvZGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlQ29kZUVsZW1lbnQ7XG4gIH1cblxuICBnZXRMaXN0RWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVMaXN0RWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZUxpc3RFbGVtZW50O1xuICB9XG5cbiAgZ2V0QnV0dG9uRWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVCdXR0b25FbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlQnV0dG9uRWxlbWVudDtcbiAgfVxuXG4gIGdldFNlcGFyYXRvckVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlU2VwYXJhdG9yRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZVNlcGFyYXRvckVsZW1lbnQ7XG4gIH1cblxuICBnZXRJbWFnZUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlSW1hZ2VFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlSW1hZ2VFbGVtZW50O1xuICB9XG5cbiAgZ2V0VmlkZW9FbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZVZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZVZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldEN1c3RvbUVsZW1lbnQoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBBcnRpY2xlQ3VzdG9tRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZUN1c3RvbUVsZW1lbnQ7XG4gIH1cblxuICAvLyA9PT0gRlVOQ0lPTkVTIEFVWElMSUFSRVMgUEFSQSBQUk9QUyA9PT1cblxuICBnZXRRdW90ZVRleHRQcm9wcyhlbGVtZW50OiBBcnRpY2xlRWxlbWVudCkge1xuICAgIGNvbnN0IHF1b3RlRWxlbWVudCA9IHRoaXMuZ2V0UXVvdGVFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHsgYXV0aG9yLCBzb3VyY2UsIC4uLnRleHRQcm9wcyB9ID0gcXVvdGVFbGVtZW50LnByb3BzO1xuICAgIHJldHVybiB0ZXh0UHJvcHM7XG4gIH1cblxuICBnZXRIaWdobGlnaHRUZXh0UHJvcHMoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpIHtcbiAgICBjb25zdCBoaWdobGlnaHRFbGVtZW50ID0gdGhpcy5nZXRIaWdobGlnaHRFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IHsgYmFja2dyb3VuZENvbG9yLCByb3VuZGVkLCAuLi50ZXh0UHJvcHMgfSA9IGhpZ2hsaWdodEVsZW1lbnQucHJvcHM7XG4gICAgcmV0dXJuIHRleHRQcm9wcztcbiAgfVxuXG4gIGdldEhpZ2hsaWdodENvbG9yKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBoaWdobGlnaHRFbGVtZW50ID0gdGhpcy5nZXRIaWdobGlnaHRFbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiBoaWdobGlnaHRFbGVtZW50LnByb3BzLmJhY2tncm91bmRDb2xvciB8fCAndmFyKC0taW9uLWNvbG9yLWxpZ2h0KSc7XG4gIH1cblxuICBnZXRCdXR0b25Qcm9wcyhlbGVtZW50OiBBcnRpY2xlRWxlbWVudCkge1xuICAgIGNvbnN0IGJ1dHRvbkVsZW1lbnQgPSB0aGlzLmdldEJ1dHRvbkVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgeyBhbGlnbm1lbnQsIC4uLmJ1dHRvblByb3BzIH0gPSBidXR0b25FbGVtZW50LnByb3BzO1xuICAgIHJldHVybiBidXR0b25Qcm9wcztcbiAgfVxuXG4gIGdldENvZGVEaXNwbGF5UHJvcHMoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBDb2RlRGlzcGxheU1ldGFkYXRhIHtcbiAgICBjb25zdCBjb2RlRWxlbWVudCA9IHRoaXMuZ2V0Q29kZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IGNvZGVFbGVtZW50LnByb3BzLmNvZGUsXG4gICAgICBsYW5ndWFnZTogY29kZUVsZW1lbnQucHJvcHMubGFuZ3VhZ2UgfHwgJ3R5cGVzY3JpcHQnLFxuICAgICAgdGFiczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGdldE5vdGVFbGVtZW50KGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogQXJ0aWNsZU5vdGVFbGVtZW50IHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBBcnRpY2xlTm90ZUVsZW1lbnQ7XG4gIH1cblxuICBnZXRDb21tYW5kRWxlbWVudChlbGVtZW50OiBBcnRpY2xlRWxlbWVudCk6IEFydGljbGVDb21tYW5kRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgQXJ0aWNsZUNvbW1hbmRFbGVtZW50O1xuICB9XG5cbiAgZ2V0Tm90ZUJveFByb3BzKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogTm90ZXNCb3hNZXRhZGF0YSB7XG4gICAgY29uc3Qgbm90ZUVsZW1lbnQgPSB0aGlzLmdldE5vdGVFbGVtZW50KGVsZW1lbnQpO1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiBub3RlRWxlbWVudC5wcm9wcy50ZXh0LFxuICAgICAgLy8gYD8/YCAobm90IGB8fGApIHNvIGV4cGxpY2l0IGVtcHR5IHN0cmluZyBzdXBwcmVzc2VzIHRoZSBwcmVmaXguXG4gICAgICBwcmVmaXg6IG5vdGVFbGVtZW50LnByb3BzLnByZWZpeCA/PyAnTm90YTonLFxuICAgICAgY29sb3I6IG5vdGVFbGVtZW50LnByb3BzLmNvbG9yIHx8ICd3YXJuaW5nJyxcbiAgICAgIHRleHRDb2xvcjogbm90ZUVsZW1lbnQucHJvcHMudGV4dENvbG9yIHx8ICdkYXJrJyxcbiAgICAgIHNpemU6IG5vdGVFbGVtZW50LnByb3BzLnNpemUgfHwgJ21lZGl1bScsXG4gICAgICByb3VuZGVkOiBub3RlRWxlbWVudC5wcm9wcy5yb3VuZGVkID8/IHRydWUsXG4gICAgICBwYWRkaW5nOiBub3RlRWxlbWVudC5wcm9wcy5wYWRkaW5nLFxuICAgICAgYWxsb3dQYXJ0aWFsQm9sZDogbm90ZUVsZW1lbnQucHJvcHMuYWxsb3dQYXJ0aWFsQm9sZCxcbiAgICAgIHByb2Nlc3NMaW5rczogbm90ZUVsZW1lbnQucHJvcHMucHJvY2Vzc0xpbmtzLFxuICAgICAgY29tcGFjdDogbm90ZUVsZW1lbnQucHJvcHMuY29tcGFjdCxcbiAgICAgIGFsaWduOiBub3RlRWxlbWVudC5wcm9wcy5hbGlnbixcbiAgICB9O1xuICB9XG5cbiAgZ2V0Q29tbWFuZFByb3BzKGVsZW1lbnQ6IEFydGljbGVFbGVtZW50KTogUGxhaW5Db2RlQm94TWV0YWRhdGEge1xuICAgIGNvbnN0IGNvbW1hbmRFbGVtZW50ID0gdGhpcy5nZXRDb21tYW5kRWxlbWVudChlbGVtZW50KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluZXM6IGNvbW1hbmRFbGVtZW50LnByb3BzLmxpbmVzLFxuICAgICAgc2hvd0NvcHlCdXR0b246IGNvbW1hbmRFbGVtZW50LnByb3BzLnNob3dDb3B5QnV0dG9uID8/IHRydWUsXG4gICAgICBsYW5ndWFnZTogY29tbWFuZEVsZW1lbnQucHJvcHMubGFuZ3VhZ2UsXG4gICAgfTtcbiAgfVxuXG4gIGdldEltYWdlTWV0YWRhdGEoZWxlbWVudDogQXJ0aWNsZUVsZW1lbnQpOiBJbWFnZU1ldGFkYXRhIHtcbiAgICBjb25zdCBpbWFnZUVsZW1lbnQgPSB0aGlzLmdldEltYWdlRWxlbWVudChlbGVtZW50KTtcbiAgICBjb25zdCBwcm9wcyA9IGltYWdlRWxlbWVudC5wcm9wcztcblxuICAgIHJldHVybiB7XG4gICAgICBzcmM6IHByb3BzLnNyYyxcbiAgICAgIGFsdDogcHJvcHMuYWx0LFxuICAgICAgbW9kZTogcHJvcHMucm91bmRlZCA/ICdyb3VuZGVkJyA6ICdib3gnLFxuICAgICAgc2l6ZTogcHJvcHMuc2l6ZSB8fCAnbWVkaXVtJyxcbiAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICBhbGlnbm1lbnQ6IHByb3BzLmFsaWdubWVudCB8fCAnY2VudGVyJyxcbiAgICAgIGNhcHRpb246IHByb3BzLmNhcHRpb24sXG4gICAgICBjYXB0aW9uU2l6ZTogJ21lZGl1bScgYXMgY29uc3QsXG4gICAgICB3aWR0aDogcHJvcHMubWF4V2lkdGggPyBwYXJzZUludChwcm9wcy5tYXhXaWR0aC5yZXBsYWNlKCdweCcsICcnKSkgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2aWV3TW9kZTogcHJvcHMucHJldmlldyB8fCBmYWxzZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { rbacGuard } from '../../../services/auth/guards';
|
|
1
2
|
import { PermissionsViewComponent } from './permissions-view.component';
|
|
2
3
|
/**
|
|
3
4
|
* Helper para montar la vista Permisos (`val-permissions-view`) como ruta en una
|
|
@@ -22,8 +23,9 @@ export function provideValtechPermissionsRoutes(opts) {
|
|
|
22
23
|
{
|
|
23
24
|
path: opts?.path ?? 'permissions',
|
|
24
25
|
component: PermissionsViewComponent,
|
|
26
|
+
canActivate: [rbacGuard('roles:read', 'rbac:manage')],
|
|
25
27
|
data: { permissionsConfig: opts?.config },
|
|
26
28
|
},
|
|
27
29
|
];
|
|
28
30
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9wZXJtaXNzaW9ucy12aWV3L3Blcm1pc3Npb25zLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHeEU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLElBRy9DO0lBQ0MsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksYUFBYTtZQUNqQyxTQUFTLEVBQUUsd0JBQXdCO1lBQ25DLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDckQsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUMxQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgcmJhY0d1YXJkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9ndWFyZHMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9wZXJtaXNzaW9ucy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1ZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBIZWxwZXIgcGFyYSBtb250YXIgbGEgdmlzdGEgUGVybWlzb3MgKGB2YWwtcGVybWlzc2lvbnMtdmlld2ApIGNvbW8gcnV0YSBlbiB1bmFcbiAqIGFwcCBkZWwgZmFjdG9yeS4gRWwgYGNvbmZpZ2Agc2UgcGFzYSBwb3Igcm91dGUgYGRhdGFgIChgcGVybWlzc2lvbnNDb25maWdgKSB5IGVsXG4gKiBjb21wb25lbnRlIGxvIGxlZSBjb21vIGZhbGxiYWNrIGRlIHN1IGBASW5wdXQoKSBjb25maWdgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gc2V0dGluZ3Mucm91dGVzLnRzXG4gKiBleHBvcnQgY29uc3Qgc2V0dGluZ3NSb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgLi4ucHJvdmlkZVZhbHRlY2hQZXJtaXNzaW9uc1JvdXRlcygpLCAgICAgICAgICAgICAgICAgIC8vIOKGkiAvYXBwL3NldHRpbmdzL3Blcm1pc3Npb25zXG4gKiAgIHsgcGF0aDogJ3ByZWZlcmVuY2VzJywgbG9hZENvbXBvbmVudDogKCkgPT4gLi4uIH0sXG4gKiBdO1xuICpcbiAqIC8vIGNvbiBjb25maWcgYWNvdGFkYTpcbiAqIC4uLnByb3ZpZGVWYWx0ZWNoUGVybWlzc2lvbnNSb3V0ZXMoeyBjb25maWc6IHsgc2hvd0N1c3RvbVJvbGVzOiBmYWxzZSB9IH0pLFxuICogLi4ucHJvdmlkZVZhbHRlY2hQZXJtaXNzaW9uc1JvdXRlcyh7IHBhdGg6ICdyb2xlcycgfSksXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVWYWx0ZWNoUGVybWlzc2lvbnNSb3V0ZXMob3B0cz86IHtcbiAgcGF0aD86IHN0cmluZztcbiAgY29uZmlnPzogUGVybWlzc2lvbnNWaWV3Q29uZmlnO1xufSk6IFJvdXRlcyB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGF0aDogb3B0cz8ucGF0aCA/PyAncGVybWlzc2lvbnMnLFxuICAgICAgY29tcG9uZW50OiBQZXJtaXNzaW9uc1ZpZXdDb21wb25lbnQsXG4gICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgncm9sZXM6cmVhZCcsICdyYmFjOm1hbmFnZScpXSxcbiAgICAgIGRhdGE6IHsgcGVybWlzc2lvbnNDb25maWc6IG9wdHM/LmNvbmZpZyB9LFxuICAgIH0sXG4gIF07XG59XG4iXX0=
|
|
@@ -98,6 +98,53 @@ export function permissionGuard(permissions) {
|
|
|
98
98
|
return router.createUrlTree([config.unauthorizedRoute]);
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Factory de guard RBAC parametrizable — defense-in-depth a nivel de RUTA.
|
|
103
|
+
*
|
|
104
|
+
* Variante ergonómica de {@link permissionGuard} con firma variádica
|
|
105
|
+
* (`rbacGuard('a:read', 'b:manage')` en vez de `permissionGuard(['a:read', 'b:manage'])`),
|
|
106
|
+
* pensada para gatear vistas administrativas montadas vía los `provideValtech*Routes`
|
|
107
|
+
* de la lib. Pasa si el usuario tiene **AL MENOS UNO** de los permisos (OR), igual que
|
|
108
|
+
* el resto del gating del factory (`*valHasPermission`, menú). El match de wildcards
|
|
109
|
+
* (`*:*`, `resource:*`, `*:action`) lo resuelve `AuthService.hasPermission`.
|
|
110
|
+
*
|
|
111
|
+
* Es una capa ADICIONAL al gating fino dentro de los componentes (botones por
|
|
112
|
+
* `*valHasPermission`) y al 403 del backend — no los reemplaza. Sin permiso redirige
|
|
113
|
+
* a `unauthorizedRoute` (mismo destino que `permissionGuard`).
|
|
114
|
+
*
|
|
115
|
+
* @param permissions - Uno o más permisos requeridos (OR)
|
|
116
|
+
* @returns Guard function
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* import { rbacGuard } from 'valtech-components';
|
|
121
|
+
*
|
|
122
|
+
* const routes: Routes = [
|
|
123
|
+
* {
|
|
124
|
+
* path: 'api-keys',
|
|
125
|
+
* canActivate: [rbacGuard('api-keys:read')],
|
|
126
|
+
* component: ApiKeysViewComponent,
|
|
127
|
+
* },
|
|
128
|
+
* {
|
|
129
|
+
* path: 'permissions',
|
|
130
|
+
* canActivate: [rbacGuard('roles:read', 'rbac:manage')],
|
|
131
|
+
* component: PermissionsViewComponent,
|
|
132
|
+
* },
|
|
133
|
+
* ];
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export function rbacGuard(...permissions) {
|
|
137
|
+
return () => {
|
|
138
|
+
const authService = inject(AuthService);
|
|
139
|
+
const router = inject(Router);
|
|
140
|
+
const config = inject(VALTECH_AUTH_CONFIG);
|
|
141
|
+
if (permissions.length === 0 || authService.hasAnyPermission(permissions)) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
console.warn(`[ValtechAuth] Acceso a ruta denegado. Requerido: ${permissions.join(' o ')}`);
|
|
145
|
+
return router.createUrlTree([config.unauthorizedRoute]);
|
|
146
|
+
};
|
|
147
|
+
}
|
|
101
148
|
/**
|
|
102
149
|
* Guard que lee permisos desde route.data.
|
|
103
150
|
* Permite configurar permisos directamente en la definición de rutas.
|
|
@@ -196,4 +243,4 @@ export function roleGuard(roles) {
|
|
|
196
243
|
return router.createUrlTree([config.unauthorizedRoute]);
|
|
197
244
|
};
|
|
198
245
|
}
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2d1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEdBS1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQixDQUN0QyxNQUE4QixFQUM5QixLQUEwQixFQUNQLEVBQUU7SUFDckIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMvQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRTtLQUN0QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEdBQXNCLEVBQUU7SUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxN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ImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUm91dGVyLFxuICBDYW5BY3RpdmF0ZUZuLFxuICBVcmxUcmVlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIGVzdMOhIGF1dGVudGljYWRvLlxuICogUmVkaXJpZ2UgYSBsb2dpblJvdXRlIHNpIG5vIGVzdMOhIGF1dGVudGljYWRvLlxuICpcbiAqIFByZXNlcnZhIGxhIFVSTCBzb2xpY2l0YWRhIGVuIGVsIHF1ZXJ5IHBhcmFtIGByZXR1cm5VcmxgIHBhcmEgcXVlIGxhXG4gKiBww6FnaW5hIGRlIGxvZ2luIHB1ZWRhIGRldm9sdmVyIGFsIHVzdWFyaW8gYSBzdSBkZXN0aW5vIHRyYXMgYXV0ZW50aWNhcnNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2Rhc2hib2FyZCcsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9kYXNoYm9hcmQucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgYXV0aEd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKFxuICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4pOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBpZiAoYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLmxvZ2luUm91dGVdLCB7XG4gICAgcXVlcnlQYXJhbXM6IHsgcmV0dXJuVXJsOiBzdGF0ZS51cmwgfSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIE5PIGVzdMOhIGF1dGVudGljYWRvLlxuICogUmVkaXJpZ2UgYSBob21lUm91dGUgc2kgeWEgZXN0w6EgYXV0ZW50aWNhZG8uXG4gKiDDmnRpbCBwYXJhIHDDoWdpbmFzIGRlIGxvZ2luL3JlZ2lzdHJvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBndWVzdEd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICdsb2dpbicsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFtndWVzdEd1YXJkXSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vbG9naW4ucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgZ3Vlc3RHdWFyZDogQ2FuQWN0aXZhdGVGbiA9ICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBpZiAoIWF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gcm91dGVyLmNyZWF0ZVVybFRyZWUoW2NvbmZpZy5ob21lUm91dGVdKTtcbn07XG5cbi8qKlxuICogRmFjdG9yeSBwYXJhIGNyZWFyIGd1YXJkIGRlIHBlcm1pc29zLlxuICogVmVyaWZpY2Egc2kgZWwgdXN1YXJpbyB0aWVuZSBlbCBwZXJtaXNvIGVzcGVjaWZpY2Fkby5cbiAqXG4gKiBAcGFyYW0gcGVybWlzc2lvbnMgLSBQZXJtaXNvIG8gbGlzdGEgZGUgcGVybWlzb3MgcmVxdWVyaWRvcyAoT1IpXG4gKiBAcmV0dXJucyBHdWFyZCBmdW5jdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAndGVtcGxhdGVzJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkKCd0ZW1wbGF0ZXM6cmVhZCcpXSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vdGVtcGxhdGVzLnBhZ2UnKSxcbiAqICAgfSxcbiAqICAge1xuICogICAgIHBhdGg6ICdhZG1pbicsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZChbJ2FkbWluOionLCAnc3VwZXJfYWRtaW4nXSldLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uR3VhcmQocGVybWlzc2lvbnM6IHN0cmluZyB8IHN0cmluZ1tdKTogQ2FuQWN0aXZhdGVGbiB7XG4gIHJldHVybiAoKTogYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBjb25zdCBjb25maWcgPSBpbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRyk7XG5cbiAgICBjb25zdCBwZXJtQXJyYXkgPSBBcnJheS5pc0FycmF5KHBlcm1pc3Npb25zKSA/IHBlcm1pc3Npb25zIDogW3Blcm1pc3Npb25zXTtcblxuICAgIGlmIChhdXRoU2VydmljZS5oYXNBbnlQZXJtaXNzaW9uKHBlcm1BcnJheSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnNvbGUud2FybihgW1ZhbHRlY2hBdXRoXSBQZXJtaXNvIGRlbmVnYWRvLiBSZXF1ZXJpZG86ICR7cGVybUFycmF5LmpvaW4oJyBvICcpfWApO1xuICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG4gIH07XG59XG5cbi8qKlxuICogR3VhcmQgcXVlIGxlZSBwZXJtaXNvcyBkZXNkZSByb3V0ZS5kYXRhLlxuICogUGVybWl0ZSBjb25maWd1cmFyIHBlcm1pc29zIGRpcmVjdGFtZW50ZSBlbiBsYSBkZWZpbmljacOzbiBkZSBydXRhcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGUgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2FkbWluL3VzZXJzJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkRnJvbVJvdXRlXSxcbiAqICAgICBkYXRhOiB7XG4gKiAgICAgICBwZXJtaXNzaW9uczogWyd1c2VyczpyZWFkJywgJ3VzZXJzOm1hbmFnZSddLFxuICogICAgICAgcmVxdWlyZUFsbDogZmFsc2UgIC8vIHRydWUgPSBBTkQsIGZhbHNlID0gT1IgKGRlZmF1bHQpXG4gKiAgICAgfSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vdXNlcnMucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgcGVybWlzc2lvbkd1YXJkRnJvbVJvdXRlOiBDYW5BY3RpdmF0ZUZuID0gKFxuICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFxuKTogYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCBjb25maWcgPSBpbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRyk7XG5cbiAgY29uc3QgcGVybWlzc2lvbnMgPSByb3V0ZS5kYXRhWydwZXJtaXNzaW9ucyddIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBjb25zdCByZXF1aXJlQWxsID0gcm91dGUuZGF0YVsncmVxdWlyZUFsbCddIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgaWYgKCFwZXJtaXNzaW9ucyB8fCBwZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGhhc0FjY2VzcyA9IHJlcXVpcmVBbGxcbiAgICA/IGF1dGhTZXJ2aWNlLmhhc0FsbFBlcm1pc3Npb25zKHBlcm1pc3Npb25zKVxuICAgIDogYXV0aFNlcnZpY2UuaGFzQW55UGVybWlzc2lvbihwZXJtaXNzaW9ucyk7XG5cbiAgaWYgKGhhc0FjY2Vzcykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc29sZS53YXJuKFxuICAgIGBbVmFsdGVjaEF1dGhdIFBlcm1pc28gZGVuZWdhZG8uIFJlcXVlcmlkbzogJHtwZXJtaXNzaW9ucy5qb2luKHJlcXVpcmVBbGwgPyAnIHkgJyA6ICcgbyAnKX1gXG4gICk7XG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG59O1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIGVzIHN1cGVyIGFkbWluLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHN1cGVyQWRtaW5HdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnc3VwZXItYWRtaW4nLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBzdXBlckFkbWluR3VhcmRdLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9zdXBlci1hZG1pbi5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBzdXBlckFkbWluR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoKTogYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCBjb25maWcgPSBpbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRyk7XG5cbiAgaWYgKGF1dGhTZXJ2aWNlLmlzU3VwZXJBZG1pbigpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zb2xlLndhcm4oJ1tWYWx0ZWNoQXV0aF0gQWNjZXNvIGRlIHN1cGVyIGFkbWluIHJlcXVlcmlkbycpO1xuICByZXR1cm4gcm91dGVyLmNyZWF0ZVVybFRyZWUoW2NvbmZpZy51bmF1dGhvcml6ZWRSb3V0ZV0pO1xufTtcblxuLyoqXG4gKiBHdWFyZCBxdWUgdmVyaWZpY2Egc2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZXNwZWPDrWZpY28uXG4gKlxuICogQHBhcmFtIHJvbGVzIC0gUm9sIG8gbGlzdGEgZGUgcm9sZXMgcmVxdWVyaWRvcyAoT1IpXG4gKiBAcmV0dXJucyBHdWFyZCBmdW5jdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHJvbGVHdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnZWRpdG9yJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcm9sZUd1YXJkKFsnZWRpdG9yJywgJ2FkbWluJ10pXSxcbiAqICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vZWRpdG9yLnBhZ2UnKSxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVHdWFyZChyb2xlczogc3RyaW5nIHwgc3RyaW5nW10pOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICAgIGNvbnN0IHJvbGVBcnJheSA9IEFycmF5LmlzQXJyYXkocm9sZXMpID8gcm9sZXMgOiBbcm9sZXNdO1xuXG4gICAgY29uc3QgaGFzUm9sZSA9IHJvbGVBcnJheS5zb21lKHJvbGUgPT4gYXV0aFNlcnZpY2UuaGFzUm9sZShyb2xlKSk7XG5cbiAgICBpZiAoaGFzUm9sZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKGBbVmFsdGVjaEF1dGhdIFJvbCByZXF1ZXJpZG86ICR7cm9sZUFycmF5LmpvaW4oJyBvICcpfWApO1xuICAgIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG4gIH07XG59XG4iXX0=
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2d1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEdBS1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQixDQUN0QyxNQUE4QixFQUM5QixLQUEwQixFQUNQLEVBQUU7SUFDckIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMvQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRTtLQUN0QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEdBQXNCLEVBQUU7SUFDL0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxN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LE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUzQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVsRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSb3V0ZXIsXG4gIENhbkFjdGl2YXRlRm4sXG4gIFVybFRyZWUsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbi8qKlxuICogR3VhcmQgcXVlIHZlcmlmaWNhIHNpIGVsIHVzdWFyaW8gZXN0w6EgYXV0ZW50aWNhZG8uXG4gKiBSZWRpcmlnZSBhIGxvZ2luUm91dGUgc2kgbm8gZXN0w6EgYXV0ZW50aWNhZG8uXG4gKlxuICogUHJlc2VydmEgbGEgVVJMIHNvbGljaXRhZGEgZW4gZWwgcXVlcnkgcGFyYW0gYHJldHVyblVybGAgcGFyYSBxdWUgbGFcbiAqIHDDoWdpbmEgZGUgbG9naW4gcHVlZGEgZGV2b2x2ZXIgYWwgdXN1YXJpbyBhIHN1IGRlc3Rpbm8gdHJhcyBhdXRlbnRpY2Fyc2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnZGFzaGJvYXJkJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sXG4gKiAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2Rhc2hib2FyZC5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBhdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAoXG4gIF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3Rcbik6IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpO1xuXG4gIGlmIChhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcubG9naW5Sb3V0ZV0sIHtcbiAgICBxdWVyeVBhcmFtczogeyByZXR1cm5Vcmw6IHN0YXRlLnVybCB9LFxuICB9KTtcbn07XG5cbi8qKlxuICogR3VhcmQgcXVlIHZlcmlmaWNhIHNpIGVsIHVzdWFyaW8gTk8gZXN0w6EgYXV0ZW50aWNhZG8uXG4gKiBSZWRpcmlnZSBhIGhvbWVSb3V0ZSBzaSB5YSBlc3TDoSBhdXRlbnRpY2Fkby5cbiAqIMOadGlsIHBhcmEgcMOhZ2luYXMgZGUgbG9naW4vcmVnaXN0cm8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGd1ZXN0R3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2xvZ2luJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2d1ZXN0R3VhcmRdLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9sb2dpbi5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBndWVzdEd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKCk6IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpO1xuXG4gIGlmICghYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLmhvbWVSb3V0ZV0pO1xufTtcblxuLyoqXG4gKiBGYWN0b3J5IHBhcmEgY3JlYXIgZ3VhcmQgZGUgcGVybWlzb3MuXG4gKiBWZXJpZmljYSBzaSBlbCB1c3VhcmlvIHRpZW5lIGVsIHBlcm1pc28gZXNwZWNpZmljYWRvLlxuICpcbiAqIEBwYXJhbSBwZXJtaXNzaW9ucyAtIFBlcm1pc28gbyBsaXN0YSBkZSBwZXJtaXNvcyByZXF1ZXJpZG9zIChPUilcbiAqIEByZXR1cm5zIEd1YXJkIGZ1bmN0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICd0ZW1wbGF0ZXMnLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmQoJ3RlbXBsYXRlczpyZWFkJyldLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi90ZW1wbGF0ZXMucGFnZScpLFxuICogICB9LFxuICogICB7XG4gKiAgICAgcGF0aDogJ2FkbWluJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZCwgcGVybWlzc2lvbkd1YXJkKFsnYWRtaW46KicsICdzdXBlcl9hZG1pbiddKV0sXG4gKiAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2FkbWluLnBhZ2UnKSxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25HdWFyZChwZXJtaXNzaW9uczogc3RyaW5nIHwgc3RyaW5nW10pOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICAgIGNvbnN0IHBlcm1BcnJheSA9IEFycmF5LmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdO1xuXG4gICAgaWYgKGF1dGhTZXJ2aWNlLmhhc0FueVBlcm1pc3Npb24ocGVybUFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKGBbVmFsdGVjaEF1dGhdIFBlcm1pc28gZGVuZWdhZG8uIFJlcXVlcmlkbzogJHtwZXJtQXJyYXkuam9pbignIG8gJyl9YCk7XG4gICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGRlIGd1YXJkIFJCQUMgcGFyYW1ldHJpemFibGUg4oCUIGRlZmVuc2UtaW4tZGVwdGggYSBuaXZlbCBkZSBSVVRBLlxuICpcbiAqIFZhcmlhbnRlIGVyZ29uw7NtaWNhIGRlIHtAbGluayBwZXJtaXNzaW9uR3VhcmR9IGNvbiBmaXJtYSB2YXJpw6FkaWNhXG4gKiAoYHJiYWNHdWFyZCgnYTpyZWFkJywgJ2I6bWFuYWdlJylgIGVuIHZleiBkZSBgcGVybWlzc2lvbkd1YXJkKFsnYTpyZWFkJywgJ2I6bWFuYWdlJ10pYCksXG4gKiBwZW5zYWRhIHBhcmEgZ2F0ZWFyIHZpc3RhcyBhZG1pbmlzdHJhdGl2YXMgbW9udGFkYXMgdsOtYSBsb3MgYHByb3ZpZGVWYWx0ZWNoKlJvdXRlc2BcbiAqIGRlIGxhIGxpYi4gUGFzYSBzaSBlbCB1c3VhcmlvIHRpZW5lICoqQUwgTUVOT1MgVU5PKiogZGUgbG9zIHBlcm1pc29zIChPUiksIGlndWFsIHF1ZVxuICogZWwgcmVzdG8gZGVsIGdhdGluZyBkZWwgZmFjdG9yeSAoYCp2YWxIYXNQZXJtaXNzaW9uYCwgbWVuw7opLiBFbCBtYXRjaCBkZSB3aWxkY2FyZHNcbiAqIChgKjoqYCwgYHJlc291cmNlOipgLCBgKjphY3Rpb25gKSBsbyByZXN1ZWx2ZSBgQXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbmAuXG4gKlxuICogRXMgdW5hIGNhcGEgQURJQ0lPTkFMIGFsIGdhdGluZyBmaW5vIGRlbnRybyBkZSBsb3MgY29tcG9uZW50ZXMgKGJvdG9uZXMgcG9yXG4gKiBgKnZhbEhhc1Blcm1pc3Npb25gKSB5IGFsIDQwMyBkZWwgYmFja2VuZCDigJQgbm8gbG9zIHJlZW1wbGF6YS4gU2luIHBlcm1pc28gcmVkaXJpZ2VcbiAqIGEgYHVuYXV0aG9yaXplZFJvdXRlYCAobWlzbW8gZGVzdGlubyBxdWUgYHBlcm1pc3Npb25HdWFyZGApLlxuICpcbiAqIEBwYXJhbSBwZXJtaXNzaW9ucyAtIFVubyBvIG3DoXMgcGVybWlzb3MgcmVxdWVyaWRvcyAoT1IpXG4gKiBAcmV0dXJucyBHdWFyZCBmdW5jdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyByYmFjR3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7XG4gKiAgICAgcGF0aDogJ2FwaS1rZXlzJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgnYXBpLWtleXM6cmVhZCcpXSxcbiAqICAgICBjb21wb25lbnQ6IEFwaUtleXNWaWV3Q29tcG9uZW50LFxuICogICB9LFxuICogICB7XG4gKiAgICAgcGF0aDogJ3Blcm1pc3Npb25zJyxcbiAqICAgICBjYW5BY3RpdmF0ZTogW3JiYWNHdWFyZCgncm9sZXM6cmVhZCcsICdyYmFjOm1hbmFnZScpXSxcbiAqICAgICBjb21wb25lbnQ6IFBlcm1pc3Npb25zVmlld0NvbXBvbmVudCxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJiYWNHdWFyZCguLi5wZXJtaXNzaW9uczogc3RyaW5nW10pOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gICAgY29uc3QgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICAgIGlmIChwZXJtaXNzaW9ucy5sZW5ndGggPT09IDAgfHwgYXV0aFNlcnZpY2UuaGFzQW55UGVybWlzc2lvbihwZXJtaXNzaW9ucykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnNvbGUud2FybihgW1ZhbHRlY2hBdXRoXSBBY2Nlc28gYSBydXRhIGRlbmVnYWRvLiBSZXF1ZXJpZG86ICR7cGVybWlzc2lvbnMuam9pbignIG8gJyl9YCk7XG4gICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBHdWFyZCBxdWUgbGVlIHBlcm1pc29zIGRlc2RlIHJvdXRlLmRhdGEuXG4gKiBQZXJtaXRlIGNvbmZpZ3VyYXIgcGVybWlzb3MgZGlyZWN0YW1lbnRlIGVuIGxhIGRlZmluaWNpw7NuIGRlIHJ1dGFzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZEZyb21Sb3V0ZSB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnYWRtaW4vdXNlcnMnLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGVdLFxuICogICAgIGRhdGE6IHtcbiAqICAgICAgIHBlcm1pc3Npb25zOiBbJ3VzZXJzOnJlYWQnLCAndXNlcnM6bWFuYWdlJ10sXG4gKiAgICAgICByZXF1aXJlQWxsOiBmYWxzZSAgLy8gdHJ1ZSA9IEFORCwgZmFsc2UgPSBPUiAoZGVmYXVsdClcbiAqICAgICB9LFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi91c2Vycy5wYWdlJyksXG4gKiAgIH0sXG4gKiBdO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGU6IENhbkFjdGl2YXRlRm4gPSAoXG4gIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XG4pOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBjb25zdCBwZXJtaXNzaW9ucyA9IHJvdXRlLmRhdGFbJ3Blcm1pc3Npb25zJ10gYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlcXVpcmVBbGwgPSByb3V0ZS5kYXRhWydyZXF1aXJlQWxsJ10gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBpZiAoIXBlcm1pc3Npb25zIHx8IHBlcm1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgaGFzQWNjZXNzID0gcmVxdWlyZUFsbFxuICAgID8gYXV0aFNlcnZpY2UuaGFzQWxsUGVybWlzc2lvbnMocGVybWlzc2lvbnMpXG4gICAgOiBhdXRoU2VydmljZS5oYXNBbnlQZXJtaXNzaW9uKHBlcm1pc3Npb25zKTtcblxuICBpZiAoaGFzQWNjZXNzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zb2xlLndhcm4oXG4gICAgYFtWYWx0ZWNoQXV0aF0gUGVybWlzbyBkZW5lZ2Fkby4gUmVxdWVyaWRvOiAke3Blcm1pc3Npb25zLmpvaW4ocmVxdWlyZUFsbCA/ICcgeSAnIDogJyBvICcpfWBcbiAgKTtcbiAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbn07XG5cbi8qKlxuICogR3VhcmQgcXVlIHZlcmlmaWNhIHNpIGVsIHVzdWFyaW8gZXMgc3VwZXIgYWRtaW4uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCwgc3VwZXJBZG1pbkd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICdzdXBlci1hZG1pbicsXG4gKiAgICAgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmQsIHN1cGVyQWRtaW5HdWFyZF0sXG4gKiAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3N1cGVyLWFkbWluLnBhZ2UnKSxcbiAqICAgfSxcbiAqIF07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHN1cGVyQWRtaW5HdWFyZDogQ2FuQWN0aXZhdGVGbiA9ICgpOiBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChWQUxURUNIX0FVVEhfQ09ORklHKTtcblxuICBpZiAoYXV0aFNlcnZpY2UuaXNTdXBlckFkbWluKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnNvbGUud2FybignW1ZhbHRlY2hBdXRoXSBBY2Nlc28gZGUgc3VwZXIgYWRtaW4gcmVxdWVyaWRvJyk7XG4gIHJldHVybiByb3V0ZXIuY3JlYXRlVXJsVHJlZShbY29uZmlnLnVuYXV0aG9yaXplZFJvdXRlXSk7XG59O1xuXG4vKipcbiAqIEd1YXJkIHF1ZSB2ZXJpZmljYSBzaSBlbCB1c3VhcmlvIHRpZW5lIHVuIHJvbCBlc3BlY8OtZmljby5cbiAqXG4gKiBAcGFyYW0gcm9sZXMgLSBSb2wgbyBsaXN0YSBkZSByb2xlcyByZXF1ZXJpZG9zIChPUilcbiAqIEByZXR1cm5zIEd1YXJkIGZ1bmN0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IGF1dGhHdWFyZCwgcm9sZUd1YXJkIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICdlZGl0b3InLFxuICogICAgIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCByb2xlR3VhcmQoWydlZGl0b3InLCAnYWRtaW4nXSldLFxuICogICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9lZGl0b3IucGFnZScpLFxuICogICB9LFxuICogXTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcm9sZUd1YXJkKHJvbGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IENhbkFjdGl2YXRlRm4ge1xuICByZXR1cm4gKCk6IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgY29uc3QgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpO1xuXG4gICAgY29uc3Qgcm9sZUFycmF5ID0gQXJyYXkuaXNBcnJheShyb2xlcykgPyByb2xlcyA6IFtyb2xlc107XG5cbiAgICBjb25zdCBoYXNSb2xlID0gcm9sZUFycmF5LnNvbWUocm9sZSA9PiBhdXRoU2VydmljZS5oYXNSb2xlKHJvbGUpKTtcblxuICAgIGlmIChoYXNSb2xlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zb2xlLndhcm4oYFtWYWx0ZWNoQXV0aF0gUm9sIHJlcXVlcmlkbzogJHtyb2xlQXJyYXkuam9pbignIG8gJyl9YCk7XG4gICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtjb25maWcudW5hdXRob3JpemVkUm91dGVdKTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -75,7 +75,7 @@ export { VALTECH_AUTH_CONFIG, provideValtechAuth, provideValtechAuthInterceptor,
|
|
|
75
75
|
// Servicio principal
|
|
76
76
|
export { AuthService } from './auth.service';
|
|
77
77
|
// Guards
|
|
78
|
-
export { authGuard, guestGuard, permissionGuard, permissionGuardFromRoute, superAdminGuard, roleGuard, } from './guards';
|
|
78
|
+
export { authGuard, guestGuard, permissionGuard, permissionGuardFromRoute, rbacGuard, superAdminGuard, roleGuard, } from './guards';
|
|
79
79
|
// Interceptor (para uso avanzado)
|
|
80
80
|
export { authInterceptor } from './interceptor';
|
|
81
81
|
// Servicios internos (para testing o extensión)
|
|
@@ -95,4 +95,4 @@ export { HandoffService, HANDOFF_TOKEN_PARAM, HANDOFF_ROUTE_PARAM } from './hand
|
|
|
95
95
|
export { OrgSwitchService } from './org-switch.service';
|
|
96
96
|
// Cross-app cross-org notification click handler
|
|
97
97
|
export { NotificationActionService } from './notification-action.service';
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFFRztBQUVILFFBQVE7QUFDUixjQUFjLFNBQVMsQ0FBQztBQUV4QixnQkFBZ0I7QUFDaEIsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsNkJBQTZCLEVBQzdCLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQUVsQixxQkFBcUI7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFNBQVM7QUFDVCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxHQUNWLE1BQU0sVUFBVSxDQUFDO0FBRWxCLGtDQUFrQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhELGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELGtEQUFrRDtBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELHVCQUF1QjtBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEUsd0VBQXdFO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVE3RiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHeEQsaURBQWlEO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWYWx0ZWNoIEF1dGggU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIGRlIGF1dGVudGljYWNpw7NuIHJldXRpbGl6YWJsZSBwYXJhIGFwbGljYWNpb25lcyBBbmd1bGFyLlxuICogUHJvcG9yY2lvbmEgYXV0ZW50aWNhY2nDs24gY29uIEF1dGhWMiwgTUZBLCBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzLFxuICogcmVmcmVzaCBwcm9hY3Rpdm8gZGUgdG9rZW5zLCB5IHJlZ2lzdHJvIGF1dG9tw6F0aWNvIGRlIGRpc3Bvc2l0aXZvcyBwYXJhXG4gKiBwdXNoIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEVuIG1haW4udHNcbiAqIGltcG9ydCB7IGJvb3RzdHJhcEFwcGxpY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEF1dGgsIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICogaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG4gKlxuICogYm9vdHN0cmFwQXBwbGljYXRpb24oQXBwQ29tcG9uZW50LCB7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UoZW52aXJvbm1lbnQuZmlyZWJhc2UpLFxuICogICAgIHByb3ZpZGVWYWx0ZWNoQXV0aCh7XG4gKiAgICAgICBhcGlVcmw6IGVudmlyb25tZW50LmFwaVVybCxcbiAqICAgICAgIGVuYWJsZUZpcmViYXNlSW50ZWdyYXRpb246IHRydWUsXG4gKiAgICAgICBlbmFibGVEZXZpY2VSZWdpc3RyYXRpb246IHRydWUsIC8vIEF1dG8tcmVnaXN0cmEgZGlzcG9zaXRpdm9zIHBhcmEgcHVzaFxuICogICAgIH0pLFxuICogICBdLFxuICogfSk7XG4gKlxuICogLy8gRW4gYXBwLnJvdXRlcy50c1xuICogaW1wb3J0IHsgYXV0aEd1YXJkLCBndWVzdEd1YXJkLCBwZXJtaXNzaW9uR3VhcmQgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7IHBhdGg6ICdsb2dpbicsIGNhbkFjdGl2YXRlOiBbZ3Vlc3RHdWFyZF0sIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9sb2dpbi5wYWdlJykgfSxcbiAqICAgeyBwYXRoOiAnZGFzaGJvYXJkJywgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmRdLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vZGFzaGJvYXJkLnBhZ2UnKSB9LFxuICogICB7IHBhdGg6ICdhZG1pbicsIGNhbkFjdGl2YXRlOiBbYXV0aEd1YXJkLCBwZXJtaXNzaW9uR3VhcmQoJ2FkbWluOionKV0sIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZG1pbi5wYWdlJykgfSxcbiAqIF07XG4gKlxuICogLy8gRW4gY29tcG9uZW50ZXNcbiAqIGltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAqXG4gKiAgIGFzeW5jIGxvZ2luKCkge1xuICogICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC5zaWduaW4oeyBlbWFpbCwgcGFzc3dvcmQgfSkpO1xuICogICAgIGlmICh0aGlzLmF1dGgubWZhUGVuZGluZygpLnJlcXVpcmVkKSB7XG4gKiAgICAgICAvLyBNb3N0cmFyIFVJIGRlIE1GQVxuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9kYXNoYm9hcmQnXSk7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogICAvLyBIYWJpbGl0YXIgbm90aWZpY2FjaW9uZXMgcHVzaCAoc29saWNpdGEgcGVybWlzb3MgKyByZWdpc3RyYSBkaXNwb3NpdGl2bylcbiAqICAgYXN5bmMgZW5hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmF1dGguZW5hYmxlTm90aWZpY2F0aW9ucygpO1xuICogICAgIGlmIChyZXN1bHQuZ3JhbnRlZCkge1xuICogICAgICAgY29uc29sZS5sb2coJ05vdGlmaWNhY2lvbmVzIGhhYmlsaXRhZGFzJyk7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogICAvLyBWZXJpZmljYXIgZXN0YWRvIGRlIHBlcm1pc29zXG4gKiAgIGdldCBjYW5SZWNlaXZlTm90aWZpY2F0aW9ucygpOiBib29sZWFuIHtcbiAqICAgICByZXR1cm4gdGhpcy5hdXRoLmdldE5vdGlmaWNhdGlvblBlcm1pc3Npb25TdGF0ZSgpID09PSAnZ3JhbnRlZCc7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIEVuIHRlbXBsYXRlOiB1c2FyIHNpZ25hbHMgZGlyZWN0YW1lbnRlXG4gKiAgIC8vIHt7IGF1dGgudXNlcigpPy5lbWFpbCB9fVxuICogICAvLyBAaWYgKGF1dGguaGFzUGVybWlzc2lvbigndGVtcGxhdGVzOmVkaXQnKSkgeyAuLi4gfVxuICogfVxuICogYGBgXG4gKi9cblxuLy8gVGlwb3NcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG4vLyBDb25maWd1cmFjacOzblxuZXhwb3J0IHtcbiAgVkFMVEVDSF9BVVRIX0NPTkZJRyxcbiAgcHJvdmlkZVZhbHRlY2hBdXRoLFxuICBwcm92aWRlVmFsdGVjaEF1dGhJbnRlcmNlcHRvcixcbiAgREVGQVVMVF9BVVRIX0NPTkZJRyxcbn0gZnJvbSAnLi9jb25maWcnO1xuXG4vLyBTZXJ2aWNpbyBwcmluY2lwYWxcbmV4cG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG4vLyBHdWFyZHNcbmV4cG9ydCB7XG4gIGF1dGhHdWFyZCxcbiAgZ3Vlc3RHdWFyZCxcbiAgcGVybWlzc2lvbkd1YXJkLFxuICBwZXJtaXNzaW9uR3VhcmRGcm9tUm91dGUsXG4gIHJiYWNHdWFyZCxcbiAgc3VwZXJBZG1pbkd1YXJkLFxuICByb2xlR3VhcmQsXG59IGZyb20gJy4vZ3VhcmRzJztcblxuLy8gSW50ZXJjZXB0b3IgKHBhcmEgdXNvIGF2YW56YWRvKVxuZXhwb3J0IHsgYXV0aEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcic7XG5cbi8vIFNlcnZpY2lvcyBpbnRlcm5vcyAocGFyYSB0ZXN0aW5nIG8gZXh0ZW5zacOzbilcbmV4cG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dGgtc3RhdGUuc2VydmljZSc7XG5leHBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuZXhwb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlLCBMT0dHRURfSU5fSElOVF9DT09LSUUgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5leHBvcnQgeyBBdXRoU3luY1NlcnZpY2UgfSBmcm9tICcuL3N5bmMuc2VydmljZSc7XG5cbi8vIFNlcnZpY2lvcyBkZSBnZXN0acOzbiBkZSBkaXNwb3NpdGl2b3MgeSBzZXNpb25lc1xuZXhwb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4vZGV2aWNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cbi8vIE9BdXRoIChMb2dpbiBzb2NpYWwpXG5leHBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICcuL29hdXRoLnNlcnZpY2UnO1xuZXhwb3J0IHsgT0F1dGhDYWxsYmFja0NvbXBvbmVudCB9IGZyb20gJy4vb2F1dGgtY2FsbGJhY2suY29tcG9uZW50JztcblxuLy8gQ3Jvc3MtYXBwIHNlc3Npb24gaGFuZG9mZiAoT0F1dGggQXV0aG9yaXphdGlvbiBDb2RlIHBhdHRlcm4gaW50ZXJuYWwpXG5leHBvcnQgeyBIYW5kb2ZmU2VydmljZSwgSEFORE9GRl9UT0tFTl9QQVJBTSwgSEFORE9GRl9ST1VURV9QQVJBTSB9IGZyb20gJy4vaGFuZG9mZi5zZXJ2aWNlJztcbmV4cG9ydCB0eXBlIHtcbiAgSGFuZG9mZkNyZWF0ZVJlcXVlc3QsXG4gIEhhbmRvZmZDcmVhdGVSZXNwb25zZSxcbiAgSGFuZG9mZkV4Y2hhbmdlUmVzcG9uc2UsXG4gIERldGVjdEFuZEV4Y2hhbmdlT3B0aW9ucyxcbn0gZnJvbSAnLi9oYW5kb2ZmLnNlcnZpY2UnO1xuXG4vLyBBY3RpdmUgb3JnYW5pemF0aW9uIHN3aXRjaCBvcmNoZXN0cmF0aW9uXG5leHBvcnQgeyBPcmdTd2l0Y2hTZXJ2aWNlIH0gZnJvbSAnLi9vcmctc3dpdGNoLnNlcnZpY2UnO1xuZXhwb3J0IHR5cGUgeyBPcmdDaGFuZ2VkRXZlbnQsIFN3aXRjaE9yZ09wdGlvbnMgfSBmcm9tICcuL29yZy1zd2l0Y2guc2VydmljZSc7XG5cbi8vIENyb3NzLWFwcCBjcm9zcy1vcmcgbm90aWZpY2F0aW9uIGNsaWNrIGhhbmRsZXJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG5leHBvcnQgdHlwZSB7IE5vdGlmaWNhdGlvbk9wZW5SZXN1bHQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG4iXX0=
|