@senior-gestao-pessoas/payroll-core 9.8.0 → 9.9.0-feature-hcmgdp-12490-b88ad694

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 (37) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +618 -64
  2. package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
  3. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
  4. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
  5. package/components/input-rest-auto-complete/input-rest-auto-complete.component.d.ts +2 -0
  6. package/components/transportation-voucher-scale-lookup/autocomplete.service.d.ts +31 -0
  7. package/components/transportation-voucher-scale-lookup/index.d.ts +5 -0
  8. package/components/transportation-voucher-scale-lookup/lookup.service.d.ts +47 -0
  9. package/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.component.d.ts +80 -0
  10. package/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.dto.d.ts +8 -0
  11. package/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.module.d.ts +2 -0
  12. package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.component.js +87 -50
  13. package/esm2015/components/transportation-voucher-scale-lookup/autocomplete.service.js +114 -0
  14. package/esm2015/components/transportation-voucher-scale-lookup/index.js +6 -0
  15. package/esm2015/components/transportation-voucher-scale-lookup/lookup.service.js +147 -0
  16. package/esm2015/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.component.js +215 -0
  17. package/esm2015/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.dto.js +17 -0
  18. package/esm2015/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.module.js +31 -0
  19. package/esm2015/public_api.js +2 -1
  20. package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.component.js +88 -50
  21. package/esm5/components/transportation-voucher-scale-lookup/autocomplete.service.js +128 -0
  22. package/esm5/components/transportation-voucher-scale-lookup/index.js +6 -0
  23. package/esm5/components/transportation-voucher-scale-lookup/lookup.service.js +152 -0
  24. package/esm5/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.component.js +223 -0
  25. package/esm5/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.dto.js +19 -0
  26. package/esm5/components/transportation-voucher-scale-lookup/transportation-voucher-scale-lookup.module.js +34 -0
  27. package/esm5/public_api.js +2 -1
  28. package/fesm2015/senior-gestao-pessoas-payroll-core.js +583 -66
  29. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  30. package/fesm5/senior-gestao-pessoas-payroll-core.js +615 -66
  31. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  32. package/locale/en-US.json +5 -1
  33. package/locale/es-ES.json +5 -1
  34. package/locale/pt-BR.json +5 -1
  35. package/package.json +1 -1
  36. package/public_api.d.ts +1 -0
  37. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
