@senior-agronegocio/angular-components 0.0.9871 → 0.0.9873

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 (103) hide show
  1. package/bundles/senior-agronegocio-angular-components.umd.js +702 -893
  2. package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
  5. package/components/event-control-board/service/e001pes/e001pes.service.d.ts +2 -2
  6. package/components/event-control-board/service/e001tns/e001tns.service.d.ts +2 -2
  7. package/components/event-control-board/service/e012fam/e012fam.service.d.ts +2 -2
  8. package/components/event-control-board/service/e070emp/e070emp.service.d.ts +2 -2
  9. package/components/event-control-board/service/e070fil/e070fil.service.d.ts +2 -2
  10. package/components/event-control-board/service/e075der/e075der.service.d.ts +2 -2
  11. package/components/event-control-board/service/e205dep/e205dep.service.d.ts +2 -2
  12. package/components/event-control-board/service/event-control/event-control.service.d.ts +2 -2
  13. package/components/event-control-board/service/event-control-item/event-control-item.service.d.ts +2 -2
  14. package/components/event-control-board/service/external-invoice/external-invoice.service.d.ts +2 -2
  15. package/components/event-control-board/service/fixation-entity/fixation.service.d.ts +2 -2
  16. package/components/event-control-board/service/invoice/invoice.service.d.ts +2 -2
  17. package/components/event-control-board/service/origination/origination.service.d.ts +2 -2
  18. package/components/event-control-board/service/rural-estate/rural-estate.service.d.ts +2 -2
  19. package/components/event-control-board/service/ticket/ticket.service.d.ts +2 -2
  20. package/components/event-control-board/service/transfer/transfer.service.d.ts +2 -2
  21. package/components/financial-title-table/services/financial/agro-financial.service.d.ts +1 -1
  22. package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.d.ts +8 -7
  23. package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.d.ts +8 -6
  24. package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.d.ts +8 -17
  25. package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +9 -7
  26. package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.d.ts +1 -1
  27. package/esm2015/common/agro-logics.class.js +6 -5
  28. package/esm2015/common/agro-unit-converter.class.js +1 -2
  29. package/esm2015/components/event-control-board/common/event-control-constants.js +2 -2
  30. package/esm2015/components/event-control-board/event-control-board.component.js +2 -2
  31. package/esm2015/components/event-control-board/service/e001pes/e001pes.service.js +3 -3
  32. package/esm2015/components/event-control-board/service/e001tns/e001tns.service.js +3 -3
  33. package/esm2015/components/event-control-board/service/e012fam/e012fam.service.js +3 -3
  34. package/esm2015/components/event-control-board/service/e070emp/e070emp.service.js +3 -3
  35. package/esm2015/components/event-control-board/service/e070fil/e070fil.service.js +3 -3
  36. package/esm2015/components/event-control-board/service/e075der/e075der.service.js +3 -3
  37. package/esm2015/components/event-control-board/service/e205dep/e205dep.service.js +3 -3
  38. package/esm2015/components/event-control-board/service/event-control/event-control.service.js +3 -3
  39. package/esm2015/components/event-control-board/service/event-control-item/event-control-item.service.js +3 -3
  40. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.service.js +3 -3
  41. package/esm2015/components/event-control-board/service/fixation-entity/fixation.service.js +3 -3
  42. package/esm2015/components/event-control-board/service/invoice/invoice.service.js +3 -3
  43. package/esm2015/components/event-control-board/service/origination/origination.service.js +3 -3
  44. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.service.js +3 -3
  45. package/esm2015/components/event-control-board/service/ticket/ticket.service.js +3 -3
  46. package/esm2015/components/event-control-board/service/transfer/transfer.service.js +3 -3
  47. package/esm2015/components/financial-title-table/services/financial/agro-financial.service.js +2 -2
  48. package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +15 -13
  49. package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +13 -10
  50. package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +13 -36
  51. package/esm2015/components/modal-invoice-pj/modal-invoice-pj-base.class.js +13 -10
  52. package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +2 -2
  53. package/esm2015/services/agro-entity-service.js +132 -0
  54. package/esm2015/services/i18n/en-US.js +276 -294
  55. package/esm2015/services/i18n/es-CO.js +283 -294
  56. package/esm2015/services/i18n/pt-BR.js +70 -81
  57. package/esm2015/services/producer-invoice/producer-invoice.service.js +2 -2
  58. package/esm5/common/agro-logics.class.js +6 -5
  59. package/esm5/common/agro-unit-converter.class.js +1 -2
  60. package/esm5/components/event-control-board/common/event-control-constants.js +2 -2
  61. package/esm5/components/event-control-board/event-control-board.component.js +2 -2
  62. package/esm5/components/event-control-board/service/e001pes/e001pes.service.js +3 -3
  63. package/esm5/components/event-control-board/service/e001tns/e001tns.service.js +3 -3
  64. package/esm5/components/event-control-board/service/e012fam/e012fam.service.js +3 -3
  65. package/esm5/components/event-control-board/service/e070emp/e070emp.service.js +3 -3
  66. package/esm5/components/event-control-board/service/e070fil/e070fil.service.js +3 -3
  67. package/esm5/components/event-control-board/service/e075der/e075der.service.js +3 -3
  68. package/esm5/components/event-control-board/service/e205dep/e205dep.service.js +3 -3
  69. package/esm5/components/event-control-board/service/event-control/event-control.service.js +3 -3
  70. package/esm5/components/event-control-board/service/event-control-item/event-control-item.service.js +3 -3
  71. package/esm5/components/event-control-board/service/external-invoice/external-invoice.service.js +3 -3
  72. package/esm5/components/event-control-board/service/fixation-entity/fixation.service.js +3 -3
  73. package/esm5/components/event-control-board/service/invoice/invoice.service.js +3 -3
  74. package/esm5/components/event-control-board/service/origination/origination.service.js +3 -3
  75. package/esm5/components/event-control-board/service/rural-estate/rural-estate.service.js +3 -3
  76. package/esm5/components/event-control-board/service/ticket/ticket.service.js +3 -3
  77. package/esm5/components/event-control-board/service/transfer/transfer.service.js +3 -3
  78. package/esm5/components/financial-title-table/services/financial/agro-financial.service.js +2 -2
  79. package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +15 -13
  80. package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +13 -10
  81. package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +13 -36
  82. package/esm5/components/modal-invoice-pj/modal-invoice-pj-base.class.js +13 -10
  83. package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +2 -2
  84. package/esm5/services/agro-entity-service.js +143 -0
  85. package/esm5/services/i18n/en-US.js +276 -294
  86. package/esm5/services/i18n/es-CO.js +283 -294
  87. package/esm5/services/i18n/pt-BR.js +70 -81
  88. package/esm5/services/producer-invoice/producer-invoice.service.js +2 -2
  89. package/fesm2015/senior-agronegocio-angular-components.js +690 -872
  90. package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
  91. package/fesm5/senior-agronegocio-angular-components.js +703 -894
  92. package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
  93. package/package.json +3 -3
  94. package/{components/event-control-board/service/entity-service.d.ts → services/agro-entity-service.d.ts} +3 -13
  95. package/services/i18n/en-US.d.ts +275 -293
  96. package/services/i18n/es-CO.d.ts +282 -293
  97. package/services/i18n/pt-BR.d.ts +69 -80
  98. package/services/producer-invoice/producer-invoice.service.d.ts +1 -1
  99. package/esm2015/components/event-control-board/service/entity-service.js +0 -127
  100. package/esm2015/services/entity-service.js +0 -132
  101. package/esm5/components/event-control-board/service/entity-service.js +0 -138
  102. package/esm5/services/entity-service.js +0 -143
  103. package/services/entity-service.d.ts +0 -73
