@libs-ui/utils 0.2.305 → 0.2.306-10

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 (43) hide show
  1. package/communicate-micro.d.ts +1 -1
  2. package/dangerous-object.d.ts +75 -0
  3. package/date.d.ts +14 -19
  4. package/esm2022/base64.mjs +2 -2
  5. package/esm2022/cache.mjs +20 -16
  6. package/esm2022/color.mjs +66 -14
  7. package/esm2022/communicate-micro.mjs +20 -16
  8. package/esm2022/constants.mjs +1 -1
  9. package/esm2022/crypto-3rd.mjs +3 -3
  10. package/esm2022/crypto.mjs +3 -3
  11. package/esm2022/dangerous-object.mjs +143 -0
  12. package/esm2022/date.mjs +24 -22
  13. package/esm2022/dom.mjs +5 -13
  14. package/esm2022/download.mjs +3 -3
  15. package/esm2022/file.mjs +23 -11
  16. package/esm2022/format-number.mjs +9 -6
  17. package/esm2022/format-text.mjs +13 -15
  18. package/esm2022/function-check-embed-frame.mjs +1 -1
  19. package/esm2022/get-smart-axis-scale.mjs +10 -10
  20. package/esm2022/helpers.mjs +136 -48
  21. package/esm2022/http-params.mjs +2 -2
  22. package/esm2022/index.mjs +2 -1
  23. package/esm2022/inject-token.mjs +2 -2
  24. package/esm2022/key-cache.mjs +6 -6
  25. package/esm2022/key-code.mjs +1 -1
  26. package/esm2022/language.mjs +28 -28
  27. package/esm2022/pattern.mjs +1 -1
  28. package/esm2022/random.mjs +2 -2
  29. package/esm2022/two-way-signal-object.mjs +32 -20
  30. package/esm2022/uri.mjs +9 -6
  31. package/esm2022/url-search-params.mjs +13 -11
  32. package/esm2022/uuid.mjs +2 -2
  33. package/esm2022/xss-filter.mjs +1 -1
  34. package/fesm2022/libs-ui-utils.mjs +676 -365
  35. package/fesm2022/libs-ui-utils.mjs.map +1 -1
  36. package/file.d.ts +2 -2
  37. package/format-text.d.ts +1 -1
  38. package/helpers.d.ts +54 -5
  39. package/http-params.d.ts +1 -1
  40. package/index.d.ts +1 -0
  41. package/inject-token.d.ts +1 -1
  42. package/package.json +2 -2
  43. package/uri.d.ts +1 -1
