valtech-components 4.0.46 → 4.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/atoms/splash/splash.component.mjs +45 -0
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +15 -3
- package/esm2022/lib/services/auth/auth.service.mjs +28 -26
- package/esm2022/lib/services/auth/oauth-callback.component.mjs +63 -17
- package/esm2022/lib/services/auth/oauth.service.mjs +14 -10
- package/esm2022/lib/services/auth/storage.service.mjs +11 -7
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components.mjs +166 -59
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/splash/splash.component.d.ts +23 -0
- package/lib/components/organisms/toolbar/toolbar.component.d.ts +3 -0
- package/lib/services/auth/oauth-callback.component.d.ts +21 -1
- package/lib/services/auth/oauth.service.d.ts +6 -7
- package/lib/services/auth/storage.service.d.ts +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/services/firebase/firebase-messaging-sw.js +0 -145
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component, input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* `val-splash` — splash a pantalla completa reutilizable, idéntico al de arranque
|
|
5
|
+
* de la app (`.app-splash` del `index.html`): logo centrado con pulse, fondo
|
|
6
|
+
* claro/oscuro vía `prefers-color-scheme`. Para cargas fundamentales dentro de la
|
|
7
|
+
* app (p.ej. el callback OAuth) que deben verse iguales al arranque, en vez de
|
|
8
|
+
* un segundo loader casi-duplicado.
|
|
9
|
+
*
|
|
10
|
+
* El logo apunta por defecto a `assets/images/main-{light,dark}.svg` — los mismos
|
|
11
|
+
* assets de la app consumer que usa el splash de `index.html` — y resuelven en
|
|
12
|
+
* runtime contra la app. Override por inputs si hace falta. Fondo overridable con
|
|
13
|
+
* las CSS vars `--val-splash-bg` / `--val-splash-bg-dark`.
|
|
14
|
+
*/
|
|
15
|
+
export class SplashComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
/** Logo para tema claro. Default = asset de la app (igual que index.html). */
|
|
18
|
+
this.logoLight = input('assets/images/main-light.svg');
|
|
19
|
+
/** Logo para tema oscuro (vía prefers-color-scheme). */
|
|
20
|
+
this.logoDark = input('assets/images/main-dark.svg');
|
|
21
|
+
/** Texto alternativo del logo. */
|
|
22
|
+
this.alt = input('Valtech');
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplashComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: SplashComponent, isStandalone: true, selector: "val-splash", inputs: { logoLight: { classPropertyName: "logoLight", publicName: "logoLight", isSignal: true, isRequired: false, transformFunction: null }, logoDark: { classPropertyName: "logoDark", publicName: "logoDark", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
26
|
+
<div class="val-splash">
|
|
27
|
+
<picture>
|
|
28
|
+
<source media="(prefers-color-scheme: dark)" [srcset]="logoDark()" />
|
|
29
|
+
<img class="val-splash__logo" [src]="logoLight()" [alt]="alt()" />
|
|
30
|
+
</picture>
|
|
31
|
+
</div>
|
|
32
|
+
`, isInline: true, styles: [".val-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--val-splash-bg, #fbfbfb);z-index:9999;animation:val-splash-in .25s ease}.val-splash__logo{width:180px;max-width:50vw;animation:val-splash-pulse 1.8s ease-in-out infinite}@keyframes val-splash-in{0%{opacity:0}to{opacity:1}}@keyframes val-splash-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-color-scheme: dark){.val-splash{background:var(--val-splash-bg-dark, #0e0420)}}\n"] }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SplashComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'val-splash', standalone: true, template: `
|
|
37
|
+
<div class="val-splash">
|
|
38
|
+
<picture>
|
|
39
|
+
<source media="(prefers-color-scheme: dark)" [srcset]="logoDark()" />
|
|
40
|
+
<img class="val-splash__logo" [src]="logoLight()" [alt]="alt()" />
|
|
41
|
+
</picture>
|
|
42
|
+
</div>
|
|
43
|
+
`, styles: [".val-splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--val-splash-bg, #fbfbfb);z-index:9999;animation:val-splash-in .25s ease}.val-splash__logo{width:180px;max-width:50vw;animation:val-splash-pulse 1.8s ease-in-out infinite}@keyframes val-splash-in{0%{opacity:0}to{opacity:1}}@keyframes val-splash-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-color-scheme: dark){.val-splash{background:var(--val-splash-bg-dark, #0e0420)}}\n"] }]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsYXNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9zcGxhc2gvc3BsYXNoLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFakQ7Ozs7Ozs7Ozs7O0dBV0c7QUFzREgsTUFBTSxPQUFPLGVBQWU7SUFyRDVCO1FBc0RFLDhFQUE4RTtRQUNyRSxjQUFTLEdBQUcsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDM0Qsd0RBQXdEO1FBQy9DLGFBQVEsR0FBRyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN6RCxrQ0FBa0M7UUFDekIsUUFBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQzsrR0FQWSxlQUFlO21HQUFmLGVBQWUseWNBbERoQjs7Ozs7OztHQU9UOzs0RkEyQ1UsZUFBZTtrQkFyRDNCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksWUFDTjs7Ozs7OztHQU9UIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIGB2YWwtc3BsYXNoYCDigJQgc3BsYXNoIGEgcGFudGFsbGEgY29tcGxldGEgcmV1dGlsaXphYmxlLCBpZMOpbnRpY28gYWwgZGUgYXJyYW5xdWVcbiAqIGRlIGxhIGFwcCAoYC5hcHAtc3BsYXNoYCBkZWwgYGluZGV4Lmh0bWxgKTogbG9nbyBjZW50cmFkbyBjb24gcHVsc2UsIGZvbmRvXG4gKiBjbGFyby9vc2N1cm8gdsOtYSBgcHJlZmVycy1jb2xvci1zY2hlbWVgLiBQYXJhIGNhcmdhcyBmdW5kYW1lbnRhbGVzIGRlbnRybyBkZSBsYVxuICogYXBwIChwLmVqLiBlbCBjYWxsYmFjayBPQXV0aCkgcXVlIGRlYmVuIHZlcnNlIGlndWFsZXMgYWwgYXJyYW5xdWUsIGVuIHZleiBkZVxuICogdW4gc2VndW5kbyBsb2FkZXIgY2FzaS1kdXBsaWNhZG8uXG4gKlxuICogRWwgbG9nbyBhcHVudGEgcG9yIGRlZmVjdG8gYSBgYXNzZXRzL2ltYWdlcy9tYWluLXtsaWdodCxkYXJrfS5zdmdgIOKAlCBsb3MgbWlzbW9zXG4gKiBhc3NldHMgZGUgbGEgYXBwIGNvbnN1bWVyIHF1ZSB1c2EgZWwgc3BsYXNoIGRlIGBpbmRleC5odG1sYCDigJQgeSByZXN1ZWx2ZW4gZW5cbiAqIHJ1bnRpbWUgY29udHJhIGxhIGFwcC4gT3ZlcnJpZGUgcG9yIGlucHV0cyBzaSBoYWNlIGZhbHRhLiBGb25kbyBvdmVycmlkYWJsZSBjb25cbiAqIGxhcyBDU1MgdmFycyBgLS12YWwtc3BsYXNoLWJnYCAvIGAtLXZhbC1zcGxhc2gtYmctZGFya2AuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zcGxhc2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ2YWwtc3BsYXNoXCI+XG4gICAgICA8cGljdHVyZT5cbiAgICAgICAgPHNvdXJjZSBtZWRpYT1cIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIiBbc3Jjc2V0XT1cImxvZ29EYXJrKClcIiAvPlxuICAgICAgICA8aW1nIGNsYXNzPVwidmFsLXNwbGFzaF9fbG9nb1wiIFtzcmNdPVwibG9nb0xpZ2h0KClcIiBbYWx0XT1cImFsdCgpXCIgLz5cbiAgICAgIDwvcGljdHVyZT5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnZhbC1zcGxhc2gge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLXNwbGFzaC1iZywgI2ZiZmJmYik7XG4gICAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgICAgIGFuaW1hdGlvbjogdmFsLXNwbGFzaC1pbiAwLjI1cyBlYXNlO1xuICAgICAgfVxuICAgICAgLnZhbC1zcGxhc2hfX2xvZ28ge1xuICAgICAgICB3aWR0aDogMTgwcHg7XG4gICAgICAgIG1heC13aWR0aDogNTB2dztcbiAgICAgICAgYW5pbWF0aW9uOiB2YWwtc3BsYXNoLXB1bHNlIDEuOHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG4gICAgICBAa2V5ZnJhbWVzIHZhbC1zcGxhc2gtaW4ge1xuICAgICAgICBmcm9tIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB9XG4gICAgICAgIHRvIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAa2V5ZnJhbWVzIHZhbC1zcGxhc2gtcHVsc2Uge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLnZhbC1zcGxhc2gge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXZhbC1zcGxhc2gtYmctZGFyaywgIzBlMDQyMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTcGxhc2hDb21wb25lbnQge1xuICAvKiogTG9nbyBwYXJhIHRlbWEgY2xhcm8uIERlZmF1bHQgPSBhc3NldCBkZSBsYSBhcHAgKGlndWFsIHF1ZSBpbmRleC5odG1sKS4gKi9cbiAgcmVhZG9ubHkgbG9nb0xpZ2h0ID0gaW5wdXQoJ2Fzc2V0cy9pbWFnZXMvbWFpbi1saWdodC5zdmcnKTtcbiAgLyoqIExvZ28gcGFyYSB0ZW1hIG9zY3VybyAodsOtYSBwcmVmZXJzLWNvbG9yLXNjaGVtZSkuICovXG4gIHJlYWRvbmx5IGxvZ29EYXJrID0gaW5wdXQoJ2Fzc2V0cy9pbWFnZXMvbWFpbi1kYXJrLnN2ZycpO1xuICAvKiogVGV4dG8gYWx0ZXJuYXRpdm8gZGVsIGxvZ28uICovXG4gIHJlYWRvbmx5IGFsdCA9IGlucHV0KCdWYWx0ZWNoJyk7XG59XG4iXX0=
|
|
@@ -29,6 +29,8 @@ export class ToolbarComponent {
|
|
|
29
29
|
constructor(icon) {
|
|
30
30
|
this._lspInput = { ls: null, color: null };
|
|
31
31
|
this._lspCache = null;
|
|
32
|
+
this._fssInput = { fss: null, color: null };
|
|
33
|
+
this._fssCache = null;
|
|
32
34
|
/**
|
|
33
35
|
* Evento emitido al hacer click en una acción o botón de la barra.
|
|
34
36
|
*/
|
|
@@ -75,6 +77,16 @@ export class ToolbarComponent {
|
|
|
75
77
|
/**
|
|
76
78
|
* Language selector props — memoized to avoid new object reference on every CD cycle.
|
|
77
79
|
*/
|
|
80
|
+
get fontSizeSelectorProps() {
|
|
81
|
+
const fss = this.props.fontSizeSelector;
|
|
82
|
+
const color = this.props.textColor;
|
|
83
|
+
if (this._fssCache !== null && this._fssInput.fss === fss && this._fssInput.color === color) {
|
|
84
|
+
return this._fssCache;
|
|
85
|
+
}
|
|
86
|
+
this._fssInput = { fss, color };
|
|
87
|
+
this._fssCache = { color: color || 'dark', ...fss };
|
|
88
|
+
return this._fssCache;
|
|
89
|
+
}
|
|
78
90
|
get languageSelectorProps() {
|
|
79
91
|
const ls = this.props.languageSelector;
|
|
80
92
|
const color = this.props.textColor;
|
|
@@ -146,7 +158,7 @@ export class ToolbarComponent {
|
|
|
146
158
|
>
|
|
147
159
|
</ng-container>
|
|
148
160
|
@if (props.fontSizeSelector) {
|
|
149
|
-
<val-font-size-selector [props]="
|
|
161
|
+
<val-font-size-selector [props]="fontSizeSelectorProps"></val-font-size-selector>
|
|
150
162
|
}
|
|
151
163
|
@if (props.languageSelector) {
|
|
152
164
|
<val-language-selector [props]="languageSelectorProps"></val-language-selector>
|
|
@@ -271,7 +283,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
271
283
|
>
|
|
272
284
|
</ng-container>
|
|
273
285
|
@if (props.fontSizeSelector) {
|
|
274
|
-
<val-font-size-selector [props]="
|
|
286
|
+
<val-font-size-selector [props]="fontSizeSelectorProps"></val-font-size-selector>
|
|
275
287
|
}
|
|
276
288
|
@if (props.languageSelector) {
|
|
277
289
|
<val-language-selector [props]="languageSelectorProps"></val-language-selector>
|
|
@@ -324,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
324
336
|
}], onClick: [{
|
|
325
337
|
type: Output
|
|
326
338
|
}] } });
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXBGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDMUcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDNUcsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUcvRDs7Ozs7Ozs7Ozs7R0FXRztBQWlJSCxNQUFNLE9BQU8sZ0JBQWdCO0lBb0IzQixZQUFZLElBQWlCO1FBYnJCLGNBQVMsR0FBNEIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvRCxjQUFTLEdBQVEsSUFBSSxDQUFDO1FBRTlCOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFckMsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQztRQUV4QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFHdEMsUUFBUSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQztJQUViOzs7T0FHRztJQUNILFlBQVksQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxxQkFBcUI7UUFDdkIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFlLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzsrR0E5RVUsZ0JBQWdCO21HQUFoQixnQkFBZ0Isb0lBOUdqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyR1QsaWhHQXpIQyxZQUFZLGdRQUNaLFVBQVUsbUZBQ1YsVUFBVSw4RUFDVixTQUFTLG9QQUNULE9BQU8sMkpBQ1AsT0FBTyxnRkFDUCxRQUFRLGlGQUVSLGNBQWMseUVBQ2QsbUJBQW1CLHFHQUNuQixhQUFhLCtIQUNiLHlCQUF5QixrSEFDekIseUJBQXlCOzs0RkFnSGhCLGdCQUFnQjtrQkFoSTVCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixTQUFTO3dCQUNULE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxRQUFRO3dCQUNSLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IseUJBQXlCO3dCQUN6Qix5QkFBeUI7cUJBQzFCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkdUO2dGQVFELEtBQUs7c0JBREosS0FBSztnQkFVTixPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkljb24sXG4gIElvbk1lbnVCdXR0b24sXG4gIElvblRleHQsXG4gIElvblRpdGxlLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkJhY2tPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb250U2l6ZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2ZvbnQtc2l6ZS1zZWxlY3Rvci9mb250LXNpemUtc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2xiYXJBY3Rpb24sIFRvb2xiYXJBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgVG9vbGJhck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogVG9vbGJhckNvbXBvbmVudFxuICpcbiAqIENvbXBvbmVudGUgZGUgYmFycmEgZGUgaGVycmFtaWVudGFzIHJldXRpbGl6YWJsZSBwYXJhIGVuY2FiZXphZG9zIHkgcGllcyBkZSBww6FnaW5hLlxuICogUGVybWl0ZSBhY2Npb25lcywgYm90w7NuIGRlIHJldHJvY2VzbywgbWVuw7ogeSBwZXJzb25hbGl6YWNpw7NuIGRlIGNvbG9yZXMgeSB0w610dWxvLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXRvb2xiYXIgW3Byb3BzXT1cInsgdGl0bGU6ICdNaSBBcHAnLCB3aXRoQmFjazogdHJ1ZSwgYWN0aW9uczogWy4uLl0gfVwiIChvbkNsaWNrKT1cImhhbmRsZVRvb2xiYXJBY3Rpb24oJGV2ZW50KVwiPjwvdmFsLXRvb2xiYXI+XG4gKlxuICogQGlucHV0IHByb3BzIHtUb29sYmFyTWV0YWRhdGF9IC0gTWV0YWRhdG9zIGRlIGxhIGJhcnJhIGRlIGhlcnJhbWllbnRhcy5cbiAqIEBvdXRwdXQgb25DbGljayAtIEVtaXRlIGVsIHRva2VuIGRlIGxhIGFjY2nDs24gY2xpY2FkYS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRvb2xiYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uSWNvbixcbiAgICBJb25UZXh0LFxuICAgIElvblRpdGxlLFxuICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICBJbWFnZUNvbXBvbmVudCxcbiAgICBVc2VyQXZhdGFyQ29tcG9uZW50LFxuICAgIElvbk1lbnVCdXR0b24sXG4gICAgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCxcbiAgICBGb250U2l6ZVNlbGVjdG9yQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tdG9vbGJhciBbY29sb3JdPVwicHJvcHMuY29sb3JcIiBbY2xhc3MuYmFja2dyb3VuZF09XCJwcm9wcy5jb2xvciA9PT0gJ2JhY2tncm91bmQnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcHMud2l0aEJhY2tcIj5cbiAgICAgICAgPGlvbi1idXR0b25zIGNsYXNzPVwibGVmdC1idXR0b25zXCIgc2xvdD1cInN0YXJ0XCIgKm5nSWY9XCJwcm9wcy53aXRoQmFja1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy50ZXh0Q29sb3JcIlxuICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4O1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmJhY2tUZXh0IHx8ICdWb2x2ZXInXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgW3Nsb3RdPVwicHJvcHMuYmFja1RleHQgPyAnc3RhcnQnIDogJ2ljb24tb25seSdcIlxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8aW9uLXRleHQgKm5nSWY9XCJwcm9wcy5iYWNrVGV4dFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHByb3BzLmJhY2tUZXh0IH19PC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy53aXRoQWN0aW9uc1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbnNcbiAgICAgICAgICBzbG90PVwiZW5kXCJcbiAgICAgICAgICAqbmdJZj1cInNvbWVJblJpZ2h0KCkgfHwgcHJvcHMud2l0aE1lbnUgfHwgcHJvcHMubGFuZ3VhZ2VTZWxlY3RvciB8fCBwcm9wcy5mb250U2l6ZVNlbGVjdG9yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiByaWdodEFjdGlvbnMoKVwiPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSUNPTlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aW9uLnRva2VuXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgc2xvdD1cImljb24tb25seVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiYWN0aW9uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwicHJvcHMudGV4dENvbG9yXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQVZBVEFSXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICB1c2VyOiBhY3Rpb24udXNlcixcbiAgICAgICAgICAgICAgICBhdmF0YXJVcmw6IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzaXplOiBhY3Rpb24uYXZhdGFyU2l6ZSA/PyAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgPHZhbC1pbWFnZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JTUFHRVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJhY3Rpb24uaW1hZ2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLWltYWdlPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkJVVFRPTlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICAgID57eyBhY3Rpb24uZGVzY3JpcHRpb24gfX08L2lvbi1idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICBAaWYgKHByb3BzLmZvbnRTaXplU2VsZWN0b3IpIHtcbiAgICAgICAgICAgIDx2YWwtZm9udC1zaXplLXNlbGVjdG9yIFtwcm9wc109XCJwcm9wcy5mb250U2l6ZVNlbGVjdG9yXCI+PC92YWwtZm9udC1zaXplLXNlbGVjdG9yPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByb3BzLmxhbmd1YWdlU2VsZWN0b3IpIHtcbiAgICAgICAgICAgIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3IgW3Byb3BzXT1cImxhbmd1YWdlU2VsZWN0b3JQcm9wc1wiPjwvdmFsLWxhbmd1YWdlLXNlbGVjdG9yPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHByb3BzLndpdGhNZW51KSB7XG4gICAgICAgICAgICA8aW9uLW1lbnUtYnV0dG9uIGNvbG9yPVwiZGFya1wiPjwvaW9uLW1lbnUtYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiICpuZ0lmPVwic29tZUluTGVmdCgpXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDRweDtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgbGVmdEFjdGlvbnMoKVwiPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSUNPTlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aW9uLnRva2VuXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgc2xvdD1cImljb24tb25seVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiYWN0aW9uLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwicHJvcHMudGV4dENvbG9yXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQVZBVEFSXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICB1c2VyOiBhY3Rpb24udXNlcixcbiAgICAgICAgICAgICAgICBhdmF0YXJVcmw6IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBzaXplOiBhY3Rpb24uYXZhdGFyU2l6ZSA/PyAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLXVzZXItYXZhdGFyPlxuICAgICAgICAgICAgPHZhbC1pbWFnZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JTUFHRVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJhY3Rpb24uaW1hZ2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLWltYWdlPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQlVUVE9OXCIgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCI+e3tcbiAgICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICB9fTwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGlvbi10aXRsZSAqbmdJZj1cInByb3BzLnRpdGxlXCIgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiPnt7IHByb3BzLnRpdGxlIH19PC9pb24tdGl0bGU+XG4gICAgICA8IS0tIGV4cGVyaW1lbnRhbCAtLT5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0b29sYmFyLWJvdHRvbV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9pb24tdG9vbGJhcj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIE1ldGFkYXRvcyBkZSBsYSBiYXJyYSBkZSBoZXJyYW1pZW50YXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogVG9vbGJhck1ldGFkYXRhO1xuXG4gIHByaXZhdGUgX2xzcElucHV0OiB7IGxzOiBhbnk7IGNvbG9yOiBhbnkgfSA9IHsgbHM6IG51bGwsIGNvbG9yOiBudWxsIH07XG4gIHByaXZhdGUgX2xzcENhY2hlOiBhbnkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBFdmVudG8gZW1pdGlkbyBhbCBoYWNlciBjbGljayBlbiB1bmEgYWNjacOzbiBvIGJvdMOzbiBkZSBsYSBiYXJyYS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgYWN0aW9uVHlwZXMgPSBUb29sYmFyQWN0aW9uVHlwZTtcblxuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoaWNvbjogSWNvblNlcnZpY2UpIHtcbiAgICBhZGRJY29ucyh7IGNoZXZyb25CYWNrT3V0bGluZSB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge31cblxuICAvKipcbiAgICogRW1pdGUgZWwgdG9rZW4gZGUgbGEgYWNjacOzbiBjbGljYWRhLlxuICAgKiBAcGFyYW0gdG9rZW4gVG9rZW4gZGUgbGEgYWNjacOzblxuICAgKi9cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodG9rZW4pO1xuICB9XG5cbiAgZ29CYWNrKCkge1xuICAgIHRoaXMubmF2LmJhY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmEgc2kgaGF5IGFjY2lvbmVzIGEgbGEgZGVyZWNoYS5cbiAgICovXG4gIHNvbWVJblJpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucHJvcHMuYWN0aW9ucy5maW5kKHggPT4geC5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5hIHNpIGhheSBhY2Npb25lcyBhIGxhIGl6cXVpZXJkYS5cbiAgICovXG4gIHNvbWVJbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5wcm9wcy5hY3Rpb25zLmZpbmQoeCA9PiB4LnBvc2l0aW9uID09PSAnbGVmdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldnVlbHZlIGxhcyBhY2Npb25lcyBkZSBsYSBkZXJlY2hhLlxuICAgKi9cbiAgcmlnaHRBY3Rpb25zKCk6IFRvb2xiYXJBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWN0aW9ucy5maWx0ZXIoeCA9PiB4LnBvc2l0aW9uID09PSAncmlnaHQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBsYXMgYWNjaW9uZXMgZGUgbGEgaXpxdWllcmRhLlxuICAgKi9cbiAgbGVmdEFjdGlvbnMoKTogVG9vbGJhckFjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hY3Rpb25zLmZpbHRlcih4ID0+IHgucG9zaXRpb24gPT09ICdsZWZ0Jyk7XG4gIH1cblxuICAvKipcbiAgICogTGFuZ3VhZ2Ugc2VsZWN0b3IgcHJvcHMg4oCUIG1lbW9pemVkIHRvIGF2b2lkIG5ldyBvYmplY3QgcmVmZXJlbmNlIG9uIGV2ZXJ5IENEIGN5Y2xlLlxuICAgKi9cbiAgZ2V0IGxhbmd1YWdlU2VsZWN0b3JQcm9wcygpIHtcbiAgICBjb25zdCBscyA9IHRoaXMucHJvcHMubGFuZ3VhZ2VTZWxlY3RvcjtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMucHJvcHMudGV4dENvbG9yO1xuICAgIGlmICh0aGlzLl9sc3BDYWNoZSAhPT0gbnVsbCAmJiB0aGlzLl9sc3BJbnB1dC5scyA9PT0gbHMgJiYgdGhpcy5fbHNwSW5wdXQuY29sb3IgPT09IGNvbG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbHNwQ2FjaGU7XG4gICAgfVxuICAgIHRoaXMuX2xzcElucHV0ID0geyBscywgY29sb3IgfTtcbiAgICB0aGlzLl9sc3BDYWNoZSA9IHsgbW9kZTogJ2ljb24nIGFzIGNvbnN0LCBjb2xvcjogY29sb3IgfHwgJ2RhcmsnLCAuLi5scyB9O1xuICAgIHJldHVybiB0aGlzLl9sc3BDYWNoZTtcbiAgfVxufVxuIl19
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXBGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDMUcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDNUcsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUcvRDs7Ozs7Ozs7Ozs7R0FXRztBQWlJSCxNQUFNLE9BQU8sZ0JBQWdCO0lBc0IzQixZQUFZLElBQWlCO1FBZnJCLGNBQVMsR0FBNEIsRUFBRSxFQUFFLEVBQUUsSUFBSSxF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ZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uSWNvbixcbiAgSW9uTWVudUJ1dHRvbixcbiAgSW9uVGV4dCxcbiAgSW9uVGl0bGUsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjaGV2cm9uQmFja091dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWNvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2ltYWdlL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdXNlci1hdmF0YXIvdXNlci1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IExhbmd1YWdlU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbGFuZ3VhZ2Utc2VsZWN0b3IvbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEZvbnRTaXplU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZm9udC1zaXplLXNlbGVjdG9yL2ZvbnQtc2l6ZS1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbGJhckFjdGlvbiwgVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBUb29sYmFyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUb29sYmFyQ29tcG9uZW50XG4gKlxuICogQ29tcG9uZW50ZSBkZSBiYXJyYSBkZSBoZXJyYW1pZW50YXMgcmV1dGlsaXphYmxlIHBhcmEgZW5jYWJlemFkb3MgeSBwaWVzIGRlIHDDoWdpbmEuXG4gKiBQZXJtaXRlIGFjY2lvbmVzLCBib3TDs24gZGUgcmV0cm9jZXNvLCBtZW7DuiB5IHBlcnNvbmFsaXphY2nDs24gZGUgY29sb3JlcyB5IHTDrXR1bG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtdG9vbGJhciBbcHJvcHNdPVwieyB0aXRsZTogJ01pIEFwcCcsIHdpdGhCYWNrOiB0cnVlLCBhY3Rpb25zOiBbLi4uXSB9XCIgKG9uQ2xpY2spPVwiaGFuZGxlVG9vbGJhckFjdGlvbigkZXZlbnQpXCI+PC92YWwtdG9vbGJhcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHMge1Rvb2xiYXJNZXRhZGF0YX0gLSBNZXRhZGF0b3MgZGUgbGEgYmFycmEgZGUgaGVycmFtaWVudGFzLlxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdGUgZWwgdG9rZW4gZGUgbGEgYWNjacOzbiBjbGljYWRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdG9vbGJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25JY29uLFxuICAgIElvblRleHQsXG4gICAgSW9uVGl0bGUsXG4gICAgQXZhdGFyQ29tcG9uZW50LFxuICAgIEltYWdlQ29tcG9uZW50LFxuICAgIFVzZXJBdmF0YXJDb21wb25lbnQsXG4gICAgSW9uTWVudUJ1dHRvbixcbiAgICBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50LFxuICAgIEZvbnRTaXplU2VsZWN0b3JDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi10b29sYmFyIFtjb2xvcl09XCJwcm9wcy5jb2xvclwiIFtjbGFzcy5iYWNrZ3JvdW5kXT1cInByb3BzLmNvbG9yID09PSAnYmFja2dyb3VuZCdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy53aXRoQmFja1wiPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgY2xhc3M9XCJsZWZ0LWJ1dHRvbnNcIiBzbG90PVwic3RhcnRcIiAqbmdJZj1cInByb3BzLndpdGhCYWNrXCI+XG4gICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICAgICAgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4cHg7XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcHMuYmFja1RleHQgfHwgJ1ZvbHZlcidcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIlxuICAgICAgICAgICAgICBbc2xvdF09XCJwcm9wcy5iYWNrVGV4dCA/ICdzdGFydCcgOiAnaWNvbi1vbmx5J1wiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxpb24tdGV4dCAqbmdJZj1cInByb3BzLmJhY2tUZXh0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgcHJvcHMuYmFja1RleHQgfX08L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BzLndpdGhBY3Rpb25zXCI+XG4gICAgICAgIDxpb24tYnV0dG9uc1xuICAgICAgICAgIHNsb3Q9XCJlbmRcIlxuICAgICAgICAgICpuZ0lmPVwic29tZUluUmlnaHQoKSB8fCBwcm9wcy53aXRoTWVudSB8fCBwcm9wcy5sYW5ndWFnZVNlbGVjdG9yIHx8IHByb3BzLmZvbnRTaXplU2VsZWN0b3JcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHJpZ2h0QWN0aW9ucygpXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JQ09OXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb24udG9rZW5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgICBzbG90PVwiaWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJhY3Rpb24uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy50ZXh0Q29sb3JcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhclxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5BVkFUQVJcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHVzZXI6IGFjdGlvbi51c2VyLFxuICAgICAgICAgICAgICAgIGF2YXRhclVybDogYWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHNpemU6IGFjdGlvbi5hdmF0YXJTaXplID8/ICdzbWFsbCcsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtdXNlci1hdmF0YXI+XG4gICAgICAgICAgICA8dmFsLWltYWdlXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLklNQUdFXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cImFjdGlvbi5pbWFnZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtaW1hZ2U+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBbY29sb3JdPVwicHJvcHMudGV4dENvbG9yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQlVUVE9OXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgICAgPnt7IGFjdGlvbi5kZXNjcmlwdGlvbiB9fTwvaW9uLWJ1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIEBpZiAocHJvcHMuZm9udFNpemVTZWxlY3Rvcikge1xuICAgICAgICAgICAgPHZhbC1mb250LXNpemUtc2VsZWN0b3IgW3Byb3BzXT1cImZvbnRTaXplU2VsZWN0b3JQcm9wc1wiPjwvdmFsLWZvbnQtc2l6ZS1zZWxlY3Rvcj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChwcm9wcy5sYW5ndWFnZVNlbGVjdG9yKSB7XG4gICAgICAgICAgICA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yIFtwcm9wc109XCJsYW5ndWFnZVNlbGVjdG9yUHJvcHNcIj48L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChwcm9wcy53aXRoTWVudSkge1xuICAgICAgICAgICAgPGlvbi1tZW51LWJ1dHRvbiBjb2xvcj1cImRhcmtcIj48L2lvbi1tZW51LWJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIiAqbmdJZj1cInNvbWVJbkxlZnQoKVwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA0cHg7XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGxlZnRBY3Rpb25zKClcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLklDT05cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFjdGlvbi50b2tlblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIHNsb3Q9XCJpY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cImFjdGlvbi5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cInByb3BzLnRleHRDb2xvclwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkFWQVRBUlwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdXNlcjogYWN0aW9uLnVzZXIsXG4gICAgICAgICAgICAgICAgYXZhdGFyVXJsOiBhY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgc2l6ZTogYWN0aW9uLmF2YXRhclNpemUgPz8gJ3NtYWxsJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC11c2VyLWF2YXRhcj5cbiAgICAgICAgICAgIDx2YWwtaW1hZ2VcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSU1BR0VcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwiYWN0aW9uLmltYWdlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC1pbWFnZT5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkJVVFRPTlwiIChjbGljayk9XCJjbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiPnt7XG4gICAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdGlvblxuICAgICAgICAgICAgfX08L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxpb24tdGl0bGUgKm5nSWY9XCJwcm9wcy50aXRsZVwiIFtjb2xvcl09XCJwcm9wcy50ZXh0Q29sb3JcIj57eyBwcm9wcy50aXRsZSB9fTwvaW9uLXRpdGxlPlxuICAgICAgPCEtLSBleHBlcmltZW50YWwgLS0+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbGJhci1ib3R0b21dXCI+PC9uZy1jb250ZW50PlxuICAgIDwvaW9uLXRvb2xiYXI+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Rvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBNZXRhZGF0b3MgZGUgbGEgYmFycmEgZGUgaGVycmFtaWVudGFzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IFRvb2xiYXJNZXRhZGF0YTtcblxuICBwcml2YXRlIF9sc3BJbnB1dDogeyBsczogYW55OyBjb2xvcjogYW55IH0gPSB7IGxzOiBudWxsLCBjb2xvcjogbnVsbCB9O1xuICBwcml2YXRlIF9sc3BDYWNoZTogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBfZnNzSW5wdXQ6IHsgZnNzOiBhbnk7IGNvbG9yOiBhbnkgfSA9IHsgZnNzOiBudWxsLCBjb2xvcjogbnVsbCB9O1xuICBwcml2YXRlIF9mc3NDYWNoZTogYW55ID0gbnVsbDtcblxuICAvKipcbiAgICogRXZlbnRvIGVtaXRpZG8gYWwgaGFjZXIgY2xpY2sgZW4gdW5hIGFjY2nDs24gbyBib3TDs24gZGUgbGEgYmFycmEuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGFjdGlvblR5cGVzID0gVG9vbGJhckFjdGlvblR5cGU7XG5cbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKGljb246IEljb25TZXJ2aWNlKSB7XG4gICAgYWRkSWNvbnMoeyBjaGV2cm9uQmFja091dGxpbmUgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgLyoqXG4gICAqIEVtaXRlIGVsIHRva2VuIGRlIGxhIGFjY2nDs24gY2xpY2FkYS5cbiAgICogQHBhcmFtIHRva2VuIFRva2VuIGRlIGxhIGFjY2nDs25cbiAgICovXG4gIGNsaWNrSGFuZGxlcih0b2tlbj86IHN0cmluZykge1xuICAgIHRoaXMub25DbGljay5lbWl0KHRva2VuKTtcbiAgfVxuXG4gIGdvQmFjaygpIHtcbiAgICB0aGlzLm5hdi5iYWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5hIHNpIGhheSBhY2Npb25lcyBhIGxhIGRlcmVjaGEuXG4gICAqL1xuICBzb21lSW5SaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnByb3BzLmFjdGlvbnMuZmluZCh4ID0+IHgucG9zaXRpb24gPT09ICdyaWdodCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluYSBzaSBoYXkgYWNjaW9uZXMgYSBsYSBpenF1aWVyZGEuXG4gICAqL1xuICBzb21lSW5MZWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucHJvcHMuYWN0aW9ucy5maW5kKHggPT4geC5wb3NpdGlvbiA9PT0gJ2xlZnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBsYXMgYWNjaW9uZXMgZGUgbGEgZGVyZWNoYS5cbiAgICovXG4gIHJpZ2h0QWN0aW9ucygpOiBUb29sYmFyQWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmFjdGlvbnMuZmlsdGVyKHggPT4geC5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGV2dWVsdmUgbGFzIGFjY2lvbmVzIGRlIGxhIGl6cXVpZXJkYS5cbiAgICovXG4gIGxlZnRBY3Rpb25zKCk6IFRvb2xiYXJBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWN0aW9ucy5maWx0ZXIoeCA9PiB4LnBvc2l0aW9uID09PSAnbGVmdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIExhbmd1YWdlIHNlbGVjdG9yIHByb3BzIOKAlCBtZW1vaXplZCB0byBhdm9pZCBuZXcgb2JqZWN0IHJlZmVyZW5jZSBvbiBldmVyeSBDRCBjeWNsZS5cbiAgICovXG4gIGdldCBmb250U2l6ZVNlbGVjdG9yUHJvcHMoKSB7XG4gICAgY29uc3QgZnNzID0gdGhpcy5wcm9wcy5mb250U2l6ZVNlbGVjdG9yO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5wcm9wcy50ZXh0Q29sb3I7XG4gICAgaWYgKHRoaXMuX2Zzc0NhY2hlICE9PSBudWxsICYmIHRoaXMuX2Zzc0lucHV0LmZzcyA9PT0gZnNzICYmIHRoaXMuX2Zzc0lucHV0LmNvbG9yID09PSBjb2xvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zzc0NhY2hlO1xuICAgIH1cbiAgICB0aGlzLl9mc3NJbnB1dCA9IHsgZnNzLCBjb2xvciB9O1xuICAgIHRoaXMuX2Zzc0NhY2hlID0geyBjb2xvcjogY29sb3IgfHwgJ2RhcmsnLCAuLi5mc3MgfTtcbiAgICByZXR1cm4gdGhpcy5fZnNzQ2FjaGU7XG4gIH1cblxuICBnZXQgbGFuZ3VhZ2VTZWxlY3RvclByb3BzKCkge1xuICAgIGNvbnN0IGxzID0gdGhpcy5wcm9wcy5sYW5ndWFnZVNlbGVjdG9yO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5wcm9wcy50ZXh0Q29sb3I7XG4gICAgaWYgKHRoaXMuX2xzcENhY2hlICE9PSBudWxsICYmIHRoaXMuX2xzcElucHV0LmxzID09PSBscyAmJiB0aGlzLl9sc3BJbnB1dC5jb2xvciA9PT0gY29sb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sc3BDYWNoZTtcbiAgICB9XG4gICAgdGhpcy5fbHNwSW5wdXQgPSB7IGxzLCBjb2xvciB9O1xuICAgIHRoaXMuX2xzcENhY2hlID0geyBtb2RlOiAnaWNvbicgYXMgY29uc3QsIGNvbG9yOiBjb2xvciB8fCAnZGFyaycsIC4uLmxzIH07XG4gICAgcmV0dXJuIHRoaXMuX2xzcENhY2hlO1xuICB9XG59XG4iXX0=
|