@magic-xpa/utils 4.1000.0 → 4.1100.0-dev000.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +6 -6
  2. package/{esm2020 → esm2022}/index.mjs +27 -27
  3. package/{esm2020 → esm2022}/magic-xpa-utils.mjs +1 -1
  4. package/esm2022/src/Base64.mjs +164 -0
  5. package/{esm2020 → esm2022}/src/ChoiceUtils.mjs +78 -78
  6. package/esm2022/src/Constants.mjs +74 -0
  7. package/{esm2020 → esm2022}/src/DateTimeUtils.mjs +53 -53
  8. package/esm2022/src/DateUtil.mjs +58 -0
  9. package/esm2022/src/InternalInterface.mjs +341 -0
  10. package/{esm2020 → esm2022}/src/JSON_Utils.mjs +6 -6
  11. package/esm2022/src/Logger.mjs +216 -0
  12. package/{esm2020 → esm2022}/src/MagicConstants.mjs +11 -11
  13. package/{esm2020 → esm2022}/src/Misc.mjs +97 -97
  14. package/esm2022/src/MsgInterface.mjs +192 -0
  15. package/esm2022/src/PICInterface.mjs +60 -0
  16. package/esm2022/src/PlatformUtils.mjs +11 -0
  17. package/esm2022/src/Queue.mjs +28 -0
  18. package/esm2022/src/Randomizer.mjs +34 -0
  19. package/esm2022/src/RequestInfo.mjs +28 -0
  20. package/esm2022/src/Rtf.mjs +614 -0
  21. package/{esm2020 → esm2022}/src/StorageAttribute.mjs +83 -83
  22. package/esm2022/src/StrUtil.mjs +453 -0
  23. package/esm2022/src/SyncExecutionHelper.mjs +21 -0
  24. package/esm2022/src/UtilDateJpn.mjs +232 -0
  25. package/esm2022/src/UtilImeJpn.mjs +13 -0
  26. package/esm2022/src/UtilStrByteMode.mjs +300 -0
  27. package/esm2022/src/XMLConstants.mjs +169 -0
  28. package/esm2022/src/Xml/XmlParser.mjs +247 -0
  29. package/{esm2020 → esm2022}/src/enums.mjs +1762 -1762
  30. package/{fesm2015 → fesm2022}/magic-xpa-utils.mjs +5285 -5289
  31. package/fesm2022/magic-xpa-utils.mjs.map +1 -0
  32. package/index.d.ts +26 -26
  33. package/package.json +7 -13
  34. package/src/Base64.d.ts +17 -17
  35. package/src/ChoiceUtils.d.ts +5 -5
  36. package/src/Constants.d.ts +71 -71
  37. package/src/DateTimeUtils.d.ts +5 -5
  38. package/src/DateUtil.d.ts +6 -6
  39. package/src/InternalInterface.d.ts +337 -337
  40. package/src/JSON_Utils.d.ts +3 -3
  41. package/src/Logger.d.ts +49 -49
  42. package/src/MagicConstants.d.ts +9 -9
  43. package/src/Misc.d.ts +13 -13
  44. package/src/MsgInterface.d.ts +175 -175
  45. package/src/PICInterface.d.ts +50 -50
  46. package/src/PlatformUtils.d.ts +5 -5
  47. package/src/Queue.d.ts +9 -9
  48. package/src/Randomizer.d.ts +14 -14
  49. package/src/RequestInfo.d.ts +15 -14
  50. package/src/Rtf.d.ts +152 -152
  51. package/src/StorageAttribute.d.ts +14 -14
  52. package/src/StrUtil.d.ts +45 -45
  53. package/src/SyncExecutionHelper.d.ts +7 -7
  54. package/src/UtilDateJpn.d.ts +19 -19
  55. package/src/UtilImeJpn.d.ts +9 -9
  56. package/src/UtilStrByteMode.d.ts +27 -27
  57. package/src/XMLConstants.d.ts +167 -167
  58. package/src/Xml/XmlParser.d.ts +34 -34
  59. package/src/enums.d.ts +1564 -1564
  60. package/esm2020/src/Base64.mjs +0 -164
  61. package/esm2020/src/Constants.mjs +0 -74
  62. package/esm2020/src/DateUtil.mjs +0 -58
  63. package/esm2020/src/InternalInterface.mjs +0 -341
  64. package/esm2020/src/Logger.mjs +0 -216
  65. package/esm2020/src/MsgInterface.mjs +0 -192
  66. package/esm2020/src/PICInterface.mjs +0 -60
  67. package/esm2020/src/PlatformUtils.mjs +0 -11
  68. package/esm2020/src/Queue.mjs +0 -28
  69. package/esm2020/src/Randomizer.mjs +0 -34
  70. package/esm2020/src/RequestInfo.mjs +0 -26
  71. package/esm2020/src/Rtf.mjs +0 -616
  72. package/esm2020/src/StrUtil.mjs +0 -453
  73. package/esm2020/src/SyncExecutionHelper.mjs +0 -23
  74. package/esm2020/src/UtilDateJpn.mjs +0 -234
  75. package/esm2020/src/UtilImeJpn.mjs +0 -13
  76. package/esm2020/src/UtilStrByteMode.mjs +0 -300
  77. package/esm2020/src/XMLConstants.mjs +0 -169
  78. package/esm2020/src/Xml/XmlParser.mjs +0 -247
  79. package/fesm2015/magic-xpa-utils.mjs.map +0 -1
  80. package/fesm2020/magic-xpa-utils.mjs +0 -5328
  81. package/fesm2020/magic-xpa-utils.mjs.map +0 -1
