@po-ui/ng-components 17.7.0 → 17.9.0

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.
Files changed (44) hide show
  1. package/esm2022/lib/components/po-table/po-table-base.component.mjs +17 -2
  2. package/esm2022/lib/components/po-table/po-table-column-label/po-table-column-label.component.mjs +4 -5
  3. package/esm2022/lib/components/po-table/po-table.component.mjs +7 -7
  4. package/esm2022/lib/services/index.mjs +2 -1
  5. package/esm2022/lib/services/po-theme/enum/po-theme-type.enum.mjs +27 -0
  6. package/esm2022/lib/services/po-theme/helpers/po-theme-dark-defaults.constant.mjs +203 -0
  7. package/esm2022/lib/services/po-theme/helpers/po-theme-light-defaults.constant.mjs +134 -0
  8. package/esm2022/lib/services/po-theme/helpers/po-theme-poui.constant.mjs +31 -0
  9. package/esm2022/lib/services/po-theme/index.mjs +10 -0
  10. package/esm2022/lib/services/po-theme/interfaces/po-theme-color.interface.mjs +3 -0
  11. package/esm2022/lib/services/po-theme/interfaces/po-theme-tokens.interface.mjs +2 -0
  12. package/esm2022/lib/services/po-theme/interfaces/po-theme.interface.mjs +2 -0
  13. package/esm2022/lib/services/po-theme/po-theme.module.mjs +27 -0
  14. package/esm2022/lib/services/po-theme/po-theme.service.mjs +260 -0
  15. package/esm2022/lib/services/services.module.mjs +14 -7
  16. package/fesm2022/po-ui-ng-components.mjs +711 -20
  17. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  18. package/lib/components/po-table/po-table-base.component.d.ts +14 -1
  19. package/lib/components/po-table/po-table-column-label/po-table-column-label.component.d.ts +1 -2
  20. package/lib/services/index.d.ts +1 -0
  21. package/lib/services/po-theme/enum/po-theme-type.enum.d.ts +25 -0
  22. package/lib/services/po-theme/helpers/po-theme-dark-defaults.constant.d.ts +116 -0
  23. package/lib/services/po-theme/helpers/po-theme-light-defaults.constant.d.ts +41 -0
  24. package/lib/services/po-theme/helpers/po-theme-poui.constant.d.ts +11 -0
  25. package/lib/services/po-theme/index.d.ts +9 -0
  26. package/lib/services/po-theme/interfaces/po-theme-color.interface.d.ts +374 -0
  27. package/lib/services/po-theme/interfaces/po-theme-tokens.interface.d.ts +61 -0
  28. package/lib/services/po-theme/interfaces/po-theme.interface.d.ts +28 -0
  29. package/lib/services/po-theme/po-theme.module.d.ts +9 -0
  30. package/lib/services/po-theme/po-theme.service.d.ts +129 -0
  31. package/lib/services/services.module.d.ts +2 -1
  32. package/package.json +4 -4
  33. package/po-ui-ng-components-17.9.0.tgz +0 -0
  34. package/schematics/ng-add/index.js +1 -1
  35. package/schematics/ng-update/v14/index.js +1 -1
  36. package/schematics/ng-update/v15/index.js +1 -1
  37. package/schematics/ng-update/v16/index.js +1 -1
  38. package/schematics/ng-update/v17/index.js +1 -1
  39. package/schematics/ng-update/v2/index.js +1 -1
  40. package/schematics/ng-update/v3/index.js +1 -1
  41. package/schematics/ng-update/v4/index.js +1 -1
  42. package/schematics/ng-update/v5/index.js +1 -1
  43. package/schematics/ng-update/v6/index.js +1 -1
  44. package/po-ui-ng-components-17.7.0.tgz +0 -0
