dts-backoffice-util 16.0.0 → 17.0.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.
- package/README.md +143 -52
- package/esm2022/dts-backoffice-util.mjs +4 -4
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.mjs +305 -272
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.mjs +7 -7
- package/esm2022/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.mjs +208 -183
- package/esm2022/lib/dts-backoffice-util.module.mjs +54 -54
- package/esm2022/lib/interfaces/filter-range.interface.mjs +1 -1
- package/esm2022/lib/interfaces/totvs-response.interface.mjs +1 -1
- package/esm2022/lib/model/session-info.model.mjs +67 -67
- package/esm2022/lib/pipes/dts-date-format.pipe.mjs +20 -20
- package/esm2022/lib/services/breadcrumb-control.service.mjs +99 -99
- package/esm2022/lib/services/cache-params.service.mjs +25 -25
- package/esm2022/lib/services/menu-datasul.service.mjs +118 -118
- package/esm2022/lib/services/profile.service.mjs +55 -55
- package/esm2022/lib/services/report.service.mjs +57 -57
- package/esm2022/lib/services/session-info.service.mjs +36 -36
- package/esm2022/lib/services/translate.service.mjs +23 -23
- package/esm2022/lib/utils/date.util.mjs +56 -56
- package/esm2022/lib/utils/disclaimer.util.mjs +490 -490
- package/esm2022/lib/utils/field-validation.util.mjs +179 -179
- package/esm2022/lib/utils/file.util.mjs +151 -151
- package/esm2022/lib/utils/filter-range.util.mjs +32 -32
- package/esm2022/lib/utils/generic-functions.utils.mjs +170 -170
- package/esm2022/public-api.mjs +33 -33
- package/fesm2022/dts-backoffice-util.mjs +2013 -1955
- package/fesm2022/dts-backoffice-util.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.d.ts +53 -49
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.d.ts +68 -60
- package/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.d.ts +30 -30
- package/lib/dts-backoffice-util.module.d.ts +14 -14
- package/lib/interfaces/filter-range.interface.d.ts +18 -18
- package/lib/interfaces/totvs-response.interface.d.ts +4 -4
- package/lib/model/session-info.model.d.ts +40 -40
- package/lib/pipes/dts-date-format.pipe.d.ts +7 -7
- package/lib/services/breadcrumb-control.service.d.ts +18 -18
- package/lib/services/cache-params.service.d.ts +10 -10
- package/lib/services/menu-datasul.service.d.ts +27 -27
- package/lib/services/profile.service.d.ts +25 -25
- package/lib/services/report.service.d.ts +31 -31
- package/lib/services/session-info.service.d.ts +12 -12
- package/lib/services/translate.service.d.ts +8 -8
- package/lib/utils/date.util.d.ts +9 -9
- package/lib/utils/disclaimer.util.d.ts +40 -40
- package/lib/utils/field-validation.util.d.ts +21 -21
- package/lib/utils/file.util.d.ts +23 -23
- package/lib/utils/filter-range.util.d.ts +7 -7
- package/lib/utils/generic-functions.utils.d.ts +24 -24
- package/package.json +5 -5
- package/public-api.d.ts +20 -20
package/README.md
CHANGED
|
@@ -11,9 +11,10 @@ Biblioteca que engloba diversos componentes e serviços utilizados no desenvolvi
|
|
|
11
11
|
Segue abaixo as últimas versões da Biblioteca, conforme a versão do PO-UI e Angular correspondentes.<br>Detalhes das alterações: **[**VER CHANGE LOG**](https://github.com/ModernizaDatasul/dts-backoffice-util/blob/master/projects/dts-backoffice-util/CHANGELOG.md)**.
|
|
12
12
|
|
|
13
13
|
| PO-UI | Angular | Versão dtsBackofficeUtil |
|
|
14
|
-
|
|
15
|
-
|
|
|
16
|
-
|
|
|
14
|
+
|-|-|-|
|
|
15
|
+
| v17 | v17 | 17.0.0 |
|
|
16
|
+
| v16 | v16 | 16.1.0 |
|
|
17
|
+
| v15 | v15 | 15.4.1 |
|
|
17
18
|
| v14 | v14 | 14.4.1 |
|
|
18
19
|
| v6 | v13 | 6.0.2 |
|
|
19
20
|
| v5 | v12 | 5.0.1 |
|
|
@@ -188,35 +189,6 @@ this.menuDatasulService
|
|
|
188
189
|
})
|
|
189
190
|
```
|
|
190
191
|
|
|
191
|
-
No HTML usar da seguinte forma:
|
|
192
|
-
```
|
|
193
|
-
<app-totvs-schedule-execution
|
|
194
|
-
programName="pdapi701"
|
|
195
|
-
externalName="pdp/pdapi701.p"
|
|
196
|
-
programEMS5="false"
|
|
197
|
-
programVersion=""
|
|
198
|
-
[parameters]="parametersRpw"
|
|
199
|
-
(endExecution)="endExecution($event)">
|
|
200
|
-
</app-totvs-schedule-execution>
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
**Definição no JavaScript:**
|
|
204
|
-
```
|
|
205
|
-
this.parametersRpw = [
|
|
206
|
-
{ chave: 'destino', valor: 2, tipo: 'integer' },
|
|
207
|
-
{ chave: 'arquivo', valor: '', tipo: 'character' },
|
|
208
|
-
{ chave: 'usuario', valor: 'FERNANDO', tipo: 'character' },
|
|
209
|
-
{ chave: 'perfil', valor: 880, tipo: 'integer' }
|
|
210
|
-
];
|
|
211
|
-
```
|
|
212
|
-
**Definição no Progress:**
|
|
213
|
-
```
|
|
214
|
-
DEFINE TEMP-TABLE tt-param NO-UNDO
|
|
215
|
-
FIELD destino AS INTEGER
|
|
216
|
-
FIELD arquivo AS CHARACTER
|
|
217
|
-
FIELD usuario AS CHARACTER
|
|
218
|
-
FIELD perfil AS INTEGER.
|
|
219
|
-
```
|
|
220
192
|
Parâmetros:
|
|
221
193
|
|
|
222
194
|
| Nome | Tipo | Obrigatório | Descrição |
|
|
@@ -224,8 +196,12 @@ Parâmetros:
|
|
|
224
196
|
| programName | string | Sim | Código de Programa cadastrado no menu, do programa que será executado no RPW. |
|
|
225
197
|
| externalName | string | Sim | Nome completo do Programa que será executado no RPW, diretório + nome externo.<br>**Importante:** Em virtude do dicionário (Foundation), este parâmetro é limitado a 24 dígitos. |
|
|
226
198
|
| programEMS5 | boolean | Não | Indica se o programa progress é do EMS5. |
|
|
199
|
+
| programStyle | number | Não | Número que representa o Estilo do Relatório no EMS5. |
|
|
227
200
|
| programVersion | string | Não | Versão do programa progress. |
|
|
228
201
|
| parameters | Array | Sim | Objeto representando a Temp-Table que será enviada ao progress. |
|
|
202
|
+
| paramDigitDef | Array | Não | Definição da Temp-Table tt-digita. Utilizado apenas pelo EMS2. Para cada campo da tt-digita, deve ser enviado um objeto com o seguinte formato: **{"chave": "string", "tipo": "string" }**. Onde **chave** representa o nome do campo, e **tipo** representa o tipo de dado (exemplo: character, integer, etc...). |
|
|
203
|
+
| paramDigitData | Array | Não | Dados que serão enviados e alimentados na tt-digita. Utilizado apenas pelo EMS2. |
|
|
204
|
+
| paramSelections | Array | Não | Parâmetros de Seleção. Utilizado apenas pelo EMS5. |
|
|
229
205
|
| disabledParams | boolean | Não | Quando for igual a **"Sim"**, irá desabilitar todos os campos do Agendamento (Data Execução, Servidor, Repetir ocorrência, etc...). |
|
|
230
206
|
| loading | boolean | Não | Quando for igual a **"Sim"**, irá apresentar a tela de "loading" no momento da criação da agenda até o retorno do serviço. |
|
|
231
207
|
| endExecution | EventEmitter | Não | Evento que será disparado ao finalizar o agendamento. Ele irá enviar como parâmetro um objeto da interface **IScheduleParameters**, contendo os parâmetros informados pelo usuário. |
|
|
@@ -241,23 +217,76 @@ Exemplo de Uso:
|
|
|
241
217
|
|
|
242
218
|
Em conjunto com o parâmetro **endExecution** o método **setScheduleParameters** pode ser utilizado para salvar e recuperar as informações de agendamento informadas pelo usuário.
|
|
243
219
|
|
|
220
|
+
**Definições no HTML:**
|
|
244
221
|
```
|
|
245
|
-
|
|
222
|
+
// EXEMPLO PARA EMS5
|
|
246
223
|
<app-totvs-schedule-execution #schParam
|
|
247
|
-
|
|
224
|
+
programName="rpt_grp_repres"
|
|
225
|
+
externalName="rpt_grp_repres"
|
|
226
|
+
programEMS5="true"
|
|
227
|
+
programStyle="40"
|
|
228
|
+
programVersion="1.00.00.004"
|
|
229
|
+
[parameters]="parametersRpw"
|
|
230
|
+
[paramSelections]="paramSelectionsRpw"
|
|
248
231
|
(endExecution)="endExecutionSchedule($event)">
|
|
249
232
|
</app-totvs-schedule-execution>
|
|
250
233
|
|
|
251
|
-
|
|
234
|
+
// EXEMPLO PARA EMS2
|
|
235
|
+
<app-totvs-schedule-execution #schParam
|
|
236
|
+
programName="pdapi701"
|
|
237
|
+
externalName="pdp/pdapi701.p"
|
|
238
|
+
[parameters]="parametersRpw"
|
|
239
|
+
[paramDigitDef]="paramDigitDefRpw"
|
|
240
|
+
[paramDigitData]="paramDigitDataRpw"
|
|
241
|
+
(endExecution)="endExecutionSchedule($event)">
|
|
242
|
+
</app-totvs-schedule-execution>
|
|
243
|
+
```
|
|
244
|
+
**Definições no JavaScript:**
|
|
245
|
+
```
|
|
252
246
|
@ViewChild('schParam', { static: true }) schParam: TotvsScheduleExecutionComponent;
|
|
253
|
-
|
|
247
|
+
|
|
254
248
|
scheduleParams: IScheduleParameters;
|
|
255
|
-
|
|
249
|
+
parametersRpw = new Array<any>();
|
|
250
|
+
paramDigitDefRpw = new Array<any>();
|
|
251
|
+
paramDigitDataRpw = new Array<any>();
|
|
252
|
+
paramSelectionsRpw = new Array<any>();
|
|
253
|
+
|
|
256
254
|
ngOnInit(): void {
|
|
257
|
-
...
|
|
258
255
|
this.loadLocalStorage();
|
|
259
256
|
this.schParam.setScheduleParameters(this.scheduleParams);
|
|
260
|
-
|
|
257
|
+
|
|
258
|
+
this.createParametersRpw();
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
createParametersRpw(): void {
|
|
262
|
+
// Parâmetros
|
|
263
|
+
this.parametersRpw = [
|
|
264
|
+
{ chave: 'destino', valor: 2, tipo: 'integer' },
|
|
265
|
+
{ chave: 'arquivo', valor: '', tipo: 'character' },
|
|
266
|
+
{ chave: 'usuario', valor: 'FERNANDO', tipo: 'character' },
|
|
267
|
+
{ chave: 'perfil', valor: 880, tipo: 'integer' }
|
|
268
|
+
];
|
|
269
|
+
|
|
270
|
+
// Definição da tt-digita (EMS2)
|
|
271
|
+
this.paramDigitDefRpw = [
|
|
272
|
+
{ chave: 'cod-estab', tipo: 'character' },
|
|
273
|
+
{ chave: 'cod-ccusto', tipo: 'integer' }
|
|
274
|
+
];
|
|
275
|
+
|
|
276
|
+
// Dados da tt-digita (EMS2)
|
|
277
|
+
this.paramDigitDataRpw = [
|
|
278
|
+
{ "cod-estab": '19', "cod-ccusto": 17 },
|
|
279
|
+
{ "cod-estab": '28', "cod-ccusto": 11 },
|
|
280
|
+
{ "cod-estab": '73', "cod-ccusto": 90 }
|
|
281
|
+
];
|
|
282
|
+
|
|
283
|
+
// Seleção (Relatório Regra/Exceção do EMS5)
|
|
284
|
+
this.paramSelectionsRpw = [
|
|
285
|
+
{ ind_dwb_set_type: "Regra", cod_dwb_set: "estab",
|
|
286
|
+
cod_dwb_set_initial: "01", cod_dwb_set_final: "FF", log_dwb_rule: true },
|
|
287
|
+
{ ind_dwb_set_type: "Exceção", cod_dwb_set: "ccusto",
|
|
288
|
+
cod_dwb_set_initial: "30", cod_dwb_set_final: "35", log_dwb_rule: false }
|
|
289
|
+
]
|
|
261
290
|
}
|
|
262
291
|
|
|
263
292
|
endExecutionSchedule(event): void {
|
|
@@ -275,6 +304,18 @@ private loadLocalStorage(): void {
|
|
|
275
304
|
this.scheduleParams = JSON.parse(localStorage.getItem('param-maint.schParam'));
|
|
276
305
|
}
|
|
277
306
|
```
|
|
307
|
+
**Definições no Progress:**
|
|
308
|
+
```
|
|
309
|
+
DEFINE TEMP-TABLE tt-param NO-UNDO
|
|
310
|
+
FIELD destino AS INTEGER
|
|
311
|
+
FIELD arquivo AS CHARACTER
|
|
312
|
+
FIELD usuario AS CHARACTER
|
|
313
|
+
FIELD perfil AS INTEGER.
|
|
314
|
+
|
|
315
|
+
DEFINE TEMP-TABLE tt-digita NO-UNDO
|
|
316
|
+
FIELD cod-estab AS CHARACTER
|
|
317
|
+
FIELD cod-ccusto AS INTEGER.
|
|
318
|
+
```
|
|
278
319
|
|
|
279
320
|
Interfaces:
|
|
280
321
|
|
|
@@ -316,8 +357,8 @@ Exemplo de Uso:
|
|
|
316
357
|
|
|
317
358
|
Segue abaixo exemplos da geração de agendamento, busca e acompanhamento da execução.
|
|
318
359
|
|
|
360
|
+
**Definições no HTML:**
|
|
319
361
|
```
|
|
320
|
-
- HTML -
|
|
321
362
|
<po-lookup
|
|
322
363
|
p-label="Servidor RPW"
|
|
323
364
|
p-placeholder="Servidor RPW"
|
|
@@ -328,8 +369,9 @@ Segue abaixo exemplos da geração de agendamento, busca e acompanhamento da exe
|
|
|
328
369
|
p-field-value="code"
|
|
329
370
|
[(ngModel)]="executionServer">
|
|
330
371
|
</po-lookup>
|
|
331
|
-
|
|
332
|
-
|
|
372
|
+
```
|
|
373
|
+
**Definições no JavaScript:**
|
|
374
|
+
```
|
|
333
375
|
executionServer: string;
|
|
334
376
|
jobScheduleID: string;
|
|
335
377
|
executionID: string;
|
|
@@ -356,15 +398,46 @@ createSchedule(): void {
|
|
|
356
398
|
// Criar um Agendamento para ser Executado "agora"
|
|
357
399
|
const execParam = new ExecutionParameters();
|
|
358
400
|
execParam.executionServer = executionServer;
|
|
359
|
-
|
|
360
|
-
|
|
401
|
+
|
|
402
|
+
// Exemplo de Parâmetros para o EMS5
|
|
403
|
+
execParam.programName = 'rpt_grp_repres';
|
|
404
|
+
execParam.externalName = 'rpt_grp_repres';
|
|
361
405
|
execParam.programEMS5 = true;
|
|
362
|
-
execParam.
|
|
406
|
+
execParam.programStyle = 40;
|
|
407
|
+
execParam.programVersion = '1.00.00.004';
|
|
363
408
|
execParam.businessParams = [
|
|
364
409
|
{ chave: 'cTipoCarga', valor: 'register', tipo: 'character' },
|
|
365
410
|
{ chave: 'lCargaTotal', valor: false, tipo: 'logical' },
|
|
366
411
|
{ chave: 'dDataCorte', valor: null, tipo: 'date' }
|
|
367
412
|
];
|
|
413
|
+
// Seleção (Relatório Regra/Exceção do EMS5)
|
|
414
|
+
execParam.paramSelections = [
|
|
415
|
+
{ ind_dwb_set_type: "Regra", cod_dwb_set: "estab",
|
|
416
|
+
cod_dwb_set_initial: "01", cod_dwb_set_final: "FF", log_dwb_rule: true },
|
|
417
|
+
{ ind_dwb_set_type: "Exceção", cod_dwb_set: "ccusto",
|
|
418
|
+
cod_dwb_set_initial: "30", cod_dwb_set_final: "35", log_dwb_rule: false }
|
|
419
|
+
];
|
|
420
|
+
|
|
421
|
+
// Exemplo de Parâmetros para o EMS2
|
|
422
|
+
execParam.programName = 'pdapi701';
|
|
423
|
+
execParam.externalName = 'pdp/pdapi701.p';
|
|
424
|
+
execParam.businessParams = [
|
|
425
|
+
{ chave: 'destino', valor: 2, tipo: 'integer' },
|
|
426
|
+
{ chave: 'arquivo', valor: '', tipo: 'character' },
|
|
427
|
+
{ chave: 'usuario', valor: 'FERNANDO', tipo: 'character' },
|
|
428
|
+
{ chave: 'perfil', valor: 880, tipo: 'integer' }
|
|
429
|
+
];
|
|
430
|
+
// Definição da tt-digita (EMS2)
|
|
431
|
+
execParam.paramDigitDef = [
|
|
432
|
+
{ chave: 'cod-estab', tipo: 'character' },
|
|
433
|
+
{ chave: 'cod-ccusto', tipo: 'integer' }
|
|
434
|
+
];
|
|
435
|
+
// Dados da tt-digita (EMS2)
|
|
436
|
+
execParam.paramDigitData = [
|
|
437
|
+
{ "cod-estab": '19', "cod-ccusto": 17 },
|
|
438
|
+
{ "cod-estab": '28', "cod-ccusto": 11 },
|
|
439
|
+
{ "cod-estab": '73', "cod-ccusto": 90 }
|
|
440
|
+
];
|
|
368
441
|
|
|
369
442
|
this.schedExecSubscription$ = this.scheduleExecution
|
|
370
443
|
.createExecutionForNow(execParam, true)
|
|
@@ -450,6 +523,18 @@ followUpCallBack(execStatus: IExecutionStatus): boolean {
|
|
|
450
523
|
return true; // Continua monitorando - retornar "false" para parar o monitoramento
|
|
451
524
|
}
|
|
452
525
|
```
|
|
526
|
+
**Definições no Progress:**
|
|
527
|
+
```
|
|
528
|
+
DEFINE TEMP-TABLE tt-param NO-UNDO
|
|
529
|
+
FIELD destino AS INTEGER
|
|
530
|
+
FIELD arquivo AS CHARACTER
|
|
531
|
+
FIELD usuario AS CHARACTER
|
|
532
|
+
FIELD perfil AS INTEGER.
|
|
533
|
+
|
|
534
|
+
DEFINE TEMP-TABLE tt-digita NO-UNDO
|
|
535
|
+
FIELD cod-estab AS CHARACTER
|
|
536
|
+
FIELD cod-ccusto AS INTEGER.
|
|
537
|
+
```
|
|
453
538
|
|
|
454
539
|
Interfaces:
|
|
455
540
|
|
|
@@ -460,8 +545,12 @@ IExecutionParameters
|
|
|
460
545
|
| programName | string | Sim | Código de Programa cadastrado no menu, do programa que será executado no RPW. |
|
|
461
546
|
| externalName | string | Sim | Nome completo do Programa que será executado no RPW, diretório + nome externo.<br>**Importante:** Em virtude do dicionário (Foundation), este parâmetro é limitado a 24 dígitos. |
|
|
462
547
|
| programEMS5 | boolean | Não | Indica se o programa progress é do EMS5. |
|
|
548
|
+
| programStyle | number | Não | Número que representa o Estilo do Relatório no EMS5. |
|
|
463
549
|
| programVersion | string | Não | Versão do programa progress. |
|
|
464
|
-
| businessParams | Array | Não | Objeto representando a Temp-Table que será enviada ao progress.
|
|
550
|
+
| businessParams | Array | Não | Objeto representando a Temp-Table que será enviada ao progress. |
|
|
551
|
+
| paramDigitDef | Array | Não | Definição da Temp-Table tt-digita. Utilizado apenas pelo EMS2. Para cada campo da tt-digita, deve ser enviado um objeto com o seguinte formato: **{"chave": "string", "tipo": "string" }**. Onde **chave** representa o nome do campo, e **tipo** representa o tipo de dado (exemplo: character, integer, etc...). |
|
|
552
|
+
| paramDigitData | Array | Não | Dados que serão enviados e alimentados na tt-digita. Utilizado apenas pelo EMS2. |
|
|
553
|
+
| paramSelections | Array | Não | Parâmetros de Seleção. Utilizado apenas pelo EMS5. |
|
|
465
554
|
|
|
466
555
|
IExecutionStatus
|
|
467
556
|
| Nome | Tipo | Descrição |
|
|
@@ -713,10 +802,11 @@ Métodos:
|
|
|
713
802
|
---
|
|
714
803
|
|
|
715
804
|
Exemplo de Uso:
|
|
805
|
+
|
|
806
|
+
**Definições no JavaScript:**
|
|
716
807
|
```
|
|
717
|
-
|
|
808
|
+
// TS da Tela
|
|
718
809
|
|
|
719
|
-
- TS da Tela -
|
|
720
810
|
import { FileUtil } from 'dts-backoffice-util';
|
|
721
811
|
|
|
722
812
|
fileBase64: string;
|
|
@@ -764,7 +854,8 @@ onConfirmUpload(): void {
|
|
|
764
854
|
);
|
|
765
855
|
}
|
|
766
856
|
|
|
767
|
-
|
|
857
|
+
// TS do Serviço
|
|
858
|
+
|
|
768
859
|
getFile(id: string): Observable<Object> {
|
|
769
860
|
const url = `/customer/${id}/file`;
|
|
770
861
|
return this.http.get(url);
|
|
@@ -774,9 +865,9 @@ getQrCode(text: string): Observable<Blob> {
|
|
|
774
865
|
const url = `/qrcode/download?text=${text}`;
|
|
775
866
|
return this.http.get(url, { responseType: 'blob' });
|
|
776
867
|
}
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
868
|
+
```
|
|
869
|
+
**Definições no Progress:**
|
|
870
|
+
```
|
|
780
871
|
// Conteúdo do Método que BackEnd que retorna o Arquivo em Base64
|
|
781
872
|
DEFINE VARIABLE v_dir_arq AS CHARACTER NO-UNDO.
|
|
782
873
|
DEFINE VARIABLE v_cod_arq AS CHARACTER NO-UNDO.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRzLWJhY2tvZmZpY2UtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2R0cy1iYWNrb2ZmaWNlLXV0aWwvc3JjL2R0cy1iYWNrb2ZmaWNlLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|