@@ -1,4 +1,4 @@
1
- import { patternEmoji } from "./pattern";
1
+ import { patternEmoji } from './pattern';
2
2
  export const highlightByKeyword = (value, search, ignoreHighlight, classHightLight) => {
3
3
  if (!value) {
4
4
  return '—';
@@ -14,7 +14,7 @@ export const highlightByKeyword = (value, search, ignoreHighlight, classHightLig
14
14
  if (!classHightLight) {
15
15
  classHightLight = 'bg-[#19344a] text-white';
16
16
  }
17
- keysReplace.forEach(key => {
17
+ keysReplace.forEach((key) => {
18
18
  const regExp = new RegExp(key, 'gi');
19
19
  value = value?.replace(regExp, `<span class="${classHightLight}">$&</span>`);
20
20
  });
@@ -43,7 +43,7 @@ export const formatTextCompare = (text, options) => {
43
43
  if (!text) {
44
44
  return text;
45
45
  }
46
- text = text.normalize("NFC");
46
+ text = text.normalize('NFC');
47
47
  return formatByOptions(text, options);
48
48
  };
49
49
  export const fullNameFormat = (value) => {
@@ -57,7 +57,10 @@ export const capitalize = (text, options) => {
57
57
  return text;
58
58
  }
59
59
  text = formatByOptions(text, options);
60
- return text.split(' ').map(word => firstLetterToUpperCase(word)).join(' ');
60
+ return text
61
+ .split(' ')
62
+ .map((word) => firstLetterToUpperCase(word))
63
+ .join(' ');
61
64
  };
62
65
  export const firstLetterToUpperCase = (text, options) => {
63
66
  if (!text) {
@@ -83,7 +86,7 @@ const formatByOptions = (text, options) => {
83
86
  text = text.toLowerCase();
84
87
  }
85
88
  if (options?.removeMultipleSpace) {
86
- text = text.replace(/\u200B|\u00A0/g, "");
89
+ text = text.replace(/\u200B|\u00A0/g, '');
87
90
  text = text.replace(/\s+/g, ' ');
88
91
  }
89
92
  if (options?.removeEmoji) {
@@ -101,12 +104,7 @@ export const escapeHtml = (str) => {
101
104
  if (!str || typeof str !== 'string') {
102
105
  return str;
103
106
  }
104
- return str
105
- .replace(/&/g, "&amp;")
106
- .replace(/</g, "&lt;")
107
- .replace(/>/g, "&gt;")
108
- .replace(/"/g, "&quot;")
109
- .replace(/'/g, "&#039;");
107
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#039;');
110
108
  };
111
109
  export const decodeEscapeHtml = (str) => {
112
110
  const htmlTag = document.createElement('textarea');
@@ -137,9 +135,9 @@ export const deleteUnicode = (str) => {
137
135
  str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, 'U');
138
136
  str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, 'Y');
139
137
  str = str.replace(/Đ/g, 'D');
140
- str = str.replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, ""); // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng
141
- str = str.replace(/\u02C6|\u0306|\u031B/g, ""); // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư
142
- return str.normalize("NFC");
138
+ str = str.replace(/\u0300|\u0301|\u0303|\u0309|\u0323/g, ''); // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng
139
+ str = str.replace(/\u02C6|\u0306|\u031B/g, ''); // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư
140
+ return str.normalize('NFC');
143
141
  };
144
142
  export const removeEmoji = (text) => {
145
143
  if (!text || !text.trim()) {
@@ -147,4 +145,4 @@ export const removeEmoji = (text) => {
147
145
  }
148
146
  return text.replace(patternEmoji(), '');
149
147
  };
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9mb3JtYXQtdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBeUIsRUFBRSxNQUEwQixFQUFFLGVBQXlCLEVBQUUsZUFBd0IsRUFBRSxFQUFFO0lBQ2hKLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNaLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSixJQUFJLENBQUMsTUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFrQixlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RCLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFckMsS0FBSyxHQUFHLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLGdCQUFnQixlQUFlLGFBQWEsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixD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LEdBQUcsQ0FBQyxPQUFPLENBQUMscUNBQXFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7SUFDdEcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7SUFFdkUsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQzNDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVRleHRGb3JtYXRPcHRpb25zIH0gZnJvbSBcIkBsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXNcIjtcbmltcG9ydCB7IHBhdHRlcm5FbW9qaSB9IGZyb20gXCIuL3BhdHRlcm5cIjtcblxuZXhwb3J0IGNvbnN0IGhpZ2hsaWdodEJ5S2V5d29yZCA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzZWFyY2g6IHN0cmluZyB8IHVuZGVmaW5lZCwgaWdub3JlSGlnaGxpZ2h0PzogYm9vbGVhbiwgY2xhc3NIaWdodExpZ2h0Pzogc3RyaW5nKSA9PiB7XG5cdGlmICghdmFsdWUpIHtcblx0XHRyZXR1cm4gJyZtZGFzaDsnO1xuXHR9XG5cdHRyeSB7XG5cdFx0aWYgKCFzZWFyY2ggfHwgaWdub3JlSGlnaGxpZ2h0KSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHRcdGNvbnN0IGtleXNSZXBsYWNlOiBBcnJheTxzdHJpbmc+ID0gZ2V0VmFsdWVSZXBsYWNlKHNlYXJjaCwgdmFsdWUpO1xuXG5cdFx0aWYgKCFrZXlzUmVwbGFjZSB8fCAha2V5c1JlcGxhY2UubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHRcdGlmICghY2xhc3NIaWdodExpZ2h0KSB7XG5cdFx0XHRjbGFzc0hpZ2h0TGlnaHQgPSAnYmctWyMxOTM0NGFdIHRleHQtd2hpdGUnO1xuXHRcdH1cblx0XHRrZXlzUmVwbGFjZS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKGtleSwgJ2dpJyk7XG5cblx0XHRcdHZhbHVlID0gdmFsdWU/LnJlcGxhY2UocmVnRXhwLCBgPHNwYW4gY2xhc3M9XCIke2NsYXNzSGlnaHRMaWdodH1cIj4kJjwvc3Bhbj5gKTtcblx0XHR9KTtcblxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGNvbnNvbGUubG9nKGVycm9yKTtcblx0fSBmaW5hbGx5IHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5zYWZlLWZpbmFsbHlcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cblxuXG5jb25zdCBnZXRWYWx1ZVJlcGxhY2UgPSAoc2VhcmNoOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG5cdGNvbnN0IHNlYXJjaENvbnZlcnQgPSBkZWxldGVVbmljb2RlKHNlYXJjaCkudG9Mb3dlckNhc2UoKTtcblx0Y29uc3QgdmFsdWVDb252ZXJ0ID0gZGVsZXRlVW5pY29kZSh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcblx0Y29uc3Qga2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cdGxldCBpID0gMDtcblxuXHR3aGlsZSAoKGkgPSB2YWx1ZUNvbnZlcnQuaW5kZXhPZihzZWFyY2hDb252ZXJ0LCBpKSkgPj0gMCkge1xuXHRcdGNvbnN0IGVuZEluZGV4ID0gaSArIHNlYXJjaC5sZW5ndGg7XG5cblx0XHRrZXlzLmFkZCh2YWx1ZS5zdWJzdHJpbmcoaSwgZW5kSW5kZXgpKTtcblx0XHRpICs9ICt2YWx1ZUNvbnZlcnQubGVuZ3RoO1xuXHR9XG5cblx0cmV0dXJuIEFycmF5LmZyb20oa2V5cyk7XG59XG5cblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRleHRDb21wYXJlID0gKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IElUZXh0Rm9ybWF0T3B0aW9ucykgPT4ge1xuXHRpZiAoIXRleHQpIHtcblx0XHRyZXR1cm4gdGV4dDtcblx0fVxuXG5cdHRleHQgPSB0ZXh0Lm5vcm1hbGl6ZShcIk5GQ1wiKTtcblxuXHRyZXR1cm4gZm9ybWF0QnlPcHRpb25zKHRleHQsIG9wdGlvbnMpO1xufVxuXG5cbmV4cG9ydCBjb25zdCBmdWxsTmFtZUZvcm1hdCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG5cdGlmICghdmFsdWUpIHtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cblx0cmV0dXJuIGNhcGl0YWxpemUodmFsdWUsIHsgbG93ZXJjYXNlT3RoZXJDaGFyYWN0ZXI6IHRydWUsIHRyaW06IHRydWUsIHJlbW92ZU11bHRpcGxlU3BhY2U6IHRydWUsIHJlbW92ZUVtb2ppOiB0cnVlIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhcGl0YWxpemUgPSAodGV4dDogc3RyaW5nLCBvcHRpb25zPzogSVRleHRGb3JtYXRPcHRpb25zKSA9PiB7XG5cdGlmICghdGV4dCkge1xuXHRcdHJldHVybiB0ZXh0O1xuXHR9XG5cdHRleHQgPSBmb3JtYXRCeU9wdGlvbnModGV4dCwgb3B0aW9ucyk7XG5cdHJldHVybiB0ZXh0LnNwbGl0KCcgJykubWFwKHdvcmQgPT4gZmlyc3RMZXR0ZXJUb1VwcGVyQ2FzZSh3b3JkKSkuam9pbignICcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpcnN0TGV0dGVyVG9VcHBlckNhc2UgPSAodGV4dDogc3RyaW5nLCBvcHRpb25zPzogSVRleHRGb3JtYXRPcHRpb25zKSA9PiB7XG5cdGlmICghdGV4dCkge1xuXHRcdHJldHVybiB0ZXh0O1xuXHR9XG5cdHJldHVybiB1cHBlcmNhc2VCeVBvc2l0aW9uKHRleHQsIDAsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwcGVyY2FzZUJ5UG9zaXRpb24gPSAodGV4dDogc3RyaW5nLCBwb3NpdGlvbjogbnVtYmVyLCBvcHRpb25zPzogSVRleHRGb3JtYXRPcHRpb25zKSA9PiB7XG5cdGlmICghdGV4dCkge1xuXHRcdHJldHVybiB0ZXh0O1xuXHR9XG5cdHRleHQgPSBmb3JtYXRCeU9wdGlvbnModGV4dCwgb3B0aW9ucyk7XG5cdHJldHVybiBgJHt0ZXh0LnN1YnN0cmluZygwLCBwb3NpdGlvbil9JHt0ZXh0LmNoYXJBdChwb3NpdGlvbikudG9VcHBlckNhc2UoKX0ke3RleHQuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSl9YDtcbn07XG5cbmNvbnN0IGZvcm1hdEJ5T3B0aW9ucyA9ICh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBJVGV4dEZvcm1hdE9wdGlvbnMpID0+IHtcblx0aWYgKCF0ZXh0IHx8ICFvcHRpb25zKSB7XG5cdFx0cmV0dXJuIHRleHQ7XG5cdH1cblx0aWYgKG9wdGlvbnM/LnVwcGVyY2FzZU90aGVyQ2hhcmFjdGVyKSB7XG5cdFx0dGV4dCA9IHRleHQudG9VcHBlckNhc2UoKTtcblx0fVxuXG5cdGlmIChvcHRpb25zPy5sb3dlcmNhc2VPdGhlckNoYXJhY3Rlcikge1xuXHRcdHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG5cdH1cblxuXHRpZiAob3B0aW9ucz8ucmVtb3ZlTXVsdGlwbGVTcGFjZSkge1xuXHRcdHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcdTIwMEJ8XFx1MDBBMC9nLCBcIlwiKTtcblx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXHMrL2csICcgJyk7XG5cdH1cblxuXHRpZiAob3B0aW9ucz8ucmVtb3ZlRW1vamkpIHtcblx0XHR0ZXh0ID0gcmVtb3ZlRW1vamkodGV4dCk7XG5cdH1cblxuXHRpZiAob3B0aW9ucz8ucmVtb3ZlVW5pY29kZSkge1xuXHRcdHRleHQgPSBkZWxldGVVbmljb2RlKHRleHQpO1xuXHR9XG5cblx0aWYgKG9wdGlvbnM/LnRyaW0pIHtcblx0XHR0ZXh0ID0gdGV4dC50cmltKCk7XG5cdH1cblxuXHRyZXR1cm4gdGV4dDtcbn07XG5cbmV4cG9ydCBjb25zdCBlc2NhcGVIdG1sID0gKHN0cjogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0aWYgKCFzdHIgfHwgdHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcblx0XHRyZXR1cm4gc3RyO1xuXHR9XG5cblx0cmV0dXJuIHN0clxuXHRcdC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcblx0XHQucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcblx0XHQucmVwbGFjZSgvPi9nLCBcIiZndDtcIilcblx0XHQucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcblx0XHQucmVwbGFjZSgvJy9nLCBcIiYjMDM5O1wiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNvZGVFc2NhcGVIdG1sID0gKHN0cjogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0Y29uc3QgaHRtbFRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG5cblx0aHRtbFRhZy5pbm5lckhUTUwgPSBzdHI7XG5cdHdoaWxlIChzdHIpIHtcblx0XHRpZiAoc3RyID09PSBodG1sVGFnLnZhbHVlKSB7XG5cdFx0XHRzdHIgPSBodG1sVGFnLnZhbHVlO1xuXHRcdFx0aHRtbFRhZy5yZW1vdmUoKTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRzdHIgPSBodG1sVGFnLnZhbHVlO1xuXHRcdGh0bWxUYWcuaW5uZXJIVE1MID0gc3RyO1xuXHR9XG5cblx0cmV0dXJuIHN0cjtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVbmljb2RlID0gKHN0cjogc3RyaW5nKSA9PiB7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC/DoHzDoXzhuqF84bqjfMOjfMOifOG6p3zhuqV84bqtfOG6qXzhuqt8xIN84bqxfOG6r3zhurd84bqzfOG6tS9nLCAnYScpO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvw6h8w6l84bq5fOG6u3zhur18w6p84buBfOG6v3zhu4d84buDfMOqzIN84buFL2csICdlJyk7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC/DrHzDrXzhu4t84buJfMSpL2csICdpJyk7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC/DsnzDs3zhu4184buPfMO1fMO0fOG7k3zhu5F84buZfOG7lXzhu5d8xqF84budfOG7m3zhu6N84buffOG7oS9nLCAnbycpO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvw7l8w7p84bulfOG7p3zFqXzGsHzhu6t84bupfOG7sXzhu6184buvL2csICd1Jyk7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC/hu7N8w7184bu1fOG7t3zhu7kvZywgJ3knKTtcblx0c3RyID0gc3RyLnJlcGxhY2UoL8SRL2csICdkJyk7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC/DgHzDgXzhuqB84bqifMODfMOCfOG6pnzhuqR84bqsfOG6qHzhuqp8xIJ84bqwfOG6rnzhurZ84bqyfOG6tC9nLCAnQScpO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvw4h8w4l84bq4fOG6unzhurx8w4p84buAfOG6vnzhu4Z84buCfOG7hC9nLCAnRScpO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvw4x8w4184buKfOG7iHzEqC9nLCAnSScpO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvw5J8w5N84buMfOG7jnzDlXzDlHzhu5J84buQfOG7mHzhu5R84buWfMagfOG7nHzhu5p84buifOG7nnzhu6AvZywgJ08nKTtcblx0c3RyID0gc3RyLnJlcGxhY2UoL8OZfMOafOG7pHzhu6Z8xah8xq984buqfOG7qHzhu7B84busfOG7ri9nLCAnVScpO1xuXHRzdHIgPSBzdHIucmVwbGFjZSgv4buyfMOdfOG7tHzhu7Z84bu4L2csICdZJyk7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC/EkC9nLCAnRCcpO1xuXG5cdHN0ciA9IHN0ci5yZXBsYWNlKC9cXHUwMzAwfFxcdTAzMDF8XFx1MDMwM3xcXHUwMzA5fFxcdTAzMjMvZywgXCJcIik7IC8vIMyAIMyBIMyDIMyJIMyjICBodXnhu4FuLCBz4bqvYywgbmfDoywgaOG7j2ksIG7hurduZ1xuXHRzdHIgPSBzdHIucmVwbGFjZSgvXFx1MDJDNnxcXHUwMzA2fFxcdTAzMUIvZywgXCJcIik7IC8vIMuGIMyGIMybICDDgiwgw4osIMSCLCDGoCwgxq9cblxuXHRyZXR1cm4gc3RyLm5vcm1hbGl6ZShcIk5GQ1wiKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVFbW9qaSA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcblx0aWYgKCF0ZXh0IHx8ICF0ZXh0LnRyaW0oKSkge1xuXHRcdHJldHVybiB0ZXh0O1xuXHR9XG5cblx0cmV0dXJuIHRleHQucmVwbGFjZShwYXR0ZXJuRW1vamkoKSwgJycpO1xufTsiXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9mb3JtYXQtdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBeUIsRUFBRSxNQUEwQixFQUFFLGVBQXlCLEVBQUUsZUFBd0IsRUFBRSxFQUFFO0lBQy9JLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFrQixlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUVyQyxLQUFLLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLGVBQWUsYUFBYSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFD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LEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztJQUN0RyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtJQUV2RSxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDMUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVGV4dEZvcm1hdE9wdGlvbnMgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IHBhdHRlcm5FbW9qaSB9IGZyb20gJy4vcGF0dGVybic7XG5cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRCeUtleXdvcmQgPSAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCwgc2VhcmNoOiBzdHJpbmcgfCB1bmRlZmluZWQsIGlnbm9yZUhpZ2hsaWdodD86IGJvb2xlYW4sIGNsYXNzSGlnaHRMaWdodD86IHN0cmluZykgPT4ge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuICcmbWRhc2g7JztcbiAgfVxuICB0cnkge1xuICAgIGlmICghc2VhcmNoIHx8IGlnbm9yZUhpZ2hsaWdodCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBrZXlzUmVwbGFjZTogQXJyYXk8c3RyaW5nPiA9IGdldFZhbHVlUmVwbGFjZShzZWFyY2gsIHZhbHVlKTtcblxuICAgIGlmICgha2V5c1JlcGxhY2UgfHwgIWtleXNSZXBsYWNlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoIWNsYXNzSGlnaHRMaWdodCkge1xuICAgICAgY2xhc3NIaWdodExpZ2h0ID0gJ2JnLVsjMTkzNDRhXSB0ZXh0LXdoaXRlJztcbiAgICB9XG4gICAga2V5c1JlcGxhY2UuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKGtleSwgJ2dpJyk7XG5cbiAgICAgIHZhbHVlID0gdmFsdWU/LnJlcGxhY2UocmVnRXhwLCBgPHNwYW4gY2xhc3M9XCIke2NsYXNzSGlnaHRMaWdodH1cIj4kJjwvc3Bhbj5gKTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuc2FmZS1maW5hbGx5XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBnZXRWYWx1ZVJlcGxhY2UgPSAoc2VhcmNoOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IHNlYXJjaENvbnZlcnQgPSBkZWxldGVVbmljb2RlKHNlYXJjaCkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgdmFsdWVDb252ZXJ0ID0gZGVsZXRlVW5pY29kZSh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gIGxldCBpID0gMDtcblxuICB3aGlsZSAoKGkgPSB2YWx1ZUNvbnZlcnQuaW5kZXhPZihzZWFyY2hDb252ZXJ0LCBpKSkgPj0gMCkge1xuICAgIGNvbnN0IGVuZEluZGV4ID0gaSArIHNlYXJjaC5sZW5ndGg7XG5cbiAgICBrZXlzLmFkZCh2YWx1ZS5zdWJzdHJpbmcoaSwgZW5kSW5kZXgpKTtcbiAgICBpICs9ICt2YWx1ZUNvbnZlcnQubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oa2V5cyk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VGV4dENvbXBhcmUgPSAodGV4dDogc3RyaW5nLCBvcHRpb25zPzogSVRleHRGb3JtYXRPcHRpb25zKSA9PiB7XG4gIGlmICghdGV4dCkge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgdGV4dCA9IHRleHQubm9ybWFsaXplKCdORkMnKTtcblxuICByZXR1cm4gZm9ybWF0QnlPcHRpb25zKHRleHQsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZ1bGxOYW1lRm9ybWF0ID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gY2FwaXRhbGl6ZSh2YWx1ZSwgeyBsb3dlcmNhc2VPdGhlckNoYXJhY3RlcjogdHJ1ZSwgdHJpbTogdHJ1ZSwgcmVtb3ZlTXVsdGlwbGVTcGFjZTogdHJ1ZSwgcmVtb3ZlRW1vamk6IHRydWUgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FwaXRhbGl6ZSA9ICh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBJVGV4dEZvcm1hdE9wdGlvbnMpID0+IHtcbiAgaWYgKCF0ZXh0KSB7XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cbiAgdGV4dCA9IGZvcm1hdEJ5T3B0aW9ucyh0ZXh0LCBvcHRpb25zKTtcbiAgcmV0dXJuIHRleHRcbiAgICAuc3BsaXQoJyAnKVxuICAgIC5tYXAoKHdvcmQpID0+IGZpcnN0TGV0dGVyVG9VcHBlckNhc2Uod29yZCkpXG4gICAgLmpvaW4oJyAnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaXJzdExldHRlclRvVXBwZXJDYXNlID0gKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IElUZXh0Rm9ybWF0T3B0aW9ucykgPT4ge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuICByZXR1cm4gdXBwZXJjYXNlQnlQb3NpdGlvbih0ZXh0LCAwLCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cHBlcmNhc2VCeVBvc2l0aW9uID0gKHRleHQ6IHN0cmluZywgcG9zaXRpb246IG51bWJlciwgb3B0aW9ucz86IElUZXh0Rm9ybWF0T3B0aW9ucykgPT4ge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuICB0ZXh0ID0gZm9ybWF0QnlPcHRpb25zKHRleHQsIG9wdGlvbnMpO1xuICByZXR1cm4gYCR7dGV4dC5zdWJzdHJpbmcoMCwgcG9zaXRpb24pfSR7dGV4dC5jaGFyQXQocG9zaXRpb24pLnRvVXBwZXJDYXNlKCl9JHt0ZXh0LnN1YnN0cmluZyhwb3NpdGlvbiArIDEpfWA7XG59O1xuXG5jb25zdCBmb3JtYXRCeU9wdGlvbnMgPSAodGV4dDogc3RyaW5nLCBvcHRpb25zPzogSVRleHRGb3JtYXRPcHRpb25zKSA9PiB7XG4gIGlmICghdGV4dCB8fCAhb3B0aW9ucykge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG4gIGlmIChvcHRpb25zPy51cHBlcmNhc2VPdGhlckNoYXJhY3Rlcikge1xuICAgIHRleHQgPSB0ZXh0LnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBpZiAob3B0aW9ucz8ubG93ZXJjYXNlT3RoZXJDaGFyYWN0ZXIpIHtcbiAgICB0ZXh0ID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnM/LnJlbW92ZU11bHRpcGxlU3BhY2UpIHtcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXHUyMDBCfFxcdTAwQTAvZywgJycpO1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xccysvZywgJyAnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zPy5yZW1vdmVFbW9qaSkge1xuICAgIHRleHQgPSByZW1vdmVFbW9qaSh0ZXh0KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zPy5yZW1vdmVVbmljb2RlKSB7XG4gICAgdGV4dCA9IGRlbGV0ZVVuaWNvZGUodGV4dCk7XG4gIH1cblxuICBpZiAob3B0aW9ucz8udHJpbSkge1xuICAgIHRleHQgPSB0ZXh0LnRyaW0oKTtcbiAgfVxuXG4gIHJldHVybiB0ZXh0O1xufTtcblxuZXhwb3J0IGNvbnN0IGVzY2FwZUh0bWwgPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIXN0ciB8fCB0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKS5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJiMwMzk7Jyk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVjb2RlRXNjYXBlSHRtbCA9IChzdHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGh0bWxUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuXG4gIGh0bWxUYWcuaW5uZXJIVE1MID0gc3RyO1xuICB3aGlsZSAoc3RyKSB7XG4gICAgaWYgKHN0ciA9PT0gaHRtbFRhZy52YWx1ZSkge1xuICAgICAgc3RyID0gaHRtbFRhZy52YWx1ZTtcbiAgICAgIGh0bWxUYWcucmVtb3ZlKCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc3RyID0gaHRtbFRhZy52YWx1ZTtcbiAgICBodG1sVGFnLmlubmVySFRNTCA9IHN0cjtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlVW5pY29kZSA9IChzdHI6IHN0cmluZykgPT4ge1xuICBzdHIgPSBzdHIucmVwbGFjZSgvw6B8w6F84bqhfOG6o3zDo3zDonzhuqd84bqlfOG6rXzhuql84bqrfMSDfOG6sXzhuq984bq3fOG6s3zhurUvZywgJ2EnKTtcbiAgc3RyID0gc3RyLnJlcGxhY2UoL8OofMOpfOG6uXzhurt84bq9fMOqfOG7gXzhur984buHfOG7g3zDqsyDfOG7hS9nLCAnZScpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvw6x8w6184buLfOG7iXzEqS9nLCAnaScpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvw7J8w7N84buNfOG7j3zDtXzDtHzhu5N84buRfOG7mXzhu5V84buXfMahfOG7nXzhu5t84bujfOG7n3zhu6EvZywgJ28nKTtcbiAgc3RyID0gc3RyLnJlcGxhY2UoL8O5fMO6fOG7pXzhu6d8xal8xrB84burfOG7qXzhu7F84butfOG7ry9nLCAndScpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgv4buzfMO9fOG7tXzhu7d84bu5L2csICd5Jyk7XG4gIHN0ciA9IHN0ci5yZXBsYWNlKC/EkS9nLCAnZCcpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvw4B8w4F84bqgfOG6onzDg3zDgnzhuqZ84bqkfOG6rHzhuqh84bqqfMSCfOG6sHzhuq584bq2fOG6snzhurQvZywgJ0EnKTtcbiAgc3RyID0gc3RyLnJlcGxhY2UoL8OIfMOJfOG6uHzhurp84bq8fMOKfOG7gHzhur584buGfOG7gnzhu4QvZywgJ0UnKTtcbiAgc3RyID0gc3RyLnJlcGxhY2UoL8OMfMONfOG7inzhu4h8xKgvZywgJ0knKTtcbiAgc3RyID0gc3RyLnJlcGxhY2UoL8OSfMOTfOG7jHzhu458w5V8w5R84buSfOG7kHzhu5h84buUfOG7lnzGoHzhu5x84buafOG7onzhu5584bugL2csICdPJyk7XG4gIHN0ciA9IHN0ci5yZXBsYWNlKC/DmXzDmnzhu6R84bumfMWofMavfOG7qnzhu6h84buwfOG7rHzhu64vZywgJ1UnKTtcbiAgc3RyID0gc3RyLnJlcGxhY2UoL+G7snzDnXzhu7R84bu2fOG7uC9nLCAnWScpO1xuICBzdHIgPSBzdHIucmVwbGFjZSgvxJAvZywgJ0QnKTtcblxuICBzdHIgPSBzdHIucmVwbGFjZSgvXFx1MDMwMHxcXHUwMzAxfFxcdTAzMDN8XFx1MDMwOXxcXHUwMzIzL2csICcnKTsgLy8gzIAgzIEgzIMgzIkgzKMgIGh1eeG7gW4sIHPhuq9jLCBuZ8OjLCBo4buPaSwgbuG6t25nXG4gIHN0ciA9IHN0ci5yZXBsYWNlKC9cXHUwMkM2fFxcdTAzMDZ8XFx1MDMxQi9nLCAnJyk7IC8vIMuGIMyGIMybICDDgiwgw4osIMSCLCDGoCwgxq9cblxuICByZXR1cm4gc3RyLm5vcm1hbGl6ZSgnTkZDJyk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRW1vamkgPSAodGV4dDogc3RyaW5nKSA9PiB7XG4gIGlmICghdGV4dCB8fCAhdGV4dC50cmltKCkpIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIHJldHVybiB0ZXh0LnJlcGxhY2UocGF0dGVybkVtb2ppKCksICcnKTtcbn07XG4iXX0=
@@ -7,4 +7,4 @@ export const updateFunctionCheckEmbedFrame = (functionCustom) => {
7
7
  export const isEmbedFrame = () => {
8
8
  return functionCheck();
9
9
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY2hlY2stZW1iZWQtZnJhbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9mdW5jdGlvbi1jaGVjay1lbWJlZC1mcmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEMsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxjQUE2QixFQUFFLEVBQUU7SUFDN0UsYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUNqQyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBWSxFQUFFO0lBQ3hDLE9BQU8sYUFBYSxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsibGV0IGZ1bmN0aW9uQ2hlY2sgPSAoKSA9PiB7XG4gIHJldHVybiB3aW5kb3cucGFyZW50ICE9PSB3aW5kb3cudG9wO1xufVxuZXhwb3J0IGNvbnN0IHVwZGF0ZUZ1bmN0aW9uQ2hlY2tFbWJlZEZyYW1lID0gKGZ1bmN0aW9uQ3VzdG9tOiAoKSA9PiBib29sZWFuKSA9PiB7XG4gIGZ1bmN0aW9uQ2hlY2sgPSBmdW5jdGlvbkN1c3RvbTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzRW1iZWRGcmFtZSA9ICgpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uQ2hlY2soKTtcbn0iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tY2hlY2stZW1iZWQtZnJhbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9mdW5jdGlvbi1jaGVjay1lbWJlZC1mcmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxjQUE2QixFQUFFLEVBQUU7SUFDN0UsYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBWSxFQUFFO0lBQ3hDLE9BQU8sYUFBYSxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsibGV0IGZ1bmN0aW9uQ2hlY2sgPSAoKSA9PiB7XG4gIHJldHVybiB3aW5kb3cucGFyZW50ICE9PSB3aW5kb3cudG9wO1xufTtcbmV4cG9ydCBjb25zdCB1cGRhdGVGdW5jdGlvbkNoZWNrRW1iZWRGcmFtZSA9IChmdW5jdGlvbkN1c3RvbTogKCkgPT4gYm9vbGVhbikgPT4ge1xuICBmdW5jdGlvbkNoZWNrID0gZnVuY3Rpb25DdXN0b207XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbWJlZEZyYW1lID0gKCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gZnVuY3Rpb25DaGVjaygpO1xufTtcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { isNil } from "./helpers";
1
+ import { isNil } from './helpers';
2
2
  const DEFAULT_MIN_TICK_COUNT = 5;
3
3
  const DEFAULT_MAX_TICK_COUNT = 10;
4
4
  const MIN_DISTANCE_TO_ZERO = 3;
@@ -65,12 +65,12 @@ export const getSmartAxisScale = (originalMaxData, options) => {
65
65
  }
66
66
  const maxValuePositive = maxValue - Math.abs(minValue);
67
67
  tickCount = maxValuePositive - originalMaxData > Math.abs(step) && tickCount - 1 >= minTickCount ? tickCount - 1 : tickCount;
68
- maxValue = (step * tickCount * scaleDirection) - (minValue * scaleDirection);
68
+ maxValue = step * tickCount * scaleDirection - minValue * scaleDirection;
69
69
  return {
70
70
  stepSize: Math.abs(step),
71
71
  max: maxValue,
72
72
  min: minValue,
73
- tickAmount: tickCount
73
+ tickAmount: tickCount,
74
74
  };
75
75
  }
76
76
  }
@@ -85,7 +85,7 @@ export const getSmartAxisScale = (originalMaxData, options) => {
85
85
  stepSize: Math.abs(step),
86
86
  max: maxValue,
87
87
  min: 0,
88
- tickAmount: minTickCount
88
+ tickAmount: minTickCount,
89
89
  };
90
90
  };
91
91
  // Cache cho các giá trị lũy thừa 10 để tối ưu hiệu suất
@@ -141,7 +141,7 @@ const getStepCandidates = (maxData, minStep, minNegative, acceptStepIsTypeFloat
141
141
  const checkAndSetNegativeSteps = (stepCandidates, acceptNegative, minNegative) => {
142
142
  if (acceptNegative && minNegative < 0) {
143
143
  // Tạo các step âm và thêm vào đầu danh sách
144
- const negativeSteps = [...stepCandidates].map(step => -step);
144
+ const negativeSteps = [...stepCandidates].map((step) => -step);
145
145
  stepCandidates.unshift(...negativeSteps);
146
146
  }
147
147
  };
@@ -154,21 +154,21 @@ const checkAndSetNegativeSteps = (stepCandidates, acceptNegative, minNegative) =
154
154
  const validateInputs = (maxData, options) => {
155
155
  // Kiểm tra maxData âm khi không chấp nhận giá trị âm
156
156
  if (maxData < 0 && !options?.acceptNegative) {
157
- throw new Error("maxData is less than 0 and acceptNegative is false");
157
+ throw new Error('maxData is less than 0 and acceptNegative is false');
158
158
  }
159
159
  if (options?.acceptNegative) {
160
160
  // Kiểm tra minNegative có được cung cấp không
161
161
  if (isNil(options.minNegative)) {
162
- throw new Error("minNegative is required when acceptNegative is true");
162
+ throw new Error('minNegative is required when acceptNegative is true');
163
163
  }
164
164
  // Kiểm tra maxData phải >= minNegative
165
165
  if (maxData < options.minNegative) {
166
- throw new Error("maxData is less than minNegative");
166
+ throw new Error('maxData is less than minNegative');
167
167
  }
168
168
  // Kiểm tra minNegative phải là số âm
169
169
  if (options.minNegative >= 0) {
170
- throw new Error("minNegative must be negative");
170
+ throw new Error('minNegative must be negative');
171
171
  }
172
172
  }
173
173
  };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXNtYXJ0LWF4aXMtc2NhbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9nZXQtc21hcnQtYXhpcy1zY2FsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFtQi9COzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsZUFBdUIsRUFBRSxPQUEwQixFQUFtQixFQUFFO0lBQ3hHLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUU5QixjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLE9BQU8sRUFBRSxZQUFZLElBQUksc0JBQXNCLENBQUM7SUFDckUsTUFBTSxZQUFZLEdBQUcsT0FBTyxFQUFFLFlBQVksSUFBSSxzQkFBc0IsQ0FBQztJQUVyRSxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDdkIsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDO0lBRzVCLElBQUksT0FBTyxFQUFFLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakIsYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksYUFBYSxHQUFHLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsYUFBYSxHQUFHLHVCQUF1QixDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoQixhQUFhLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ25ELGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQ3RDLE9BQU8sRUFDUCxZQUFZLEVBQ1osT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLEVBQ3pCLE9BQU8sRUFBRSxxQkFBcUIsRUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFDdkIsT0FBTyxFQUFFLGNBQWMsQ0FDeEIsQ0FBQztJQUNGLEtBQUssTUFBTSxJQUFJLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksUUFBUSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDcEUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLElBQUksU0FBUyxJQUFJLFlBQVksSUFBSSxTQUFTLElBQUksWUFBWSxFQUFFLENBQUM7WUFDM0QsSUFBSSxPQUFPLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO29CQUM1QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUMzRixRQUFRLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQzt3QkFDdkIsSUFBSSxFQUFFLENBQUM7b0JBQ1QsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZELFNBQVMsR0FBRyxnQkFBZ0IsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUU3SCxRQUFRLEdBQUcsQ0FBQyxJQUFJLEdBQUcsU0FBUyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQyxDQUFDO2dCQUM3RSxPQUFPO29CQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDeEIsR0FBRyxFQUFFLFFBQVE7b0JBQ2IsR0FBRyxFQUFFLFFBQVE7b0JBQ2IsVUFBVSxFQUFFLFNBQVM7aUJBQ3RCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEQsSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHLFlBQVksQ0FBQztJQUNuQyxJQUFJLGFBQWEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLFFBQVEsR0FBRyxJQUFJLEdBQUcsWUFBWSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hCLEdBQUcsRUFBRSxRQUFRO1FBQ2IsR0FBRyxFQUFFLENBQUM7UUFDTixVQUFVLEVBQUUsWUFBWTtLQUN6QixDQUFDO0FBQ0osQ0FBQyxDQUFBO0FBRUQsd0RBQXdEO0FBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0FBRTlDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsT0FBZSxFQUNmLE9BQWUsRUFDZixXQUFtQixFQUNuQixxQkFBcUIsR0FBRyxLQUFLLEVBQzdCLHVCQUFrQyxFQUNsQyxvQkFBb0IsR0FBRyxLQUFLLEVBQ2xCLEVBQUU7SUFDWixrREFBa0Q7SUFDbEQsSUFBRyx1QkFBdUIsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDLENBQUM7UUFDaEUsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUUsSUFBSSxLQUFLLEVBQVUsQ0FBQztJQUMxQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFFdkYsK0NBQStDO0lBQy9DLEtBQUssSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsSUFBSSxjQUFjLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUNqRSxvQ0FBb0M7UUFDcEMsSUFBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUMsQ0FBQztZQUM5QixXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBVyxDQUFDO1FBRXRELEtBQUssSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3BGLHlDQUF5QztZQUN6QyxJQUFJLHFCQUFxQixFQUFFLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsY0FBYyxDQUFDO1lBQ3ZDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFMUIsMEJBQTBCO1lBQzFCLElBQUksSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUN6Qix3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQzVFLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RSxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDLENBQUE7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxjQUF3QixFQUFFLGNBQXVCLEVBQUUsV0FBbUIsRUFBUSxFQUFFO0lBQ2hILElBQUksY0FBYyxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0Qyw0Q0FBNEM7UUFDNUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7QUFDSCxDQUFDLENBQUE7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBZSxFQUFFLE9BQTBCLEVBQVEsRUFBRTtJQUMzRSxxREFBcUQ7SUFDckQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDNUIsOENBQThDO1FBQzlDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsdUNBQXVDO1FBQ3ZDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOaWwgfSBmcm9tIFwiLi9oZWxwZXJzXCI7XG5jb25zdCBERUZBVUxUX01JTl9USUNLX0NPVU5UID0gNTtcbmNvbnN0IERFRkFVTFRfTUFYX1RJQ0tfQ09VTlQgPSAxMDtcbmNvbnN0IE1JTl9ESVNUQU5DRV9UT19aRVJPID0gMztcbmNvbnN0IE5FR0FUSVZFX1RIUkVTSE9MRCA9IC01O1xuY29uc3QgRkFMTEJBQ0tfTkVHQVRJVkVfVkFMVUUgPSAtNDtcbmNvbnN0IE1BWF9QT1dfTlVNQkVSID0gMTQ7XG5jb25zdCBNQVhfVEVNUExBVEVfTlVNQkVSID0gMTA7XG5cbi8vIOKchSBUaMOqbSBpbnRlcmZhY2VzIMSR4buDIHTEg25nIGPGsOG7nW5nIHR5cGUgc2FmZXR5XG5pbnRlcmZhY2UgQXhpc1NjYWxlT3B0aW9ucyB7XG4gIG1pblRpY2tDb3VudD86IG51bWJlcjsgLy8gU+G7kSBsxrDhu6NuZyB0aWNrIHThu5FpIHRoaeG7g3VcbiAgbWF4VGlja0NvdW50PzogbnVtYmVyOyAvLyBT4buRIGzGsOG7o25nIHRpY2sgdOG7kWkgxJFhXG4gIHN0ZXBDYW5kaWRhdGVzPzogbnVtYmVyW107IC8vIERhbmggc8OhY2ggY8OhYyBzdGVwIGNhbmRpZGF0ZXMgdMO5eSBjaOG7iW5oXG4gIGFjY2VwdE5lZ2F0aXZlPzogYm9vbGVhbjsgLy8gQ8OzIGNo4bqlcCBuaOG6rW4gZ2nDoSB0cuG7iyDDom0ga2jDtG5nXG4gIG1pbk5lZ2F0aXZlPzogbnVtYmVyOyAvLyBHacOhIHRy4buLIMOibSB04buRaSB0aGnhu4N1XG4gIGFjY2VwdFN0ZXBJc1R5cGVGbG9hdD86IGJvb2xlYW47IC8vIEPDsyBjaOG6pXAgbmjhuq1uIHN0ZXAgbMOgIHPhu5EgdGjhuq1wIHBow6JuIGtow7RuZ1xufVxuXG5pbnRlcmZhY2UgQXhpc1NjYWxlUmVzdWx0IHtcbiAgc3RlcFNpemU6IG51bWJlcjsgLy8gS8OtY2ggdGjGsOG7m2MgYsaw4bubY1xuICBtYXg6IG51bWJlcjsgLy8gR2nDoSB0cuG7iyB04buRaSDEkWEgY+G7p2EgdHLhu6VjXG4gIG1pbjogbnVtYmVyOyAvLyBHacOhIHRy4buLIHThu5FpIHRoaeG7g3UgY+G7p2EgdHLhu6VjXG4gIHRpY2tBbW91bnQ6IG51bWJlcjsgLy8gU+G7kSBsxrDhu6NuZyB0aWNrXG59XG5cbi8qKlxuICogVMOtbmggdG/DoW4gc21hcnQgYXhpcyBzY2FsZSBjaG8gYmnhu4N1IMSR4buTXG4gKiBcbiAqIEBwYXJhbSBtYXhEYXRhIC0gR2nDoSB0cuG7iyB04buRaSDEkWEgY+G7p2EgZOG7ryBsaeG7h3VcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ8OhYyB0w7l5IGNo4buNbiBj4bqldSBow6xuaCBheGlzIHNjYWxlXG4gKiBAcmV0dXJucyBD4bqldSBow6xuaCBheGlzIHNjYWxlIGJhbyBn4buTbSBzdGVwU2l6ZSwgbWF4LCBtaW4sIHRpY2tBbW91bnRcbiAqIFxuICogQHRocm93cyB7RXJyb3J9IElOVkFMSURfTkVHQVRJVkVfREFUQSAtIGtoaSBtYXhEYXRhIDwgMCBtw6AgYWNjZXB0TmVnYXRpdmUgPSBmYWxzZVxuICogQHRocm93cyB7RXJyb3J9IE1JU1NJTkdfTUlOX05FR0FUSVZFIC0ga2hpIGFjY2VwdE5lZ2F0aXZlID0gdHJ1ZSBuaMawbmcgdGhp4bq/dSBtaW5OZWdhdGl2ZVxuICogQHRocm93cyB7RXJyb3J9IElOVkFMSURfUkFOR0UgLSBraGkgbWF4RGF0YSA8IG1pbk5lZ2F0aXZlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSU5WQUxJRF9NSU5fTkVHQVRJVkUgLSBraGkgbWluTmVnYXRpdmUgPj0gMFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVzdWx0ID0gZ2V0U21hcnRBeGlzU2NhbGUoMTAwLCB7IG1pblRpY2tDb3VudDogNSwgbWF4VGlja0NvdW50OiAxMCB9KTtcbiAqIC8vIHJldHVybnMgeyBzdGVwU2l6ZTogMjAsIG1heDogMTIwLCBtaW46IDAsIHRpY2tBbW91bnQ6IDYgfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTbWFydEF4aXNTY2FsZSA9IChvcmlnaW5hbE1heERhdGE6IG51bWJlciwgb3B0aW9ucz86IEF4aXNTY2FsZU9wdGlvbnMpOiBBeGlzU2NhbGVSZXN1bHQgPT4ge1xuICBsZXQgbWF4RGF0YSA9IG9yaWdpbmFsTWF4RGF0YTtcbiAgXG4gIHZhbGlkYXRlSW5wdXRzKG1heERhdGEsIG9wdGlvbnMpO1xuICBjb25zdCBtaW5UaWNrQ291bnQgPSBvcHRpb25zPy5taW5UaWNrQ291bnQgfHwgREVGQVVMVF9NSU5fVElDS19DT1VOVDtcbiAgY29uc3QgbWF4VGlja0NvdW50ID0gb3B0aW9ucz8ubWF4VGlja0NvdW50IHx8IERFRkFVTFRfTUFYX1RJQ0tfQ09VTlQ7XG4gIFxuICBsZXQgc2NhbGVEaXJlY3Rpb24gPSAxO1xuICBsZXQgcmFuZ2VEaXN0YW5jZSA9IG1heERhdGE7XG4gIFxuICBcbiAgaWYgKG9wdGlvbnM/LmFjY2VwdE5lZ2F0aXZlICYmICFpc05pbChvcHRpb25zLm1pbk5lZ2F0aXZlKSkge1xuICAgIGlmIChtYXhEYXRhID09PSAwKSB7XG4gICAgICBtYXhEYXRhID0gLTE7XG4gICAgfVxuICAgIGlmIChtYXhEYXRhIDw9IDApIHtcbiAgICAgIHJhbmdlRGlzdGFuY2UgPSBvcHRpb25zLm1pbk5lZ2F0aXZlO1xuICAgIH1cbiAgICBpZiAocmFuZ2VEaXN0YW5jZSA+IE5FR0FUSVZFX1RIUkVTSE9MRCkge1xuICAgICAgcmFuZ2VEaXN0YW5jZSA9IEZBTExCQUNLX05FR0FUSVZFX1ZBTFVFO1xuICAgIH1cbiAgICBpZiAobWF4RGF0YSA+IDApIHtcbiAgICAgIHJhbmdlRGlzdGFuY2UgPSBtYXhEYXRhICsgTWF0aC5hYnMob3B0aW9ucy5taW5OZWdhdGl2ZSk7XG4gICAgICBzY2FsZURpcmVjdGlvbiA9IC0xO1xuICAgIH1cbiAgfVxuICBpZiAoTWF0aC5hYnMocmFuZ2VEaXN0YW5jZSkgPCBNSU5fRElTVEFOQ0VfVE9fWkVSTykge1xuICAgIHJhbmdlRGlzdGFuY2UgPSBNSU5fRElTVEFOQ0VfVE9fWkVSTztcbiAgfVxuICBcbiAgY29uc3Qgc3RlcENhbmRpZGF0ZXMgPSBnZXRTdGVwQ2FuZGlkYXRlcyhcbiAgICBtYXhEYXRhLFxuICAgIG1pblRpY2tDb3VudCxcbiAgICBvcHRpb25zPy5taW5OZWdhdGl2ZSB8fCAwLFxuICAgIG9wdGlvbnM/LmFjY2VwdFN0ZXBJc1R5cGVGbG9hdCxcbiAgICBvcHRpb25zPy5zdGVwQ2FuZGlkYXRlcyxcbiAgICBvcHRpb25zPy5hY2NlcHROZWdhdGl2ZVxuICApO1xuICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcENhbmRpZGF0ZXMpIHtcbiAgICBsZXQgdGlja0NvdW50ID0gTWF0aC5hYnMoTWF0aC5jZWlsKHJhbmdlRGlzdGFuY2UgLyBzdGVwKSkgKyAoc2NhbGVEaXJlY3Rpb24gPT09IC0xID8gMiA6IDEpO1xuICAgIGxldCBtYXhWYWx1ZSA9IG1heERhdGEgPD0gMCA/IDAgOiBzdGVwICogdGlja0NvdW50ICogc2NhbGVEaXJlY3Rpb247XG4gICAgbGV0IG1pblZhbHVlID0gMDtcblxuICAgIGlmICh0aWNrQ291bnQgPj0gbWluVGlja0NvdW50ICYmIHRpY2tDb3VudCA8PSBtYXhUaWNrQ291bnQpIHtcbiAgICAgIGlmIChtYXhEYXRhIDwgbWF4VmFsdWUpIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmFjY2VwdE5lZ2F0aXZlKSB7XG4gICAgICAgICAgbGV0IHRpY2sgPSAxO1xuICAgICAgICAgIHdoaWxlICghaXNOaWwob3B0aW9ucy5taW5OZWdhdGl2ZSkgJiYgdGljayA8PSB0aWNrQ291bnQgJiYgbWluVmFsdWUgPj0gb3B0aW9ucy5taW5OZWdhdGl2ZSkge1xuICAgICAgICAgICAgbWluVmFsdWUgPSB0aWNrICogc3RlcDtcbiAgICAgICAgICAgIHRpY2srKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4VmFsdWVQb3NpdGl2ZSA9IG1heFZhbHVlIC0gTWF0aC5hYnMobWluVmFsdWUpO1xuICAgICAgICB0aWNrQ291bnQgPSBtYXhWYWx1ZVBvc2l0aXZlIC0gb3JpZ2luYWxNYXhEYXRhID4gTWF0aC5hYnMoc3RlcCkgJiYgdGlja0NvdW50IC0gMSA+PSBtaW5UaWNrQ291bnQgPyB0aWNrQ291bnQgLSAxIDogdGlja0NvdW50O1xuXG4gICAgICAgIG1heFZhbHVlID0gKHN0ZXAgKiB0aWNrQ291bnQgKiBzY2FsZURpcmVjdGlvbikgLSAobWluVmFsdWUgKiBzY2FsZURpcmVjdGlvbik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3RlcFNpemU6IE1hdGguYWJzKHN0ZXApLFxuICAgICAgICAgIG1heDogbWF4VmFsdWUsXG4gICAgICAgICAgbWluOiBtaW5WYWx1ZSxcbiAgICAgICAgICB0aWNrQW1vdW50OiB0aWNrQ291bnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgc3RlcCA9IE1hdGguY2VpbChyYW5nZURpc3RhbmNlIC8gbWluVGlja0NvdW50KSB8fCAxO1xuICBsZXQgbWF4VmFsdWUgPSBzdGVwICogbWluVGlja0NvdW50O1xuICBpZiAocmFuZ2VEaXN0YW5jZSA9PT0gbWF4VmFsdWUpIHtcbiAgICBzdGVwID0gc3RlcCArIE1hdGguY2VpbChzdGVwIC8gMTApO1xuICAgIG1heFZhbHVlID0gc3RlcCAqIG1pblRpY2tDb3VudDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHN0ZXBTaXplOiBNYXRoLmFicyhzdGVwKSxcbiAgICBtYXg6IG1heFZhbHVlLFxuICAgIG1pbjogMCxcbiAgICB0aWNrQW1vdW50OiBtaW5UaWNrQ291bnRcbiAgfTtcbn1cblxuLy8gQ2FjaGUgY2hvIGPDoWMgZ2nDoSB0cuG7iyBsxal5IHRo4burYSAxMCDEkeG7gyB04buRaSDGsHUgaGnhu4d1IHN14bqldFxuY29uc3QgUE9XRVJfQ0FDSEUgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuXG4vKipcbiAqIFThuqFvIGRhbmggc8OhY2ggY8OhYyBzdGVwIGNhbmRpZGF0ZXMgY2hvIHZp4buHYyB0w61uaCB0b8OhbiBzY2FsZVxuICogQHBhcmFtIG1heERhdGEgLSBHacOhIHRy4buLIGThu68gbGnhu4d1IHThu5FpIMSRYVxuICogQHBhcmFtIG1pblN0ZXAgLSBT4buRIGLGsOG7m2MgdOG7kWkgdGhp4buDdVxuICogQHBhcmFtIG1pbk5lZ2F0aXZlIC0gR2nDoSB0cuG7iyDDom0gdOG7kWkgdGhp4buDdVxuICogQHBhcmFtIGFjY2VwdFN0ZXBJc1R5cGVGbG9hdCAtIEPDsyBjaOG6pXAgbmjhuq1uIHN0ZXAgdGjhuq1wIHBow6JuIGtow7RuZ1xuICogQHBhcmFtIHN0ZXBDYW5kaWRhdGVzQnlPcHRpb25zIC0gU3RlcCBjYW5kaWRhdGVzIGRvIG5nxrDhu51pIGTDuW5nIGN1bmcgY+G6pXBcbiAqIEBwYXJhbSBpbmNsdWRlTmVnYXRpdmVTdGVwcyAtIEPDsyBiYW8gZ+G7k20gY8OhYyBzdGVwIMOibSBraMO0bmdcbiAqIEByZXR1cm5zIERhbmggc8OhY2ggY8OhYyBzdGVwIGNhbmRpZGF0ZXNcbiAqL1xuY29uc3QgZ2V0U3RlcENhbmRpZGF0ZXMgPSAoXG4gIG1heERhdGE6IG51bWJlcixcbiAgbWluU3RlcDogbnVtYmVyLFxuICBtaW5OZWdhdGl2ZTogbnVtYmVyLFxuICBhY2NlcHRTdGVwSXNUeXBlRmxvYXQgPSBmYWxzZSxcbiAgc3RlcENhbmRpZGF0ZXNCeU9wdGlvbnM/OiBudW1iZXJbXSxcbiAgaW5jbHVkZU5lZ2F0aXZlU3RlcHMgPSBmYWxzZVxuKTogbnVtYmVyW10gPT4ge1xuICAvLyBO4bq/dSBjw7Mgc3RlcCBjYW5kaWRhdGVzIHTDuXkgY2jhu4luaCwgc+G7rSBk4bulbmcgY2jDum5nXG4gIGlmKHN0ZXBDYW5kaWRhdGVzQnlPcHRpb25zICYmIHN0ZXBDYW5kaWRhdGVzQnlPcHRpb25zLmxlbmd0aCA+IDApe1xuICAgIHJldHVybiBzdGVwQ2FuZGlkYXRlc0J5T3B0aW9ucztcbiAgfVxuICBcbiAgY29uc3Qgc3RlcENhbmRpZGF0ZXM9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gIGNvbnN0IG1heFZhbHVlU3RlcCA9IE1hdGguYWJzKE1hdGgubWF4KG1heERhdGEsIE1hdGguYWJzKG1pbk5lZ2F0aXZlIHx8IDApKSkgLyBtaW5TdGVwO1xuXG4gIC8vIFThuqFvIHN0ZXAgY2FuZGlkYXRlcyBk4buxYSB0csOqbiBsxal5IHRo4burYSBj4bunYSAxMFxuICBmb3IgKGxldCBwb3dOdW1iZXIgPSAwOyBwb3dOdW1iZXIgPD0gTUFYX1BPV19OVU1CRVI7IHBvd051bWJlcisrKSB7XG4gICAgLy8gU+G7rSBk4bulbmcgY2FjaGUgxJHhu4MgdOG7kWkgxrB1IGhp4buHdSBzdeG6pXRcbiAgICBpZighUE9XRVJfQ0FDSEUuaGFzKHBvd051bWJlcikpe1xuICAgICAgUE9XRVJfQ0FDSEUuc2V0KHBvd051bWJlcixNYXRoLnBvdygxMCxwb3dOdW1iZXIpKTtcbiAgICB9XG4gICAgY29uc3QgcG93VmFsdWUgPSBQT1dFUl9DQUNIRS5nZXQocG93TnVtYmVyKSBhcyBudW1iZXI7XG4gICAgXG4gICAgZm9yIChsZXQgdGVtcGxhdGVOdW1iZXIgPSAxOyB0ZW1wbGF0ZU51bWJlciA8IE1BWF9URU1QTEFURV9OVU1CRVI7IHRlbXBsYXRlTnVtYmVyKyspIHtcbiAgICAgIC8vIFRow6ptIHN0ZXAgdGjhuq1wIHBow6JuIG7hur91IMSRxrDhu6NjIGNo4bqlcCBuaOG6rW5cbiAgICAgIGlmIChhY2NlcHRTdGVwSXNUeXBlRmxvYXQpIHtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHBvd1ZhbHVlICogKCgodGVtcGxhdGVOdW1iZXIgLSAxKSAqIDIgKyAxKSAvIDIpO1xuICAgICAgICBzdGVwQ2FuZGlkYXRlcy5wdXNoKHN0ZXApO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCBzdGVwID0gcG93VmFsdWUgKiB0ZW1wbGF0ZU51bWJlcjtcbiAgICAgIHN0ZXBDYW5kaWRhdGVzLnB1c2goc3RlcCk7XG5cbiAgICAgIC8vIEThu6tuZyBraGkgc3RlcCDEkcOjIMSR4bunIGzhu5tuXG4gICAgICBpZiAoc3RlcCA+PSBtYXhWYWx1ZVN0ZXApIHtcbiAgICAgICAgY2hlY2tBbmRTZXROZWdhdGl2ZVN0ZXBzKHN0ZXBDYW5kaWRhdGVzLCBpbmNsdWRlTmVnYXRpdmVTdGVwcywgbWluTmVnYXRpdmUpO1xuICAgICAgICByZXR1cm4gc3RlcENhbmRpZGF0ZXM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBjaGVja0FuZFNldE5lZ2F0aXZlU3RlcHMoc3RlcENhbmRpZGF0ZXMsIGluY2x1ZGVOZWdhdGl2ZVN0ZXBzLCBtaW5OZWdhdGl2ZSk7XG4gIHJldHVybiBzdGVwQ2FuZGlkYXRlcztcbn1cblxuLyoqXG4gKiBLaeG7g20gdHJhIHbDoCB0aMOqbSBjw6FjIHN0ZXAgw6JtIHbDoG8gZGFuaCBzw6FjaCBjYW5kaWRhdGVzIG7hur91IGPhuqduXG4gKiBAcGFyYW0gc3RlcENhbmRpZGF0ZXMgLSBEYW5oIHPDoWNoIHN0ZXAgY2FuZGlkYXRlcyBoaeG7h24gdOG6oWlcbiAqIEBwYXJhbSBhY2NlcHROZWdhdGl2ZSAtIEPDsyBjaOG6pXAgbmjhuq1uIGdpw6EgdHLhu4sgw6JtIGtow7RuZ1xuICogQHBhcmFtIG1pbk5lZ2F0aXZlIC0gR2nDoSB0cuG7iyDDom0gdOG7kWkgdGhp4buDdVxuICovXG5jb25zdCBjaGVja0FuZFNldE5lZ2F0aXZlU3RlcHMgPSAoc3RlcENhbmRpZGF0ZXM6IG51bWJlcltdLCBhY2NlcHROZWdhdGl2ZTogYm9vbGVhbiwgbWluTmVnYXRpdmU6IG51bWJlcik6IHZvaWQgPT4ge1xuICBpZiAoYWNjZXB0TmVnYXRpdmUgJiYgbWluTmVnYXRpdmUgPCAwKSB7XG4gICAgLy8gVOG6oW8gY8OhYyBzdGVwIMOibSB2w6AgdGjDqm0gdsOgbyDEkeG6p3UgZGFuaCBzw6FjaFxuICAgIGNvbnN0IG5lZ2F0aXZlU3RlcHMgPSBbLi4uc3RlcENhbmRpZGF0ZXNdLm1hcChzdGVwID0+IC1zdGVwKTtcbiAgICBzdGVwQ2FuZGlkYXRlcy51bnNoaWZ0KC4uLm5lZ2F0aXZlU3RlcHMpO1xuICB9XG59IFxuXG4vKipcbiAqIEtp4buDbSB0cmEgdMOtbmggaOG7o3AgbOG7hyBj4bunYSBjw6FjIHRoYW0gc+G7kSDEkeG6p3UgdsOgb1xuICogQHBhcmFtIG1heERhdGEgLSBHacOhIHRy4buLIGThu68gbGnhu4d1IHThu5FpIMSRYVxuICogQHBhcmFtIG9wdGlvbnMgLSBDw6FjIHTDuXkgY2jhu41uIGPhuqV1IGjDrG5oXG4gKiBAdGhyb3dzIHtFcnJvcn0gS2hpIGPDoWMgdGhhbSBz4buRIGtow7RuZyBo4bujcCBs4buHXG4gKi9cbmNvbnN0IHZhbGlkYXRlSW5wdXRzID0gKG1heERhdGE6IG51bWJlciwgb3B0aW9ucz86IEF4aXNTY2FsZU9wdGlvbnMpOiB2b2lkID0+IHtcbiAgLy8gS2nhu4NtIHRyYSBtYXhEYXRhIMOibSBraGkga2jDtG5nIGNo4bqlcCBuaOG6rW4gZ2nDoSB0cuG7iyDDom1cbiAgaWYgKG1heERhdGEgPCAwICYmICFvcHRpb25zPy5hY2NlcHROZWdhdGl2ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm1heERhdGEgaXMgbGVzcyB0aGFuIDAgYW5kIGFjY2VwdE5lZ2F0aXZlIGlzIGZhbHNlXCIpO1xuICB9XG4gIFxuICBpZiAob3B0aW9ucz8uYWNjZXB0TmVnYXRpdmUpIHtcbiAgICAvLyBLaeG7g20gdHJhIG1pbk5lZ2F0aXZlIGPDsyDEkcaw4bujYyBjdW5nIGPhuqVwIGtow7RuZ1xuICAgIGlmIChpc05pbChvcHRpb25zLm1pbk5lZ2F0aXZlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwibWluTmVnYXRpdmUgaXMgcmVxdWlyZWQgd2hlbiBhY2NlcHROZWdhdGl2ZSBpcyB0cnVlXCIpO1xuICAgIH1cblxuICAgIC8vIEtp4buDbSB0cmEgbWF4RGF0YSBwaOG6o2kgPj0gbWluTmVnYXRpdmVcbiAgICBpZiAobWF4RGF0YSA8IG9wdGlvbnMubWluTmVnYXRpdmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm1heERhdGEgaXMgbGVzcyB0aGFuIG1pbk5lZ2F0aXZlXCIpO1xuICAgIH1cblxuICAgIC8vIEtp4buDbSB0cmEgbWluTmVnYXRpdmUgcGjhuqNpIGzDoCBz4buRIMOibVxuICAgIGlmIChvcHRpb25zLm1pbk5lZ2F0aXZlID49IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm1pbk5lZ2F0aXZlIG11c3QgYmUgbmVnYXRpdmVcIik7XG4gICAgfVxuICB9XG59ICJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXNtYXJ0LWF4aXMtc2NhbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9nZXQtc21hcnQtYXhpcy1zY2FsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFtQi9COzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsZUFBdUIsRUFBRSxPQUEwQixFQUFtQixFQUFFO0lBQ3hHLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUU5QixjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLE9BQU8sRUFBRSxZQUFZLElBQUksc0JBQXNCLENBQUM7SUFDckUsTUFBTSxZQUFZLEdBQUcsT0FBTyxFQUFFLFlBQVksSUFBSSxzQkFBc0IsQ0FBQztJQUVyRSxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDdkIsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDO0lBRTVCLElBQUksT0FBTyxFQUFFLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQixPQUFPLEdBQUcsQ0FBQyxD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bnN0IERFRkFVTFRfTUlOX1RJQ0tfQ09VTlQgPSA1O1xuY29uc3QgREVGQVVMVF9NQVhfVElDS19DT1VOVCA9IDEwO1xuY29uc3QgTUlOX0RJU1RBTkNFX1RPX1pFUk8gPSAzO1xuY29uc3QgTkVHQVRJVkVfVEhSRVNIT0xEID0gLTU7XG5jb25zdCBGQUxMQkFDS19ORUdBVElWRV9WQUxVRSA9IC00O1xuY29uc3QgTUFYX1BPV19OVU1CRVIgPSAxNDtcbmNvbnN0IE1BWF9URU1QTEFURV9OVU1CRVIgPSAxMDtcblxuLy8g4pyFIFRow6ptIGludGVyZmFjZXMgxJHhu4MgdMSDbmcgY8aw4budbmcgdHlwZSBzYWZldHlcbmludGVyZmFjZSBBeGlzU2NhbGVPcHRpb25zIHtcbiAgbWluVGlja0NvdW50PzogbnVtYmVyOyAvLyBT4buRIGzGsOG7o25nIHRpY2sgdOG7kWkgdGhp4buDdVxuICBtYXhUaWNrQ291bnQ/OiBudW1iZXI7IC8vIFPhu5EgbMaw4bujbmcgdGljayB04buRaSDEkWFcbiAgc3RlcENhbmRpZGF0ZXM/OiBudW1iZXJbXTsgLy8gRGFuaCBzw6FjaCBjw6FjIHN0ZXAgY2FuZGlkYXRlcyB0w7l5IGNo4buJbmhcbiAgYWNjZXB0TmVnYXRpdmU/OiBib29sZWFuOyAvLyBDw7MgY2jhuqVwIG5o4bqtbiBnacOhIHRy4buLIMOibSBraMO0bmdcbiAgbWluTmVnYXRpdmU/OiBudW1iZXI7IC8vIEdpw6EgdHLhu4sgw6JtIHThu5FpIHRoaeG7g3VcbiAgYWNjZXB0U3RlcElzVHlwZUZsb2F0PzogYm9vbGVhbjsgLy8gQ8OzIGNo4bqlcCBuaOG6rW4gc3RlcCBsw6Agc+G7kSB0aOG6rXAgcGjDom4ga2jDtG5nXG59XG5cbmludGVyZmFjZSBBeGlzU2NhbGVSZXN1bHQge1xuICBzdGVwU2l6ZTogbnVtYmVyOyAvLyBLw61jaCB0aMaw4bubYyBixrDhu5tjXG4gIG1heDogbnVtYmVyOyAvLyBHacOhIHRy4buLIHThu5FpIMSRYSBj4bunYSB0cuG7pWNcbiAgbWluOiBudW1iZXI7IC8vIEdpw6EgdHLhu4sgdOG7kWkgdGhp4buDdSBj4bunYSB0cuG7pWNcbiAgdGlja0Ftb3VudDogbnVtYmVyOyAvLyBT4buRIGzGsOG7o25nIHRpY2tcbn1cblxuLyoqXG4gKiBUw61uaCB0b8OhbiBzbWFydCBheGlzIHNjYWxlIGNobyBiaeG7g3UgxJHhu5NcbiAqXG4gKiBAcGFyYW0gbWF4RGF0YSAtIEdpw6EgdHLhu4sgdOG7kWkgxJFhIGPhu6dhIGThu68gbGnhu4d1XG4gKiBAcGFyYW0gb3B0aW9ucyAtIEPDoWMgdMO5eSBjaOG7jW4gY+G6pXUgaMOsbmggYXhpcyBzY2FsZVxuICogQHJldHVybnMgQ+G6pXUgaMOsbmggYXhpcyBzY2FsZSBiYW8gZ+G7k20gc3RlcFNpemUsIG1heCwgbWluLCB0aWNrQW1vdW50XG4gKlxuICogQHRocm93cyB7RXJyb3J9IElOVkFMSURfTkVHQVRJVkVfREFUQSAtIGtoaSBtYXhEYXRhIDwgMCBtw6AgYWNjZXB0TmVnYXRpdmUgPSBmYWxzZVxuICogQHRocm93cyB7RXJyb3J9IE1JU1NJTkdfTUlOX05FR0FUSVZFIC0ga2hpIGFjY2VwdE5lZ2F0aXZlID0gdHJ1ZSBuaMawbmcgdGhp4bq/dSBtaW5OZWdhdGl2ZVxuICogQHRocm93cyB7RXJyb3J9IElOVkFMSURfUkFOR0UgLSBraGkgbWF4RGF0YSA8IG1pbk5lZ2F0aXZlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSU5WQUxJRF9NSU5fTkVHQVRJVkUgLSBraGkgbWluTmVnYXRpdmUgPj0gMFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSBnZXRTbWFydEF4aXNTY2FsZSgxMDAsIHsgbWluVGlja0NvdW50OiA1LCBtYXhUaWNrQ291bnQ6IDEwIH0pO1xuICogLy8gcmV0dXJucyB7IHN0ZXBTaXplOiAyMCwgbWF4OiAxMjAsIG1pbjogMCwgdGlja0Ftb3VudDogNiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNtYXJ0QXhpc1NjYWxlID0gKG9yaWdpbmFsTWF4RGF0YTogbnVtYmVyLCBvcHRpb25zPzogQXhpc1NjYWxlT3B0aW9ucyk6IEF4aXNTY2FsZVJlc3VsdCA9PiB7XG4gIGxldCBtYXhEYXRhID0gb3JpZ2luYWxNYXhEYXRhO1xuXG4gIHZhbGlkYXRlSW5wdXRzKG1heERhdGEsIG9wdGlvbnMpO1xuICBjb25zdCBtaW5UaWNrQ291bnQgPSBvcHRpb25zPy5taW5UaWNrQ291bnQgfHwgREVGQVVMVF9NSU5fVElDS19DT1VOVDtcbiAgY29uc3QgbWF4VGlja0NvdW50ID0gb3B0aW9ucz8ubWF4VGlja0NvdW50IHx8IERFRkFVTFRfTUFYX1RJQ0tfQ09VTlQ7XG5cbiAgbGV0IHNjYWxlRGlyZWN0aW9uID0gMTtcbiAgbGV0IHJhbmdlRGlzdGFuY2UgPSBtYXhEYXRhO1xuXG4gIGlmIChvcHRpb25zPy5hY2NlcHROZWdhdGl2ZSAmJiAhaXNOaWwob3B0aW9ucy5taW5OZWdhdGl2ZSkpIHtcbiAgICBpZiAobWF4RGF0YSA9PT0gMCkge1xuICAgICAgbWF4RGF0YSA9IC0xO1xuICAgIH1cbiAgICBpZiAobWF4RGF0YSA8PSAwKSB7XG4gICAgICByYW5nZURpc3RhbmNlID0gb3B0aW9ucy5taW5OZWdhdGl2ZTtcbiAgICB9XG4gICAgaWYgKHJhbmdlRGlzdGFuY2UgPiBORUdBVElWRV9USFJFU0hPTEQpIHtcbiAgICAgIHJhbmdlRGlzdGFuY2UgPSBGQUxMQkFDS19ORUdBVElWRV9WQUxVRTtcbiAgICB9XG4gICAgaWYgKG1heERhdGEgPiAwKSB7XG4gICAgICByYW5nZURpc3RhbmNlID0gbWF4RGF0YSArIE1hdGguYWJzKG9wdGlvbnMubWluTmVnYXRpdmUpO1xuICAgICAgc2NhbGVEaXJlY3Rpb24gPSAtMTtcbiAgICB9XG4gIH1cbiAgaWYgKE1hdGguYWJzKHJhbmdlRGlzdGFuY2UpIDwgTUlOX0RJU1RBTkNFX1RPX1pFUk8pIHtcbiAgICByYW5nZURpc3RhbmNlID0gTUlOX0RJU1RBTkNFX1RPX1pFUk87XG4gIH1cblxuICBjb25zdCBzdGVwQ2FuZGlkYXRlcyA9IGdldFN0ZXBDYW5kaWRhdGVzKG1heERhdGEsIG1pblRpY2tDb3VudCwgb3B0aW9ucz8ubWluTmVnYXRpdmUgfHwgMCwgb3B0aW9ucz8uYWNjZXB0U3RlcElzVHlwZUZsb2F0LCBvcHRpb25zPy5zdGVwQ2FuZGlkYXRlcywgb3B0aW9ucz8uYWNjZXB0TmVnYXRpdmUpO1xuICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcENhbmRpZGF0ZXMpIHtcbiAgICBsZXQgdGlja0NvdW50ID0gTWF0aC5hYnMoTWF0aC5jZWlsKHJhbmdlRGlzdGFuY2UgLyBzdGVwKSkgKyAoc2NhbGVEaXJlY3Rpb24gPT09IC0xID8gMiA6IDEpO1xuICAgIGxldCBtYXhWYWx1ZSA9IG1heERhdGEgPD0gMCA/IDAgOiBzdGVwICogdGlja0NvdW50ICogc2NhbGVEaXJlY3Rpb247XG4gICAgbGV0IG1pblZhbHVlID0gMDtcblxuICAgIGlmICh0aWNrQ291bnQgPj0gbWluVGlja0NvdW50ICYmIHRpY2tDb3VudCA8PSBtYXhUaWNrQ291bnQpIHtcbiAgICAgIGlmIChtYXhEYXRhIDwgbWF4VmFsdWUpIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LmFjY2VwdE5lZ2F0aXZlKSB7XG4gICAgICAgICAgbGV0IHRpY2sgPSAxO1xuICAgICAgICAgIHdoaWxlICghaXNOaWwob3B0aW9ucy5taW5OZWdhdGl2ZSkgJiYgdGljayA8PSB0aWNrQ291bnQgJiYgbWluVmFsdWUgPj0gb3B0aW9ucy5taW5OZWdhdGl2ZSkge1xuICAgICAgICAgICAgbWluVmFsdWUgPSB0aWNrICogc3RlcDtcbiAgICAgICAgICAgIHRpY2srKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4VmFsdWVQb3NpdGl2ZSA9IG1heFZhbHVlIC0gTWF0aC5hYnMobWluVmFsdWUpO1xuICAgICAgICB0aWNrQ291bnQgPSBtYXhWYWx1ZVBvc2l0aXZlIC0gb3JpZ2luYWxNYXhEYXRhID4gTWF0aC5hYnMoc3RlcCkgJiYgdGlja0NvdW50IC0gMSA+PSBtaW5UaWNrQ291bnQgPyB0aWNrQ291bnQgLSAxIDogdGlja0NvdW50O1xuXG4gICAgICAgIG1heFZhbHVlID0gc3RlcCAqIHRpY2tDb3VudCAqIHNjYWxlRGlyZWN0aW9uIC0gbWluVmFsdWUgKiBzY2FsZURpcmVjdGlvbjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdGVwU2l6ZTogTWF0aC5hYnMoc3RlcCksXG4gICAgICAgICAgbWF4OiBtYXhWYWx1ZSxcbiAgICAgICAgICBtaW46IG1pblZhbHVlLFxuICAgICAgICAgIHRpY2tBbW91bnQ6IHRpY2tDb3VudCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgc3RlcCA9IE1hdGguY2VpbChyYW5nZURpc3RhbmNlIC8gbWluVGlja0NvdW50KSB8fCAxO1xuICBsZXQgbWF4VmFsdWUgPSBzdGVwICogbWluVGlja0NvdW50O1xuICBpZiAocmFuZ2VEaXN0YW5jZSA9PT0gbWF4VmFsdWUpIHtcbiAgICBzdGVwID0gc3RlcCArIE1hdGguY2VpbChzdGVwIC8gMTApO1xuICAgIG1heFZhbHVlID0gc3RlcCAqIG1pblRpY2tDb3VudDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHN0ZXBTaXplOiBNYXRoLmFicyhzdGVwKSxcbiAgICBtYXg6IG1heFZhbHVlLFxuICAgIG1pbjogMCxcbiAgICB0aWNrQW1vdW50OiBtaW5UaWNrQ291bnQsXG4gIH07XG59O1xuXG4vLyBDYWNoZSBjaG8gY8OhYyBnacOhIHRy4buLIGzFqXkgdGjhu6thIDEwIMSR4buDIHThu5FpIMawdSBoaeG7h3Ugc3XhuqV0XG5jb25zdCBQT1dFUl9DQUNIRSA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG5cbi8qKlxuICogVOG6oW8gZGFuaCBzw6FjaCBjw6FjIHN0ZXAgY2FuZGlkYXRlcyBjaG8gdmnhu4djIHTDrW5oIHRvw6FuIHNjYWxlXG4gKiBAcGFyYW0gbWF4RGF0YSAtIEdpw6EgdHLhu4sgZOG7ryBsaeG7h3UgdOG7kWkgxJFhXG4gKiBAcGFyYW0gbWluU3RlcCAtIFPhu5EgYsaw4bubYyB04buRaSB0aGnhu4N1XG4gKiBAcGFyYW0gbWluTmVnYXRpdmUgLSBHacOhIHRy4buLIMOibSB04buRaSB0aGnhu4N1XG4gKiBAcGFyYW0gYWNjZXB0U3RlcElzVHlwZUZsb2F0IC0gQ8OzIGNo4bqlcCBuaOG6rW4gc3RlcCB0aOG6rXAgcGjDom4ga2jDtG5nXG4gKiBAcGFyYW0gc3RlcENhbmRpZGF0ZXNCeU9wdGlvbnMgLSBTdGVwIGNhbmRpZGF0ZXMgZG8gbmfGsOG7nWkgZMO5bmcgY3VuZyBj4bqlcFxuICogQHBhcmFtIGluY2x1ZGVOZWdhdGl2ZVN0ZXBzIC0gQ8OzIGJhbyBn4buTbSBjw6FjIHN0ZXAgw6JtIGtow7RuZ1xuICogQHJldHVybnMgRGFuaCBzw6FjaCBjw6FjIHN0ZXAgY2FuZGlkYXRlc1xuICovXG5jb25zdCBnZXRTdGVwQ2FuZGlkYXRlcyA9IChtYXhEYXRhOiBudW1iZXIsIG1pblN0ZXA6IG51bWJlciwgbWluTmVnYXRpdmU6IG51bWJlciwgYWNjZXB0U3RlcElzVHlwZUZsb2F0ID0gZmFsc2UsIHN0ZXBDYW5kaWRhdGVzQnlPcHRpb25zPzogbnVtYmVyW10sIGluY2x1ZGVOZWdhdGl2ZVN0ZXBzID0gZmFsc2UpOiBudW1iZXJbXSA9PiB7XG4gIC8vIE7hur91IGPDsyBzdGVwIGNhbmRpZGF0ZXMgdMO5eSBjaOG7iW5oLCBz4butIGThu6VuZyBjaMO6bmdcbiAgaWYgKHN0ZXBDYW5kaWRhdGVzQnlPcHRpb25zICYmIHN0ZXBDYW5kaWRhdGVzQnlPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gc3RlcENhbmRpZGF0ZXNCeU9wdGlvbnM7XG4gIH1cblxuICBjb25zdCBzdGVwQ2FuZGlkYXRlcyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gIGNvbnN0IG1heFZhbHVlU3RlcCA9IE1hdGguYWJzKE1hdGgubWF4KG1heERhdGEsIE1hdGguYWJzKG1pbk5lZ2F0aXZlIHx8IDApKSkgLyBtaW5TdGVwO1xuXG4gIC8vIFThuqFvIHN0ZXAgY2FuZGlkYXRlcyBk4buxYSB0csOqbiBsxal5IHRo4burYSBj4bunYSAxMFxuICBmb3IgKGxldCBwb3dOdW1iZXIgPSAwOyBwb3dOdW1iZXIgPD0gTUFYX1BPV19OVU1CRVI7IHBvd051bWJlcisrKSB7XG4gICAgLy8gU+G7rSBk4bulbmcgY2FjaGUgxJHhu4MgdOG7kWkgxrB1IGhp4buHdSBzdeG6pXRcbiAgICBpZiAoIVBPV0VSX0NBQ0hFLmhhcyhwb3dOdW1iZXIpKSB7XG4gICAgICBQT1dFUl9DQUNIRS5zZXQocG93TnVtYmVyLCBNYXRoLnBvdygxMCwgcG93TnVtYmVyKSk7XG4gICAgfVxuICAgIGNvbnN0IHBvd1ZhbHVlID0gUE9XRVJfQ0FDSEUuZ2V0KHBvd051bWJlcikgYXMgbnVtYmVyO1xuXG4gICAgZm9yIChsZXQgdGVtcGxhdGVOdW1iZXIgPSAxOyB0ZW1wbGF0ZU51bWJlciA8IE1BWF9URU1QTEFURV9OVU1CRVI7IHRlbXBsYXRlTnVtYmVyKyspIHtcbiAgICAgIC8vIFRow6ptIHN0ZXAgdGjhuq1wIHBow6JuIG7hur91IMSRxrDhu6NjIGNo4bqlcCBuaOG6rW5cbiAgICAgIGlmIChhY2NlcHRTdGVwSXNUeXBlRmxvYXQpIHtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHBvd1ZhbHVlICogKCgodGVtcGxhdGVOdW1iZXIgLSAxKSAqIDIgKyAxKSAvIDIpO1xuICAgICAgICBzdGVwQ2FuZGlkYXRlcy5wdXNoKHN0ZXApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGVwID0gcG93VmFsdWUgKiB0ZW1wbGF0ZU51bWJlcjtcbiAgICAgIHN0ZXBDYW5kaWRhdGVzLnB1c2goc3RlcCk7XG5cbiAgICAgIC8vIEThu6tuZyBraGkgc3RlcCDEkcOjIMSR4bunIGzhu5tuXG4gICAgICBpZiAoc3RlcCA+PSBtYXhWYWx1ZVN0ZXApIHtcbiAgICAgICAgY2hlY2tBbmRTZXROZWdhdGl2ZVN0ZXBzKHN0ZXBDYW5kaWRhdGVzLCBpbmNsdWRlTmVnYXRpdmVTdGVwcywgbWluTmVnYXRpdmUpO1xuICAgICAgICByZXR1cm4gc3RlcENhbmRpZGF0ZXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBbmRTZXROZWdhdGl2ZVN0ZXBzKHN0ZXBDYW5kaWRhdGVzLCBpbmNsdWRlTmVnYXRpdmVTdGVwcywgbWluTmVnYXRpdmUpO1xuICByZXR1cm4gc3RlcENhbmRpZGF0ZXM7XG59O1xuXG4vKipcbiAqIEtp4buDbSB0cmEgdsOgIHRow6ptIGPDoWMgc3RlcCDDom0gdsOgbyBkYW5oIHPDoWNoIGNhbmRpZGF0ZXMgbuG6v3UgY+G6p25cbiAqIEBwYXJhbSBzdGVwQ2FuZGlkYXRlcyAtIERhbmggc8OhY2ggc3RlcCBjYW5kaWRhdGVzIGhp4buHbiB04bqhaVxuICogQHBhcmFtIGFjY2VwdE5lZ2F0aXZlIC0gQ8OzIGNo4bqlcCBuaOG6rW4gZ2nDoSB0cuG7iyDDom0ga2jDtG5nXG4gKiBAcGFyYW0gbWluTmVnYXRpdmUgLSBHacOhIHRy4buLIMOibSB04buRaSB0aGnhu4N1XG4gKi9cbmNvbnN0IGNoZWNrQW5kU2V0TmVnYXRpdmVTdGVwcyA9IChzdGVwQ2FuZGlkYXRlczogbnVtYmVyW10sIGFjY2VwdE5lZ2F0aXZlOiBib29sZWFuLCBtaW5OZWdhdGl2ZTogbnVtYmVyKTogdm9pZCA9PiB7XG4gIGlmIChhY2NlcHROZWdhdGl2ZSAmJiBtaW5OZWdhdGl2ZSA8IDApIHtcbiAgICAvLyBU4bqhbyBjw6FjIHN0ZXAgw6JtIHbDoCB0aMOqbSB2w6BvIMSR4bqndSBkYW5oIHPDoWNoXG4gICAgY29uc3QgbmVnYXRpdmVTdGVwcyA9IFsuLi5zdGVwQ2FuZGlkYXRlc10ubWFwKChzdGVwKSA9PiAtc3RlcCk7XG4gICAgc3RlcENhbmRpZGF0ZXMudW5zaGlmdCguLi5uZWdhdGl2ZVN0ZXBzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBLaeG7g20gdHJhIHTDrW5oIGjhu6NwIGzhu4cgY+G7p2EgY8OhYyB0aGFtIHPhu5EgxJHhuqd1IHbDoG9cbiAqIEBwYXJhbSBtYXhEYXRhIC0gR2nDoSB0cuG7iyBk4buvIGxp4buHdSB04buRaSDEkWFcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ8OhYyB0w7l5IGNo4buNbiBj4bqldSBow6xuaFxuICogQHRocm93cyB7RXJyb3J9IEtoaSBjw6FjIHRoYW0gc+G7kSBraMO0bmcgaOG7o3AgbOG7h1xuICovXG5jb25zdCB2YWxpZGF0ZUlucHV0cyA9IChtYXhEYXRhOiBudW1iZXIsIG9wdGlvbnM/OiBBeGlzU2NhbGVPcHRpb25zKTogdm9pZCA9PiB7XG4gIC8vIEtp4buDbSB0cmEgbWF4RGF0YSDDom0ga2hpIGtow7RuZyBjaOG6pXAgbmjhuq1uIGdpw6EgdHLhu4sgw6JtXG4gIGlmIChtYXhEYXRhIDwgMCAmJiAhb3B0aW9ucz8uYWNjZXB0TmVnYXRpdmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21heERhdGEgaXMgbGVzcyB0aGFuIDAgYW5kIGFjY2VwdE5lZ2F0aXZlIGlzIGZhbHNlJyk7XG4gIH1cblxuICBpZiAob3B0aW9ucz8uYWNjZXB0TmVnYXRpdmUpIHtcbiAgICAvLyBLaeG7g20gdHJhIG1pbk5lZ2F0aXZlIGPDsyDEkcaw4bujYyBjdW5nIGPhuqVwIGtow7RuZ1xuICAgIGlmIChpc05pbChvcHRpb25zLm1pbk5lZ2F0aXZlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaW5OZWdhdGl2ZSBpcyByZXF1aXJlZCB3aGVuIGFjY2VwdE5lZ2F0aXZlIGlzIHRydWUnKTtcbiAgICB9XG5cbiAgICAvLyBLaeG7g20gdHJhIG1heERhdGEgcGjhuqNpID49IG1pbk5lZ2F0aXZlXG4gICAgaWYgKG1heERhdGEgPCBvcHRpb25zLm1pbk5lZ2F0aXZlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21heERhdGEgaXMgbGVzcyB0aGFuIG1pbk5lZ2F0aXZlJyk7XG4gICAgfVxuXG4gICAgLy8gS2nhu4NtIHRyYSBtaW5OZWdhdGl2ZSBwaOG6o2kgbMOgIHPhu5Egw6JtXG4gICAgaWYgKG9wdGlvbnMubWluTmVnYXRpdmUgPj0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaW5OZWdhdGl2ZSBtdXN0IGJlIG5lZ2F0aXZlJyk7XG4gICAgfVxuICB9XG59O1xuIl19