@@ -0,0 +1,143 @@
1
+ import { __read, __spread } from "tslib";
2
+ import { HttpParams } from '@angular/common/http';
3
+ import { throwError } from 'rxjs';
4
+ import { catchError } from 'rxjs/operators';
5
+ var AgroEntityService = /** @class */ (function () {
6
+ function AgroEntityService(http, messageService, entityUrl, actionsUrl, queriesUrl, translate) {
7
+ this.http = http;
8
+ this.messageService = messageService;
9
+ this.entityUrl = entityUrl;
10
+ this.actionsUrl = actionsUrl;
11
+ this.queriesUrl = queriesUrl;
12
+ this.translate = translate;
13
+ this.http = http;
14
+ this.messageService = messageService;
15
+ this.entityUrl = entityUrl;
16
+ this.actionsUrl = actionsUrl;
17
+ this.queriesUrl = queriesUrl;
18
+ this.translate = translate;
19
+ this.defaultCatch = this.defaultCatch.bind(this);
20
+ }
21
+ AgroEntityService.prototype.getListQueryParams = function (listParams) {
22
+ var ten = 10;
23
+ var _a = listParams.page, page = _a === void 0 ? 0 : _a, _b = listParams.size, size = _b === void 0 ? ten : _b, _c = listParams.sort, sort = _c === void 0 ? [] : _c, _d = listParams.filterQuery, filterQuery = _d === void 0 ? '' : _d, _e = listParams.displayFields, displayFields = _e === void 0 ? [] : _e;
24
+ var params = new HttpParams();
25
+ params = params.append('size', String(size));
26
+ params = params.append('offset', String(page));
27
+ if (sort === null || sort === void 0 ? void 0 : sort.length) {
28
+ params = params.append('orderby', sort.map(this.getBodyFilters()).join(', '));
29
+ }
30
+ if (filterQuery) {
31
+ params = params.append('filter', filterQuery);
32
+ }
33
+ if (displayFields === null || displayFields === void 0 ? void 0 : displayFields.length) {
34
+ params = params.append('displayfields', displayFields.join());
35
+ }
36
+ return params;
37
+ };
38
+ AgroEntityService.prototype.getBodyParams = function (listParams) {
39
+ var ten = 10;
40
+ var _a = listParams.page, page = _a === void 0 ? 0 : _a, _b = listParams.size, size = _b === void 0 ? ten : _b, _c = listParams.sort, sort = _c === void 0 ? [] : _c, _d = listParams.filterQuery, filterQuery = _d === void 0 ? '' : _d, _e = listParams.displayFields, displayFields = _e === void 0 ? [] : _e;
41
+ var bodyParams = {};
42
+ bodyParams.size = size;
43
+ bodyParams.offset = page;
44
+ if (sort === null || sort === void 0 ? void 0 : sort.length) {
45
+ bodyParams.orderBy = sort.map(this.getBodyFilters()).join(', ');
46
+ }
47
+ if (filterQuery) {
48
+ bodyParams.filter = filterQuery;
49
+ }
50
+ if (displayFields === null || displayFields === void 0 ? void 0 : displayFields.length) {
51
+ bodyParams.displayfields = displayFields.join();
52
+ }
53
+ return bodyParams;
54
+ };
55
+ AgroEntityService.prototype.getBodyFilters = function () {
56
+ return function (s) {
57
+ var order = '';
58
+ if (s.order === 1) {
59
+ order = ' asc';
60
+ }
61
+ if (s.order === -1) {
62
+ order = ' desc';
63
+ }
64
+ return "" + s.field + order;
65
+ };
66
+ };
67
+ AgroEntityService.prototype.defaultCatch = function (errorMsgs) {
68
+ var _this = this;
69
+ if (errorMsgs === void 0) { errorMsgs = []; }
70
+ var unauthorized401 = 401;
71
+ errorMsgs = __spread(errorMsgs);
72
+ var zero = 0;
73
+ return catchError(function (err) {
74
+ if (err) {
75
+ var errorMessage = errorMsgs.find(function (eMsg) { return eMsg.status === (err === null || err === void 0 ? void 0 : err.status) || zero; });
76
+ var summary = err.status ? String(err.status) : 'Error';
77
+ var detail = _this.getErrorMessage(err);
78
+ if (err.status === unauthorized401) {
79
+ summary = _this.translate.instant('agro.angular_components.error_unauthorized_title');
80
+ detail = _this.translate.instant('agro.angular_components.error_unauthorized_description');
81
+ }
82
+ if (errorMessage) {
83
+ summary = errorMessage.summary ? _this.translate.instant(errorMessage.summary) : summary;
84
+ detail = errorMessage.detail ? _this.translate.instant(errorMessage.detail) : detail;
85
+ }
86
+ _this.messageService.add({
87
+ severity: 'error',
88
+ summary: summary,
89
+ detail: detail,
90
+ });
91
+ }
92
+ return throwError(err);
93
+ });
94
+ };
95
+ AgroEntityService.prototype.getErrorMessage = function (err) {
96
+ var _a;
97
+ if ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) {
98
+ return err.error.message;
99
+ }
100
+ if (err.statusText) {
101
+ return err.statusText;
102
+ }
103
+ if (err.message) {
104
+ return err.message;
105
+ }
106
+ return 'Error';
107
+ };
108
+ AgroEntityService.prototype.list = function (listParams, errorMessage) {
109
+ if (errorMessage === void 0) { errorMessage = []; }
110
+ return this.http
111
+ .get(this.entityUrl, { params: this.getListQueryParams(listParams) })
112
+ .pipe(this.defaultCatch(errorMessage));
113
+ };
114
+ AgroEntityService.prototype.get = function (id, errorMessage) {
115
+ if (errorMessage === void 0) { errorMessage = []; }
116
+ return this.http.get(this.entityUrl + "/" + id).pipe(this.defaultCatch(errorMessage));
117
+ };
118
+ AgroEntityService.prototype.insert = function (entity, errorMessage) {
119
+ if (errorMessage === void 0) { errorMessage = []; }
120
+ return this.http.post("" + this.entityUrl, entity).pipe(this.defaultCatch(errorMessage));
121
+ };
122
+ AgroEntityService.prototype.update = function (id, entity, errorMessage) {
123
+ if (errorMessage === void 0) { errorMessage = []; }
124
+ return this.http.put(this.entityUrl + "/" + id, entity).pipe(this.defaultCatch(errorMessage));
125
+ };
126
+ AgroEntityService.prototype.delete = function (id, errorMessage) {
127
+ if (errorMessage === void 0) { errorMessage = []; }
128
+ return this.http.delete(this.entityUrl + "/" + id).pipe(this.defaultCatch(errorMessage));
129
+ };
130
+ AgroEntityService.prototype.listCustomFilter = function (listParams, action, errorMessage) {
131
+ if (errorMessage === void 0) { errorMessage = []; }
132
+ return this.http
133
+ .post(this.actionsUrl + "/" + action, this.getBodyParams(listParams))
134
+ .pipe(this.defaultCatch(errorMessage));
135
+ };
136
+ AgroEntityService.prototype.insertBulk = function (entities) {
137
+ var body = entities ? { entities: entities } : {};
138
+ return this.http.post(this.entityUrl + "/bulk", body).pipe(this.defaultCatch());
139
+ };
140
+ return AgroEntityService;
141
+ }());
142
+ export { AgroEntityService };
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1lbnRpdHktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsic2VydmljZXMvYWdyby1lbnRpdHktc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBRzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDO0lBQ0ksMkJBQ2MsSUFBZ0IsRUFDaEIsY0FBOEIsRUFDOUIsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsVUFBa0IsRUFDbEIsU0FBZ0M7UUFMaEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFFMUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sOENBQWtCLEdBQXpCLFVBQTBCLFVBQXNCO1FBQzVDLElBQU0sR0FBRyxHQUFHLEVBQUUsQ0FB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QUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsVUFBQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFTLElBQUksQ0FBQyxTQUFTLFVBQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNMLHdCQUFDO0FBQUQsQ0FBQyxBQTFKRCxJQTBKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlLCBTb3J0TWV0YSB9IGZyb20gJ3ByaW1lbmcnO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9FbnRpdHlTZXJ2aWNlPFQ+IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByb3RlY3RlZCBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGVudGl0eVVybDogc3RyaW5nLFxyXG4gICAgICAgIHByb3RlY3RlZCBhY3Rpb25zVXJsOiBzdHJpbmcsXHJcbiAgICAgICAgcHJvdGVjdGVkIHF1ZXJpZXNVcmw6IHN0cmluZyxcclxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IGh0dHA7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZSA9IG1lc3NhZ2VTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuZW50aXR5VXJsID0gZW50aXR5VXJsO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uc1VybCA9IGFjdGlvbnNVcmw7XHJcbiAgICAgICAgdGhpcy5xdWVyaWVzVXJsID0gcXVlcmllc1VybDtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Q2F0Y2ggPSB0aGlzLmRlZmF1bHRDYXRjaC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRMaXN0UXVlcnlQYXJhbXMobGlzdFBhcmFtczogTGlzdFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHRlbiA9IDEwO1xyXG4gICAgICAgIGNvbnN0IHsgcGFnZSA9IDAsIHNpemUgPSB0ZW4sIHNvcnQgPSBbXSwgZmlsdGVyUXVlcnkgPSAnJywgZGlzcGxheUZpZWxkcyA9IFtdIH0gPSBsaXN0UGFyYW1zO1xyXG5cclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzaXplJywgU3RyaW5nKHNpemUpKTtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCBTdHJpbmcocGFnZSkpO1xyXG5cclxuICAgICAgICBpZiAoc29ydD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ29yZGVyYnknLCBzb3J0Lm1hcCh0aGlzLmdldEJvZHlGaWx0ZXJzKCkpLmpvaW4oJywgJykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlclF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2ZpbHRlcicsIGZpbHRlclF1ZXJ5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkaXNwbGF5RmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZGlzcGxheWZpZWxkcycsIGRpc3BsYXlGaWVsZHMuam9pbigpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRCb2R5UGFyYW1zKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMpOiBCb2R5UGFyYW1zIHtcclxuICAgICAgICBjb25zdCB0ZW4gPSAxMDtcclxuICAgICAgICBjb25zdCB7IHBhZ2UgPSAwLCBzaXplID0gdGVuLCBzb3J0ID0gW10sIGZpbHRlclF1ZXJ5ID0gJycsIGRpc3BsYXlGaWVsZHMgPSBbXSB9ID0gbGlzdFBhcmFtcztcclxuICAgICAgICBjb25zdCBib2R5UGFyYW1zOiBCb2R5UGFyYW1zID0ge307XHJcblxyXG4gICAgICAgIGJvZHlQYXJhbXMuc2l6ZSA9IHNpemU7XHJcbiAgICAgICAgYm9keVBhcmFtcy5vZmZzZXQgPSBwYWdlO1xyXG5cclxuICAgICAgICBpZiAoc29ydD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGJvZHlQYXJhbXMub3JkZXJCeSA9IHNvcnQubWFwKHRoaXMuZ2V0Qm9keUZpbHRlcnMoKSkuam9pbignLCAnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJRdWVyeSkge1xyXG4gICAgICAgICAgICBib2R5UGFyYW1zLmZpbHRlciA9IGZpbHRlclF1ZXJ5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRpc3BsYXlGaWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBib2R5UGFyYW1zLmRpc3BsYXlmaWVsZHMgPSBkaXNwbGF5RmllbGRzLmpvaW4oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBib2R5UGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Qm9keUZpbHRlcnMoKTogKHZhbHVlOiBTb3J0TWV0YSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFNvcnRNZXRhW10pID0+IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIChzKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBvcmRlciA9ICcnO1xyXG4gICAgICAgICAgICBpZiAocy5vcmRlciA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgb3JkZXIgPSAnIGFzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHMub3JkZXIgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBvcmRlciA9ICcgZGVzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGAke3MuZmllbGR9JHtvcmRlcn1gO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlZmF1bHRDYXRjaChlcnJvck1zZ3M6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICBjb25zdCB1bmF1dGhvcml6ZWQ0MDEgPSA0MDE7XHJcbiAgICAgICAgZXJyb3JNc2dzID0gWy4uLmVycm9yTXNnc107XHJcbiAgICAgICAgY29uc3QgemVybyA9IDA7XHJcbiAgICAgICAgcmV0dXJuIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yTXNncy5maW5kKChlTXNnKSA9PiBlTXNnLnN0YXR1cyA9PT0gZXJyPy5zdGF0dXMgfHwgemVybyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3VtbWFyeSA9IGVyci5zdGF0dXMgPyBTdHJpbmcoZXJyLnN0YXR1cykgOiAnRXJyb3InO1xyXG4gICAgICAgICAgICAgICAgbGV0IGRldGFpbCA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IHVuYXV0aG9yaXplZDQwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcnkgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl91bmF1dGhvcml6ZWRfdGl0bGUnKTtcclxuICAgICAgICAgICAgICAgICAgICBkZXRhaWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl91bmF1dGhvcml6ZWRfZGVzY3JpcHRpb24nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyeSA9IGVycm9yTWVzc2FnZS5zdW1tYXJ5ID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChlcnJvck1lc3NhZ2Uuc3VtbWFyeSkgOiBzdW1tYXJ5O1xyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbCA9IGVycm9yTWVzc2FnZS5kZXRhaWwgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGVycm9yTWVzc2FnZS5kZXRhaWwpIDogZGV0YWlsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRFcnJvck1lc3NhZ2UoZXJyOiBhbnkpIHtcclxuICAgICAgICBpZiAoZXJyPy5lcnJvcj8ubWVzc2FnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyLmVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcnIuc3RhdHVzVGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyLnN0YXR1c1RleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAnRXJyb3InO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsaXN0KGxpc3RQYXJhbXM6IExpc3RQYXJhbXMsIGVycm9yTWVzc2FnZTogRXJyb3JNZXNzYWdlW10gPSBbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxUW10+KHRoaXMuZW50aXR5VXJsLCB7IHBhcmFtczogdGhpcy5nZXRMaXN0UXVlcnlQYXJhbXMobGlzdFBhcmFtcykgfSlcclxuICAgICAgICAgICAgLnBpcGUodGhpcy5kZWZhdWx0Q2F0Y2goZXJyb3JNZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldChpZDogYW55LCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPihgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gKS5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnNlcnQoZW50aXR5OiBULCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4oYCR7dGhpcy5lbnRpdHlVcmx9YCwgZW50aXR5KS5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGUoaWQ6IGFueSwgZW50aXR5OiBULCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPihgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gLCBlbnRpdHkpLnBpcGUodGhpcy5kZWZhdWx0Q2F0Y2goZXJyb3JNZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZShpZDogYW55LCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxUPihgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gKS5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsaXN0Q3VzdG9tRmlsdGVyKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMsIGFjdGlvbjogc3RyaW5nLCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PFRbXT4oYCR7dGhpcy5hY3Rpb25zVXJsfS8ke2FjdGlvbn1gLCB0aGlzLmdldEJvZHlQYXJhbXMobGlzdFBhcmFtcykpXHJcbiAgICAgICAgICAgIC5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnNlcnRCdWxrKGVudGl0aWVzOiBUW10pIHtcclxuICAgICAgICBjb25zdCBib2R5ID0gZW50aXRpZXMgPyB7IGVudGl0aWVzIH0gOiB7fTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VFtdPihgJHt0aGlzLmVudGl0eVVybH0vYnVsa2AsIGJvZHkpLnBpcGUodGhpcy5kZWZhdWx0Q2F0Y2goKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZFJlcXVlc3Qge1xyXG4gICAgc2VhcmNoOiBSZWNGaWx0cm9zTWVuc2FnZW1JbmZvO1xyXG4gICAgcGFnZVJlcXVlc3Q6IFJlY1BhZ2VSZXF1ZXN0O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlY0ZpbHRyb3NNZW5zYWdlbUluZm8ge1xyXG4gICAgdGl0dWxvOiBzdHJpbmc7XHJcbiAgICBjb250ZXVkbzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBheWxvYWRSZXF1ZXN0R3J1cG8ge1xyXG4gICAgc2VhcmNoOiBSZWNGaWx0cm9zR3J1cG9Qcm9kdXRvcjtcclxuICAgIHBhZ2VSZXF1ZXN0OiBSZWNQYWdlUmVxdWVzdDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNGaWx0cm9zR3J1cG9Qcm9kdXRvciB7XHJcbiAgICBub21lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVjUGFnZVJlcXVlc3Qge1xyXG4gICAgb2Zmc2V0OiBudW1iZXI7XHJcbiAgICBzaXplOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFBhcmFtcyB7XHJcbiAgICBwYWdlPzogbnVtYmVyO1xyXG4gICAgc2l6ZT86IG51bWJlcjtcclxuICAgIHNvcnQ/OiBTb3J0TWV0YVtdO1xyXG4gICAgZmlsdGVyUXVlcnk/OiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5RmllbGRzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQm9keVBhcmFtcyB7XHJcbiAgICBvZmZzZXQ/OiBudW1iZXI7XHJcbiAgICBzaXplPzogbnVtYmVyO1xyXG4gICAgb3JkZXJCeT86IHN0cmluZztcclxuICAgIGZpbHRlcj86IHN0cmluZztcclxuICAgIGRpc3BsYXlmaWVsZHM/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlIHtcclxuICAgIHN0YXR1czogbnVtYmVyO1xyXG4gICAgc3VtbWFyeTogc3RyaW5nO1xyXG4gICAgZGV0YWlsPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==