valtech-components 2.0.945 → 2.0.947
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/molecules/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +5 -5
- package/esm2022/lib/components/molecules/stats-bar/stats-bar.component.mjs +3 -3
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
- package/esm2022/lib/components/organisms/form/form.component.mjs +5 -5
- package/esm2022/lib/components/organisms/fun-modal/fun-modal.component.mjs +135 -0
- package/esm2022/lib/components/organisms/fun-modal/types.mjs +8 -0
- package/esm2022/lib/components/organisms/share-profile-modal/share-profile-modal.component.mjs +221 -0
- package/esm2022/lib/components/organisms/share-profile-modal/types.mjs +10 -0
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/services/content/index.mjs +1 -1
- package/esm2022/lib/services/content-platform/config.mjs +40 -0
- package/esm2022/lib/services/content-platform/content.service.mjs +138 -0
- package/esm2022/lib/services/content-platform/index.mjs +10 -0
- package/esm2022/lib/services/content-platform/types.mjs +19 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +9 -1
- package/fesm2022/valtech-components.mjs +567 -35
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/fun-modal/fun-modal.component.d.ts +44 -0
- package/lib/components/organisms/fun-modal/types.d.ts +37 -0
- package/lib/components/organisms/share-profile-modal/share-profile-modal.component.d.ts +49 -0
- package/lib/components/organisms/share-profile-modal/types.d.ts +45 -0
- package/lib/components/types.d.ts +6 -0
- package/lib/services/content/index.d.ts +1 -1
- package/lib/services/content-platform/config.d.ts +38 -0
- package/lib/services/content-platform/content.service.d.ts +70 -0
- package/lib/services/content-platform/index.d.ts +10 -0
- package/lib/services/content-platform/types.d.ts +117 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
package/esm2022/lib/components/organisms/share-profile-modal/share-profile-modal.component.mjs
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, computed, EventEmitter, inject, Input, Output, signal } from '@angular/core';
|
|
3
|
+
import { IonModal, IonSpinner } from '@ionic/angular/standalone';
|
|
4
|
+
import { ModalShellComponent } from '../../molecules/modal-shell/modal-shell.component';
|
|
5
|
+
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
6
|
+
import { UserAvatarComponent } from '../../atoms/user-avatar/user-avatar.component';
|
|
7
|
+
import { QrCodeComponent } from '../../atoms/qr-code/qr-code.component';
|
|
8
|
+
import { ShareButtonsComponent } from '../../molecules/share-buttons/share-buttons.component';
|
|
9
|
+
import { QrGeneratorService } from '../../../services/qr-generator/qr-generator.service';
|
|
10
|
+
import { I18nService } from '../../../services/i18n';
|
|
11
|
+
import { SHARE_PROFILE_MODAL_DEFAULTS } from './types';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
/**
|
|
14
|
+
* Defaults i18n (es/en). Auto-registrados en el constructor si el consumer no
|
|
15
|
+
* proveyó el namespace `ShareProfileModal`. Garantiza que nunca haya una key
|
|
16
|
+
* faltante (ver nota en valtech-components/CLAUDE.md sobre el storm de CD).
|
|
17
|
+
*/
|
|
18
|
+
const SHARE_PROFILE_MODAL_I18N = {
|
|
19
|
+
es: {
|
|
20
|
+
title: 'Compartir perfil',
|
|
21
|
+
caption: 'Escanea el código QR para añadirme como contacto',
|
|
22
|
+
},
|
|
23
|
+
en: {
|
|
24
|
+
title: 'Share profile',
|
|
25
|
+
caption: 'Scan the QR code to add me as a contact',
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* `val-share-profile-modal` — modal reutilizable para compartir un perfil (o
|
|
30
|
+
* cualquier entidad) vía QR + URL. Sigue la Regla #5 (header canónico vía
|
|
31
|
+
* `val-modal-shell`).
|
|
32
|
+
*
|
|
33
|
+
* Self-contained: genera el QR con `QrGeneratorService` a partir de `url` al
|
|
34
|
+
* abrirse. El padre solo controla `[isOpen]` y reacciona a `(dismissed)`.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```html
|
|
38
|
+
* <val-share-profile-modal
|
|
39
|
+
* [isOpen]="isOpen()"
|
|
40
|
+
* [props]="{ name: 'Víctor Valenzuela', url: 'https://app.myvaltech.com/u/victor', avatarUrl: '/me.jpg' }"
|
|
41
|
+
* (dismissed)="isOpen.set(false)"
|
|
42
|
+
* />
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export class ShareProfileModalComponent {
|
|
46
|
+
/** Controla la visibilidad. Al pasar de cerrado a abierto genera el QR. */
|
|
47
|
+
set isOpen(value) {
|
|
48
|
+
const opening = value && !this._isOpen;
|
|
49
|
+
this._isOpen = value;
|
|
50
|
+
if (opening) {
|
|
51
|
+
this.generateQr();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
get isOpen() {
|
|
55
|
+
return this._isOpen;
|
|
56
|
+
}
|
|
57
|
+
constructor() {
|
|
58
|
+
this.qrGenerator = inject(QrGeneratorService);
|
|
59
|
+
this.i18n = inject(I18nService);
|
|
60
|
+
this._isOpen = false;
|
|
61
|
+
/** Configuración del modal. */
|
|
62
|
+
this.props = {};
|
|
63
|
+
/** Emite cuando el user cierra el modal (botón Cerrar o backdrop). */
|
|
64
|
+
this.dismissed = new EventEmitter();
|
|
65
|
+
/** Emite al completar una acción de compartir. */
|
|
66
|
+
this.shared = new EventEmitter();
|
|
67
|
+
this._qr = signal(null);
|
|
68
|
+
this.qr = this._qr.asReadonly();
|
|
69
|
+
this._qrError = signal(false);
|
|
70
|
+
this.qrError = this._qrError.asReadonly();
|
|
71
|
+
this.config = computed(() => ({
|
|
72
|
+
...SHARE_PROFILE_MODAL_DEFAULTS,
|
|
73
|
+
...this.props,
|
|
74
|
+
}));
|
|
75
|
+
this.displayName = computed(() => this.config().title || this.config().name || this.t('title'));
|
|
76
|
+
this.caption = computed(() => this.config().caption || this.t('caption'));
|
|
77
|
+
if (!this.i18n.hasNamespace('ShareProfileModal')) {
|
|
78
|
+
this.i18n.registerContent('ShareProfileModal', SHARE_PROFILE_MODAL_I18N);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
t(key) {
|
|
82
|
+
this.i18n.lang();
|
|
83
|
+
return this.i18n.t(key, 'ShareProfileModal');
|
|
84
|
+
}
|
|
85
|
+
async generateQr() {
|
|
86
|
+
const url = this.config().url;
|
|
87
|
+
if (!url)
|
|
88
|
+
return;
|
|
89
|
+
this._qr.set(null);
|
|
90
|
+
this._qrError.set(false);
|
|
91
|
+
try {
|
|
92
|
+
// Formato SVG: lo genera qr-code-styling sin canvas.toBlob (que cuelga en
|
|
93
|
+
// algunos contextos de bundler/Storybook). Renderiza igual de nítido.
|
|
94
|
+
const result = await this.qrGenerator.generate({ data: url, width: this.config().qrSize, format: 'svg' });
|
|
95
|
+
this._qr.set(result);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// QR opcional — si falla, mostramos la URL como fallback (no spinner eterno).
|
|
99
|
+
this._qr.set(null);
|
|
100
|
+
this._qrError.set(true);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
close() {
|
|
104
|
+
this._isOpen = false;
|
|
105
|
+
this.dismissed.emit();
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ShareProfileModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ShareProfileModalComponent, isStandalone: true, selector: "val-share-profile-modal", inputs: { isOpen: "isOpen", props: "props" }, outputs: { dismissed: "dismissed", shared: "shared" }, ngImport: i0, template: `
|
|
109
|
+
<ion-modal [isOpen]="isOpen" [style.--border-radius.px]="config().borderRadius" (didDismiss)="close()">
|
|
110
|
+
<ng-template>
|
|
111
|
+
<val-modal-shell [title]="''" [closeLabel]="config().closeLabel || ''" (close)="close()">
|
|
112
|
+
<div class="share-profile">
|
|
113
|
+
<val-user-avatar
|
|
114
|
+
[props]="{ name: config().name, avatarUrl: config().avatarUrl, email: config().email, size: 'xlarge' }"
|
|
115
|
+
/>
|
|
116
|
+
<val-display [props]="{ content: displayName(), size: 'small', color: 'dark' }" />
|
|
117
|
+
|
|
118
|
+
<div class="share-profile__qr">
|
|
119
|
+
@if (qr(); as qrResult) {
|
|
120
|
+
<val-qr-code
|
|
121
|
+
[props]="{
|
|
122
|
+
qr: qrResult,
|
|
123
|
+
theme: config().qrTheme,
|
|
124
|
+
displaySize: config().qrSize,
|
|
125
|
+
alt: config().name,
|
|
126
|
+
}"
|
|
127
|
+
/>
|
|
128
|
+
} @else if (qrError()) {
|
|
129
|
+
<p class="share-profile__qr-error">{{ config().url }}</p>
|
|
130
|
+
} @else {
|
|
131
|
+
<div class="share-profile__qr-loading" [style.height.px]="config().qrSize">
|
|
132
|
+
<ion-spinner name="crescent"></ion-spinner>
|
|
133
|
+
</div>
|
|
134
|
+
}
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
<p class="share-profile__caption">{{ caption() }}</p>
|
|
138
|
+
|
|
139
|
+
<val-share-buttons
|
|
140
|
+
[props]="{
|
|
141
|
+
shareData: { title: config().shareTitle || config().name, text: config().shareText, url: config().url },
|
|
142
|
+
platforms: config().platforms,
|
|
143
|
+
layout: 'horizontal',
|
|
144
|
+
variant: 'icon-only',
|
|
145
|
+
usePlatformColors: false,
|
|
146
|
+
}"
|
|
147
|
+
(shareComplete)="shared.emit($event)"
|
|
148
|
+
/>
|
|
149
|
+
</div>
|
|
150
|
+
</val-modal-shell>
|
|
151
|
+
</ng-template>
|
|
152
|
+
</ion-modal>
|
|
153
|
+
`, isInline: true, styles: [".share-profile{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:.5rem 0 1rem;text-align:center}.share-profile__name{margin:0;font-size:1.5rem;font-weight:700;line-height:1.2;color:var(--ion-text-color)}.share-profile__qr{display:flex;justify-content:center}.share-profile__qr-loading{display:flex;align-items:center;justify-content:center;min-width:120px}.share-profile__qr-error{margin:0;padding:1rem;max-width:28ch;word-break:break-all;font-size:.9rem;font-weight:600;color:var(--ion-color-medium-shade)}.share-profile__caption{margin:0;max-width:32ch;font-size:.95rem;line-height:1.45;color:var(--ion-color-medium-shade)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: ModalShellComponent, selector: "val-modal-shell", inputs: ["title", "subtitle", "closeLabel", "showClose"], outputs: ["close"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }, { kind: "component", type: ShareButtonsComponent, selector: "val-share-buttons", inputs: ["props"], outputs: ["shareComplete"] }] }); }
|
|
154
|
+
}
|
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ShareProfileModalComponent, decorators: [{
|
|
156
|
+
type: Component,
|
|
157
|
+
args: [{ selector: 'val-share-profile-modal', standalone: true, imports: [
|
|
158
|
+
CommonModule,
|
|
159
|
+
IonModal,
|
|
160
|
+
IonSpinner,
|
|
161
|
+
ModalShellComponent,
|
|
162
|
+
DisplayComponent,
|
|
163
|
+
UserAvatarComponent,
|
|
164
|
+
QrCodeComponent,
|
|
165
|
+
ShareButtonsComponent,
|
|
166
|
+
], template: `
|
|
167
|
+
<ion-modal [isOpen]="isOpen" [style.--border-radius.px]="config().borderRadius" (didDismiss)="close()">
|
|
168
|
+
<ng-template>
|
|
169
|
+
<val-modal-shell [title]="''" [closeLabel]="config().closeLabel || ''" (close)="close()">
|
|
170
|
+
<div class="share-profile">
|
|
171
|
+
<val-user-avatar
|
|
172
|
+
[props]="{ name: config().name, avatarUrl: config().avatarUrl, email: config().email, size: 'xlarge' }"
|
|
173
|
+
/>
|
|
174
|
+
<val-display [props]="{ content: displayName(), size: 'small', color: 'dark' }" />
|
|
175
|
+
|
|
176
|
+
<div class="share-profile__qr">
|
|
177
|
+
@if (qr(); as qrResult) {
|
|
178
|
+
<val-qr-code
|
|
179
|
+
[props]="{
|
|
180
|
+
qr: qrResult,
|
|
181
|
+
theme: config().qrTheme,
|
|
182
|
+
displaySize: config().qrSize,
|
|
183
|
+
alt: config().name,
|
|
184
|
+
}"
|
|
185
|
+
/>
|
|
186
|
+
} @else if (qrError()) {
|
|
187
|
+
<p class="share-profile__qr-error">{{ config().url }}</p>
|
|
188
|
+
} @else {
|
|
189
|
+
<div class="share-profile__qr-loading" [style.height.px]="config().qrSize">
|
|
190
|
+
<ion-spinner name="crescent"></ion-spinner>
|
|
191
|
+
</div>
|
|
192
|
+
}
|
|
193
|
+
</div>
|
|
194
|
+
|
|
195
|
+
<p class="share-profile__caption">{{ caption() }}</p>
|
|
196
|
+
|
|
197
|
+
<val-share-buttons
|
|
198
|
+
[props]="{
|
|
199
|
+
shareData: { title: config().shareTitle || config().name, text: config().shareText, url: config().url },
|
|
200
|
+
platforms: config().platforms,
|
|
201
|
+
layout: 'horizontal',
|
|
202
|
+
variant: 'icon-only',
|
|
203
|
+
usePlatformColors: false,
|
|
204
|
+
}"
|
|
205
|
+
(shareComplete)="shared.emit($event)"
|
|
206
|
+
/>
|
|
207
|
+
</div>
|
|
208
|
+
</val-modal-shell>
|
|
209
|
+
</ng-template>
|
|
210
|
+
</ion-modal>
|
|
211
|
+
`, styles: [".share-profile{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:.5rem 0 1rem;text-align:center}.share-profile__name{margin:0;font-size:1.5rem;font-weight:700;line-height:1.2;color:var(--ion-text-color)}.share-profile__qr{display:flex;justify-content:center}.share-profile__qr-loading{display:flex;align-items:center;justify-content:center;min-width:120px}.share-profile__qr-error{margin:0;padding:1rem;max-width:28ch;word-break:break-all;font-size:.9rem;font-weight:600;color:var(--ion-color-medium-shade)}.share-profile__caption{margin:0;max-width:32ch;font-size:.95rem;line-height:1.45;color:var(--ion-color-medium-shade)}\n"] }]
|
|
212
|
+
}], ctorParameters: () => [], propDecorators: { isOpen: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}], props: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], dismissed: [{
|
|
217
|
+
type: Output
|
|
218
|
+
}], shared: [{
|
|
219
|
+
type: Output
|
|
220
|
+
}] } });
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmUtcHJvZmlsZS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3NoYXJlLXByb2ZpbGUtbW9kYWwvc2hhcmUtcHJvZmlsZS1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFHekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBNkIsNEJBQTRCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRWxGOzs7O0dBSUc7QUFDSCxNQUFNLHdCQUF3QixHQUFHO0lBQy9CLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxrQkFBa0I7UUFDekIsT0FBTyxFQUFFLGtEQUFrRDtLQUM1RDtJQUNELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxlQUFlO1FBQ3RCLE9BQU8sRUFBRSx5Q0FBeUM7S0FDbkQ7Q0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUE4REgsTUFBTSxPQUFPLDBCQUEwQjtJQU1yQywyRUFBMkU7SUFDM0UsSUFDSSxNQUFNLENBQUMsS0FBYztRQUN2QixNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQTJCRDtRQTNDUSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pDLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0IsWUFBTyxHQUFHLEtBQUssQ0FBQztRQWV4QiwrQkFBK0I7UUFDdEIsVUFBSyxHQUF1QyxFQUFFLENBQUM7UUFFeEQsc0VBQXNFO1FBQzVELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQy9DLGtEQUFrRDtRQUN4QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUVqQyxRQUFHLEdBQUcsTUFBTSxDQUFrQixJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVuQixhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTlDLFdBQU0sR0FBRyxRQUFRLENBQ2YsR0FBRyxFQUFFLENBQ0gsQ0FBQztZQUNDLEdBQUcsNEJBQTRCO1lBQy9CLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDZCxDQUFvRSxDQUN4RSxDQUFDO1FBRUYsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRixZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBR25FLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLENBQUMsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVU7UUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU87UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDO1lBQ0gsMEVBQTBFO1lBQzFFLHNFQUFzRTtZQUN0RSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsOEVBQThFO1lBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0EzRVUsMEJBQTBCO21HQUExQiwwQkFBMEIsd0xBaEQzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNULGl0QkF0REMsWUFBWSwrQkFDWixRQUFRLHNEQUNSLFVBQVUseUdBQ1YsbUJBQW1CLDBJQUNuQixnQkFBZ0IsMkVBQ2hCLG1CQUFtQixxR0FDbkIsZUFBZSxtSUFDZixxQkFBcUI7OzRGQWtEWiwwQkFBMEI7a0JBN0R0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixxQkFBcUI7cUJBQ3RCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDt3REFXRyxNQUFNO3NCQURULEtBQUs7Z0JBYUcsS0FBSztzQkFBYixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbk1vZGFsLCBJb25TcGlubmVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IE1vZGFsU2hlbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtc2hlbGwvbW9kYWwtc2hlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXJDb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvcXItY29kZS9xci1jb2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaGFyZUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2hhcmUtYnV0dG9ucy9zaGFyZS1idXR0b25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRckdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9xci1nZW5lcmF0b3IvcXItZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXJSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9xci1nZW5lcmF0b3IvdHlwZXMnO1xuaW1wb3J0IHsgU2hhcmVFdmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zaGFyZS1idXR0b25zL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBTaGFyZVByb2ZpbGVNb2RhbE1ldGFkYXRhLCBTSEFSRV9QUk9GSUxFX01PREFMX0RFRkFVTFRTIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pLiBBdXRvLXJlZ2lzdHJhZG9zIGVuIGVsIGNvbnN0cnVjdG9yIHNpIGVsIGNvbnN1bWVyIG5vXG4gKiBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgYFNoYXJlUHJvZmlsZU1vZGFsYC4gR2FyYW50aXphIHF1ZSBudW5jYSBoYXlhIHVuYSBrZXlcbiAqIGZhbHRhbnRlICh2ZXIgbm90YSBlbiB2YWx0ZWNoLWNvbXBvbmVudHMvQ0xBVURFLm1kIHNvYnJlIGVsIHN0b3JtIGRlIENEKS5cbiAqL1xuY29uc3QgU0hBUkVfUFJPRklMRV9NT0RBTF9JMThOID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnQ29tcGFydGlyIHBlcmZpbCcsXG4gICAgY2FwdGlvbjogJ0VzY2FuZWEgZWwgY8OzZGlnbyBRUiBwYXJhIGHDsWFkaXJtZSBjb21vIGNvbnRhY3RvJyxcbiAgfSxcbiAgZW46IHtcbiAgICB0aXRsZTogJ1NoYXJlIHByb2ZpbGUnLFxuICAgIGNhcHRpb246ICdTY2FuIHRoZSBRUiBjb2RlIHRvIGFkZCBtZSBhcyBhIGNvbnRhY3QnLFxuICB9LFxufTtcblxuLyoqXG4gKiBgdmFsLXNoYXJlLXByb2ZpbGUtbW9kYWxgIOKAlCBtb2RhbCByZXV0aWxpemFibGUgcGFyYSBjb21wYXJ0aXIgdW4gcGVyZmlsIChvXG4gKiBjdWFscXVpZXIgZW50aWRhZCkgdsOtYSBRUiArIFVSTC4gU2lndWUgbGEgUmVnbGEgIzUgKGhlYWRlciBjYW7Ds25pY28gdsOtYVxuICogYHZhbC1tb2RhbC1zaGVsbGApLlxuICpcbiAqIFNlbGYtY29udGFpbmVkOiBnZW5lcmEgZWwgUVIgY29uIGBRckdlbmVyYXRvclNlcnZpY2VgIGEgcGFydGlyIGRlIGB1cmxgIGFsXG4gKiBhYnJpcnNlLiBFbCBwYWRyZSBzb2xvIGNvbnRyb2xhIGBbaXNPcGVuXWAgeSByZWFjY2lvbmEgYSBgKGRpc21pc3NlZClgLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNoYXJlLXByb2ZpbGUtbW9kYWxcbiAqICAgW2lzT3Blbl09XCJpc09wZW4oKVwiXG4gKiAgIFtwcm9wc109XCJ7IG5hbWU6ICdWw61jdG9yIFZhbGVuenVlbGEnLCB1cmw6ICdodHRwczovL2FwcC5teXZhbHRlY2guY29tL3UvdmljdG9yJywgYXZhdGFyVXJsOiAnL21lLmpwZycgfVwiXG4gKiAgIChkaXNtaXNzZWQpPVwiaXNPcGVuLnNldChmYWxzZSlcIlxuICogLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2hhcmUtcHJvZmlsZS1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uTW9kYWwsXG4gICAgSW9uU3Bpbm5lcixcbiAgICBNb2RhbFNoZWxsQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVXNlckF2YXRhckNvbXBvbmVudCxcbiAgICBRckNvZGVDb21wb25lbnQsXG4gICAgU2hhcmVCdXR0b25zQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tbW9kYWwgW2lzT3Blbl09XCJpc09wZW5cIiBbc3R5bGUuLS1ib3JkZXItcmFkaXVzLnB4XT1cImNvbmZpZygpLmJvcmRlclJhZGl1c1wiIChkaWREaXNtaXNzKT1cImNsb3NlKClcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1zaGVsbCBbdGl0bGVdPVwiJydcIiBbY2xvc2VMYWJlbF09XCJjb25maWcoKS5jbG9zZUxhYmVsIHx8ICcnXCIgKGNsb3NlKT1cImNsb3NlKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hhcmUtcHJvZmlsZVwiPlxuICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhclxuICAgICAgICAgICAgICBbcHJvcHNdPVwieyBuYW1lOiBjb25maWcoKS5uYW1lLCBhdmF0YXJVcmw6IGNvbmZpZygpLmF2YXRhclVybCwgZW1haWw6IGNvbmZpZygpLmVtYWlsLCBzaXplOiAneGxhcmdlJyB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogZGlzcGxheU5hbWUoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoYXJlLXByb2ZpbGVfX3FyXCI+XG4gICAgICAgICAgICAgIEBpZiAocXIoKTsgYXMgcXJSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICA8dmFsLXFyLWNvZGVcbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHFyOiBxclJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IGNvbmZpZygpLnFyVGhlbWUsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlTaXplOiBjb25maWcoKS5xclNpemUsXG4gICAgICAgICAgICAgICAgICAgIGFsdDogY29uZmlnKCkubmFtZSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHFyRXJyb3IoKSkge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic2hhcmUtcHJvZmlsZV9fcXItZXJyb3JcIj57eyBjb25maWcoKS51cmwgfX08L3A+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGFyZS1wcm9maWxlX19xci1sb2FkaW5nXCIgW3N0eWxlLmhlaWdodC5weF09XCJjb25maWcoKS5xclNpemVcIj5cbiAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHAgY2xhc3M9XCJzaGFyZS1wcm9maWxlX19jYXB0aW9uXCI+e3sgY2FwdGlvbigpIH19PC9wPlxuXG4gICAgICAgICAgICA8dmFsLXNoYXJlLWJ1dHRvbnNcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBzaGFyZURhdGE6IHsgdGl0bGU6IGNvbmZpZygpLnNoYXJlVGl0bGUgfHwgY29uZmlnKCkubmFtZSwgdGV4dDogY29uZmlnKCkuc2hhcmVUZXh0LCB1cmw6IGNvbmZpZygpLnVybCB9LFxuICAgICAgICAgICAgICAgIHBsYXRmb3JtczogY29uZmlnKCkucGxhdGZvcm1zLFxuICAgICAgICAgICAgICAgIGxheW91dDogJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgIHZhcmlhbnQ6ICdpY29uLW9ubHknLFxuICAgICAgICAgICAgICAgIHVzZVBsYXRmb3JtQ29sb3JzOiBmYWxzZSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIChzaGFyZUNvbXBsZXRlKT1cInNoYXJlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC92YWwtbW9kYWwtc2hlbGw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9zaGFyZS1wcm9maWxlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlUHJvZmlsZU1vZGFsQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBxckdlbmVyYXRvciA9IGluamVjdChRckdlbmVyYXRvclNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIC8qKiBDb250cm9sYSBsYSB2aXNpYmlsaWRhZC4gQWwgcGFzYXIgZGUgY2VycmFkbyBhIGFiaWVydG8gZ2VuZXJhIGVsIFFSLiAqL1xuICBASW5wdXQoKVxuICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb3BlbmluZyA9IHZhbHVlICYmICF0aGlzLl9pc09wZW47XG4gICAgdGhpcy5faXNPcGVuID0gdmFsdWU7XG4gICAgaWYgKG9wZW5pbmcpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVRcigpO1xuICAgIH1cbiAgfVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc09wZW47XG4gIH1cblxuICAvKiogQ29uZmlndXJhY2nDs24gZGVsIG1vZGFsLiAqL1xuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxTaGFyZVByb2ZpbGVNb2RhbE1ldGFkYXRhPiA9IHt9O1xuXG4gIC8qKiBFbWl0ZSBjdWFuZG8gZWwgdXNlciBjaWVycmEgZWwgbW9kYWwgKGJvdMOzbiBDZXJyYXIgbyBiYWNrZHJvcCkuICovXG4gIEBPdXRwdXQoKSBkaXNtaXNzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKiBFbWl0ZSBhbCBjb21wbGV0YXIgdW5hIGFjY2nDs24gZGUgY29tcGFydGlyLiAqL1xuICBAT3V0cHV0KCkgc2hhcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxTaGFyZUV2ZW50PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3FyID0gc2lnbmFsPFFyUmVzdWx0IHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHFyID0gdGhpcy5fcXIuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3FyRXJyb3IgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBxckVycm9yID0gdGhpcy5fcXJFcnJvci5hc1JlYWRvbmx5KCk7XG5cbiAgY29uZmlnID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgICh7XG4gICAgICAgIC4uLlNIQVJFX1BST0ZJTEVfTU9EQUxfREVGQVVMVFMsXG4gICAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICB9KSBhcyBTaGFyZVByb2ZpbGVNb2RhbE1ldGFkYXRhICYgdHlwZW9mIFNIQVJFX1BST0ZJTEVfTU9EQUxfREVGQVVMVFNcbiAgKTtcblxuICBkaXNwbGF5TmFtZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkudGl0bGUgfHwgdGhpcy5jb25maWcoKS5uYW1lIHx8IHRoaXMudCgndGl0bGUnKSk7XG4gIGNhcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmNhcHRpb24gfHwgdGhpcy50KCdjYXB0aW9uJykpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSgnU2hhcmVQcm9maWxlTW9kYWwnKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCgnU2hhcmVQcm9maWxlTW9kYWwnLCBTSEFSRV9QUk9GSUxFX01PREFMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnU2hhcmVQcm9maWxlTW9kYWwnKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVRcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZygpLnVybDtcbiAgICBpZiAoIXVybCkgcmV0dXJuO1xuICAgIHRoaXMuX3FyLnNldChudWxsKTtcbiAgICB0aGlzLl9xckVycm9yLnNldChmYWxzZSk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEZvcm1hdG8gU1ZHOiBsbyBnZW5lcmEgcXItY29kZS1zdHlsaW5nIHNpbiBjYW52YXMudG9CbG9iIChxdWUgY3VlbGdhIGVuXG4gICAgICAvLyBhbGd1bm9zIGNvbnRleHRvcyBkZSBidW5kbGVyL1N0b3J5Ym9vaykuIFJlbmRlcml6YSBpZ3VhbCBkZSBuw610aWRvLlxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xckdlbmVyYXRvci5nZW5lcmF0ZSh7IGRhdGE6IHVybCwgd2lkdGg6IHRoaXMuY29uZmlnKCkucXJTaXplLCBmb3JtYXQ6ICdzdmcnIH0pO1xuICAgICAgdGhpcy5fcXIuc2V0KHJlc3VsdCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBRUiBvcGNpb25hbCDigJQgc2kgZmFsbGEsIG1vc3RyYW1vcyBsYSBVUkwgY29tbyBmYWxsYmFjayAobm8gc3Bpbm5lciBldGVybm8pLlxuICAgICAgdGhpcy5fcXIuc2V0KG51bGwpO1xuICAgICAgdGhpcy5fcXJFcnJvci5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5kaXNtaXNzZWQuZW1pdCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default values for ShareProfileModalMetadata.
|
|
3
|
+
*/
|
|
4
|
+
export const SHARE_PROFILE_MODAL_DEFAULTS = {
|
|
5
|
+
platforms: ['copy', 'native', 'whatsapp'],
|
|
6
|
+
qrTheme: 'default',
|
|
7
|
+
qrSize: 220,
|
|
8
|
+
borderRadius: 24,
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3NoYXJlLXByb2ZpbGUtbW9kYWwvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaURBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBRXJDO0lBQ0YsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUM7SUFDekMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLEdBQUc7SUFDWCxZQUFZLEVBQUUsRUFBRTtDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhcmVQbGF0Zm9ybSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zaGFyZS1idXR0b25zL3R5cGVzJztcbmltcG9ydCB7IFFyRGlzcGxheVRoZW1lIH0gZnJvbSAnLi4vLi4vYXRvbXMvcXItY29kZS90eXBlcyc7XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIHZhbC1zaGFyZS1wcm9maWxlLW1vZGFsLlxuICpcbiAqIFJldXNhYmxlIG1vZGFsIHRvIHNoYXJlIGEgcHJvZmlsZSAob3IgYW55IGVudGl0eSkgdmlhIFFSICsgVVJMOiBhdmF0YXIsXG4gKiBuYW1lLCBhIFFSIGNvZGUgZW5jb2RpbmcgdGhlIFVSTCwgYW4gb3B0aW9uYWwgY2FwdGlvbiBhbmQgc2hhcmUgYnV0dG9uc1xuICogKGNvcHkgbGluayAvIG5hdGl2ZSAvIHNvY2lhbCkuXG4gKlxuICogQ29udGVudC1kcml2ZW46IGBuYW1lYCArIGB1cmxgIGFyZSByZXF1aXJlZDsgdGhlIHJlc3QgaXMgb3B0aW9uYWwuIFN0YXRpY1xuICogY2hyb21lIHRleHQgKGNhcHRpb24sIGJ1dHRvbiBoaW50cykgYXV0by1yZWdpc3RyYSBkZWZhdWx0cyBpMThuXG4gKiAobmFtZXNwYWNlIGBTaGFyZVByb2ZpbGVNb2RhbGApIOKAlCBvdmVycmlkZSBwYXNhbmRvIGxvcyBjYW1wb3MgZGlyZWN0b3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVQcm9maWxlTW9kYWxNZXRhZGF0YSB7XG4gIC8qKiBEaXNwbGF5IG5hbWUgc2hvd24gdW5kZXIgdGhlIGF2YXRhciAoYW5kIGRlZmF1bHQgbW9kYWwgdGl0bGUpICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFVSTCBlbmNvZGVkIGluIHRoZSBRUiBhbmQgc2hhcmVkIGJ5IHRoZSBidXR0b25zICovXG4gIHVybDogc3RyaW5nO1xuXG4gIC8qKiBBdmF0YXIgaW1hZ2UgVVJMIChmYWxscyBiYWNrIHRvIGluaXRpYWxzIG9mIGBuYW1lYCkgKi9cbiAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICAvKiogRW1haWwg4oCUIHVzZWQgZm9yIHRoZSBhdmF0YXIgaW5pdGlhbHMvY29sb3Igd2hlbiBubyBhdmF0YXJVcmwgKi9cbiAgZW1haWw/OiBzdHJpbmc7XG5cbiAgLyoqIE1vZGFsIHRpdGxlICh2YWwtZGlzcGxheSkuIERlZmF1bHQ6IGBuYW1lYCAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqIENhcHRpb24gdW5kZXIgdGhlIFFSLiBEZWZhdWx0OiBpMThuIGBTaGFyZVByb2ZpbGVNb2RhbC5jYXB0aW9uYCAqL1xuICBjYXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKiBUaXRsZSB1c2VkIGJ5IHRoZSBuYXRpdmUgc2hhcmUgc2hlZXQuIERlZmF1bHQ6IGBuYW1lYCAqL1xuICBzaGFyZVRpdGxlPzogc3RyaW5nO1xuICAvKiogVGV4dCB1c2VkIGJ5IHRoZSBuYXRpdmUgc2hhcmUgc2hlZXQgLyBzb2NpYWwgbWVzc2FnZXMgKi9cbiAgc2hhcmVUZXh0Pzogc3RyaW5nO1xuXG4gIC8qKiBQbGF0Zm9ybXMgc2hvd24gaW4gdGhlIHNoYXJlIGJ1dHRvbnMuIERlZmF1bHQ6IFsnY29weScsICduYXRpdmUnLCAnd2hhdHNhcHAnXSAqL1xuICBwbGF0Zm9ybXM/OiBTaGFyZVBsYXRmb3JtW107XG5cbiAgLyoqIFFSIHZpc3VhbCB0aGVtZS4gRGVmYXVsdDogJ2RlZmF1bHQnICovXG4gIHFyVGhlbWU/OiBRckRpc3BsYXlUaGVtZTtcbiAgLyoqIFFSIHNpemUgaW4gcGl4ZWxzLiBEZWZhdWx0OiAyMjAgKi9cbiAgcXJTaXplPzogbnVtYmVyO1xuXG4gIC8qKiBNb2RhbCBjb3JuZXIgcm91bmRpbmcgaW4gcHguIERlZmF1bHQ6IDI0ICovXG4gIGJvcmRlclJhZGl1cz86IG51bWJlcjtcbiAgLyoqIENsb3NlIGJ1dHRvbiBsYWJlbC4gRGVmYXVsdDogaTE4biBgX2dsb2JhbC5jbG9zZWAgKi9cbiAgY2xvc2VMYWJlbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHZhbHVlcyBmb3IgU2hhcmVQcm9maWxlTW9kYWxNZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQVJFX1BST0ZJTEVfTU9EQUxfREVGQVVMVFM6IFJlcXVpcmVkPFxuICBQaWNrPFNoYXJlUHJvZmlsZU1vZGFsTWV0YWRhdGEsICdwbGF0Zm9ybXMnIHwgJ3FyVGhlbWUnIHwgJ3FyU2l6ZScgfCAnYm9yZGVyUmFkaXVzJz5cbj4gPSB7XG4gIHBsYXRmb3JtczogWydjb3B5JywgJ25hdGl2ZScsICd3aGF0c2FwcCddLFxuICBxclRoZW1lOiAnZGVmYXVsdCcsXG4gIHFyU2l6ZTogMjIwLFxuICBib3JkZXJSYWRpdXM6IDI0LFxufTtcbiJdfQ==
|
|
@@ -58,4 +58,4 @@ export var ToolbarActionType;
|
|
|
58
58
|
ToolbarActionType["IMAGE"] = "IMAGE";
|
|
59
59
|
ToolbarActionType["BUTTON"] = "BUTTON";
|
|
60
60
|
})(ToolbarActionType || (ToolbarActionType = {}));
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLEdBQW1CLFNBQVMsQ0FBQztBQUMxQyxNQUFNLFFBQVEsR0FBbUIsVUFBVSxDQUFDO0FBQzVDLE1BQU0sT0FBTyxHQUFtQixTQUFTLENBQUM7QUFDMUMsTUFBTSxLQUFLLEdBQW1CLE9BQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRXJFOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQixpRUFBZSxDQUFBO0lBQ2YsbUVBQWdCLENBQUE7SUFDaEIsaUVBQWUsQ0FBQTtJQUNmLCtEQUFjLENBQUE7SUFDZCx1RUFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckI7QUFjRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBMEJYO0FBMUJELFdBQVksU0FBUztJQUNuQix5Q0FBSSxDQUFBO0lBQ0osaURBQVEsQ0FBQTtJQUNSLDJDQUFLLENBQUE7SUFDTCxpREFBUSxDQUFBO0lBQ1IsK0NBQU8sQ0FBQTtJQUNQLDZDQUFNLENBQUE7SUFDTiw2REFBYyxDQUFBO0lBQ2QsaURBQVEsQ0FBQTtJQUNSLHlDQUFJLENBQUE7SUFDSixxREFBVSxDQUFBO0lBQ1YsMENBQUksQ0FBQTtJQUNKLDRDQUFLLENBQUE7SUFDTCw0Q0FBSyxDQUFBO0lBQ0wsOENBQU0sQ0FBQTtJQUNOLDREQUFhLENBQUE7SUFDYiwwREFBWSxDQUFBO0lBQ1osd0VBQW1CLENBQUE7SUFDbkIsMENBQUksQ0FBQTtJQUNKLDhDQUFNLENBQUE7SUFDTiw0Q0FBSyxDQUFBO0lBQ0wsNENBQUssQ0FBQTtJQUNMLGtEQUFRLENBQUE7SUFDUiw4REFBYyxDQUFBO0lBQ2QsOENBQU0sQ0FBQTtJQUNOLHNEQUFVLENBQUE7QUFDWixDQUFDLEVBMUJXLFNBQVMsS0FBVCxTQUFTLFFBMEJwQjtBQWtKRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0Isc0NBQWlCLENBQUE7SUFDakIsa0NBQWEsQ0FBQTtJQUNiLG9DQUFlLENBQUE7SUFDZixzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vYXRvbXMvaW1hZ2UvdHlwZXMnO1xuXG4vKipcbiAqIFBvc3NpYmxlIHN0YXRlcyBmb3IgYW4gaW50ZXJhY3RpdmUgY29tcG9uZW50LlxuICovXG5leHBvcnQgdHlwZSBDb21wb25lbnRTdGF0ZSA9ICdFTkFCTEVEJyB8ICdESVNBQkxFRCcgfCAnV09SS0lORycgfCAnRVJST1InO1xuY29uc3QgRU5BQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRU5BQkxFRCc7XG5jb25zdCBESVNBQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRElTQUJMRUQnO1xuY29uc3QgV09SS0lORzogQ29tcG9uZW50U3RhdGUgPSAnV09SS0lORyc7XG5jb25zdCBFUlJPUjogQ29tcG9uZW50U3RhdGUgPSAnRVJST1InO1xuXG4vKipcbiAqIE9iamVjdCBjb250YWluaW5nIGFsbCBwb3NzaWJsZSBjb21wb25lbnQgc3RhdGVzLlxuICovXG5leHBvcnQgY29uc3QgQ29tcG9uZW50U3RhdGVzID0geyBFTkFCTEVELCBESVNBQkxFRCwgV09SS0lORywgRVJST1IgfTtcblxuLyoqXG4gKiBUeXBlcyBvZiBhY3Rpb25zIHRoYXQgYSBidXR0b24gb3IgbGluayBjYW4gcGVyZm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uVHlwZSB7XG4gIEJST1dTRVJfTkVXX1RBQiwgLy8gT3BlbiBpbiBhIG5ldyBicm93c2VyIHRhYlxuICBCUk9XU0VSX0RPV05MT0FELCAvLyBEb3dubG9hZCB2aWEgYnJvd3NlclxuICBOQVRJVkVfRE9XTkxPQUQsIC8vIERvd25sb2FkIHVzaW5nIG5hdGl2ZSBjYXBhYmlsaXRpZXNcbiAgQVBQX05BVklHQVRJT04sIC8vIEludGVybmFsIGFwcCBuYXZpZ2F0aW9uXG4gIEJST1dTRVJfTkFWSUdBVElPTiwgLy8gTmF2aWdhdGlvbiBpbiB0aGUgYnJvd3NlclxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXhlY3V0YWJsZSBhY3Rpb24gZm9yIGEgYnV0dG9uIG9yIGxpbmsuXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcbiAgLyoqIEFjdGlvbiBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQWN0aW9uIHR5cGUgKi9cbiAgdHlwZTogQWN0aW9uVHlwZTtcbiAgLyoqIEFjdGlvbiBzb3VyY2Ugb3IgZGVzdGluYXRpb24gKi9cbiAgc291cmNlOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFN1cHBvcnRlZCBpbnB1dCB0eXBlcyBmb3IgZm9ybXMuXG4gKi9cbmV4cG9ydCBlbnVtIElucHV0VHlwZSB7XG4gIFRFWFQsXG4gIFRFWFRBUkVBLFxuICBFTUFJTCxcbiAgUEFTU1dPUkQsXG4gIENPTU1FTlQsXG4gIE5VTUJFUixcbiAgTlVNQkVSX0ZST01fVE8sXG4gIFBJTl9DT0RFLFxuICBEQVRFLFxuICBEQVRFX1JBTkdFLFxuICBIT1VSLFxuICBDSEVDSyxcbiAgUkFESU8sXG4gIFNFTEVDVCxcbiAgU0VBUkNIX1NFTEVDVCxcbiAgTVVMVElfU0VMRUNULFxuICBNVUxUSV9TRUxFQ1RfU0lNUExFLFxuICBGSUxFLFxuICBUT0dHTEUsXG4gIFJBTkdFLFxuICBQSE9ORSxcbiAgQ1VSUkVOQ1ksXG4gIENIRUNLQk9YX1JBRElPLFxuICBIQU5ETEUsXG4gIEFUVEFDSE1FTlQsXG59XG5cbi8qKlxuICogT3B0aW9uIGZvciBzZWxlY3QsIHJhZGlvLCBldGMuIGlucHV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5wdXRPcHRpb24gPSB7XG4gIC8qKiBVbmlxdWUgb3B0aW9uIGlkZW50aWZpZXIgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdCAqL1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG4gIC8qKiBEaXNwbGF5IG9yZGVyICovXG4gIG9yZGVyOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIGZvcm0gZmllbGQuXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0TWV0YWRhdGEgPSB7XG4gIC8qKiBBc3NvY2lhdGVkIGZvcm0gY29udHJvbCAob3B0aW9uYWwsIGNyZWF0ZWQgaW50ZXJuYWxseSBieSB2YWwtZm9ybSkgKi9cbiAgY29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogRnJvbSBjb250cm9sIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tQ29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogVG8gY29udHJvbCAob25seSBmb3IgTlVNQkVSX0ZST01fVE8gdHlwZSkgKi9cbiAgdG9Db250cm9sPzogRm9ybUNvbnRyb2w7XG4gIC8qKiBVbmlxdWUgdG9rZW4gZm9yIHRoZSBpbnB1dCAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogRGlzcGxheSBsYWJlbCAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgKHNob3duIGJlbG93IGlucHV0LCBmb3IgdmFsaWRhdGlvbiBoaW50cykgKi9cbiAgaGludDogc3RyaW5nO1xuICAvKiogRGVzY3JpcHRpb24gdGV4dCAoc2hvd24gYmVsb3cgbGFiZWwsIGV4cGxhaW5zIHRoZSBmaWVsZCBwdXJwb3NlKSAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIC8qKiBJbnB1dCB0eXBlICovXG4gIHR5cGU6IElucHV0VHlwZTtcbiAgLyoqIERpc3BsYXkgb3JkZXIgKi9cbiAgb3JkZXI6IG51bWJlcjtcbiAgLyoqIEFzc29jaWF0ZWQgdmFsaWRhdG9ycyAqL1xuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuICAvKiogT3B0aW9ucyAoZm9yIHNlbGVjdCwgcmFkaW8sIGV0Yy4pICovXG4gIG9wdGlvbnM/OiBJbnB1dE9wdGlvbltdO1xuICAvKiogQWxsb3dlZCByYW5nZSAoZm9yIG51bWJlciwgZGF0ZSwgZXRjLikgKi9cbiAgcmFuZ2U/OiB7XG4gICAgbWluOiBudW1iZXI7XG4gICAgbWF4OiBudW1iZXI7XG4gIH07XG4gIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZXMgKi9cbiAgZXJyb3JzOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuICAvKiogSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZpZWxkICovXG4gIHZhbHVlPzogc3RyaW5nO1xuICAvKiogRGVmYXVsdCB2YWx1ZSBjb25maWd1cmF0aW9uIC0gc3RyaW5nIGZvciBjdXN0b20gZGVmYXVsdHMsIHRydWUgZm9yIGF1dG8gZGVmYXVsdHMgKi9cbiAgd2l0aERlZmF1bHQ/OiBzdHJpbmcgfCBib29sZWFuO1xuICAvKiogRmllbGQgc3RhdGUgKi9cbiAgc3RhdGU6IENvbXBvbmVudFN0YXRlO1xuICAvKiogTGFiZWwgZm9yIFwiZnJvbVwiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tTGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBmb3IgXCJ0b1wiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICB0b0xhYmVsPzogc3RyaW5nO1xuICAvKiogUGxhY2Vob2xkZXIgZm9yIFwiZnJvbVwiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgXCJ0b1wiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICB0b1BsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8vIGkxOG4gc3VwcG9ydCBwcm9wZXJ0aWVzXG4gIC8qKiBLZXkgZm9yIGNvbnRlbnQgbG9va3VwICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogRmFsbGJhY2sgdGV4dCBpZiBjb250ZW50IGtleSBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuXG4gIC8vIHNlbGVjdC1pbnB1dCBzcGVjaWZpYyBpMThuIHByb3BlcnRpZXNcbiAgLyoqIEN1c3RvbSBoZWFkZXIgdGV4dCBmb3Igc2VsZWN0IG1vZGFsICovXG4gIG1vZGFsSGVhZGVyPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIGNhbmNlbCBidXR0b24gdGV4dCBmb3Igc2VsZWN0IG1vZGFsICovXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG4gIC8qKiBDdXN0b20gT0sgYnV0dG9uIHRleHQgZm9yIHNlbGVjdCBtb2RhbCAqL1xuICBva1RleHQ/OiBzdHJpbmc7XG4gIC8qKiBJbnRlcmZhY2UgZGVsIGlvbi1zZWxlY3QgKGRlZmF1bHQ6ICdwb3BvdmVyJykuICdtb2RhbCcgcGFyYSBsaXN0YXMgbGFyZ2FzLiAqL1xuICBzZWxlY3RJbnRlcmZhY2U/OiAncG9wb3ZlcicgfCAnbW9kYWwnIHwgJ2FjdGlvbi1zaGVldCcgfCAnYWxlcnQnO1xuXG4gIC8vIGNoZWNrLWlucHV0IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgLyoqIFBvc2l0aW9uIG9mIGxhYmVsIGZvciBjaGVja2JveCAoJ3N0YXJ0JyB8ICdlbmQnKSAqL1xuICBsYWJlbFBsYWNlbWVudD86ICdzdGFydCcgfCAnZW5kJztcblxuICAvLyBQSU5fQ09ERSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIC8qKiBOdW1iZXIgb2YgZGlnaXRzIGluIFBJTiAoZGVmYXVsdDogNSwgb25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgbGVuZ3RoPzogbnVtYmVyO1xuICAvKiogU2l6ZSBvZiB0aGUgaW5wdXQgYm94ZXM6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgKGRlZmF1bHQ6ICdtZWRpdW0nLCBvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcbiAgLyoqIEFsbG93IG9ubHkgbnVtYmVycyAoZGVmYXVsdDogdHJ1ZSwgb25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgYWxsb3dOdW1iZXJzT25seT86IGJvb2xlYW47XG4gIC8qKiBNYXNrIGlucHV0IC0gc2hvdyBkb3RzIGluc3RlYWQgb2YgY2hhcmFjdGVycyAob25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgbWFzaz86IGJvb2xlYW47XG4gIC8qKiBBdXRvIGZvY3VzIGZpcnN0IGlucHV0IChvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIGlucHV0IHN0eWxlcyAob25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgaW5wdXRTdHlsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBVcGxvYWQgZnVuY3Rpb24gKG9ubHkgZm9yIEFUVEFDSE1FTlQgdHlwZSkuIFJlY2VpdmVzIGEgRmlsZSwgbXVzdCByZXNvbHZlIHRvIHRoZSB1cGxvYWRlZCBVUkwuICovXG4gIHVwbG9hZEZuPzogKGZpbGU6IEZpbGUpID0+IFByb21pc2U8c3RyaW5nPjtcbn07XG5cbi8qKlxuICogQSBzZWN0aW9uIGluIGEgZm9ybSwgZ3JvdXBpbmcgbXVsdGlwbGUgZmllbGRzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VjdGlvbiA9IHtcbiAgLyoqIFNlY3Rpb24gbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG9yZGVyICovXG4gIG9yZGVyOiBudW1iZXI7XG4gIC8qKiBGaWVsZHMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gKi9cbiAgZmllbGRzOiBJbnB1dE1ldGFkYXRhW107XG59O1xuXG4vKipcbiAqIERhdGEgc2VudCB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLlxuICovXG5leHBvcnQgdHlwZSBGb3JtU3VibWl0ID0ge1xuICAvKiogRm9ybSBmaWVsZCB2YWx1ZXMgYXMga2V5LXZhbHVlIHBhaXJzICovXG4gIGZpZWxkczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIE9wdGlvbmFsIHRva2VuIGZvciB0aGUgb3BlcmF0aW9uICovXG4gIHRva2VuPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgYSBjb21wbGV0ZSBmb3JtLlxuICovXG5leHBvcnQgdHlwZSBGb3JtTWV0YWRhdGEgPSB7XG4gIC8qKiBGb3JtIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogRm9ybSBzZWN0aW9ucyAqL1xuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcbiAgLyoqIEFjdGlvbiBidXR0b25zIGNvbmZpZ3VyYXRpb24gKi9cbiAgYWN0aW9uczogQnV0dG9uTWV0YWRhdGE7XG4gIC8qKiBHbG9iYWwgZm9ybSBzdGF0ZSAqL1xuICBzdGF0ZTogQ29tcG9uZW50U3RhdGU7XG59O1xuXG4vKipcbiAqIFBvc3NpYmxlIGFjdGlvbiB0eXBlcyBmb3IgYSB0b29sYmFyLlxuICovXG5leHBvcnQgZW51bSBUb29sYmFyQWN0aW9uVHlwZSB7XG4gIEFWQVRBUiA9ICdBVkFUQVInLFxuICBJQ09OID0gJ0lDT04nLFxuICBJTUFHRSA9ICdJTUFHRScsXG4gIEJVVFRPTiA9ICdCVVRUT04nLFxufVxuXG4vKipcbiAqIFRvb2xiYXIgYWN0aW9uIGRlZmluaXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFRvb2xiYXJBY3Rpb24gPSB7XG4gIC8qKiBBY3Rpb24gdHlwZSAqL1xuICB0eXBlOiAnQVZBVEFSJyB8ICdJQ09OJyB8ICdJTUFHRScgfCAnQlVUVE9OJztcbiAgLyoqIE9wdGlvbmFsIHRva2VuIGlkZW50aWZpZXIgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBUb29sYmFyIHBvc2l0aW9uICovXG4gIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ2NlbnRlcic7XG4gIC8qKiBPcHRpb25hbCBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEFzc29jaWF0ZWQgaW1hZ2UgKGlmIGFueSkgKi9cbiAgaW1hZ2U/OiBJbWFnZU1ldGFkYXRhO1xuICAvKipcbiAgICogVXNlciBzaGFwZSBwYXJhIGVsIG1vZG8gYEFWQVRBUmAg4oCUIGhhYmlsaXRhIGZhbGxiYWNrIGludGVsaWdlbnRlOlxuICAgKiBmb3RvIOKGkiBpbmljaWFsZXMgKGRlIGBuYW1lYC9gZW1haWxgKSDihpIgaWNvbm8gcGVyc29uYS4gU2kgc2Ugb21pdGUsIGVsXG4gICAqIHRvb2xiYXIgc29sbyBtdWVzdHJhIGxhIGltYWdlbiBwYXNhZGEgZW4gYGRlc2NyaXB0aW9uYC5cbiAgICovXG4gIHVzZXI/OiB7IG5hbWU/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nOyBhdmF0YXJVcmw/OiBzdHJpbmc7IGhhbmRsZT86IHN0cmluZyB9IHwgbnVsbDtcbiAgLyoqIENvbnRyb2xzIGF2YXRhciBzaXplIHdoZW4gdHlwZSBpcyBBVkFUQVIuIERlZmF1bHRzIHRvICdzbWFsbCcuICovXG4gIGF2YXRhclNpemU/OiAneHNtYWxsJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJztcbn07XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIGFuIGljb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbk1ldGFkYSB7XG4gIC8qKiBJY29uIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogSWNvbiBzbG90IHBvc2l0aW9uICovXG4gIHNsb3Q6ICdzdGFydCcgfCAnZW5kJztcbn1cblxuLyoqXG4gKiBCdXR0b24gY29uZmlndXJhdGlvbiBvYmplY3QuXG4gKiBTdXBwb3J0cyBib3RoIHN0YXRpYyBhbmQgcmVhY3RpdmUgY29udGVudC5cbiAqIEB0eXBlIHtCdXR0b25NZXRhZGF0YX1cbiAqIEBwcm9wZXJ0eSB0ZXh0IC0gU3RhdGljIGJ1dHRvbiBsYWJlbCAodGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRleHRDb25maWcpLlxuICogQHByb3BlcnR5IHRleHRDb25maWcgLSBSZWFjdGl2ZSBjb250ZW50IGNvbmZpZ3VyYXRpb24gZm9yIGJ1dHRvbiB0ZXh0LlxuICogQHByb3BlcnR5IGNvbG9yIC0gVGhlIGJ1dHRvbiBjb2xvciAoSW9uaWMgY29sb3Igc3RyaW5nKS5cbiAqIEBwcm9wZXJ0eSBpY29uIC0gSWNvbiB0byBkaXNwbGF5IChvcHRpb25hbCkuXG4gKiBAcHJvcGVydHkgc3RhdGUgLSBCdXR0b24gc3RhdGUgKGVuYWJsZWQsIGRpc2FibGVkLCB3b3JraW5nLCBldGMuKS5cbiAqIEBwcm9wZXJ0eSBleHBhbmQsIGZpbGwsIHNpemUsIHNoYXBlLCBocmVmLCB0YXJnZXQsIGRvd25sb2FkLCBoYW5kbGVyLCBldGMuIC0gU2VlIEJ1dHRvbk1ldGFkYXRhIGZvciBhbGwgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdXR0b25NZXRhZGF0YSB7XG4gIC8qKiBBc3NvY2lhdGVkIGFjdGlvbiB0eXBlICovXG4gIGFjdGlvblR5cGU/OiBBY3Rpb25UeXBlO1xuICAvKiogQnV0dG9uIGV4cGFuc2lvbiAqL1xuICBleHBhbmQ/OiAnZnVsbCcgfCAnYmxvY2snO1xuICAvKiogQXNzb2NpYXRlZCBsaW5rICovXG4gIGxpbms/OiBzdHJpbmc7XG4gIC8qKiBBc3NvY2lhdGVkIGhyZWYgbGluayAqL1xuICBocmVmPzogc3RyaW5nO1xuICAvKiogTGluayB0YXJnZXQgKi9cbiAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xuICAvKiogRG93bmxvYWQgZmlsZSBuYW1lICovXG4gIGRvd25sb2FkPzogc3RyaW5nO1xuICAvKiogQnV0dG9uIGNvbG9yICovXG4gIGNvbG9yOiBDb2xvcjtcbiAgLyoqIEJ1dHRvbiBzdGF0ZSAqL1xuICBzdGF0ZTogQ29tcG9uZW50U3RhdGU7XG4gIC8qKiBTdGF0aWMgZGlzcGxheSB0ZXh0ICh0YWtlcyBwcmVjZWRlbmNlIG92ZXIgcmVhY3RpdmUgY29udGVudCkgKi9cbiAgdGV4dD86IHN0cmluZztcbiAgLyoqIFJlYWN0aXZlIGNvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgYnV0dG9uIHRleHQgKi9cbiAgY29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbXBvbmVudCBjbGFzcyBuYW1lIGZvciBjb250ZW50IGxvb2t1cCAocmVxdWlyZWQgd2l0aCBjb250ZW50S2V5KSAqL1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBGYWxsYmFjayB0ZXh0IGlmIGNvbnRlbnRLZXkgaXMgbm90IGZvdW5kICovXG4gIGNvbnRlbnRGYWxsYmFjaz86IHN0cmluZztcbiAgLyoqIFZhbHVlcyB0byBpbnRlcnBvbGF0ZSBpbnRvIHRoZSBjb250ZW50IHN0cmluZyAqL1xuICBjb250ZW50SW50ZXJwb2xhdGlvbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj47XG4gIC8qKiBBc3NvY2lhdGVkIGljb24gKi9cbiAgaWNvbj86IEljb25NZXRhZGE7XG4gIC8qKiBCdXR0b24gc2hhcGUgKi9cbiAgc2hhcGU/OiAncm91bmQnO1xuICAvKiogQnV0dG9uIHNpemUgKi9cbiAgc2l6ZT86ICdzbWFsbCcgfCAnZGVmYXVsdCcgfCAnbGFyZ2UnO1xuICAvKiogQnV0dG9uIGZpbGwgKi9cbiAgZmlsbD86ICdjbGVhcicgfCAnb3V0bGluZScgfCAnc29saWQnIHwgJ2RlZmF1bHQnO1xuICAvKiogQnV0dG9uIHR5cGUgKi9cbiAgdHlwZTogJ2J1dHRvbicgfCAnc3VibWl0JyB8ICdyZXNldCc7XG4gIC8qKiBPcHRpb25hbCB0b2tlbiBpZGVudGlmaWVyICovXG4gIHRva2VuPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgcmVmZXJlbmNlICovXG4gIHJlZj86IGFueTtcbiAgLyoqIEFjdGlvbiBoYW5kbGVyICovXG4gIGhhbmRsZXI/OiAodmFsdWU6IGFueSkgPT4gYW55IHwgUHJvbWlzZTxhbnk+O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHJlYWN0aXZlIGNvbnRlbnQgaW4gdmFsLWJ1dHRvbiBjb21wb25lbnQuXG4gKiBVc2UgdGhpcyBpbnRlcmZhY2Ugd2hlbiB5b3Ugb25seSBuZWVkIHRvIHNwZWNpZnkgY29udGVudC1yZWxhdGVkIHByb3BlcnRpZXMuXG4gKiBUaGlzIGZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBUZXh0Q29udGVudENvbmZpZyBmb3IgY29uc2lzdGVuY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uQ29udGVudENvbmZpZyB7XG4gIGNvbnRlbnRLZXk6IHN0cmluZztcbiAgY29udGVudENsYXNzOiBzdHJpbmc7XG4gIGNvbnRlbnRGYWxsYmFjaz86IHN0cmluZztcbiAgY29udGVudEludGVycG9sYXRpb24/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+O1xufVxuIl19
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLEdBQW1CLFNBQVMsQ0FBQztBQUMxQyxNQUFNLFFBQVEsR0FBbUIsVUFBVSxDQUFDO0FBQzVDLE1BQU0sT0FBTyxHQUFtQixTQUFTLENBQUM7QUFDMUMsTUFBTSxLQUFLLEdBQW1CLE9BQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRXJFOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQixpRUFBZSxDQUFBO0lBQ2YsbUVBQWdCLENBQUE7SUFDaEIsaUVBQWUsQ0FBQTtJQUNmLCtEQUFjLENBQUE7SUFDZCx1RUFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBTlcsVUFBVSxLQUFWLFVBQVUsUUFNckI7QUFjRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFNBMEJYO0FBMUJELFdBQVksU0FBUztJQUNuQix5Q0FBSSxDQUFBO0lBQ0osaURBQVEsQ0FBQTtJQUNSLDJDQUFLLENBQUE7SUFDTCxpREFBUSxDQUFBO0lBQ1IsK0NBQU8sQ0FBQTtJQUNQLDZDQUFNLENBQUE7SUFDTiw2REFBYyxDQUFBO0lBQ2QsaURBQVEsQ0FBQTtJQUNSLHlDQUFJLENBQUE7SUFDSixxREFBVSxDQUFBO0lBQ1YsMENBQUksQ0FBQTtJQUNKLDRDQUFLLENBQUE7SUFDTCw0Q0FBSyxDQUFBO0lBQ0wsOENBQU0sQ0FBQTtJQUNOLDREQUFhLENBQUE7SUFDYiwwREFBWSxDQUFBO0lBQ1osd0VBQW1CLENBQUE7SUFDbkIsMENBQUksQ0FBQTtJQUNKLDhDQUFNLENBQUE7SUFDTiw0Q0FBSyxDQUFBO0lBQ0wsNENBQUssQ0FBQTtJQUNMLGtEQUFRLENBQUE7SUFDUiw4REFBYyxDQUFBO0lBQ2QsOENBQU0sQ0FBQTtJQUNOLHNEQUFVLENBQUE7QUFDWixDQUFDLEVBMUJXLFNBQVMsS0FBVCxTQUFTLFFBMEJwQjtBQXdKRDs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0Isc0NBQWlCLENBQUE7SUFDakIsa0NBQWEsQ0FBQTtJQUNiLG9DQUFlLENBQUE7SUFDZixzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vYXRvbXMvaW1hZ2UvdHlwZXMnO1xuXG4vKipcbiAqIFBvc3NpYmxlIHN0YXRlcyBmb3IgYW4gaW50ZXJhY3RpdmUgY29tcG9uZW50LlxuICovXG5leHBvcnQgdHlwZSBDb21wb25lbnRTdGF0ZSA9ICdFTkFCTEVEJyB8ICdESVNBQkxFRCcgfCAnV09SS0lORycgfCAnRVJST1InO1xuY29uc3QgRU5BQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRU5BQkxFRCc7XG5jb25zdCBESVNBQkxFRDogQ29tcG9uZW50U3RhdGUgPSAnRElTQUJMRUQnO1xuY29uc3QgV09SS0lORzogQ29tcG9uZW50U3RhdGUgPSAnV09SS0lORyc7XG5jb25zdCBFUlJPUjogQ29tcG9uZW50U3RhdGUgPSAnRVJST1InO1xuXG4vKipcbiAqIE9iamVjdCBjb250YWluaW5nIGFsbCBwb3NzaWJsZSBjb21wb25lbnQgc3RhdGVzLlxuICovXG5leHBvcnQgY29uc3QgQ29tcG9uZW50U3RhdGVzID0geyBFTkFCTEVELCBESVNBQkxFRCwgV09SS0lORywgRVJST1IgfTtcblxuLyoqXG4gKiBUeXBlcyBvZiBhY3Rpb25zIHRoYXQgYSBidXR0b24gb3IgbGluayBjYW4gcGVyZm9ybS5cbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uVHlwZSB7XG4gIEJST1dTRVJfTkVXX1RBQiwgLy8gT3BlbiBpbiBhIG5ldyBicm93c2VyIHRhYlxuICBCUk9XU0VSX0RPV05MT0FELCAvLyBEb3dubG9hZCB2aWEgYnJvd3NlclxuICBOQVRJVkVfRE9XTkxPQUQsIC8vIERvd25sb2FkIHVzaW5nIG5hdGl2ZSBjYXBhYmlsaXRpZXNcbiAgQVBQX05BVklHQVRJT04sIC8vIEludGVybmFsIGFwcCBuYXZpZ2F0aW9uXG4gIEJST1dTRVJfTkFWSUdBVElPTiwgLy8gTmF2aWdhdGlvbiBpbiB0aGUgYnJvd3NlclxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXhlY3V0YWJsZSBhY3Rpb24gZm9yIGEgYnV0dG9uIG9yIGxpbmsuXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbiA9IHtcbiAgLyoqIEFjdGlvbiBkZXNjcmlwdGlvbiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQWN0aW9uIHR5cGUgKi9cbiAgdHlwZTogQWN0aW9uVHlwZTtcbiAgLyoqIEFjdGlvbiBzb3VyY2Ugb3IgZGVzdGluYXRpb24gKi9cbiAgc291cmNlOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFN1cHBvcnRlZCBpbnB1dCB0eXBlcyBmb3IgZm9ybXMuXG4gKi9cbmV4cG9ydCBlbnVtIElucHV0VHlwZSB7XG4gIFRFWFQsXG4gIFRFWFRBUkVBLFxuICBFTUFJTCxcbiAgUEFTU1dPUkQsXG4gIENPTU1FTlQsXG4gIE5VTUJFUixcbiAgTlVNQkVSX0ZST01fVE8sXG4gIFBJTl9DT0RFLFxuICBEQVRFLFxuICBEQVRFX1JBTkdFLFxuICBIT1VSLFxuICBDSEVDSyxcbiAgUkFESU8sXG4gIFNFTEVDVCxcbiAgU0VBUkNIX1NFTEVDVCxcbiAgTVVMVElfU0VMRUNULFxuICBNVUxUSV9TRUxFQ1RfU0lNUExFLFxuICBGSUxFLFxuICBUT0dHTEUsXG4gIFJBTkdFLFxuICBQSE9ORSxcbiAgQ1VSUkVOQ1ksXG4gIENIRUNLQk9YX1JBRElPLFxuICBIQU5ETEUsXG4gIEFUVEFDSE1FTlQsXG59XG5cbi8qKlxuICogT3B0aW9uIGZvciBzZWxlY3QsIHJhZGlvLCBldGMuIGlucHV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5wdXRPcHRpb24gPSB7XG4gIC8qKiBVbmlxdWUgb3B0aW9uIGlkZW50aWZpZXIgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdCAqL1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG4gIC8qKiBEaXNwbGF5IG9yZGVyICovXG4gIG9yZGVyOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIE1ldGFkYXRhIGZvciBhIGZvcm0gZmllbGQuXG4gKi9cbmV4cG9ydCB0eXBlIElucHV0TWV0YWRhdGEgPSB7XG4gIC8qKiBBc3NvY2lhdGVkIGZvcm0gY29udHJvbCAob3B0aW9uYWwsIGNyZWF0ZWQgaW50ZXJuYWxseSBieSB2YWwtZm9ybSkgKi9cbiAgY29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogRnJvbSBjb250cm9sIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tQ29udHJvbD86IEZvcm1Db250cm9sO1xuICAvKiogVG8gY29udHJvbCAob25seSBmb3IgTlVNQkVSX0ZST01fVE8gdHlwZSkgKi9cbiAgdG9Db250cm9sPzogRm9ybUNvbnRyb2w7XG4gIC8qKiBVbmlxdWUgdG9rZW4gZm9yIHRoZSBpbnB1dCAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogRGlzcGxheSBsYWJlbCAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgKHNob3duIGJlbG93IGlucHV0LCBmb3IgdmFsaWRhdGlvbiBoaW50cykgKi9cbiAgaGludDogc3RyaW5nO1xuICAvKiogRGVzY3JpcHRpb24gdGV4dCAoc2hvd24gYmVsb3cgbGFiZWwsIGV4cGxhaW5zIHRoZSBmaWVsZCBwdXJwb3NlKSAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElucHV0IHBsYWNlaG9sZGVyICovXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIC8qKiBJbnB1dCB0eXBlICovXG4gIHR5cGU6IElucHV0VHlwZTtcbiAgLyoqIERpc3BsYXkgb3JkZXIgKi9cbiAgb3JkZXI6IG51bWJlcjtcbiAgLyoqIEFzc29jaWF0ZWQgdmFsaWRhdG9ycyAqL1xuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuICAvKiogT3B0aW9ucyAoZm9yIHNlbGVjdCwgcmFkaW8sIGV0Yy4pICovXG4gIG9wdGlvbnM/OiBJbnB1dE9wdGlvbltdO1xuICAvKiogQWxsb3dlZCByYW5nZSAoZm9yIG51bWJlciwgZGF0ZSwgZXRjLikgKi9cbiAgcmFuZ2U/OiB7XG4gICAgbWluOiBudW1iZXI7XG4gICAgbWF4OiBudW1iZXI7XG4gIH07XG4gIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZXMgKi9cbiAgZXJyb3JzOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuICAvKiogSW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZpZWxkICovXG4gIHZhbHVlPzogc3RyaW5nO1xuICAvKiogRGVmYXVsdCB2YWx1ZSBjb25maWd1cmF0aW9uIC0gc3RyaW5nIGZvciBjdXN0b20gZGVmYXVsdHMsIHRydWUgZm9yIGF1dG8gZGVmYXVsdHMgKi9cbiAgd2l0aERlZmF1bHQ/OiBzdHJpbmcgfCBib29sZWFuO1xuICAvKiogRmllbGQgc3RhdGUgKi9cbiAgc3RhdGU6IENvbXBvbmVudFN0YXRlO1xuICAvKiogTGFiZWwgZm9yIFwiZnJvbVwiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tTGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBmb3IgXCJ0b1wiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICB0b0xhYmVsPzogc3RyaW5nO1xuICAvKiogUGxhY2Vob2xkZXIgZm9yIFwiZnJvbVwiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICBmcm9tUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgXCJ0b1wiIGZpZWxkIChvbmx5IGZvciBOVU1CRVJfRlJPTV9UTyB0eXBlKSAqL1xuICB0b1BsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8vIGkxOG4gc3VwcG9ydCBwcm9wZXJ0aWVzXG4gIC8qKiBLZXkgZm9yIGNvbnRlbnQgbG9va3VwICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogRmFsbGJhY2sgdGV4dCBpZiBjb250ZW50IGtleSBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuXG4gIC8vIHNlbGVjdC1pbnB1dCBzcGVjaWZpYyBpMThuIHByb3BlcnRpZXNcbiAgLyoqIEN1c3RvbSBoZWFkZXIgdGV4dCBmb3Igc2VsZWN0IG1vZGFsICovXG4gIG1vZGFsSGVhZGVyPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIGNhbmNlbCBidXR0b24gdGV4dCBmb3Igc2VsZWN0IG1vZGFsICovXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XG4gIC8qKiBDdXN0b20gT0sgYnV0dG9uIHRleHQgZm9yIHNlbGVjdCBtb2RhbCAqL1xuICBva1RleHQ/OiBzdHJpbmc7XG4gIC8qKiBJbnRlcmZhY2UgZGVsIGlvbi1zZWxlY3QgKGRlZmF1bHQ6ICdwb3BvdmVyJykuICdtb2RhbCcgcGFyYSBsaXN0YXMgbGFyZ2FzLiAqL1xuICBzZWxlY3RJbnRlcmZhY2U/OiAncG9wb3ZlcicgfCAnbW9kYWwnIHwgJ2FjdGlvbi1zaGVldCcgfCAnYWxlcnQnO1xuXG4gIC8vIGNoZWNrLWlucHV0IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgLyoqIFBvc2l0aW9uIG9mIGxhYmVsIGZvciBjaGVja2JveCAoJ3N0YXJ0JyB8ICdlbmQnKSAqL1xuICBsYWJlbFBsYWNlbWVudD86ICdzdGFydCcgfCAnZW5kJztcblxuICAvLyBQSU5fQ09ERSBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIC8qKiBOdW1iZXIgb2YgZGlnaXRzIGluIFBJTiAoZGVmYXVsdDogNSwgb25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgbGVuZ3RoPzogbnVtYmVyO1xuICAvKiogU2l6ZSBvZiB0aGUgaW5wdXQgYm94ZXM6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgKGRlZmF1bHQ6ICdtZWRpdW0nLCBvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcbiAgLyoqIEFsbG93IG9ubHkgbnVtYmVycyAoZGVmYXVsdDogdHJ1ZSwgb25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgYWxsb3dOdW1iZXJzT25seT86IGJvb2xlYW47XG4gIC8qKiBNYXNrIGlucHV0IC0gc2hvdyBkb3RzIGluc3RlYWQgb2YgY2hhcmFjdGVycyAob25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgbWFzaz86IGJvb2xlYW47XG4gIC8qKiBBdXRvIGZvY3VzIGZpcnN0IGlucHV0IChvbmx5IGZvciBQSU5fQ09ERSB0eXBlKSAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICAvKiogQ3VzdG9tIGlucHV0IHN0eWxlcyAob25seSBmb3IgUElOX0NPREUgdHlwZSkgKi9cbiAgaW5wdXRTdHlsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKiBVcGxvYWQgZnVuY3Rpb24gKG9ubHkgZm9yIEFUVEFDSE1FTlQgdHlwZSkuIFJlY2VpdmVzIGEgRmlsZSwgbXVzdCByZXNvbHZlIHRvIHRoZSB1cGxvYWRlZCBVUkwuICovXG4gIHVwbG9hZEZuPzogKGZpbGU6IEZpbGUpID0+IFByb21pc2U8c3RyaW5nPjtcbn07XG5cbi8qKlxuICogQSBzZWN0aW9uIGluIGEgZm9ybSwgZ3JvdXBpbmcgbXVsdGlwbGUgZmllbGRzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VjdGlvbiA9IHtcbiAgLyoqIFNlY3Rpb24gbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG9yZGVyICovXG4gIG9yZGVyOiBudW1iZXI7XG4gIC8qKiBGaWVsZHMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gKi9cbiAgZmllbGRzOiBJbnB1dE1ldGFkYXRhW107XG59O1xuXG4vKipcbiAqIERhdGEgc2VudCB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLlxuICovXG5leHBvcnQgdHlwZSBGb3JtU3VibWl0ID0ge1xuICAvKiogRm9ybSBmaWVsZCB2YWx1ZXMgYXMga2V5LXZhbHVlIHBhaXJzICovXG4gIGZpZWxkczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIE9wdGlvbmFsIHRva2VuIGZvciB0aGUgb3BlcmF0aW9uICovXG4gIHRva2VuPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgYSBjb21wbGV0ZSBmb3JtLlxuICovXG5leHBvcnQgdHlwZSBGb3JtTWV0YWRhdGEgPSB7XG4gIC8qKiBGb3JtIG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogRm9ybSBzZWN0aW9ucyAqL1xuICBzZWN0aW9uczogRm9ybVNlY3Rpb25bXTtcbiAgLyoqIEFjdGlvbiBidXR0b25zIGNvbmZpZ3VyYXRpb24gKi9cbiAgYWN0aW9uczogQnV0dG9uTWV0YWRhdGE7XG4gIC8qKiBHbG9iYWwgZm9ybSBzdGF0ZSAqL1xuICBzdGF0ZTogQ29tcG9uZW50U3RhdGU7XG4gIC8qKlxuICAgKiBFc3BhY2lvIHZlcnRpY2FsIGVudHJlIGNhbXBvcywgZW4gcHguIFNpIHNlIG9taXRlLCB1c2EgZWwgZGVmYXVsdFxuICAgKiByZXNwb25zaXZvIGRlIGxhIGxpYiAoOHB4IG1vYmlsZSAvIDEycHggZGVza3RvcCkuIMOadGlsIHBhcmEgZm9ybXVsYXJpb3NcbiAgICogZGVuc29zIG8gbcOhcyBhaXJlYWRvcyBzaW4gdG9jYXIgQ1NTIGRlbCBjb25zdW1lci5cbiAgICovXG4gIGZpZWxkU3BhY2luZz86IG51bWJlcjtcbn07XG5cbi8qKlxuICogUG9zc2libGUgYWN0aW9uIHR5cGVzIGZvciBhIHRvb2xiYXIuXG4gKi9cbmV4cG9ydCBlbnVtIFRvb2xiYXJBY3Rpb25UeXBlIHtcbiAgQVZBVEFSID0gJ0FWQVRBUicsXG4gIElDT04gPSAnSUNPTicsXG4gIElNQUdFID0gJ0lNQUdFJyxcbiAgQlVUVE9OID0gJ0JVVFRPTicsXG59XG5cbi8qKlxuICogVG9vbGJhciBhY3Rpb24gZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVG9vbGJhckFjdGlvbiA9IHtcbiAgLyoqIEFjdGlvbiB0eXBlICovXG4gIHR5cGU6ICdBVkFUQVInIHwgJ0lDT04nIHwgJ0lNQUdFJyB8ICdCVVRUT04nO1xuICAvKiogT3B0aW9uYWwgdG9rZW4gaWRlbnRpZmllciAqL1xuICB0b2tlbj86IHN0cmluZztcbiAgLyoqIFRvb2xiYXIgcG9zaXRpb24gKi9cbiAgcG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJztcbiAgLyoqIE9wdGlvbmFsIGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogQXNzb2NpYXRlZCBpbWFnZSAoaWYgYW55KSAqL1xuICBpbWFnZT86IEltYWdlTWV0YWRhdGE7XG4gIC8qKlxuICAgKiBVc2VyIHNoYXBlIHBhcmEgZWwgbW9kbyBgQVZBVEFSYCDigJQgaGFiaWxpdGEgZmFsbGJhY2sgaW50ZWxpZ2VudGU6XG4gICAqIGZvdG8g4oaSIGluaWNpYWxlcyAoZGUgYG5hbWVgL2BlbWFpbGApIOKGkiBpY29ubyBwZXJzb25hLiBTaSBzZSBvbWl0ZSwgZWxcbiAgICogdG9vbGJhciBzb2xvIG11ZXN0cmEgbGEgaW1hZ2VuIHBhc2FkYSBlbiBgZGVzY3JpcHRpb25gLlxuICAgKi9cbiAgdXNlcj86IHsgbmFtZT86IHN0cmluZzsgZW1haWw/OiBzdHJpbmc7IGF2YXRhclVybD86IHN0cmluZzsgaGFuZGxlPzogc3RyaW5nIH0gfCBudWxsO1xuICAvKiogQ29udHJvbHMgYXZhdGFyIHNpemUgd2hlbiB0eXBlIGlzIEFWQVRBUi4gRGVmYXVsdHMgdG8gJ3NtYWxsJy4gKi9cbiAgYXZhdGFyU2l6ZT86ICd4c21hbGwnIHwgJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICd4bGFyZ2UnO1xufTtcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgYW4gaWNvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY29uTWV0YWRhIHtcbiAgLyoqIEljb24gbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBJY29uIHNsb3QgcG9zaXRpb24gKi9cbiAgc2xvdDogJ3N0YXJ0JyB8ICdlbmQnO1xufVxuXG4vKipcbiAqIEJ1dHRvbiBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAqIFN1cHBvcnRzIGJvdGggc3RhdGljIGFuZCByZWFjdGl2ZSBjb250ZW50LlxuICogQHR5cGUge0J1dHRvbk1ldGFkYXRhfVxuICogQHByb3BlcnR5IHRleHQgLSBTdGF0aWMgYnV0dG9uIGxhYmVsICh0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGV4dENvbmZpZykuXG4gKiBAcHJvcGVydHkgdGV4dENvbmZpZyAtIFJlYWN0aXZlIGNvbnRlbnQgY29uZmlndXJhdGlvbiBmb3IgYnV0dG9uIHRleHQuXG4gKiBAcHJvcGVydHkgY29sb3IgLSBUaGUgYnV0dG9uIGNvbG9yIChJb25pYyBjb2xvciBzdHJpbmcpLlxuICogQHByb3BlcnR5IGljb24gLSBJY29uIHRvIGRpc3BsYXkgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBzdGF0ZSAtIEJ1dHRvbiBzdGF0ZSAoZW5hYmxlZCwgZGlzYWJsZWQsIHdvcmtpbmcsIGV0Yy4pLlxuICogQHByb3BlcnR5IGV4cGFuZCwgZmlsbCwgc2l6ZSwgc2hhcGUsIGhyZWYsIHRhcmdldCwgZG93bmxvYWQsIGhhbmRsZXIsIGV0Yy4gLSBTZWUgQnV0dG9uTWV0YWRhdGEgZm9yIGFsbCBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbk1ldGFkYXRhIHtcbiAgLyoqIEFzc29jaWF0ZWQgYWN0aW9uIHR5cGUgKi9cbiAgYWN0aW9uVHlwZT86IEFjdGlvblR5cGU7XG4gIC8qKiBCdXR0b24gZXhwYW5zaW9uICovXG4gIGV4cGFuZD86ICdmdWxsJyB8ICdibG9jayc7XG4gIC8qKiBBc3NvY2lhdGVkIGxpbmsgKi9cbiAgbGluaz86IHN0cmluZztcbiAgLyoqIEFzc29jaWF0ZWQgaHJlZiBsaW5rICovXG4gIGhyZWY/OiBzdHJpbmc7XG4gIC8qKiBMaW5rIHRhcmdldCAqL1xuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XG4gIC8qKiBEb3dubG9hZCBmaWxlIG5hbWUgKi9cbiAgZG93bmxvYWQ/OiBzdHJpbmc7XG4gIC8qKiBCdXR0b24gY29sb3IgKi9cbiAgY29sb3I6IENvbG9yO1xuICAvKiogQnV0dG9uIHN0YXRlICovXG4gIHN0YXRlOiBDb21wb25lbnRTdGF0ZTtcbiAgLyoqIFN0YXRpYyBkaXNwbGF5IHRleHQgKHRha2VzIHByZWNlZGVuY2Ugb3ZlciByZWFjdGl2ZSBjb250ZW50KSAqL1xuICB0ZXh0Pzogc3RyaW5nO1xuICAvKiogUmVhY3RpdmUgY29udGVudCBjb25maWd1cmF0aW9uIGZvciBidXR0b24gdGV4dCAqL1xuICBjb250ZW50S2V5Pzogc3RyaW5nO1xuICAvKiogQ29tcG9uZW50IGNsYXNzIG5hbWUgZm9yIGNvbnRlbnQgbG9va3VwIChyZXF1aXJlZCB3aXRoIGNvbnRlbnRLZXkpICovXG4gIGNvbnRlbnRDbGFzcz86IHN0cmluZztcbiAgLyoqIEZhbGxiYWNrIHRleHQgaWYgY29udGVudEtleSBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuICAvKiogVmFsdWVzIHRvIGludGVycG9sYXRlIGludG8gdGhlIGNvbnRlbnQgc3RyaW5nICovXG4gIGNvbnRlbnRJbnRlcnBvbGF0aW9uPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPjtcbiAgLyoqIEFzc29jaWF0ZWQgaWNvbiAqL1xuICBpY29uPzogSWNvbk1ldGFkYTtcbiAgLyoqIEJ1dHRvbiBzaGFwZSAqL1xuICBzaGFwZT86ICdyb3VuZCc7XG4gIC8qKiBCdXR0b24gc2l6ZSAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdkZWZhdWx0JyB8ICdsYXJnZSc7XG4gIC8qKiBCdXR0b24gZmlsbCAqL1xuICBmaWxsPzogJ2NsZWFyJyB8ICdvdXRsaW5lJyB8ICdzb2xpZCcgfCAnZGVmYXVsdCc7XG4gIC8qKiBCdXR0b24gdHlwZSAqL1xuICB0eXBlOiAnYnV0dG9uJyB8ICdzdWJtaXQnIHwgJ3Jlc2V0JztcbiAgLyoqIE9wdGlvbmFsIHRva2VuIGlkZW50aWZpZXIgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCByZWZlcmVuY2UgKi9cbiAgcmVmPzogYW55O1xuICAvKiogQWN0aW9uIGhhbmRsZXIgKi9cbiAgaGFuZGxlcj86ICh2YWx1ZTogYW55KSA9PiBhbnkgfCBQcm9taXNlPGFueT47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgcmVhY3RpdmUgY29udGVudCBpbiB2YWwtYnV0dG9uIGNvbXBvbmVudC5cbiAqIFVzZSB0aGlzIGludGVyZmFjZSB3aGVuIHlvdSBvbmx5IG5lZWQgdG8gc3BlY2lmeSBjb250ZW50LXJlbGF0ZWQgcHJvcGVydGllcy5cbiAqIFRoaXMgZm9sbG93cyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFRleHRDb250ZW50Q29uZmlnIGZvciBjb25zaXN0ZW5jeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Db250ZW50Q29uZmlnIHtcbiAgY29udGVudEtleTogc3RyaW5nO1xuICBjb250ZW50Q2xhc3M6IHN0cmluZztcbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuICBjb250ZW50SW50ZXJwb2xhdGlvbj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj47XG59XG4iXX0=
|
|
@@ -48,4 +48,4 @@ export { ContentTransformer, toArticle } from './transformer';
|
|
|
48
48
|
export { BlogPostBuilder, blogPost } from './content-types/blog';
|
|
49
49
|
export { DocsBuilder, docs } from './content-types/documentation';
|
|
50
50
|
export { NewsBuilder, news } from './content-types/news';
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2NvbnRlbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQ0c7QUF3QkgsY0FBYztBQUNkLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBWSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUE2QixXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0YsT0FBTyxFQUFlLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGVudCBUeXBlcyBNb2R1bGVcbiAqXG4gKiBQcm92aWRlcyBhIGZsZXhpYmxlIGNvbnRlbnQgYWJzdHJhY3Rpb24gbGF5ZXIgdGhhdCB0cmFuc2Zvcm1zXG4gKiBzdHJ1Y3R1cmVkIGNvbnRlbnQgZG9jdW1lbnRzIGludG8gQXJ0aWNsZU1ldGFkYXRhIGZvciByZW5kZXJpbmdcbiAqIHdpdGggdGhlIHZhbC1hcnRpY2xlIGNvbXBvbmVudC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gVXNpbmcgQmxvZ1Bvc3RCdWlsZGVyXG4gKiBpbXBvcnQgeyBibG9nUG9zdCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3QgcG9zdCA9IGJsb2dQb3N0KClcbiAqICAgLnRpdGxlKCdNeSBGaXJzdCBQb3N0JylcbiAqICAgLmF1dGhvcignSm9obiBEb2UnKVxuICogICAuaGVhZGluZygnSW50cm9kdWN0aW9uJylcbiAqICAgLnBhcmFncmFwaCgnV2VsY29tZSB0byBteSBibG9nLi4uJylcbiAqICAgLnRvQXJ0aWNsZSgpO1xuICpcbiAqIC8vIFVzaW5nIERvY3NCdWlsZGVyXG4gKiBpbXBvcnQgeyBkb2NzIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCBwYWdlID0gZG9jcygpXG4gKiAgIC50aXRsZSgnSW5zdGFsbGF0aW9uJylcbiAqICAgLnNlY3Rpb24oJ0dldHRpbmcgU3RhcnRlZCcpXG4gKiAgIC5jb2RlKCducG0gaW5zdGFsbCB2YWx0ZWNoLWNvbXBvbmVudHMnLCAnYmFzaCcpXG4gKiAgIC50b0FydGljbGUoKTtcbiAqXG4gKiAvLyBVc2luZyBOZXdzQnVpbGRlclxuICogaW1wb3J0IHsgbmV3cyB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3QgYXJ0aWNsZSA9IG5ld3MoKVxuICogICAuaGVhZGxpbmUoJ0JyZWFraW5nIE5ld3MnKVxuICogICAuc3VtbWFyeSgnSW1wb3J0YW50IGFubm91bmNlbWVudC4uLicpXG4gKiAgIC5icmVha2luZygpXG4gKiAgIC50b0FydGljbGUoKTtcbiAqXG4gKiAvLyBGcm9tIEpTT04vQVBJIHJlc3BvbnNlXG4gKiBpbXBvcnQgeyBDb250ZW50VHJhbnNmb3JtZXIsIEJsb2dQb3N0IH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBjb25zdCBqc29uOiBCbG9nUG9zdCA9IGF3YWl0IGZldGNoKCcvYXBpL3Bvc3RzLzEnKS50aGVuKHIgPT4gci5qc29uKCkpO1xuICogY29uc3QgYXJ0aWNsZSA9IENvbnRlbnRUcmFuc2Zvcm1lci50b0FydGljbGUoanNvbik7XG4gKiBgYGBcbiAqL1xuXG4vLyBCYXNlIHR5cGVzXG4vLyBOT1RBOiBlbCBgQ29udGVudERvY3VtZW50PFQ+YCBibG9jay1iYXNlZCAoYnVpbGRlcikgc2UgcmVleHBvcnRhIGNvbW9cbi8vIGBDb250ZW50QnVpbGRlckRvY3VtZW50YCBwYXJhIG5vIGNvbGlzaW9uYXIgY29uIGVsIGBDb250ZW50RG9jdW1lbnRgIGZsYXRcbi8vIGNhbsOzbmljbyBkZSBsYSBwbGF0YWZvcm1hIGRlIGNvbnRlbmlkbyAoYHNlcnZpY2VzL2NvbnRlbnQtcGxhdGZvcm1gLCBBRFItMDIwKS5cbmV4cG9ydCB7XG4gIENvbnRlbnRBdXRob3IsXG4gIENvbnRlbnRNZXRhLFxuICBDb250ZW50Q29uZmlnLFxuICBDb250ZW50RG9jdW1lbnQgYXMgQ29udGVudEJ1aWxkZXJEb2N1bWVudCxcbiAgQ29udGVudEJsb2NrLFxuICBIZWFkaW5nQmxvY2ssXG4gIFBhcmFncmFwaEJsb2NrLFxuICBRdW90ZUJsb2NrLFxuICBDb2RlQmxvY2ssXG4gIExpc3RCbG9jayxcbiAgSW1hZ2VCbG9jayxcbiAgQ2FsbG91dEJsb2NrLFxuICBEaXZpZGVyQmxvY2ssXG4gIEJ1dHRvbkJsb2NrLFxuICBDb21tYW5kQmxvY2ssXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBUcmFuc2Zvcm1lclxuZXhwb3J0IHsgQ29udGVudFRyYW5zZm9ybWVyLCB0b0FydGljbGUgfSBmcm9tICcuL3RyYW5zZm9ybWVyJztcblxuLy8gQ29udGVudCB0eXBlc1xuZXhwb3J0IHsgQmxvZ1Bvc3QsIEJsb2dQb3N0QnVpbGRlciwgYmxvZ1Bvc3QgfSBmcm9tICcuL2NvbnRlbnQtdHlwZXMvYmxvZyc7XG5leHBvcnQgeyBEb2N1bWVudGF0aW9uLCBEb2NOYXZMaW5rLCBEb2NzQnVpbGRlciwgZG9jcyB9IGZyb20gJy4vY29udGVudC10eXBlcy9kb2N1bWVudGF0aW9uJztcbmV4cG9ydCB7IE5ld3NBcnRpY2xlLCBOZXdzQnVpbGRlciwgbmV3cyB9IGZyb20gJy4vY29udGVudC10eXBlcy9uZXdzJztcbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { InjectionToken, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Token de inyección para la configuración de la plataforma de contenido.
|
|
4
|
+
*/
|
|
5
|
+
export const VALTECH_CONTENT_CONFIG = new InjectionToken('ValtechContentConfig');
|
|
6
|
+
/**
|
|
7
|
+
* Provee la plataforma de contenido (`ContentService`) a la aplicación Angular.
|
|
8
|
+
*
|
|
9
|
+
* Wire en el `main.ts` de la app consumer. El origen es **híbrido** (ADR-020):
|
|
10
|
+
* el backend siempre está disponible vía `apiUrl`; las `staticSources` son
|
|
11
|
+
* opcionales — factories lazy generadas build-time por `scripts/build-content.ts`
|
|
12
|
+
* (mismo patrón que `provideLegalContent`). Cada locale queda code-split por el
|
|
13
|
+
* `import()` dinámico.
|
|
14
|
+
*
|
|
15
|
+
* @param config - Configuración de contenido (`apiUrl`, `appId`, `staticSources?`).
|
|
16
|
+
* @returns EnvironmentProviders para usar en `bootstrapApplication`.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // main.ts — solo backend
|
|
21
|
+
* provideValtechContent({
|
|
22
|
+
* apiUrl: environment.apiUrl,
|
|
23
|
+
* appId: 'showcase',
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // main.ts — híbrido (estático curado + backend)
|
|
27
|
+
* provideValtechContent({
|
|
28
|
+
* apiUrl: environment.apiUrl,
|
|
29
|
+
* appId: 'web',
|
|
30
|
+
* staticSources: {
|
|
31
|
+
* es: () => import('./app/generated/content-store.es').then(m => m.CONTENT_STORE_ES),
|
|
32
|
+
* en: () => import('./app/generated/content-store.en').then(m => m.CONTENT_STORE_EN),
|
|
33
|
+
* },
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function provideValtechContent(config) {
|
|
38
|
+
return makeEnvironmentProviders([{ provide: VALTECH_CONTENT_CONFIG, useValue: config }]);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LXBsYXRmb3JtL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCxzQkFBc0IsQ0FDdkIsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBNEI7SUFDaEUsT0FBTyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50UHJvdmlkZXJzLCBJbmplY3Rpb25Ub2tlbiwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWx0ZWNoQ29udGVudENvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRva2VuIGRlIGlueWVjY2nDs24gcGFyYSBsYSBjb25maWd1cmFjacOzbiBkZSBsYSBwbGF0YWZvcm1hIGRlIGNvbnRlbmlkby5cbiAqL1xuZXhwb3J0IGNvbnN0IFZBTFRFQ0hfQ09OVEVOVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48VmFsdGVjaENvbnRlbnRDb25maWc+KFxuICAnVmFsdGVjaENvbnRlbnRDb25maWcnXG4pO1xuXG4vKipcbiAqIFByb3ZlZSBsYSBwbGF0YWZvcm1hIGRlIGNvbnRlbmlkbyAoYENvbnRlbnRTZXJ2aWNlYCkgYSBsYSBhcGxpY2FjacOzbiBBbmd1bGFyLlxuICpcbiAqIFdpcmUgZW4gZWwgYG1haW4udHNgIGRlIGxhIGFwcCBjb25zdW1lci4gRWwgb3JpZ2VuIGVzICoqaMOtYnJpZG8qKiAoQURSLTAyMCk6XG4gKiBlbCBiYWNrZW5kIHNpZW1wcmUgZXN0w6EgZGlzcG9uaWJsZSB2w61hIGBhcGlVcmxgOyBsYXMgYHN0YXRpY1NvdXJjZXNgIHNvblxuICogb3BjaW9uYWxlcyDigJQgZmFjdG9yaWVzIGxhenkgZ2VuZXJhZGFzIGJ1aWxkLXRpbWUgcG9yIGBzY3JpcHRzL2J1aWxkLWNvbnRlbnQudHNgXG4gKiAobWlzbW8gcGF0csOzbiBxdWUgYHByb3ZpZGVMZWdhbENvbnRlbnRgKS4gQ2FkYSBsb2NhbGUgcXVlZGEgY29kZS1zcGxpdCBwb3IgZWxcbiAqIGBpbXBvcnQoKWAgZGluw6FtaWNvLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmFjacOzbiBkZSBjb250ZW5pZG8gKGBhcGlVcmxgLCBgYXBwSWRgLCBgc3RhdGljU291cmNlcz9gKS5cbiAqIEByZXR1cm5zIEVudmlyb25tZW50UHJvdmlkZXJzIHBhcmEgdXNhciBlbiBgYm9vdHN0cmFwQXBwbGljYXRpb25gLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBtYWluLnRzIOKAlCBzb2xvIGJhY2tlbmRcbiAqIHByb3ZpZGVWYWx0ZWNoQ29udGVudCh7XG4gKiAgIGFwaVVybDogZW52aXJvbm1lbnQuYXBpVXJsLFxuICogICBhcHBJZDogJ3Nob3djYXNlJyxcbiAqIH0pO1xuICpcbiAqIC8vIG1haW4udHMg4oCUIGjDrWJyaWRvIChlc3TDoXRpY28gY3VyYWRvICsgYmFja2VuZClcbiAqIHByb3ZpZGVWYWx0ZWNoQ29udGVudCh7XG4gKiAgIGFwaVVybDogZW52aXJvbm1lbnQuYXBpVXJsLFxuICogICBhcHBJZDogJ3dlYicsXG4gKiAgIHN0YXRpY1NvdXJjZXM6IHtcbiAqICAgICBlczogKCkgPT4gaW1wb3J0KCcuL2FwcC9nZW5lcmF0ZWQvY29udGVudC1zdG9yZS5lcycpLnRoZW4obSA9PiBtLkNPTlRFTlRfU1RPUkVfRVMpLFxuICogICAgIGVuOiAoKSA9PiBpbXBvcnQoJy4vYXBwL2dlbmVyYXRlZC9jb250ZW50LXN0b3JlLmVuJykudGhlbihtID0+IG0uQ09OVEVOVF9TVE9SRV9FTiksXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVZhbHRlY2hDb250ZW50KGNvbmZpZzogVmFsdGVjaENvbnRlbnRDb25maWcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3sgcHJvdmlkZTogVkFMVEVDSF9DT05URU5UX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable, inject, isDevMode, signal } from '@angular/core';
|
|
3
|
+
import { catchError, forkJoin, from, map, of, switchMap, throwError } from 'rxjs';
|
|
4
|
+
import { MarkdownArticleParserService } from '../markdown-article/markdown-article-parser.service';
|
|
5
|
+
import { VALTECH_CONTENT_CONFIG } from './config';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* Servicio de la plataforma de contenido (ADR-020 §2.5).
|
|
9
|
+
*
|
|
10
|
+
* Une dos orígenes (**híbrido**):
|
|
11
|
+
* - **Estático** — `staticSources` lazy por locale, generadas build-time.
|
|
12
|
+
* - **Backend** — DynamoDB + API (`/v2/content*`), publicación sin redeploy.
|
|
13
|
+
*
|
|
14
|
+
* Reglas de merge:
|
|
15
|
+
* - `list()` une ambos orígenes por `type`. Colisión de `slug` → **estático
|
|
16
|
+
* gana** (contenido curado). Ordena por `publishedAt` desc (sin fecha al final).
|
|
17
|
+
* - `load()` resuelve estático primero, con **fallback** al backend.
|
|
18
|
+
*
|
|
19
|
+
* Render: `toArticle(doc)` convierte `doc.body` (Markdown) a `ArticleMetadata`
|
|
20
|
+
* vía el `markdown-article-parser` existente — la page hace `<val-article [props]="...">`.
|
|
21
|
+
*
|
|
22
|
+
* Requiere `provideValtechContent({ apiUrl, appId, staticSources? })` en `main.ts`.
|
|
23
|
+
* Sin provider, el servicio queda inerte (`isConfigured() === false`).
|
|
24
|
+
*/
|
|
25
|
+
export class ContentService {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.config = inject(VALTECH_CONTENT_CONFIG, { optional: true });
|
|
28
|
+
this.http = inject(HttpClient);
|
|
29
|
+
this.parser = inject(MarkdownArticleParserService);
|
|
30
|
+
/** `true` si `provideValtechContent()` fue llamado en el bootstrap. */
|
|
31
|
+
this.isConfigured = signal(!!this.config);
|
|
32
|
+
/** Cache de las promesas de cada factory estática, keyed por locale. */
|
|
33
|
+
this.staticCache = new Map();
|
|
34
|
+
/** Comparador: más reciente primero; sin `publishedAt` al final. */
|
|
35
|
+
this.byPublishedDesc = (a, b) => {
|
|
36
|
+
const ta = a.publishedAt ? Date.parse(a.publishedAt) : -Infinity;
|
|
37
|
+
const tb = b.publishedAt ? Date.parse(b.publishedAt) : -Infinity;
|
|
38
|
+
return tb - ta;
|
|
39
|
+
};
|
|
40
|
+
if (!this.config && isDevMode()) {
|
|
41
|
+
console.warn('[valtech-components] ContentService: provideValtechContent() no está en main.ts. ' +
|
|
42
|
+
'El listado y la carga de contenido no funcionarán.');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Lista los documentos publicados de un `type`, uniendo estático + backend.
|
|
47
|
+
* Colisión de `slug` → estático gana. Ordenados por `publishedAt` desc.
|
|
48
|
+
*
|
|
49
|
+
* @param type - Tipo de contenido (`'blog'`, `'news'`, …).
|
|
50
|
+
* @param options - `{ locale }` (default `'es'`).
|
|
51
|
+
*/
|
|
52
|
+
list(type, options = {}) {
|
|
53
|
+
const locale = (options.locale ?? 'es').toLowerCase();
|
|
54
|
+
const static$ = from(this.loadStatic(locale)).pipe(map(docs => docs.filter(d => d.type === type && d.status === 'published')));
|
|
55
|
+
const backend$ = this.listBackend(type, locale).pipe(catchError(() => of([])));
|
|
56
|
+
return forkJoin({ staticDocs: static$, backendDocs: backend$ }).pipe(map(({ staticDocs, backendDocs }) => this.merge(staticDocs, backendDocs)));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Carga un documento por `slug`: estático primero, fallback al backend.
|
|
60
|
+
*
|
|
61
|
+
* @param type - Tipo de contenido.
|
|
62
|
+
* @param slug - Slug del documento.
|
|
63
|
+
* @param options - `{ locale }` (default `'es'`).
|
|
64
|
+
*/
|
|
65
|
+
load(type, slug, options = {}) {
|
|
66
|
+
const locale = (options.locale ?? 'es').toLowerCase();
|
|
67
|
+
return from(this.loadStatic(locale)).pipe(map(docs => docs.find(d => d.type === type && d.slug === slug && d.status === 'published')), switchMap(staticDoc => staticDoc
|
|
68
|
+
? of(staticDoc)
|
|
69
|
+
: this.loadBackend(type, slug, locale).pipe(catchError(() => throwError(() => new Error(`Contenido no encontrado: ${type}/${locale}/${slug}`))))));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Convierte el `body` (Markdown) de un documento en `ArticleMetadata` para
|
|
73
|
+
* renderizar con `<val-article [props]="...">`. Usa el parser existente.
|
|
74
|
+
*
|
|
75
|
+
* @param doc - Documento de contenido a renderizar.
|
|
76
|
+
* @param config - Override parcial de la `ArticleMetadata` resultante.
|
|
77
|
+
*/
|
|
78
|
+
toArticle(doc, config) {
|
|
79
|
+
return this.parser.parse(doc.body, config);
|
|
80
|
+
}
|
|
81
|
+
/** Limpia la cache de fuentes estáticas. Llamar al cambiar de locale en runtime. */
|
|
82
|
+
invalidate() {
|
|
83
|
+
this.staticCache.clear();
|
|
84
|
+
}
|
|
85
|
+
// ===========================================================================
|
|
86
|
+
// Internos
|
|
87
|
+
// ===========================================================================
|
|
88
|
+
/** Une estático + backend: estático gana por slug; orden por publishedAt desc. */
|
|
89
|
+
merge(staticDocs, backendDocs) {
|
|
90
|
+
const bySlug = new Map();
|
|
91
|
+
for (const doc of backendDocs)
|
|
92
|
+
bySlug.set(doc.slug, doc);
|
|
93
|
+
// Estático gana — sobrescribe cualquier colisión del backend.
|
|
94
|
+
for (const doc of staticDocs)
|
|
95
|
+
bySlug.set(doc.slug, doc);
|
|
96
|
+
return [...bySlug.values()].sort(this.byPublishedDesc);
|
|
97
|
+
}
|
|
98
|
+
/** Carga (y cachea) los documentos estáticos de un locale, si hay factory. */
|
|
99
|
+
loadStatic(locale) {
|
|
100
|
+
const factory = this.config?.staticSources?.[locale];
|
|
101
|
+
if (!factory)
|
|
102
|
+
return Promise.resolve([]);
|
|
103
|
+
const cached = this.staticCache.get(locale);
|
|
104
|
+
if (cached)
|
|
105
|
+
return cached;
|
|
106
|
+
const promise = factory().catch(() => []);
|
|
107
|
+
this.staticCache.set(locale, promise);
|
|
108
|
+
return promise;
|
|
109
|
+
}
|
|
110
|
+
/** GET `{apiUrl}/v2/content?type=&locale=` — solo publicados. */
|
|
111
|
+
listBackend(type, locale) {
|
|
112
|
+
if (!this.config?.apiUrl)
|
|
113
|
+
return of([]);
|
|
114
|
+
const params = new URLSearchParams({ type, locale });
|
|
115
|
+
if (this.config.appId)
|
|
116
|
+
params.set('appId', this.config.appId);
|
|
117
|
+
return this.http
|
|
118
|
+
.get(`${this.config.apiUrl}/v2/content?${params}`)
|
|
119
|
+
.pipe(map(res => res?.items ?? []));
|
|
120
|
+
}
|
|
121
|
+
/** GET `{apiUrl}/v2/content/{type}/{locale}/{slug}` — detalle publicado. */
|
|
122
|
+
loadBackend(type, slug, locale) {
|
|
123
|
+
if (!this.config?.apiUrl) {
|
|
124
|
+
return throwError(() => new Error('ContentService no está configurado.'));
|
|
125
|
+
}
|
|
126
|
+
const path = `${this.config.apiUrl}/v2/content/${type}/${locale}/${encodeURIComponent(slug)}`;
|
|
127
|
+
return this.http
|
|
128
|
+
.get(path)
|
|
129
|
+
.pipe(map(res => res?.item ?? res));
|
|
130
|
+
}
|
|
131
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
132
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentService, providedIn: 'root' }); }
|
|
133
|
+
}
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentService, decorators: [{
|
|
135
|
+
type: Injectable,
|
|
136
|
+
args: [{ providedIn: 'root' }]
|
|
137
|
+
}], ctorParameters: () => [] });
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb250ZW50LXBsYXRmb3JtL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQWMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHbEQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFXekI7UUFWaUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBRS9ELHVFQUF1RTtRQUM5RCxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlDLHdFQUF3RTtRQUN2RCxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO1FBMkY3RSxvRUFBb0U7UUFDNUQsb0JBQWUsR0FBRyxDQUFDLENBQWtCLEVBQUUsQ0FBa0IsRUFBVSxFQUFFO1lBQzNFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxX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QyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQXdCLElBQUksQ0FBQzthQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSyxHQUFrQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDOytHQS9JVSxjQUFjO21IQUFkLGNBQWMsY0FERCxNQUFNOzs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBpc0Rldk1vZGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgZm9ya0pvaW4sIGZyb20sIG1hcCwgb2YsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXJ0aWNsZU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vcmdhbmlzbXMvYXJ0aWNsZS90eXBlcyc7XG5pbXBvcnQgeyBNYXJrZG93bkFydGljbGVQYXJzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbWFya2Rvd24tYXJ0aWNsZS9tYXJrZG93bi1hcnRpY2xlLXBhcnNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZBTFRFQ0hfQ09OVEVOVF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBDb250ZW50RG9jdW1lbnQsIENvbnRlbnREb2N1bWVudFR5cGUsIENvbnRlbnRMb2FkT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIGRlIGxhIHBsYXRhZm9ybWEgZGUgY29udGVuaWRvIChBRFItMDIwIMKnMi41KS5cbiAqXG4gKiBVbmUgZG9zIG9yw61nZW5lcyAoKipow61icmlkbyoqKTpcbiAqICAtICoqRXN0w6F0aWNvKiog4oCUIGBzdGF0aWNTb3VyY2VzYCBsYXp5IHBvciBsb2NhbGUsIGdlbmVyYWRhcyBidWlsZC10aW1lLlxuICogIC0gKipCYWNrZW5kKiog4oCUIER5bmFtb0RCICsgQVBJIChgL3YyL2NvbnRlbnQqYCksIHB1YmxpY2FjacOzbiBzaW4gcmVkZXBsb3kuXG4gKlxuICogUmVnbGFzIGRlIG1lcmdlOlxuICogIC0gYGxpc3QoKWAgdW5lIGFtYm9zIG9yw61nZW5lcyBwb3IgYHR5cGVgLiBDb2xpc2nDs24gZGUgYHNsdWdgIOKGkiAqKmVzdMOhdGljb1xuICogICAgZ2FuYSoqIChjb250ZW5pZG8gY3VyYWRvKS4gT3JkZW5hIHBvciBgcHVibGlzaGVkQXRgIGRlc2MgKHNpbiBmZWNoYSBhbCBmaW5hbCkuXG4gKiAgLSBgbG9hZCgpYCByZXN1ZWx2ZSBlc3TDoXRpY28gcHJpbWVybywgY29uICoqZmFsbGJhY2sqKiBhbCBiYWNrZW5kLlxuICpcbiAqIFJlbmRlcjogYHRvQXJ0aWNsZShkb2MpYCBjb252aWVydGUgYGRvYy5ib2R5YCAoTWFya2Rvd24pIGEgYEFydGljbGVNZXRhZGF0YWBcbiAqIHbDrWEgZWwgYG1hcmtkb3duLWFydGljbGUtcGFyc2VyYCBleGlzdGVudGUg4oCUIGxhIHBhZ2UgaGFjZSBgPHZhbC1hcnRpY2xlIFtwcm9wc109XCIuLi5cIj5gLlxuICpcbiAqIFJlcXVpZXJlIGBwcm92aWRlVmFsdGVjaENvbnRlbnQoeyBhcGlVcmwsIGFwcElkLCBzdGF0aWNTb3VyY2VzPyB9KWAgZW4gYG1haW4udHNgLlxuICogU2luIHByb3ZpZGVyLCBlbCBzZXJ2aWNpbyBxdWVkYSBpbmVydGUgKGBpc0NvbmZpZ3VyZWQoKSA9PT0gZmFsc2VgKS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDb250ZW50U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQ09OVEVOVF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJzZXIgPSBpbmplY3QoTWFya2Rvd25BcnRpY2xlUGFyc2VyU2VydmljZSk7XG5cbiAgLyoqIGB0cnVlYCBzaSBgcHJvdmlkZVZhbHRlY2hDb250ZW50KClgIGZ1ZSBsbGFtYWRvIGVuIGVsIGJvb3RzdHJhcC4gKi9cbiAgcmVhZG9ubHkgaXNDb25maWd1cmVkID0gc2lnbmFsKCEhdGhpcy5jb25maWcpO1xuXG4gIC8qKiBDYWNoZSBkZSBsYXMgcHJvbWVzYXMgZGUgY2FkYSBmYWN0b3J5IGVzdMOhdGljYSwga2V5ZWQgcG9yIGxvY2FsZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0aWNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPENvbnRlbnREb2N1bWVudFtdPj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdbdmFsdGVjaC1jb21wb25lbnRzXSBDb250ZW50U2VydmljZTogcHJvdmlkZVZhbHRlY2hDb250ZW50KCkgbm8gZXN0w6EgZW4gbWFpbi50cy4gJyArXG4gICAgICAgICAgJ0VsIGxpc3RhZG8geSBsYSBjYXJnYSBkZSBjb250ZW5pZG8gbm8gZnVuY2lvbmFyw6FuLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RhIGxvcyBkb2N1bWVudG9zIHB1YmxpY2Fkb3MgZGUgdW4gYHR5cGVgLCB1bmllbmRvIGVzdMOhdGljbyArIGJhY2tlbmQuXG4gICAqIENvbGlzacOzbiBkZSBgc2x1Z2Ag4oaSIGVzdMOhdGljbyBnYW5hLiBPcmRlbmFkb3MgcG9yIGBwdWJsaXNoZWRBdGAgZGVzYy5cbiAgICpcbiAgICogQHBhcmFtIHR5cGUgLSBUaXBvIGRlIGNvbnRlbmlkbyAoYCdibG9nJ2AsIGAnbmV3cydgLCDigKYpLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIGB7IGxvY2FsZSB9YCAoZGVmYXVsdCBgJ2VzJ2ApLlxuICAgKi9cbiAgbGlzdCh0eXBlOiBDb250ZW50RG9jdW1lbnRUeXBlLCBvcHRpb25zOiBDb250ZW50TG9hZE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8Q29udGVudERvY3VtZW50W10+IHtcbiAgICBjb25zdCBsb2NhbGUgPSAob3B0aW9ucy5sb2NhbGUgPz8gJ2VzJykudG9Mb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IHN0YXRpYyQgPSBmcm9tKHRoaXMubG9hZFN0YXRpYyhsb2NhbGUpKS5waXBlKFxuICAgICAgbWFwKGRvY3MgPT4gZG9jcy5maWx0ZXIoZCA9PiBkLnR5cGUgPT09IHR5cGUgJiYgZC5zdGF0dXMgPT09ICdwdWJsaXNoZWQnKSlcbiAgICApO1xuXG4gICAgY29uc3QgYmFja2VuZCQgPSB0aGlzLmxpc3RCYWNrZW5kKHR5cGUsIGxvY2FsZSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2Y8Q29udGVudERvY3VtZW50W10+KFtdKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKHsgc3RhdGljRG9jczogc3RhdGljJCwgYmFja2VuZERvY3M6IGJhY2tlbmQkIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgc3RhdGljRG9jcywgYmFja2VuZERvY3MgfSkgPT4gdGhpcy5tZXJnZShzdGF0aWNEb2NzLCBiYWNrZW5kRG9jcykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXJnYSB1biBkb2N1bWVudG8gcG9yIGBzbHVnYDogZXN0w6F0aWNvIHByaW1lcm8sIGZhbGxiYWNrIGFsIGJhY2tlbmQuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlIC0gVGlwbyBkZSBjb250ZW5pZG8uXG4gICAqIEBwYXJhbSBzbHVnIC0gU2x1ZyBkZWwgZG9jdW1lbnRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIGB7IGxvY2FsZSB9YCAoZGVmYXVsdCBgJ2VzJ2ApLlxuICAgKi9cbiAgbG9hZChcbiAgICB0eXBlOiBDb250ZW50RG9jdW1lbnRUeXBlLFxuICAgIHNsdWc6IHN0cmluZyxcbiAgICBvcHRpb25zOiBDb250ZW50TG9hZE9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPENvbnRlbnREb2N1bWVudD4ge1xuICAgIGNvbnN0IGxvY2FsZSA9IChvcHRpb25zLmxvY2FsZSA/PyAnZXMnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5sb2FkU3RhdGljKGxvY2FsZSkpLnBpcGUoXG4gICAgICBtYXAoZG9jcyA9PiBkb2NzLmZpbmQoZCA9PiBkLnR5cGUgPT09IHR5cGUgJiYgZC5zbHVnID09PSBzbHVnICYmIGQuc3RhdHVzID09PSAncHVibGlzaGVkJykpLFxuICAgICAgc3dpdGNoTWFwKHN0YXRpY0RvYyA9PlxuICAgICAgICBzdGF0aWNEb2NcbiAgICAgICAgICA/IG9mKHN0YXRpY0RvYylcbiAgICAgICAgICA6IHRoaXMubG9hZEJhY2tlbmQodHlwZSwgc2x1ZywgbG9jYWxlKS5waXBlKFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYENvbnRlbmlkbyBubyBlbmNvbnRyYWRvOiAke3R5cGV9LyR7bG9jYWxlfS8ke3NsdWd9YCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZpZXJ0ZSBlbCBgYm9keWAgKE1hcmtkb3duKSBkZSB1biBkb2N1bWVudG8gZW4gYEFydGljbGVNZXRhZGF0YWAgcGFyYVxuICAgKiByZW5kZXJpemFyIGNvbiBgPHZhbC1hcnRpY2xlIFtwcm9wc109XCIuLi5cIj5gLiBVc2EgZWwgcGFyc2VyIGV4aXN0ZW50ZS5cbiAgICpcbiAgICogQHBhcmFtIGRvYyAtIERvY3VtZW50byBkZSBjb250ZW5pZG8gYSByZW5kZXJpemFyLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3ZlcnJpZGUgcGFyY2lhbCBkZSBsYSBgQXJ0aWNsZU1ldGFkYXRhYCByZXN1bHRhbnRlLlxuICAgKi9cbiAgdG9BcnRpY2xlKGRvYzogQ29udGVudERvY3VtZW50LCBjb25maWc/OiBQYXJ0aWFsPEFydGljbGVNZXRhZGF0YT4pOiBBcnRpY2xlTWV0YWRhdGEge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5wYXJzZShkb2MuYm9keSwgY29uZmlnKTtcbiAgfVxuXG4gIC8qKiBMaW1waWEgbGEgY2FjaGUgZGUgZnVlbnRlcyBlc3TDoXRpY2FzLiBMbGFtYXIgYWwgY2FtYmlhciBkZSBsb2NhbGUgZW4gcnVudGltZS4gKi9cbiAgaW52YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRpY0NhY2hlLmNsZWFyKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSW50ZXJub3NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIFVuZSBlc3TDoXRpY28gKyBiYWNrZW5kOiBlc3TDoXRpY28gZ2FuYSBwb3Igc2x1Zzsgb3JkZW4gcG9yIHB1Ymxpc2hlZEF0IGRlc2MuICovXG4gIHByaXZhdGUgbWVyZ2Uoc3RhdGljRG9jczogQ29udGVudERvY3VtZW50W10sIGJhY2tlbmREb2NzOiBDb250ZW50RG9jdW1lbnRbXSk6IENvbnRlbnREb2N1bWVudFtdIHtcbiAgICBjb25zdCBieVNsdWcgPSBuZXcgTWFwPHN0cmluZywgQ29udGVudERvY3VtZW50PigpO1xuICAgIGZvciAoY29uc3QgZG9jIG9mIGJhY2tlbmREb2NzKSBieVNsdWcuc2V0KGRvYy5zbHVnLCBkb2MpO1xuICAgIC8vIEVzdMOhdGljbyBnYW5hIOKAlCBzb2JyZXNjcmliZSBjdWFscXVpZXIgY29saXNpw7NuIGRlbCBiYWNrZW5kLlxuICAgIGZvciAoY29uc3QgZG9jIG9mIHN0YXRpY0RvY3MpIGJ5U2x1Zy5zZXQoZG9jLnNsdWcsIGRvYyk7XG4gICAgcmV0dXJuIFsuLi5ieVNsdWcudmFsdWVzKCldLnNvcnQodGhpcy5ieVB1Ymxpc2hlZERlc2MpO1xuICB9XG5cbiAgLyoqIENvbXBhcmFkb3I6IG3DoXMgcmVjaWVudGUgcHJpbWVybzsgc2luIGBwdWJsaXNoZWRBdGAgYWwgZmluYWwuICovXG4gIHByaXZhdGUgYnlQdWJsaXNoZWREZXNjID0gKGE6IENvbnRlbnREb2N1bWVudCwgYjogQ29udGVudERvY3VtZW50KTogbnVtYmVyID0+IHtcbiAgICBjb25zdCB0YSA9IGEucHVibGlzaGVkQXQgPyBEYXRlLnBhcnNlKGEucHVibGlzaGVkQXQpIDogLUluZmluaXR5O1xuICAgIGNvbnN0IHRiID0gYi5wdWJsaXNoZWRBdCA/IERhdGUucGFyc2UoYi5wdWJsaXNoZWRBdCkgOiAtSW5maW5pdHk7XG4gICAgcmV0dXJuIHRiIC0gdGE7XG4gIH07XG5cbiAgLyoqIENhcmdhICh5IGNhY2hlYSkgbG9zIGRvY3VtZW50b3MgZXN0w6F0aWNvcyBkZSB1biBsb2NhbGUsIHNpIGhheSBmYWN0b3J5LiAqL1xuICBwcml2YXRlIGxvYWRTdGF0aWMobG9jYWxlOiBzdHJpbmcpOiBQcm9taXNlPENvbnRlbnREb2N1bWVudFtdPiB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29uZmlnPy5zdGF0aWNTb3VyY2VzPy5bbG9jYWxlXTtcbiAgICBpZiAoIWZhY3RvcnkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5zdGF0aWNDYWNoZS5nZXQobG9jYWxlKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgcHJvbWlzZSA9IGZhY3RvcnkoKS5jYXRjaCgoKSA9PiBbXSBhcyBDb250ZW50RG9jdW1lbnRbXSk7XG4gICAgdGhpcy5zdGF0aWNDYWNoZS5zZXQobG9jYWxlLCBwcm9taXNlKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIC8qKiBHRVQgYHthcGlVcmx9L3YyL2NvbnRlbnQ/dHlwZT0mbG9jYWxlPWAg4oCUIHNvbG8gcHVibGljYWRvcy4gKi9cbiAgcHJpdmF0ZSBsaXN0QmFja2VuZCh0eXBlOiBDb250ZW50RG9jdW1lbnRUeXBlLCBsb2NhbGU6IHN0cmluZyk6IE9ic2VydmFibGU8Q29udGVudERvY3VtZW50W10+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5hcGlVcmwpIHJldHVybiBvZihbXSk7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IHR5cGUsIGxvY2FsZSB9KTtcbiAgICBpZiAodGhpcy5jb25maWcuYXBwSWQpIHBhcmFtcy5zZXQoJ2FwcElkJywgdGhpcy5jb25maWcuYXBwSWQpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8Q29udGVudExpc3RSZXNwb25zZT4oYCR7dGhpcy5jb25maWcuYXBpVXJsfS92Mi9jb250ZW50PyR7cGFyYW1zfWApXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcz8uaXRlbXMgPz8gW10pKTtcbiAgfVxuXG4gIC8qKiBHRVQgYHthcGlVcmx9L3YyL2NvbnRlbnQve3R5cGV9L3tsb2NhbGV9L3tzbHVnfWAg4oCUIGRldGFsbGUgcHVibGljYWRvLiAqL1xuICBwcml2YXRlIGxvYWRCYWNrZW5kKFxuICAgIHR5cGU6IENvbnRlbnREb2N1bWVudFR5cGUsXG4gICAgc2x1Zzogc3RyaW5nLFxuICAgIGxvY2FsZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8Q29udGVudERvY3VtZW50PiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZz8uYXBpVXJsKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0NvbnRlbnRTZXJ2aWNlIG5vIGVzdMOhIGNvbmZpZ3VyYWRvLicpKTtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IGAke3RoaXMuY29uZmlnLmFwaVVybH0vdjIvY29udGVudC8ke3R5cGV9LyR7bG9jYWxlfS8ke2VuY29kZVVSSUNvbXBvbmVudChzbHVnKX1gO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8Q29udGVudERldGFpbFJlc3BvbnNlPihwYXRoKVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXM/Lml0ZW0gPz8gKHJlcyBhcyB1bmtub3duIGFzIENvbnRlbnREb2N1bWVudCkpKTtcbiAgfVxufVxuXG4vKiogU2hhcGUgZGUgbGEgcmVzcHVlc3RhIGRlIGxpc3RhZG8gZGVsIGJhY2tlbmQgKGAvdjIvY29udGVudGApLiAqL1xuaW50ZXJmYWNlIENvbnRlbnRMaXN0UmVzcG9uc2Uge1xuICBpdGVtcz86IENvbnRlbnREb2N1bWVudFtdO1xuICBvcGVyYXRpb25JZD86IHN0cmluZztcbn1cblxuLyoqIFNoYXBlIGRlIGxhIHJlc3B1ZXN0YSBkZSBkZXRhbGxlIGRlbCBiYWNrZW5kIChgL3YyL2NvbnRlbnQve3R5cGV9L3tsb2NhbGV9L3tzbHVnfWApLiAqL1xuaW50ZXJmYWNlIENvbnRlbnREZXRhaWxSZXNwb25zZSB7XG4gIGl0ZW0/OiBDb250ZW50RG9jdW1lbnQ7XG4gIG9wZXJhdGlvbklkPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Platform — `ContentService` + `provideValtechContent` (ADR-020).
|
|
3
|
+
*
|
|
4
|
+
* Modelo canónico unificado (`ContentDocument`, flat + Markdown) con origen
|
|
5
|
+
* híbrido (estático build-time + backend DynamoDB/API). Render vía el
|
|
6
|
+
* `markdown-article-parser` existente.
|
|
7
|
+
*/
|
|
8
|
+
export { VALTECH_CONTENT_CONFIG, provideValtechContent } from './config';
|
|
9
|
+
export { ContentService } from './content.service';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2NvbnRlbnQtcGxhdGZvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBYUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGVudCBQbGF0Zm9ybSDigJQgYENvbnRlbnRTZXJ2aWNlYCArIGBwcm92aWRlVmFsdGVjaENvbnRlbnRgIChBRFItMDIwKS5cbiAqXG4gKiBNb2RlbG8gY2Fuw7NuaWNvIHVuaWZpY2FkbyAoYENvbnRlbnREb2N1bWVudGAsIGZsYXQgKyBNYXJrZG93bikgY29uIG9yaWdlblxuICogaMOtYnJpZG8gKGVzdMOhdGljbyBidWlsZC10aW1lICsgYmFja2VuZCBEeW5hbW9EQi9BUEkpLiBSZW5kZXIgdsOtYSBlbFxuICogYG1hcmtkb3duLWFydGljbGUtcGFyc2VyYCBleGlzdGVudGUuXG4gKi9cblxuZXhwb3J0IHtcbiAgQ29udGVudERvY3VtZW50VHlwZSxcbiAgQ29udGVudERvY3VtZW50U3RhdHVzLFxuICBDb250ZW50RG9jdW1lbnRTb3VyY2UsXG4gIENvbnRlbnREb2N1bWVudCxcbiAgQ29udGVudERvY3VtZW50QXV0aG9yLFxuICBDb250ZW50U3RhdGljRmFjdG9yeSxcbiAgVmFsdGVjaENvbnRlbnRDb25maWcsXG4gIENvbnRlbnRMb2FkT3B0aW9ucyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB7IFZBTFRFQ0hfQ09OVEVOVF9DT05GSUcsIHByb3ZpZGVWYWx0ZWNoQ29udGVudCB9IGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZW50LnNlcnZpY2UnO1xuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Platform — modelo canónico de documento de contenido.
|
|
3
|
+
*
|
|
4
|
+
* Alineado con ADR-020 §2.1. Es el contrato compartido entre:
|
|
5
|
+
* - Backend (servicio `content/` — DynamoDB tabla `content`).
|
|
6
|
+
* - Pipeline estático (`scripts/build-content.ts` → `content-store.{locale}.ts`).
|
|
7
|
+
* - Esta lib (`ContentService` + `provideValtechContent`).
|
|
8
|
+
* - Web (`/blog`, `/news`, …).
|
|
9
|
+
*
|
|
10
|
+
* Modelo **unificado** con discriminador `type` — agregar un tipo de contenido
|
|
11
|
+
* NO requiere tocar backend ni lib. El `body` es Markdown plano, renderizado en
|
|
12
|
+
* la web vía el `markdown-article-parser` existente (`string MD → ArticleMetadata`).
|
|
13
|
+
*
|
|
14
|
+
* NOTA: existe un tipo homónimo `ContentDocument<T>` (block-based, builder) en
|
|
15
|
+
* `services/content/`, reexportado por el public-api como `ContentBuilderDocument`
|
|
16
|
+
* para evitar colisión. Este (flat, markdown) es el canónico de la plataforma.
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2NvbnRlbnQtcGxhdGZvcm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRlbnQgUGxhdGZvcm0g4oCUIG1vZGVsbyBjYW7Ds25pY28gZGUgZG9jdW1lbnRvIGRlIGNvbnRlbmlkby5cbiAqXG4gKiBBbGluZWFkbyBjb24gQURSLTAyMCDCpzIuMS4gRXMgZWwgY29udHJhdG8gY29tcGFydGlkbyBlbnRyZTpcbiAqICAtIEJhY2tlbmQgKHNlcnZpY2lvIGBjb250ZW50L2Ag4oCUIER5bmFtb0RCIHRhYmxhIGBjb250ZW50YCkuXG4gKiAgLSBQaXBlbGluZSBlc3TDoXRpY28gKGBzY3JpcHRzL2J1aWxkLWNvbnRlbnQudHNgIOKGkiBgY29udGVudC1zdG9yZS57bG9jYWxlfS50c2ApLlxuICogIC0gRXN0YSBsaWIgKGBDb250ZW50U2VydmljZWAgKyBgcHJvdmlkZVZhbHRlY2hDb250ZW50YCkuXG4gKiAgLSBXZWIgKGAvYmxvZ2AsIGAvbmV3c2AsIOKApikuXG4gKlxuICogTW9kZWxvICoqdW5pZmljYWRvKiogY29uIGRpc2NyaW1pbmFkb3IgYHR5cGVgIOKAlCBhZ3JlZ2FyIHVuIHRpcG8gZGUgY29udGVuaWRvXG4gKiBOTyByZXF1aWVyZSB0b2NhciBiYWNrZW5kIG5pIGxpYi4gRWwgYGJvZHlgIGVzIE1hcmtkb3duIHBsYW5vLCByZW5kZXJpemFkbyBlblxuICogbGEgd2ViIHbDrWEgZWwgYG1hcmtkb3duLWFydGljbGUtcGFyc2VyYCBleGlzdGVudGUgKGBzdHJpbmcgTUQg4oaSIEFydGljbGVNZXRhZGF0YWApLlxuICpcbiAqIE5PVEE6IGV4aXN0ZSB1biB0aXBvIGhvbcOzbmltbyBgQ29udGVudERvY3VtZW50PFQ+YCAoYmxvY2stYmFzZWQsIGJ1aWxkZXIpIGVuXG4gKiBgc2VydmljZXMvY29udGVudC9gLCByZWV4cG9ydGFkbyBwb3IgZWwgcHVibGljLWFwaSBjb21vIGBDb250ZW50QnVpbGRlckRvY3VtZW50YFxuICogcGFyYSBldml0YXIgY29saXNpw7NuLiBFc3RlIChmbGF0LCBtYXJrZG93bikgZXMgZWwgY2Fuw7NuaWNvIGRlIGxhIHBsYXRhZm9ybWEuXG4gKi9cblxuLyoqXG4gKiBUaXBvIGRlIGNvbnRlbmlkbyAoZGlzY3JpbWluYWRvcikuIEV4dGVuc2libGUg4oCUIGFncmVnYXIgdW4gdmFsb3Igbm8gaW1wYWN0YVxuICogYmFja2VuZCBuaSBsaWI7IHNvbG8gbGEgd2ViIGRlY2lkZSBxdcOpIHJ1dGFzIGV4cG9uZXIuXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRlbnREb2N1bWVudFR5cGUgPSAnYmxvZycgfCAnbmV3cycgfCAnYXJ0aWNsZScgfCAnZG9jdW1lbnRhdGlvbicgfCAoc3RyaW5nICYge30pO1xuXG4vKipcbiAqIEVzdGFkbyBkZSBwdWJsaWNhY2nDs24gZGVsIGRvY3VtZW50by5cbiAqL1xuZXhwb3J0IHR5cGUgQ29udGVudERvY3VtZW50U3RhdHVzID0gJ2RyYWZ0JyB8ICdwdWJsaXNoZWQnIHwgJ2FyY2hpdmVkJztcblxuLyoqXG4gKiBPcmlnZW4gZGVsIGRvY3VtZW50byDigJQgbWFyY2EgZGUgbGEgbmF0dXJhbGV6YSBow61icmlkYSBkZWwgcGlwZWxpbmUuXG4gKiAgLSBgc3RhdGljYDogYXV0b3LDrWEgZW4gcmVwbywgYnVpbGQtdGltZSAoY29udGVuaWRvIGN1cmFkbyBkZSBsYSBlbXByZXNhKS5cbiAqICAtIGBiYWNrZW5kYDogRHluYW1vREIgKyBBUEkgKHB1YmxpY2FjacOzbiBzaW4gcmVkZXBsb3kgLyBlZGl0b3JlcykuXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRlbnREb2N1bWVudFNvdXJjZSA9ICdzdGF0aWMnIHwgJ2JhY2tlbmQnO1xuXG4vKipcbiAqIEF1dG9yIGRlIHVuIGRvY3VtZW50byBkZSBjb250ZW5pZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudERvY3VtZW50QXV0aG9yIHtcbiAgLyoqIE5vbWJyZSB2aXNpYmxlIGRlbCBhdXRvci4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZGVsIGF1dG9yLiAqL1xuICBhdmF0YXI/OiBzdHJpbmc7XG4gIC8qKiBSb2wgbyBjYXJnbyBkZWwgYXV0b3IuICovXG4gIHJvbGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRG9jdW1lbnRvIGRlIGNvbnRlbmlkbyB1bmlmaWNhZG8gKGNhbsOzbmljbyDigJQgQURSLTAyMCDCpzIuMSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudERvY3VtZW50IHtcbiAgLyoqIElkZW50aWZpY2Fkb3Igw7puaWNvIOKAlCB1dWlkIChiYWNrZW5kKSBvIGBzdGF0aWM6e3R5cGV9Ontsb2NhbGV9OntzbHVnfWAgKGVzdMOhdGljbykuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBBcHBJRCBkZWwgcHJvZHVjdG8gZHVlw7FvIGRlbCBkb2N1bWVudG8uICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qKiBUaXBvIGRlIGNvbnRlbmlkbyAoZGlzY3JpbWluYWRvcikuICovXG4gIHR5cGU6IENvbnRlbnREb2N1bWVudFR5cGU7XG4gIC8qKiBTbHVnIOKAlCDDum5pY28gcG9yIChhcHBJZCwgdHlwZSwgbG9jYWxlKS4gKi9cbiAgc2x1Zzogc3RyaW5nO1xuICAvKiogTG9jYWxlIGRlbCBkb2N1bWVudG8gKGAnZXMnYCB8IGAnZW4nYCB8IOKApikuICovXG4gIGxvY2FsZTogc3RyaW5nO1xuICAvKiogVMOtdHVsbyBkZWwgZG9jdW1lbnRvLiAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogUmVzdW1lbiAvIGV4dHJhY3RvIHBhcmEgbGlzdGFkb3MgeSBTRU8uICovXG4gIGV4Y2VycHQ6IHN0cmluZztcbiAgLyoqIFVSTCBkZSBsYSBpbWFnZW4gZGUgcG9ydGFkYSAoUzMgdsOtYSBzdG9yYWdlIHNlcnZpY2UpLiAqL1xuICBjb3ZlckltYWdlPzogc3RyaW5nO1xuICAvKiogQ3VlcnBvIGVuIE1hcmtkb3duIOKAlCByZW5kZXIgdsOtYSBtYXJrZG93bi1hcnRpY2xlLXBhcnNlci4gKi9cbiAgYm9keTogc3RyaW5nO1xuICAvKiogQXV0b3IgZGVsIGRvY3VtZW50by4gKi9cbiAgYXV0aG9yPzogQ29udGVudERvY3VtZW50QXV0aG9yO1xuICAvKiogRXRpcXVldGFzIHBhcmEgY2F0ZWdvcml6YWNpw7NuLiAqL1xuICB0YWdzPzogc3RyaW5nW107XG4gIC8qKiBDYXRlZ29yw61hIHByaW1hcmlhLiAqL1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgLyoqIEVzdGFkbyBkZSBwdWJsaWNhY2nDs24uICovXG4gIHN0YXR1czogQ29udGVudERvY3VtZW50U3RhdHVzO1xuICAvKiogT3JpZ2VuIGRlbCBkb2N1bWVudG8gKG1hcmNhIGjDrWJyaWRhKS4gKi9cbiAgc291cmNlOiBDb250ZW50RG9jdW1lbnRTb3VyY2U7XG4gIC8qKiBGZWNoYSBkZSBwdWJsaWNhY2nDs24gKElTTyA4NjAxKS4gKi9cbiAgcHVibGlzaGVkQXQ/OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBjcmVhY2nDs24gKElTTyA4NjAxKS4gKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSDDumx0aW1hIGFjdHVhbGl6YWNpw7NuIChJU08gODYwMSkuICovXG4gIHVwZGF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGxhenkgZGUgZG9jdW1lbnRvcyBlc3TDoXRpY29zIHBhcmEgdW4gbG9jYWxlLiBHZW5lcmFkYSBidWlsZC10aW1lIHBvclxuICogYHNjcmlwdHMvYnVpbGQtY29udGVudC50c2AuIFNlIHVzYSBjb24gYGltcG9ydCgpYCBkaW7DoW1pY28gcGFyYSBxdWUgY2FkYSBsb2NhbGVcbiAqIHF1ZWRlIGNvZGUtc3BsaXQgKGlndWFsIHBhdHLDs24gcXVlIGBMZWdhbENvbnRlbnRGYWN0b3J5YCkuXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRlbnRTdGF0aWNGYWN0b3J5ID0gKCkgPT4gUHJvbWlzZTxDb250ZW50RG9jdW1lbnRbXT47XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gZGUgYHByb3ZpZGVWYWx0ZWNoQ29udGVudGAgKEFEUi0wMjAgwqcyLjUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHRlY2hDb250ZW50Q29uZmlnIHtcbiAgLyoqIEJhc2UgVVJMIGRlIGxhIEFQSSBiYWNrZW5kIChzaW4gdHJhaWxpbmcgc2xhc2gpLiBFai4gYGVudmlyb25tZW50LmFwaVVybGAuICovXG4gIGFwaVVybDogc3RyaW5nO1xuICAvKiogQXBwSUQgZGVsIHByb2R1Y3RvIOKAlCBzZSBlbnbDrWEgY29tbyBxdWVyeSBwYXJhbSBhbCBiYWNrZW5kLiAqL1xuICBhcHBJZDogc3RyaW5nO1xuICAvKipcbiAgICogRnVlbnRlcyBlc3TDoXRpY2FzIGxhenkga2V5ZWQgcG9yIGxvY2FsZSAoZ2VuZXJhZGFzIGJ1aWxkLXRpbWUpLiBPcGNpb25hbCDigJRcbiAgICogc2kgbm8gaGF5LCBlbCBzZXJ2aWNpbyBvcGVyYSBzb2xvIGNvbnRyYSBlbCBiYWNrZW5kLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBzdGF0aWNTb3VyY2VzOiB7XG4gICAqICAgZXM6ICgpID0+IGltcG9ydCgnLi9hcHAvZ2VuZXJhdGVkL2NvbnRlbnQtc3RvcmUuZXMnKS50aGVuKG0gPT4gbS5DT05URU5UX1NUT1JFX0VTKSxcbiAgICogICBlbjogKCkgPT4gaW1wb3J0KCcuL2FwcC9nZW5lcmF0ZWQvY29udGVudC1zdG9yZS5lbicpLnRoZW4obSA9PiBtLkNPTlRFTlRfU1RPUkVfRU4pLFxuICAgKiB9XG4gICAqL1xuICBzdGF0aWNTb3VyY2VzPzogeyBbbG9jYWxlOiBzdHJpbmddOiBDb250ZW50U3RhdGljRmFjdG9yeSB9O1xufVxuXG4vKipcbiAqIE9wY2lvbmVzIGRlIGNhcmdhL2xpc3RhZG8gZGUgY29udGVuaWRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRMb2FkT3B0aW9ucyB7XG4gIC8qKiBMb2NhbGUgYSByZXNvbHZlciAoZGVmYXVsdCBgJ2VzJ2ApLiAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG59XG4iXX0=
|