@@ -0,0 +1,260 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { PoThemeTypeEnum } from './enum/po-theme-type.enum';
4
+ import { poThemeDefault } from './helpers/po-theme-poui.constant';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * @description
8
+ *
9
+ * O `PoThemeService` possibilita a personalização das cores do tema padrão do `PO-UI`, permitindo a alteração dos valores das variáveis de estilo usadas no CSS padrão.
10
+ *
11
+ * > Para saber mais sobre como customizar as cores do tema padrão verifique o item [Customizando cores do tema padrão](https://po-ui.io/guides/colors-customization) na aba `Guias`.
12
+ *
13
+ * > Obs.: Não está documentado aqui e não indicamos a customização das cores de 'feedback' por motivos de acessibilidade e usabilidade.
14
+ */
15
+ export class PoThemeService {
16
+ window;
17
+ document;
18
+ renderer;
19
+ theme = poThemeDefault;
20
+ constructor(window, document, rendererFactory) {
21
+ this.window = window;
22
+ this.document = document;
23
+ this.renderer = rendererFactory.createRenderer(null, null);
24
+ }
25
+ /**
26
+ * Define o tema a ser aplicado no componente, de acordo com o tipo de tema especificado.
27
+ *
28
+ * Este método define o tema a ser aplicado no componente com base no objeto `theme` fornecido e no tipo de tema especificado.
29
+ * Ele atualiza as propriedades do componente para refletir o tema selecionado, como cores, estilos e comportamentos.
30
+ *
31
+ * @param {PoTheme} theme - Objeto contendo as definições de tema a serem aplicadas no componente.
32
+ * @param {PoThemeTypeEnum} [themeType=PoThemeTypeEnum.light] - (Opcional) Tipo de tema a ser aplicado, podendo ser 'light' (claro) ou 'dark' (escuro). Por padrão, o tema claro é aplicado.
33
+ */
34
+ setTheme(theme, themeType = PoThemeTypeEnum.light) {
35
+ // Change theme name, remove special characteres and number, replace space with dash
36
+ theme.name = theme.name
37
+ .toLowerCase()
38
+ .replace(/[^a-zA-Z ]/g, '')
39
+ .replace(/\s+/g, '-');
40
+ theme.active = themeType;
41
+ const _themeType = theme.type[PoThemeTypeEnum[themeType]];
42
+ if (!_themeType) {
43
+ return;
44
+ }
45
+ const colorStyles = _themeType.color ? this.generateThemeStyles(_themeType.color) : '';
46
+ const perComponentStyles = _themeType.perComponent ? this.generatePerComponentStyles(_themeType.perComponent) : '';
47
+ const onRootStyles = _themeType.onRoot ? this.generateAdditionalStyles(_themeType.onRoot) : '';
48
+ const additionalStyles = this.generateAdditionalStyles(_themeType);
49
+ const combinedStyles = `
50
+ .${theme.name}-${PoThemeTypeEnum[themeType]}:root {
51
+ ${colorStyles}
52
+ ${perComponentStyles}
53
+ ${onRootStyles}
54
+ ${additionalStyles}
55
+ }`;
56
+ this.applyThemeStyles(combinedStyles);
57
+ this.changeThemeType(theme);
58
+ }
59
+ /**
60
+ * @docsPrivate
61
+ *
62
+ * Gera estilos adicionais com base nos tokens de tema fornecidos, excluindo os tokens de cor.
63
+ * @param theme Os tokens de tema contendo os estilos adicionais a serem gerados.
64
+ * @returns Uma string contendo os estilos adicionais formatados.
65
+ */
66
+ generateAdditionalStyles(theme) {
67
+ return Object.entries(theme)
68
+ .filter(([key]) => !['color', 'perComponent', 'onRoot'].includes(key))
69
+ .map(([key, value]) => `${key}: ${value};`)
70
+ .join(' ');
71
+ }
72
+ /**
73
+ * @docsPrivate
74
+ *
75
+ * Aplica os estilos de tema ao documento.
76
+ * @param styleCss Os estilos CSS a serem aplicados.
77
+ */
78
+ applyThemeStyles(styleCss) {
79
+ const styleElement = this.createStyleElement(styleCss);
80
+ const existingStyleElement = document.head.querySelector('#pouiTheme');
81
+ if (existingStyleElement) {
82
+ this.renderer.removeChild(document.head, existingStyleElement);
83
+ }
84
+ this.renderer.appendChild(document.head, styleElement);
85
+ }
86
+ changeThemeType(theme) {
87
+ this.cleanThemeActive();
88
+ this.setThemeActive(theme);
89
+ document.getElementsByTagName('html')[0].classList.add(...[`${theme.name}-${PoThemeTypeEnum[theme.active]}`]);
90
+ }
91
+ /**
92
+ * Persiste e define o tema do aplicativo com base nos dados armazenados.
93
+ *
94
+ * Este método recupera os dados do tema armazenados e os aplica ao aplicativo.
95
+ *
96
+ * @returns {PoTheme} Recupera o tema armazenado.
97
+ */
98
+ persistThemeActive() {
99
+ const _theme = this.getThemeActive();
100
+ this.setTheme(_theme, _theme.active);
101
+ return _theme;
102
+ }
103
+ /**
104
+ * Altera o tipo do tema armazenado e aplica os novos estilos ao documento.
105
+ *
106
+ * Este método altera o tipo do tema armazenado ativo (light/dark)
107
+ *
108
+ * @param {PoThemeTypeEnum} themeType O tipo de tema a ser aplicado, light ou dark.
109
+ */
110
+ changeCurrentThemeType(type) {
111
+ const _theme = this.getThemeActive();
112
+ _theme.active = type;
113
+ this.changeThemeType(_theme);
114
+ }
115
+ /**
116
+ * Método remove o tema armazenado e limpa todos os estilos de tema
117
+ * aplicados ao documento.
118
+ */
119
+ cleanThemeActive() {
120
+ const _theme = this.getThemeActive();
121
+ document.getElementsByTagName('html')[0].classList.remove(`${_theme.name}-${PoThemeTypeEnum[_theme.active]}`);
122
+ localStorage.removeItem('totvs-theme');
123
+ }
124
+ /**
125
+ * @docsPrivate
126
+ *
127
+ * Este método define um dados do tema e o armazena.
128
+ * @param theme Os tokens de tema contendo os estilos adicionais a serem gerados.
129
+ */
130
+ setThemeActive(theme) {
131
+ if (theme) {
132
+ localStorage.setItem('totvs-theme', JSON.stringify(theme));
133
+ this.theme = theme;
134
+ }
135
+ }
136
+ /**
137
+ * Retorna o tema ativo como um observable.
138
+ * @returns {PoTheme} Tema ativo.
139
+ */
140
+ getThemeActive() {
141
+ try {
142
+ const themeData = JSON.parse(localStorage.getItem('totvs-theme'));
143
+ if (themeData && JSON.stringify(themeData) !== JSON.stringify(this.theme)) {
144
+ this.theme = themeData;
145
+ }
146
+ }
147
+ catch (error) {
148
+ console.error('Erro ao obter o tema do armazenamento local:', error);
149
+ }
150
+ return this.theme;
151
+ }
152
+ /**
153
+ * @docsPrivate
154
+ *
155
+ * Gera estilos CSS com base nos tokens de cores fornecidos.
156
+ * @param themeColor Os tokens de cor a serem usados para gerar os estilos.
157
+ * @returns Uma string contendo os estilos CSS gerados.
158
+ */
159
+ createStyleElement(css) {
160
+ const styleElement = this.renderer.createElement('style');
161
+ styleElement.id = 'pouiTheme';
162
+ this.renderer.appendChild(styleElement, this.renderer.createText(css));
163
+ return styleElement;
164
+ }
165
+ /**
166
+ * @docsPrivate
167
+ *
168
+ * Gera estilos CSS com base nos tokens de cores fornecidos.
169
+ * @param themeColor Os tokens de cor a serem usados para gerar os estilos.
170
+ * @returns Uma string contendo os estilos CSS gerados.
171
+ */
172
+ generateThemeStyles(themeColor) {
173
+ const selectBgIconStyle = this.getSelectBgIconsStyle(themeColor);
174
+ return [
175
+ Object.entries(themeColor)
176
+ .flatMap(([type, values]) => Object.entries(values).flatMap(([tonality, tonalityValues]) => {
177
+ if (type === 'action') {
178
+ return [`--color-${type}-${tonality}: ${tonalityValues};`];
179
+ }
180
+ else {
181
+ return Object.entries(tonalityValues).map(([level, colorValue]) => `--color-${type}-${tonality}-${level}: ${colorValue};`);
182
+ }
183
+ }))
184
+ .join(''),
185
+ selectBgIconStyle
186
+ ].join('');
187
+ }
188
+ /**
189
+ * @docsPrivate
190
+ *
191
+ * Gera estilos CSS com base nos tokens per Component fornecidos.
192
+ * @param themePerComponent Os tokens de cor a serem usados para gerar os estilos.
193
+ * @returns Uma string contendo os estilos CSS gerados.
194
+ */
195
+ generatePerComponentStyles(themePerComponent) {
196
+ return Object.entries(themePerComponent)
197
+ .flatMap(([type, values]) => Object.entries(values).flatMap(([level, colorValue]) => [`${type} {${level}: ${colorValue};};`]))
198
+ .join('');
199
+ }
200
+ /**
201
+ * Define o tema atual como o tema "PoUI Padrão".
202
+ *
203
+ * @param {PoThemeTypeEnum} type O tipo de Tema a ser aplicado, light / dark.
204
+ */
205
+ setDefaultTheme(type) {
206
+ this.setTheme(poThemeDefault, type);
207
+ }
208
+ /**
209
+ * @docsPrivate
210
+ *
211
+ * Retorna o estilo CSS para o fundo dos ícones do componente po-select, com base nas cores do tema.
212
+ *
213
+ * @param {PoThemeColor} themeColor - Objeto contendo as cores do tema.
214
+ * @returns {string} - Estilo CSS para o fundo dos ícones do po-select.
215
+ */
216
+ getSelectBgIconsStyle(themeColor) {
217
+ let selectBgIcon = '';
218
+ if (themeColor?.brand?.['01']?.dark) {
219
+ selectBgIcon += `po-select { --background-image: url("${this.getSelectBgIcon(themeColor.brand['01'].dark)}"); };`;
220
+ }
221
+ if (themeColor?.feedback?.negative?.base)
222
+ selectBgIcon += `po-select.ng-dirty.ng-invalid select { --background-image: url("${this.getSelectBgIcon(themeColor.feedback.negative.base)}"); };`;
223
+ if (themeColor?.neutral?.light?.['30'])
224
+ selectBgIcon += `select:disabled { --background-image: url("${this.getSelectBgIcon(themeColor.neutral.light['30'])}"); };`;
225
+ return selectBgIcon;
226
+ }
227
+ /**
228
+ * @docsPrivate
229
+ *
230
+ * Retorna a imagem SVG utilizada como fundo do po-select.
231
+ *
232
+ * @param {string} color Cor da Imagem - Utilizada no atributo 'fill'.
233
+ * @returns {string} Imagem SVG utilizada no po-select.
234
+ */
235
+ getSelectBgIcon(color) {
236
+ let svg = `"data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' `;
237
+ svg = svg.concat(`xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' `);
238
+ svg = svg.concat(`d='M18.707 8.29301C18.316 7.90201 17.684 7.90201 17.293 8.29301L12 13.586L6.70701 `);
239
+ svg = svg.concat(`8.29301C6.31601 7.90201 5.68401 7.90201 5.29301 8.29301C4.90201 8.68401 4.90201 `);
240
+ svg = svg.concat(`9.31601 5.29301 9.70701L11.293 15.707C11.488 15.902 11.744 16 12 16C12.256 16 12.512 `);
241
+ svg = svg.concat(`15.902 12.707 15.707L18.707 9.70701C19.098 9.31601 19.098 8.68401 18.707 8.29301Z' `);
242
+ svg = svg.concat(`fill='%23${color}'/%3E%3C/svg%3E%0A");`);
243
+ return svg;
244
+ }
245
+ static ɵfac = function PoThemeService_Factory(t) { return new (t || PoThemeService)(i0.ɵɵinject('Window'), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i0.RendererFactory2)); };
246
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoThemeService, factory: PoThemeService.ɵfac, providedIn: 'root' });
247
+ }
248
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoThemeService, [{
249
+ type: Injectable,
250
+ args: [{
251
+ providedIn: 'root'
252
+ }]
253
+ }], () => [{ type: Window, decorators: [{
254
+ type: Inject,
255
+ args: ['Window']
256
+ }] }, { type: Document, decorators: [{
257
+ type: Inject,
258
+ args: [DOCUMENT]
259
+ }] }, { type: i0.RendererFactory2 }], null); })();
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc2VydmljZXMvcG8tdGhlbWUvcG8tdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBS2xFOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFLRztJQUNBO0lBTHBCLFFBQVEsQ0FBWTtJQUNwQixLQUFLLEdBQVksY0FBYyxDQUFDO0lBRXhDLFlBQzRCLE1BQWMsRUFDZCxRQUFrQixFQUM1QyxlQUFpQztRQUZQLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsUUFBUSxDQUFDLEtBQWMsRUFBRSxZQUE2QixlQUFlLENBQUMsS0FBSztRQUN6RSxvRkFBb0Y7UUFDcEYsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSTthQUNwQixXQUFXLEVBQUU7YUFDYixPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQzthQUMxQixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBRXpCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMs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cnQgeyBJbmplY3QsIEluamVjdGFibGUsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb1RoZW1lVHlwZUVudW0gfSBmcm9tICcuL2VudW0vcG8tdGhlbWUtdHlwZS5lbnVtJztcbmltcG9ydCB7IHBvVGhlbWVEZWZhdWx0IH0gZnJvbSAnLi9oZWxwZXJzL3BvLXRoZW1lLXBvdWkuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9UaGVtZUNvbG9yIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRoZW1lLWNvbG9yLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RoZW1lVG9rZW5zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXRoZW1lLXRva2Vucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UaGVtZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10aGVtZS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gYFBvVGhlbWVTZXJ2aWNlYCBwb3NzaWJpbGl0YSBhIHBlcnNvbmFsaXphw6fDo28gZGFzIGNvcmVzIGRvIHRlbWEgcGFkcsOjbyBkbyBgUE8tVUlgLCBwZXJtaXRpbmRvIGEgYWx0ZXJhw6fDo28gZG9zIHZhbG9yZXMgZGFzIHZhcmnDoXZlaXMgZGUgZXN0aWxvIHVzYWRhcyBubyBDU1MgcGFkcsOjby5cbiAqXG4gKiA+IFBhcmEgc2FiZXIgbWFpcyBzb2JyZSBjb21vIGN1c3RvbWl6YXIgYXMgY29yZXMgZG8gdGVtYSBwYWRyw6NvIHZlcmlmaXF1ZSBvIGl0ZW0gW0N1c3RvbWl6YW5kbyBjb3JlcyBkbyB0ZW1hIHBhZHLDo29dKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2NvbG9ycy1jdXN0b21pemF0aW9uKSBuYSBhYmEgYEd1aWFzYC5cbiAqXG4gKiA+IE9icy46IE7Do28gZXN0w6EgZG9jdW1lbnRhZG8gYXF1aSBlIG7Do28gaW5kaWNhbW9zIGEgY3VzdG9taXphw6fDo28gZGFzIGNvcmVzIGRlICdmZWVkYmFjaycgcG9yIG1vdGl2b3MgZGUgYWNlc3NpYmlsaWRhZGUgZSB1c2FiaWxpZGFkZS5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUG9UaGVtZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIHByaXZhdGUgdGhlbWU6IFBvVGhlbWUgPSBwb1RoZW1lRGVmYXVsdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdXaW5kb3cnKSBwcml2YXRlIHdpbmRvdzogV2luZG93LFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBvIHRlbWEgYSBzZXIgYXBsaWNhZG8gbm8gY29tcG9uZW50ZSwgZGUgYWNvcmRvIGNvbSBvIHRpcG8gZGUgdGVtYSBlc3BlY2lmaWNhZG8uXG4gICAqXG4gICAqIEVzdGUgbcOpdG9kbyBkZWZpbmUgbyB0ZW1hIGEgc2VyIGFwbGljYWRvIG5vIGNvbXBvbmVudGUgY29tIGJhc2Ugbm8gb2JqZXRvIGB0aGVtZWAgZm9ybmVjaWRvIGUgbm8gdGlwbyBkZSB0ZW1hIGVzcGVjaWZpY2Fkby5cbiAgICogRWxlIGF0dWFsaXphIGFzIHByb3ByaWVkYWRlcyBkbyBjb21wb25lbnRlIHBhcmEgcmVmbGV0aXIgbyB0ZW1hIHNlbGVjaW9uYWRvLCBjb21vIGNvcmVzLCBlc3RpbG9zIGUgY29tcG9ydGFtZW50b3MuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9UaGVtZX0gdGhlbWUgLSBPYmpldG8gY29udGVuZG8gYXMgZGVmaW5pw6fDtWVzIGRlIHRlbWEgYSBzZXJlbSBhcGxpY2FkYXMgbm8gY29tcG9uZW50ZS5cbiAgICogQHBhcmFtIHtQb1RoZW1lVHlwZUVudW19IFt0aGVtZVR5cGU9UG9UaGVtZVR5cGVFbnVtLmxpZ2h0XSAtIChPcGNpb25hbCkgVGlwbyBkZSB0ZW1hIGEgc2VyIGFwbGljYWRvLCBwb2RlbmRvIHNlciAnbGlnaHQnIChjbGFybykgb3UgJ2RhcmsnIChlc2N1cm8pLiBQb3IgcGFkcsOjbywgbyB0ZW1hIGNsYXJvIMOpIGFwbGljYWRvLlxuICAgKi9cbiAgc2V0VGhlbWUodGhlbWU6IFBvVGhlbWUsIHRoZW1lVHlwZTogUG9UaGVtZVR5cGVFbnVtID0gUG9UaGVtZVR5cGVFbnVtLmxpZ2h0KTogdm9pZCB7XG4gICAgLy8gQ2hhbmdlIHRoZW1lIG5hbWUsIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlcmVzIGFuZCBudW1iZXIsIHJlcGxhY2Ugc3BhY2Ugd2l0aCBkYXNoXG4gICAgdGhlbWUubmFtZSA9IHRoZW1lLm5hbWVcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVogXS9nLCAnJylcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICctJyk7XG4gICAgdGhlbWUuYWN0aXZlID0gdGhlbWVUeXBlO1xuXG4gICAgY29uc3QgX3RoZW1lVHlwZSA9IHRoZW1lLnR5cGVbUG9UaGVtZVR5cGVFbnVtW3RoZW1lVHlwZV1dO1xuICAgIGlmICghX3RoZW1lVHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbG9yU3R5bGVzID0gX3RoZW1lVHlwZS5jb2xvciA/IHRoaXMuZ2VuZXJhdGVUaGVtZVN0eWxlcyhfdGhlbWVUeXBlLmNvbG9yKSA6ICcnO1xuICAgIGNvbnN0IHBlckNvbXBvbmVudFN0eWxlcyA9IF90aGVtZVR5cGUucGVyQ29tcG9uZW50ID8gdGhpcy5nZW5lcmF0ZVBlckNvbXBvbmVudFN0eWxlcyhfdGhlbWVUeXBlLnBlckNvbXBvbmVudCkgOiAnJztcbiAgICBjb25zdCBvblJvb3RTdHlsZXMgPSBfdGhlbWVUeXBlLm9uUm9vdCA/IHRoaXMuZ2VuZXJhdGVBZGRpdGlvbmFsU3R5bGVzKF90aGVtZVR5cGUub25Sb290KSA6ICcnO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxTdHlsZXMgPSB0aGlzLmdlbmVyYXRlQWRkaXRpb25hbFN0eWxlcyhfdGhlbWVUeXBlKTtcblxuICAgIGNvbnN0IGNvbWJpbmVkU3R5bGVzID0gYFxuICAgICAgLiR7dGhlbWUubmFtZX0tJHtQb1RoZW1lVHlwZUVudW1bdGhlbWVUeXBlXX06cm9vdCB7IFxuICAgICAgICAke2NvbG9yU3R5bGVzfSBcbiAgICAgICAgJHtwZXJDb21wb25lbnRTdHlsZXN9XG4gICAgICAgICR7b25Sb290U3R5bGVzfVxuICAgICAgICAke2FkZGl0aW9uYWxTdHlsZXN9IFxuICAgICAgfWA7XG5cbiAgICB0aGlzLmFwcGx5VGhlbWVTdHlsZXMoY29tYmluZWRTdHlsZXMpO1xuICAgIHRoaXMuY2hhbmdlVGhlbWVUeXBlKHRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZG9jc1ByaXZhdGVcbiAgICpcbiAgICogR2VyYSBlc3RpbG9zIGFkaWNpb25haXMgY29tIGJhc2Ugbm9zIHRva2VucyBkZSB0ZW1hIGZvcm5lY2lkb3MsIGV4Y2x1aW5kbyBvcyB0b2tlbnMgZGUgY29yLlxuICAgKiBAcGFyYW0gdGhlbWUgT3MgdG9rZW5zIGRlIHRlbWEgY29udGVuZG8gb3MgZXN0aWxvcyBhZGljaW9uYWlzIGEgc2VyZW0gZ2VyYWRvcy5cbiAgICogQHJldHVybnMgVW1hIHN0cmluZyBjb250ZW5kbyBvcyBlc3RpbG9zIGFkaWNpb25haXMgZm9ybWF0YWRvcy5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVBZGRpdGlvbmFsU3R5bGVzKHRoZW1lOiBQb1RoZW1lVG9rZW5zKTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhlbWUpXG4gICAgICAuZmlsdGVyKChba2V5XSkgPT4gIVsnY29sb3InLCAncGVyQ29tcG9uZW50JywgJ29uUm9vdCddLmluY2x1ZGVzKGtleSkpXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06ICR7dmFsdWV9O2ApXG4gICAgICAuam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBBcGxpY2Egb3MgZXN0aWxvcyBkZSB0ZW1hIGFvIGRvY3VtZW50by5cbiAgICogQHBhcmFtIHN0eWxlQ3NzIE9zIGVzdGlsb3MgQ1NTIGEgc2VyZW0gYXBsaWNhZG9zLlxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseVRoZW1lU3R5bGVzKHN0eWxlQ3NzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLmNyZWF0ZVN0eWxlRWxlbWVudChzdHlsZUNzcyk7XG4gICAgY29uc3QgZXhpc3RpbmdTdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJyNwb3VpVGhlbWUnKTtcblxuICAgIGlmIChleGlzdGluZ1N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5oZWFkLCBleGlzdGluZ1N0eWxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VUaGVtZVR5cGUodGhlbWU6IFBvVGhlbWUpIHtcbiAgICB0aGlzLmNsZWFuVGhlbWVBY3RpdmUoKTtcbiAgICB0aGlzLnNldFRoZW1lQWN0aXZlKHRoZW1lKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdLmNsYXNzTGlzdC5hZGQoLi4uW2Ake3RoZW1lLm5hbWV9LSR7UG9UaGVtZVR5cGVFbnVtW3RoZW1lLmFjdGl2ZV19YF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RlIGUgZGVmaW5lIG8gdGVtYSBkbyBhcGxpY2F0aXZvIGNvbSBiYXNlIG5vcyBkYWRvcyBhcm1hemVuYWRvcy5cbiAgICpcbiAgICogRXN0ZSBtw6l0b2RvIHJlY3VwZXJhIG9zIGRhZG9zIGRvIHRlbWEgYXJtYXplbmFkb3MgZSBvcyBhcGxpY2EgYW8gYXBsaWNhdGl2by5cbiAgICpcbiAgICogQHJldHVybnMge1BvVGhlbWV9IFJlY3VwZXJhIG8gdGVtYSBhcm1hemVuYWRvLlxuICAgKi9cbiAgcGVyc2lzdFRoZW1lQWN0aXZlKCkge1xuICAgIGNvbnN0IF90aGVtZSA9IHRoaXMuZ2V0VGhlbWVBY3RpdmUoKTtcbiAgICB0aGlzLnNldFRoZW1lKF90aGVtZSwgX3RoZW1lLmFjdGl2ZSk7XG4gICAgcmV0dXJuIF90aGVtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbHRlcmEgbyB0aXBvIGRvIHRlbWEgYXJtYXplbmFkbyBlIGFwbGljYSBvcyBub3ZvcyBlc3RpbG9zIGFvIGRvY3VtZW50by5cbiAgICpcbiAgICogRXN0ZSBtw6l0b2RvIGFsdGVyYSBvIHRpcG8gZG8gdGVtYSBhcm1hemVuYWRvIGF0aXZvIChsaWdodC9kYXJrKVxuICAgKlxuICAgKiBAcGFyYW0ge1BvVGhlbWVUeXBlRW51bX0gdGhlbWVUeXBlIE8gdGlwbyBkZSB0ZW1hIGEgc2VyIGFwbGljYWRvLCBsaWdodCBvdSBkYXJrLlxuICAgKi9cbiAgY2hhbmdlQ3VycmVudFRoZW1lVHlwZSh0eXBlOiBQb1RoZW1lVHlwZUVudW0pOiB2b2lkIHtcbiAgICBjb25zdCBfdGhlbWUgPSB0aGlzLmdldFRoZW1lQWN0aXZlKCk7XG4gICAgX3RoZW1lLmFjdGl2ZSA9IHR5cGU7XG4gICAgdGhpcy5jaGFuZ2VUaGVtZVR5cGUoX3RoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlbW92ZSBvIHRlbWEgYXJtYXplbmFkbyBlIGxpbXBhIHRvZG9zIG9zIGVzdGlsb3MgZGUgdGVtYVxuICAgKiBhcGxpY2Fkb3MgYW8gZG9jdW1lbnRvLlxuICAgKi9cbiAgY2xlYW5UaGVtZUFjdGl2ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBfdGhlbWUgPSB0aGlzLmdldFRoZW1lQWN0aXZlKCk7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXS5jbGFzc0xpc3QucmVtb3ZlKGAke190aGVtZS5uYW1lfS0ke1BvVGhlbWVUeXBlRW51bVtfdGhlbWUuYWN0aXZlXX1gKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG90dnMtdGhlbWUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZG9jc1ByaXZhdGVcbiAgICpcbiAgICogRXN0ZSBtw6l0b2RvIGRlZmluZSB1bSBkYWRvcyBkbyB0ZW1hIGUgbyBhcm1hemVuYS5cbiAgICogQHBhcmFtIHRoZW1lIE9zIHRva2VucyBkZSB0ZW1hIGNvbnRlbmRvIG9zIGVzdGlsb3MgYWRpY2lvbmFpcyBhIHNlcmVtIGdlcmFkb3MuXG4gICAqL1xuICBwcml2YXRlIHNldFRoZW1lQWN0aXZlKHRoZW1lOiBQb1RoZW1lKTogdm9pZCB7XG4gICAgaWYgKHRoZW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG90dnMtdGhlbWUnLCBKU09OLnN0cmluZ2lmeSh0aGVtZSkpO1xuICAgICAgdGhpcy50aGVtZSA9IHRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIG8gdGVtYSBhdGl2byBjb21vIHVtIG9ic2VydmFibGUuXG4gICAqIEByZXR1cm5zIHtQb1RoZW1lfSBUZW1hIGF0aXZvLlxuICAgKi9cbiAgZ2V0VGhlbWVBY3RpdmUoKTogUG9UaGVtZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRoZW1lRGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvdHZzLXRoZW1lJykpO1xuICAgICAgaWYgKHRoZW1lRGF0YSAmJiBKU09OLnN0cmluZ2lmeSh0aGVtZURhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnRoZW1lKSkge1xuICAgICAgICB0aGlzLnRoZW1lID0gdGhlbWVEYXRhO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvIGFvIG9idGVyIG8gdGVtYSBkbyBhcm1hemVuYW1lbnRvIGxvY2FsOicsIGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGhlbWU7XG4gIH1cblxuICAvKipcbiAgICogQGRvY3NQcml2YXRlXG4gICAqXG4gICAqIEdlcmEgZXN0aWxvcyBDU1MgY29tIGJhc2Ugbm9zIHRva2VucyBkZSBjb3JlcyBmb3JuZWNpZG9zLlxuICAgKiBAcGFyYW0gdGhlbWVDb2xvciBPcyB0b2tlbnMgZGUgY29yIGEgc2VyZW0gdXNhZG9zIHBhcmEgZ2VyYXIgb3MgZXN0aWxvcy5cbiAgICogQHJldHVybnMgVW1hIHN0cmluZyBjb250ZW5kbyBvcyBlc3RpbG9zIENTUyBnZXJhZG9zLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVTdHlsZUVsZW1lbnQoY3NzOiBzdHJpbmcpOiBIVE1MU3R5bGVFbGVtZW50IHtcbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVFbGVtZW50LmlkID0gJ3BvdWlUaGVtZSc7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChjc3MpKTtcbiAgICByZXR1cm4gc3R5bGVFbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBHZXJhIGVzdGlsb3MgQ1NTIGNvbSBiYXNlIG5vcyB0b2tlbnMgZGUgY29yZXMgZm9ybmVjaWRvcy5cbiAgICogQHBhcmFtIHRoZW1lQ29sb3IgT3MgdG9rZW5zIGRlIGNvciBhIHNlcmVtIHVzYWRvcyBwYXJhIGdlcmFyIG9zIGVzdGlsb3MuXG4gICAqIEByZXR1cm5zIFVtYSBzdHJpbmcgY29udGVuZG8gb3MgZXN0aWxvcyBDU1MgZ2VyYWRvcy5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVUaGVtZVN0eWxlcyh0aGVtZUNvbG9yOiBQb1RoZW1lQ29sb3IpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlbGVjdEJnSWNvblN0eWxlID0gdGhpcy5nZXRTZWxlY3RCZ0ljb25zU3R5bGUodGhlbWVDb2xvcik7XG5cbiAgICByZXR1cm4gW1xuICAgICAgT2JqZWN0LmVudHJpZXModGhlbWVDb2xvcilcbiAgICAgICAgLmZsYXRNYXAoKFt0eXBlLCB2YWx1ZXNdKSA9PlxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlcykuZmxhdE1hcCgoW3RvbmFsaXR5LCB0b25hbGl0eVZhbHVlc10pID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnYWN0aW9uJykge1xuICAgICAgICAgICAgICByZXR1cm4gW2AtLWNvbG9yLSR7dHlwZX0tJHt0b25hbGl0eX06ICR7dG9uYWxpdHlWYWx1ZXN9O2BdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRvbmFsaXR5VmFsdWVzKS5tYXAoXG4gICAgICAgICAgICAgICAgKFtsZXZlbCwgY29sb3JWYWx1ZV0pID0+IGAtLWNvbG9yLSR7dHlwZX0tJHt0b25hbGl0eX0tJHtsZXZlbH06ICR7Y29sb3JWYWx1ZX07YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJycpLFxuICAgICAgc2VsZWN0QmdJY29uU3R5bGVcbiAgICBdLmpvaW4oJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBHZXJhIGVzdGlsb3MgQ1NTIGNvbSBiYXNlIG5vcyB0b2tlbnMgcGVyIENvbXBvbmVudCBmb3JuZWNpZG9zLlxuICAgKiBAcGFyYW0gdGhlbWVQZXJDb21wb25lbnQgT3MgdG9rZW5zIGRlIGNvciBhIHNlcmVtIHVzYWRvcyBwYXJhIGdlcmFyIG9zIGVzdGlsb3MuXG4gICAqIEByZXR1cm5zIFVtYSBzdHJpbmcgY29udGVuZG8gb3MgZXN0aWxvcyBDU1MgZ2VyYWRvcy5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVQZXJDb21wb25lbnRTdHlsZXModGhlbWVQZXJDb21wb25lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoZW1lUGVyQ29tcG9uZW50KVxuICAgICAgLmZsYXRNYXAoKFt0eXBlLCB2YWx1ZXNdKSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyh2YWx1ZXMpLmZsYXRNYXAoKFtsZXZlbCwgY29sb3JWYWx1ZV0pID0+IFtgJHt0eXBlfSB7JHtsZXZlbH06ICR7Y29sb3JWYWx1ZX07fTtgXSlcbiAgICAgIClcbiAgICAgIC5qb2luKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgbyB0ZW1hIGF0dWFsIGNvbW8gbyB0ZW1hIFwiUG9VSSBQYWRyw6NvXCIuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9UaGVtZVR5cGVFbnVtfSB0eXBlIE8gdGlwbyBkZSBUZW1hIGEgc2VyIGFwbGljYWRvLCBsaWdodCAvIGRhcmsuXG4gICAqL1xuICBzZXREZWZhdWx0VGhlbWUodHlwZTogUG9UaGVtZVR5cGVFbnVtKTogdm9pZCB7XG4gICAgdGhpcy5zZXRUaGVtZShwb1RoZW1lRGVmYXVsdCwgdHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRvY3NQcml2YXRlXG4gICAqXG4gICAqIFJldG9ybmEgbyBlc3RpbG8gQ1NTIHBhcmEgbyBmdW5kbyBkb3Mgw61jb25lcyBkbyBjb21wb25lbnRlIHBvLXNlbGVjdCwgY29tIGJhc2UgbmFzIGNvcmVzIGRvIHRlbWEuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9UaGVtZUNvbG9yfSB0aGVtZUNvbG9yIC0gT2JqZXRvIGNvbnRlbmRvIGFzIGNvcmVzIGRvIHRlbWEuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRXN0aWxvIENTUyBwYXJhIG8gZnVuZG8gZG9zIMOtY29uZXMgZG8gcG8tc2VsZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZWxlY3RCZ0ljb25zU3R5bGUodGhlbWVDb2xvcjogUG9UaGVtZUNvbG9yKTogc3RyaW5nIHtcbiAgICBsZXQgc2VsZWN0QmdJY29uID0gJyc7XG5cbiAgICBpZiAodGhlbWVDb2xvcj8uYnJhbmQ/LlsnMDEnXT8uZGFyaykge1xuICAgICAgc2VsZWN0QmdJY29uICs9IGBwby1zZWxlY3QgeyAtLWJhY2tncm91bmQtaW1hZ2U6IHVybChcIiR7dGhpcy5nZXRTZWxlY3RCZ0ljb24odGhlbWVDb2xvci5icmFuZFsnMDEnXS5kYXJrKX1cIik7IH07YDtcbiAgICB9XG4gICAgaWYgKHRoZW1lQ29sb3I/LmZlZWRiYWNrPy5uZWdhdGl2ZT8uYmFzZSlcbiAgICAgIHNlbGVjdEJnSWNvbiArPSBgcG8tc2VsZWN0Lm5nLWRpcnR5Lm5nLWludmFsaWQgc2VsZWN0IHsgLS1iYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIke3RoaXMuZ2V0U2VsZWN0QmdJY29uKHRoZW1lQ29sb3IuZmVlZGJhY2submVnYXRpdmUuYmFzZSl9XCIpOyB9O2A7XG5cbiAgICBpZiAodGhlbWVDb2xvcj8ubmV1dHJhbD8ubGlnaHQ/LlsnMzAnXSlcbiAgICAgIHNlbGVjdEJnSWNvbiArPSBgc2VsZWN0OmRpc2FibGVkIHsgLS1iYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIke3RoaXMuZ2V0U2VsZWN0QmdJY29uKHRoZW1lQ29sb3IubmV1dHJhbC5saWdodFsnMzAnXSl9XCIpOyB9O2A7XG5cbiAgICByZXR1cm4gc2VsZWN0QmdJY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzUHJpdmF0ZVxuICAgKlxuICAgKiBSZXRvcm5hIGEgaW1hZ2VtIFNWRyB1dGlsaXphZGEgY29tbyBmdW5kbyBkbyBwby1zZWxlY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciBDb3IgZGEgSW1hZ2VtIC0gVXRpbGl6YWRhIG5vIGF0cmlidXRvICdmaWxsJy5cbiAgICogQHJldHVybnMge3N0cmluZ30gSW1hZ2VtIFNWRyB1dGlsaXphZGEgbm8gcG8tc2VsZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTZWxlY3RCZ0ljb24oY29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHN2Zzogc3RyaW5nID0gYFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgYDtcblxuICAgIHN2ZyA9IHN2Zy5jb25jYXQoYHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGwtcnVsZT0nZXZlbm9kZCcgY2xpcC1ydWxlPSdldmVub2RkJyBgKTtcbiAgICBzdmcgPSBzdmcuY29uY2F0KGBkPSdNMTguNzA3IDguMjkzMDFDMTguMzE2IDcuOTAyMDEgMTcuNjg0IDcuOTAyMDEgMTcuMjkzIDguMjkzMDFMMTIgMTMuNTg2TDYuNzA3MDEgYCk7XG4gICAgc3ZnID0gc3ZnLmNvbmNhdChgOC4yOTMwMUM2LjMxNjAxIDcuOTAyMDEgNS42ODQwMSA3LjkwMjAxIDUuMjkzMDEgOC4yOTMwMUM0LjkwMjAxIDguNjg0MDEgNC45MDIwMSBgKTtcbiAgICBzdmcgPSBzdmcuY29uY2F0KGA5LjMxNjAxIDUuMjkzMDEgOS43MDcwMUwxMS4yOTMgMTUuNzA3QzExLjQ4OCAxNS45MDIgMTEuNzQ0IDE2IDEyIDE2QzEyLjI1NiAxNiAxMi41MTIgYCk7XG4gICAgc3ZnID0gc3ZnLmNvbmNhdChgMTUuOTAyIDEyLjcwNyAxNS43MDdMMTguNzA3IDkuNzA3MDFDMTkuMDk4IDkuMzE2MDEgMTkuMDk4IDguNjg0MDEgMTguNzA3IDguMjkzMDFaJyBgKTtcbiAgICBzdmcgPSBzdmcuY29uY2F0KGBmaWxsPSclMjMke2NvbG9yfScvJTNFJTNDL3N2ZyUzRSUwQVwiKTtgKTtcblxuICAgIHJldHVybiBzdmc7XG4gIH1cbn1cbiJdfQ==
@@ -8,6 +8,7 @@ import { PoDialogModule } from './po-dialog/po-dialog.module';
8
8
  import { PoI18nPipe } from './po-i18n/po-i18n.pipe';