@@ -22,62 +22,97 @@ var InputRestAutoCompleteComponent = /** @class */ (function () {
22
22
  InputRestAutoCompleteComponent.prototype.filterQuery = function (event) {
23
23
  var _this = this;
24
24
  var query = event.query;
25
- if (!(isNaN(query) && query.toString().length < this.minCharactersToSearch)) {
25
+ if (!(Number.isNaN(query) && query.toString().length < this.minCharactersToSearch)) {
26
26
  try {
27
- if (this.isTimetrackingSituation) {
28
- return this.service
29
- .query('autocompleteTimetrackingSituation', {
30
- valueSearch: query,
31
- referenceDate: this.referenceDate,
32
- })
33
- .subscribe(function (payload) { return _this.formaterResponce(payload.result); });
34
- }
35
- else if (this.isDismissalReason) {
36
- var params = { valueSearch: query };
37
- if (this.referenceDate) {
38
- params['referenceDate'] = this.referenceDate;
39
- }
40
- return this.service
41
- .query('autocompleteDismissalReason', params, ServiceType.GENERAL_REGISTER)
42
- .subscribe(function (payload) { return _this.formaterResponce(payload.result); });
43
- }
44
- else if (this.usingType && this.usingType.length) {
45
- return this.service
46
- .query('autocompleteOtherCompanyFilterUsingType', {
47
- searchText: query,
48
- usingType: this.usingType,
49
- })
50
- .subscribe(function (payload) { return _this.formaterResponce(payload.result); });
51
- }
52
- else if (this.isDepartmentFromCompany) {
53
- return this.service
54
- .query('autocompleteDepartmentQuery', {
55
- searchText: query,
56
- companyId: this.companyId,
57
- referenceDate: this.referenceDate,
58
- })
59
- .subscribe(function (payload) { return _this.formaterResponce(payload.result); });
60
- }
61
- else if (this.isSituationDefinition) {
62
- var params = { searchText: query };
63
- return this.service
64
- .query('autocompleteSituationDefinitionQuery', params, ServiceType.ORGANIZATION_REGISTER)
65
- .subscribe(function (payload) { return _this.formaterResponce(payload.result); });
66
- }
67
- else if (this.isWagetype) {
68
- var params = { searchText: query, companyId: this.companyId };
69
- return this.service
70
- .query('autocompleteWagetypeQuery', params, ServiceType.ENTRY)
71
- .subscribe(function (payload) { return _this.formaterResponce(payload.result); });
72
- }
73
- this.service
74
- .query('autocomplete', this.getParamsRest(query), this.serviceType).subscribe(function (payload) { return _this.formaterResponce(payload.result); });
27
+ var queryConfig = this.getQueryConfiguration(query);
28
+ return this.service
29
+ .query(queryConfig.endpoint, queryConfig.params, queryConfig.serviceType)
30
+ .subscribe(function (payload) { return _this.formaterResponce(payload.result); });
75
31
  }
76
32
  catch (e) {
77
33
  console.log(e);
78
34
  }
79
35
  }
80
36
  };
37
+ InputRestAutoCompleteComponent.prototype.getQueryConfiguration = function (query) {
38
+ var _this = this;
39
+ var queryStrategies = [
40
+ {
41
+ condition: function () { return _this.isTimetrackingSituation; },
42
+ endpoint: 'autocompleteTimetrackingSituation',
43
+ params: function () { return ({
44
+ valueSearch: query,
45
+ referenceDate: _this.referenceDate,
46
+ }); },
47
+ serviceType: this.serviceType,
48
+ },
49
+ {
50
+ condition: function () { return _this.isDismissalReason; },
51
+ endpoint: 'autocompleteDismissalReason',
52
+ params: function () {
53
+ var params = { valueSearch: query };
54
+ if (_this.referenceDate) {
55
+ params['referenceDate'] = _this.referenceDate;
56
+ }
57
+ return params;
58
+ },
59
+ serviceType: ServiceType.GENERAL_REGISTER,
60
+ },
61
+ {
62
+ condition: function () { return _this.usingType && _this.usingType.length; },
63
+ endpoint: 'autocompleteOtherCompanyFilterUsingType',
64
+ params: function () { return ({
65
+ searchText: query,
66
+ usingType: _this.usingType,
67
+ }); },
68
+ serviceType: this.serviceType,
69
+ },
70
+ {
71
+ condition: function () { return _this.isDepartmentFromCompany; },
72
+ endpoint: 'autocompleteDepartmentQuery',
73
+ params: function () { return ({
74
+ searchText: query,
75
+ companyId: _this.companyId,
76
+ referenceDate: _this.referenceDate,
77
+ }); },
78
+ serviceType: this.serviceType,
79
+ },
80
+ {
81
+ condition: function () { return _this.isSituationDefinition; },
82
+ endpoint: 'autocompleteSituationDefinitionQuery',
83
+ params: function () { return ({ searchText: query }); },
84
+ serviceType: ServiceType.ORGANIZATION_REGISTER,
85
+ },
86
+ {
87
+ condition: function () { return _this.isWagetype; },
88
+ endpoint: 'autocompleteWagetypeQuery',
89
+ params: function () { return ({
90
+ searchText: query,
91
+ companyId: _this.companyId,
92
+ }); },
93
+ serviceType: ServiceType.ENTRY,
94
+ },
95
+ {
96
+ condition: function () { return _this.isTransportationVoucherScaleGroup; },
97
+ endpoint: 'autocompleteTransportationVoucherScaleGroupQuery',
98
+ params: function () { return ({ searchText: query }); },
99
+ serviceType: ServiceType.GENERAL_REGISTER,
100
+ },
101
+ ];
102
+ var strategy = queryStrategies.find(function (s) { return s.condition(); });
103
+ if (strategy) {
104
+ return {
105
+ endpoint: strategy.endpoint,
106
+ params: strategy.params(),
107
+ serviceType: strategy.serviceType,
108
+ };
109
+ }
110
+ return {
111
+ endpoint: 'autocomplete',
112
+ params: this.getParamsRest(query),
113
+ serviceType: this.serviceType,
114
+ };
115
+ };
81
116
  InputRestAutoCompleteComponent.prototype.formaterResponce = function (result) {
82
117
  var _this = this;
83
118
  this.suggestions = [];
@@ -301,6 +336,9 @@ var InputRestAutoCompleteComponent = /** @class */ (function () {
301
336
  tslib_1.__decorate([
302
337
  Input()
303
338
  ], InputRestAutoCompleteComponent.prototype, "multiple", void 0);
339
+ tslib_1.__decorate([
340
+ Input()
341
+ ], InputRestAutoCompleteComponent.prototype, "isTransportationVoucherScaleGroup", void 0);
304
342
  tslib_1.__decorate([
305
343
  Input()
306
344
  ], InputRestAutoCompleteComponent.prototype, "serviceType", void 0);
@@ -323,4 +361,4 @@ var InputRestAutoCompleteComponent = /** @class */ (function () {
323
361
  return InputRestAutoCompleteComponent;
324
362
  }());
325
363
  export { InputRestAutoCompleteComponent };
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9pbnB1dC1yZXN0LWF1dG8tY29tcGxldGUvaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFjM0Q7SUErRUUsd0NBQW9CLE9BQXFDO1FBQXJDLFlBQU8sR0FBUCxPQUFPLENBQThCO1FBbkR6RCxtQkFBYyxHQUFHLElBQUksQ0FBQztRQVF0QixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBb0JqQixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUV2QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLDBCQUFxQixHQUFHLENBQUMsQ0FBQztRQU8xQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGdCQUFXLEdBQWdCLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFFL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsZ0JBQVcsR0FBVSxFQUFFLENBQUM7SUFFb0MsQ0FBQztJQUU3RCxpREFBUSxHQUFSLGNBQVksQ0FBQztJQUViLG9EQUFXLEdBQVgsVUFBWSxL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cEMsbW9DQUF3RDs7U0FFekQsQ0FBQztPQUNXLDhCQUE4QixDQTZQMUM7SUFBRCxxQ0FBQztDQUFBLEFBN1BELElBNlBDO1NBN1BZLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgX21vbWVudCwgaXNWYWxpZCB9IGZyb20gJy4uL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgSW5wdXRSZXN0QXV0b0NvbXBsZXRlU2VydmljZSB9IGZyb20gJy4vaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3NlcnZpY2VUeXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZGl0aW9ucyB7XG4gIGZpZWxkczogQXJyYXk8c3RyaW5nW10+O1xuICBmaWVsZFR5cGU6IHN0cmluZztcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbnB1dC1yZXN0LWF1dG8tY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRSZXN0QXV0b0NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnYXV0b0NvbXBsZXRlT2JqZWN0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgX2F1dG9Db21wbGV0ZU9iamVjdDogRWxlbWVudFJlZjtcbiAgQElucHV0KClcbiAgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICB0YWJsZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBvcmRlcjogQXJyYXk8YW55W10+O1xuICBASW5wdXQoKVxuICBlbmFibGVFbnRpdHlGaWx0ZXJzOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBmaWVsZHM6IEFycmF5PGFueVtdPjtcbiAgQElucHV0KClcbiAgY29uZGl0aW9uc0ZpZWxkcz86IEFycmF5PGFueVtdPjtcbiAgQElucHV0KClcbiAgY29uZGl0aW9uczogQXJyYXk8SUNvbmRpdGlvbnM+O1xuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBkcm9wZG93bjogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgZm9yY2VTZWxlY3Rpb24gPSB0cnVlO1xuICBASW5wdXQoKVxuICBlcnJvcjogb2JqZWN0O1xuICBASW5wdXQoKVxuICBlbXB0eU1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KClcbiAga2V5Q29kZT86IHN0cmluZztcbiAgQElucHV0KClcbiAga2V5TmFtZSA9ICduYW1lJztcbiAgQElucHV0KClcbiAgY29uY2F0RmllbGRzRm9yTmFtZT86IGFueVtdO1xuICBASW5wdXQoKVxuICBpdGVtU2VsZWN0OiBhbnk7XG4gIEBJbnB1dCgpXG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KClcbiAgaW5wdXRJZDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBpc1RpbWV0cmFja2luZ1NpdHVhdGlvbjogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgaXNEZXBhcnRtZW50RnJvbUNvbXBhbnk6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGNvbXBhbnlJZDogc3RyaW5nO1xuICBASW5wdXQoKVxuICByZWZlcmVuY2VEYXRlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGlzRGlzbWlzc2FsUmVhc29uOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBrZXlUb0V4Y2x1ZGU6IGFueSA9IFtdO1xuICBASW5wdXQoKVxuICB1c2luZ1R5cGU6IGFueSA9IFtdO1xuICBASW5wdXQoKVxuICBtaW5DaGFyYWN0ZXJzVG9TZWFyY2ggPSAzO1xuICBASW5wdXQoKVxuICBpc1dhZ2V0eXBlOiBib29sZWFuO1xuICBwcml2YXRlIGlzRHJvcGRvd246IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGlzU2l0dWF0aW9uRGVmaW5pdGlvbjogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgbXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlID0gU2VydmljZVR5cGUuUEFZUk9MTDtcbiAgQE91dHB1dCgpXG4gIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzdWdnZXN0aW9uczogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IElucHV0UmVzdEF1dG9Db21wbGV0ZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGZpbHRlclF1ZXJ5KGV2ZW50OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XG4gICAgaWYgKCEoaXNOYU4ocXVlcnkpICYmIHF1ZXJ5LnRvU3RyaW5nKCkubGVuZ3RoIDwgdGhpcy5taW5DaGFyYWN0ZXJzVG9TZWFyY2gpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy5pc1RpbWV0cmFja2luZ1NpdHVhdGlvbikge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC5xdWVyeSgnYXV0b2NvbXBsZXRlVGltZXRyYWNraW5nU2l0dWF0aW9uJywge1xuICAgICAgICAgICAgICB2YWx1ZVNlYXJjaDogcXVlcnksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZURhdGU6IHRoaXMucmVmZXJlbmNlRGF0ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHBheWxvYWQgPT4gdGhpcy5mb3JtYXRlclJlc3BvbmNlKHBheWxvYWQucmVzdWx0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0Rpc21pc3NhbFJlYXNvbikge1xuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgdmFsdWVTZWFyY2g6IHF1ZXJ5IH07XG4gICAgICAgICAgaWYgKHRoaXMucmVmZXJlbmNlRGF0ZSkge1xuICAgICAgICAgICAgcGFyYW1zWydyZWZlcmVuY2VEYXRlJ10gPSB0aGlzLnJlZmVyZW5jZURhdGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC5xdWVyeSgnYXV0b2NvbXBsZXRlRGlzbWlzc2FsUmVhc29uJywgcGFyYW1zLCBTZXJ2aWNlVHlwZS5HRU5FUkFMX1JFR0lTVEVSKVxuICAgICAgICAgICAgLnN1YnNjcmliZShwYXlsb2FkID0+IHRoaXMuZm9ybWF0ZXJSZXNwb25jZShwYXlsb2FkLnJlc3VsdCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNpbmdUeXBlICYmIHRoaXMudXNpbmdUeXBlLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC5xdWVyeSgnYXV0b2NvbXBsZXRlT3RoZXJDb21wYW55RmlsdGVyVXNpbmdUeXBlJywge1xuICAgICAgICAgICAgICBzZWFyY2hUZXh0OiBxdWVyeSxcbiAgICAgICAgICAgICAgdXNpbmdUeXBlOiB0aGlzLnVzaW5nVHlwZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHBheWxvYWQgPT4gdGhpcy5mb3JtYXRlclJlc3BvbmNlKHBheWxvYWQucmVzdWx0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0RlcGFydG1lbnRGcm9tQ29tcGFueSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC5xdWVyeSgnYXV0b2NvbXBsZXRlRGVwYXJ0bWVudFF1ZXJ5Jywge1xuICAgICAgICAgICAgICBzZWFyY2hUZXh0OiBxdWVyeSxcbiAgICAgICAgICAgICAgY29tcGFueUlkOiB0aGlzLmNvbXBhbnlJZCxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlRGF0ZTogdGhpcy5yZWZlcmVuY2VEYXRlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocGF5bG9hZCA9PiB0aGlzLmZvcm1hdGVyUmVzcG9uY2UocGF5bG9hZC5yZXN1bHQpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU2l0dWF0aW9uRGVmaW5pdGlvbikge1xuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgc2VhcmNoVGV4dDogcXVlcnkgfTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgICAucXVlcnkoJ2F1dG9jb21wbGV0ZVNpdHVhdGlvbkRlZmluaXRpb25RdWVyeScsIHBhcmFtcywgU2VydmljZVR5cGUuT1JHQU5JWkFUSU9OX1JFR0lTVEVSKVxuICAgICAgICAgICAgLnN1YnNjcmliZShwYXlsb2FkID0+IHRoaXMuZm9ybWF0ZXJSZXNwb25jZShwYXlsb2FkLnJlc3VsdCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNXYWdldHlwZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyBzZWFyY2hUZXh0OiBxdWVyeSwgY29tcGFueUlkOiB0aGlzLmNvbXBhbnlJZCB9O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgICAgLnF1ZXJ5KCdhdXRvY29tcGxldGVXYWdldHlwZVF1ZXJ5JywgcGFyYW1zLCBTZXJ2aWNlVHlwZS5FTlRSWSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocGF5bG9hZCA9PiB0aGlzLmZvcm1hdGVyUmVzcG9uY2UocGF5bG9hZC5yZXN1bHQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAgIC5xdWVyeSgnYXV0b2NvbXBsZXRlJywgdGhpcy5nZXRQYXJhbXNSZXN0KHF1ZXJ5KSwgdGhpcy5zZXJ2aWNlVHlwZSkuc3Vic2NyaWJlKHBheWxvYWQgPT4gdGhpcy5mb3JtYXRlclJlc3BvbmNlKHBheWxvYWQucmVzdWx0KSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvcm1hdGVyUmVzcG9uY2UocmVzdWx0KSB7XG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgIGNvbnN0IHZhbHNSZXN1bHQgPSBbXTtcbiAgICByZXN1bHQubWFwKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlQ29uY2F0ID0ge1xuICAgICAgICB0YWJsZUlkOiB2YWx1ZS50YWJsZUlkLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5pc1RpbWV0cmFja2luZ1NpdHVhdGlvbiB8fCB0aGlzLmlzRGlzbWlzc2FsUmVhc29uIHx8ICh0aGlzLnVzaW5nVHlwZSAmJiB0aGlzLnVzaW5nVHlwZS5sZW5ndGgpKSB7XG4gICAgICAgIGlmICh0aGlzLmtleVRvRXhjbHVkZS5pbmNsdWRlcyh2YWx1ZS5maWVsZHMgJiYgdmFsdWUuZmllbGRzWzJdICYmIHZhbHVlLmZpZWxkc1syXS52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmllbGROYW1lID0gJyc7XG5cbiAgICAgICAgdmFsdWUuZmllbGRzLm1hcCh2YWwgPT4ge1xuICAgICAgICAgIHZhbHVlQ29uY2F0W3ZhbC5uYW1lXSA9IHZhbC52YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZmllbGROYW1lICs9IHZhbHVlLmZpZWxkcy5maWx0ZXIodmFsID0+IHZhbC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdjb2RlJykubWFwKGNvZGUgPT4gKGNvZGUgPyAoY29kZS52YWx1ZSArPSAnIC0gJykgOiAnJykpWzBdO1xuICAgICAgICBpZiAodGhpcy51c2luZ1R5cGUgJiYgdGhpcy51c2luZ1R5cGUubGVuZ3RoICYmICghZmllbGROYW1lIHx8IGZpZWxkTmFtZSA9PT0gJ3VuZGVmaW5lZCcpKSB7XG4gICAgICAgICAgZmllbGROYW1lID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGROYW1lICs9IHZhbHVlLmZpZWxkcy5maWx0ZXIodmFsID0+IHZhbC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICduYW1lJykubWFwKG5hbWUgPT4gKG5hbWUgPyBuYW1lLnZhbHVlIDogJycpKVswXTtcblxuICAgICAgICB2YWx1ZUNvbmNhdC5uYW1lID0gZmllbGROYW1lO1xuICAgICAgICB2YWxzUmVzdWx0LnB1c2godmFsdWVDb25jYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUuZmllbGRzLm1hcCh2YWwgPT4ge1xuICAgICAgICAgIHZhbHVlQ29uY2F0W3ZhbC5uYW1lXSA9IHZhbC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBmaWVsZE5hbWUgPSAnJztcbiAgICAgICAgaWYgKHRoaXMuY29uY2F0RmllbGRzRm9yTmFtZSkge1xuICAgICAgICAgIHRoaXMuY29uY2F0RmllbGRzRm9yTmFtZS5tYXAodmFsID0+IHtcbiAgICAgICAgICAgIC8vIHNlIG8gY2FtcG8gZm9yIGRhdGEsIGZvcm1hdGEgcHJvIGxvY2FsZSBkbyB1c3XDoXJpb1xuICAgICAgICAgICAgaWYgKHZhbC5pbmNsdWRlcygnZGF0ZScpIHx8IHZhbC5pbmNsdWRlcygnQmlydGhkYXknKSkge1xuICAgICAgICAgICAgICB2YWx1ZUNvbmNhdFt2YWxdID0gX21vbWVudCh2YWx1ZUNvbmNhdFt2YWxdKS5mb3JtYXQoJ0REL01NL1lZWVknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkTmFtZSArPSB2YWx1ZUNvbmNhdFt2YWxdICsgJyAtICc7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZmllbGROYW1lID0gZmllbGROYW1lLnNsaWNlKDAsIC0zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5rZXlDb2RlKSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgKz0gdmFsdWVDb25jYXRbdGhpcy5rZXlDb2RlXSArICcgLSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5rZXlOYW1lKSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgKz0gdmFsdWVDb25jYXRbdGhpcy5rZXlOYW1lXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVDb25jYXQubmFtZSA9IGZpZWxkTmFtZTtcbiAgICAgICAgdmFsc1Jlc3VsdC5wdXNoKHZhbHVlQ29uY2F0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gWy4uLnZhbHNSZXN1bHRdO1xuICAgIHJldHVybiB2YWxzUmVzdWx0O1xuICB9XG5cbiAgZ2V0UGFyYW1zUmVzdChzZWFyY2g6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhYmxlOiB0aGlzLnRhYmxlLFxuICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyxcbiAgICAgIG9yZGVyOiB0aGlzLm9yZGVyLFxuICAgICAgY29uZGl0aW9uczogdGhpcy5nZXRDb25kaXRpb25zUmVzdChzZWFyY2gpLFxuICAgICAgZW5hYmxlRW50aXR5RmlsdGVyczogdGhpcy5lbmFibGVFbnRpdHlGaWx0ZXJzLFxuICAgIH07XG4gIH1cblxuICBnZXRDb25kaXRpb25zUmVzdChzZWFyY2g6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmRpdGlvc1JldHVybiA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGRzOiB0aGlzLmNvbmRpdGlvbnNGaWVsZHMgfHwgdGhpcy5maWVsZHMsXG4gICAgICAgIGV4cHJlc3Npb246ICdMSUtFJyxcbiAgICAgICAgdmFsdWU6IGAke3NlYXJjaH1gLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMuY29uZGl0aW9ucykge1xuICAgICAgdGhpcy5jb25kaXRpb25zLm1hcCh2YWwgPT4ge1xuICAgICAgICBpZiAoWydJU19OVUxMJywgJ0lTX05PVF9OVUxMJywgJ0lTX1RSVUUnXS5pbmNsdWRlcyh2YWwuZXhwcmVzc2lvbikgfHwgaXNWYWxpZCh2YWwudmFsdWUpKSB7XG4gICAgICAgICAgY29uZGl0aW9zUmV0dXJuLnB1c2godmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmRpdGlvc1JldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlcm5pemEgYSBmdW7Dp8OjbyBkZSBzZWxlY3QgZGFzIG9ww6fDtWVzXG4gICAqIDxpbnB1dC1yZXN0LWF1dG8tY29tcGxldGUgKG9uU2VsZWN0KT1cIm9uU2VsZWN0SGFuZGxlKCRldmVudClcIiA+PC9pbnB1dC1yZXN0LWF1dG8tY29tcGxldGU+XG4gICAqIEBwYXJhbSBvcHRpb25cbiAgICovXG4gIHNlbGVjdE9wdGlvbihvcHRpb246IG9iamVjdCkge1xuICAgIHRoaXMub25TZWxlY3QuZW1pdChvcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgb25DbGVhckl0ZW0ob3B0aW9uOiBvYmplY3QpIHtcbiAgICBhd2FpdCB0aGlzLm9uQ2xlYXIuZW1pdChvcHRpb24pO1xuICAgIHRoaXMuZm9ybS5nZXQodGhpcy5uYW1lKS5yZXNldCgpO1xuICB9XG5cbiAgb25CbHVySXRlbShvcHRpb246IG9iamVjdCkge1xuICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgdGhpcy5vbkJsdXIuZW1pdChvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRHJvcGRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xpY2soKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBhdXRvQ29tcGxldGVPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9Db21wbGV0ZU9iamVjdDtcbiAgfVxufVxuIl19
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9pbnB1dC1yZXN0LWF1dG8tY29tcGxldGUvaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFjM0Q7SUFpRkUsd0NBQW9CLE9BQXFDO1FBQXJDLFlBQU8sR0FBUCxPQUFPLENBQThCO1FBckR6RCxtQkFBYyxHQUFHLElBQUksQ0FBQztRQVF0QixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBb0JqQixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUV2QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLDBCQUFxQixHQUFHLENBQUMsQ0FBQztRQU8xQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLGdCQUFXLEdBQWdCLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFFL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsZ0JBQVcsR0FBVSxFQUFFLENBQUM7SUFFb0MsQ0FBQztJQUU3RCxpREFBUSxHQUFSLGNBQVksQ0FBQztJQUViLG9EQUFXLEdBQVgsVUFBWSxLQUFVO1FBQXRCLGlCQVlDO1FBWEMsSUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDbEYsSUFBSTtnQkFDRixJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sSUFBSSxDQUFDLE9BQU87cUJBQ2hCLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQztxQkFDeEUsU0FBUyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsS0FBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBckMsQ0FBcUMsQ0FBQyxDQUFDO2FBQ2hFO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQjtTQUNGO0lBQ0gsQ0FBQztJQUVPLDhEQUFxQixHQUE3QixVQUE4QixLQUFhO1FBQTNDLGlCQWdGQztRQS9FQyxJQUFNLGVBQWUsR0FBRztZQUN0QjtnQkFDRSxTQUFTLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyx1QkFBdUIsRUFBNUIsQ0FBNEI7Z0JBQzdDLFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLE1BQU0sRUFBRSxjQUFNLE9BQUEsQ0FBQztvQkFDYixXQUFXLEVBQUUsS0FBSztvQkFDbEIsYUFBYSxFQUFFLEtBQUksQ0FBQyxhQUFhO2lCQUNsQyxDQUFDLEVBSFksQ0FHWjtnQkFDRixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDOUI7WUFDRDtnQkFDRSxTQUFTLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxpQkFBaUIsRUFBdEIsQ0FBc0I7Z0JBQ3ZDLFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLE1BQU0sRUFBRTtvQkFDTixJQUFNLE1BQU0sR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxLQUFJLENBQUMsYUFBYSxFQUFFO3dCQUN0QixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQztxQkFDOUM7b0JBQ0QsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsV0FBVyxFQUFFLFdBQVcsQ0FBQyxnQkFBZ0I7YUFDMUM7WUFDRDtnQkFDRSxTQUFTLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxTQUFTLElBQUksS0FBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQXZDLENBQXVDO2dCQUN4RCxRQUFRLEVBQUUseUNBQXlDO2dCQUNuRCxNQUFNLEVBQUUsY0FBTSxPQUFBLENBQUM7b0JBQ2IsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRSxLQUFJLENBQUMsU0FBUztpQkFDMUIsQ0FBQyxFQUhZLENBR1o7Z0JBQ0YsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQzlCO1lBQ0Q7Z0JBQ0UsU0FBUyxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsdUJBQXVCLEVBQTVCLENBQTRCO2dCQUM3QyxRQUFRLEVBQUUsNkJBQTZCO2dCQUN2QyxNQUFNLEVBQUUsY0FBTSxPQUFBLENBQUM7b0JBQ2IsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRSxLQUFJLENBQUMsU0FBUztvQkFDekIsYUFBYSxFQUFFLEtBQUksQ0FBQyxhQUFhO2lCQUNsQyxDQUFDLEVBSlksQ0FJWjtnQkFDRixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDOUI7WUFDRDtnQkFDRSxTQUFTLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxxQkFBcUIsRUFBMUIsQ0FBMEI7Z0JBQzNDLFFBQVEsRUFBRSxzQ0FBc0M7Z0JBQ2hELE1BQU0sRUFBRSxjQUFNLE9BQUEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUF2QixDQUF1QjtnQkFDckMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxxQkFBcUI7YUFDL0M7WUFDRDtnQkFDRSxTQUFTLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxVQUFVLEVBQWYsQ0FBZTtnQkFDaEMsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsTUFBTSxFQUFFLGNBQU0sT0FBQSxDQUFDO29CQUNiLFVBQVUsRUFBRSxLQUFLO29CQUNqQixTQUFTLEVBQUUsS0FBSSxDQUFDLFNBQVM7aUJBQzFCLENBQUMsRUFIWSxDQUdaO2dCQUNGLFdBQVcsRUFBRSxXQUFXLENBQUMsS0FBSzthQUMvQjtZQUNEO2dCQUNFLFNBQVMsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLGlDQUFpQyxFQUF0QyxDQUFzQztnQkFDdkQsUUFBUSxFQUFFLGtEQUFrRDtnQkFDNUQsTUFBTSxFQUFFLGNBQU0sT0FBQSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQXZCLENBQXVCO2dCQUNyQyxXQUFXLEVBQUUsV0FBVyxDQUFDLGdCQUFnQjthQUMxQztTQUNGLENBQUM7UUFFRixJQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFiLENBQWEsQ0FBQyxDQUFDO1FBRTFELElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTztnQkFDTCxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7Z0JBQzNCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN6QixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7YUFDbEMsQ0FBQztTQUNIO1FBRUQsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCx5REFBZ0IsR0FBaEIsVUFBaUIsTUFBTTtRQUF2QixpQkF1REM7UUF0REMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQSxLQUFLO1lBQ2QsSUFBTSxXQUFXLEdBQUc7Z0JBQ2xCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLEVBQUU7YUFDVCxDQUFDO1lBQ0YsSUFBSSxLQUFJLENBQUMsdUJBQXVCLElBQUksS0FBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsS0FBSSxDQUFDLFNBQVMsSUFBSSxLQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN2RyxJQUFJLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN4RixPQUFPO2lCQUNSO2dCQUVELElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztnQkFFbkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQSxHQUFHO29CQUNsQixXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDO2dCQUVILFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFqQyxDQUFpQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQW5DLENBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0gsSUFBSSxLQUFJLENBQUMsU0FBUyxJQUFJLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLFdBQVcsQ0FBQyxFQUFFO29CQUN4RixTQUFTLEdBQUcsRUFBRSxDQUFDO2lCQUNoQjtnQkFDRCxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBakMsQ0FBaUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLElBQUksSUFBSSxPQUFBLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVwSCxXQUFXLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztnQkFDN0IsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM5QjtpQkFBTTtnQkFDTCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUc7b0JBQ2xCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxXQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLEtBQUksQ0FBQyxtQkFBbUIsRUFBRTtvQkFDNUIsS0FBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUc7d0JBQzlCLHFEQUFxRDt3QkFDckQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7NEJBQ3BELFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO3lCQUNuRTt3QkFDRCxXQUFTLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDeEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsV0FBUyxHQUFHLFdBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BDO3FCQUFNO29CQUNMLElBQUksS0FBSSxDQUFDLE9BQU8sRUFBRTt3QkFDaEIsV0FBUyxJQUFJLFdBQVcsQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO3FCQUNoRDtvQkFDRCxJQUFJLEtBQUksQ0FBQyxPQUFPLEVBQUU7d0JBQ2hCLFdBQVMsSUFBSSxXQUFXLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUN4QztpQkFDRjtnQkFDRCxXQUFXLENBQUMsSUFBSSxHQUFHLFdBQVMsQ0FBQztnQkFDN0IsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsb0JBQU8sVUFBVSxDQUFDLENBQUM7UUFDbkMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELHNEQUFhLEdBQWIsVUFBYyxNQUFjO1FBQzFCLE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztZQUMxQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQsMERBQWlCLEdBQWpCLFVBQWtCLE1BQWM7UUFDOUIsSUFBTSxlQUFlLEdBQUc7WUFDdEI7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFDNUMsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxLQUFHLE1BQVE7YUFDbkI7U0FDRixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQUEsR0FBRztnQkFDckIsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN4RixlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMzQjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFEQUFZLEdBQVosVUFBYSxNQUFjO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFSyxvREFBVyxHQUFqQixVQUFrQixNQUFjOzs7OzRCQUM5QixxQkFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQTs7d0JBQS9CLFNBQStCLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7Ozs7S0FDbEM7SUFFRCxtREFBVSxHQUFWLFVBQVcsTUFBYztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDMUI7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELHdEQUFlLEdBQWY7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsc0JBQUksOERBQWtCO2FBQXRCO1lBQ0UsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7O2dCQXhONEIsNEJBQTRCOztJQS9FekQ7UUFEQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7K0VBQ2xCO0lBRWhDO1FBREMsS0FBSyxFQUFFO2dFQUNLO0lBRWI7UUFEQyxLQUFLLEVBQUU7aUVBQ007SUFFZDtRQURDLEtBQUssRUFBRTtpRUFDWTtJQUVwQjtRQURDLEtBQUssRUFBRTsrRUFDcUI7SUFFN0I7UUFEQyxLQUFLLEVBQUU7a0VBQ2E7SUFFckI7UUFEQyxLQUFLLEVBQUU7NEVBQ3dCO0lBRWhDO1FBREMsS0FBSyxFQUFFO3NFQUN1QjtJQUUvQjtRQURDLEtBQUssRUFBRTt1RUFDWTtJQUVwQjtRQURDLEtBQUssRUFBRTtvRUFDVTtJQUVsQjtRQURDLEtBQUssRUFBRTtvRUFDVTtJQUVsQjtRQURDLEtBQUssRUFBRTtvRUFDVTtJQUVsQjtRQURDLEtBQUssRUFBRTtvRUFDVTtJQUVsQjtRQURDLEtBQUssRUFBRTswRUFDYztJQUV0QjtRQURDLEtBQUssRUFBRTtpRUFDTTtJQUVkO1FBREMsS0FBSyxFQUFFO3dFQUNhO0lBRXJCO1FBREMsS0FBSyxFQUFFO21FQUNTO0lBRWpCO1FBREMsS0FBSyxFQUFFO21FQUNTO0lBRWpCO1FBREMsS0FBSyxFQUFFOytFQUNvQjtJQUU1QjtRQURDLEtBQUssRUFBRTtzRUFDUTtJQUVoQjtRQURDLEtBQUssRUFBRTtnRUFDUTtJQUVoQjtRQURDLEtBQUssRUFBRTttRUFDUTtJQUVoQjtRQURDLEtBQUssRUFBRTttRkFDeUI7SUFFakM7UUFEQyxLQUFLLEVBQUU7bUZBQ3lCO0lBRWpDO1FBREMsS0FBSyxFQUFFO3FFQUNVO0lBRWxCO1FBREMsS0FBSyxFQUFFO3lFQUNjO0lBRXRCO1FBREMsS0FBSyxFQUFFOzZFQUNtQjtJQUUzQjtRQURDLEtBQUssRUFBRTt3RUFDZTtJQUV2QjtRQURDLEtBQUssRUFBRTtxRUFDWTtJQUVwQjtRQURDLEtBQUssRUFBRTtpRkFDa0I7SUFFMUI7UUFEQyxLQUFLLEVBQUU7c0VBQ1k7SUFHcEI7UUFEQyxLQUFLLEVBQUU7aUZBQ3VCO0lBRS9CO1FBREMsS0FBSyxFQUFFO29FQUNTO0lBRWpCO1FBREMsS0FBSyxFQUFFOzZGQUNtQztJQUUzQztRQURDLEtBQUssRUFBRTt1RUFDdUM7SUFFL0M7UUFEQyxNQUFNLEVBQUU7a0VBQ3NDO0lBRS9DO1FBREMsTUFBTSxFQUFFO29FQUN3QztJQUVqRDtRQURDLE1BQU0sRUFBRTttRUFDdUM7SUE3RXJDLDhCQUE4QjtRQUwxQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLG1vQ0FBd0Q7O1NBRXpELENBQUM7T0FDVyw4QkFBOEIsQ0EwUzFDO0lBQUQscUNBQUM7Q0FBQSxBQTFTRCxJQTBTQztTQTFTWSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IF9tb21lbnQsIGlzVmFsaWQgfSBmcm9tICcuLi91dGlscy9oZWxwZXJzJztcbmltcG9ydCB7IElucHV0UmVzdEF1dG9Db21wbGV0ZVNlcnZpY2UgfSBmcm9tICcuL2lucHV0LXJlc3QtYXV0by1jb21wbGV0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZpY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9zZXJ2aWNlVHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmRpdGlvbnMge1xuICBmaWVsZHM6IEFycmF5PHN0cmluZ1tdPjtcbiAgZmllbGRUeXBlOiBzdHJpbmc7XG4gIGV4cHJlc3Npb246IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW5wdXQtcmVzdC1hdXRvLWNvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXJlc3QtYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXJlc3QtYXV0by1jb21wbGV0ZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIElucHV0UmVzdEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9Db21wbGV0ZU9iamVjdCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF9hdXRvQ29tcGxldGVPYmplY3Q6IEVsZW1lbnRSZWY7XG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZztcbiAgQElucHV0KClcbiAgdGFibGU6IHN0cmluZztcbiAgQElucHV0KClcbiAgb3JkZXI6IEFycmF5PGFueVtdPjtcbiAgQElucHV0KClcbiAgZW5hYmxlRW50aXR5RmlsdGVyczogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgZmllbGRzOiBBcnJheTxhbnlbXT47XG4gIEBJbnB1dCgpXG4gIGNvbmRpdGlvbnNGaWVsZHM/OiBBcnJheTxhbnlbXT47XG4gIEBJbnB1dCgpXG4gIGNvbmRpdGlvbnM6IEFycmF5PElDb25kaXRpb25zPjtcbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgZHJvcGRvd246IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGZvcmNlU2VsZWN0aW9uID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgZXJyb3I6IG9iamVjdDtcbiAgQElucHV0KClcbiAgZW1wdHlNZXNzYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGtleUNvZGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGtleU5hbWUgPSAnbmFtZSc7XG4gIEBJbnB1dCgpXG4gIGNvbmNhdEZpZWxkc0Zvck5hbWU/OiBhbnlbXTtcbiAgQElucHV0KClcbiAgaXRlbVNlbGVjdDogYW55O1xuICBASW5wdXQoKVxuICBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpXG4gIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgaXNUaW1ldHJhY2tpbmdTaXR1YXRpb246IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGlzRGVwYXJ0bWVudEZyb21Db21wYW55OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBjb21wYW55SWQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgcmVmZXJlbmNlRGF0ZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBpc0Rpc21pc3NhbFJlYXNvbjogYm9vbGVhbjtcbiAgQElucHV0KClcbiAga2V5VG9FeGNsdWRlOiBhbnkgPSBbXTtcbiAgQElucHV0KClcbiAgdXNpbmdUeXBlOiBhbnkgPSBbXTtcbiAgQElucHV0KClcbiAgbWluQ2hhcmFjdGVyc1RvU2VhcmNoID0gMztcbiAgQElucHV0KClcbiAgaXNXYWdldHlwZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBpc0Ryb3Bkb3duOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBpc1NpdHVhdGlvbkRlZmluaXRpb246IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGlzVHJhbnNwb3J0YXRpb25Wb3VjaGVyU2NhbGVHcm91cDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlID0gU2VydmljZVR5cGUuUEFZUk9MTDtcbiAgQE91dHB1dCgpXG4gIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBzdWdnZXN0aW9uczogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IElucHV0UmVzdEF1dG9Db21wbGV0ZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGZpbHRlclF1ZXJ5KGV2ZW50OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XG4gICAgaWYgKCEoTnVtYmVyLmlzTmFOKHF1ZXJ5KSAmJiBxdWVyeS50b1N0cmluZygpLmxlbmd0aCA8IHRoaXMubWluQ2hhcmFjdGVyc1RvU2VhcmNoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnlDb25maWcgPSB0aGlzLmdldFF1ZXJ5Q29uZmlndXJhdGlvbihxdWVyeSk7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAucXVlcnkocXVlcnlDb25maWcuZW5kcG9pbnQsIHF1ZXJ5Q29uZmlnLnBhcmFtcywgcXVlcnlDb25maWcuc2VydmljZVR5cGUpXG4gICAgICAgICAgLnN1YnNjcmliZShwYXlsb2FkID0+IHRoaXMuZm9ybWF0ZXJSZXNwb25jZShwYXlsb2FkLnJlc3VsdCkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFF1ZXJ5Q29uZmlndXJhdGlvbihxdWVyeTogc3RyaW5nKTogeyBlbmRwb2ludDogc3RyaW5nOyBwYXJhbXM6IGFueTsgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlIH0ge1xuICAgIGNvbnN0IHF1ZXJ5U3RyYXRlZ2llcyA9IFtcbiAgICAgIHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmlzVGltZXRyYWNraW5nU2l0dWF0aW9uLFxuICAgICAgICBlbmRwb2ludDogJ2F1dG9jb21wbGV0ZVRpbWV0cmFja2luZ1NpdHVhdGlvbicsXG4gICAgICAgIHBhcmFtczogKCkgPT4gKHtcbiAgICAgICAgICB2YWx1ZVNlYXJjaDogcXVlcnksXG4gICAgICAgICAgcmVmZXJlbmNlRGF0ZTogdGhpcy5yZWZlcmVuY2VEYXRlLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VydmljZVR5cGU6IHRoaXMuc2VydmljZVR5cGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMuaXNEaXNtaXNzYWxSZWFzb24sXG4gICAgICAgIGVuZHBvaW50OiAnYXV0b2NvbXBsZXRlRGlzbWlzc2FsUmVhc29uJyxcbiAgICAgICAgcGFyYW1zOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyYW1zID0geyB2YWx1ZVNlYXJjaDogcXVlcnkgfTtcbiAgICAgICAgICBpZiAodGhpcy5yZWZlcmVuY2VEYXRlKSB7XG4gICAgICAgICAgICBwYXJhbXNbJ3JlZmVyZW5jZURhdGUnXSA9IHRoaXMucmVmZXJlbmNlRGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICAgICAgfSxcbiAgICAgICAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlLkdFTkVSQUxfUkVHSVNURVIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjb25kaXRpb246ICgpID0+IHRoaXMudXNpbmdUeXBlICYmIHRoaXMudXNpbmdUeXBlLmxlbmd0aCxcbiAgICAgICAgZW5kcG9pbnQ6ICdhdXRvY29tcGxldGVPdGhlckNvbXBhbnlGaWx0ZXJVc2luZ1R5cGUnLFxuICAgICAgICBwYXJhbXM6ICgpID0+ICh7XG4gICAgICAgICAgc2VhcmNoVGV4dDogcXVlcnksXG4gICAgICAgICAgdXNpbmdUeXBlOiB0aGlzLnVzaW5nVHlwZSxcbiAgICAgICAgfSksXG4gICAgICAgIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmlzRGVwYXJ0bWVudEZyb21Db21wYW55LFxuICAgICAgICBlbmRwb2ludDogJ2F1dG9jb21wbGV0ZURlcGFydG1lbnRRdWVyeScsXG4gICAgICAgIHBhcmFtczogKCkgPT4gKHtcbiAgICAgICAgICBzZWFyY2hUZXh0OiBxdWVyeSxcbiAgICAgICAgICBjb21wYW55SWQ6IHRoaXMuY29tcGFueUlkLFxuICAgICAgICAgIHJlZmVyZW5jZURhdGU6IHRoaXMucmVmZXJlbmNlRGF0ZSxcbiAgICAgICAgfSksXG4gICAgICAgIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmlzU2l0dWF0aW9uRGVmaW5pdGlvbixcbiAgICAgICAgZW5kcG9pbnQ6ICdhdXRvY29tcGxldGVTaXR1YXRpb25EZWZpbml0aW9uUXVlcnknLFxuICAgICAgICBwYXJhbXM6ICgpID0+ICh7IHNlYXJjaFRleHQ6IHF1ZXJ5IH0pLFxuICAgICAgICBzZXJ2aWNlVHlwZTogU2VydmljZVR5cGUuT1JHQU5JWkFUSU9OX1JFR0lTVEVSLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmlzV2FnZXR5cGUsXG4gICAgICAgIGVuZHBvaW50OiAnYXV0b2NvbXBsZXRlV2FnZXR5cGVRdWVyeScsXG4gICAgICAgIHBhcmFtczogKCkgPT4gKHtcbiAgICAgICAgICBzZWFyY2hUZXh0OiBxdWVyeSxcbiAgICAgICAgICBjb21wYW55SWQ6IHRoaXMuY29tcGFueUlkLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VydmljZVR5cGU6IFNlcnZpY2VUeXBlLkVOVFJZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY29uZGl0aW9uOiAoKSA9PiB0aGlzLmlzVHJhbnNwb3J0YXRpb25Wb3VjaGVyU2NhbGVHcm91cCxcbiAgICAgICAgZW5kcG9pbnQ6ICdhdXRvY29tcGxldGVUcmFuc3BvcnRhdGlvblZvdWNoZXJTY2FsZUdyb3VwUXVlcnknLFxuICAgICAgICBwYXJhbXM6ICgpID0+ICh7IHNlYXJjaFRleHQ6IHF1ZXJ5IH0pLFxuICAgICAgICBzZXJ2aWNlVHlwZTogU2VydmljZVR5cGUuR0VORVJBTF9SRUdJU1RFUixcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gcXVlcnlTdHJhdGVnaWVzLmZpbmQocyA9PiBzLmNvbmRpdGlvbigpKTtcbiAgICBcbiAgICBpZiAoc3RyYXRlZ3kpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVuZHBvaW50OiBzdHJhdGVneS5lbmRwb2ludCxcbiAgICAgICAgcGFyYW1zOiBzdHJhdGVneS5wYXJhbXMoKSxcbiAgICAgICAgc2VydmljZVR5cGU6IHN0cmF0ZWd5LnNlcnZpY2VUeXBlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZW5kcG9pbnQ6ICdhdXRvY29tcGxldGUnLFxuICAgICAgcGFyYW1zOiB0aGlzLmdldFBhcmFtc1Jlc3QocXVlcnkpLFxuICAgICAgc2VydmljZVR5cGU6IHRoaXMuc2VydmljZVR5cGUsXG4gICAgfTtcbiAgfVxuXG4gIGZvcm1hdGVyUmVzcG9uY2UocmVzdWx0KSB7XG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgIGNvbnN0IHZhbHNSZXN1bHQgPSBbXTtcbiAgICByZXN1bHQubWFwKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlQ29uY2F0ID0ge1xuICAgICAgICB0YWJsZUlkOiB2YWx1ZS50YWJsZUlkLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5pc1RpbWV0cmFja2luZ1NpdHVhdGlvbiB8fCB0aGlzLmlzRGlzbWlzc2FsUmVhc29uIHx8ICh0aGlzLnVzaW5nVHlwZSAmJiB0aGlzLnVzaW5nVHlwZS5sZW5ndGgpKSB7XG4gICAgICAgIGlmICh0aGlzLmtleVRvRXhjbHVkZS5pbmNsdWRlcyh2YWx1ZS5maWVsZHMgJiYgdmFsdWUuZmllbGRzWzJdICYmIHZhbHVlLmZpZWxkc1syXS52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmllbGROYW1lID0gJyc7XG5cbiAgICAgICAgdmFsdWUuZmllbGRzLm1hcCh2YWwgPT4ge1xuICAgICAgICAgIHZhbHVlQ29uY2F0W3ZhbC5uYW1lXSA9IHZhbC52YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZmllbGROYW1lICs9IHZhbHVlLmZpZWxkcy5maWx0ZXIodmFsID0+IHZhbC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdjb2RlJykubWFwKGNvZGUgPT4gKGNvZGUgPyAoY29kZS52YWx1ZSArPSAnIC0gJykgOiAnJykpWzBdO1xuICAgICAgICBpZiAodGhpcy51c2luZ1R5cGUgJiYgdGhpcy51c2luZ1R5cGUubGVuZ3RoICYmICghZmllbGROYW1lIHx8IGZpZWxkTmFtZSA9PT0gJ3VuZGVmaW5lZCcpKSB7XG4gICAgICAgICAgZmllbGROYW1lID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGROYW1lICs9IHZhbHVlLmZpZWxkcy5maWx0ZXIodmFsID0+IHZhbC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICduYW1lJykubWFwKG5hbWUgPT4gKG5hbWUgPyBuYW1lLnZhbHVlIDogJycpKVswXTtcblxuICAgICAgICB2YWx1ZUNvbmNhdC5uYW1lID0gZmllbGROYW1lO1xuICAgICAgICB2YWxzUmVzdWx0LnB1c2godmFsdWVDb25jYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUuZmllbGRzLm1hcCh2YWwgPT4ge1xuICAgICAgICAgIHZhbHVlQ29uY2F0W3ZhbC5uYW1lXSA9IHZhbC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBmaWVsZE5hbWUgPSAnJztcbiAgICAgICAgaWYgKHRoaXMuY29uY2F0RmllbGRzRm9yTmFtZSkge1xuICAgICAgICAgIHRoaXMuY29uY2F0RmllbGRzRm9yTmFtZS5tYXAodmFsID0+IHtcbiAgICAgICAgICAgIC8vIHNlIG8gY2FtcG8gZm9yIGRhdGEsIGZvcm1hdGEgcHJvIGxvY2FsZSBkbyB1c3XDoXJpb1xuICAgICAgICAgICAgaWYgKHZhbC5pbmNsdWRlcygnZGF0ZScpIHx8IHZhbC5pbmNsdWRlcygnQmlydGhkYXknKSkge1xuICAgICAgICAgICAgICB2YWx1ZUNvbmNhdFt2YWxdID0gX21vbWVudCh2YWx1ZUNvbmNhdFt2YWxdKS5mb3JtYXQoJ0REL01NL1lZWVknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkTmFtZSArPSB2YWx1ZUNvbmNhdFt2YWxdICsgJyAtICc7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZmllbGROYW1lID0gZmllbGROYW1lLnNsaWNlKDAsIC0zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5rZXlDb2RlKSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgKz0gdmFsdWVDb25jYXRbdGhpcy5rZXlDb2RlXSArICcgLSAnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5rZXlOYW1lKSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgKz0gdmFsdWVDb25jYXRbdGhpcy5rZXlOYW1lXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVDb25jYXQubmFtZSA9IGZpZWxkTmFtZTtcbiAgICAgICAgdmFsc1Jlc3VsdC5wdXNoKHZhbHVlQ29uY2F0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gWy4uLnZhbHNSZXN1bHRdO1xuICAgIHJldHVybiB2YWxzUmVzdWx0O1xuICB9XG5cbiAgZ2V0UGFyYW1zUmVzdChzZWFyY2g6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhYmxlOiB0aGlzLnRhYmxlLFxuICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyxcbiAgICAgIG9yZGVyOiB0aGlzLm9yZGVyLFxuICAgICAgY29uZGl0aW9uczogdGhpcy5nZXRDb25kaXRpb25zUmVzdChzZWFyY2gpLFxuICAgICAgZW5hYmxlRW50aXR5RmlsdGVyczogdGhpcy5lbmFibGVFbnRpdHlGaWx0ZXJzLFxuICAgIH07XG4gIH1cblxuICBnZXRDb25kaXRpb25zUmVzdChzZWFyY2g6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmRpdGlvc1JldHVybiA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGRzOiB0aGlzLmNvbmRpdGlvbnNGaWVsZHMgfHwgdGhpcy5maWVsZHMsXG4gICAgICAgIGV4cHJlc3Npb246ICdMSUtFJyxcbiAgICAgICAgdmFsdWU6IGAke3NlYXJjaH1gLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMuY29uZGl0aW9ucykge1xuICAgICAgdGhpcy5jb25kaXRpb25zLm1hcCh2YWwgPT4ge1xuICAgICAgICBpZiAoWydJU19OVUxMJywgJ0lTX05PVF9OVUxMJywgJ0lTX1RSVUUnXS5pbmNsdWRlcyh2YWwuZXhwcmVzc2lvbikgfHwgaXNWYWxpZCh2YWwudmFsdWUpKSB7XG4gICAgICAgICAgY29uZGl0aW9zUmV0dXJuLnB1c2godmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmRpdGlvc1JldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlcm5pemEgYSBmdW7Dp8OjbyBkZSBzZWxlY3QgZGFzIG9ww6fDtWVzXG4gICAqIDxpbnB1dC1yZXN0LWF1dG8tY29tcGxldGUgKG9uU2VsZWN0KT1cIm9uU2VsZWN0SGFuZGxlKCRldmVudClcIiA+PC9pbnB1dC1yZXN0LWF1dG8tY29tcGxldGU+XG4gICAqIEBwYXJhbSBvcHRpb25cbiAgICovXG4gIHNlbGVjdE9wdGlvbihvcHRpb246IG9iamVjdCkge1xuICAgIHRoaXMub25TZWxlY3QuZW1pdChvcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgb25DbGVhckl0ZW0ob3B0aW9uOiBvYmplY3QpIHtcbiAgICBhd2FpdCB0aGlzLm9uQ2xlYXIuZW1pdChvcHRpb24pO1xuICAgIHRoaXMuZm9ybS5nZXQodGhpcy5uYW1lKS5yZXNldCgpO1xuICB9XG5cbiAgb25CbHVySXRlbShvcHRpb246IG9iamVjdCkge1xuICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duKSB7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgdGhpcy5vbkJsdXIuZW1pdChvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRHJvcGRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xpY2soKSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBhdXRvQ29tcGxldGVPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9Db21wbGV0ZU9iamVjdDtcbiAgfVxufVxuIl19
@@ -0,0 +1,128 @@
1
+ import * as tslib_1 from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { HttpClientService } from '../shared/http-client.service';
4
+ import { CoreFieldType } from '../../core/enums/coreFieldType';
5
+ import { FieldType } from '@seniorsistemas/angular-components';
6
+ import * as _moment from 'moment';
7
+ import { map } from 'rxjs/operators';
8
+ import { ServiceType } from '../../core/enums/serviceType';
9
+ var moment = _moment;
10
+ var AutocompleteService = /** @class */ (function () {
11
+ function AutocompleteService(httpClienteService) {
12
+ this.httpClienteService = httpClienteService;
13
+ }
14
+ AutocompleteService.prototype.getAutoComplete = function (entity, params, searchFields, codeIsString, service) {
15
+ var getParams = this.generateGridParameters(params, searchFields, codeIsString);
16
+ return this.httpClienteService.getAutoComplete(entity, getParams, service)
17
+ .pipe(map(function (result) { return result && result.contents; }));
18
+ };
19
+ AutocompleteService.prototype.getAutoCompleteQuery = function (query, params, service) {
20
+ if (service === void 0) { service = ServiceType.PAYROLL; }
21
+ return this.httpClienteService.query(query, params, service)
22
+ .pipe(map(function (data) { return data && data.result; }));
23
+ };
24
+ /**
25
+ * Gera os parametros de pesquisa via pesquisa na grid
26
+ * @param filterData
27
+ */
28
+ AutocompleteService.prototype.generateGridParameters = function (filterData, searchFields, codeIsString) {
29
+ var _this = this;
30
+ var gridParameters = "";
31
+ Object.keys(filterData).forEach(function (attribute) {
32
+ var filterSearchField = searchFields && searchFields.filter(function (field) { return attribute === field.name; })[0];
33
+ var filterQueryString = null;
34
+ var operatorsQuery = "";
35
+ var searchField = filterSearchField && filterSearchField.type;
36
+ if (!filterSearchField && attribute != CoreFieldType.searchValue)
37
+ searchField = FieldType.String;
38
+ if (!filterSearchField && attribute === CoreFieldType.searchValue)
39
+ searchField = CoreFieldType.searchValue;
40
+ if (gridParameters)
41
+ operatorsQuery = " and ";
42
+ filterQueryString = _this.getParameterByType(searchField, attribute, filterData[attribute], codeIsString);
43
+ if (filterQueryString)
44
+ gridParameters += " " + operatorsQuery + " " + filterQueryString;
45
+ });
46
+ return gridParameters;
47
+ };
48
+ /**
49
+ * Gera a string de consulta CRUD de um campo.
50
+ * @param type Tipo do campo.
51
+ * @param attribute Nome do atribute da entidade
52
+ * @param value Valor do campo
53
+ */
54
+ AutocompleteService.prototype.getParameterByType = function (type, attribute, value, codeIsString) {
55
+ if (!value && type != CoreFieldType.searchValue)
56
+ return attribute + " is null";
57
+ if (value && value === 'not null' && type != CoreFieldType.searchValue)
58
+ return attribute + " is not null";
59
+ switch (type) {
60
+ case FieldType.Date:
61
+ return attribute + " eq '" + moment(value).format('YYYY-MM-DD') + "'";
62
+ case FieldType.Enum:
63
+ return attribute + " eq '" + value + "'";
64
+ case FieldType.Integer:
65
+ return attribute + " eq " + value;
66
+ case FieldType.Autocomplete:
67
+ return attribute + " eq '" + value.id + "'";
68
+ case CoreFieldType.searchValue:
69
+ return "" + this.getParameterBySearchType(value, codeIsString);
70
+ default:
71
+ return this.getSearchFilterString(attribute, value);
72
+ }
73
+ };
74
+ /**
75
+ * Retorna o filtro formatador para ser chamdo no endpoint
76
+ * @param valueFilterSearch valor pra adicionar no filtro
77
+ */
78
+ AutocompleteService.prototype.getParameterBySearchType = function (valueFilterSearch, codeIsString) {
79
+ var e_1, _a;
80
+ var searchFilter = "";
81
+ if (valueFilterSearch) {
82
+ try {
83
+ for (var _b = tslib_1.__values(Object.entries(valueFilterSearch)), _c = _b.next(); !_c.done; _c = _b.next()) {
84
+ var _d = tslib_1.__read(_c.value, 2), key = _d[0], value = _d[1];
85
+ if (key === "code" && Number(value)) {
86
+ var hasQuote = codeIsString ? "'" : "";
87
+ if (searchFilter)
88
+ searchFilter += " or " + key + " eq " + hasQuote + value + hasQuote;
89
+ else
90
+ searchFilter += key + " eq " + hasQuote + value + hasQuote;
91
+ }
92
+ else if (key != "code") {
93
+ if (searchFilter)
94
+ searchFilter += " or " + this.getSearchFilterString(key, value);
95
+ else
96
+ searchFilter += this.getSearchFilterString(key, value);
97
+ }
98
+ }
99
+ }
100
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
101
+ finally {
102
+ try {
103
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
104
+ }
105
+ finally { if (e_1) throw e_1.error; }
106
+ }
107
+ searchFilter = searchFilter ? "(" + searchFilter + ")" : '';
108
+ }
109
+ return searchFilter;
110
+ };
111
+ /**
112
+ * Formata o filtro quando for "Ou"
113
+ * @param attribute Nome do atributo da entidade.
114
+ * @param value Valor da propriedade do objeto.
115
+ */
116
+ AutocompleteService.prototype.getSearchFilterString = function (attribute, value) {
117
+ return "contains(tolower(" + attribute + "), '" + value.toLowerCase() + "')";
118
+ };
119
+ AutocompleteService.ctorParameters = function () { return [
120
+ { type: HttpClientService }
121
+ ]; };
122
+ AutocompleteService = tslib_1.__decorate([
123
+ Injectable()
124
+ ], AutocompleteService);
125
+ return AutocompleteService;
126
+ }());
127
+ export { AutocompleteService };
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJhbnNwb3J0YXRpb24tdm91Y2hlci1zY2FsZS1sb29rdXAvYXV0b2NvbXBsZXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNELElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQUd2QjtJQUVJLDZCQUFvQixrQkFBcUM7UUFBckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtJQUFJLENBQUM7SUFFdkQsNkNBQWUsR0FBdEIsVUFBdUIsTUFBYyxFQUFFLE1BQWMsRUFBRSxZQUFpQixFQUFFLFlBQXFCLEVBQUUsT0FBb0I7UUFDakgsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbEYsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDO2FBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQyxNQUFNLElBQUssT0FBQSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsRUFB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SUFFRDs7OztPQUlHO0lBQ0ssbURBQXFCLEdBQTdCLFVBQThCLFNBQWlCLEVBQUUsS0FBVTtRQUN2RCxPQUFPLHNCQUFvQixTQUFTLFlBQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxPQUFJLENBQUM7SUFDdkUsQ0FBQzs7Z0JBM0Z1QyxpQkFBaUI7O0lBRmhELG1CQUFtQjtRQUQvQixVQUFVLEVBQUU7T0FDQSxtQkFBbUIsQ0E4Ri9CO0lBQUQsMEJBQUM7Q0FBQSxBQTlGRCxJQThGQztTQTlGWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9odHRwLWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvcmVGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2NvcmVGaWVsZFR5cGUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgKiBhcyBfbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZXJ2aWNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvc2VydmljZVR5cGUnO1xuXG5jb25zdCBtb21lbnQgPSBfbW9tZW50O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnRlU2VydmljZTogSHR0cENsaWVudFNlcnZpY2UpIHsgfVxuXG4gICAgcHVibGljIGdldEF1dG9Db21wbGV0ZShlbnRpdHk6IHN0cmluZywgcGFyYW1zOiBvYmplY3QsIHNlYXJjaEZpZWxkczogYW55LCBjb2RlSXNTdHJpbmc6IGJvb2xlYW4sIHNlcnZpY2U6IFNlcnZpY2VUeXBlKSB7XG4gICAgICAgIGNvbnN0IGdldFBhcmFtcyA9IHRoaXMuZ2VuZXJhdGVHcmlkUGFyYW1ldGVycyhwYXJhbXMsIHNlYXJjaEZpZWxkcywgY29kZUlzU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudGVTZXJ2aWNlLmdldEF1dG9Db21wbGV0ZShlbnRpdHksIGdldFBhcmFtcywgc2VydmljZSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzdWx0KSA9PiByZXN1bHQgJiYgcmVzdWx0LmNvbnRlbnRzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF1dG9Db21wbGV0ZVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHBhcmFtczogb2JqZWN0LCBzZXJ2aWNlOiBTZXJ2aWNlVHlwZSA9IFNlcnZpY2VUeXBlLlBBWVJPTEwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudGVTZXJ2aWNlLnF1ZXJ5KHF1ZXJ5LCBwYXJhbXMsIHNlcnZpY2UpXG4gICAgICAgICAgICAucGlwZShtYXAoKGRhdGEpID0+IGRhdGEgJiYgZGF0YS5yZXN1bHQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXJhIG9zIHBhcmFtZXRyb3MgZGUgcGVzcXVpc2EgdmlhIHBlc3F1aXNhIG5hIGdyaWRcbiAgICAgKiBAcGFyYW0gZmlsdGVyRGF0YVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2VuZXJhdGVHcmlkUGFyYW1ldGVycyhmaWx0ZXJEYXRhOiBvYmplY3QsIHNlYXJjaEZpZWxkczogYW55LCBjb2RlSXNTdHJpbmc6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgZ3JpZFBhcmFtZXRlcnMgPSBcIlwiO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWx0ZXJEYXRhKS5mb3JFYWNoKChhdHRyaWJ1dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyU2VhcmNoRmllbGQgPSBzZWFyY2hGaWVsZHMgJiYgc2VhcmNoRmllbGRzLmZpbHRlcihmaWVsZCA9PiBhdHRyaWJ1dGUgPT09IGZpZWxkLm5hbWUpWzBdO1xuICAgICAgICAgICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gbnVsbDtcbiAgICAgICAgICAgIGxldCBvcGVyYXRvcnNRdWVyeSA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgc2VhcmNoRmllbGQ6IGFueSA9IGZpbHRlclNlYXJjaEZpZWxkICYmIGZpbHRlclNlYXJjaEZpZWxkLnR5cGU7XG4gICAgICAgICAgICBpZiAoIWZpbHRlclNlYXJjaEZpZWxkICYmIGF0dHJpYnV0ZSAhPSBDb3JlRmllbGRUeXBlLnNlYXJjaFZhbHVlKSBzZWFyY2hGaWVsZCA9IEZpZWxkVHlwZS5TdHJpbmc7XG4gICAgICAgICAgICBpZiAoIWZpbHRlclNlYXJjaEZpZWxkICYmIGF0dHJpYnV0ZSA9PT0gQ29yZUZpZWxkVHlwZS5zZWFyY2hWYWx1ZSkgc2VhcmNoRmllbGQgPSBDb3JlRmllbGRUeXBlLnNlYXJjaFZhbHVlO1xuICAgICAgICAgICAgaWYgKGdyaWRQYXJhbWV0ZXJzKSBvcGVyYXRvcnNRdWVyeSA9IFwiIGFuZCBcIjtcbiAgICAgICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5nZXRQYXJhbWV0ZXJCeVR5cGUoc2VhcmNoRmllbGQsIGF0dHJpYnV0ZSwgZmlsdGVyRGF0YVthdHRyaWJ1dGVdLCBjb2RlSXNTdHJpbmcpO1xuICAgICAgICAgICAgaWYgKGZpbHRlclF1ZXJ5U3RyaW5nKSBncmlkUGFyYW1ldGVycyArPSBgICR7b3BlcmF0b3JzUXVlcnl9ICR7ZmlsdGVyUXVlcnlTdHJpbmd9YDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBncmlkUGFyYW1ldGVycztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXJhIGEgc3RyaW5nIGRlIGNvbnN1bHRhIENSVUQgZGUgdW0gY2FtcG8uXG4gICAgICogQHBhcmFtIHR5cGUgVGlwbyBkbyBjYW1wby5cbiAgICAgKiBAcGFyYW0gYXR0cmlidXRlIE5vbWUgZG8gYXRyaWJ1dGUgZGEgZW50aWRhZGVcbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsb3IgZG8gY2FtcG9cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFBhcmFtZXRlckJ5VHlwZSh0eXBlOiBhbnksIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZTogYW55LCBjb2RlSXNTdHJpbmc6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXZhbHVlICYmIHR5cGUgIT0gQ29yZUZpZWxkVHlwZS5zZWFyY2hWYWx1ZSkgcmV0dXJuIGAke2F0dHJpYnV0ZX0gaXMgbnVsbGA7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA9PT0gJ25vdCBudWxsJyAmJiB0eXBlICE9IENvcmVGaWVsZFR5cGUuc2VhcmNoVmFsdWUpIHJldHVybiBgJHthdHRyaWJ1dGV9IGlzIG5vdCBudWxsYDtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHthdHRyaWJ1dGV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyl9J2A7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5FbnVtOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHthdHRyaWJ1dGV9IGVxICcke3ZhbHVlfSdgO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuSW50ZWdlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7YXR0cmlidXRlfSBlcSAke3ZhbHVlfWA7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5BdXRvY29tcGxldGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2F0dHJpYnV0ZX0gZXEgJyR7dmFsdWUuaWR9J2A7XG4gICAgICAgICAgICBjYXNlIENvcmVGaWVsZFR5cGUuc2VhcmNoVmFsdWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0UGFyYW1ldGVyQnlTZWFyY2hUeXBlKHZhbHVlLCBjb2RlSXNTdHJpbmcpfWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlYXJjaEZpbHRlclN0cmluZyhhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldG9ybmEgbyBmaWx0cm8gZm9ybWF0YWRvciBwYXJhIHNlciBjaGFtZG8gbm8gZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gdmFsdWVGaWx0ZXJTZWFyY2ggdmFsb3IgcHJhIGFkaWNpb25hciBubyBmaWx0cm9cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFBhcmFtZXRlckJ5U2VhcmNoVHlwZSh2YWx1ZUZpbHRlclNlYXJjaDogYW55LCBjb2RlSXNTdHJpbmc6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgc2VhcmNoRmlsdGVyID0gXCJcIjtcbiAgICAgICAgaWYgKHZhbHVlRmlsdGVyU2VhcmNoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZUZpbHRlclNlYXJjaCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBcImNvZGVcIiAmJiBOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1F1b3RlID0gY29kZUlzU3RyaW5nID8gXCInXCIgOiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoRmlsdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoRmlsdGVyICs9IGAgb3IgJHtrZXl9IGVxICR7aGFzUXVvdGV9JHt2YWx1ZX0ke2hhc1F1b3RlfWA7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEZpbHRlciArPSBgJHtrZXl9IGVxICR7aGFzUXVvdGV9JHt2YWx1ZX0ke2hhc1F1b3RlfWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgIT0gXCJjb2RlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaEZpbHRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEZpbHRlciArPSBgIG9yICR7dGhpcy5nZXRTZWFyY2hGaWx0ZXJTdHJpbmcoa2V5LCB2YWx1ZSl9YDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoRmlsdGVyICs9IHRoaXMuZ2V0U2VhcmNoRmlsdGVyU3RyaW5nKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlYXJjaEZpbHRlciA9IHNlYXJjaEZpbHRlciA/IGAoJHtzZWFyY2hGaWx0ZXJ9KWAgOiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VhcmNoRmlsdGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvcm1hdGEgbyBmaWx0cm8gcXVhbmRvIGZvciBcIk91XCJcbiAgICAgKiBAcGFyYW0gYXR0cmlidXRlIE5vbWUgZG8gYXRyaWJ1dG8gZGEgZW50aWRhZGUuXG4gICAgICogQHBhcmFtIHZhbHVlIFZhbG9yIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0by5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFNlYXJjaEZpbHRlclN0cmluZyhhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgY29udGFpbnModG9sb3dlcigke2F0dHJpYnV0ZX0pLCAnJHt2YWx1ZS50b0xvd2VyQ2FzZSgpfScpYDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from "./transportation-voucher-scale-lookup.component";
2
+ export * from "./transportation-voucher-scale-lookup.module";
3
+ export * from "./transportation-voucher-scale-lookup.dto";
4
+ export * from "./autocomplete.service";
5
+ export * from "./lookup.service";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJhbnNwb3J0YXRpb24tdm91Y2hlci1zY2FsZS1sb29rdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdHJhbnNwb3J0YXRpb24tdm91Y2hlci1zY2FsZS1sb29rdXAuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90cmFuc3BvcnRhdGlvbi12b3VjaGVyLXNjYWxlLWxvb2t1cC5tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RyYW5zcG9ydGF0aW9uLXZvdWNoZXItc2NhbGUtbG9va3VwLmR0b1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXV0b2NvbXBsZXRlLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xvb2t1cC5zZXJ2aWNlXCI7XG4iXX0=
@@ -0,0 +1,152 @@
1
+ import * as tslib_1 from "tslib";
2
+ import { HttpClient } from "@angular/common/http";
3
+ import { Injectable } from "@angular/core";
4
+ import { TranslateService } from "@ngx-translate/core";
5
+ import { FieldType } from "@seniorsistemas/angular-components";
6
+ import * as moment_ from "moment";
7
+ import { MessageService } from "primeng/api";
8
+ import { throwError } from "rxjs";
9
+ import { map, catchError } from "rxjs/operators";
10
+ var moment = moment_;
11
+ var LookupService = /** @class */ (function () {
12
+ function LookupService(http, messageService, translateService) {
13
+ this.http = http;
14
+ this.messageService = messageService;
15
+ this.translateService = translateService;
16
+ }
17
+ LookupService.prototype.lookupRequestPost = function (httpPostParams, endpoint, concatFields, lookupDisplayField) {
18
+ if (concatFields === void 0) { concatFields = null; }
19
+ this.httpPostParams = httpPostParams;
20
+ this.postConfigPageSize(httpPostParams);
21
+ this.lookupDisplayField = lookupDisplayField;
22
+ this.concatFields = concatFields;
23
+ return this.postDataLookup(endpoint);
24
+ };
25
+ LookupService.prototype.postConfigPageSize = function (httpPostParams) {
26
+ if (httpPostParams) {
27
+ this.httpPostParams.page.size = httpPostParams.page && httpPostParams.page.size ? httpPostParams.page.size : 10;
28
+ this.httpPostParams.page.current = httpPostParams.page && httpPostParams.page.current ? httpPostParams.page.current : 0;
29
+ }
30
+ };
31
+ /**
32
+ * POST
33
+ * @param endpoint Busca e faz o tratamento dos dados do lookup.
34
+ * @param httpParams HttpParams
35
+ */
36
+ LookupService.prototype.postDataLookup = function (endpoint) {
37
+ var _this = this;
38
+ return this.postUrlDataLookup(endpoint, this.httpPostParams).pipe(map(function (payload) {
39
+ var contents = payload.contents;
40
+ if (_this.concatFields && _this.concatFields.length) {
41
+ contents.map(function (value) {
42
+ if (_this.concatOtherFields) {
43
+ _this.convertGridFieldValue(value);
44
+ }
45
+ value[_this.lookupDisplayField] = _this.generateDisplayFieldValue(tslib_1.__assign({}, value));
46
+ });
47
+ }
48
+ return payload;
49
+ }));
50
+ };
51
+ /**
52
+ * Converte o valor do campo para apresentação no lookup.
53
+ *
54
+ * @param content Valor do campo para conversão.
55
+ * @param field FormField do campo.
56
+ */
57
+ LookupService.prototype.convertLookupFieldValue = function (content, field) {
58
+ if (content) {
59
+ switch (field.type) {
60
+ case FieldType.Date:
61
+ content = moment(content).format("L");
62
+ break;
63
+ case FieldType.Enum:
64
+ var enumValue = field.options.filter(function (enumeration) { return enumeration.value === content; })[0];
65
+ content = enumValue ? enumValue.label : content;
66
+ break;
67
+ }
68
+ }
69
+ return content;
70
+ };
71
+ /**
72
+ * Converte os dados para visualização na grid
73
+ * @param content
74
+ */
75
+ LookupService.prototype.convertGridFieldValue = function (content) {
76
+ if (content) {
77
+ this.concatOtherFields.forEach(function (field) {
78
+ switch (field.type) {
79
+ case FieldType.Enum:
80
+ var enumValue = field.options.filter(function (enumeration) { return enumeration.value === content[field.name]; })[0];
81
+ content[field.name] = enumValue ? enumValue.label : content[field.name];
82
+ break;
83
+ }
84
+ });
85
+ }
86
+ };
87
+ /**
88
+ * Faz a concatenação de valores do registro para ser apresentado no lookup ao selecionar o dado.
89
+ * @param contentValue Valor do registro.
90
+ */
91
+ LookupService.prototype.generateDisplayFieldValue = function (contentValue) {
92
+ var _this = this;
93
+ var displayField = "";
94
+ this.concatFields.forEach(function (field) {
95
+ var fieldValue = _this.convertLookupFieldValue(contentValue[field.name], field);
96
+ if (fieldValue) {
97
+ if (displayField) {
98
+ displayField += " - " + fieldValue;
99
+ }
100
+ else {
101
+ displayField = fieldValue;
102
+ }
103
+ }
104
+ });
105
+ return displayField;
106
+ };
107
+ /**
108
+ * Faz a requisição POST na URL do lookup.
109
+ * @param endpoint - URL do endpoint.
110
+ * @param httpParams - Parâmetros HTTP.
111
+ */
112
+ LookupService.prototype.postUrlDataLookup = function (endpoint, httpParams) {
113
+ var _this = this;
114
+ if (httpParams) {
115
+ return this.http.post("" + endpoint, tslib_1.__assign({}, httpParams)).pipe(catchError(function (exception) {
116
+ if (exception.status === 403) {
117
+ _this.messageService.add({
118
+ severity: "error",
119
+ summary: _this.translateService.instant("hcm.payroll.error"),
120
+ detail: _this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
121
+ sticky: true,
122
+ });
123
+ }
124
+ return throwError(exception);
125
+ }));
126
+ }
127
+ else {
128
+ return this.http.post("" + endpoint, {}).pipe(catchError(function (exception) {
129
+ if (exception.status === 403) {
130
+ _this.messageService.add({
131
+ severity: "error",
132
+ summary: _this.translateService.instant("hcm.payroll.error"),
133
+ detail: _this.translateService.instant("hcm.payroll.permission_error_not_allowed"),
134
+ sticky: true,
135
+ });
136
+ }
137
+ return throwError(exception);
138
+ }));
139
+ }
140
+ };
141
+ LookupService.ctorParameters = function () { return [
142
+ { type: HttpClient },
143
+ { type: MessageService },
144
+ { type: TranslateService }
145
+ ]; };
146
+ LookupService = tslib_1.__decorate([
147
+ Injectable()
148
+ ], LookupService);
149
+ return LookupService;
150
+ }());
151
+ export { LookupService };
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1wZXNzb2FzL3BheXJvbGwtY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvdHJhbnNwb3J0YXRpb24tdm91Y2hlci1zY2FsZS1sb29rdXAvbG9va3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxJQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFHdkI7SUFRSSx1QkFBb0IsSUFBZ0IsRUFBVSxjQUE4QixFQUFVLGdCQUFrQztRQUFwRyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN4SCxDQUFDO0lBRUQseUNBQWlCLEdBQWpCLFVBQWtCLGNBQW1CLEVBQUUsUUFBZ0IsRUFBRSxZQUFxQyxFQUFFLGtCQUEwQjtRQUFqRSw2QkFBQSxFQUFBLG1CQUFxQztRQUMxRixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGtC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LEVBQUUsT0FBTzt3QkFDakIsT0FBTyxFQUFFLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7d0JBQzNELE1BQU0sRUFBRSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDO3dCQUNqRixNQUFNLEVBQUUsSUFBSTtxQkFDZixDQUFDLENBQUM7aUJBQ047Z0JBQ0QsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztTQUNMO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUcsUUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDekMsVUFBVSxDQUFDLFVBQUMsU0FBYztnQkFDdEIsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtvQkFDMUIsS0FBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7d0JBQ3BCLFFBQVEsRUFBRSxPQUFPO3dCQUNqQixPQUFPLEVBQUUsS0FBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDM0QsTUFBTSxFQUFFLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsMENBQTBDLENBQUM7d0JBQ2pGLE1BQU0sRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQztpQkFDTjtnQkFDRCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7SUFDTCxDQUFDOztnQkF6SXlCLFVBQVU7Z0JBQTBCLGNBQWM7Z0JBQTRCLGdCQUFnQjs7SUFSL0csYUFBYTtRQUR6QixVQUFVLEVBQUU7T0FDQSxhQUFhLENBa0p6QjtJQUFELG9CQUFDO0NBQUEsQUFsSkQsSUFrSkM7U0FsSlksYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZvcm1GaWVsZCB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkRhdGEgfSBmcm9tIFwiLi4vLi4vY29yZS9pbnRlcmZhY2VzXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb29rdXBTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgY29uY2F0RmllbGRzOiBhbnk7XG4gICAgcHJpdmF0ZSBjb25jYXRPdGhlckZpZWxkczogYW55O1xuICAgIHByaXZhdGUgbG9va3VwRGlzcGxheUZpZWxkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBodHRwUG9zdFBhcmFtczogYW55O1xuICAgIHByaXZhdGUgcGFnZTogUGFnaW5hdGlvbkRhdGE7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBsb29rdXBSZXF1ZXN0UG9zdChodHRwUG9zdFBhcmFtczogYW55LCBlbmRwb2ludDogc3RyaW5nLCBjb25jYXRGaWVsZHM6IEFycmF5PEZvcm1GaWVsZD4gPSBudWxsLCBsb29rdXBEaXNwbGF5RmllbGQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmh0dHBQb3N0UGFyYW1zID0gaHR0cFBvc3RQYXJhbXM7XG4gICAgICAgIHRoaXMucG9zdENvbmZpZ1BhZ2VTaXplKGh0dHBQb3N0UGFyYW1zKTtcbiAgICAgICAgdGhpcy5sb29rdXBEaXNwbGF5RmllbGQgPSBsb29rdXBEaXNwbGF5RmllbGQ7XG4gICAgICAgIHRoaXMuY29uY2F0RmllbGRzID0gY29uY2F0RmllbGRzO1xuICAgICAgICByZXR1cm4gdGhpcy5wb3N0RGF0YUxvb2t1cChlbmRwb2ludCk7XG4gICAgfVxuXG4gICAgcG9zdENvbmZpZ1BhZ2VTaXplKGh0dHBQb3N0UGFyYW1zOiBhbnkpIHtcbiAgICAgICAgaWYgKGh0dHBQb3N0UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLmh0dHBQb3N0UGFyYW1zLnBhZ2Uuc2l6ZSA9IGh0dHBQb3N0UGFyYW1zLnBhZ2UgJiYgaHR0cFBvc3RQYXJhbXMucGFnZS5zaXplID8gaHR0cFBvc3RQYXJhbXMucGFnZS5zaXplIDogMTA7XG4gICAgICAgICAgICB0aGlzLmh0dHBQb3N0UGFyYW1zLnBhZ2UuY3VycmVudCA9IGh0dHBQb3N0UGFyYW1zLnBhZ2UgJiYgaHR0cFBvc3RQYXJhbXMucGFnZS5jdXJyZW50ID8gaHR0cFBvc3RQYXJhbXMucGFnZS5jdXJyZW50IDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBPU1RcbiAgICAgKiBAcGFyYW0gZW5kcG9pbnQgQnVzY2EgZSBmYXogbyB0cmF0YW1lbnRvIGRvcyBkYWRvcyBkbyBsb29rdXAuXG4gICAgICogQHBhcmFtIGh0dHBQYXJhbXMgSHR0cFBhcmFtc1xuICAgICAqL1xuICAgIHByaXZhdGUgcG9zdERhdGFMb29rdXAoZW5kcG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdFVybERhdGFMb29rdXAoZW5kcG9pbnQsIHRoaXMuaHR0cFBvc3RQYXJhbXMpLnBpcGUoXG4gICAgICAgICAgbWFwKChwYXlsb2FkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjb250ZW50cyB9ID0gcGF5bG9hZDtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5jb25jYXRGaWVsZHMgJiYgdGhpcy5jb25jYXRGaWVsZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICBjb250ZW50cy5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmNhdE90aGVyRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udmVydEdyaWRGaWVsZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVbdGhpcy5sb29rdXBEaXNwbGF5RmllbGRdID0gdGhpcy5nZW5lcmF0ZURpc3BsYXlGaWVsZFZhbHVlKHsgLi4udmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRlIG8gdmFsb3IgZG8gY2FtcG8gcGFyYSBhcHJlc2VudGHDp8OjbyBubyBsb29rdXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGVudCBWYWxvciBkbyBjYW1wbyBwYXJhIGNvbnZlcnPDo28uXG4gICAgICogQHBhcmFtIGZpZWxkIEZvcm1GaWVsZCBkbyBjYW1wby5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbnZlcnRMb29rdXBGaWVsZFZhbHVlKGNvbnRlbnQ6IGFueSwgZmllbGQ6IEZvcm1GaWVsZCk6IGFueSB7XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gbW9tZW50KGNvbnRlbnQpLmZvcm1hdChcIkxcIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW1WYWx1ZSA9IGZpZWxkLm9wdGlvbnMuZmlsdGVyKChlbnVtZXJhdGlvbjogYW55KSA9PiBlbnVtZXJhdGlvbi52YWx1ZSA9PT0gY29udGVudClbMF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBlbnVtVmFsdWUgPyBlbnVtVmFsdWUubGFiZWwgOiBjb250ZW50O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRlIG9zIGRhZG9zIHBhcmEgdmlzdWFsaXphw6fDo28gbmEgZ3JpZFxuICAgICAqIEBwYXJhbSBjb250ZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0R3JpZEZpZWxkVmFsdWUoY29udGVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmNhdE90aGVyRmllbGRzLmZvckVhY2goKGZpZWxkOiBGb3JtRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRW51bTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudW1WYWx1ZSA9IGZpZWxkLm9wdGlvbnMuZmlsdGVyKChlbnVtZXJhdGlvbjogYW55KSA9PiBlbnVtZXJhdGlvbi52YWx1ZSA9PT0gY29udGVudFtmaWVsZC5uYW1lXSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50W2ZpZWxkLm5hbWVdID0gZW51bVZhbHVlID8gZW51bVZhbHVlLmxhYmVsIDogY29udGVudFtmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmF6IGEgY29uY2F0ZW5hw6fDo28gZGUgdmFsb3JlcyBkbyByZWdpc3RybyBwYXJhIHNlciBhcHJlc2VudGFkbyBubyBsb29rdXAgYW8gc2VsZWNpb25hciBvIGRhZG8uXG4gICAgICogQHBhcmFtIGNvbnRlbnRWYWx1ZSBWYWxvciBkbyByZWdpc3Ryby5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdlbmVyYXRlRGlzcGxheUZpZWxkVmFsdWUoY29udGVudFZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgZGlzcGxheUZpZWxkID0gXCJcIjtcblxuICAgICAgICB0aGlzLmNvbmNhdEZpZWxkcy5mb3JFYWNoKChmaWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5jb252ZXJ0TG9va3VwRmllbGRWYWx1ZShjb250ZW50VmFsdWVbZmllbGQubmFtZV0sIGZpZWxkKTtcbiAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3BsYXlGaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQgKz0gYCAtICR7IGZpZWxkVmFsdWUgfWA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkID0gZmllbGRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBkaXNwbGF5RmllbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmF6IGEgcmVxdWlzacOnw6NvIFBPU1QgbmEgVVJMIGRvIGxvb2t1cC5cbiAgICAgKiBAcGFyYW0gZW5kcG9pbnQgLSBVUkwgZG8gZW5kcG9pbnQuXG4gICAgICogQHBhcmFtIGh0dHBQYXJhbXMgLSBQYXLDom1ldHJvcyBIVFRQLlxuICAgICAqL1xuICAgIHByaXZhdGUgcG9zdFVybERhdGFMb29rdXAoZW5kcG9pbnQ6IHN0cmluZywgaHR0cFBhcmFtczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKGh0dHBQYXJhbXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtlbmRwb2ludH1gLCB7IC4uLmh0dHBQYXJhbXMgfSkucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChleGNlcHRpb246IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24uc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogXCJlcnJvclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiaGNtLnBheXJvbGwuZXJyb3JcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLnBlcm1pc3Npb25fZXJyb3Jfbm90X2FsbG93ZWRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhjZXB0aW9uKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7ZW5kcG9pbnR9YCwge30pLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXhjZXB0aW9uOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk6IFwiZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImhjbS5wYXlyb2xsLmVycm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJoY20ucGF5cm9sbC5wZXJtaXNzaW9uX2Vycm9yX25vdF9hbGxvd2VkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19