info-library 2.16.0-beta → 3.0.0-beta

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 (79) hide show
  1. package/controls/autocomplete/autocomplete.component.d.ts +2 -1
  2. package/controls/date/date.component.d.ts +2 -1
  3. package/controls/date-month/date-month.component.d.ts +2 -1
  4. package/controls/grid/grid.component.d.ts +5 -5
  5. package/controls/input/input.component.d.ts +13 -3
  6. package/controls/multi-select/multi-select.component.d.ts +3 -1
  7. package/controls/select/select.component.d.ts +2 -1
  8. package/directives/unmask.directive.d.ts +2 -1
  9. package/esm2022/controls/alert/alert.component.mjs +8 -10
  10. package/esm2022/controls/autocomplete/autocomplete.component.mjs +33 -26
  11. package/esm2022/controls/big-checkbox/big-checkbox.component.mjs +27 -25
  12. package/esm2022/controls/card/card.component.mjs +12 -6
  13. package/esm2022/controls/card-menu/card-menu.component.mjs +14 -16
  14. package/esm2022/controls/checkbox/checkbox.component.mjs +13 -13
  15. package/esm2022/controls/chips/chips.component.mjs +12 -11
  16. package/esm2022/controls/date/date.component.mjs +64 -32
  17. package/esm2022/controls/date-month/date-month.component.mjs +64 -31
  18. package/esm2022/controls/editor/editor.component.mjs +35 -31
  19. package/esm2022/controls/grid/grid.component.mjs +529 -511
  20. package/esm2022/controls/input/input.component.mjs +146 -71
  21. package/esm2022/controls/input-list/input-list.component.mjs +16 -15
  22. package/esm2022/controls/list-checkbox/list-checkbox.component.mjs +16 -12
  23. package/esm2022/controls/message/message.component.mjs +9 -11
  24. package/esm2022/controls/multi-select/multi-select.component.mjs +35 -22
  25. package/esm2022/controls/paginator/paginator.component.mjs +15 -16
  26. package/esm2022/controls/select/select.component.mjs +32 -23
  27. package/esm2022/controls/timeline/timeline.component.mjs +15 -16
  28. package/esm2022/directives/mask.directive.mjs +17 -8
  29. package/esm2022/directives/unmask.directive.mjs +14 -7
  30. package/esm2022/info-library.module.mjs +10 -5
  31. package/esm2022/layouts/dialog/dialog.component.mjs +10 -6
  32. package/esm2022/layouts/filter/filter.component.mjs +179 -0
  33. package/esm2022/layouts/loading/loading.component.mjs +7 -9
  34. package/esm2022/layouts/main/main.component.mjs +101 -54
  35. package/esm2022/layouts/modal/modal.component.mjs +37 -22
  36. package/esm2022/layouts/pagebar/pagebar.component.mjs +125 -97
  37. package/esm2022/layouts/sidebar/sidebar.component.mjs +152 -100
  38. package/esm2022/layouts/topbar/topbar.component.mjs +417 -253
  39. package/esm2022/layouts/topmenu/topmenu.component.mjs +20 -12
  40. package/esm2022/model/app-config.model.mjs +12 -12
  41. package/esm2022/model/data-access.model.mjs +10 -8
  42. package/esm2022/model/dialog-result.model.mjs +3 -2
  43. package/esm2022/model/dialog.model.mjs +13 -14
  44. package/esm2022/model/form-prop.model.mjs +8 -6
  45. package/esm2022/model/grid-button.model.mjs +12 -7
  46. package/esm2022/model/last-search.model.mjs +5 -7
  47. package/esm2022/model/login.model.mjs +4 -2
  48. package/esm2022/model/method-grid-button.model.mjs +4 -2
  49. package/esm2022/model/notification.model.mjs +9 -5
  50. package/esm2022/model/pagebar-buttons.model.mjs +6 -6
  51. package/esm2022/model/permission.model.mjs +4 -1
  52. package/esm2022/model/platform.model.mjs +13 -14
  53. package/esm2022/model/session.model.mjs +25 -6
  54. package/esm2022/pipe/mask.pipe.mjs +10 -6
  55. package/esm2022/pipe/translate.pipe.mjs +4 -3
  56. package/esm2022/public_api.mjs +2 -1
  57. package/esm2022/service/authentication.service.mjs +89 -36
  58. package/esm2022/service/configuration.service.mjs +41 -10
  59. package/esm2022/service/data.service.mjs +38 -21
  60. package/esm2022/service/theme.service.mjs +16 -6
  61. package/esm2022/service/translate.service.mjs +9 -5
  62. package/esm2022/utils/utilities.mjs +52 -5
  63. package/fesm2022/info-library.mjs +2551 -1649
  64. package/fesm2022/info-library.mjs.map +1 -1
  65. package/info-library-3.0.0-beta.tgz +0 -0
  66. package/info-library.module.d.ts +32 -31
  67. package/layouts/filter/filter.component.d.ts +24 -0
  68. package/layouts/main/main.component.d.ts +4 -0
  69. package/layouts/modal/modal.component.d.ts +1 -0
  70. package/layouts/sidebar/sidebar.component.d.ts +1 -1
  71. package/layouts/topbar/topbar.component.d.ts +4 -1
  72. package/model/app-config.model.d.ts +2 -0
  73. package/model/session.model.d.ts +5 -0
  74. package/package.json +1 -1
  75. package/public_api.d.ts +1 -0
  76. package/service/authentication.service.d.ts +4 -2
  77. package/service/configuration.service.d.ts +4 -1
  78. package/service/data.service.d.ts +2 -0
  79. package/utils/utilities.d.ts +11 -0
