sf-crud 12.3.2 → 13.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.
Files changed (49) hide show
  1. package/fesm2022/sf-crud.mjs +3252 -0
  2. package/fesm2022/sf-crud.mjs.map +1 -0
  3. package/{sf-crud.d.ts → index.d.ts} +5 -5
  4. package/lib/components/control/control.component.d.ts +67 -66
  5. package/lib/components/file-upload/file-upload.component.d.ts +34 -34
  6. package/lib/components/form/form.component.d.ts +63 -63
  7. package/lib/components/registro/registro.component.d.ts +109 -109
  8. package/lib/components/step/step.component.d.ts +27 -27
  9. package/lib/components/tablero/tablero.component.d.ts +53 -52
  10. package/lib/directives/format-address.pipe.d.ts +7 -7
  11. package/lib/sf-crud.component.d.ts +8 -8
  12. package/lib/sf-crud.module.d.ts +94 -90
  13. package/lib/sf-crud.routing.module.d.ts +7 -7
  14. package/lib/sf-crud.service.d.ts +135 -135
  15. package/lib/shared/models/Conditions.model.d.ts +32 -32
  16. package/lib/shared/models/Empresa.model.d.ts +11 -11
  17. package/lib/shared/models/Reason.model.d.ts +5 -5
  18. package/lib/shared/models/crud-config.model.d.ts +109 -110
  19. package/lib/shared/models/shema.model.d.ts +37 -37
  20. package/lib/shared/services/general.service.d.ts +20 -20
  21. package/lib/shared/services/notification.service.d.ts +26 -27
  22. package/lib/shared/services/step.service.d.ts +27 -27
  23. package/package.json +20 -15
  24. package/public-api.d.ts +12 -12
  25. package/bundles/sf-crud.umd.js +0 -3786
  26. package/bundles/sf-crud.umd.js.map +0 -1
  27. package/esm2015/lib/components/control/control.component.js +0 -394
  28. package/esm2015/lib/components/file-upload/file-upload.component.js +0 -143
  29. package/esm2015/lib/components/form/form.component.js +0 -289
  30. package/esm2015/lib/components/registro/registro.component.js +0 -757
  31. package/esm2015/lib/components/step/step.component.js +0 -79
  32. package/esm2015/lib/components/tablero/tablero.component.js +0 -220
  33. package/esm2015/lib/directives/format-address.pipe.js +0 -22
  34. package/esm2015/lib/sf-crud.component.js +0 -26
  35. package/esm2015/lib/sf-crud.module.js +0 -359
  36. package/esm2015/lib/sf-crud.routing.module.js +0 -23
  37. package/esm2015/lib/sf-crud.service.js +0 -531
  38. package/esm2015/lib/shared/models/Conditions.model.js +0 -81
  39. package/esm2015/lib/shared/models/Empresa.model.js +0 -2
  40. package/esm2015/lib/shared/models/Reason.model.js +0 -7
  41. package/esm2015/lib/shared/models/crud-config.model.js +0 -76
  42. package/esm2015/lib/shared/models/shema.model.js +0 -11
  43. package/esm2015/lib/shared/services/general.service.js +0 -74
  44. package/esm2015/lib/shared/services/notification.service.js +0 -83
  45. package/esm2015/lib/shared/services/step.service.js +0 -63
  46. package/esm2015/public-api.js +0 -16
  47. package/esm2015/sf-crud.js +0 -5
  48. package/fesm2015/sf-crud.js +0 -3134
  49. package/fesm2015/sf-crud.js.map +0 -1