9
9
  import { PoLanguageModule } from './po-language/po-language.module';
10
10
  import { PoNotificationModule } from './po-notification/po-notification.module';
11
+ import { PoThemeModule } from './po-theme/po-theme.module';
11
12
  import * as i0 from "@angular/core";
12
13
  export class PoServicesModule {
13
14
  static ɵfac = function PoServicesModule_Factory(t) { return new (t || PoServicesModule)(); };
@@ -19,13 +20,15 @@ export class PoServicesModule {
19
20
  PoDateTimeModule,
20
21
  PoDialogModule,
21
22
  PoLanguageModule,
22
- PoNotificationModule, PoActiveOverlayModule,
23
+ PoNotificationModule,
24
+ PoThemeModule, PoActiveOverlayModule,
23
25
  PoColorPaletteModule,
24
26
  PoComponentInjectorModule,
25
27
  PoControlPositionModule,
26
28
  PoDateTimeModule,
27
29
  PoDialogModule,
28
- PoNotificationModule] });
30
+ PoNotificationModule,
31
+ PoThemeModule] });
29
32
  }
30
33
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoServicesModule, [{
31
34
  type: NgModule,
@@ -39,7 +42,8 @@ export class PoServicesModule {
39
42
  PoDateTimeModule,
40
43
  PoDialogModule,
41
44
  PoLanguageModule,
42
- PoNotificationModule
45
+ PoNotificationModule,
46
+ PoThemeModule
43
47
  ],
44
48
  exports: [
45
49
  PoActiveOverlayModule,
@@ -49,7 +53,8 @@ export class PoServicesModule {
49
53
  PoDateTimeModule,
50
54
  PoDialogModule,
51
55
  PoI18nPipe,
52
- PoNotificationModule
56
+ PoNotificationModule,
57
+ PoThemeModule
53
58
  ],
54
59
  providers: [],
55
60
  bootstrap: []
@@ -62,12 +67,14 @@ export class PoServicesModule {
62
67
  PoDateTimeModule,
63
68
  PoDialogModule,
64
69
  PoLanguageModule,
65
- PoNotificationModule], exports: [PoActiveOverlayModule,
70
+ PoNotificationModule,
71
+ PoThemeModule], exports: [PoActiveOverlayModule,
66
72
  PoColorPaletteModule,
67
73
  PoComponentInjectorModule,
68
74
  PoControlPositionModule,
69
75
  PoDateTimeModule,
70
76
  PoDialogModule,
71
77
  PoI18nPipe,
72
- PoNotificationModule] }); })();
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9zZXJ2aWNlcy9zZXJ2aWNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQTJCaEYsTUFBTSxPQUFPLGdCQUFnQjswRUFBaEIsZ0JBQWdCOzREQUFoQixnQkFBZ0I7Z0VBdEJ6QixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLHlCQUF5QjtZQUN6Qix1QkFBdUI7WUFDdkIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsb0JBQW9CLEVBR3BCLHFCQUFxQjtZQUNyQixvQkFBb0I7WUFDcEIseUJBQXlCO1lBQ3pCLHVCQUF1QjtZQUN2QixnQkFBZ0I7WUFDaEIsY0FBYztZQUVkLG9CQUFvQjs7aUZBS1gsZ0JBQWdCO2NBekI1QixRQUFRO2VBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsVUFBVSxDQUFDO2dCQUMxQixPQUFPLEVBQUU7b0JBQ1AscUJBQXFCO29CQUNyQixvQkFBb0I7b0JBQ3BCLHlCQUF5QjtvQkFDekIsdUJBQXVCO29CQUN2QixnQkFBZ0I7b0JBQ2hCLGNBQWM7b0JBQ2QsZ0JBQWdCO29CQUNoQixvQkFBb0I7aUJBQ3JCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxxQkFBcUI7b0JBQ3JCLG9CQUFvQjtvQkFDcEIseUJBQXlCO29CQUN6Qix1QkFBdUI7b0JBQ3ZCLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxVQUFVO29CQUNWLG9CQUFvQjtpQkFDckI7Z0JBQ0QsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsU0FBUyxFQUFFLEVBQUU7YUFDZDs7d0ZBQ1ksZ0JBQWdCLG1CQXhCWixVQUFVLGFBRXZCLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIseUJBQXlCO1FBQ3pCLHVCQUF1QjtRQUN2QixnQkFBZ0I7UUFDaEIsY0FBYztRQUNkLGdCQUFnQjtRQUNoQixvQkFBb0IsYUFHcEIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsVUFBVTtRQUNWLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvQWN0aXZlT3ZlcmxheU1vZHVsZSB9IGZyb20gJy4vcG8tYWN0aXZlLW92ZXJsYXkvcG8tYWN0aXZlLW92ZXJsYXkubW9kdWxlJztcbmltcG9ydCB7IFBvQ29sb3JQYWxldHRlTW9kdWxlIH0gZnJvbSAnLi9wby1jb2xvci1wYWxldHRlL3BvLWNvbG9yLXBhbGV0dGUubW9kdWxlJztcbmltcG9ydCB7IFBvQ29tcG9uZW50SW5qZWN0b3JNb2R1bGUgfSBmcm9tICcuL3BvLWNvbXBvbmVudC1pbmplY3Rvci9wby1jb21wb25lbnQtaW5qZWN0b3IubW9kdWxlJztcbmltcG9ydCB7IFBvQ29udHJvbFBvc2l0aW9uTW9kdWxlIH0gZnJvbSAnLi9wby1jb250cm9sLXBvc2l0aW9uL3BvLWNvbnRyb2wtcG9zaXRpb24ubW9kdWxlJztcbmltcG9ydCB7IFBvRGF0ZVRpbWVNb2R1bGUgfSBmcm9tICcuL3BvLWRhdGUvcG8tZGF0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgUG9EaWFsb2dNb2R1bGUgfSBmcm9tICcuL3BvLWRpYWxvZy9wby1kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IFBvSTE4blBpcGUgfSBmcm9tICcuL3BvLWkxOG4vcG8taTE4bi5waXBlJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICcuL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLm1vZHVsZSc7XG5pbXBvcnQgeyBQb05vdGlmaWNhdGlvbk1vZHVsZSB9IGZyb20gJy4vcG8tbm90aWZpY2F0aW9uL3BvLW5vdGlmaWNhdGlvbi5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtQb0kxOG5QaXBlXSxcbiAgaW1wb3J0czogW1xuICAgIFBvQWN0aXZlT3ZlcmxheU1vZHVsZSxcbiAgICBQb0NvbG9yUGFsZXR0ZU1vZHVsZSxcbiAgICBQb0NvbXBvbmVudEluamVjdG9yTW9kdWxlLFxuICAgIFBvQ29udHJvbFBvc2l0aW9uTW9kdWxlLFxuICAgIFBvRGF0ZVRpbWVNb2R1bGUsXG4gICAgUG9EaWFsb2dNb2R1bGUsXG4gICAgUG9MYW5ndWFnZU1vZHVsZSxcbiAgICBQb05vdGlmaWNhdGlvbk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUG9BY3RpdmVPdmVybGF5TW9kdWxlLFxuICAgIFBvQ29sb3JQYWxldHRlTW9kdWxlLFxuICAgIFBvQ29tcG9uZW50SW5qZWN0b3JNb2R1bGUsXG4gICAgUG9Db250cm9sUG9zaXRpb25Nb2R1bGUsXG4gICAgUG9EYXRlVGltZU1vZHVsZSxcbiAgICBQb0RpYWxvZ01vZHVsZSxcbiAgICBQb0kxOG5QaXBlLFxuICAgIFBvTm90aWZpY2F0aW9uTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG4gIGJvb3RzdHJhcDogW11cbn0pXG5leHBvcnQgY2xhc3MgUG9TZXJ2aWNlc01vZHVsZSB7fVxuIl19
78
+ PoNotificationModule,
79
+ PoThemeModule] }); })();
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9zZXJ2aWNlcy9zZXJ2aWNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUE2QjNELE1BQU0sT0FBTyxnQkFBZ0I7MEVBQWhCLGdCQUFnQjs0REFBaEIsZ0JBQWdCO2dFQXhCekIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixhQUFhLEVBR2IscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixjQUFjO1lBRWQsb0JBQW9CO1lBQ3BCLGFBQWE7O2lGQUtKLGdCQUFnQjtjQTNCNUIsUUFBUTtlQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDMUIsT0FBTyxFQUFFO29CQUNQLHFCQUFxQjtvQkFDckIsb0JBQW9CO29CQUNwQix5QkFBeUI7b0JBQ3pCLHVCQUF1QjtvQkFDdkIsZ0JBQWdCO29CQUNoQixjQUFjO29CQUNkLGdCQUFnQjtvQkFDaEIsb0JBQW9CO29CQUNwQixhQUFhO2lCQUNkO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxxQkFBcUI7b0JBQ3JCLG9CQUFvQjtvQkFDcEIseUJBQXlCO29CQUN6Qix1QkFBdUI7b0JBQ3ZCLGdCQUFnQjtvQkFDaEIsY0FBYztvQkFDZCxVQUFVO29CQUNWLG9CQUFvQjtvQkFDcEIsYUFBYTtpQkFDZDtnQkFDRCxTQUFTLEVBQUUsRUFBRTtnQkFDYixTQUFTLEVBQUUsRUFBRTthQUNkOzt3RkFDWSxnQkFBZ0IsbUJBMUJaLFVBQVUsYUFFdkIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLG9CQUFvQjtRQUNwQixhQUFhLGFBR2IscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsVUFBVTtRQUNWLG9CQUFvQjtRQUNwQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9BY3RpdmVPdmVybGF5TW9kdWxlIH0gZnJvbSAnLi9wby1hY3RpdmUtb3ZlcmxheS9wby1hY3RpdmUtb3ZlcmxheS5tb2R1bGUnO1xuaW1wb3J0IHsgUG9Db2xvclBhbGV0dGVNb2R1bGUgfSBmcm9tICcuL3BvLWNvbG9yLXBhbGV0dGUvcG8tY29sb3ItcGFsZXR0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgUG9Db21wb25lbnRJbmplY3Rvck1vZHVsZSB9IGZyb20gJy4vcG8tY29tcG9uZW50LWluamVjdG9yL3BvLWNvbXBvbmVudC1pbmplY3Rvci5tb2R1bGUnO1xuaW1wb3J0IHsgUG9Db250cm9sUG9zaXRpb25Nb2R1bGUgfSBmcm9tICcuL3BvLWNvbnRyb2wtcG9zaXRpb24vcG8tY29udHJvbC1wb3NpdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgUG9EYXRlVGltZU1vZHVsZSB9IGZyb20gJy4vcG8tZGF0ZS9wby1kYXRlLm1vZHVsZSc7XG5pbXBvcnQgeyBQb0RpYWxvZ01vZHVsZSB9IGZyb20gJy4vcG8tZGlhbG9nL3BvLWRpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUG9JMThuUGlwZSB9IGZyb20gJy4vcG8taTE4bi9wby1pMThuLnBpcGUnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZU1vZHVsZSB9IGZyb20gJy4vcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UubW9kdWxlJztcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uTW9kdWxlIH0gZnJvbSAnLi9wby1ub3RpZmljYXRpb24vcG8tbm90aWZpY2F0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBQb1RoZW1lTW9kdWxlIH0gZnJvbSAnLi9wby10aGVtZS9wby10aGVtZS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtQb0kxOG5QaXBlXSxcbiAgaW1wb3J0czogW1xuICAgIFBvQWN0aXZlT3ZlcmxheU1vZHVsZSxcbiAgICBQb0NvbG9yUGFsZXR0ZU1vZHVsZSxcbiAgICBQb0NvbXBvbmVudEluamVjdG9yTW9kdWxlLFxuICAgIFBvQ29udHJvbFBvc2l0aW9uTW9kdWxlLFxuICAgIFBvRGF0ZVRpbWVNb2R1bGUsXG4gICAgUG9EaWFsb2dNb2R1bGUsXG4gICAgUG9MYW5ndWFnZU1vZHVsZSxcbiAgICBQb05vdGlmaWNhdGlvbk1vZHVsZSxcbiAgICBQb1RoZW1lTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBQb0FjdGl2ZU92ZXJsYXlNb2R1bGUsXG4gICAgUG9Db2xvclBhbGV0dGVNb2R1bGUsXG4gICAgUG9Db21wb25lbnRJbmplY3Rvck1vZHVsZSxcbiAgICBQb0NvbnRyb2xQb3NpdGlvbk1vZHVsZSxcbiAgICBQb0RhdGVUaW1lTW9kdWxlLFxuICAgIFBvRGlhbG9nTW9kdWxlLFxuICAgIFBvSTE4blBpcGUsXG4gICAgUG9Ob3RpZmljYXRpb25Nb2R1bGUsXG4gICAgUG9UaGVtZU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxuICBib290c3RyYXA6IFtdXG59KVxuZXhwb3J0IGNsYXNzIFBvU2VydmljZXNNb2R1bGUge31cbiJdfQ==