@@ -24,6 +24,12 @@ export class Utilities {
24
24
  }
25
25
  return bytes;
26
26
  }
27
+ jsonToEncrypt(object) {
28
+ return this.criptografar(unescape(JSON.stringify(object)));
29
+ }
30
+ decryptToJson(value) {
31
+ return JSON.parse(this.descriptografar(value));
32
+ }
27
33
  openOrDownload(title, blob) {
28
34
  let fileURL = URL.createObjectURL(blob);
29
35
  if (title.indexOf("pdf") > -1)
@@ -117,9 +123,15 @@ export class Utilities {
117
123
  div.innerHTML = texto;
118
124
  return div.innerText || div.textContent;
119
125
  }
126
+ key = CryptoJS.enc.Utf8.parse("GKxLtQg2atgjkrer");
127
+ iv = CryptoJS.enc.Utf8.parse("e0Wg6l5GNdg29dvc");
120
128
  criptografar(texto) {
121
129
  try {
122
- return CryptoJS.AES.encrypt(texto, "GKxLtQg2at").toString();
130
+ return CryptoJS.AES.encrypt(texto, this.key, {
131
+ iv: this.iv,
132
+ mode: CryptoJS.mode.CBC,
133
+ padding: CryptoJS.pad.Pkcs7
134
+ }).toString();
123
135
  }
124
136
  catch (e) {
125
137
  return null;
@@ -127,16 +139,51 @@ export class Utilities {
127
139
  }
128
140
  descriptografar(texto) {
129
141
  try {
130
- return CryptoJS.AES.decrypt(texto, "GKxLtQg2at").toString(CryptoJS.enc.Utf8);
142
+ return CryptoJS.AES.decrypt(texto, this.key, {
143
+ iv: this.iv,
144
+ mode: CryptoJS.mode.CBC,
145
+ padding: CryptoJS.pad.Pkcs7
146
+ }).toString(CryptoJS.enc.Utf8);
131
147
  }
132
148
  catch (e) {
133
149
  return null;
134
150
  }
135
151
  }
136
- /** @nocollapse */ static { this.ɵfac = function Utilities_Factory(t) { return new (t || Utilities)(); }; }
137
- /** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: Utilities, factory: Utilities.ɵfac }); }
152
+ /** @nocollapse */ static ɵfac = function Utilities_Factory(t) { return new (t || Utilities)(); };
153
+ /** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: Utilities, factory: Utilities.ɵfac });
138
154
  }
139
155
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Utilities, [{
140
156
  type: Injectable
141
157
  }], null, null); })();
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy91dGlscy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQzs7QUFHdEMsTUFBTSxPQUFPLFNBQVM7SUFDbEIsT0FBTztRQUNILE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxzQ0FBc0MsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN4SCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBTTtRQUN0QixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqQyxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDbkI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3RCLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMzQjtZQUNELElBQUksUUFBUSxHQUFzQixRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBc0IsQ0FBQztZQUNuRixRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUN4QixRQUFRLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQVc7UUFDdEIsSUFBSSxHQUFHLElBQUksSUFBSTtZQUNYLE9BQU8sRUFBRSxDQUFDO1FBQ2QsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDbEcsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLENBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDckYsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBRSxDQUFDO0lBQ3hGLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFPLENBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSwyQ0FBMkMsRUFBRTtZQUMvRCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLDJDQUEyQyxFQUFFO1lBQy9ELEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsd0NBQXdDLEVBQUU7WUFDNUQsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSx3Q0FBd0MsRUFBRSxDQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLENBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDMUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLENBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtZQUNsRCxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBQzlDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7WUFDakQsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtZQUNsRCxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsc0JBQXNCO1FBQ2xCLE9BQU8sQ0FBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQzVDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDcEMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDL0IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDNUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLENBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDN0IsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxDQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzlCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsT0FBTyxDQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDO1lBQzFCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDO1lBQ3ZCLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sQ0FBRSxFQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBQztZQUN2QyxFQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFDO1lBQzFDLEVBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7WUFDekMsRUFBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBQyxDQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU87UUFDN0IsSUFBSSxDQUFDLEtBQUs7WUFDTixPQUFPO1FBRVgsSUFBSSxPQUFPLEdBQUcsNERBQTRELENBQUM7UUFDM0UsSUFBSSxNQUFNLEdBQWEsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFFLElBQUksUUFBUTtZQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDbkMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlLENBQUMsR0FBVztRQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDcEMsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLO1FBQ2QsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2QyxHQUFHLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUs7UUFDZCxJQUFJO1lBQ0EsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDL0Q7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDakIsSUFBSTtZQUNBLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQzs2RkF4SlEsU0FBUztzR0FBVCxTQUFTLFdBQVQsU0FBUzs7dUZBQVQsU0FBUztjQURyQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0aWVzIHtcclxuICAgIGdldEd1aWQoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xyXG4gICAgICAgICAgICBjb25zdCByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAoIHIgJiAweDMgfCAweDggKTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRHdWlkRW1wdHkoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzR3VpZCh2YWx1ZSkgOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFwiXCIgKyB2YWx1ZSkubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpOiBhbnkge1xyXG4gICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xyXG4gICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlMZW47IGkrKykge1xyXG4gICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH1cclxuXHJcbiAgICBvcGVuT3JEb3dubG9hZCh0aXRsZSwgYmxvYikge1xyXG4gICAgICAgIGxldCBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgaWYgKHRpdGxlLmluZGV4T2YoXCJwZGZcIikgPiAtMSlcclxuICAgICAgICAgICAgd2luZG93Lm9wZW4oZmlsZVVSTCwgdGl0bGUpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudEE6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xyXG4gICAgICAgICAgICBlbGVtZW50QS5ocmVmID0gZmlsZVVSTDtcclxuICAgICAgICAgICAgZWxlbWVudEEuZG93bmxvYWQgPSB0aXRsZTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50QSk7XHJcbiAgICAgICAgICAgIGVsZW1lbnRBLmNsaWNrKCk7ICAgICAgICBcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50QSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZXJBY2VudG9zKHZhbDogc3RyaW5nKSA6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgdmFyIG5vcm1hbGl6ZUZ1bmN0aW9uID0gU3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemUgPyAoc3RyKSA9PiBzdHIubm9ybWFsaXplKCdORkQnKSA6IChzdHIpID0+IHN0cjtcclxuICAgICAgICByZXR1cm4gbm9ybWFsaXplRnVuY3Rpb24odmFsKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1hdG9zKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkVYQ0VMXCIsIE5vbWU6IFwiRXhjZWxcIiwgTWltZVR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIsIEV4dGVuc2FvOiBcInhsc1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQREZcIiwgTm9tZTogXCJQREZcIiwgTWltZVR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIsIEV4dGVuc2FvOiBcInBkZlwiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXRvc0V4Y2VsKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAnUFAnLCBOb21lOiAnRXhjZWwgUG9ydHVndcOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWy5dJyB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6ICdQVicsIE5vbWU6ICdFeGNlbCBQb3J0dWd1w6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLF0nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ0lQJywgTm9tZTogJ0V4Y2VsIEluZ2zDqnMgY29tIFNlcGFyYWRvciBEZWNpbWFsIFsuXScgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnSVYnLCBOb21lOiAnRXhjZWwgSW5nbMOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWyxdJyB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiBcIkFcIiwgTm9tZTogXCJBdGl2b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQXCIsIE5vbWU6IFwiUGVuZGVudGVcIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzQ29tcGxldG8oKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQ1wiLCBOb21lOiBcIkNhZGFzdHJhZG9cIiwgU2VsZWNpb25hZG86IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIkZcIiwgTm9tZTogXCJGZWl0b1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIk9cIiwgTm9tZTogXCJDb25mZXJpZG9cIiwgU2VsZWNpb25hZG86IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlJcIiwgTm9tZTogXCJSZWplaXRhZG9cIiwgU2VsZWNpb25hZG86IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJJXCIsIE5vbWU6IFwiSW5hdGl2b1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0YXR1c1Byb2Nlc3NhbWVudG8oKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQVwiLCBOb21lOiBcIkFndWFyZGFuZG9Qcm9jZXNzYW1lbnRvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIkVcIiwgTm9tZTogXCJFbVByb2Nlc3NhbWVudG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiUFwiLCBOb21lOiBcIlByb2Nlc3NhZG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiSVwiLCBOb21lOiBcIkluYXRpdm9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiWlwiLCBOb21lOiBcIkVycm9cIiB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0b0lkaW9tYXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiZW5cIiwgTm9tZTogXCJFbmdsaXNoXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcInB0LUJSXCIsIE5vbWU6IFwiUG9ydHVndcOqc1wiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRHZW5lcm9zKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAnTScsIE5vbWU6ICdNYXNjdWxpbm8nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ0YnLCBOb21lOiAnRmVtaW5pbm8nIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUaXBvc0V2aWRlbmNpYSgpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogMSwgTm9tZTogJ1RlbGVmb25lJ30sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogMiwgTm9tZTogJ0VtYWlsJ30sXHJcbiAgICAgICAgICAgICAgICAge0lkOiAzLCBOb21lOiAnRG9jdW1lbnRvJ30gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPcmRlbnMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHtJZDogXCJub21lLWFzY1wiLCBOb21lOiBcIk5vbWVDcmVzY2VudGVcIn0sXHJcbiAgICAgICAgICAgICAgICAge0lkOiBcIm5vbWUtZGVzY1wiLCBOb21lOiBcIk5vbWVEZWNyZXNjZW50ZVwifSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IFwidmFsb3ItYXNjXCIsIE5vbWU6IFwiVmFsb3JDcmVzY2VudGVcIn0sXHJcbiAgICAgICAgICAgICAgICAge0lkOiBcInZhbG9yLWRlc2NcIiwgTm9tZTogXCJWYWxvckRlY3Jlc2NlbnRlXCJ9IF07XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhckVtYWlsKGZvcm0sIHZhbHVlLCBjb250cm9sKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwYXR0ZXJuID0gL14oW2EtekEtWjAtOV9cXC1cXC5dKylAKFthLXpBLVowLTlfXFwtXFwuXSspXFwuKFthLXpBLVpdezIsNX0pJC87XHJcbiAgICAgICAgbGV0IGVtYWlsczogc3RyaW5nW10gPSB2YWx1ZS5zcGxpdCgnOycpO1xyXG4gICAgICAgIGxldCBpbnZhbGlkbyA9IGVtYWlscy5zb21lKGVtYWlsID0+IGVtYWlsICYmICFwYXR0ZXJuLnRlc3QoZW1haWwudHJpbSgpKSk7XHJcblxyXG4gICAgICAgIGlmIChpbnZhbGlkbylcclxuICAgICAgICAgICAgZm9ybS5mb3JtLmNvbnRyb2xzW2NvbnRyb2xdLnNldEVycm9ycyggeyAnaW52YWxpZCc6IHRydWUgfSApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExvY2FsU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdGhpcy5jcmlwdG9ncmFmYXIodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5kZXNjcmlwdG9ncmFmYXIobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XHJcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCBkYXRhID09ICcnKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBpc0lFKCkge1xyXG4gICAgICAgIHZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xyXG4gICAgICAgIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgXCIpID4gLTEgfHwgdXNlckFnZW50LmluZGV4T2YoXCJUcmlkZW50L1wiKSA+IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHJldG9ybmFUZXh0byh0ZXh0bykge1xyXG4gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpXHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IHRleHRvO1xyXG4gICAgICAgIHJldHVybiBkaXYuaW5uZXJUZXh0IHx8IGRpdi50ZXh0Q29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmVuY3J5cHQodGV4dG8sIFwiR0t4THRRZzJhdFwiKS50b1N0cmluZygpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkZXNjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dG8sIFwiR0t4THRRZzJhdFwiKS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
158
+ export class StaticUtils {
159
+ static validarCnpj(cnpj) {
160
+ const cnpjOriginal = (cnpj || '');
161
+ cnpj = cnpjOriginal.toUpperCase().slice(0, 12);
162
+ cnpj = cnpj + this.getDigito(this.getSomaCnpj(cnpj));
163
+ cnpj = cnpj + this.getDigito(this.getSomaCnpj(cnpj));
164
+ return cnpjOriginal == cnpj;
165
+ }
166
+ static validarCpf(cpf) {
167
+ const cpfOriginal = (cpf || '');
168
+ cpf = cpfOriginal.toUpperCase().slice(0, 9);
169
+ cpf = cpf + this.getDigito(this.getSomaCpf(cpf));
170
+ cpf = cpf + this.getDigito(this.getSomaCpf(cpf));
171
+ return cpfOriginal == cpf;
172
+ }
173
+ static getDigito(soma) {
174
+ return (soma % 11) <= 1 ? 0 : (11 - (soma % 11));
175
+ }
176
+ static getSomaCnpj(cnpj) {
177
+ const peso = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
178
+ if (cnpj.length == 12)
179
+ peso.shift();
180
+ return Array.from(cnpj)
181
+ .map((c, i) => (isNaN(Number(c)) ? c.charCodeAt(0) - 48 : Number(c)) * peso[i])
182
+ .reduce((a, b) => a + b, 0);
183
+ }
184
+ static getSomaCpf(cpf) {
185
+ const fator = cpf.length == 9 ? 10 : 11;
186
+ return Array.from(cpf).map((c, i) => Number(c) * (fator - i)).reduce((a, b) => a + b, 0);
187
+ }
188
+ }
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy91dGlscy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQzs7QUFHdEMsTUFBTSxPQUFPLFNBQVM7SUFDbEIsT0FBTztRQUNILE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxzQ0FBc0MsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN4SCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBTTtRQUN0QixJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFD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LElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtZQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVwQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVztRQUNqQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXRpbGl0aWVzIHtcclxuICAgIGdldEd1aWQoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xyXG4gICAgICAgICAgICBjb25zdCByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAoIHIgJiAweDMgfCAweDggKTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXRHdWlkRW1wdHkoKSA6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzR3VpZCh2YWx1ZSkgOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFwiXCIgKyB2YWx1ZSkubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpOiBhbnkge1xyXG4gICAgICAgIHZhciBiaW5hcnlTdHJpbmcgPSB3aW5kb3cuYXRvYihiYXNlNjQpO1xyXG4gICAgICAgIHZhciBiaW5hcnlMZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeUxlbik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlMZW47IGkrKykge1xyXG4gICAgICAgICAgIHZhciBhc2NpaSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgIGJ5dGVzW2ldID0gYXNjaWk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH1cclxuICAgIFxyXG4gICAganNvblRvRW5jcnlwdChvYmplY3QpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyaXB0b2dyYWZhcih1bmVzY2FwZShKU09OLnN0cmluZ2lmeShvYmplY3QpKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGRlY3J5cHRUb0pzb24odmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmRlc2NyaXB0b2dyYWZhcih2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5PckRvd25sb2FkKHRpdGxlLCBibG9iKSB7XHJcbiAgICAgICAgbGV0IGZpbGVVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBpZiAodGl0bGUuaW5kZXhPZihcInBkZlwiKSA+IC0xKVxyXG4gICAgICAgICAgICB3aW5kb3cub3BlbihmaWxlVVJMLCB0aXRsZSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50QTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGVsZW1lbnRBLmhyZWYgPSBmaWxlVVJMO1xyXG4gICAgICAgICAgICBlbGVtZW50QS5kb3dubG9hZCA9IHRpdGxlO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnRBKTtcclxuICAgICAgICAgICAgZWxlbWVudEEuY2xpY2soKTsgICAgICAgIFxyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnRBKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlckFjZW50b3ModmFsOiBzdHJpbmcpIDogc3RyaW5nIHtcclxuICAgICAgICBpZiAodmFsID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB2YXIgbm9ybWFsaXplRnVuY3Rpb24gPSBTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSA/IChzdHIpID0+IHN0ci5ub3JtYWxpemUoJ05GRCcpIDogKHN0cikgPT4gc3RyO1xyXG4gICAgICAgIHJldHVybiBub3JtYWxpemVGdW5jdGlvbih2YWwpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0b3MoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiRVhDRUxcIiwgTm9tZTogXCJFeGNlbFwiLCBNaW1lVHlwZTogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIiwgRXh0ZW5zYW86IFwieGxzXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlBERlwiLCBOb21lOiBcIlBERlwiLCBNaW1lVHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiwgRXh0ZW5zYW86IFwicGRmXCIgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZvcm1hdG9zRXhjZWwoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6ICdQUCcsIE5vbWU6ICdFeGNlbCBQb3J0dWd1w6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLl0nIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogJ1BWJywgTm9tZTogJ0V4Y2VsIFBvcnR1Z3XDqnMgY29tIFNlcGFyYWRvciBEZWNpbWFsIFssXScgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnSVAnLCBOb21lOiAnRXhjZWwgSW5nbMOqcyBjb20gU2VwYXJhZG9yIERlY2ltYWwgWy5dJyB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6ICdJVicsIE5vbWU6ICdFeGNlbCBJbmdsw6pzIGNvbSBTZXBhcmFkb3IgRGVjaW1hbCBbLF0nIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6IFwiQVwiLCBOb21lOiBcIkF0aXZvXCIgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIlBcIiwgTm9tZTogXCJQZW5kZW50ZVwiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXNDb21wbGV0bygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJDXCIsIE5vbWU6IFwiQ2FkYXN0cmFkb1wiLCBTZWxlY2lvbmFkbzogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiRlwiLCBOb21lOiBcIkZlaXRvXCIsIFNlbGVjaW9uYWRvOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiT1wiLCBOb21lOiBcIkNvbmZlcmlkb1wiLCBTZWxlY2lvbmFkbzogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiUlwiLCBOb21lOiBcIlJlamVpdGFkb1wiLCBTZWxlY2lvbmFkbzogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiBcIklcIiwgTm9tZTogXCJJbmF0aXZvXCIsIFNlbGVjaW9uYWRvOiBmYWxzZSB9IF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U3RhdHVzUHJvY2Vzc2FtZW50bygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJBXCIsIE5vbWU6IFwiQWd1YXJkYW5kb1Byb2Nlc3NhbWVudG9cIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwiRVwiLCBOb21lOiBcIkVtUHJvY2Vzc2FtZW50b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJQXCIsIE5vbWU6IFwiUHJvY2Vzc2Fkb1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJJXCIsIE5vbWU6IFwiSW5hdGl2b1wiIH0sXHJcbiAgICAgICAgICAgICAgICAgeyBJZDogXCJaXCIsIE5vbWU6IFwiRXJyb1wiIH0gXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXRvSWRpb21hcygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsgeyBJZDogXCJlblwiLCBOb21lOiBcIkVuZ2xpc2hcIiB9LFxyXG4gICAgICAgICAgICAgICAgIHsgSWQ6IFwicHQtQlJcIiwgTm9tZTogXCJQb3J0dWd1w6pzXCIgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEdlbmVyb3MoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbIHsgSWQ6ICdNJywgTm9tZTogJ01hc2N1bGlubycgfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAnRicsIE5vbWU6ICdGZW1pbmlubycgfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRpcG9zRXZpZGVuY2lhKCk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gWyB7IElkOiAxLCBOb21lOiAnVGVsZWZvbmUnfSxcclxuICAgICAgICAgICAgICAgICB7IElkOiAyLCBOb21lOiAnRW1haWwnfSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IDMsIE5vbWU6ICdEb2N1bWVudG8nfSBdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9yZGVucygpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFsge0lkOiBcIm5vbWUtYXNjXCIsIE5vbWU6IFwiTm9tZUNyZXNjZW50ZVwifSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IFwibm9tZS1kZXNjXCIsIE5vbWU6IFwiTm9tZURlY3Jlc2NlbnRlXCJ9LFxyXG4gICAgICAgICAgICAgICAgIHtJZDogXCJ2YWxvci1hc2NcIiwgTm9tZTogXCJWYWxvckNyZXNjZW50ZVwifSxcclxuICAgICAgICAgICAgICAgICB7SWQ6IFwidmFsb3ItZGVzY1wiLCBOb21lOiBcIlZhbG9yRGVjcmVzY2VudGVcIn0gXTtcclxuICAgIH1cclxuXHJcbiAgICB2YWxpZGFyRW1haWwoZm9ybSwgdmFsdWUsIGNvbnRyb2wpIHtcclxuICAgICAgICBpZiAoIXZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IHBhdHRlcm4gPSAvXihbYS16QS1aMC05X1xcLVxcLl0rKUAoW2EtekEtWjAtOV9cXC1cXC5dKylcXC4oW2EtekEtWl17Miw1fSkkLztcclxuICAgICAgICBsZXQgZW1haWxzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KCc7Jyk7XHJcbiAgICAgICAgbGV0IGludmFsaWRvID0gZW1haWxzLnNvbWUoZW1haWwgPT4gZW1haWwgJiYgIXBhdHRlcm4udGVzdChlbWFpbC50cmltKCkpKTtcclxuXHJcbiAgICAgICAgaWYgKGludmFsaWRvKVxyXG4gICAgICAgICAgICBmb3JtLmZvcm0uY29udHJvbHNbY29udHJvbF0uc2V0RXJyb3JzKCB7ICdpbnZhbGlkJzogdHJ1ZSB9ICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TG9jYWxTdG9yYWdlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLmNyaXB0b2dyYWZhcih2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExvY2FsU3RvcmFnZShrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRlc2NyaXB0b2dyYWZhcihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcclxuICAgICAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gJycpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGlzSUUoKSB7XHJcbiAgICAgICAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICAgICAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRSBcIikgPiAtMSB8fCB1c2VyQWdlbnQuaW5kZXhPZihcIlRyaWRlbnQvXCIpID4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0b3JuYVRleHRvKHRleHRvKSB7XHJcbiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIilcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gdGV4dG87XHJcbiAgICAgICAgcmV0dXJuIGRpdi5pbm5lclRleHQgfHwgZGl2LnRleHRDb250ZW50O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBwcml2YXRlIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFwiR0t4THRRZzJhdGdqa3JlclwiKTtcclxuICAgIHByaXZhdGUgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcImUwV2c2bDVHTmRnMjlkdmNcIik7XHJcblxyXG4gICAgY3JpcHRvZ3JhZmFyKHRleHRvKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHRvLCB0aGlzLmtleSwge1xyXG4gICAgICAgICAgICAgICAgaXY6IHRoaXMuaXYsXHJcbiAgICAgICAgICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xyXG4gICAgICAgICAgICB9KS50b1N0cmluZygpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkZXNjcmlwdG9ncmFmYXIodGV4dG8pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dG8sIHRoaXMua2V5LCB7XHJcbiAgICAgICAgICAgICAgICBpdjogdGhpcy5pdixcclxuICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XHJcbiAgICAgICAgICAgIH0pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH0gIFxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RhdGljVXRpbHMge1xyXG4gICAgXHJcbiAgICBzdGF0aWMgdmFsaWRhckNucGooY25wajogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgY25wak9yaWdpbmFsID0gKGNucGogfHwgJycpO1xyXG4gICAgICAgIGNucGogPSBjbnBqT3JpZ2luYWwudG9VcHBlckNhc2UoKS5zbGljZSgwLCAxMik7XHJcbiAgICAgICAgY25waiA9IGNucGogKyB0aGlzLmdldERpZ2l0byh0aGlzLmdldFNvbWFDbnBqKGNucGopKTtcclxuICAgICAgICBjbnBqID0gY25waiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNucGooY25waikpO1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIGNucGpPcmlnaW5hbCA9PSBjbnBqO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB2YWxpZGFyQ3BmKGNwZjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgY3BmT3JpZ2luYWwgPSAoY3BmIHx8ICcnKTtcclxuICAgICAgICBjcGYgPSBjcGZPcmlnaW5hbC50b1VwcGVyQ2FzZSgpLnNsaWNlKDAsIDkpO1xyXG4gICAgICAgIGNwZiA9IGNwZiArIHRoaXMuZ2V0RGlnaXRvKHRoaXMuZ2V0U29tYUNwZihjcGYpKTtcclxuICAgICAgICBjcGYgPSBjcGYgKyB0aGlzLmdldERpZ2l0byh0aGlzLmdldFNvbWFDcGYoY3BmKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjcGZPcmlnaW5hbCA9PSBjcGY7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgc3RhdGljIGdldERpZ2l0byhzb21hOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gKHNvbWEgJSAxMSkgPD0gMSA/IDAgOiAoMTEgLSAoc29tYSAlIDExKSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByaXZhdGUgc3RhdGljIGdldFNvbWFDbnBqKGNucGo6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBlc28gPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XHJcbiAgICAgICAgaWYgKGNucGoubGVuZ3RoID09IDEyKSBwZXNvLnNoaWZ0KCk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjbnBqKVxyXG4gICAgICAgICAgICAubWFwKChjLCBpKSA9PiAoaXNOYU4oTnVtYmVyKGMpKSA/IGMuY2hhckNvZGVBdCgwKSAtIDQ4IDogTnVtYmVyKGMpKSAqIHBlc29baV0pXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBnZXRTb21hQ3BmKGNwZjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgZmF0b3IgPSBjcGYubGVuZ3RoID09IDkgPyAxMCA6IDExO1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNwZikubWFwKChjLCBpKSA9PiBOdW1iZXIoYykgKiAoZmF0b3IgLSBpKSkucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XHJcbiAgICB9XHJcbn1cclxuIl19