@@ -1,143 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import * as moment from 'moment';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "primeng/api";
5
- import * as i2 from "primeng/button";
6
- import * as i3 from "primeng/ripple";
7
- import * as i4 from "@angular/common";
8
- export class FileUploadComponent {
9
- constructor(messageSerice) {
10
- this.messageSerice = messageSerice;
11
- this.files = [];
12
- this.loading = false;
13
- this.accept = "image/*,application/pdf";
14
- this.onUpload = new EventEmitter();
15
- this.onDeleteFile = new EventEmitter();
16
- this.newFiles = [];
17
- window.addEventListener("paste", (e) => {
18
- var _a;
19
- if (((_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.files) && e.clipboardData.files.length > 0) {
20
- this.appendFile(e.clipboardData.files[0]);
21
- }
22
- });
23
- }
24
- ngOnChanges(changes) {
25
- }
26
- ngOnInit() {
27
- }
28
- appendFile(file) {
29
- const allowedTypes = this.accept.split(",");
30
- const allowedFile = allowedTypes.some(pattern => {
31
- const regexObj = new RegExp(pattern);
32
- const match = regexObj.exec(file.type);
33
- return match ? (match === null || match === void 0 ? void 0 : match.length) > 0 : false;
34
- });
35
- if (allowedFile) {
36
- const newFile = new File([file], this.getName(file), { type: file.type });
37
- if (this.limit == 1) {
38
- this.newFiles = [newFile];
39
- }
40
- else
41
- this.newFiles.push(newFile);
42
- this.files.push({ name: newFile.name, url: window.URL.createObjectURL(newFile) });
43
- }
44
- else {
45
- this.messageSerice.add({ severity: "warn", detail: "Tipo de archivo no válido" });
46
- }
47
- }
48
- emitFiles() {
49
- this.loading = true;
50
- this.onUpload.emit(this.newFiles);
51
- }
52
- getName(file) {
53
- let sName = "";
54
- let date = new Date();
55
- if (this.configName !== undefined) {
56
- let name = this.configName.split('|');
57
- name.forEach(item => {
58
- if (item.indexOf("DATE@") != -1)
59
- sName += (moment(date)).format(item.split('@')[1]);
60
- else if (item.indexOf("@") == -1)
61
- sName += item;
62
- });
63
- let ext = this.getExt(file);
64
- sName += ext ? "." + ext : "";
65
- }
66
- else
67
- sName = file.name;
68
- return sName;
69
- }
70
- getExt(file) {
71
- let ext = undefined;
72
- let aux = file.name.split('.');
73
- if (aux.length > 0)
74
- ext = aux[aux.length - 1];
75
- return ext;
76
- }
77
- appendFiles($event) {
78
- if ($event.target.files.length > 0) {
79
- this.appendFile($event.target.files[0]);
80
- }
81
- if (this.limit == this.files.length) {
82
- this.stopAnimation();
83
- this.emitFiles();
84
- }
85
- else
86
- this.startAnimation();
87
- this.fileUploader.nativeElement.value = "";
88
- }
89
- dropFile(archivo) {
90
- this.files.forEach((f, index) => {
91
- if (f == archivo) {
92
- this.files.splice(index, 1);
93
- this.onDeleteFile.emit(index);
94
- }
95
- });
96
- }
97
- openFile(archivo) {
98
- window.open(archivo.url, '_blank');
99
- window.addEventListener('focus', () => URL.revokeObjectURL(archivo.url));
100
- }
101
- startAnimation() {
102
- const button = document.querySelector('.button-upload');
103
- if (button) {
104
- button.classList.add('animate-pulse');
105
- }
106
- }
107
- stopAnimation() {
108
- const button = document.querySelector('.button-upload');
109
- if (button) {
110
- button.classList.remove('animate-pulse');
111
- }
112
- }
113
- }
114
- FileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
115
- FileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FileUploadComponent, selector: "sf-file-upload", inputs: { limit: "limit", files: "files", loading: "loading", configName: "configName", accept: "accept" }, outputs: { onUpload: "onUpload", onDeleteFile: "onDeleteFile" }, viewQueries: [{ propertyName: "fileUploader", first: true, predicate: ["fileUpload"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"screen\" #screen>\r\n <div class=\"fileUp\">\r\n <div class=\"botones\">\r\n <input type=\"file\" (change)=\"appendFiles($event)\" class=\"file-input\" #fileUpload multiple>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-plus\" class=\"p-button-info\" (click)=\"fileUpload.click()\"\r\n [disabled]=\"limit == files.length\" [loading]=\"loading\"></button>\r\n <button *ngIf=\"limit != 1\" pButton pRipple type=\"button\" icon=\"pi pi-upload\" class=\"button-upload p-button-info\"\r\n (click)=\"emitFiles()\" [disabled]=\"files.length == 0 || loading\" [loading]=\"loading\"></button>\r\n </div>\r\n\r\n <hr>\r\n <div class=\"imgs\">\r\n <ul>\r\n <li *ngFor=\"let file of files; let i = index\" [ngSwitch]=\"file.type\">\r\n <p>{{i+1}}. {{files[i].name}}</p>\r\n <div>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-external-link\" class=\"p-button-rounded\"\r\n (click)=\"openFile(file)\"></button>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-times\" class=\"p-button-rounded p-button-danger\"\r\n (click)=\"dropFile(file)\"></button>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#screen{container-type:inline-size}iframe{width:100%;padding:10px;text-align:center}.fileUp{border:1.5px solid gray;border-radius:5px;text-align:center}.fileUp .imgs{min-height:40px;margin-block:7px;max-height:135px;overflow-y:scroll}.fileUp hr{color:gray;margin:0}.fileUp .imgs ul li{text-decoration:none;display:flex;margin-block:5px;padding-inline:5px}.fileUp .imgs ul{padding-inline-start:30px}.fileUp .imgs ul li div{text-decoration:none;display:grid;grid-template-columns:50% 50%;margin-block:5px;margin-right:5px}.fileUp .botones *{margin-block:7px;margin-inline:10px}.fileUp .imgs ul li p{text-align:left;white-space:nowrap;width:100%;overflow:hidden;text-overflow:ellipsis}.fileUp .imgs ul li p,.fileUp .imgs ul li button{margin-block:auto;margin-inline:5px;text-align:left}.fileUp .imgs ul li img,.fileUp .imgs ul li iframe{text-align:center;width:80%;padding-inline:10%}.file-input{display:none}::ng-deep .p-button.p-button-info,.p-buttonset.p-button-info>.p-button,.p-splitbutton.p-button-info>.p-button{background:var(--secondary-color)!important;border:var(--secondary-color)!important;color:#fff}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.animate-pulse{animation:pulse 1.5s infinite}@container (width < 768px){.fileUp .imgs ul li {display: grid; grid-template-columns: 60% 40%;} .fileUp .imgs ul li img,.fileUp .imgs ul li iframe {display: none;}}\n"], directives: [{ type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }] });
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileUploadComponent, decorators: [{
117
- type: Component,
118
- args: [{
119
- selector: 'sf-file-upload',
120
- templateUrl: './file-upload.component.html',
121
- styleUrls: ['./file-upload.component.css']
122
- }]
123
- }], ctorParameters: function () { return [{ type: i1.MessageService }]; }, propDecorators: { limit: [{
124
- type: Input
125
- }], files: [{
126
- type: Input
127
- }], loading: [{
128
- type: Input
129
- }], configName: [{
130
- type: Input
131
- }], accept: [{
132
- type: Input
133
- }], onUpload: [{
134
- type: Output
135
- }], onDeleteFile: [{
136
- type: Output
137
- }], fileUploader: [{
138
- type: ViewChild,
139
- args: ['fileUpload']
140
- }] } });
141
- export class Archivo {
142
- }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7O0FBUWpDLE1BQU0sT0FBTyxtQkFBbUI7SUFlOUIsWUFDVSxhQUE2QjtRQUE3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFaOUIsVUFBSyxHQUFjLEVBQUUsQ0FBQztRQUN0QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFdBQU0sR0FBWSx5QkFBeUIsQ0FBQztRQUMzQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHcEQsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUtsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7O1lBQzFDLElBQUksQ0FBQSxNQUFBLENBQUMsQ0FBQyxhQUFhLDBDQUFFLEtBQUssS0FBSSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dCQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0M7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QkFBcEMsU0FBUzt1QkFBQyxZQUFZOztBQWdIekIsTUFBTSxPQUFPLE9BQU87Q0FHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NmLWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGxpbWl0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZpbGVzOiBBcmNoaXZvW10gPSBbXTtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY29uZmlnTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nICA9IFwiaW1hZ2UvKixhcHBsaWNhdGlvbi9wZGZcIjtcclxuICBAT3V0cHV0KCkgb25VcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcclxuICBAT3V0cHV0KCkgb25EZWxldGVGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZCcpIGZpbGVVcGxvYWRlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG5ld0ZpbGVzOiBGaWxlW10gPSBbXTtcclxuICBwcml2YXRlIGFuaW1hdGlvbkludGVydmFsOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VyaWNlOiBNZXNzYWdlU2VydmljZSkge1xyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBhc3RlXCIsIChlOiBhbnkpID0+e1xyXG4gICAgICAgIGlmIChlLmNsaXBib2FyZERhdGE/LmZpbGVzICYmIGUuY2xpcGJvYXJkRGF0YS5maWxlcy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgIHRoaXMuYXBwZW5kRmlsZShlLmNsaXBib2FyZERhdGEuZmlsZXNbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIGFwcGVuZEZpbGUoZmlsZTogRmlsZSl7XHJcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSB0aGlzLmFjY2VwdC5zcGxpdChcIixcIik7XHJcbiAgICBjb25zdCBhbGxvd2VkRmlsZSA9IGFsbG93ZWRUeXBlcy5zb21lKHBhdHRlcm4gPT4ge1xyXG4gICAgICBjb25zdCByZWdleE9iaiA9IG5ldyBSZWdFeHAocGF0dGVybik7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gcmVnZXhPYmouZXhlYyhmaWxlLnR5cGUpO1xyXG4gICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaD8ubGVuZ3RoID4gMDogZmFsc2VcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKGFsbG93ZWRGaWxlKXtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IG5ldyBGaWxlKFtmaWxlXSwgdGhpcy5nZXROYW1lKGZpbGUpLCB7dHlwZTogZmlsZS50eXBlfSlcclxuICAgICAgaWYgKHRoaXMubGltaXQgPT0gMSl7XHJcbiAgICAgICAgdGhpcy5uZXdGaWxlcyA9IFtuZXdGaWxlXVxyXG4gICAgICB9ZWxzZSB0aGlzLm5ld0ZpbGVzLnB1c2gobmV3RmlsZSlcclxuICAgICAgdGhpcy5maWxlcy5wdXNoKHtuYW1lOiBuZXdGaWxlLm5hbWUsIHVybDogd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3RmlsZSl9KVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcmljZS5hZGQoe3NldmVyaXR5OiBcIndhcm5cIiwgZGV0YWlsOiBcIlRpcG8gZGUgYXJjaGl2byBubyB2w6FsaWRvXCJ9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGVtaXRGaWxlcygpe1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMub25VcGxvYWQuZW1pdCh0aGlzLm5ld0ZpbGVzKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZShmaWxlOiBGaWxlKXtcclxuICAgIGxldCBzTmFtZSA9IFwiXCJcclxuXHJcbiAgICBsZXQgZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZih0aGlzLmNvbmZpZ05hbWUgIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgIGxldCBuYW1lID0gIHRoaXMuY29uZmlnTmFtZS5zcGxpdCgnfCcpO1xyXG4gICAgICBuYW1lLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZihcIkRBVEVAXCIpICE9IC0xKVxyXG4gICAgICAgICAgc05hbWUgKz0gKG1vbWVudChkYXRlKSkuZm9ybWF0KGl0ZW0uc3BsaXQoJ0AnKVsxXSk7XHJcbiAgICAgICAgZWxzZSBpZihpdGVtLmluZGV4T2YoXCJAXCIpID09IC0xKVxyXG4gICAgICAgIHNOYW1lICs9IGl0ZW1cclxuICAgICAgfSlcclxuICAgICAgbGV0IGV4dCA9IHRoaXMuZ2V0RXh0KGZpbGUpXHJcbiAgICAgIHNOYW1lICs9IGV4dCA/IFwiLlwiICsgZXh0OiBcIlwiXHJcbiAgICB9XHJcbiAgICBlbHNlIHNOYW1lID0gZmlsZS5uYW1lO1xyXG4gICAgcmV0dXJuIHNOYW1lXHJcbiAgfVxyXG4gIGdldEV4dChmaWxlOiBGaWxlKSB7XHJcbiAgICBsZXQgZXh0ID0gdW5kZWZpbmVkXHJcbiAgICBsZXQgYXV4ID0gZmlsZS5uYW1lLnNwbGl0KCcuJylcclxuICAgIGlmIChhdXgubGVuZ3RoID4gMCkgZXh0ID0gYXV4W2F1eC5sZW5ndGggLSAxXVxyXG4gICAgcmV0dXJuIGV4dFxyXG4gIH1cclxuXHJcbiAgYXBwZW5kRmlsZXMoJGV2ZW50OiBhbnkpe1xyXG4gICAgaWYoJGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5hcHBlbmRGaWxlKCRldmVudC50YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGltaXQgPT0gdGhpcy5maWxlcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zdG9wQW5pbWF0aW9uKClcclxuICAgICAgdGhpcy5lbWl0RmlsZXMoKVxyXG4gICAgfVxyXG4gICAgZWxzZSB0aGlzLnN0YXJ0QW5pbWF0aW9uKClcclxuICAgIHRoaXMuZmlsZVVwbG9hZGVyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZHJvcEZpbGUoYXJjaGl2bzogQXJjaGl2byl7XHJcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goKGYsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmKGYgPT0gYXJjaGl2byl7XHJcbiAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMub25EZWxldGVGaWxlLmVtaXQoaW5kZXgpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5GaWxlKGFyY2hpdm86IEFyY2hpdm8pIHtcclxuICAgIHdpbmRvdy5vcGVuKGFyY2hpdm8udXJsLCAnX2JsYW5rJyk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKGFyY2hpdm8udXJsKSk7XHJcbiAgfVxyXG5cclxuICBzdGFydEFuaW1hdGlvbigpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5idXR0b24tdXBsb2FkJyk7XHJcbiAgICBpZiAoYnV0dG9uKSB7XHJcbiAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhbmltYXRlLXB1bHNlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wQW5pbWF0aW9uKCkge1xyXG4gICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJ1dHRvbi11cGxvYWQnKTtcclxuICAgIGlmIChidXR0b24pIHtcclxuICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2FuaW1hdGUtcHVsc2UnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBcmNoaXZvIHtcclxuICBwdWJsaWMgdXJsISA6IHN0cmluZ1xyXG4gIHB1YmxpYyBuYW1lISA6IHN0cmluZ1xyXG59XHJcbiIsIjxkaXYgaWQ9XCJzY3JlZW5cIiAjc2NyZWVuPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGVVcFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3RvbmVzXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwiYXBwZW5kRmlsZXMoJGV2ZW50KVwiIGNsYXNzPVwiZmlsZS1pbnB1dFwiICNmaWxlVXBsb2FkIG11bHRpcGxlPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLXBsdXNcIiBjbGFzcz1cInAtYnV0dG9uLWluZm9cIiAoY2xpY2spPVwiZmlsZVVwbG9hZC5jbGljaygpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsaW1pdCA9PSBmaWxlcy5sZW5ndGhcIiBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJsaW1pdCAhPSAxXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktdXBsb2FkXCIgY2xhc3M9XCJidXR0b24tdXBsb2FkIHAtYnV0dG9uLWluZm9cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRGaWxlcygpXCIgW2Rpc2FibGVkXT1cImZpbGVzLmxlbmd0aCA9PSAwIHx8IGxvYWRpbmdcIiBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxocj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nc1wiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpID0gaW5kZXhcIiBbbmdTd2l0Y2hdPVwiZmlsZS50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3tpKzF9fS4ge3tmaWxlc1tpXS5uYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1leHRlcm5hbC1saW5rXCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWxlKGZpbGUpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktdGltZXNcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRyb3BGaWxlKGZpbGUpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,289 +0,0 @@
1
- import { Component, Input, ViewChildren } from '@angular/core';
2
- import * as jsonpath from 'jsonpath';
3
- import { ChangeData } from '../../sf-crud.service';
4
- import { Tooltip } from 'primeng/tooltip';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "primeng/api";
7
- import * as i2 from "../../sf-crud.service";
8
- import * as i3 from "@angular/platform-browser";
9
- import * as i4 from "../../shared/services/step.service";
10
- import * as i5 from "sf-ado";
11
- import * as i6 from "../control/control.component";
12
- import * as i7 from "sf-pdfsign";
13
- import * as i8 from "sf-simulador";
14
- import * as i9 from "primeng/button";
15
- import * as i10 from "primeng/table";
16
- import * as i11 from "primeng/toast";
17
- import * as i12 from "@angular/common";
18
- import * as i13 from "primeng/tooltip";
19
- import * as i14 from "primeng/ripple";
20
- import * as i15 from "../../directives/format-address.pipe";
21
- export class FormComponent {
22
- constructor(messageService, crudService, domSanitizer, stepService, adoService, jwtService) {
23
- this.messageService = messageService;
24
- this.crudService = crudService;
25
- this.domSanitizer = domSanitizer;
26
- this.stepService = stepService;
27
- this.adoService = adoService;
28
- this.jwtService = jwtService;
29
- this.isDialog = false;
30
- this.isAddressDialog = false;
31
- this.controlsLoaded = false;
32
- this.isMobile = false;
33
- this.loading = { inProgress: true, target: undefined };
34
- if (window.innerWidth <= 768)
35
- this.isMobile = true;
36
- window.addEventListener('resize', () => {
37
- if (window.innerWidth <= 768)
38
- this.isMobile = true;
39
- });
40
- }
41
- ngOnChanges(changes) {
42
- this.buildControls();
43
- }
44
- ngOnInit() {
45
- try {
46
- if (this.isAddressDialog)
47
- this.currentAddress = this.data.currentValue;
48
- this.jwtService.idKatios = this.crudService.idKatios;
49
- this.jwtService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones;
50
- this.adoService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones;
51
- this.idKatios = this.crudService.idKatios;
52
- this.stepService.requestApproved$.subscribe((approved) => {
53
- if (!this.isDialog && approved) {
54
- this.uiEsquema = this.crudService.getUIEsquema(this.stepService.currentIndex);
55
- this.esquema = this.crudService.getEsquema(this.stepService.currentIndex);
56
- this.data = this.crudService.getData(this.stepService.currentIndex);
57
- this.registro = this.crudService.getRegistro(this.stepService.currentIndex);
58
- this.buildControls();
59
- }
60
- });
61
- }
62
- catch (error) {
63
- console.error(error);
64
- }
65
- }
66
- emitLoadingForm($event) {
67
- this.loading.inProgress = $event;
68
- Promise.resolve().then(() => this.crudService.formLoading = this.loading); //si no se usa asi el enproceso totea con el simulador
69
- }
70
- buildControls() {
71
- var _a, _b, _c;
72
- this.visible = [];
73
- this.controlsLoaded = false;
74
- this.controls = [];
75
- this.values = [];
76
- //address
77
- if (this.isAddressDialog)
78
- this.newAddress = this.crudService.armarNuevaDireccion("string", this.data, this.crudService.getValue("$..separador", this.data));
79
- this.uiEsquema.elements.forEach((layout, i) => {
80
- var _a;
81
- let isVisible = layout.conditions ? this.crudService.isConditionsCompleted(layout.conditions, this.registro.conditions || [], this.data) : true;
82
- this.visible.push(layout.elements ? layout.elements.map(() => isVisible) : [isVisible]);
83
- this.controls.push([]);
84
- this.values.push([]);
85
- (_a = layout.elements) === null || _a === void 0 ? void 0 : _a.forEach((element, j) => {
86
- if (element.conditions)
87
- this.visible[i][j] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data);
88
- if (element.ngStyle && typeof (element.ngStyle) == "string")
89
- element.ngStyle = JSON.parse(element.ngStyle);
90
- if (element.url) {
91
- this.controls[i].push(undefined);
92
- let url = this.crudService.applyStringKeys(element.url);
93
- this.values[i].push(this.domSanitizer.bypassSecurityTrustResourceUrl(url));
94
- }
95
- else if (!element.scope) {
96
- this.controls[i].push(undefined);
97
- this.values[i].push(undefined);
98
- }
99
- else {
100
- try {
101
- this.controls[i].push(this.crudService.getControl(element.scope, this.esquema));
102
- this.controls[i][j].scope = element.scope;
103
- this.values[i].push(this.crudService.getValue(element.scope, this.data));
104
- }
105
- catch (e) {
106
- console.log(element);
107
- console.error(e);
108
- console.log(this.controls[i]);
109
- console.log(this.values[i]);
110
- }
111
- }
112
- });
113
- });
114
- this.controlsLoaded = true;
115
- let idProceso = (_b = (_a = this.data.ADO) === null || _a === void 0 ? void 0 : _a.dataProceso) === null || _b === void 0 ? void 0 : _b.idProceso;
116
- if (idProceso && ((_c = this.proceso) === null || _c === void 0 ? void 0 : _c.id) != idProceso)
117
- this.refreshIntegracion(idProceso);
118
- }
119
- refreshIntegracion(idProceso) {
120
- this.emitLoadingForm(true);
121
- return Promise.all([
122
- this.adoService.getProceso(idProceso).then((proceso) => {
123
- this.proceso = proceso;
124
- this.data.ADO.proceso = this.proceso;
125
- })
126
- ])
127
- .finally(() => this.emitLoadingForm(false));
128
- }
129
- extracControlFromTableElements(i, j, col) {
130
- const property = this.controls[i][j].properties[col.col];
131
- return property;
132
- }
133
- extracValueFromTableElements(i, j, k, col) {
134
- const value = this.values[i][j][k][col.col];
135
- return value;
136
- }
137
- setValue(value, scope, i, j) {
138
- var _a;
139
- scope = scope.replaceAll('..properties', '');
140
- if (scope) {
141
- let control = this.controls[i][j];
142
- this.values[i][j] = value;
143
- jsonpath.value(this.data, scope, value);
144
- this.crudService.changeData = new ChangeData(value, scope, this.crudService.index);
145
- this.uiEsquema.elements.forEach((layout, iLayout) => {
146
- var _a;
147
- if (layout.conditions) {
148
- let isVisible = this.crudService.isConditionsCompleted(layout.conditions, this.crudService.getRegistro(this.crudService.index).conditions || [], this.data);
149
- if (layout.elements)
150
- this.visible[iLayout] = layout.elements.map(() => isVisible);
151
- else
152
- this.visible[iLayout][0] = isVisible;
153
- }
154
- (_a = layout.elements) === null || _a === void 0 ? void 0 : _a.forEach((element, indexEl) => {
155
- if (element.conditions) {
156
- this.visible[iLayout][indexEl] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data);
157
- }
158
- });
159
- });
160
- (_a = control.applyKeys) === null || _a === void 0 ? void 0 : _a.forEach((i) => {
161
- let key = this.registro.keys ? this.registro.keys[i] : undefined;
162
- if (key)
163
- this.crudService.applyKey(key, this.registro, key.indexData ? this.crudService.getData(key.indexData) : this.data);
164
- });
165
- this.buildControls();
166
- }
167
- this.crudService.applyValuesOnEvent('onChange', this.esquema, undefined, this.data);
168
- }
169
- sendNotification(message) {
170
- this.messageService.add(message);
171
- }
172
- applyValuesFromObject(event) {
173
- if (event.optionValue) {
174
- for (let i = 0; i < event.optionValue.length; i++) {
175
- const optionVal = event.optionValue[i];
176
- const newVal = event.data ? this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]) : null;
177
- jsonpath.value(this.data, optionVal.scope.replace('.properties', ''), this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]));
178
- this.setValueByScope(optionVal.scope, newVal);
179
- }
180
- }
181
- }
182
- setValueByScope(scope, newVal) {
183
- for (let i = 0; i < this.controls.length; i++) {
184
- const row = this.controls[i];
185
- row.forEach((el, j) => {
186
- if (el.scope && el.scope.replace('.properties', '') == scope.replace('.properties', '')) {
187
- this.values[i][j] = newVal;
188
- }
189
- });
190
- }
191
- }
192
- aplyFormatValue(scope, value) {
193
- const control = jsonpath.query(this.esquema, scope)[0];
194
- let resp;
195
- switch (control.type) {
196
- case 'date':
197
- resp = new Date(`${value}`);
198
- break;
199
- case 'numeric':
200
- resp = +value;
201
- break;
202
- default:
203
- resp = value;
204
- break;
205
- }
206
- return resp;
207
- }
208
- editRow(element, data, index) {
209
- this.stepService.addCustomChildrenEvent("onClickedEditButton", { element, data, index });
210
- }
211
- deleteRow(element, index) {
212
- this.stepService.addCustomChildrenEvent("onClickedDeleteButton", { element, index });
213
- }
214
- addObjectArray(element) {
215
- this.stepService.addCustomChildrenEvent("onClickedAddButton", { element });
216
- }
217
- openPopUpDireccion(scope) {
218
- this.stepService.addCustomChildrenEvent("onClickedAddress", { scope });
219
- }
220
- onStateDocument(state) {
221
- this.data.pdf.signed = state.toUpperCase() == "FIRMADO";
222
- }
223
- onSimuladorChange($event) {
224
- Promise.resolve().then(() => Object.assign(this.data, $event));
225
- }
226
- goToADO() {
227
- var _a;
228
- let url = window.location.href;
229
- let callback = url.split('?')[0] + `?id=${this.data.idForm}`;
230
- let idProceso = (_a = this.data.ADO.dataProceso) === null || _a === void 0 ? void 0 : _a.idProceso;
231
- let dataProceso = this.data.ADO.dataProceso;
232
- dataProceso.ctivo = this.data.idForm;
233
- //this.data.ADO.idTransaction = null
234
- //this.data.ADO.idProceso = null
235
- if (idProceso) {
236
- window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`;
237
- window.location.reload();
238
- }
239
- else if (dataProceso) {
240
- window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?dataProceso=${btoa(JSON.stringify(dataProceso))}&callback=${encodeURIComponent(callback)}`;
241
- window.location.reload();
242
- }
243
- }
244
- onTouchDescription(id, alignRight = true) {
245
- const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === id);
246
- try {
247
- foundTooltip.activate();
248
- alignRight ? foundTooltip.alignRight() : foundTooltip.alignTop();
249
- }
250
- catch (ex) { }
251
- }
252
- onUnTouchDescription(descripcion) {
253
- const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === descripcion);
254
- try {
255
- foundTooltip.deactivate();
256
- }
257
- catch (ex) { }
258
- }
259
- copyToClipboard(idProceso) {
260
- let url = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`;
261
- navigator.clipboard.writeText(url);
262
- }
263
- }
264
- FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FormComponent, deps: [{ token: i1.MessageService }, { token: i2.SfCrudService }, { token: i3.DomSanitizer }, { token: i4.StepService }, { token: i5.AdoService }, { token: i5.JWTService }], target: i0.ɵɵFactoryTarget.Component });
265
- FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FormComponent, selector: "app-form", inputs: { uiEsquema: "uiEsquema", esquema: "esquema", data: "data", isDialog: "isDialog", isAddressDialog: "isAddressDialog", separador: "separador" }, viewQueries: [{ propertyName: "tooltips", predicate: Tooltip, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"controlsLoaded\" class=\"frm-container\">\r\n <ng-container *ngIf=\"isAddressDialog && currentAddress\">\r\n Direcci\u00F3n actual: {{currentAddress | formatAddress: separador}}\r\n <br>\r\n </ng-container>\r\n <br>\r\n <ng-container *ngIf=\"isAddressDialog\">\r\n Direcci\u00F3n nueva: {{newAddress | formatAddress: separador}}\r\n </ng-container>\r\n <div *ngFor=\"let element of uiEsquema.elements; let i = index\" [class]=\"element?.class\" #a>\r\n <ng-container [ngSwitch]=\"element.type\" *ngIf=\"visible[i][0]\">\r\n <div class=\"label\" *ngSwitchCase=\"'Label'\" [style]=\"element?.style\">\r\n {{element?.label}}\r\n </div>\r\n <ng-container *ngSwitchCase=\"'HorizontalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"></sf-control>\r\n <div *ngSwitchCase=\"'Texto'\" [ngStyle]=\"{'height': '100%', 'margin-block': 'auto'}\">\r\n <p>{{el.label}}</p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'VerticalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"></sf-control>\r\n <div *ngSwitchCase=\"'PDF'\" class=\"pdf\">\r\n <iframe [src]=\"values[i][j]\" frameborder=\"0\" allow=\"geolocation *; camera *;\"></iframe>\r\n </div>\r\n <div *ngSwitchCase=\"'PDF-SIGN'\">\r\n <sf-sign [allowDownload]=\"true\" [idkatios]=\"idKatios\" [tdoc]=\"data.pdf.tdoc\" [ndoc]=\"data.pdf.ndoc\"\r\n [idDocument]=\"data.pdf.id\" [typeDocument]=\"data.pdf.idDoc\"\r\n (stateDocument)=\"onStateDocument($event)\"></sf-sign>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'SIMULADOR'\">\r\n <sf-simulador [simulador]=\"data\" [otherToolTips]=\"data.otherTooltips\"\r\n (simuladorChange)=\"onSimuladorChange($event)\" (enProceso)=\"emitLoadingForm($event)\"></sf-simulador>\r\n </ng-container>\r\n <div *ngSwitchCase=\"'ADO'\" class=\"buttons\">\r\n <p-button *ngIf=\"!data?.ADO?.dataProceso?.idProceso\" [ngStyle]=\"el?.ngStyle\" (click)=\"goToADO()\" label=\"Validar identidad\"></p-button>\r\n </div>\r\n <div *ngSwitchCase=\"'ADO'\">\r\n <div *ngIf=\"data?.ADO?.dataProceso?.idProceso\">\r\n <div class=\"data-ado-container\">\r\n <ng-container *ngIf=\"proceso\">\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === true\" pTooltip=\"Validado\" tooltipPosition=\"top\" id=\"Validado\" class=\"pi pi-user\" style=\"color: green\"\r\n (touchstart)=\"onTouchDescription('Validado', false)\" (touchend)=\"onUnTouchDescription('Validado')\"></i>\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === false\" pTooltip=\"No validado\" tooltipPosition=\"top\" id=\"No-Validado\" class=\"pi pi-user\" style=\"color: red\"\r\n (touchstart)=\"onTouchDescription('No-Validado', false)\" (touchend)=\"onUnTouchDescription('No-Validado')\"></i>\r\n <i *ngIf=\"!proceso?.respuestaProceso\" pTooltip=\"Sin validar\" tooltipPosition=\"top\" class=\"pi pi-user\" id=\"Sin-Validar\" style=\"color: gray\"\r\n (touchstart)=\"onTouchDescription('Sin-Validar', false)\" (touchend)=\"onUnTouchDescription('Sin-Validar')\"></i>\r\n </ng-container>\r\n <div class=\"buttons\">\r\n <button pButton icon=\"pi pi-external-link\" (click)=\"goToADO()\" pTooltip=\"Abrir\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-copy\" (click)=\"copyToClipboard(proceso.id)\" pTooltip=\"Copiar\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-refresh\" (click)=\"refreshIntegracion(proceso.id)\" pTooltip=\"Refrescar\" [disabled]=\"!proceso\"></button>\r\n </div>\r\n </div>\r\n <p class=\"result-ado\" *ngIf=\"proceso && !proceso.respuestaProceso && proceso.estado == 'PROCESANDO'\">Procesando</p>\r\n <p class=\"result-ado\" *ngIf=\"proceso && proceso.respuestaProceso && proceso.estado == 'TERMINADO'\">{{proceso.respuestaProceso.Detalle ?? proceso.respuestaProceso.Mensaje}}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'Table'\">\r\n <p-table [value]=\"values[i][j]\" [columns]=\"controls[i][j].config.columns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <button pButton pRipple icon=\"pi pi-plus\" (click)=\"addObjectArray(el)\"\r\n class=\"p-button-success\" [disabled]=\"controls[i][j].disabled === true\"></button>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n {{col.label}}\r\n </th>\r\n <ng-container>\r\n <th></th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n <tr>\r\n <ng-container *ngFor=\"let col of columns\" [ngSwitch]=\"col.type\">\r\n <ng-container *ngSwitchCase=\"'control'\">\r\n <sf-control [control]=\"extracControlFromTableElements(i, j, col)\" [label]=\"\"\r\n [value]=\"extracValueFromTableElements(i, j, rowIndex, col)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (setValue)=\"setValue($event, extracValueFromTableElements(i, j, rowIndex, col).scope, i, j)\"\r\n [showTempValue]=\"true\"\r\n >\r\n </sf-control>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <td>{{rowData[col.col]}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'address'\">\r\n <td>{{rowData[col.col] | formatAddress: extracControlFromTableElements(i, j, col).separador }}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency:USD'\">\r\n <td>{{rowData[col.col] | currency: 'USD'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:yyyy-mm-dd'\">\r\n <td>{{rowData[col.col] | date: 'yyyy-mm-dd'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:dd/mm/yyyy'\">\r\n <td>{{rowData[col.col] | date: 'dd/MM/yyyy'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <td>\r\n <i *ngIf=\"rowData[col.col]\" class=\"pi pi-check\"></i>\r\n <i *ngIf=\"!rowData[col.col]\" class=\"pi pi-times\"></i>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container>\r\n <td>\r\n <button pButton pRipple type=\"button\"\r\n (click)=\"editRow(el, rowData, rowIndex)\" icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-info mr-1\"></button>\r\n <button pButton pRipple type=\"button\" (click)=\"deleteRow(el, rowIndex)\" [disabled]=\"controls[i][j].disabled === true\"\r\n icon=\"pi pi-trash\" class=\"p-button-rounded p-button-danger\"></button>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<p-toast *ngIf=\"isDialog\"></p-toast>\r\n", styles: [":not(.col-12) .label{display:flex;justify-content:center;align-items:center;padding-inline:.5rem;margin-bottom:15px;margin-top:20px;border-radius:13px;font-size:18px;font-size:inherit;background-color:var(--primary-color);text-align:center;color:var(--normal-text-color)}.pdf{display:flex;width:100%;height:80vh;& iframe{width:80%;margin-inline:10%}}.data-ado-container{display:flex;margin-inline:auto;align-items:center;width:-moz-fit-content;width:fit-content;&>*{margin-inline:4px}&>div{display:flex;align-items:center;&>*{margin-inline:4px}}}i.pi-user{font-size:2rem}.result-ado{min-height:1rem;text-align:center}sf-simulador{display:flow-root;width:80%;margin-inline:auto;margin-bottom:35px}sf-sign{display:block;margin-inline:auto;width:80%;& pdf-viewer{min-height:130vh!important;max-height:130vh!important}}.buttons{display:flex;justify-content:space-evenly}.buttons ::ng-deep .p-button.p-component{border-radius:35px}::ng-deep *{box-shadow:none}.frm-container ::ng-deep .p-inputtext:focus,.frm-container ::ng-deep .p-inputtext:active,.frm-container ::ng-deep .p-inputwrapper:focus,.frm-container ::ng-deep .p-inputwrapper:active{border-color:var(--button-color)}.frm-container ::ng-deep .p-button{background-color:var(--button-color);border-color:var(--button-color)}.frm-container ::ng-deep .p-button:hover{background-color:var(--button-color);filter:brightness(85%)}.frm-container ::ng-deep :not(:disabled):active,.frm-container ::ng-deep :not(.p-disabled) .p-inputtext:hover,.frm-container ::ng-deep :not(.p-disabled) .p-inputwrapper:hover,.frm-container ::ng-deep :not(.p-disabled) .p-inputwrapper-focus,.frm-container ::ng-deep .p-radiobutton-box .p-highlight,.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover{border-color:var(--button-color)}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box.p-highlight{background:var(--button-color);border-color:var(--button-color)!important}.frm-container ::ng-deep .p-button.p-button-success,.p-buttonset.p-button-success>.p-button,.p-splitbutton.p-button-success>.p-button{background:var(--button-color);border-color:var(--button-color)!important}@media screen and (max-width:765px){:not(.col-12) .label{height:-moz-fit-content;height:fit-content}.field{margin-bottom:.5rem}.pdf>iframe{width:100%;margin-inline:0}sf-sign{width:100%;& pdf-viewer{min-height:60vh!important;max-height:120vh!important}}sf-simulador{display:block;width:100%;margin-inline:auto}.data-ado-container{text-align:center;& .buttons{max-width:80vw;flex-direction:row}}.buttons{flex-direction:column;align-items:center}}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover{border-color:var(--secondary-color)!important}.frm-container ::ng-deep .p-button.p-button-success:enabled:focus,.p-buttonset.p-button-success>.p-button:enabled:focus,.p-splitbutton.p-button-success>.p-button:enabled:focus{box-shadow:inset 0 0 #fff}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover{color:var(--secondary-color)!important}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus{box-shadow:inset 0 0 0 1px var(--secondary-color)!important}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box .p-radiobutton-icon{background-color:#fff}.frm-container ::ng-deep .p-slider:not(.p-disabled):hover{background-color:#e5e7eb}.frm-container ::ng-deep .p-slider{background-color:#e5e7eb}.frm-container ::ng-deep .p-slider:not(.p-disabled):hover .p-slider-range{background-color:var(--primary-color)!important}.frm-container ::ng-deep .p-button:enabled:active{background:var(--secondary-color)!important;border-color:var(--secondary-color)!important}.frm-container ::ng-deep .p-slider:not(.p-disabled):hover .p-slider-handle{border-color:var(--primary-color)!important}.frm-container ::ng-deep .p-button:focus{box-shadow:inset 0 0 0 1px var(--secondary-color)!important}.frm-container ::ng-deep .p-button:enabled:hover{background:var(--secondary-color)!important;border-color:var(--secondary-color)!important}.frm-container ::ng-deep .p-button.p-button-info,.p-buttonset.p-button-info>.p-button,.p-splitbutton.p-button-info>.p-button{background:var(--secondary-color)!important;border:1px solid var(--secondary-color)!important}\n"], components: [{ type: i6.ControlComponent, selector: "sf-control", inputs: ["showTempValue", "control", "label", "value", "appendTo"], outputs: ["setValue", "sendObject", "addressClicked"] }, { type: i7.SignComponent, selector: "sf-sign", inputs: ["idkatios", "tdoc", "ndoc", "idDocument", "typeDocument", "allowDownload"], outputs: ["stateDocument", "loading"] }, { type: i8.SfSimuladorComponent, selector: "sf-simulador", inputs: ["simulador", "otherToolTips", "labels"], outputs: ["simuladorChange", "enProceso"] }, { type: i9.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i10.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollDelay", "virtualRowHeight", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "stateKey", "stateStorage", "editMode", "groupRowsBy", "minBufferPx", "maxBufferPx", "responsiveLayout", "breakpoint", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { type: i11.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i12.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i13.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i9.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i14.Ripple, selector: "[pRipple]" }], pipes: { "formatAddress": i15.FormatAddressPipe, "currency": i12.CurrencyPipe, "date": i12.DatePipe } });
266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FormComponent, decorators: [{
267
- type: Component,
268
- args: [{
269
- selector: 'app-form',
270
- templateUrl: './form.component.html',
271
- styleUrls: ['./form.component.css']
272
- }]
273
- }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.SfCrudService }, { type: i3.DomSanitizer }, { type: i4.StepService }, { type: i5.AdoService }, { type: i5.JWTService }]; }, propDecorators: { uiEsquema: [{
274
- type: Input
275
- }], esquema: [{
276
- type: Input
277
- }], data: [{
278
- type: Input
279
- }], isDialog: [{
280
- type: Input
281
- }], isAddressDialog: [{
282
- type: Input
283
- }], separador: [{
284
- type: Input
285
- }], tooltips: [{
286
- type: ViewChildren,
287
- args: [Tooltip]
288
- }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZi1jcnVkL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQyxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUcsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFHckMsT0FBTyxFQUFFLFVBQVUsRUFBMEIsTUFBTSx1QkFBdUIsQ0FBQztBQU0zRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxhQUFhO0lBdUJ4QixZQUNVLGNBQThCLEVBQzlCLFdBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ3RCLFVBQXNCO1FBTHRCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF6QnZCLGFBQVEsR0FBRSxLQUFLLENBQUM7UUFDaEIsb0JBQWUsR0FBRSxLQUFLLENBQUM7UUFPaEMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQWdCZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUM7UUFDckQs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QVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzt3T0FFVSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBY2lCLFFBQVE7c0JBQTlCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWVzc2FnZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCAqIGFzIGpzb25wYXRoIGZyb20gJ2pzb25wYXRoJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFNoZW1hIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9zaGVtYS5tb2RlbCc7XHJcbmltcG9ydCB7IENoYW5nZURhdGEsIExvYWRpbmcsIFNmQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZi1jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdSZWdpc3RybyB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvY3J1ZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaW11bGFkb3IgfSBmcm9tICdzZi1zaW11bGFkb3InO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQWRvU2VydmljZSwgSldUU2VydmljZSwgUHJvY2Vzb0FETyB9IGZyb20gJ3NmLWFkbyc7XHJcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXR7XHJcbiAgQElucHV0KCkgdWlFc3F1ZW1hOiBhbnk7XHJcbiAgQElucHV0KCkgZXNxdWVtYSE6IFNoZW1hO1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSBpc0RpYWxvZz0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNBZGRyZXNzRGlhbG9nPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXBhcmFkb3I/OiBzdHJpbmc7XHJcbiAgbmV3QWRkcmVzcz86IHN0cmluZztcclxuICBjdXJyZW50QWRkcmVzcz86IHN0cmluZztcclxuICByZWdpc3RybyE6IENvbmZpZ1JlZ2lzdHJvO1xyXG4gIHZhbHVlcyE6IGFueVtdW107XHJcbiAgY29udHJvbHMhOiBhbnlbXVtdO1xyXG4gIGNvbnRyb2xzTG9hZGVkID0gZmFsc2U7XHJcbiAgaWRLYXRpb3MhOiBzdHJpbmc7XHJcbiAgdmlzaWJsZSE6IGJvb2xlYW5bXVtdO1xyXG4gIGlzTW9iaWxlID0gZmFsc2U7XHJcbiAgdXJsQURPPzogc3RyaW5nO1xyXG4gIHByb2Nlc286IFByb2Nlc29BRE8gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBsb2FkaW5nITpMb2FkaW5nO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFRvb2x0aXApIHRvb2x0aXBzITogUXVlcnlMaXN0IDxUb29sdGlwPjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNydWRTZXJ2aWNlOiBTZkNydWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgc3RlcFNlcnZpY2U6IFN0ZXBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhZG9TZXJ2aWNlOiBBZG9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBqd3RTZXJ2aWNlOiBKV1RTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB7aW5Qcm9ncmVzczogdHJ1ZSwgdGFyZ2V0OiB1bmRlZmluZWR9O1xyXG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2OCkgdGhpcy5pc01vYmlsZSA9IHRydWVcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7XHJcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA3NjgpIHRoaXMuaXNNb2JpbGUgPSB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5idWlsZENvbnRyb2xzKClcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmlzQWRkcmVzc0RpYWxvZykgdGhpcy5jdXJyZW50QWRkcmVzcyA9IHRoaXMuZGF0YS5jdXJyZW50VmFsdWVcclxuICAgICAgdGhpcy5qd3RTZXJ2aWNlLmlkS2F0aW9zID0gdGhpcy5jcnVkU2VydmljZS5pZEthdGlvc1xyXG4gICAgICB0aGlzLmp3dFNlcnZpY2Uuc2Vydmlkb3JJbnRlZ3JhY2lvbmVzID0gdGhpcy5jcnVkU2VydmljZS5lbnZpcm9ubWVudC5TZXJ2aWRvckludGVncmFjaW9uZXNcclxuICAgICAgdGhpcy5hZG9TZXJ2aWNlLnNlcnZpZG9ySW50ZWdyYWNpb25lcyA9IHRoaXMuY3J1ZFNlcnZpY2UuZW52aXJvbm1lbnQuU2Vydmlkb3JJbnRlZ3JhY2lvbmVzXHJcbiAgICAgIHRoaXMuaWRLYXRpb3MgPSB0aGlzLmNydWRTZXJ2aWNlLmlkS2F0aW9zXHJcbiAgICAgIHRoaXMuc3RlcFNlcnZpY2UucmVxdWVzdEFwcHJvdmVkJC5zdWJzY3JpYmUoKGFwcHJvdmVkKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRGlhbG9nICYmIGFwcHJvdmVkKXtcclxuICAgICAgICAgIHRoaXMudWlFc3F1ZW1hID0gdGhpcy5jcnVkU2VydmljZS5nZXRVSUVzcXVlbWEodGhpcy5zdGVwU2VydmljZS5jdXJyZW50SW5kZXgpXHJcbiAgICAgICAgICB0aGlzLmVzcXVlbWEgPSB0aGlzLmNydWRTZXJ2aWNlLmdldEVzcXVlbWEodGhpcy5zdGVwU2VydmljZS5jdXJyZW50SW5kZXgpXHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmNydWRTZXJ2aWNlLmdldERhdGEodGhpcy5zdGVwU2VydmljZS5jdXJyZW50SW5kZXgpO1xyXG4gICAgICAgICAgdGhpcy5yZWdpc3RybyA9IHRoaXMuY3J1ZFNlcnZpY2UuZ2V0UmVnaXN0cm8odGhpcy5zdGVwU2VydmljZS5jdXJyZW50SW5kZXgpXHJcbiAgICAgICAgICB0aGlzLmJ1aWxkQ29udHJvbHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW1pdExvYWRpbmdGb3JtKCRldmVudDogYm9vbGVhbil7XHJcbiAgICB0aGlzLmxvYWRpbmcuaW5Qcm9ncmVzcyA9ICRldmVudFxyXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLmNydWRTZXJ2aWNlLmZvcm1Mb2FkaW5nID0gdGhpcy5sb2FkaW5nKS8vc2kgbm8gc2UgdXNhIGFzaSBlbCBlbnByb2Nlc28gdG90ZWEgY29uIGVsIHNpbXVsYWRvclxyXG4gIH1cclxuXHJcblxyXG5cclxuICBidWlsZENvbnRyb2xzKCl7XHJcbiAgICB0aGlzLnZpc2libGUgPSBbXVxyXG4gICAgdGhpcy5jb250cm9sc0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb250cm9scyA9IFtdXHJcbiAgICB0aGlzLnZhbHVlcyA9IFtdXHJcblxyXG4gICAgLy9hZGRyZXNzXHJcbiAgICBpZiAodGhpcy5pc0FkZHJlc3NEaWFsb2cpIHRoaXMubmV3QWRkcmVzcyA9IHRoaXMuY3J1ZFNlcnZpY2UuYXJtYXJOdWV2YURpcmVjY2lvbihcInN0cmluZ1wiLCB0aGlzLmRhdGEsIHRoaXMuY3J1ZFNlcnZpY2UuZ2V0VmFsdWUoXCIkLi5zZXBhcmFkb3JcIiwgdGhpcy5kYXRhKSlcclxuXHJcbiAgICB0aGlzLnVpRXNxdWVtYS5lbGVtZW50cy5mb3JFYWNoKChsYXlvdXQ6IGFueSwgaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCBpc1Zpc2libGUgPSBsYXlvdXQuY29uZGl0aW9ucyA/IHRoaXMuY3J1ZFNlcnZpY2UuaXNDb25kaXRpb25zQ29tcGxldGVkKGxheW91dC5jb25kaXRpb25zLCB0aGlzLnJlZ2lzdHJvLmNvbmRpdGlvbnMgfHwgW10sIHRoaXMuZGF0YSk6IHRydWVcclxuICAgICAgdGhpcy52aXNpYmxlLnB1c2gobGF5b3V0LmVsZW1lbnRzPyBsYXlvdXQuZWxlbWVudHMubWFwKCgpID0+IGlzVmlzaWJsZSk6IFtpc1Zpc2libGVdKVxyXG4gICAgICB0aGlzLmNvbnRyb2xzLnB1c2goW10pXHJcbiAgICAgIHRoaXMudmFsdWVzLnB1c2goW10pXHJcblxyXG4gICAgICBsYXlvdXQuZWxlbWVudHM/LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgajogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuY29uZGl0aW9ucykgIHRoaXMudmlzaWJsZVtpXVtqXSA9IHRoaXMuY3J1ZFNlcnZpY2UuaXNDb25kaXRpb25zQ29tcGxldGVkKGVsZW1lbnQuY29uZGl0aW9ucywgdGhpcy5yZWdpc3Ryby5jb25kaXRpb25zIHx8IFtdLCB0aGlzLmRhdGEpXHJcblxyXG4gICAgICAgIGlmIChlbGVtZW50Lm5nU3R5bGUgJiYgdHlwZW9mKGVsZW1lbnQubmdTdHlsZSkgPT0gXCJzdHJpbmdcIikgIGVsZW1lbnQubmdTdHlsZSA9IEpTT04ucGFyc2UoZWxlbWVudC5uZ1N0eWxlKVxyXG4gICAgICAgIGlmIChlbGVtZW50LnVybCl7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzW2ldLnB1c2godW5kZWZpbmVkKVxyXG4gICAgICAgICAgbGV0IHVybCA9IHRoaXMuY3J1ZFNlcnZpY2UuYXBwbHlTdHJpbmdLZXlzKGVsZW1lbnQudXJsKVxyXG4gICAgICAgICAgdGhpcy52YWx1ZXNbaV0ucHVzaCh0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIWVsZW1lbnQuc2NvcGUpe1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sc1tpXS5wdXNoKHVuZGVmaW5lZClcclxuICAgICAgICAgIHRoaXMudmFsdWVzW2ldLnB1c2godW5kZWZpbmVkKVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xzW2ldLnB1c2godGhpcy5jcnVkU2VydmljZS5nZXRDb250cm9sKGVsZW1lbnQuc2NvcGUsIHRoaXMuZXNxdWVtYSkpXHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbHNbaV1bal0uc2NvcGUgPSBlbGVtZW50LnNjb3BlXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVzW2ldLnB1c2godGhpcy5jcnVkU2VydmljZS5nZXRWYWx1ZShlbGVtZW50LnNjb3BlLCB0aGlzLmRhdGEpKVxyXG4gICAgICAgICAgfWNhdGNoKGUpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50KVxyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29udHJvbHNbaV0pXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudmFsdWVzW2ldKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb250cm9sc0xvYWRlZCA9IHRydWU7XHJcbiAgICBsZXQgaWRQcm9jZXNvID0gdGhpcy5kYXRhLkFETz8uZGF0YVByb2Nlc28/LmlkUHJvY2Vzb1xyXG4gICAgaWYgKGlkUHJvY2VzbyAmJiB0aGlzLnByb2Nlc28/LmlkICE9IGlkUHJvY2VzbykgdGhpcy5yZWZyZXNoSW50ZWdyYWNpb24oaWRQcm9jZXNvKVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaEludGVncmFjaW9uKGlkUHJvY2VzbzogbnVtYmVyKXtcclxuICAgIHRoaXMuZW1pdExvYWRpbmdGb3JtKHRydWUpXHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgIHRoaXMuYWRvU2VydmljZS5nZXRQcm9jZXNvKGlkUHJvY2VzbykudGhlbigocHJvY2VzbykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNvID0gcHJvY2Vzb1xyXG4gICAgICAgICAgdGhpcy5kYXRhLkFETy5wcm9jZXNvID0gdGhpcy5wcm9jZXNvXHJcbiAgICAgICAgfSlcclxuICAgIF0pXHJcbiAgICAuZmluYWxseSgoKSA9PiB0aGlzLmVtaXRMb2FkaW5nRm9ybShmYWxzZSkpXHJcbiAgfVxyXG5cclxuICBleHRyYWNDb250cm9sRnJvbVRhYmxlRWxlbWVudHMoaTphbnksIGo6YW55LCBjb2w6YW55KXtcclxuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jb250cm9sc1tpXVtqXS5wcm9wZXJ0aWVzW2NvbC5jb2xdO1xyXG4gICAgcmV0dXJuIHByb3BlcnR5XHJcbiAgfVxyXG5cclxuICBleHRyYWNWYWx1ZUZyb21UYWJsZUVsZW1lbnRzKGk6YW55LCBqOmFueSwgazphbnksIGNvbDphbnkpe1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlc1tpXVtqXVtrXVtjb2wuY29sXTtcclxuICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWUodmFsdWU6IGFueSwgc2NvcGU6IGFueSwgaTogbnVtYmVyLCBqOiBudW1iZXIpIHtcclxuICAgIHNjb3BlID0gc2NvcGUucmVwbGFjZUFsbCgnLi5wcm9wZXJ0aWVzJywgJycpXHJcbiAgICBpZiAoc2NvcGUpIHtcclxuICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2xzW2ldW2pdXHJcbiAgICAgIHRoaXMudmFsdWVzW2ldW2pdID0gdmFsdWU7XHJcbiAgICAgIGpzb25wYXRoLnZhbHVlKHRoaXMuZGF0YSwgc2NvcGUsIHZhbHVlKTtcclxuICAgICAgdGhpcy5jcnVkU2VydmljZS5jaGFuZ2VEYXRhID0gbmV3IENoYW5nZURhdGEodmFsdWUsIHNjb3BlLCB0aGlzLmNydWRTZXJ2aWNlLmluZGV4KVxyXG4gICAgICB0aGlzLnVpRXNxdWVtYS5lbGVtZW50cy5mb3JFYWNoKChsYXlvdXQ6IGFueSwgaUxheW91dDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgaWYgKGxheW91dC5jb25kaXRpb25zKXtcclxuICAgICAgICAgIGxldCBpc1Zpc2libGUgPSB0aGlzLmNydWRTZXJ2aWNlLmlzQ29uZGl0aW9uc0NvbXBsZXRlZChsYXlvdXQuY29uZGl0aW9ucywgdGhpcy5jcnVkU2VydmljZS5nZXRSZWdpc3Rybyh0aGlzLmNydWRTZXJ2aWNlLmluZGV4KS5jb25kaXRpb25zIHx8IFtdLCB0aGlzLmRhdGEpXHJcbiAgICAgICAgICBpZihsYXlvdXQuZWxlbWVudHMpIHRoaXMudmlzaWJsZVtpTGF5b3V0XSA9IGxheW91dC5lbGVtZW50cy5tYXAoKCkgPT4gaXNWaXNpYmxlKVxyXG4gICAgICAgICAgZWxzZSB0aGlzLnZpc2libGVbaUxheW91dF1bMF0gPSBpc1Zpc2libGVcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxheW91dC5lbGVtZW50cz8uZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleEVsOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmNvbmRpdGlvbnMpe1xyXG4gICAgICAgICAgICB0aGlzLnZpc2libGVbaUxheW91dF1baW5kZXhFbF0gPSB0aGlzLmNydWRTZXJ2aWNlLmlzQ29uZGl0aW9uc0NvbXBsZXRlZChlbGVtZW50LmNvbmRpdGlvbnMsIHRoaXMucmVnaXN0cm8uY29uZGl0aW9ucyB8fCBbXSwgdGhpcy5kYXRhKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnRyb2wuYXBwbHlLZXlzPy5mb3JFYWNoKChpOiBudW1iZXIpID0+IHtcclxuICAgICAgICBsZXQga2V5ID0gdGhpcy5yZWdpc3Ryby5rZXlzID8gdGhpcy5yZWdpc3Ryby5rZXlzW2ldIDogdW5kZWZpbmVkXHJcbiAgICAgICAgaWYgKGtleSkgdGhpcy5jcnVkU2VydmljZS5hcHBseUtleShrZXksIHRoaXMucmVnaXN0cm8sIGtleS5pbmRleERhdGEgPyB0aGlzLmNydWRTZXJ2aWNlLmdldERhdGEoa2V5LmluZGV4RGF0YSkgOiB0aGlzLmRhdGEpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmJ1aWxkQ29udHJvbHMoKVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcnVkU2VydmljZS5hcHBseVZhbHVlc09uRXZlbnQoJ29uQ2hhbmdlJywgdGhpcy5lc3F1ZW1hLCB1bmRlZmluZWQsIHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VuZE5vdGlmaWNhdGlvbihtZXNzYWdlOiBNZXNzYWdlKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZChtZXNzYWdlKVxyXG4gIH1cclxuXHJcbiAgYXBwbHlWYWx1ZXNGcm9tT2JqZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC5vcHRpb25WYWx1ZSl7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnQub3B0aW9uVmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBvcHRpb25WYWwgPSBldmVudC5vcHRpb25WYWx1ZVtpXTtcclxuICAgICAgICBjb25zdCBuZXdWYWwgPSBldmVudC5kYXRhID8gdGhpcy5hcGx5Rm9ybWF0VmFsdWUob3B0aW9uVmFsLnNjb3BlLCBldmVudC5kYXRhW29wdGlvblZhbC5rZXldKTogbnVsbDtcclxuICAgICAgICBqc29ucGF0aC52YWx1ZSh0aGlzLmRhdGEsIG9wdGlvblZhbC5zY29wZS5yZXBsYWNlKCcucHJvcGVydGllcycsJycpLCB0aGlzLmFwbHlGb3JtYXRWYWx1ZShvcHRpb25WYWwuc2NvcGUsIGV2ZW50LmRhdGFbb3B0aW9uVmFsLmtleV0pKVxyXG4gICAgICAgIHRoaXMuc2V0VmFsdWVCeVNjb3BlKG9wdGlvblZhbC5zY29wZSwgbmV3VmFsKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZUJ5U2NvcGUoc2NvcGU6IHN0cmluZywgbmV3VmFsOiBhbnkpe1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMuY29udHJvbHNbaV07XHJcbiAgICAgIHJvdy5mb3JFYWNoKChlbCwgaikgPT4ge1xyXG4gICAgICAgIGlmIChlbC5zY29wZSAmJiBlbC5zY29wZS5yZXBsYWNlKCcucHJvcGVydGllcycsJycpPT0gc2NvcGUucmVwbGFjZSgnLnByb3BlcnRpZXMnLCcnKSl7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlc1tpXVtqXSA9IG5ld1ZhbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFwbHlGb3JtYXRWYWx1ZShzY29wZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBjb250cm9sID0ganNvbnBhdGgucXVlcnkodGhpcy5lc3F1ZW1hLCBzY29wZSlbMF1cclxuICAgIGxldCByZXNwO1xyXG4gICAgc3dpdGNoIChjb250cm9sLnR5cGUpIHtcclxuICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgcmVzcCA9IG5ldyBEYXRlKGAke3ZhbHVlfWApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ251bWVyaWMnOlxyXG4gICAgICAgIHJlc3AgPSArdmFsdWVcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXNwID0gdmFsdWVcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiByZXNwXHJcbiAgfVxyXG5cclxuICBlZGl0Um93KGVsZW1lbnQ6IGFueSwgZGF0YTogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0ZXBTZXJ2aWNlLmFkZEN1c3RvbUNoaWxkcmVuRXZlbnQoXCJvbkNsaWNrZWRFZGl0QnV0dG9uXCIsIHtlbGVtZW50LCBkYXRhLCBpbmRleH0pXHJcbiAgfVxyXG5cclxuICBkZWxldGVSb3coZWxlbWVudDogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0ZXBTZXJ2aWNlLmFkZEN1c3RvbUNoaWxkcmVuRXZlbnQoXCJvbkNsaWNrZWREZWxldGVCdXR0b25cIiwge2VsZW1lbnQsIGluZGV4fSlcclxuICB9XHJcblxyXG4gIGFkZE9iamVjdEFycmF5KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zdGVwU2VydmljZS5hZGRDdXN0b21DaGlsZHJlbkV2ZW50KFwib25DbGlja2VkQWRkQnV0dG9uXCIsIHtlbGVtZW50fSlcclxuICB9XHJcblxyXG4gIG9wZW5Qb3BVcERpcmVjY2lvbihzY29wZTogc3RyaW5nKXtcclxuICAgIHRoaXMuc3RlcFNlcnZpY2UuYWRkQ3VzdG9tQ2hpbGRyZW5FdmVudChcIm9uQ2xpY2tlZEFkZHJlc3NcIiwge3Njb3BlfSlcclxuICB9XHJcblxyXG4gIG9uU3RhdGVEb2N1bWVudChzdGF0ZTogc3RyaW5nKXtcclxuICAgIHRoaXMuZGF0YS5wZGYuc2lnbmVkID0gc3RhdGUudG9VcHBlckNhc2UoKSA9PSBcIkZJUk1BRE9cIlxyXG4gIH1cclxuXHJcbiAgb25TaW11bGFkb3JDaGFuZ2UoJGV2ZW50OiBTaW11bGFkb3IpIHtcclxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsICRldmVudCkpXHJcbiAgfVxyXG5cclxuICBnb1RvQURPKCl7XHJcbiAgICBsZXQgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICBsZXQgY2FsbGJhY2sgPSB1cmwuc3BsaXQoJz8nKVswXSArIGA/aWQ9JHt0aGlzLmRhdGEuaWRGb3JtfWA7XHJcbiAgICBsZXQgaWRQcm9jZXNvID0gdGhpcy5kYXRhLkFETy5kYXRhUHJvY2Vzbz8uaWRQcm9jZXNvXHJcbiAgICBsZXQgZGF0YVByb2Nlc28gPSB0aGlzLmRhdGEuQURPLmRhdGFQcm9jZXNvXHJcbiAgICBkYXRhUHJvY2Vzby5jdGl2byA9IHRoaXMuZGF0YS5pZEZvcm1cclxuICAgIC8vdGhpcy5kYXRhLkFETy5pZFRyYW5zYWN0aW9uID0gbnVsbFxyXG4gICAgLy90aGlzLmRhdGEuQURPLmlkUHJvY2VzbyA9IG51bGxcclxuICAgIGlmIChpZFByb2Nlc28pe1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke3RoaXMuY3J1ZFNlcnZpY2UuZW52aXJvbm1lbnQuV2ViVXRpbGl0aWVzfUdXVi9BRE8vJHt0aGlzLmNydWRTZXJ2aWNlLmlkS2F0aW9zfT9pZD0ke2lkUHJvY2Vzb31gXHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGFQcm9jZXNvKXtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmNydWRTZXJ2aWNlLmVudmlyb25tZW50LldlYlV0aWxpdGllc31HV1YvQURPLyR7dGhpcy5jcnVkU2VydmljZS5pZEthdGlvc30/ZGF0YVByb2Nlc289JHtidG9hKEpTT04uc3RyaW5naWZ5KGRhdGFQcm9jZXNvKSl9JmNhbGxiYWNrPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNhbGxiYWNrKX1gXHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25Ub3VjaERlc2NyaXB0aW9uKGlkOiBzdHJpbmcsIGFsaWduUmlnaHQ9dHJ1ZSkge1xyXG4gICAgY29uc3QgZm91bmRUb29sdGlwID0gdGhpcy50b29sdGlwcy5maW5kKHRvb2x0aXAgPT4gdG9vbHRpcC5lbC5uYXRpdmVFbGVtZW50LmlkID09PSBpZCkhO1xyXG4gICAgdHJ5e1xyXG4gICAgICBmb3VuZFRvb2x0aXAuYWN0aXZhdGUoKTtcclxuICAgICAgYWxpZ25SaWdodCA/IGZvdW5kVG9vbHRpcC5hbGlnblJpZ2h0KCk6IGZvdW5kVG9vbHRpcC5hbGlnblRvcCgpO1xyXG4gICAgfWNhdGNoKGV4KXt9XHJcbiAgfVxyXG5cclxuICBvblVuVG91Y2hEZXNjcmlwdGlvbihkZXNjcmlwY2lvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmb3VuZFRvb2x0aXAgPSB0aGlzLnRvb2x0aXBzLmZpbmQodG9vbHRpcCA9PiB0b29sdGlwLmVsLm5hdGl2ZUVsZW1lbnQuaWQgPT09IGRlc2NyaXBjaW9uKSE7XHJcbiAgICB0cnl7XHJcbiAgICAgIGZvdW5kVG9vbHRpcC5kZWFjdGl2YXRlKCk7XHJcbiAgICB9Y2F0Y2goZXgpe31cclxuICB9XHJcblxyXG4gIGNvcHlUb0NsaXBib2FyZChpZFByb2Nlc286IHN0cmluZyl7XHJcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5jcnVkU2VydmljZS5lbnZpcm9ubWVudC5XZWJVdGlsaXRpZXN9R1dWL0FETy8ke3RoaXMuY3J1ZFNlcnZpY2UuaWRLYXRpb3N9P2lkPSR7aWRQcm9jZXNvfWBcclxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHVybClcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImNvbnRyb2xzTG9hZGVkXCIgY2xhc3M9XCJmcm0tY29udGFpbmVyXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWRkcmVzc0RpYWxvZyAmJiBjdXJyZW50QWRkcmVzc1wiPlxyXG4gICAgRGlyZWNjacOzbiBhY3R1YWw6IHt7Y3VycmVudEFkZHJlc3MgfCBmb3JtYXRBZGRyZXNzOiBzZXBhcmFkb3J9fVxyXG4gICAgPGJyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxicj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBZGRyZXNzRGlhbG9nXCI+XHJcbiAgICBEaXJlY2Npw7NuIG51ZXZhOiB7e25ld0FkZHJlc3MgfCBmb3JtYXRBZGRyZXNzOiBzZXBhcmFkb3J9fVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiB1aUVzcXVlbWEuZWxlbWVudHM7IGxldCBpID0gaW5kZXhcIiBbY2xhc3NdPVwiZWxlbWVudD8uY2xhc3NcIiAjYT5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJlbGVtZW50LnR5cGVcIiAqbmdJZj1cInZpc2libGVbaV1bMF1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidMYWJlbCdcIiBbc3R5bGVdPVwiZWxlbWVudD8uc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgIHt7ZWxlbWVudD8ubGFiZWx9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0hvcml6b250YWxMYXlvdXQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbCBvZiBlbGVtZW50LmVsZW1lbnRzOyBsZXQgaiA9aW5kZXhcIiBbY2xhc3NdPVwiZWw/LmNsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZWwudHlwZVwiICpuZ0lmPVwidmlzaWJsZVtpXVtqXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2YtY29udHJvbCAqbmdTd2l0Y2hDYXNlPVwiJ0NvbnRyb2wnXCIgW2NvbnRyb2xdPVwiY29udHJvbHNbaV1bal1cIiBbbGFiZWxdPVwiZWwubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlc1tpXVtqXVwiIChzZXRWYWx1ZSk9XCJzZXRWYWx1ZSgkZXZlbnQsIGVsLnNjb3BlLCBpLCBqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VuZE5vdGlmaWNhdGlvbik9XCJzZW5kTm90aWZpY2F0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbmRPYmplY3QpPVwiYXBwbHlWYWx1ZXNGcm9tT2JqZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3NDbGlja2VkKT1cIm9wZW5Qb3BVcERpcmVjY2lvbihlbC5zY29wZSlcIj48L3NmLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1RleHRvJ1wiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0JzogJzEwMCUnLCAnbWFyZ2luLWJsb2NrJzogJ2F1dG8nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3tlbC5sYWJlbH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVmVydGljYWxMYXlvdXQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbCBvZiBlbGVtZW50LmVsZW1lbnRzOyBsZXQgaiA9aW5kZXhcIiBbY2xhc3NdPVwiZWw/LmNsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZWwudHlwZVwiICpuZ0lmPVwidmlzaWJsZVtpXVtqXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2YtY29udHJvbCAqbmdTd2l0Y2hDYXNlPVwiJ0NvbnRyb2wnXCIgW2NvbnRyb2xdPVwiY29udHJvbHNbaV1bal1cIiBbbGFiZWxdPVwiZWwubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlc1tpXVtqXVwiIChzZXRWYWx1ZSk9XCJzZXRWYWx1ZSgkZXZlbnQsIGVsLnNjb3BlLCBpLCBqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VuZE5vdGlmaWNhdGlvbik9XCJzZW5kTm90aWZpY2F0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbmRPYmplY3QpPVwiYXBwbHlWYWx1ZXNGcm9tT2JqZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3NDbGlja2VkKT1cIm9wZW5Qb3BVcERpcmVjY2lvbihlbC5zY29wZSlcIj48L3NmLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidQREYnXCIgY2xhc3M9XCJwZGZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgW3NyY109XCJ2YWx1ZXNbaV1bal1cIiBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvdz1cImdlb2xvY2F0aW9uICo7IGNhbWVyYSAqO1wiPjwvaWZyYW1lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1BERi1TSUdOJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNmLXNpZ24gW2FsbG93RG93bmxvYWRdPVwidHJ1ZVwiIFtpZGthdGlvc109XCJpZEthdGlvc1wiIFt0ZG9jXT1cImRhdGEucGRmLnRkb2NcIiBbbmRvY109XCJkYXRhLnBkZi5uZG9jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWREb2N1bWVudF09XCJkYXRhLnBkZi5pZFwiIFt0eXBlRG9jdW1lbnRdPVwiZGF0YS5wZGYuaWREb2NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZURvY3VtZW50KT1cIm9uU3RhdGVEb2N1bWVudCgkZXZlbnQpXCI+PC9zZi1zaWduPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1NJTVVMQURPUidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZi1zaW11bGFkb3IgIFtzaW11bGFkb3JdPVwiZGF0YVwiIFtvdGhlclRvb2xUaXBzXT1cImRhdGEub3RoZXJUb29sdGlwc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpbXVsYWRvckNoYW5nZSk9XCJvblNpbXVsYWRvckNoYW5nZSgkZXZlbnQpXCIgKGVuUHJvY2Vzbyk9XCJlbWl0TG9hZGluZ0Zvcm0oJGV2ZW50KVwiPjwvc2Ytc2ltdWxhZG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0FETydcIiBjbGFzcz1cImJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cIiFkYXRhPy5BRE8/LmRhdGFQcm9jZXNvPy5pZFByb2Nlc29cIiBbbmdTdHlsZV09XCJlbD8ubmdTdHlsZVwiIChjbGljayk9XCJnb1RvQURPKClcIiBsYWJlbD1cIlZhbGlkYXIgaWRlbnRpZGFkXCI+PC9wLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidBRE8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LkFETz8uZGF0YVByb2Nlc28/LmlkUHJvY2Vzb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEtYWRvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvY2Vzb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwicHJvY2Vzbz8ucmVzcHVlc3RhUHJvY2Vzbz8uRXNFeGl0b3NvID09PSB0cnVlXCIgcFRvb2x0aXA9XCJWYWxpZGFkb1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIGlkPVwiVmFsaWRhZG9cIiBjbGFzcz1cInBpIHBpLXVzZXJcIiBzdHlsZT1cImNvbG9yOiBncmVlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaERlc2NyaXB0aW9uKCdWYWxpZGFkbycsIGZhbHNlKVwiICh0b3VjaGVuZCk9XCJvblVuVG91Y2hEZXNjcmlwdGlvbignVmFsaWRhZG8nKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInByb2Nlc28/LnJlc3B1ZXN0YVByb2Nlc28/LkVzRXhpdG9zbyA9PT0gZmFsc2VcIiBwVG9vbHRpcD1cIk5vIHZhbGlkYWRvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCIgaWQ9XCJOby1WYWxpZGFkb1wiIGNsYXNzPVwicGkgcGktdXNlclwiIHN0eWxlPVwiY29sb3I6IHJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaERlc2NyaXB0aW9uKCdOby1WYWxpZGFkbycsIGZhbHNlKVwiICh0b3VjaGVuZCk9XCJvblVuVG91Y2hEZXNjcmlwdGlvbignTm8tVmFsaWRhZG8nKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFwcm9jZXNvPy5yZXNwdWVzdGFQcm9jZXNvXCIgcFRvb2x0aXA9XCJTaW4gdmFsaWRhclwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIGNsYXNzPVwicGkgcGktdXNlclwiIGlkPVwiU2luLVZhbGlkYXJcIiBzdHlsZT1cImNvbG9yOiBncmF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoRGVzY3JpcHRpb24oJ1Npbi1WYWxpZGFyJywgZmFsc2UpXCIgKHRvdWNoZW5kKT1cIm9uVW5Ub3VjaERlc2NyaXB0aW9uKCdTaW4tVmFsaWRhcicpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gaWNvbj1cInBpIHBpLWV4dGVybmFsLWxpbmtcIiAoY2xpY2spPVwiZ29Ub0FETygpXCIgcFRvb2x0aXA9XCJBYnJpclwiIFtkaXNhYmxlZF09XCIhcHJvY2Vzb1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBpY29uPVwicGkgcGktY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQocHJvY2Vzby5pZClcIiBwVG9vbHRpcD1cIkNvcGlhclwiIFtkaXNhYmxlZF09XCIhcHJvY2Vzb1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBpY29uPVwicGkgcGktcmVmcmVzaFwiIChjbGljayk9XCJyZWZyZXNoSW50ZWdyYWNpb24ocHJvY2Vzby5pZClcIiBwVG9vbHRpcD1cIlJlZnJlc2NhclwiIFtkaXNhYmxlZF09XCIhcHJvY2Vzb1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyZXN1bHQtYWRvXCIgKm5nSWY9XCJwcm9jZXNvICYmICFwcm9jZXNvLnJlc3B1ZXN0YVByb2Nlc28gJiYgcHJvY2Vzby5lc3RhZG8gPT0gJ1BST0NFU0FORE8nXCI+UHJvY2VzYW5kbzwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicmVzdWx0LWFkb1wiICpuZ0lmPVwicHJvY2VzbyAmJiBwcm9jZXNvLnJlc3B1ZXN0YVByb2Nlc28gJiYgcHJvY2Vzby5lc3RhZG8gPT0gJ1RFUk1JTkFETydcIj57e3Byb2Nlc28ucmVzcHVlc3RhUHJvY2Vzby5EZXRhbGxlID8/IHByb2Nlc28ucmVzcHVlc3RhUHJvY2Vzby5NZW5zYWplfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVGFibGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwidmFsdWVzW2ldW2pdXCIgW2NvbHVtbnNdPVwiY29udHJvbHNbaV1bal0uY29uZmlnLmNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1wbHVzXCIgKGNsaWNrKT1cImFkZE9iamVjdEFycmF5KGVsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzXCIgW2Rpc2FibGVkXT1cImNvbnRyb2xzW2ldW2pdLmRpc2FibGVkID09PSB0cnVlXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb2wubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd0RhdGEgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbbmdTd2l0Y2hdPVwiY29sLnR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29udHJvbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNmLWNvbnRyb2wgW2NvbnRyb2xdPVwiZXh0cmFjQ29udHJvbEZyb21UYWJsZUVsZW1lbnRzKGksIGosIGNvbClcIiBbbGFiZWxdPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJleHRyYWNWYWx1ZUZyb21UYWJsZUVsZW1lbnRzKGksIGosIHJvd0luZGV4LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZW5kTm90aWZpY2F0aW9uKT1cInNlbmROb3RpZmljYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VuZE9iamVjdCk9XCJhcHBseVZhbHVlc0Zyb21PYmplY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0VmFsdWUpPVwic2V0VmFsdWUoJGV2ZW50LCBleHRyYWNWYWx1ZUZyb21UYWJsZUVsZW1lbnRzKGksIGosIHJvd0luZGV4LCBjb2wpLnNjb3BlLCBpLCBqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RlbXBWYWx1ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZi1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tyb3dEYXRhW2NvbC5jb2xdfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhZGRyZXNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7cm93RGF0YVtjb2wuY29sXSB8IGZvcm1hdEFkZHJlc3M6IGV4dHJhY0NvbnRyb2xGcm9tVGFibGVFbGVtZW50cyhpLCBqLCBjb2wpLnNlcGFyYWRvciB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5OlVTRCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7cm93RGF0YVtjb2wuY29sXSB8IGN1cnJlbmN5OiAnVVNEJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZTp5eXl5LW1tLWRkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tyb3dEYXRhW2NvbC5jb2xdIHwgZGF0ZTogJ3l5eXktbW0tZGQnfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlOmRkL21tL3l5eXknXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3Jvd0RhdGFbY29sLmNvbF0gfCBkYXRlOiAnZGQvTU0veXl5eSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwicm93RGF0YVtjb2wuY29sXVwiIGNsYXNzPVwicGkgcGktY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFyb3dEYXRhW2NvbC5jb2xdXCIgY2xhc3M9XCJwaSBwaS10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRSb3coZWwsIHJvd0RhdGEsIHJvd0luZGV4KVwiIGljb249XCJwaSBwaS1wZW5jaWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLWluZm8gbXItMVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRlbGV0ZVJvdyhlbCwgcm93SW5kZXgpXCIgW2Rpc2FibGVkXT1cImNvbnRyb2xzW2ldW2pdLmRpc2FibGVkID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1kYW5nZXJcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48cC10b2FzdCAqbmdJZj1cImlzRGlhbG9nXCI+PC9wLXRvYXN0PlxyXG4iXX0=