@@ -1,84 +1,84 @@
1
- import { StorageAttribute } from "./enums";
2
- export class StorageAttributeCheck {
3
- static isTheSameType(type1, type2) {
4
- return type1 === type2 || (StorageAttributeCheck.isTypeNumeric(type1) && StorageAttributeCheck.isTypeNumeric(type2)) || (StorageAttributeCheck.isTypeLogical(type1) && StorageAttributeCheck.isTypeLogical(type2)) || (StorageAttributeCheck.IsTypeAlphaOrUnicode(type1) && StorageAttributeCheck.IsTypeAlphaOrUnicode(type2)) || (StorageAttributeCheck.isTypeBlob(type1) && StorageAttributeCheck.isTypeBlob(type2)) || (StorageAttributeCheck.isTypeDotNet(type1) && StorageAttributeCheck.isTypeDotNet(type2));
5
- }
6
- static isTypeBlob(type) {
7
- return type === StorageAttribute.BLOB || type === StorageAttribute.BLOB_VECTOR;
8
- }
9
- static isTypeAlpha(type) {
10
- return type === StorageAttribute.ALPHA || type === StorageAttribute.MEMO;
11
- }
12
- static isTypeNumeric(type) {
13
- return type === StorageAttribute.DATE || type === StorageAttribute.TIME || type === StorageAttribute.NUMERIC;
14
- }
15
- static isTypeLogical(type) {
16
- return type === StorageAttribute.BOOLEAN;
17
- }
18
- static isTypeDotNet(type) {
19
- return type === StorageAttribute.DOTNET;
20
- }
21
- static IsTypeAlphaOrUnicode(type) {
22
- return type === StorageAttribute.ALPHA || type === StorageAttribute.UNICODE;
23
- }
24
- static StorageFldAlphaOrUnicode(type1, type2) {
25
- return StorageAttributeCheck.IsTypeAlphaOrUnicode(type1) && StorageAttributeCheck.IsTypeAlphaOrUnicode(type2);
26
- }
27
- static StorageFldAlphaUnicodeOrBlob(type1, type2) {
28
- let type1AlphaOrUnicode = StorageAttributeCheck.IsTypeAlphaOrUnicode(type1);
29
- let type2AlphaOrUnicode = StorageAttributeCheck.IsTypeAlphaOrUnicode(type2);
30
- if (type1AlphaOrUnicode && type2AlphaOrUnicode) {
31
- return true;
32
- }
33
- else {
34
- let type1Blob = type1 === StorageAttribute.BLOB;
35
- let type2Blob = type2 === StorageAttribute.BLOB;
36
- return ((type1AlphaOrUnicode && type2Blob) || (type2AlphaOrUnicode && type1Blob));
37
- }
38
- }
39
- static IsTypeCompatibile(sourceAttribute, destinationAttribute) {
40
- let isTypeCompatible = false;
41
- switch (sourceAttribute) {
42
- case StorageAttribute.ALPHA:
43
- case StorageAttribute.UNICODE:
44
- if (destinationAttribute === StorageAttribute.ALPHA || destinationAttribute === StorageAttribute.UNICODE ||
45
- destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME ||
46
- destinationAttribute === StorageAttribute.NUMERIC) {
47
- isTypeCompatible = true;
48
- }
49
- break;
50
- case StorageAttribute.NUMERIC:
51
- if (destinationAttribute === StorageAttribute.NUMERIC || destinationAttribute === StorageAttribute.ALPHA ||
52
- destinationAttribute === StorageAttribute.UNICODE || destinationAttribute === StorageAttribute.BOOLEAN ||
53
- destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME) {
54
- isTypeCompatible = true;
55
- }
56
- break;
57
- case StorageAttribute.BOOLEAN:
58
- {
59
- if (destinationAttribute === StorageAttribute.BOOLEAN || destinationAttribute === StorageAttribute.ALPHA ||
60
- destinationAttribute === StorageAttribute.UNICODE || destinationAttribute === StorageAttribute.NUMERIC) {
61
- isTypeCompatible = true;
62
- }
63
- }
64
- break;
65
- case StorageAttribute.DATE:
66
- case StorageAttribute.TIME:
67
- if (destinationAttribute === StorageAttribute.ALPHA || destinationAttribute === StorageAttribute.UNICODE ||
68
- destinationAttribute === StorageAttribute.NUMERIC || destinationAttribute === StorageAttribute.BOOLEAN ||
69
- destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME) {
70
- isTypeCompatible = true;
71
- }
72
- break;
73
- case StorageAttribute.BLOB:
74
- if (destinationAttribute === StorageAttribute.BLOB) {
75
- isTypeCompatible = true;
76
- }
77
- break;
78
- }
79
- return isTypeCompatible;
80
- }
81
- constructor() {
82
- }
83
- }
1
+ import { StorageAttribute } from "./enums";
2
+ export class StorageAttributeCheck {
3
+ static isTheSameType(type1, type2) {
4
+ return type1 === type2 || (StorageAttributeCheck.isTypeNumeric(type1) && StorageAttributeCheck.isTypeNumeric(type2)) || (StorageAttributeCheck.isTypeLogical(type1) && StorageAttributeCheck.isTypeLogical(type2)) || (StorageAttributeCheck.IsTypeAlphaOrUnicode(type1) && StorageAttributeCheck.IsTypeAlphaOrUnicode(type2)) || (StorageAttributeCheck.isTypeBlob(type1) && StorageAttributeCheck.isTypeBlob(type2)) || (StorageAttributeCheck.isTypeDotNet(type1) && StorageAttributeCheck.isTypeDotNet(type2));
5
+ }
6
+ static isTypeBlob(type) {
7
+ return type === StorageAttribute.BLOB || type === StorageAttribute.BLOB_VECTOR;
8
+ }
9
+ static isTypeAlpha(type) {
10
+ return type === StorageAttribute.ALPHA || type === StorageAttribute.MEMO;
11
+ }
12
+ static isTypeNumeric(type) {
13
+ return type === StorageAttribute.DATE || type === StorageAttribute.TIME || type === StorageAttribute.NUMERIC;
14
+ }
15
+ static isTypeLogical(type) {
16
+ return type === StorageAttribute.BOOLEAN;
17
+ }
18
+ static isTypeDotNet(type) {
19
+ return type === StorageAttribute.DOTNET;
20
+ }
21
+ static IsTypeAlphaOrUnicode(type) {
22
+ return type === StorageAttribute.ALPHA || type === StorageAttribute.UNICODE;
23
+ }
24
+ static StorageFldAlphaOrUnicode(type1, type2) {
25
+ return StorageAttributeCheck.IsTypeAlphaOrUnicode(type1) && StorageAttributeCheck.IsTypeAlphaOrUnicode(type2);
26
+ }
27
+ static StorageFldAlphaUnicodeOrBlob(type1, type2) {
28
+ let type1AlphaOrUnicode = StorageAttributeCheck.IsTypeAlphaOrUnicode(type1);
29
+ let type2AlphaOrUnicode = StorageAttributeCheck.IsTypeAlphaOrUnicode(type2);
30
+ if (type1AlphaOrUnicode && type2AlphaOrUnicode) {
31
+ return true;
32
+ }
33
+ else {
34
+ let type1Blob = type1 === StorageAttribute.BLOB;
35
+ let type2Blob = type2 === StorageAttribute.BLOB;
36
+ return ((type1AlphaOrUnicode && type2Blob) || (type2AlphaOrUnicode && type1Blob));
37
+ }
38
+ }
39
+ static IsTypeCompatibile(sourceAttribute, destinationAttribute) {
40
+ let isTypeCompatible = false;
41
+ switch (sourceAttribute) {
42
+ case StorageAttribute.ALPHA:
43
+ case StorageAttribute.UNICODE:
44
+ if (destinationAttribute === StorageAttribute.ALPHA || destinationAttribute === StorageAttribute.UNICODE ||
45
+ destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME ||
46
+ destinationAttribute === StorageAttribute.NUMERIC) {
47
+ isTypeCompatible = true;
48
+ }
49
+ break;
50
+ case StorageAttribute.NUMERIC:
51
+ if (destinationAttribute === StorageAttribute.NUMERIC || destinationAttribute === StorageAttribute.ALPHA ||
52
+ destinationAttribute === StorageAttribute.UNICODE || destinationAttribute === StorageAttribute.BOOLEAN ||
53
+ destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME) {
54
+ isTypeCompatible = true;
55
+ }
56
+ break;
57
+ case StorageAttribute.BOOLEAN:
58
+ {
59
+ if (destinationAttribute === StorageAttribute.BOOLEAN || destinationAttribute === StorageAttribute.ALPHA ||
60
+ destinationAttribute === StorageAttribute.UNICODE || destinationAttribute === StorageAttribute.NUMERIC) {
61
+ isTypeCompatible = true;
62
+ }
63
+ }
64
+ break;
65
+ case StorageAttribute.DATE:
66
+ case StorageAttribute.TIME:
67
+ if (destinationAttribute === StorageAttribute.ALPHA || destinationAttribute === StorageAttribute.UNICODE ||
68
+ destinationAttribute === StorageAttribute.NUMERIC || destinationAttribute === StorageAttribute.BOOLEAN ||
69
+ destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME) {
70
+ isTypeCompatible = true;
71
+ }
72
+ break;
73
+ case StorageAttribute.BLOB:
74
+ if (destinationAttribute === StorageAttribute.BLOB) {
75
+ isTypeCompatible = true;
76
+ }
77
+ break;
78
+ }
79
+ return isTypeCompatible;
80
+ }
81
+ constructor() {
82
+ }
83
+ }
84
84
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmFnZUF0dHJpYnV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9TdG9yYWdlQXR0cmlidXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUt6QyxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBdUIsRUFBRSxLQUF1QjtRQUNuRSxPQUFPLEtBQUssS0FBSyxLQUFLLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JmLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQXNCO1FBQ3RDLE9BQU8sSUFBSSxLQUFLLGdCQUFnQixDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQXNCO1FBQ3ZDLE9BQU8sSUFBSSxLQUFLLGdCQUFnQixD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QkFDN0IsSUFBSSxvQkFBb0IsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLElBQUksb0JBQW9CLEtBQUssZ0JBQWdCLENBQUMsS0FBSzt3QkFDdEcsb0JBQW9CLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxJQUFJLG9CQUFvQixLQUFLLGdCQUFnQixDQUFDLE9BQU8sRUFBRTt3QkFDeEcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO3FCQUN6QjtpQkFDRjtnQkFDQyxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDM0IsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUN4QixJQUFJLG9CQUFvQixLQUFLLGdCQUFnQixDQUFDLEtBQUssSUFBSSxvQkFBb0IsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO29CQUN0RyxvQkFBb0IsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLElBQUksb0JBQW9CLEtBQUssZ0JBQWdCLENBQUMsT0FBTztvQkFDdEcsb0JBQW9CLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxJQUFJLG9CQUFvQixLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRTtvQkFDbEcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUN4QixJQUFJLG9CQUFvQixLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRTtvQkFDbEQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtnQkFDRCxNQUFNO1NBQ1Q7UUFDRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRDtJQUNBLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZX0gZnJvbSBcIi4vZW51bXNcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIHR5cGUgY2hlY2tpbmcgZm9yIGVudW0gJ1N0b3JhZ2VBdHRyaWJ1dGUnXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBTdG9yYWdlQXR0cmlidXRlQ2hlY2sge1xyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaXMgdGhlIGJvdGggdHlwZXMgYmVsb25nIHRvIHRoZSBzYW1lIGlubmVyIGRhdGEgdHlwZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHlwZTFcIj5kYXRhIHR5cGU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHlwZTJcIj5kYXRhIHR5cGU8L3BhcmFtPlxyXG4gIHN0YXRpYyBpc1RoZVNhbWVUeXBlKHR5cGUxOiBTdG9yYWdlQXR0cmlidXRlLCB0eXBlMjogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUxID09PSB0eXBlMiB8fCAoU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLmlzVHlwZU51bWVyaWModHlwZTEpICYmIFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5pc1R5cGVOdW1lcmljKHR5cGUyKSkgfHwgKFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5pc1R5cGVMb2dpY2FsKHR5cGUxKSAmJiBTdG9yYWdlQXR0cmlidXRlQ2hlY2suaXNUeXBlTG9naWNhbCh0eXBlMikpIHx8IChTdG9yYWdlQXR0cmlidXRlQ2hlY2suSXNUeXBlQWxwaGFPclVuaWNvZGUodHlwZTEpICYmIFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5Jc1R5cGVBbHBoYU9yVW5pY29kZSh0eXBlMikpIHx8IChTdG9yYWdlQXR0cmlidXRlQ2hlY2suaXNUeXBlQmxvYih0eXBlMSkgJiYgU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLmlzVHlwZUJsb2IodHlwZTIpKSB8fCAoU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLmlzVHlwZURvdE5ldCh0eXBlMSkgJiYgU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLmlzVHlwZURvdE5ldCh0eXBlMikpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVHlwZUJsb2IodHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQiB8fCB0eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVHlwZUFscGhhKHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTUVNTztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaXMgdGhlIGJvdGggdHlwZXMgYmVsb25nIHRvIHRoZSBOVU1FUklDIGlubmVyIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBpc1R5cGVOdW1lcmljKHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkRBVEUgfHwgdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5USU1FIHx8IHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaXMgdGhlIGJvdGggdHlwZXMgYmVsb25nIHRvIHRoZSBMT0dJQ0FMIGlubmVyIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBpc1R5cGVMb2dpY2FsKHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU47XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGlzIHRoZSB0eXBlIGlzIERPVE5FVFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGlzVHlwZURvdE5ldCh0eXBlOiBTdG9yYWdlQXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5ET1RORVQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGlzIHRoZSB0eXBlIEFMUEhBIG9yIFVOSUNPREVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHlwZVwiPmRhdGEgdHlwZTwvcGFyYW0+XHJcbiAgc3RhdGljIElzVHlwZUFscGhhT3JVbmljb2RlKHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaXMgdGhlIGlubmVyIHR5cGUgQUxQSEEgb3IgVU5JQ09ERVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlMVwiPmRhdGEgdHlwZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlMlwiPmRhdGEgdHlwZTwvcGFyYW0+XHJcbiAgc3RhdGljIFN0b3JhZ2VGbGRBbHBoYU9yVW5pY29kZSh0eXBlMTogU3RvcmFnZUF0dHJpYnV0ZSwgdHlwZTI6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBTdG9yYWdlQXR0cmlidXRlQ2hlY2suSXNUeXBlQWxwaGFPclVuaWNvZGUodHlwZTEpICYmIFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5Jc1R5cGVBbHBoYU9yVW5pY29kZSh0eXBlMik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgU3RvcmFnZUZsZEFscGhhVW5pY29kZU9yQmxvYih0eXBlMTogU3RvcmFnZUF0dHJpYnV0ZSwgdHlwZTI6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIGxldCB0eXBlMUFscGhhT3JVbmljb2RlOiBib29sZWFuID0gU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLklzVHlwZUFscGhhT3JVbmljb2RlKHR5cGUxKTtcclxuICAgIGxldCB0eXBlMkFscGhhT3JVbmljb2RlOiBib29sZWFuID0gU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLklzVHlwZUFscGhhT3JVbmljb2RlKHR5cGUyKTtcclxuXHJcbiAgICBpZiAodHlwZTFBbHBoYU9yVW5pY29kZSAmJiB0eXBlMkFscGhhT3JVbmljb2RlKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB0eXBlMUJsb2I6IGJvb2xlYW4gPSB0eXBlMSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CO1xyXG4gICAgICBsZXQgdHlwZTJCbG9iOiBib29sZWFuID0gdHlwZTIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjtcclxuICAgICAgcmV0dXJuICgodHlwZTFBbHBoYU9yVW5pY29kZSAmJiB0eXBlMkJsb2IpIHx8ICh0eXBlMkFscGhhT3JVbmljb2RlICYmIHR5cGUxQmxvYikpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2hlY2sgaWYgdHlwZXMgYXJlIGNvbXBhdGlibGUgb3Igbm90LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic291cmNlQXR0cmlidXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkZXN0aW5hdGlvbkF0dHJpYnV0ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgSXNUeXBlQ29tcGF0aWJpbGUoc291cmNlQXR0cmlidXRlOiBTdG9yYWdlQXR0cmlidXRlLCBkZXN0aW5hdGlvbkF0dHJpYnV0ZTogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzVHlwZUNvbXBhdGlibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKHNvdXJjZUF0dHJpYnV0ZSkge1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8XHJcbiAgICAgICAgICBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5EQVRFIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLlRJTUUgfHxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMpIHtcclxuICAgICAgICAgIGlzVHlwZUNvbXBhdGlibGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8XHJcbiAgICAgICAgICBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU4gfHxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkRBVEUgfHwgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVElNRSkge1xyXG4gICAgICAgICAgaXNUeXBlQ29tcGF0aWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU46IHtcclxuICAgICAgICBpZiAoZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiB8fCBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fFxyXG4gICAgICAgICAgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERSB8fCBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDKSB7XHJcbiAgICAgICAgICBpc1R5cGVDb21wYXRpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8XHJcbiAgICAgICAgICBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU4gfHxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkRBVEUgfHwgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVElNRSkge1xyXG4gICAgICAgICAgaXNUeXBlQ29tcGF0aWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjpcclxuICAgICAgICBpZiAoZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQikge1xyXG4gICAgICAgICAgaXNUeXBlQ29tcGF0aWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVHlwZUNvbXBhdGlibGU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19