@whitesev/utils 2.8.0 → 2.8.1

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 (70) hide show
  1. package/README.md +176 -176
  2. package/dist/index.amd.js +893 -874
  3. package/dist/index.amd.js.map +1 -1
  4. package/dist/index.cjs.js +893 -874
  5. package/dist/index.cjs.js.map +1 -1
  6. package/dist/index.esm.js +893 -874
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.iife.js +893 -874
  9. package/dist/index.iife.js.map +1 -1
  10. package/dist/index.system.js +893 -874
  11. package/dist/index.system.js.map +1 -1
  12. package/dist/index.umd.js +893 -874
  13. package/dist/index.umd.js.map +1 -1
  14. package/dist/types/src/CommonUtil.d.ts +59 -59
  15. package/dist/types/src/DOMUtils.d.ts +1 -1
  16. package/dist/types/src/Dictionary.d.ts +1 -1
  17. package/dist/types/src/Httpx.d.ts +2 -2
  18. package/dist/types/src/Progress.d.ts +0 -4
  19. package/dist/types/src/TryCatch.d.ts +2 -2
  20. package/dist/types/src/Utils.d.ts +365 -365
  21. package/dist/types/src/UtilsGMCookie.d.ts +2 -2
  22. package/dist/types/src/UtilsGMMenu.d.ts +1 -1
  23. package/dist/types/src/indexedDB.d.ts +3 -3
  24. package/dist/types/src/types/Event.d.ts +188 -188
  25. package/dist/types/src/types/Httpx.d.ts +1344 -1343
  26. package/dist/types/src/types/Log.d.ts +19 -19
  27. package/dist/types/src/types/Progress.d.ts +20 -20
  28. package/dist/types/src/types/React.d.ts +119 -119
  29. package/dist/types/src/types/TryCatch.d.ts +9 -9
  30. package/dist/types/src/types/UtilsGMCookie.d.ts +93 -93
  31. package/dist/types/src/types/UtilsGMMenu.d.ts +77 -77
  32. package/dist/types/src/types/Vue2.d.ts +166 -166
  33. package/dist/types/src/types/WindowApi.d.ts +14 -14
  34. package/dist/types/src/types/ajaxHooker.d.ts +151 -151
  35. package/dist/types/src/types/env.d.ts +7 -2
  36. package/dist/types/src/types/global.d.ts +31 -31
  37. package/package.json +16 -7
  38. package/src/ColorConversion.ts +105 -106
  39. package/src/CommonUtil.ts +280 -279
  40. package/src/DOMUtils.ts +251 -272
  41. package/src/Dictionary.ts +153 -154
  42. package/src/GBKEncoder.ts +108 -112
  43. package/src/Hooks.ts +73 -81
  44. package/src/Httpx.ts +1457 -1466
  45. package/src/LockFunction.ts +62 -62
  46. package/src/Log.ts +258 -259
  47. package/src/ModuleRaid.js +1 -0
  48. package/src/Progress.ts +108 -114
  49. package/src/TryCatch.ts +86 -86
  50. package/src/Utils.ts +4772 -4825
  51. package/src/UtilsCommon.ts +14 -14
  52. package/src/UtilsGMCookie.ts +254 -261
  53. package/src/UtilsGMMenu.ts +445 -454
  54. package/src/Vue.ts +233 -229
  55. package/src/WindowApi.ts +59 -59
  56. package/src/ajaxHooker/ajaxHooker.js +1 -0
  57. package/src/indexedDB.ts +497 -502
  58. package/src/types/Event.d.ts +188 -188
  59. package/src/types/Httpx.d.ts +1344 -1343
  60. package/src/types/Log.d.ts +19 -19
  61. package/src/types/Progress.d.ts +20 -20
  62. package/src/types/React.d.ts +119 -119
  63. package/src/types/TryCatch.d.ts +9 -9
  64. package/src/types/UtilsGMCookie.d.ts +93 -93
  65. package/src/types/UtilsGMMenu.d.ts +77 -77
  66. package/src/types/Vue2.d.ts +166 -166
  67. package/src/types/WindowApi.d.ts +14 -14
  68. package/src/types/ajaxHooker.d.ts +151 -151
  69. package/src/types/env.d.ts +7 -2
  70. package/src/types/global.d.ts +31 -31
@@ -12,7 +12,7 @@ System.register('Utils', [], (function (exports) {
12
12
  if (typeof str !== "string") {
13
13
  return false;
14
14
  }
15
- if (!str.match(/^(\#|)[0-9a-fA-F]{6}$/)) {
15
+ if (!str.match(/^(#|)[0-9a-fA-F]{6}$/)) {
16
16
  return false;
17
17
  }
18
18
  return true;
@@ -26,18 +26,10 @@ System.register('Utils', [], (function (exports) {
26
26
  */
27
27
  hexToRgba(hex, opacity) {
28
28
  if (!this.isHex(hex)) {
29
- throw new TypeError("输入错误的hex:" + hex);
29
+ throw new TypeError(`输入错误的hex:${hex}`);
30
30
  }
31
31
  return hex && hex.replace(/\s+/g, "").length === 7
32
- ? "rgba(" +
33
- parseInt("0x" + hex.slice(1, 3)) +
34
- "," +
35
- parseInt("0x" + hex.slice(3, 5)) +
36
- "," +
37
- parseInt("0x" + hex.slice(5, 7)) +
38
- "," +
39
- opacity +
40
- ")"
32
+ ? `rgba(${parseInt(`0x${hex.slice(1, 3)}`)},${parseInt(`0x${hex.slice(3, 5)}`)},${parseInt(`0x${hex.slice(5, 7)}`)},${opacity})`
41
33
  : "";
42
34
  }
43
35
  /**
@@ -46,14 +38,15 @@ System.register('Utils', [], (function (exports) {
46
38
  */
47
39
  hexToRgb(str) {
48
40
  if (!this.isHex(str)) {
49
- throw new TypeError("输入错误的hex:" + str);
41
+ throw new TypeError(`输入错误的hex:${str}`);
50
42
  }
51
43
  /* replace替换查找的到的字符串 */
52
44
  str = str.replace("#", "");
53
45
  /* match得到查询数组 */
54
- let hxs = str.match(/../g);
46
+ const hxs = str.match(/../g);
55
47
  for (let index = 0; index < 3; index++) {
56
- hxs[index] = parseInt(hxs[index], 16);
48
+ const value = parseInt(hxs[index], 16);
49
+ Reflect.set(hxs, index, value);
57
50
  }
58
51
  return hxs;
59
52
  }
@@ -65,16 +58,16 @@ System.register('Utils', [], (function (exports) {
65
58
  */
66
59
  rgbToHex(redValue, greenValue, blueValue) {
67
60
  /* 验证输入的rgb值是否合法 */
68
- let validPattern = /^\d{1,3}$/;
61
+ const validPattern = /^\d{1,3}$/;
69
62
  if (!validPattern.test(redValue.toString()) ||
70
63
  !validPattern.test(greenValue.toString()) ||
71
64
  !validPattern.test(blueValue.toString()))
72
65
  throw new TypeError("输入错误的rgb颜色值");
73
- let hexs = [redValue.toString(16), greenValue.toString(16), blueValue.toString(16)];
66
+ const hexs = [redValue.toString(16), greenValue.toString(16), blueValue.toString(16)];
74
67
  for (let index = 0; index < 3; index++)
75
68
  if (hexs[index].length == 1)
76
- hexs[index] = "0" + hexs[index];
77
- return "#" + hexs.join("");
69
+ hexs[index] = `0${hexs[index]}`;
70
+ return `#${hexs.join("")}`;
78
71
  }
79
72
  /**
80
73
  * 获取颜色变暗或亮
@@ -83,11 +76,13 @@ System.register('Utils', [], (function (exports) {
83
76
  */
84
77
  getDarkColor(color, level) {
85
78
  if (!this.isHex(color)) {
86
- throw new TypeError("输入错误的hex:" + color);
79
+ throw new TypeError(`输入错误的hex:${color}`);
87
80
  }
88
- let rgbc = this.hexToRgb(color);
81
+ const rgbc = this.hexToRgb(color);
89
82
  for (let index = 0; index < 3; index++) {
90
- rgbc[index] = Math.floor(rgbc[index] * (1 - level));
83
+ const rgbcItemValue = rgbc[index];
84
+ const value = Math.floor(Number(rgbcItemValue) * (1 - Number(level)));
85
+ Reflect.set(rgbc, index, value);
91
86
  }
92
87
  return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
93
88
  }
@@ -98,40 +93,43 @@ System.register('Utils', [], (function (exports) {
98
93
  */
99
94
  getLightColor(color, level) {
100
95
  if (!this.isHex(color)) {
101
- throw new TypeError("输入错误的hex:" + color);
96
+ throw new TypeError(`输入错误的hex:${color}`);
102
97
  }
103
- let rgbc = this.hexToRgb(color);
98
+ const rgbc = this.hexToRgb(color);
104
99
  for (let index = 0; index < 3; index++) {
105
- rgbc[index] = Math.floor((255 - rgbc[index]) * level + rgbc[index]);
100
+ const rgbcItemValue = Number(rgbc[index]);
101
+ const value = Math.floor(255 - rgbcItemValue * level + rgbcItemValue);
102
+ Reflect.set(rgbc, index, value);
106
103
  }
107
104
  return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
108
105
  }
109
106
  }
110
107
 
111
108
  class GBKEncoder {
112
- #data = [];
109
+ #data;
113
110
  #U2Ghash = {};
114
111
  #G2Uhash = {};
115
112
  constructor() {
116
- let dataText = this.handleText("4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364");
113
+ const dataText = this.handleText("4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364");
117
114
  let index = 0;
118
115
  this.#data = dataText.match(/..../g);
119
116
  for (let i = 0x81; i <= 0xfe; i++) {
120
117
  for (let j = 0x40; j <= 0xfe; j++) {
121
- this.#U2Ghash[this.#data[index++]] = ("%" + i.toString(16) + "%" + j.toString(16)).toUpperCase();
118
+ this.#U2Ghash[this.#data[index++]] = `%${i.toString(16)}%${j.toString(16)}`.toUpperCase();
122
119
  }
123
120
  }
124
- for (let key in this.#U2Ghash) {
125
- this.#G2Uhash[this.#U2Ghash[key]] = key;
121
+ for (const key in this.#U2Ghash) {
122
+ const u2ghashValue = Reflect.get(this.#U2Ghash, key);
123
+ Reflect.set(this.#G2Uhash, u2ghashValue, key);
126
124
  }
127
125
  }
128
126
  handleText(text) {
129
127
  text = text
130
- .replace(/#(\d+)\$/g, function (a, b) {
128
+ .replace(/#(\d+)\$/g, function (_, b) {
131
129
  return Array(+b + 3).join("#");
132
130
  })
133
131
  .replace(/#/g, "####")
134
- .replace(/(\w\w):([\w#]+)(?:,|$)/g, function (a, hd, dt) {
132
+ .replace(/(\w\w):([\w#]+)(?:,|$)/g, function (_, hd, dt) {
135
133
  return dt.replace(/../g, function (a) {
136
134
  if (a != "##") {
137
135
  return hd + a;
@@ -151,8 +149,8 @@ System.register('Utils', [], (function (exports) {
151
149
  * @param str
152
150
  */
153
151
  encode(str) {
154
- let that = this;
155
- return [...str].reduce((result, val, i) => {
152
+ const that = this;
153
+ return [...str].reduce((result, val) => {
156
154
  return result + toGBK(val);
157
155
  }, "");
158
156
  function toGBK(val) {
@@ -161,7 +159,7 @@ System.register('Utils', [], (function (exports) {
161
159
  const codePoint = val.codePointAt(i);
162
160
  const code = String.fromCodePoint(codePoint);
163
161
  let key = codePoint.toString(16);
164
- key.length != 4 && (key = ("000" + key).match(/....$/)?.[0]);
162
+ key.length != 4 && (key = `000${key}`.match(/....$/)?.[0]);
165
163
  /* Add up i by code.length */
166
164
  i += code.length - 1;
167
165
  /* If code is in ascii range */
@@ -175,9 +173,9 @@ System.register('Utils', [], (function (exports) {
175
173
  continue;
176
174
  }
177
175
  /*
178
- If 2 or more char combines to one visible code,
179
- or just this code is not in GBK
180
- */
176
+ If 2 or more char combines to one visible code,
177
+ or just this code is not in GBK
178
+ */
181
179
  result += toGBK(`&#${codePoint};`);
182
180
  }
183
181
  return result;
@@ -188,18 +186,18 @@ System.register('Utils', [], (function (exports) {
188
186
  * @param str
189
187
  */
190
188
  decode(str) {
191
- let GBKMatcher = /%[0-9A-F]{2}%[0-9A-F]{2}/;
192
- let UTFMatcher = /%[0-9A-F]{2}/;
189
+ const GBKMatcher = /%[0-9A-F]{2}%[0-9A-F]{2}/;
190
+ const UTFMatcher = /%[0-9A-F]{2}/;
193
191
  // let gbk = true;
194
192
  let utf = true;
195
193
  const that = this;
196
194
  while (utf) {
197
- let gbkMatch = str.match(GBKMatcher);
198
- let utfMatch = str.match(UTFMatcher);
195
+ const gbkMatch = str.match(GBKMatcher);
196
+ const utfMatch = str.match(UTFMatcher);
199
197
  // gbk = Boolean(gbkMatch);
200
198
  utf = Boolean(utfMatch);
201
199
  if (gbkMatch && gbkMatch in that.#G2Uhash) {
202
- str = str.replace(gbkMatch, String.fromCharCode(("0x" + that.#G2Uhash[gbkMatch])));
200
+ str = str.replace(gbkMatch, String.fromCharCode(`0x${that.#G2Uhash[gbkMatch]}`));
203
201
  }
204
202
  else {
205
203
  str = str.replace(utfMatch, decodeURIComponent(utfMatch));
@@ -213,7 +211,7 @@ System.register('Utils', [], (function (exports) {
213
211
  /* 定义变量和函数 */
214
212
  let callbackFunction = null;
215
213
  let context = null;
216
- let handleError = (error) => { };
214
+ let handleError = () => { };
217
215
  let defaultDetails = {
218
216
  log: true,
219
217
  };
@@ -245,7 +243,7 @@ System.register('Utils', [], (function (exports) {
245
243
  run(callback, __context__) {
246
244
  callbackFunction = callback;
247
245
  context = __context__ || this;
248
- let result = executeTryCatch(callbackFunction, handleError, context);
246
+ const result = executeTryCatch(callbackFunction, handleError, context);
249
247
  return result !== void 0 ? result : TryCatchCore;
250
248
  },
251
249
  };
@@ -269,8 +267,8 @@ System.register('Utils', [], (function (exports) {
269
267
  catch (error) {
270
268
  if (defaultDetails.log) {
271
269
  callback = callback;
272
- console.log(`%c ${callback?.name ? callback?.name : callback + "出现错误"} `, "color: #f20000");
273
- console.log(`%c 错误原因:${error}`, "color: #f20000");
270
+ console.log(`%c ${callback?.name ? callback?.name : `${callback}`} `, "color: #f20000");
271
+ console.log(`%c ${error}`, "color: #f20000");
274
272
  console.trace(callback);
275
273
  }
276
274
  if (handleErrorFunc) {
@@ -289,9 +287,9 @@ System.register('Utils', [], (function (exports) {
289
287
 
290
288
  class CommonUtil {
291
289
  assign(target = {}, source = {}, isAdd = false) {
292
- let UtilsContext = this;
290
+ const UtilsContext = this;
293
291
  if (Array.isArray(source)) {
294
- let canTraverse = source.filter((item) => {
292
+ const canTraverse = source.filter((item) => {
295
293
  return typeof item === "object";
296
294
  });
297
295
  if (!canTraverse.length) {
@@ -307,34 +305,34 @@ System.register('Utils', [], (function (exports) {
307
305
  if (isAdd) {
308
306
  for (const sourceKeyName in source) {
309
307
  const targetKeyName = sourceKeyName;
310
- let targetValue = target[targetKeyName];
311
- let sourceValue = source[sourceKeyName];
308
+ const targetValue = Reflect.get(target, targetKeyName);
309
+ const sourceValue = Reflect.get(source, sourceKeyName);
312
310
  if (typeof sourceValue === "object" &&
313
311
  sourceValue != null &&
314
312
  sourceKeyName in target &&
315
313
  !UtilsContext.isDOM(sourceValue)) {
316
314
  /* 源端的值是object类型,且不是元素节点 */
317
- target[sourceKeyName] = UtilsContext.assign(targetValue, sourceValue, isAdd);
315
+ Reflect.set(target, sourceKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
318
316
  continue;
319
317
  }
320
- target[sourceKeyName] = sourceValue;
318
+ Reflect.set(target, sourceKeyName, sourceValue);
321
319
  }
322
320
  }
323
321
  else {
324
322
  for (const targetKeyName in target) {
325
323
  if (targetKeyName in source) {
326
- let targetValue = target[targetKeyName];
327
- let sourceValue = source[targetKeyName];
324
+ const targetValue = Reflect.get(target, targetKeyName);
325
+ const sourceValue = Reflect.get(source, targetKeyName);
328
326
  if (typeof sourceValue === "object" &&
329
327
  sourceValue != null &&
330
328
  !UtilsContext.isDOM(sourceValue) &&
331
329
  Object.keys(sourceValue).length) {
332
330
  /* 源端的值是object类型,且不是元素节点 */
333
- target[targetKeyName] = UtilsContext.assign(targetValue, sourceValue, isAdd);
331
+ Reflect.set(target, targetKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
334
332
  continue;
335
333
  }
336
334
  /* 直接赋值 */
337
- target[targetKeyName] = sourceValue;
335
+ Reflect.set(target, targetKeyName, sourceValue);
338
336
  }
339
337
  }
340
338
  }
@@ -342,7 +340,7 @@ System.register('Utils', [], (function (exports) {
342
340
  }
343
341
  isNull(...args) {
344
342
  let result = true;
345
- let checkList = [...args];
343
+ const checkList = [...args];
346
344
  for (const objItem of checkList) {
347
345
  let itemResult = false;
348
346
  if (objItem === null || objItem === undefined) {
@@ -368,11 +366,12 @@ System.register('Utils', [], (function (exports) {
368
366
  case "boolean":
369
367
  itemResult = !objItem;
370
368
  break;
371
- case "function":
372
- let funcStr = objItem.toString().replace(/\s/g, "");
369
+ case "function": {
370
+ const funcStr = objItem.toString().replace(/\s/g, "");
373
371
  /* 排除()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){} */
374
372
  itemResult = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
375
373
  break;
374
+ }
376
375
  }
377
376
  }
378
377
  result = result && itemResult;
@@ -393,18 +392,23 @@ System.register('Utils', [], (function (exports) {
393
392
  return target instanceof Node;
394
393
  }
395
394
  isNotNull(...args) {
396
- let UtilsContext = this;
395
+ const UtilsContext = this;
397
396
  return !UtilsContext.isNull.apply(this, args);
398
397
  }
399
398
  deepClone(obj) {
400
- let UtilsContext = this;
399
+ const UtilsContext = this;
401
400
  if (obj === void 0)
402
401
  return void 0;
403
402
  if (obj === null)
404
403
  return null;
405
- let clone = obj instanceof Array ? [] : {};
404
+ const clone = obj instanceof Array ? [] : {};
406
405
  for (const [key, value] of Object.entries(obj)) {
407
- clone[key] = typeof value === "object" ? UtilsContext.deepClone(value) : value;
406
+ if (typeof value === "object") {
407
+ Reflect.set(clone, key, UtilsContext.deepClone(value));
408
+ }
409
+ else {
410
+ Reflect.set(clone, key, value);
411
+ }
408
412
  }
409
413
  return clone;
410
414
  }
@@ -431,11 +435,11 @@ System.register('Utils', [], (function (exports) {
431
435
  }
432
436
  TryCatch()
433
437
  .config({ log: false })
434
- .error((error) => {
438
+ .error(() => {
435
439
  TryCatch()
436
440
  .error(() => {
437
441
  try {
438
- result = new Function("return " + data)();
442
+ result = new Function(`return ${data}`)();
439
443
  }
440
444
  catch (error2) {
441
445
  if (typeof errorCallBack === "function") {
@@ -446,14 +450,14 @@ System.register('Utils', [], (function (exports) {
446
450
  .run(() => {
447
451
  if (data &&
448
452
  /^[\],:{}\s]*$/.test(data
449
- .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
450
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
453
+ .replace(/\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
454
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g, "]")
451
455
  .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
452
- result = new Function("return " + data)();
456
+ result = new Function(`return ${data}`)();
453
457
  }
454
458
  else {
455
459
  if (typeof errorCallBack === "function") {
456
- errorCallBack(new Error("target is not a JSON"));
460
+ errorCallBack(new Error("target is not JSON object"));
457
461
  }
458
462
  }
459
463
  });
@@ -465,7 +469,7 @@ System.register('Utils', [], (function (exports) {
465
469
  return result;
466
470
  }
467
471
  }
468
- let commonUtil = new CommonUtil();
472
+ const commonUtil = new CommonUtil();
469
473
 
470
474
  class UtilsGMCookie {
471
475
  windowApi = {
@@ -494,14 +498,14 @@ System.register('Utils', [], (function (exports) {
494
498
  if (typeof cookieName !== "string") {
495
499
  throw new TypeError("Utils.GMCookie.get 参数cookieName 必须为字符串");
496
500
  }
497
- let cookies = this.getCookiesList();
501
+ const cookies = this.getCookiesList();
498
502
  let findValue = void 0;
499
503
  for (const cookieItem of cookies) {
500
- let item = cookieItem.trim();
501
- let itemSplit = item.split("=");
502
- let itemName = itemSplit[0];
504
+ const item = cookieItem.trim();
505
+ const itemSplit = item.split("=");
506
+ const itemName = itemSplit[0];
503
507
  itemSplit.splice(0, 1);
504
- let itemValue = decodeURIComponent(itemSplit.join(""));
508
+ const itemValue = decodeURIComponent(itemSplit.join(""));
505
509
  if (itemName === cookieName) {
506
510
  findValue = {
507
511
  domain: this.windowApi.window.location.hostname,
@@ -531,7 +535,7 @@ System.register('Utils', [], (function (exports) {
531
535
  if (option == null) {
532
536
  throw new Error("Utils.GMCookie.list 参数不能为空");
533
537
  }
534
- let resultData = [];
538
+ const resultData = [];
535
539
  try {
536
540
  let defaultOption = {
537
541
  url: this.windowApi.window.location.href,
@@ -540,16 +544,16 @@ System.register('Utils', [], (function (exports) {
540
544
  path: "/",
541
545
  };
542
546
  defaultOption = commonUtil.assign(defaultOption, option);
543
- let cookies = this.getCookiesList();
547
+ const cookies = this.getCookiesList();
544
548
  cookies.forEach((item) => {
545
549
  item = item.trim();
546
- let itemSplit = item.split("=");
547
- let itemName = itemSplit[0];
550
+ const itemSplit = item.split("=");
551
+ const itemName = itemSplit[0];
548
552
  itemSplit.splice(0, 1);
549
- let itemValue = decodeURIComponent(itemSplit.join(""));
550
- let nameRegexp = defaultOption.name instanceof RegExp
553
+ const itemValue = decodeURIComponent(itemSplit.join(""));
554
+ const nameRegexp = defaultOption.name instanceof RegExp
551
555
  ? defaultOption.name
552
- : new RegExp("^" + defaultOption.name, "g");
556
+ : new RegExp(`^${defaultOption.name}`, "g");
553
557
  if (itemName.match(nameRegexp)) {
554
558
  resultData.push({
555
559
  domain: this.windowApi.window.location.hostname,
@@ -583,7 +587,7 @@ System.register('Utils', [], (function (exports) {
583
587
  if (option == null) {
584
588
  throw new Error("Utils.GMCookie.list 参数不能为空");
585
589
  }
586
- let resultData = [];
590
+ const resultData = [];
587
591
  let defaultOption = {
588
592
  url: this.windowApi.window.location.href,
589
593
  domain: this.windowApi.window.location.hostname,
@@ -591,16 +595,16 @@ System.register('Utils', [], (function (exports) {
591
595
  path: "/",
592
596
  };
593
597
  defaultOption = commonUtil.assign(defaultOption, option);
594
- let cookies = this.getCookiesList();
598
+ const cookies = this.getCookiesList();
595
599
  cookies.forEach((item) => {
596
600
  item = item.trim();
597
- let itemSplit = item.split("=");
598
- let itemName = itemSplit[0];
601
+ const itemSplit = item.split("=");
602
+ const itemName = itemSplit[0];
599
603
  itemSplit.splice(0, 1);
600
- let itemValue = decodeURIComponent(itemSplit.join(""));
601
- let nameRegexp = defaultOption.name instanceof RegExp
604
+ const itemValue = decodeURIComponent(itemSplit.join(""));
605
+ const nameRegexp = defaultOption.name instanceof RegExp
602
606
  ? defaultOption.name
603
- : new RegExp("^" + defaultOption.name, "g");
607
+ : new RegExp(`^${defaultOption.name}`, "g");
604
608
  if (itemName.match(nameRegexp)) {
605
609
  resultData.push({
606
610
  domain: this.windowApi.window.location.hostname,
@@ -640,17 +644,12 @@ System.register('Utils', [], (function (exports) {
640
644
  expirationDate: Math.floor(Date.now()) + 60 * 60 * 24 * 30,
641
645
  };
642
646
  defaultOption = commonUtil.assign(defaultOption, option);
643
- let life = defaultOption.expirationDate
647
+ const life = defaultOption.expirationDate
644
648
  ? defaultOption.expirationDate
645
649
  : Math.floor(Date.now()) + 60 * 60 * 24 * 30;
646
- let cookieStr = defaultOption.name +
647
- "=" +
648
- decodeURIComponent(defaultOption.value) +
649
- ";expires=" +
650
- new Date(life).toGMTString() +
651
- "; path=/";
650
+ let cookieStr = `${defaultOption.name}=${decodeURIComponent(defaultOption.value)};expires=${new Date(life).toGMTString()}; path=/`;
652
651
  if (commonUtil.isNull(defaultOption.domain)) {
653
- cookieStr += "; domain=" + defaultOption.domain;
652
+ cookieStr += `; domain=${defaultOption.domain}`;
654
653
  }
655
654
  this.windowApi.document.cookie = cookieStr;
656
655
  }
@@ -702,14 +701,14 @@ System.register('Utils', [], (function (exports) {
702
701
  if (cookieStr.trim() === "") {
703
702
  return [];
704
703
  }
705
- let cookies = cookieStr.split(";");
706
- let result = [];
704
+ const cookies = cookieStr.split(";");
705
+ const result = [];
707
706
  for (const cookieItem of cookies) {
708
- let item = cookieItem.trim();
709
- let itemSplit = item.split("=");
710
- let itemName = itemSplit[0];
707
+ const item = cookieItem.trim();
708
+ const itemSplit = item.split("=");
709
+ const itemName = itemSplit[0];
711
710
  itemSplit.splice(0, 1);
712
- let itemValue = decodeURIComponent(itemSplit.join(""));
711
+ const itemValue = decodeURIComponent(itemSplit.join(""));
713
712
  result.push({
714
713
  key: itemName,
715
714
  value: itemValue,
@@ -719,6 +718,7 @@ System.register('Utils', [], (function (exports) {
719
718
  }
720
719
  }
721
720
 
721
+ /* eslint-disable */
722
722
  // ==UserScript==
723
723
  // @name ajaxHooker
724
724
  // @author cxxjackie
@@ -1769,15 +1769,15 @@ System.register('Utils', [], (function (exports) {
1769
1769
  */
1770
1770
  init() {
1771
1771
  for (let index = 0; index < this.$data.data.length; index++) {
1772
- let menuOption = this.$data.data[index]["data"];
1772
+ const menuOption = this.$data.data[index]["data"];
1773
1773
  menuOption.enable = Boolean(this.getLocalMenuData(menuOption.key, menuOption.enable));
1774
1774
  if (typeof menuOption.showText !== "function") {
1775
1775
  menuOption.showText = (menuText, menuEnable) => {
1776
1776
  if (menuEnable) {
1777
- return this.$emoji.success + " " + menuText;
1777
+ return `${this.$emoji.success} ${menuText}`;
1778
1778
  }
1779
1779
  else {
1780
- return this.$emoji.error + " " + menuText;
1780
+ return `${this.$emoji.error} ${menuText}`;
1781
1781
  }
1782
1782
  };
1783
1783
  }
@@ -1788,7 +1788,7 @@ System.register('Utils', [], (function (exports) {
1788
1788
  * @param menuOptions 如果存在,使用它
1789
1789
  */
1790
1790
  register(menuOptions) {
1791
- let that = this;
1791
+ const that = this;
1792
1792
  if (menuOptions == null) {
1793
1793
  throw new TypeError("register菜单数据不能为空");
1794
1794
  }
@@ -1796,9 +1796,9 @@ System.register('Utils', [], (function (exports) {
1796
1796
  menuOptions = [menuOptions];
1797
1797
  }
1798
1798
  for (let index = 0; index < menuOptions.length; index++) {
1799
- let cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
1799
+ const cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
1800
1800
  const { showText, clickCallBack } = this.handleMenuData(cloneMenuOptionData);
1801
- let menuId = that.context.GM_Api.registerMenuCommand(showText, clickCallBack);
1801
+ const menuId = that.context.GM_Api.registerMenuCommand(showText, clickCallBack);
1802
1802
  menuOptions[index].id = menuId;
1803
1803
  cloneMenuOptionData.deleteMenu = function () {
1804
1804
  that.context.GM_Api.unregisterMenuCommand(menuId);
@@ -1812,7 +1812,7 @@ System.register('Utils', [], (function (exports) {
1812
1812
  * @param {string} key 键
1813
1813
  */
1814
1814
  getLocalMenuData(key, defaultValue) {
1815
- let localData = this.context.GM_Api.getValue(this.$data.key, {});
1815
+ const localData = this.context.GM_Api.getValue(this.$data.key, {});
1816
1816
  if (key in localData) {
1817
1817
  return localData[key];
1818
1818
  }
@@ -1826,7 +1826,7 @@ System.register('Utils', [], (function (exports) {
1826
1826
  * @param value 值
1827
1827
  */
1828
1828
  setLocalMenuData(key, value) {
1829
- let localData = this.context.GM_Api.getValue(this.$data.key, {});
1829
+ const localData = this.context.GM_Api.getValue(this.$data.key, {});
1830
1830
  localData[key] = value;
1831
1831
  this.context.GM_Api.setValue(this.$data.key, localData);
1832
1832
  },
@@ -1839,10 +1839,10 @@ System.register('Utils', [], (function (exports) {
1839
1839
  if (typeof menuOption.showText !== "function") {
1840
1840
  menuOption.showText = (menuText, menuEnable) => {
1841
1841
  if (menuEnable) {
1842
- return this.$emoji.success + " " + menuText;
1842
+ return `${this.$emoji.success} ${menuText}`;
1843
1843
  }
1844
1844
  else {
1845
- return this.$emoji.error + " " + menuText;
1845
+ return `${this.$emoji.error} ${menuText}`;
1846
1846
  }
1847
1847
  };
1848
1848
  }
@@ -1853,12 +1853,12 @@ System.register('Utils', [], (function (exports) {
1853
1853
  * @param menuOption
1854
1854
  */
1855
1855
  handleMenuData(menuOption) {
1856
- let that = this;
1857
- let menuLocalDataItemKey = menuOption.key;
1856
+ const that = this;
1857
+ const menuLocalDataItemKey = menuOption.key;
1858
1858
  /* 菜单默认开启的状态 */
1859
- let defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
1859
+ const defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
1860
1860
  /** 油猴菜单上显示的文本 */
1861
- let showText = menuOption.showText(menuOption.text, defaultEnable);
1861
+ const showText = menuOption.showText(menuOption.text, defaultEnable);
1862
1862
  // const GMMenuOptions = {
1863
1863
  // /**
1864
1864
  // * 菜单的id
@@ -1888,7 +1888,7 @@ System.register('Utils', [], (function (exports) {
1888
1888
  * @param event
1889
1889
  */
1890
1890
  function clickCallBack(event) {
1891
- let localEnable = Boolean(that.getLocalMenuData(menuLocalDataItemKey, defaultEnable));
1891
+ const localEnable = Boolean(that.getLocalMenuData(menuLocalDataItemKey, defaultEnable));
1892
1892
  if (menuOption.isStoreValue) {
1893
1893
  that.setLocalMenuData(menuLocalDataItemKey, !localEnable);
1894
1894
  }
@@ -2001,7 +2001,7 @@ System.register('Utils', [], (function (exports) {
2001
2001
  menuOptionList = [...menuOptionList, options];
2002
2002
  }
2003
2003
  menuOptionList.forEach((menuOption) => {
2004
- let oldMenuOption = this.MenuHandle.getMenuOption(menuOption.key);
2004
+ const oldMenuOption = this.MenuHandle.getMenuOption(menuOption.key);
2005
2005
  if (oldMenuOption) {
2006
2006
  // 覆盖
2007
2007
  Object.assign(oldMenuOption, menuOption);
@@ -2169,42 +2169,42 @@ System.register('Utils', [], (function (exports) {
2169
2169
  * 在Function原型上添加自定义方法.hook和.unhook
2170
2170
  */
2171
2171
  initEnv() {
2172
- Function.prototype.hook = function (realFunc, hookFunc, context) {
2172
+ Function.prototype.hook = function (_, hookFunc, context) {
2173
2173
  let _context = null; //函数上下文
2174
2174
  let _funcName = null; //函数名
2175
2175
  _context = context || window;
2176
2176
  _funcName = getFuncName(this);
2177
- _context["realFunc_" + _funcName] = this;
2177
+ _context[`realFunc_${_funcName}`] = this;
2178
2178
  if (_context[_funcName].prototype && _context[_funcName].prototype.isHooked) {
2179
2179
  console.log("Already has been hooked,unhook first");
2180
2180
  return false;
2181
2181
  }
2182
2182
  function getFuncName(fn) {
2183
2183
  // 获取函数名
2184
- let strFunc = fn.toString();
2185
- let _regex = /function\s+(\w+)\s*\(/;
2186
- let patten = strFunc.match(_regex);
2184
+ const strFunc = fn.toString();
2185
+ const _regex = /function\s+(\w+)\s*\(/;
2186
+ const patten = strFunc.match(_regex);
2187
2187
  if (patten) {
2188
2188
  return patten[1];
2189
2189
  }
2190
2190
  return "";
2191
2191
  }
2192
2192
  try {
2193
- new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
2194
- let args = Array.prototype.slice.call(arguments, 0);
2195
- let obj = this;
2196
- hookFunc.apply(obj, args);
2197
- return _context['realFunc_${_funcName}'].apply(obj, args);
2193
+ new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
2194
+ let args = Array.prototype.slice.call(arguments, 0);
2195
+ let obj = this;
2196
+ hookFunc.apply(obj, args);
2197
+ return _context['realFunc_${_funcName}'].apply(obj, args);
2198
2198
  };`)(_context, _funcName, hookFunc);
2199
2199
  _context[_funcName].prototype.isHooked = true;
2200
2200
  return true;
2201
2201
  }
2202
2202
  catch (e) {
2203
- console.log("Hook failed,check the params.");
2203
+ console.log("Hook failed,check the params.", e);
2204
2204
  return false;
2205
2205
  }
2206
2206
  };
2207
- Function.prototype.unhook = function (realFunc, funcName, context) {
2207
+ Function.prototype.unhook = function (_, funcName, context) {
2208
2208
  let _context = null;
2209
2209
  let _funcName = null;
2210
2210
  _context = context || window;
@@ -2213,8 +2213,8 @@ System.register('Utils', [], (function (exports) {
2213
2213
  console.log("No function is hooked on");
2214
2214
  return false;
2215
2215
  }
2216
- _context[_funcName] = _context["realFunc" + _funcName];
2217
- Reflect.deleteProperty(_context, "realFunc_" + _funcName);
2216
+ _context[_funcName] = _context[`realFunc${_funcName}`];
2217
+ Reflect.deleteProperty(_context, `realFunc_${_funcName}`);
2218
2218
  return true;
2219
2219
  };
2220
2220
  }
@@ -2222,10 +2222,10 @@ System.register('Utils', [], (function (exports) {
2222
2222
  * 删除在Function原型上添加的自定义方法.hook和.unhook
2223
2223
  */
2224
2224
  cleanEnv() {
2225
- if (Function.prototype.hasOwnProperty("hook")) {
2225
+ if (Object.prototype.hasOwnProperty.call(Function.prototype, "hook")) {
2226
2226
  Reflect.deleteProperty(Function.prototype, "hook");
2227
2227
  }
2228
- if (Function.prototype.hasOwnProperty("unhook")) {
2228
+ if (Object.prototype.hasOwnProperty.call(Function.prototype, "unhook")) {
2229
2229
  Reflect.deleteProperty(Function.prototype, "unhook");
2230
2230
  }
2231
2231
  return true;
@@ -2241,7 +2241,7 @@ System.register('Utils', [], (function (exports) {
2241
2241
  }
2242
2242
  else {
2243
2243
  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (charStr) {
2244
- var randomValue = (Math.random() * 16) | 0, randomCharValue = charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
2244
+ const randomValue = (Math.random() * 16) | 0, randomCharValue = charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
2245
2245
  return randomCharValue.toString(16);
2246
2246
  });
2247
2247
  }
@@ -2283,9 +2283,9 @@ System.register('Utils', [], (function (exports) {
2283
2283
  }
2284
2284
  }
2285
2285
  for (let index = 0; index < this.$config.configList.length; index++) {
2286
- let item = this.$config.configList[index];
2286
+ const item = this.$config.configList[index];
2287
2287
  if (typeof item.fn === "function") {
2288
- let result = await item.fn(details);
2288
+ const result = await item.fn(details);
2289
2289
  if (result == null) {
2290
2290
  return;
2291
2291
  }
@@ -2298,7 +2298,7 @@ System.register('Utils', [], (function (exports) {
2298
2298
  */
2299
2299
  add(fn) {
2300
2300
  if (typeof fn === "function") {
2301
- let uuid = GenerateUUID();
2301
+ const uuid = GenerateUUID();
2302
2302
  this.$config.configList.push({
2303
2303
  id: uuid,
2304
2304
  fn: fn,
@@ -2315,7 +2315,7 @@ System.register('Utils', [], (function (exports) {
2315
2315
  */
2316
2316
  delete(id) {
2317
2317
  if (typeof id === "string") {
2318
- let findIndex = this.$config.configList.findIndex((item) => item.id === id);
2318
+ const findIndex = this.$config.configList.findIndex((item) => item.id === id);
2319
2319
  if (findIndex !== -1) {
2320
2320
  this.$config.configList.splice(findIndex, 1);
2321
2321
  return true;
@@ -2361,9 +2361,9 @@ System.register('Utils', [], (function (exports) {
2361
2361
  }
2362
2362
  }
2363
2363
  for (let index = 0; index < this.$config.configList.length; index++) {
2364
- let item = this.$config.configList[index];
2364
+ const item = this.$config.configList[index];
2365
2365
  if (typeof item.successFn === "function") {
2366
- let result = await item.successFn(response, details);
2366
+ const result = await item.successFn(response, details);
2367
2367
  if (result == null) {
2368
2368
  return;
2369
2369
  }
@@ -2396,9 +2396,9 @@ System.register('Utils', [], (function (exports) {
2396
2396
  }
2397
2397
  }
2398
2398
  for (let index = 0; index < this.$config.configList.length; index++) {
2399
- let item = this.$config.configList[index];
2399
+ const item = this.$config.configList[index];
2400
2400
  if (typeof item.errorFn === "function") {
2401
- let result = await item.errorFn(data);
2401
+ const result = await item.errorFn(data);
2402
2402
  if (result == null) {
2403
2403
  return;
2404
2404
  }
@@ -2410,7 +2410,7 @@ System.register('Utils', [], (function (exports) {
2410
2410
  * 添加请求前的回调处理配置
2411
2411
  */
2412
2412
  add(successFn, errorFn) {
2413
- let id = GenerateUUID();
2413
+ const id = GenerateUUID();
2414
2414
  this.$config.configList.push({
2415
2415
  id: id,
2416
2416
  successFn: successFn,
@@ -2424,7 +2424,7 @@ System.register('Utils', [], (function (exports) {
2424
2424
  */
2425
2425
  delete(id) {
2426
2426
  if (typeof id === "string") {
2427
- let findIndex = this.$config.configList.findIndex((item) => item.id === id);
2427
+ const findIndex = this.$config.configList.findIndex((item) => item.id === id);
2428
2428
  if (findIndex !== -1) {
2429
2429
  this.$config.configList.splice(findIndex, 1);
2430
2430
  return true;
@@ -2445,23 +2445,23 @@ System.register('Utils', [], (function (exports) {
2445
2445
  * 对请求的参数进行合并处理
2446
2446
  */
2447
2447
  handleBeforeRequestOptionArgs(...args) {
2448
- let option = {
2448
+ const option = {
2449
2449
  url: void 0,
2450
2450
  };
2451
2451
  if (typeof args[0] === "string") {
2452
2452
  /* 传入的是url,转为配置 */
2453
- let url = args[0];
2453
+ const url = args[0];
2454
2454
  option.url = url;
2455
2455
  if (typeof args[1] === "object") {
2456
2456
  /* 处理第二个参数details */
2457
- let optionArg = args[1];
2457
+ const optionArg = args[1];
2458
2458
  commonUtil.assign(option, optionArg, true);
2459
2459
  option.url = url;
2460
2460
  }
2461
2461
  }
2462
2462
  else {
2463
2463
  /* 传入的是配置 */
2464
- let optionArg = args[0];
2464
+ const optionArg = args[0];
2465
2465
  commonUtil.assign(option, optionArg, true);
2466
2466
  }
2467
2467
  return option;
@@ -2474,7 +2474,7 @@ System.register('Utils', [], (function (exports) {
2474
2474
  * @param reject promise抛出错误回调
2475
2475
  */
2476
2476
  getRequestOption(method, userRequestOption, resolve, reject) {
2477
- let that = this;
2477
+ const that = this;
2478
2478
  let url = userRequestOption.url || this.context.#defaultRequestOption.url;
2479
2479
  if (typeof url === "string") {
2480
2480
  // 去除左右空格
@@ -2487,7 +2487,7 @@ System.register('Utils', [], (function (exports) {
2487
2487
  }
2488
2488
  }
2489
2489
  }
2490
- let requestOption = {
2490
+ const requestOption = {
2491
2491
  url: url,
2492
2492
  method: (method || "GET").toString().toUpperCase().trim(),
2493
2493
  timeout: userRequestOption.timeout || this.context.#defaultRequestOption.timeout,
@@ -2509,9 +2509,12 @@ System.register('Utils', [], (function (exports) {
2509
2509
  /* 对象使用深拷贝 */
2510
2510
  fetchInit: commonUtil.deepClone(this.context.#defaultRequestOption.fetchInit),
2511
2511
  allowInterceptConfig: {
2512
- beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig.beforeRequest,
2513
- afterResponseSuccess: this.context.#defaultRequestOption.allowInterceptConfig.afterResponseSuccess,
2514
- afterResponseError: this.context.#defaultRequestOption.allowInterceptConfig.afterResponseError,
2512
+ beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig
2513
+ .beforeRequest,
2514
+ afterResponseSuccess: this.context.#defaultRequestOption.allowInterceptConfig
2515
+ .afterResponseSuccess,
2516
+ afterResponseError: this.context.#defaultRequestOption.allowInterceptConfig
2517
+ .afterResponseError,
2515
2518
  },
2516
2519
  user: userRequestOption.user || this.context.#defaultRequestOption.user,
2517
2520
  password: userRequestOption.password || this.context.#defaultRequestOption.password,
@@ -2539,15 +2542,17 @@ System.register('Utils', [], (function (exports) {
2539
2542
  };
2540
2543
  // 补全allowInterceptConfig参数
2541
2544
  if (typeof userRequestOption.allowInterceptConfig === "boolean") {
2542
- Object.keys(requestOption.allowInterceptConfig).forEach((keyName) => {
2545
+ const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
2546
+ allowInterceptConfigKeys.forEach((keyName) => {
2543
2547
  Reflect.set(requestOption.allowInterceptConfig, keyName, userRequestOption.allowInterceptConfig);
2544
2548
  });
2545
2549
  }
2546
2550
  else {
2547
2551
  if (typeof userRequestOption.allowInterceptConfig === "object" &&
2548
2552
  userRequestOption.allowInterceptConfig != null) {
2549
- Object.keys(userRequestOption.allowInterceptConfig).forEach((keyName) => {
2550
- let value = Reflect.get(userRequestOption.allowInterceptConfig, keyName);
2553
+ const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
2554
+ allowInterceptConfigKeys.forEach((keyName) => {
2555
+ const value = Reflect.get(userRequestOption.allowInterceptConfig, keyName);
2551
2556
  if (typeof value === "boolean" &&
2552
2557
  Reflect.has(requestOption.allowInterceptConfig, keyName)) {
2553
2558
  Reflect.set(requestOption.allowInterceptConfig, keyName, value);
@@ -2561,7 +2566,8 @@ System.register('Utils', [], (function (exports) {
2561
2566
  }
2562
2567
  if (typeof requestOption.headers === "object") {
2563
2568
  if (typeof userRequestOption.headers === "object") {
2564
- Object.keys(userRequestOption.headers).forEach((keyName, index) => {
2569
+ const headerKeys = Object.keys(requestOption.headers);
2570
+ headerKeys.forEach((keyName) => {
2565
2571
  if (keyName in requestOption.headers && userRequestOption.headers?.[keyName] == null) {
2566
2572
  /* 在默认的header中存在,且设置它新的值为空,那么就是默认的值 */
2567
2573
  Reflect.deleteProperty(requestOption.headers, keyName);
@@ -2579,8 +2585,9 @@ System.register('Utils', [], (function (exports) {
2579
2585
  if (typeof requestOption.fetchInit === "object") {
2580
2586
  /* 使用assign替换且添加 */
2581
2587
  if (typeof userRequestOption.fetchInit === "object") {
2582
- Object.keys(userRequestOption.fetchInit).forEach((keyName, index) => {
2583
- if (keyName in requestOption.fetchInit && userRequestOption.fetchInit[keyName] == null) {
2588
+ const fetchInitKeys = Object.keys(requestOption.fetchInit);
2589
+ fetchInitKeys.forEach((keyName) => {
2590
+ if (keyName in requestOption.fetchInit && Reflect.get(userRequestOption.fetchInit ?? {}, keyName) == null) {
2584
2591
  /* 在默认的fetchInit中存在,且设置它新的值为空,那么就是默认的值 */
2585
2592
  Reflect.deleteProperty(requestOption.fetchInit, keyName);
2586
2593
  }
@@ -2605,7 +2612,7 @@ System.register('Utils', [], (function (exports) {
2605
2612
  try {
2606
2613
  new URL(requestOption.url);
2607
2614
  }
2608
- catch (error) {
2615
+ catch {
2609
2616
  if (requestOption.url.startsWith("//")) {
2610
2617
  // 补充https:
2611
2618
  requestOption.url = globalThis.location.protocol + requestOption.url;
@@ -2616,7 +2623,7 @@ System.register('Utils', [], (function (exports) {
2616
2623
  }
2617
2624
  else {
2618
2625
  // 补充origin+/
2619
- requestOption.url = globalThis.location.origin + "/" + requestOption.url;
2626
+ requestOption.url = `${globalThis.location.origin}/${requestOption.url}`;
2620
2627
  }
2621
2628
  }
2622
2629
  if (requestOption.fetchInit && !requestOption.fetch) {
@@ -2626,12 +2633,12 @@ System.register('Utils', [], (function (exports) {
2626
2633
  // 转换data类型
2627
2634
  try {
2628
2635
  /** 是否对数据进行处理 */
2629
- let processData = userRequestOption.processData ?? true;
2636
+ const processData = userRequestOption.processData ?? true;
2630
2637
  if (requestOption.data != null && processData) {
2631
- let method = requestOption.method;
2638
+ const method = requestOption.method;
2632
2639
  if (method === "GET" || method === "HEAD") {
2633
2640
  // GET类型,data如果有,那么需要转为searchParams
2634
- let urlObj = new URL(requestOption.url);
2641
+ const urlObj = new URL(requestOption.url);
2635
2642
  let urlSearch = "";
2636
2643
  let isHandler = false;
2637
2644
  if (typeof requestOption.data === "string") {
@@ -2641,7 +2648,7 @@ System.register('Utils', [], (function (exports) {
2641
2648
  else if (typeof requestOption.data === "object") {
2642
2649
  isHandler = true;
2643
2650
  // URLSearchParams参数可以转普通的string:string,包括FormData
2644
- let searchParams = new URLSearchParams(requestOption.data);
2651
+ const searchParams = new URLSearchParams(requestOption.data);
2645
2652
  urlSearch = searchParams.toString();
2646
2653
  }
2647
2654
  if (isHandler) {
@@ -2662,7 +2669,7 @@ System.register('Utils', [], (function (exports) {
2662
2669
  }
2663
2670
  else {
2664
2671
  // xxx=xxx&xxx=
2665
- urlObj.search = urlObj.search + "&" + urlSearch;
2672
+ urlObj.search = `${urlObj.search}&${urlSearch}`;
2666
2673
  }
2667
2674
  }
2668
2675
  }
@@ -2670,14 +2677,14 @@ System.register('Utils', [], (function (exports) {
2670
2677
  }
2671
2678
  else if (method === "POST" && requestOption.headers != null) {
2672
2679
  // POST类型,data如果是FormData,那么需要转为string
2673
- let headersKeyList = Object.keys(requestOption.headers);
2674
- let ContentTypeIndex = headersKeyList.findIndex((headerKey) => {
2680
+ const headersKeyList = Object.keys(requestOption.headers);
2681
+ const ContentTypeIndex = headersKeyList.findIndex((headerKey) => {
2675
2682
  return (headerKey.trim().toLowerCase() === "content-type" &&
2676
2683
  typeof requestOption.headers[headerKey] === "string");
2677
2684
  });
2678
2685
  if (ContentTypeIndex !== -1) {
2679
- let ContentTypeKey = headersKeyList[ContentTypeIndex];
2680
- let ContentType = requestOption.headers[ContentTypeKey];
2686
+ const ContentTypeKey = headersKeyList[ContentTypeIndex];
2687
+ const ContentType = requestOption.headers[ContentTypeKey];
2681
2688
  // 设置了Content-Type
2682
2689
  if (ContentType.includes("application/json")) {
2683
2690
  // application/json
@@ -2718,10 +2725,10 @@ System.register('Utils', [], (function (exports) {
2718
2725
  * @param option 请求配置
2719
2726
  */
2720
2727
  removeRequestNullOption(option) {
2721
- Object.keys(option).forEach((keyName) => {
2722
- if (option[keyName] == null ||
2723
- (option[keyName] instanceof Function &&
2724
- commonUtil.isNull(option[keyName]))) {
2728
+ const optionKeys = Object.keys(option);
2729
+ optionKeys.forEach((keyName) => {
2730
+ const optionValue = option[keyName];
2731
+ if (optionValue == null || (optionValue instanceof Function && commonUtil.isNull(optionValue))) {
2725
2732
  Reflect.deleteProperty(option, keyName);
2726
2733
  return;
2727
2734
  }
@@ -2739,14 +2746,14 @@ System.register('Utils', [], (function (exports) {
2739
2746
  /**
2740
2747
  * fetch的请求配置
2741
2748
  **/
2742
- let fetchRequestOption = {};
2749
+ const fetchRequestOption = {};
2743
2750
  if ((option.method === "GET" || option.method === "HEAD") && option.data != null) {
2744
2751
  /* GET 或 HEAD 方法的请求不能包含 body 信息 */
2745
2752
  Reflect.deleteProperty(option, "data");
2746
2753
  }
2747
2754
  /* 中止信号控制器 */
2748
- let abortController = new AbortController();
2749
- let signal = abortController.signal;
2755
+ const abortController = new AbortController();
2756
+ const signal = abortController.signal;
2750
2757
  signal.onabort = () => {
2751
2758
  option.onabort({
2752
2759
  isFetch: true,
@@ -2791,10 +2798,10 @@ System.register('Utils', [], (function (exports) {
2791
2798
  * onabort请求被取消-触发
2792
2799
  * @param details 配置
2793
2800
  * @param resolve promise回调
2794
- * @param reject promise抛出错误回调
2801
+ * @param _reject promise抛出错误回调
2795
2802
  * @param argsResult 返回的参数列表
2796
2803
  */
2797
- async onAbort(details, resolve, reject, argsResult) {
2804
+ async onAbort(details, resolve, _reject, argsResult) {
2798
2805
  // console.log(argsResult);
2799
2806
  if (typeof details?.onabort === "function") {
2800
2807
  details.onabort.apply(this, argsResult);
@@ -2831,7 +2838,7 @@ System.register('Utils', [], (function (exports) {
2831
2838
  * @param reject 抛出错误
2832
2839
  * @param argsResult 返回的参数列表
2833
2840
  */
2834
- async onTimeout(details, resolve, reject, argsResult) {
2841
+ async onTimeout(details, resolve, _reject, argsResult) {
2835
2842
  // console.log(argsResult);
2836
2843
  if (typeof details?.ontimeout === "function") {
2837
2844
  // 执行配置中的ontime回调
@@ -2869,10 +2876,10 @@ System.register('Utils', [], (function (exports) {
2869
2876
  * onerror请求异常-触发
2870
2877
  * @param details 配置
2871
2878
  * @param resolve 回调
2872
- * @param reject 抛出错误
2879
+ * @param _reject 抛出错误
2873
2880
  * @param argsResult 返回的参数列表
2874
2881
  */
2875
- async onError(details, resolve, reject, argsResult) {
2882
+ async onError(details, resolve, _reject, argsResult) {
2876
2883
  // console.log(argsResult);
2877
2884
  if (typeof details?.onerror === "function") {
2878
2885
  details.onerror.apply(this, argsResult);
@@ -2906,16 +2913,15 @@ System.register('Utils', [], (function (exports) {
2906
2913
  * onload加载完毕-触发
2907
2914
  * @param details 请求的配置
2908
2915
  * @param resolve 回调
2909
- * @param reject 抛出错误
2916
+ * @param _reject 抛出错误
2910
2917
  * @param argsResult 返回的参数列表
2911
2918
  */
2912
- async onLoad(details, resolve, reject, argsResult) {
2919
+ async onLoad(details, resolve, _reject, argsResult) {
2913
2920
  // console.log(argsResult);
2914
2921
  /* X浏览器会因为设置了responseType导致不返回responseText */
2915
- let originResponse = argsResult[0];
2922
+ const originResponse = argsResult[0];
2916
2923
  /* responseText为空,response不为空的情况 */
2917
- if (commonUtil.isNull(originResponse["responseText"]) &&
2918
- commonUtil.isNotNull(originResponse["response"])) {
2924
+ if (commonUtil.isNull(originResponse["responseText"]) && commonUtil.isNotNull(originResponse["response"])) {
2919
2925
  if (typeof originResponse["response"] === "object") {
2920
2926
  TryCatch().run(() => {
2921
2927
  originResponse["responseText"] = JSON.stringify(originResponse["response"]);
@@ -2930,51 +2936,51 @@ System.register('Utils', [], (function (exports) {
2930
2936
  typeof originResponse["responseText"] === "string" &&
2931
2937
  originResponse["responseText"].trim() !== "") {
2932
2938
  /** 原始的请求text */
2933
- let httpxResponseText = originResponse.responseText;
2939
+ const httpxResponseText = originResponse.responseText;
2934
2940
  // 自定义个新的response
2935
2941
  let httpxResponse = httpxResponseText;
2936
2942
  if (details.responseType === "json") {
2937
2943
  httpxResponse = commonUtil.toJSON(httpxResponseText);
2938
2944
  }
2939
2945
  else if (details.responseType === "document") {
2940
- let parser = new DOMParser();
2946
+ const parser = new DOMParser();
2941
2947
  httpxResponse = parser.parseFromString(httpxResponseText, "text/html");
2942
2948
  }
2943
2949
  else if (details.responseType === "arraybuffer") {
2944
- let encoder = new TextEncoder();
2945
- let arrayBuffer = encoder.encode(httpxResponseText);
2950
+ const encoder = new TextEncoder();
2951
+ const arrayBuffer = encoder.encode(httpxResponseText);
2946
2952
  httpxResponse = arrayBuffer;
2947
2953
  }
2948
2954
  else if (details.responseType === "blob") {
2949
- let encoder = new TextEncoder();
2950
- let arrayBuffer = encoder.encode(httpxResponseText);
2955
+ const encoder = new TextEncoder();
2956
+ const arrayBuffer = encoder.encode(httpxResponseText);
2951
2957
  httpxResponse = new Blob([arrayBuffer]);
2952
2958
  }
2953
2959
  // 尝试覆盖原response
2954
2960
  try {
2955
- let setStatus = Reflect.set(originResponse, "response", httpxResponse);
2961
+ const setStatus = Reflect.set(originResponse, "response", httpxResponse);
2956
2962
  if (!setStatus) {
2957
2963
  console.warn("[Httpx-HttpxCallBack.oonLoad] 覆盖原始 response 失败,尝试添加新的httpxResponse");
2958
2964
  try {
2959
2965
  Reflect.set(originResponse, "httpxResponse", httpxResponse);
2960
2966
  }
2961
- catch (error) {
2967
+ catch {
2962
2968
  console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
2963
2969
  }
2964
2970
  }
2965
2971
  }
2966
- catch (error) {
2972
+ catch {
2967
2973
  console.warn("[Httpx-HttpxCallBack.oonLoad] 原始 response 无法被覆盖,尝试添加新的httpxResponse");
2968
2974
  try {
2969
2975
  Reflect.set(originResponse, "httpxResponse", httpxResponse);
2970
2976
  }
2971
- catch (error) {
2977
+ catch {
2972
2978
  console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
2973
2979
  }
2974
2980
  }
2975
2981
  }
2976
2982
  /* Stay扩展中没有finalUrl,对应的是responseURL */
2977
- let originResponseURL = Reflect.get(originResponse, "responseURL");
2983
+ const originResponseURL = Reflect.get(originResponse, "responseURL");
2978
2984
  if (originResponse["finalUrl"] == null && originResponseURL != null) {
2979
2985
  Reflect.set(originResponse, "finalUrl", originResponseURL);
2980
2986
  }
@@ -2994,7 +3000,7 @@ System.register('Utils', [], (function (exports) {
2994
3000
  });
2995
3001
  }
2996
3002
  else {
2997
- this.context.HttpxResponseCallBack.onError(details, resolve, reject, argsResult);
3003
+ this.context.HttpxResponseCallBack.onError(details, resolve, _reject, argsResult);
2998
3004
  }
2999
3005
  },
3000
3006
  /**
@@ -3051,7 +3057,7 @@ System.register('Utils', [], (function (exports) {
3051
3057
  console.log("[Httpx-HttpxRequest.request] 请求前的配置👇", details);
3052
3058
  }
3053
3059
  if (typeof this.context.HttpxRequestHook.beforeRequestCallBack === "function") {
3054
- let hookResult = await this.context.HttpxRequestHook.beforeRequestCallBack(details);
3060
+ const hookResult = await this.context.HttpxRequestHook.beforeRequestCallBack(details);
3055
3061
  if (hookResult == null) {
3056
3062
  return;
3057
3063
  }
@@ -3083,7 +3089,7 @@ System.register('Utils', [], (function (exports) {
3083
3089
  fetch(option.url, fetchRequestOption)
3084
3090
  .then(async (fetchResponse) => {
3085
3091
  /** 自定义的response */
3086
- let httpxResponse = {
3092
+ const httpxResponse = {
3087
3093
  isFetch: true,
3088
3094
  finalUrl: fetchResponse.url,
3089
3095
  readyState: 4,
@@ -3098,9 +3104,9 @@ System.register('Utils', [], (function (exports) {
3098
3104
  };
3099
3105
  Object.assign(httpxResponse, option.context || {});
3100
3106
  // 把headers转为字符串
3101
- for (const [key, value] of fetchResponse.headers.entries()) {
3107
+ fetchResponse.headers.forEach((value, key) => {
3102
3108
  httpxResponse.responseHeaders += `${key}: ${value}\n`;
3103
- }
3109
+ });
3104
3110
  /** 请求返回的类型 */
3105
3111
  const fetchResponseType = fetchResponse.headers.get("Content-Type");
3106
3112
  /* 如果需要stream,且获取到的是stream,那直接返回 */
@@ -3121,11 +3127,11 @@ System.register('Utils', [], (function (exports) {
3121
3127
  /** 响应xml文档 */
3122
3128
  let responseXML = "";
3123
3129
  /** 先获取二进制数据 */
3124
- let arrayBuffer = await fetchResponse.arrayBuffer();
3130
+ const arrayBuffer = await fetchResponse.arrayBuffer();
3125
3131
  /** 数据编码 */
3126
3132
  let encoding = "utf-8";
3127
3133
  if (fetchResponse.headers.has("Content-Type")) {
3128
- let charsetMatched = fetchResponse.headers.get("Content-Type")?.match(/charset=(.+)/);
3134
+ const charsetMatched = fetchResponse.headers.get("Content-Type")?.match(/charset=(.+)/);
3129
3135
  if (charsetMatched) {
3130
3136
  encoding = charsetMatched[1];
3131
3137
  encoding = encoding.toLowerCase();
@@ -3135,7 +3141,7 @@ System.register('Utils', [], (function (exports) {
3135
3141
  // 去除引号
3136
3142
  encoding = encoding.replace(/('|")/gi, "");
3137
3143
  // 编码
3138
- let textDecoder = new TextDecoder(encoding);
3144
+ const textDecoder = new TextDecoder(encoding);
3139
3145
  responseText = textDecoder.decode(arrayBuffer);
3140
3146
  response = responseText;
3141
3147
  if (option.responseType === "arraybuffer") {
@@ -3153,11 +3159,11 @@ System.register('Utils', [], (function (exports) {
3153
3159
  }
3154
3160
  else if (option.responseType === "document" || option.responseType == null) {
3155
3161
  // response返回格式是文档格式
3156
- let parser = new DOMParser();
3162
+ const parser = new DOMParser();
3157
3163
  response = parser.parseFromString(responseText, "text/html");
3158
3164
  }
3159
3165
  // 转为XML结构
3160
- let parser = new DOMParser();
3166
+ const parser = new DOMParser();
3161
3167
  responseXML = parser.parseFromString(responseText, "text/xml");
3162
3168
  httpxResponse.response = response;
3163
3169
  httpxResponse.responseText = responseText;
@@ -3231,6 +3237,9 @@ System.register('Utils', [], (function (exports) {
3231
3237
  onreadystatechange() { },
3232
3238
  onprogress() { },
3233
3239
  };
3240
+ /**
3241
+ * 实例化的默认配置
3242
+ */
3234
3243
  #defaultInitOption = {
3235
3244
  /**
3236
3245
  * `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
@@ -3346,7 +3355,7 @@ System.register('Utils', [], (function (exports) {
3346
3355
  * @param details 配置
3347
3356
  */
3348
3357
  get(...args) {
3349
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3358
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3350
3359
  useRequestOption.method = "GET";
3351
3360
  return this.request(useRequestOption, (option) => {
3352
3361
  Reflect.deleteProperty(option, "onprogress");
@@ -3356,7 +3365,7 @@ System.register('Utils', [], (function (exports) {
3356
3365
  * POST 请求
3357
3366
  */
3358
3367
  post(...args) {
3359
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3368
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3360
3369
  useRequestOption.method = "POST";
3361
3370
  return this.request(useRequestOption);
3362
3371
  }
@@ -3364,7 +3373,7 @@ System.register('Utils', [], (function (exports) {
3364
3373
  * HEAD 请求
3365
3374
  */
3366
3375
  head(...args) {
3367
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3376
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3368
3377
  useRequestOption.method = "HEAD";
3369
3378
  return this.request(useRequestOption, (option) => {
3370
3379
  Reflect.deleteProperty(option, "onprogress");
@@ -3374,7 +3383,7 @@ System.register('Utils', [], (function (exports) {
3374
3383
  * OPTIONS 请求
3375
3384
  */
3376
3385
  options(...args) {
3377
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3386
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3378
3387
  useRequestOption.method = "OPTIONS";
3379
3388
  return this.request(useRequestOption, (option) => {
3380
3389
  Reflect.deleteProperty(option, "onprogress");
@@ -3384,7 +3393,7 @@ System.register('Utils', [], (function (exports) {
3384
3393
  * DELETE 请求
3385
3394
  */
3386
3395
  delete(...args) {
3387
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3396
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3388
3397
  useRequestOption.method = "DELETE";
3389
3398
  return this.request(useRequestOption, (option) => {
3390
3399
  Reflect.deleteProperty(option, "onprogress");
@@ -3394,7 +3403,7 @@ System.register('Utils', [], (function (exports) {
3394
3403
  * PUT 请求
3395
3404
  */
3396
3405
  put(...args) {
3397
- let userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3406
+ const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3398
3407
  userRequestOption.method = "PUT";
3399
3408
  return this.request(userRequestOption);
3400
3409
  }
@@ -3404,18 +3413,30 @@ System.register('Utils', [], (function (exports) {
3404
3413
  * @param beforeRequestOption 处理请求前的配置
3405
3414
  */
3406
3415
  request(details, beforeRequestOption) {
3407
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
3408
- /** 取消请求 */
3416
+ // 对请求的参数进行合并处理
3417
+ const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
3418
+ /**
3419
+ * 取消请求
3420
+ */
3409
3421
  let abortFn = null;
3410
- let promise = new globalThis.Promise(async (resolve, reject) => {
3411
- let requestOption = (this.HttpxRequestOption.getRequestOption(useRequestOption.method, useRequestOption, resolve, reject));
3422
+ const promise = new globalThis.Promise(async (resolve, reject) => {
3423
+ // 请求配置
3424
+ let requestOption = this.HttpxRequestOption.getRequestOption(userRequestOption.method, userRequestOption, (resultOption) => {
3425
+ resolve(resultOption);
3426
+ }, (...args) => {
3427
+ reject(...args);
3428
+ });
3429
+ requestOption = this.HttpxRequestOption.removeRequestNullOption(requestOption);
3412
3430
  if (typeof beforeRequestOption === "function") {
3413
3431
  beforeRequestOption(requestOption);
3414
3432
  }
3415
- requestOption = this.HttpxRequestOption.removeRequestNullOption(requestOption);
3433
+ // 处理重试逻辑
3416
3434
  const requestResult = await this.HttpxRequest.request(requestOption);
3417
3435
  if (requestResult != null && typeof requestResult.abort === "function") {
3418
- abortFn = requestResult.abort;
3436
+ abortFn = () => {
3437
+ // 取消请求
3438
+ requestResult.abort();
3439
+ };
3419
3440
  }
3420
3441
  });
3421
3442
  promise.abort = () => {
@@ -3434,10 +3455,7 @@ System.register('Utils', [], (function (exports) {
3434
3455
  /* websql的版本号,由于ios的问题,版本号的写法不一样 */
3435
3456
  // #slqVersion = "1";
3436
3457
  /* 监听IndexDB */
3437
- #indexedDB = window.indexedDB ||
3438
- window.mozIndexedDB ||
3439
- window.webkitIndexedDB ||
3440
- window.msIndexedDB;
3458
+ #indexedDB = globalThis.indexedDB || globalThis.mozIndexedDB || globalThis.webkitIndexedDB || globalThis.msIndexedDB;
3441
3459
  /* 缓存数据库,避免同一个页面重复创建和销毁 */
3442
3460
  #db = {};
3443
3461
  // #store: IDBObjectStore = null as any;
@@ -3472,7 +3490,7 @@ System.register('Utils', [], (function (exports) {
3472
3490
  this.#storeName = storeName;
3473
3491
  this.#dbVersion = dbVersion;
3474
3492
  if (!this.#indexedDB) {
3475
- alert("很抱歉,您的浏览器不支持indexedDB");
3493
+ window.alert("很抱歉,您的浏览器不支持indexedDB");
3476
3494
  throw new TypeError("很抱歉,您的浏览器不支持indexedDB");
3477
3495
  }
3478
3496
  }
@@ -3481,10 +3499,9 @@ System.register('Utils', [], (function (exports) {
3481
3499
  * @param dbName 表名
3482
3500
  */
3483
3501
  createStore(dbName) {
3484
- let txn, store;
3485
- txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
3502
+ const txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
3486
3503
  /* IndexDB的读写权限 */
3487
- store = txn.objectStore(this.#storeName);
3504
+ const store = txn.objectStore(this.#storeName);
3488
3505
  // this.#store = store;
3489
3506
  return store;
3490
3507
  }
@@ -3494,12 +3511,12 @@ System.register('Utils', [], (function (exports) {
3494
3511
  * @param dbName 数据库名
3495
3512
  */
3496
3513
  open(callback, dbName) {
3497
- let that = this;
3514
+ const that = this;
3498
3515
  /* 打开数据库 */
3499
3516
  /* 如果支持IndexDB */
3500
3517
  if (!that.#db[dbName]) {
3501
3518
  /* 如果缓存中没有,则进行数据库的创建或打开,提高效率 */
3502
- let request = that.#indexedDB.open(dbName, that.#dbVersion);
3519
+ const request = that.#indexedDB.open(dbName, that.#dbVersion);
3503
3520
  request.onerror = function (event) {
3504
3521
  callback(null, {
3505
3522
  code: that.#statusCode.openFailed.code,
@@ -3509,26 +3526,26 @@ System.register('Utils', [], (function (exports) {
3509
3526
  };
3510
3527
  request.onsuccess = function (event) {
3511
3528
  if (!that.#db[dbName]) {
3512
- let target = event.target;
3529
+ const target = event.target;
3513
3530
  that.#db[dbName] = target.result;
3514
3531
  }
3515
- let store = that.createStore(dbName);
3532
+ const store = that.createStore(dbName);
3516
3533
  callback(store);
3517
3534
  };
3518
3535
  request.onupgradeneeded = function (event) {
3519
- let target = event.target;
3536
+ const target = event.target;
3520
3537
  that.#db[dbName] = target.result;
3521
- let store = that.#db[dbName].createObjectStore(that.#storeName, {
3538
+ const store = that.#db[dbName].createObjectStore(that.#storeName, {
3522
3539
  keyPath: "key",
3523
3540
  });
3524
- store.transaction.oncomplete = function (event) {
3541
+ store.transaction.oncomplete = function () {
3525
3542
  callback(store);
3526
3543
  };
3527
3544
  };
3528
3545
  }
3529
3546
  else {
3530
3547
  /* 如果缓存中已经打开了数据库,就直接使用 */
3531
- let store = this.createStore(dbName);
3548
+ const store = this.createStore(dbName);
3532
3549
  callback(store);
3533
3550
  }
3534
3551
  }
@@ -3538,10 +3555,10 @@ System.register('Utils', [], (function (exports) {
3538
3555
  * @param value 数据值
3539
3556
  */
3540
3557
  async save(key, value) {
3541
- let that = this;
3558
+ const that = this;
3542
3559
  return new Promise((resolve) => {
3543
- let dbName = this.#dbName;
3544
- let inData = {
3560
+ const dbName = this.#dbName;
3561
+ const inData = {
3545
3562
  key: key,
3546
3563
  value: value,
3547
3564
  };
@@ -3554,7 +3571,7 @@ System.register('Utils', [], (function (exports) {
3554
3571
  });
3555
3572
  }
3556
3573
  else {
3557
- let request = idbStore.put(inData);
3574
+ const request = idbStore.put(inData);
3558
3575
  request.onsuccess = function (event) {
3559
3576
  /* 保存成功有success 字段 */
3560
3577
  resolve({
@@ -3581,9 +3598,9 @@ System.register('Utils', [], (function (exports) {
3581
3598
  * @param key 数据key
3582
3599
  */
3583
3600
  async has(key) {
3584
- let that = this;
3601
+ const that = this;
3585
3602
  return new Promise((resolve) => {
3586
- let dbName = this.#dbName;
3603
+ const dbName = this.#dbName;
3587
3604
  this.open(function (idbStore) {
3588
3605
  /* 判断返回的数据中是否有error字段 */
3589
3606
  if (idbStore == null) {
@@ -3594,7 +3611,7 @@ System.register('Utils', [], (function (exports) {
3594
3611
  });
3595
3612
  }
3596
3613
  else {
3597
- let request = idbStore.get(key);
3614
+ const request = idbStore.get(key);
3598
3615
  request.onsuccess = function (event) {
3599
3616
  /* result 返回的是 {key: string, value: any} */
3600
3617
  /* 键值对存储 */
@@ -3622,9 +3639,9 @@ System.register('Utils', [], (function (exports) {
3622
3639
  * @param key 数据key
3623
3640
  */
3624
3641
  async get(key) {
3625
- let that = this;
3642
+ const that = this;
3626
3643
  return new Promise((resolve) => {
3627
- let dbName = this.#dbName;
3644
+ const dbName = this.#dbName;
3628
3645
  this.open(function (idbStore) {
3629
3646
  /* 判断返回的数据中是否有error字段 */
3630
3647
  if (idbStore == null) {
@@ -3636,13 +3653,13 @@ System.register('Utils', [], (function (exports) {
3636
3653
  });
3637
3654
  }
3638
3655
  else {
3639
- let request = idbStore.get(key);
3656
+ const request = idbStore.get(key);
3640
3657
  request.onsuccess = function (event) {
3641
- let target = event.target;
3642
- let result = target.result;
3658
+ const target = event.target;
3659
+ const result = target.result;
3643
3660
  /* result 返回的是 {key: string, value: any} */
3644
3661
  /* 键值对存储 */
3645
- let data = result ? result.value : void 0;
3662
+ const data = result ? result.value : void 0;
3646
3663
  if (data == null) {
3647
3664
  resolve({
3648
3665
  success: true,
@@ -3683,10 +3700,10 @@ System.register('Utils', [], (function (exports) {
3683
3700
  */
3684
3701
  async regexpGet(key) {
3685
3702
  let list = [];
3686
- let that = this;
3703
+ const that = this;
3687
3704
  return new Promise((resolve) => {
3688
3705
  /* 正则查询 */
3689
- let dbName = that.#dbName;
3706
+ const dbName = that.#dbName;
3690
3707
  this.open(function (idbStore) {
3691
3708
  /* 判断返回的数据中是否有error字段 */
3692
3709
  if (idbStore == null) {
@@ -3698,16 +3715,16 @@ System.register('Utils', [], (function (exports) {
3698
3715
  });
3699
3716
  }
3700
3717
  else {
3701
- let request = idbStore.getAll();
3718
+ const request = idbStore.getAll();
3702
3719
  request.onsuccess = function (event) {
3703
- let target = event.target;
3704
- let result = target.result;
3720
+ const target = event.target;
3721
+ const result = target.result;
3705
3722
  if (result.length !== 0) {
3706
- result.forEach((dataItem, index) => {
3723
+ result.forEach((dataItem) => {
3707
3724
  // 当前项的key
3708
- let __key = dataItem["key"];
3725
+ const __key = dataItem["key"];
3709
3726
  // 当前项的value
3710
- let __value = dataItem["value"];
3727
+ const __value = dataItem["value"];
3711
3728
  if (__key.match(key)) {
3712
3729
  list = list.concat(__value);
3713
3730
  }
@@ -3739,10 +3756,10 @@ System.register('Utils', [], (function (exports) {
3739
3756
  * @param key 数据key
3740
3757
  */
3741
3758
  async delete(key) {
3742
- let that = this;
3759
+ const that = this;
3743
3760
  return new Promise((resolve) => {
3744
3761
  /* 根据key删除某条数据 */
3745
- let dbName = that.#dbName;
3762
+ const dbName = that.#dbName;
3746
3763
  this.open(function (idbStore) {
3747
3764
  if (idbStore == null) {
3748
3765
  resolve({
@@ -3753,7 +3770,7 @@ System.register('Utils', [], (function (exports) {
3753
3770
  }
3754
3771
  else {
3755
3772
  // 删除键
3756
- let request = idbStore.delete(key);
3773
+ const request = idbStore.delete(key);
3757
3774
  request.onsuccess = function (event) {
3758
3775
  resolve({
3759
3776
  success: true,
@@ -3778,10 +3795,10 @@ System.register('Utils', [], (function (exports) {
3778
3795
  * 删除所有数据
3779
3796
  */
3780
3797
  async deleteAll() {
3781
- let that = this;
3798
+ const that = this;
3782
3799
  return new Promise((resolve) => {
3783
3800
  /* 清空数据库 */
3784
- let dbName = that.#dbName;
3801
+ const dbName = that.#dbName;
3785
3802
  this.open(function (idbStore) {
3786
3803
  if (idbStore == null) {
3787
3804
  resolve({
@@ -3792,7 +3809,7 @@ System.register('Utils', [], (function (exports) {
3792
3809
  }
3793
3810
  else {
3794
3811
  // 清空
3795
- let operateResult = idbStore.clear();
3812
+ const operateResult = idbStore.clear();
3796
3813
  operateResult.onsuccess = function (event) {
3797
3814
  resolve({
3798
3815
  success: true,
@@ -3825,7 +3842,7 @@ System.register('Utils', [], (function (exports) {
3825
3842
  run;
3826
3843
  isLock;
3827
3844
  constructor(callback, context, delayTime) {
3828
- let that = this;
3845
+ const that = this;
3829
3846
  this.#callback = callback;
3830
3847
  if (typeof context === "number") {
3831
3848
  this.#delayTime = context;
@@ -3915,14 +3932,14 @@ System.register('Utils', [], (function (exports) {
3915
3932
  * @param stack
3916
3933
  */
3917
3934
  parseErrorStack(stack) {
3918
- let result = {
3935
+ const result = {
3919
3936
  name: "",
3920
3937
  position: "",
3921
3938
  };
3922
3939
  for (let stackString of stack) {
3923
3940
  stackString = stackString.trim();
3924
- let stackFunctionNameMatch = stackString.match(/^at[\s]+(.+?)[\s]+/i);
3925
- let stackFunctionNamePositionMatch = stackString.match(/^at[\s]+.+[\s]+\((.+?)\)/i);
3941
+ const stackFunctionNameMatch = stackString.match(/^at[\s]+(.+?)[\s]+/i);
3942
+ const stackFunctionNamePositionMatch = stackString.match(/^at[\s]+.+[\s]+\((.+?)\)/i);
3926
3943
  if (stackFunctionNameMatch == null) {
3927
3944
  continue;
3928
3945
  }
@@ -3930,8 +3947,8 @@ System.register('Utils', [], (function (exports) {
3930
3947
  continue;
3931
3948
  }
3932
3949
  /* 获取最后一个,因为第一个是包含了at */
3933
- let stackFunctionName = stackFunctionNameMatch[stackFunctionNameMatch.length - 1];
3934
- let stackFunctionNamePosition = stackFunctionNamePositionMatch[stackFunctionNamePositionMatch.length - 1];
3950
+ const stackFunctionName = stackFunctionNameMatch[stackFunctionNameMatch.length - 1];
3951
+ const stackFunctionNamePosition = stackFunctionNamePositionMatch[stackFunctionNamePositionMatch.length - 1];
3935
3952
  if (stackFunctionName === "" ||
3936
3953
  stackFunctionName.match(/^(Utils\.|)Log(\.|)|.<anonymous>$|^Function.each|^NodeList.forEach|^k.fn.init.each/g)) {
3937
3954
  continue;
@@ -3943,9 +3960,9 @@ System.register('Utils', [], (function (exports) {
3943
3960
  }
3944
3961
  }
3945
3962
  if (result.position === "") {
3946
- let lastStackString = stack[stack.length - 1].trim();
3963
+ const lastStackString = stack[stack.length - 1].trim();
3947
3964
  if (lastStackString.startsWith("at chrome-extension://")) {
3948
- let lastStackMatch = lastStackString.match(/^at[\s]+(.+)/);
3965
+ const lastStackMatch = lastStackString.match(/^at[\s]+(.+)/);
3949
3966
  if (lastStackMatch) {
3950
3967
  result.position = lastStackMatch[lastStackMatch.length - 1];
3951
3968
  }
@@ -3975,16 +3992,18 @@ System.register('Utils', [], (function (exports) {
3975
3992
  printContent(msg, color, otherStyle) {
3976
3993
  this.checkClearConsole();
3977
3994
  otherStyle = otherStyle || "";
3978
- let stackSplit = new Error().stack.split("\n");
3995
+ const stackSplit = new Error().stack.split("\n");
3979
3996
  stackSplit.splice(0, 2);
3980
- let { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
3981
- let tagName = this.tag;
3982
- let that = this;
3997
+ const { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
3998
+ const tagName = this.tag;
3999
+ const that = this;
3983
4000
  /** tag的html输出格式 */
3984
- let tagNameHTML = `%c[${tagName}%c`;
4001
+ const tagNameHTML = `%c[${tagName}%c`;
3985
4002
  /** 调用的函数名的html输出格式 */
3986
4003
  let callerNameHTML = `%c${callerName}%c]%c`;
3987
- callerName.trim() !== "" && (callerNameHTML = "-" + callerNameHTML);
4004
+ if (callerName.trim() === "") {
4005
+ callerNameHTML = `-${callerNameHTML}`;
4006
+ }
3988
4007
  /**
3989
4008
  * 输出消息到控制台
3990
4009
  * @param message
@@ -4070,14 +4089,14 @@ System.register('Utils', [], (function (exports) {
4070
4089
  if (this.#disable)
4071
4090
  return;
4072
4091
  this.checkClearConsole();
4073
- let stack = new Error().stack.split("\n");
4092
+ const stack = new Error().stack.split("\n");
4074
4093
  stack.splice(0, 1);
4075
- let errorStackParse = this.parseErrorStack(stack);
4094
+ const errorStackParse = this.parseErrorStack(stack);
4076
4095
  /** 堆栈函数名 */
4077
- let stackFunctionName = errorStackParse.name;
4096
+ const stackFunctionName = errorStackParse.name;
4078
4097
  /** 堆栈位置 */
4079
- let stackFunctionNamePosition = errorStackParse.position;
4080
- let callerName = stackFunctionName;
4098
+ const stackFunctionNamePosition = errorStackParse.position;
4099
+ const callerName = stackFunctionName;
4081
4100
  this.#console.log(`%c[${this.tag}%c-%c${callerName}%c]%c`, ...this.#msgColorDetails, `color: ${this.#details.infoColor};`);
4082
4101
  this.#console.table(msg);
4083
4102
  if (this.#details.debug) {
@@ -4140,9 +4159,9 @@ System.register('Utils', [], (function (exports) {
4140
4159
  */
4141
4160
  circleRadius: 50,
4142
4161
  };
4143
- #ctx = null;
4144
- #width = null;
4145
- #height = null;
4162
+ #ctx;
4163
+ #width;
4164
+ #height;
4146
4165
  /**
4147
4166
  *
4148
4167
  * @param paramConfig 配置信息
@@ -4152,14 +4171,8 @@ System.register('Utils', [], (function (exports) {
4152
4171
  if (!(this.#config.canvasNode instanceof HTMLCanvasElement)) {
4153
4172
  throw new Error("Utils.Progress 参数 canvasNode 必须是 HTMLCanvasElement");
4154
4173
  }
4155
- this.init();
4156
- }
4157
- /**
4158
- * 初始化
4159
- */
4160
- init() {
4161
4174
  /* 获取画笔 */
4162
- let ctx = this.#config.canvasNode.getContext("2d");
4175
+ const ctx = this.#config.canvasNode.getContext("2d");
4163
4176
  if (ctx == null) {
4164
4177
  throw new Error("Utils.Progress 获取画笔失败");
4165
4178
  }
@@ -4170,8 +4183,8 @@ System.register('Utils', [], (function (exports) {
4170
4183
  this.#height = this.#config.canvasNode.height;
4171
4184
  /* 清除锯齿 */
4172
4185
  if (window.devicePixelRatio) {
4173
- this.#config.canvasNode.style.width = this.#width + "px";
4174
- this.#config.canvasNode.style.height = this.#height + "px";
4186
+ this.#config.canvasNode.style.width = `${this.#width}px`;
4187
+ this.#config.canvasNode.style.height = `${this.#height}px`;
4175
4188
  this.#config.canvasNode.height = this.#height * window.devicePixelRatio;
4176
4189
  this.#config.canvasNode.width = this.#width * window.devicePixelRatio;
4177
4190
  this.#ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
@@ -4183,7 +4196,7 @@ System.register('Utils', [], (function (exports) {
4183
4196
  * 绘制
4184
4197
  */
4185
4198
  draw() {
4186
- let degActive = (this.#config.progress * 360) / 100;
4199
+ const degActive = (this.#config.progress * 360) / 100;
4187
4200
  /* 清除画布 */
4188
4201
  this.#ctx.clearRect(0, 0, this.#width, this.#height);
4189
4202
  /* 开始绘制底圆 */
@@ -4197,11 +4210,11 @@ System.register('Utils', [], (function (exports) {
4197
4210
  this.#ctx.strokeStyle = this.#config.lineColor;
4198
4211
  this.#ctx.stroke();
4199
4212
  /* 获取百分比 */
4200
- let txt = parseInt(this.#config.progress.toString()) + "%";
4201
- this.#ctx.font = this.#config.fontSize + "px SimHei";
4213
+ const txt = `${parseInt(this.#config.progress.toString())}%`;
4214
+ this.#ctx.font = `${this.#config.fontSize}px SimHei`;
4202
4215
  /* 获取文本宽度 */
4203
- let w = this.#ctx.measureText(txt).width;
4204
- let h = this.#config.fontSize / 2;
4216
+ const w = this.#ctx.measureText(txt).width;
4217
+ const h = this.#config.fontSize / 2;
4205
4218
  this.#ctx.fillStyle = this.#config.textColor;
4206
4219
  this.#ctx.fillText(txt, this.#width / 2 - w / 2, this.#height / 2 + h / 2);
4207
4220
  }
@@ -4225,9 +4238,9 @@ System.register('Utils', [], (function (exports) {
4225
4238
  * 迭代器
4226
4239
  */
4227
4240
  get entries() {
4228
- let that = this;
4241
+ const that = this;
4229
4242
  return function* () {
4230
- let itemKeys = Object.keys(that.getItems());
4243
+ const itemKeys = Object.keys(that.getItems());
4231
4244
  for (const keyName of itemKeys) {
4232
4245
  yield [keyName, that.get(keyName)];
4233
4246
  }
@@ -4237,9 +4250,8 @@ System.register('Utils', [], (function (exports) {
4237
4250
  * 是否可遍历
4238
4251
  */
4239
4252
  get [Symbol.iterator]() {
4240
- let that = this;
4241
- return function () {
4242
- return that.entries();
4253
+ return () => {
4254
+ return this.entries();
4243
4255
  };
4244
4256
  }
4245
4257
  /**
@@ -4326,7 +4338,7 @@ System.register('Utils', [], (function (exports) {
4326
4338
  * @param callbackfn 回调函数
4327
4339
  */
4328
4340
  forEach(callbackfn) {
4329
- this.items.forEach((value, key, self) => {
4341
+ this.items.forEach((value, key) => {
4330
4342
  callbackfn(value, key, this);
4331
4343
  });
4332
4344
  }
@@ -4418,6 +4430,7 @@ System.register('Utils', [], (function (exports) {
4418
4430
  }
4419
4431
  }
4420
4432
 
4433
+ // @ts-nocheck
4421
4434
  const VueUtils = {
4422
4435
  /** 标签 */
4423
4436
  ReactiveFlags: {
@@ -4456,10 +4469,10 @@ System.register('Utils', [], (function (exports) {
4456
4469
  deps = [];
4457
4470
  active = true;
4458
4471
  fn;
4459
- // private scheduler;
4472
+ scheduler;
4460
4473
  constructor(fn, scheduler) {
4461
4474
  this.fn = fn;
4462
- // this.scheduler = scheduler;
4475
+ this.scheduler = scheduler;
4463
4476
  }
4464
4477
  run(cb) {
4465
4478
  if (!this.active) {
@@ -4531,7 +4544,7 @@ System.register('Utils', [], (function (exports) {
4531
4544
  if (VueUtils.isReactive(target)) {
4532
4545
  return target;
4533
4546
  }
4534
- let exisProxy = this.reactMap.get(target);
4547
+ const exisProxy = this.reactMap.get(target);
4535
4548
  if (exisProxy) {
4536
4549
  return exisProxy;
4537
4550
  }
@@ -4544,8 +4557,8 @@ System.register('Utils', [], (function (exports) {
4544
4557
  return Reflect.get(target, key, receiver);
4545
4558
  },
4546
4559
  set(target, key, value, receiver) {
4547
- let oldValue = target[key];
4548
- let result = Reflect.set(target, key, value, receiver);
4560
+ const oldValue = target[key];
4561
+ const result = Reflect.set(target, key, value, receiver);
4549
4562
  if (oldValue !== value) {
4550
4563
  that.trigger(target, "set", key, oldValue, value);
4551
4564
  }
@@ -4595,11 +4608,12 @@ System.register('Utils', [], (function (exports) {
4595
4608
  }
4596
4609
  toRefs(object) {
4597
4610
  const result = VueUtils.isArray(object) ? new Array(object.length) : {};
4598
- for (let key in object) {
4611
+ for (const key in object) {
4599
4612
  result[key] = this.toRef(object, key);
4600
4613
  }
4601
4614
  return result;
4602
4615
  }
4616
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4603
4617
  trigger(target, type, key, oldValue, value) {
4604
4618
  const depsMap = this.targetMap.get(target);
4605
4619
  if (!depsMap)
@@ -4607,8 +4621,9 @@ System.register('Utils', [], (function (exports) {
4607
4621
  const effects = depsMap.get(key);
4608
4622
  this.triggerEffect(effects, "effects");
4609
4623
  }
4624
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4610
4625
  triggerEffect(effects, name) {
4611
- effects &&
4626
+ if (effects) {
4612
4627
  effects.forEach((effect) => {
4613
4628
  if (effect.scheduler) {
4614
4629
  effect.scheduler();
@@ -4617,6 +4632,7 @@ System.register('Utils', [], (function (exports) {
4617
4632
  effect.run();
4618
4633
  }
4619
4634
  });
4635
+ }
4620
4636
  }
4621
4637
  track(target, type, key) {
4622
4638
  if (!this.activeEffect)
@@ -4633,7 +4649,7 @@ System.register('Utils', [], (function (exports) {
4633
4649
  }
4634
4650
  trackEffect(dep) {
4635
4651
  if (this.activeEffect) {
4636
- let shouldTrack = !dep.has(this.activeEffect);
4652
+ const shouldTrack = !dep.has(this.activeEffect);
4637
4653
  if (shouldTrack) {
4638
4654
  dep.add(this.activeEffect);
4639
4655
  this.activeEffect.deps.push(dep);
@@ -4647,7 +4663,7 @@ System.register('Utils', [], (function (exports) {
4647
4663
  return value;
4648
4664
  }
4649
4665
  set.add(value);
4650
- for (let key in value) {
4666
+ for (const key in value) {
4651
4667
  this.traversal(value[key], set);
4652
4668
  }
4653
4669
  return value;
@@ -4899,6 +4915,7 @@ System.register('Utils', [], (function (exports) {
4899
4915
  const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
4900
4916
  const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
4901
4917
 
4918
+ /* eslint-disable */
4902
4919
  // ==UserScript==
4903
4920
  // @name ModuleRaid.js
4904
4921
  // @namespace http://tampermonkey.net/
@@ -5316,28 +5333,26 @@ System.register('Utils', [], (function (exports) {
5316
5333
  return $ele?.innerHTML?.trim() === "";
5317
5334
  });
5318
5335
  }
5319
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5320
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5336
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5321
5337
  // contains 语法
5322
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5323
- let text = textMatch[2];
5338
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5339
+ const text = textMatch[2];
5324
5340
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5325
5341
  return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
5326
5342
  return ($ele?.textContent || $ele?.innerText)?.includes(text);
5327
5343
  });
5328
5344
  }
5329
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5330
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5345
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5331
5346
  // regexp 语法
5332
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5347
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5333
5348
  let pattern = textMatch[2];
5334
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5349
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5335
5350
  let flags = "";
5336
5351
  if (flagMatch) {
5337
5352
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5338
5353
  flags = flagMatch[3];
5339
5354
  }
5340
- let regexp = new RegExp(pattern, flags);
5355
+ const regexp = new RegExp(pattern, flags);
5341
5356
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5342
5357
  return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
5343
5358
  return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));
@@ -5379,11 +5394,10 @@ System.register('Utils', [], (function (exports) {
5379
5394
  selector = selector.replace(/:empty$/gi, "");
5380
5395
  return $el.matches(selector) && $el?.innerHTML?.trim() === "";
5381
5396
  }
5382
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5383
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5397
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5384
5398
  // contains 语法
5385
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5386
- let text = textMatch[2];
5399
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5400
+ const text = textMatch[2];
5387
5401
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5388
5402
  let content = $el?.textContent || $el?.innerText;
5389
5403
  if (typeof content !== "string") {
@@ -5391,18 +5405,17 @@ System.register('Utils', [], (function (exports) {
5391
5405
  }
5392
5406
  return $el.matches(selector) && content?.includes(text);
5393
5407
  }
5394
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5395
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5408
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5396
5409
  // regexp 语法
5397
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5410
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5398
5411
  let pattern = textMatch[2];
5399
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5412
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5400
5413
  let flags = "";
5401
5414
  if (flagMatch) {
5402
5415
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5403
5416
  flags = flagMatch[3];
5404
5417
  }
5405
- let regexp = new RegExp(pattern, flags);
5418
+ const regexp = new RegExp(pattern, flags);
5406
5419
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5407
5420
  let content = $el?.textContent || $el?.innerText;
5408
5421
  if (typeof content !== "string") {
@@ -5420,43 +5433,41 @@ System.register('Utils', [], (function (exports) {
5420
5433
  if (selector.match(/[^\s]{1}:empty$/gi)) {
5421
5434
  // empty 语法
5422
5435
  selector = selector.replace(/:empty$/gi, "");
5423
- let $closest = $el?.closest(selector);
5436
+ const $closest = $el?.closest(selector);
5424
5437
  if ($closest && $closest?.innerHTML?.trim() === "") {
5425
5438
  return $closest;
5426
5439
  }
5427
5440
  return null;
5428
5441
  }
5429
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5430
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5442
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5431
5443
  // contains 语法
5432
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5433
- let text = textMatch[2];
5444
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5445
+ const text = textMatch[2];
5434
5446
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5435
- let $closest = $el?.closest(selector);
5447
+ const $closest = $el?.closest(selector);
5436
5448
  if ($closest) {
5437
- let content = $el?.textContent || $el?.innerText;
5449
+ const content = $el?.textContent || $el?.innerText;
5438
5450
  if (typeof content === "string" && content.includes(text)) {
5439
5451
  return $closest;
5440
5452
  }
5441
5453
  }
5442
5454
  return null;
5443
5455
  }
5444
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5445
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5456
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5446
5457
  // regexp 语法
5447
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5458
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5448
5459
  let pattern = textMatch[2];
5449
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5460
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5450
5461
  let flags = "";
5451
5462
  if (flagMatch) {
5452
5463
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5453
5464
  flags = flagMatch[3];
5454
5465
  }
5455
- let regexp = new RegExp(pattern, flags);
5466
+ const regexp = new RegExp(pattern, flags);
5456
5467
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5457
- let $closest = $el?.closest(selector);
5468
+ const $closest = $el?.closest(selector);
5458
5469
  if ($closest) {
5459
- let content = $el?.textContent || $el?.innerText;
5470
+ const content = $el?.textContent || $el?.innerText;
5460
5471
  if (typeof content === "string" && content.match(regexp)) {
5461
5472
  return $closest;
5462
5473
  }
@@ -5465,12 +5476,12 @@ System.register('Utils', [], (function (exports) {
5465
5476
  }
5466
5477
  else {
5467
5478
  // 普通语法
5468
- let $closest = $el?.closest(selector);
5479
+ const $closest = $el?.closest(selector);
5469
5480
  return $closest;
5470
5481
  }
5471
5482
  }
5472
5483
  }
5473
- let domUtils = new DOMUtils();
5484
+ const domUtils = new DOMUtils();
5474
5485
 
5475
5486
  class Utils {
5476
5487
  windowApi;
@@ -5483,7 +5494,7 @@ System.register('Utils', [], (function (exports) {
5483
5494
  if (typeof cssText !== "string") {
5484
5495
  throw new Error("Utils.addStyle 参数cssText 必须为String类型");
5485
5496
  }
5486
- let cssNode = this.windowApi.document.createElement("style");
5497
+ const cssNode = this.windowApi.document.createElement("style");
5487
5498
  cssNode.setAttribute("type", "text/css");
5488
5499
  cssNode.innerHTML = cssText;
5489
5500
  if (this.windowApi.document.head) {
@@ -5505,23 +5516,23 @@ System.register('Utils', [], (function (exports) {
5505
5516
  return cssNode;
5506
5517
  }
5507
5518
  /**
5508
- * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
5509
- * @param target 目标数据
5510
- * @param source 源数据
5511
- * @param isAdd 是否可以追加键,默认false
5512
- * @example
5513
- * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
5514
- * >
5515
- * {
5516
- "1": 1,
5517
- "2": {
5518
- "3": 4
5519
- }
5520
- }
5521
- */
5519
+ * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
5520
+ * @param target 目标数据
5521
+ * @param source 源数据
5522
+ * @param isAdd 是否可以追加键,默认false
5523
+ * @example
5524
+ * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
5525
+ * >
5526
+ * {
5527
+ "1": 1,
5528
+ "2": {
5529
+ "3": 4
5530
+ }
5531
+ }
5532
+ */
5522
5533
  assign = commonUtil.assign.bind(commonUtil);
5523
5534
  async asyncReplaceAll(string, pattern, asyncFn) {
5524
- let UtilsContext = this;
5535
+ const UtilsContext = this;
5525
5536
  if (typeof string !== "string") {
5526
5537
  throw new TypeError("string必须是字符串");
5527
5538
  }
@@ -5593,18 +5604,18 @@ System.register('Utils', [], (function (exports) {
5593
5604
  canvasElement.dispatchEvent(new MouseEvent("mouseup", eventInit));
5594
5605
  }
5595
5606
  checkUserClickInNode(element) {
5596
- let UtilsContext = this;
5607
+ const UtilsContext = this;
5597
5608
  if (!UtilsContext.isDOM(element)) {
5598
5609
  throw new Error("Utils.checkUserClickInNode 参数 targetNode 必须为 Element|Node 类型");
5599
5610
  }
5600
- let clickEvent = UtilsContext.windowApi.window.event;
5601
- let touchEvent = UtilsContext.windowApi.window.event;
5602
- let $click = clickEvent?.composedPath()?.[0];
5611
+ const clickEvent = UtilsContext.windowApi.window.event;
5612
+ const touchEvent = UtilsContext.windowApi.window.event;
5613
+ const $click = clickEvent?.composedPath()?.[0];
5603
5614
  // 点击的x坐标
5604
- let clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
5615
+ const clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
5605
5616
  // 点击的y坐标
5606
- let clickPosY = clickEvent?.clientY != null ? clickEvent.clientY : touchEvent.touches[0].clientY;
5607
- let {
5617
+ const clickPosY = clickEvent?.clientY != null ? clickEvent.clientY : touchEvent.touches[0].clientY;
5618
+ const {
5608
5619
  /* 要检测的元素的相对屏幕的横坐标最左边 */
5609
5620
  left: elementPosXLeft,
5610
5621
  /* 要检测的元素的相对屏幕的横坐标最右边 */
@@ -5632,32 +5643,32 @@ System.register('Utils', [], (function (exports) {
5632
5643
  * @param formData 需要clone的数据
5633
5644
  */
5634
5645
  cloneFormData(formData, filterFn) {
5635
- let clonedFormData = new FormData();
5636
- for (let [key, value] of formData.entries()) {
5637
- let isFilter = typeof filterFn === "function" ? filterFn(key, value) : false;
5646
+ const clonedFormData = new FormData();
5647
+ formData.forEach((value, key) => {
5648
+ const isFilter = typeof filterFn === "function" ? filterFn(key, value) : false;
5638
5649
  if (typeof isFilter === "boolean" && isFilter) {
5639
- continue;
5650
+ return;
5640
5651
  }
5641
5652
  clonedFormData.append(key, value);
5642
- }
5653
+ });
5643
5654
  return clonedFormData;
5644
5655
  }
5645
5656
  createOverload() {
5646
- let fnMap = new Map();
5657
+ const fnMap = new Map();
5647
5658
  function overload(...args) {
5648
- let key = args.map((it) => typeof it).join(",");
5649
- let fn = fnMap.get(key);
5659
+ const key = args.map((it) => typeof it).join(",");
5660
+ const fn = fnMap.get(key);
5650
5661
  if (!fn) {
5651
5662
  throw new TypeError("没有找到对应的实现");
5652
5663
  }
5653
5664
  return fn.apply(this, args);
5654
5665
  }
5655
5666
  overload.addImpl = function (...args) {
5656
- let fn = args.pop();
5667
+ const fn = args.pop();
5657
5668
  if (typeof fn !== "function") {
5658
5669
  throw new TypeError("最后一个参数必须是函数");
5659
5670
  }
5660
- let key = args.join(",");
5671
+ const key = args.join(",");
5661
5672
  fnMap.set(key, fn);
5662
5673
  };
5663
5674
  return overload;
@@ -5674,7 +5685,7 @@ System.register('Utils', [], (function (exports) {
5674
5685
  deepClone = commonUtil.deepClone.bind(commonUtil);
5675
5686
  debounce(fn, delay = 0) {
5676
5687
  let timer = null;
5677
- let UtilsContext = this;
5688
+ const UtilsContext = this;
5678
5689
  return function (...args) {
5679
5690
  UtilsContext.workerClearTimeout(timer);
5680
5691
  timer = UtilsContext.workerSetTimeout(function () {
@@ -5683,7 +5694,7 @@ System.register('Utils', [], (function (exports) {
5683
5694
  };
5684
5695
  }
5685
5696
  deleteParentNode(element, targetSelector) {
5686
- let UtilsContext = this;
5697
+ const UtilsContext = this;
5687
5698
  if (element == null) {
5688
5699
  return;
5689
5700
  }
@@ -5694,7 +5705,7 @@ System.register('Utils', [], (function (exports) {
5694
5705
  throw new Error("Utils.deleteParentNode 参数 targetSelector 必须为 string 类型");
5695
5706
  }
5696
5707
  let result = false;
5697
- let needRemoveDOM = domUtils.closest(element, targetSelector);
5708
+ const needRemoveDOM = domUtils.closest(element, targetSelector);
5698
5709
  if (needRemoveDOM) {
5699
5710
  needRemoveDOM.remove();
5700
5711
  result = true;
@@ -5724,7 +5735,7 @@ System.register('Utils', [], (function (exports) {
5724
5735
  eventNameList = [...eventName];
5725
5736
  }
5726
5737
  eventNameList.forEach((_eventName_) => {
5727
- let event = new Event(_eventName_);
5738
+ const event = new Event(_eventName_);
5728
5739
  if (details) {
5729
5740
  Object.assign(event, details);
5730
5741
  }
@@ -5732,7 +5743,7 @@ System.register('Utils', [], (function (exports) {
5732
5743
  });
5733
5744
  }
5734
5745
  downloadBase64(base64Data, fileName, isIFrame = false) {
5735
- let UtilsContext = this;
5746
+ const UtilsContext = this;
5736
5747
  if (typeof base64Data !== "string") {
5737
5748
  throw new Error("Utils.downloadBase64 参数 base64Data 必须为 string 类型");
5738
5749
  }
@@ -5764,7 +5775,7 @@ System.register('Utils', [], (function (exports) {
5764
5775
  let strFound;
5765
5776
  if (this.windowApi.globalThis.find) {
5766
5777
  /* CODE FOR BROWSERS THAT SUPPORT window.find */
5767
- let windowFind = this.windowApi.self.find;
5778
+ const windowFind = this.windowApi.self.find;
5768
5779
  strFound = windowFind(str, caseSensitive, true, true, false);
5769
5780
  if (strFound && this.windowApi.self.getSelection && !this.windowApi.self.getSelection().anchorNode) {
5770
5781
  strFound = windowFind(str, caseSensitive, true, true, false);
@@ -5798,19 +5809,19 @@ System.register('Utils', [], (function (exports) {
5798
5809
  return strFound ? true : false;
5799
5810
  }
5800
5811
  *findElementsWithText(element, text, filter) {
5801
- let that = this;
5812
+ const that = this;
5802
5813
  if (element.outerHTML.includes(text)) {
5803
5814
  if (element.children.length === 0) {
5804
- let filterResult = typeof filter === "function" ? filter(element) : false;
5815
+ const filterResult = typeof filter === "function" ? filter(element) : false;
5805
5816
  if (!filterResult) {
5806
5817
  yield element;
5807
5818
  }
5808
5819
  }
5809
5820
  else {
5810
- let textElement = Array.from(element.childNodes).filter((ele) => ele.nodeType === Node.TEXT_NODE);
5811
- for (let $child of textElement) {
5821
+ const textElement = Array.from(element.childNodes).filter((ele) => ele.nodeType === Node.TEXT_NODE);
5822
+ for (const $child of textElement) {
5812
5823
  if ($child.textContent.includes(text)) {
5813
- let filterResult = typeof filter === "function" ? filter(element) : false;
5824
+ const filterResult = typeof filter === "function" ? filter(element) : false;
5814
5825
  if (!filterResult) {
5815
5826
  yield $child;
5816
5827
  }
@@ -5819,7 +5830,7 @@ System.register('Utils', [], (function (exports) {
5819
5830
  }
5820
5831
  }
5821
5832
  for (let index = 0; index < element.children.length; index++) {
5822
- let $child = element.children[index];
5833
+ const $child = element.children[index];
5823
5834
  yield* that.findElementsWithText($child, text, filter);
5824
5835
  }
5825
5836
  }
@@ -5833,8 +5844,8 @@ System.register('Utils', [], (function (exports) {
5833
5844
  findVisibleElement(element) {
5834
5845
  let currentElement = element;
5835
5846
  while (currentElement) {
5836
- let elementRect = currentElement.getBoundingClientRect();
5837
- if (Boolean(elementRect.length)) {
5847
+ const elementRect = currentElement.getBoundingClientRect();
5848
+ if (elementRect.length) {
5838
5849
  return currentElement;
5839
5850
  }
5840
5851
  currentElement = currentElement.parentElement;
@@ -5848,7 +5859,7 @@ System.register('Utils', [], (function (exports) {
5848
5859
  }
5849
5860
  let result = 0;
5850
5861
  let resultType = "KB";
5851
- let sizeData = {};
5862
+ const sizeData = {};
5852
5863
  sizeData.B = 1;
5853
5864
  sizeData.KB = 1024;
5854
5865
  sizeData.MB = sizeData.KB * sizeData.KB;
@@ -5861,7 +5872,7 @@ System.register('Utils', [], (function (exports) {
5861
5872
  sizeData.BB = sizeData.YB * sizeData.KB;
5862
5873
  sizeData.NB = sizeData.BB * sizeData.KB;
5863
5874
  sizeData.DB = sizeData.NB * sizeData.KB;
5864
- for (let key in sizeData) {
5875
+ for (const key in sizeData) {
5865
5876
  result = byteSize / sizeData[key];
5866
5877
  resultType = key;
5867
5878
  if (sizeData.KB >= result) {
@@ -5874,7 +5885,7 @@ System.register('Utils', [], (function (exports) {
5874
5885
  }
5875
5886
  getNodeListValue(...args) {
5876
5887
  let resultArray = [];
5877
- for (let arg of args) {
5888
+ for (const arg of args) {
5878
5889
  let value = arg;
5879
5890
  if (typeof arg === "function") {
5880
5891
  /* 方法 */
@@ -5889,7 +5900,7 @@ System.register('Utils', [], (function (exports) {
5889
5900
  }
5890
5901
  getNonNullValue(...args) {
5891
5902
  let resultValue = args[args.length - 1];
5892
- let UtilsContext = this;
5903
+ const UtilsContext = this;
5893
5904
  for (const argValue of args) {
5894
5905
  if (UtilsContext.isNotNull(argValue)) {
5895
5906
  resultValue = argValue;
@@ -5899,7 +5910,7 @@ System.register('Utils', [], (function (exports) {
5899
5910
  return resultValue;
5900
5911
  }
5901
5912
  formatTime(text = new Date(), formatType = "yyyy-MM-dd HH:mm:ss") {
5902
- let time = text == null ? new Date() : new Date(text);
5913
+ const time = text == null ? new Date() : new Date(text);
5903
5914
  /**
5904
5915
  * 校验时间补0
5905
5916
  * @param timeNum
@@ -5907,7 +5918,7 @@ System.register('Utils', [], (function (exports) {
5907
5918
  */
5908
5919
  function checkTime(timeNum) {
5909
5920
  if (timeNum < 10)
5910
- return "0" + timeNum;
5921
+ return `0${timeNum}`;
5911
5922
  return timeNum;
5912
5923
  }
5913
5924
  /**
@@ -5918,7 +5929,7 @@ System.register('Utils', [], (function (exports) {
5918
5929
  function timeSystemChange(hourNum) {
5919
5930
  return hourNum > 12 ? hourNum - 12 : hourNum;
5920
5931
  }
5921
- let timeRegexp = {
5932
+ const timeRegexp = {
5922
5933
  yyyy: time.getFullYear(),
5923
5934
  /* 年 */
5924
5935
  MM: checkTime(time.getMonth() + 1),
@@ -5935,7 +5946,7 @@ System.register('Utils', [], (function (exports) {
5935
5946
  /* 秒 */
5936
5947
  };
5937
5948
  Object.keys(timeRegexp).forEach(function (key) {
5938
- let replaecRegexp = new RegExp(key, "g");
5949
+ const replaecRegexp = new RegExp(key, "g");
5939
5950
  formatType = formatType.replace(replaecRegexp, timeRegexp[key]);
5940
5951
  });
5941
5952
  return formatType;
@@ -5947,12 +5958,12 @@ System.register('Utils', [], (function (exports) {
5947
5958
  }
5948
5959
  if (text.length === 8) {
5949
5960
  /* 该字符串只有时分秒 */
5950
- let today = new Date();
5951
- text = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate() + " " + text;
5961
+ const today = new Date();
5962
+ text = `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()} ${text}`;
5952
5963
  }
5953
5964
  text = text.substring(0, 19);
5954
5965
  text = text.replace(/-/g, "/");
5955
- let timestamp = new Date(text).getTime();
5966
+ const timestamp = new Date(text).getTime();
5956
5967
  return timestamp;
5957
5968
  }
5958
5969
  /**
@@ -6002,16 +6013,16 @@ System.register('Utils', [], (function (exports) {
6002
6013
  if (timestamp2.toString().length === 10) {
6003
6014
  timestamp2 = timestamp2 * 1000;
6004
6015
  }
6005
- let smallTimeStamp = timestamp1 > timestamp2 ? timestamp2 : timestamp1;
6006
- let bigTimeStamp = timestamp1 > timestamp2 ? timestamp1 : timestamp2;
6007
- let oneSecond = 1000; /* 一秒的毫秒数 */
6008
- let oneMinute = 60 * oneSecond; /* 一分钟的毫秒数 */
6009
- let oneHour = 60 * oneMinute; /* 一小时的毫秒数 */
6010
- let oneDay = 24 * oneHour; /* 一天的毫秒数 */
6011
- let oneMonth = 30 * oneDay; /* 一个月的毫秒数(30天) */
6012
- let oneYear = 12 * oneMonth; /* 一年的毫秒数 */
6013
- let bigDate = new Date(bigTimeStamp);
6014
- let smallDate = new Date(smallTimeStamp);
6016
+ const smallTimeStamp = timestamp1 > timestamp2 ? timestamp2 : timestamp1;
6017
+ const bigTimeStamp = timestamp1 > timestamp2 ? timestamp1 : timestamp2;
6018
+ const oneSecond = 1000; /* 一秒的毫秒数 */
6019
+ const oneMinute = 60 * oneSecond; /* 一分钟的毫秒数 */
6020
+ const oneHour = 60 * oneMinute; /* 一小时的毫秒数 */
6021
+ const oneDay = 24 * oneHour; /* 一天的毫秒数 */
6022
+ const oneMonth = 30 * oneDay; /* 一个月的毫秒数(30天) */
6023
+ const oneYear = 12 * oneMonth; /* 一年的毫秒数 */
6024
+ const bigDate = new Date(bigTimeStamp);
6025
+ const smallDate = new Date(smallTimeStamp);
6015
6026
  let remainderValue = 1;
6016
6027
  if (type === "年") {
6017
6028
  remainderValue = oneYear;
@@ -6033,30 +6044,30 @@ System.register('Utils', [], (function (exports) {
6033
6044
  }
6034
6045
  let diffValue = Math.round(Math.abs((bigDate - smallDate) / remainderValue));
6035
6046
  if (type === "auto") {
6036
- let timeDifference = bigTimeStamp - smallTimeStamp;
6047
+ const timeDifference = bigTimeStamp - smallTimeStamp;
6037
6048
  diffValue = Math.floor(timeDifference / (24 * 3600 * 1000));
6038
6049
  if (diffValue > 0) {
6039
- diffValue = diffValue + "天";
6050
+ diffValue = `${diffValue}天`;
6040
6051
  }
6041
6052
  else {
6042
6053
  /* 计算出小时数 */
6043
- let leave1 = timeDifference % (24 * 3600 * 1000); /* 计算天数后剩余的毫秒数 */
6044
- let hours = Math.floor(leave1 / (3600 * 1000));
6054
+ const leave1 = timeDifference % (24 * 3600 * 1000); /* 计算天数后剩余的毫秒数 */
6055
+ const hours = Math.floor(leave1 / (3600 * 1000));
6045
6056
  if (hours > 0) {
6046
- diffValue = hours + "小时";
6057
+ diffValue = `${hours}小时`;
6047
6058
  }
6048
6059
  else {
6049
6060
  /* 计算相差分钟数 */
6050
- let leave2 = leave1 % (3600 * 1000); /* 计算小时数后剩余的毫秒数 */
6051
- let minutes = Math.floor(leave2 / (60 * 1000));
6061
+ const leave2 = leave1 % (3600 * 1000); /* 计算小时数后剩余的毫秒数 */
6062
+ const minutes = Math.floor(leave2 / (60 * 1000));
6052
6063
  if (minutes > 0) {
6053
- diffValue = minutes + "分钟";
6064
+ diffValue = `${minutes}分钟`;
6054
6065
  }
6055
6066
  else {
6056
6067
  /* 计算相差秒数 */
6057
- let leave3 = leave2 % (60 * 1000); /* 计算分钟数后剩余的毫秒数 */
6058
- let seconds = Math.round(leave3 / 1000);
6059
- diffValue = seconds + "秒";
6068
+ const leave3 = leave2 % (60 * 1000); /* 计算分钟数后剩余的毫秒数 */
6069
+ const seconds = Math.round(leave3 / 1000);
6070
+ diffValue = `${seconds}秒`;
6060
6071
  }
6061
6072
  }
6062
6073
  }
@@ -6064,14 +6075,14 @@ System.register('Utils', [], (function (exports) {
6064
6075
  return diffValue;
6065
6076
  }
6066
6077
  getElementSelector(element) {
6067
- let UtilsContext = this;
6078
+ const UtilsContext = this;
6068
6079
  if (!element)
6069
6080
  return void 0;
6070
6081
  if (!element.parentElement)
6071
6082
  return void 0;
6072
6083
  /* 如果元素有id属性,则直接返回id选择器 */
6073
6084
  if (element.id)
6074
- return "#" + element.id;
6085
+ return `#${element.id}`;
6075
6086
  /* 递归地获取父元素的选择器 */
6076
6087
  let selector = UtilsContext.getElementSelector(element.parentElement);
6077
6088
  if (!selector) {
@@ -6079,11 +6090,11 @@ System.register('Utils', [], (function (exports) {
6079
6090
  }
6080
6091
  /* 如果有多个相同类型的兄弟元素,则需要添加索引 */
6081
6092
  if (element.parentElement.querySelectorAll(element.tagName).length > 1) {
6082
- let index = Array.prototype.indexOf.call(element.parentElement.children, element) + 1;
6083
- selector += " > " + element.tagName.toLowerCase() + ":nth-child(" + index + ")";
6093
+ const index = Array.prototype.indexOf.call(element.parentElement.children, element) + 1;
6094
+ selector += ` > ${element.tagName.toLowerCase()}:nth-child(${index})`;
6084
6095
  }
6085
6096
  else {
6086
- selector += " > " + element.tagName.toLowerCase();
6097
+ selector += ` > ${element.tagName.toLowerCase()}`;
6087
6098
  }
6088
6099
  return selector;
6089
6100
  }
@@ -6094,15 +6105,15 @@ System.register('Utils', [], (function (exports) {
6094
6105
  * > 2
6095
6106
  */
6096
6107
  getMaxValue(...args) {
6097
- let result = [...args];
6108
+ const result = [...args];
6098
6109
  let newResult = [];
6099
6110
  if (result.length === 0) {
6100
6111
  return void 0;
6101
6112
  }
6102
6113
  if (result.length > 1) {
6103
6114
  if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
6104
- let data = result[0];
6105
- let handleDataFunc = result[1];
6115
+ const data = result[0];
6116
+ const handleDataFunc = result[1];
6106
6117
  Object.keys(data).forEach((keyName) => {
6107
6118
  newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
6108
6119
  });
@@ -6150,7 +6161,7 @@ System.register('Utils', [], (function (exports) {
6150
6161
  */
6151
6162
  function queryMaxZIndex($ele) {
6152
6163
  if (typeof ignoreCallBack === "function") {
6153
- let ignoreResult = ignoreCallBack($ele);
6164
+ const ignoreResult = ignoreCallBack($ele);
6154
6165
  if (typeof ignoreResult === "boolean" && !ignoreResult) {
6155
6166
  return;
6156
6167
  }
@@ -6159,7 +6170,7 @@ System.register('Utils', [], (function (exports) {
6159
6170
  const nodeStyle = UtilsContext.windowApi.window.getComputedStyle($ele);
6160
6171
  /* 不对position为static和display为none的元素进行获取它们的z-index */
6161
6172
  if (isVisibleNode(nodeStyle)) {
6162
- let nodeZIndex = parseInt(nodeStyle.zIndex);
6173
+ const nodeZIndex = parseInt(nodeStyle.zIndex);
6163
6174
  if (!isNaN(nodeZIndex)) {
6164
6175
  if (nodeZIndex > zIndex) {
6165
6176
  // 赋值到全局
@@ -6175,7 +6186,7 @@ System.register('Utils', [], (function (exports) {
6175
6186
  }
6176
6187
  }
6177
6188
  }
6178
- target.querySelectorAll("*").forEach(($ele, index) => {
6189
+ target.querySelectorAll("*").forEach(($ele) => {
6179
6190
  queryMaxZIndex($ele);
6180
6191
  });
6181
6192
  zIndex += deviation;
@@ -6192,15 +6203,15 @@ System.register('Utils', [], (function (exports) {
6192
6203
  return this.getMaxZIndexNodeInfo(deviation, target, ignoreCallBack).zIndex;
6193
6204
  }
6194
6205
  getMinValue(...args) {
6195
- let result = [...args];
6206
+ const result = [...args];
6196
6207
  let newResult = [];
6197
6208
  if (result.length === 0) {
6198
6209
  return void 0;
6199
6210
  }
6200
6211
  if (result.length > 1) {
6201
6212
  if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
6202
- let data = result[0];
6203
- let handleDataFunc = result[1];
6213
+ const data = result[0];
6214
+ const handleDataFunc = result[1];
6204
6215
  Object.keys(data).forEach((keyName) => {
6205
6216
  newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
6206
6217
  });
@@ -6230,8 +6241,8 @@ System.register('Utils', [], (function (exports) {
6230
6241
  * > 'Mozilla/5.0 (Linux; Android 10; MI 13 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.3490.40 Mobile Safari/537.36'
6231
6242
  **/
6232
6243
  getRandomAndroidUA() {
6233
- let UtilsContext = this;
6234
- let mobileNameList = [
6244
+ const UtilsContext = this;
6245
+ const mobileNameList = [
6235
6246
  "LDN-LX3",
6236
6247
  "RNE-L03",
6237
6248
  "ASUS_X00ID Build/NMF26F",
@@ -6248,14 +6259,14 @@ System.register('Utils', [], (function (exports) {
6248
6259
  "MI 13 Build/OPR1.170623.027; wv",
6249
6260
  ];
6250
6261
  /* 安卓版本 */
6251
- let androidVersion = UtilsContext.getRandomValue(12, 14);
6262
+ const androidVersion = UtilsContext.getRandomValue(12, 14);
6252
6263
  /* 手机型号 */
6253
- let randomMobile = UtilsContext.getRandomValue(mobileNameList);
6264
+ const randomMobile = UtilsContext.getRandomValue(mobileNameList);
6254
6265
  /* chrome大版本号 */
6255
- let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6256
- let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6257
- let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6258
- let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6266
+ const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6267
+ const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6268
+ const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6269
+ const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6259
6270
  return `Mozilla/5.0 (Linux; Android ${androidVersion}; ${randomMobile}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Mobile Safari/537.36`;
6260
6271
  }
6261
6272
  /**
@@ -6277,20 +6288,20 @@ System.register('Utils', [], (function (exports) {
6277
6288
  * > 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5068.19 Safari/537.36'
6278
6289
  **/
6279
6290
  getRandomPCUA() {
6280
- let UtilsContext = this;
6291
+ const UtilsContext = this;
6281
6292
  /* chrome大版本号 */
6282
- let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6283
- let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6284
- let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6285
- let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6293
+ const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6294
+ const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6295
+ const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6296
+ const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6286
6297
  return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Safari/537.36`;
6287
6298
  }
6288
6299
  getRandomValue(...args) {
6289
- let result = [...args];
6300
+ const result = [...args];
6290
6301
  if (result.length > 1) {
6291
6302
  if (result.length === 2 && typeof result[0] === "number" && typeof result[1] === "number") {
6292
- let leftNumber = result[0] > result[1] ? result[1] : result[0];
6293
- let rightNumber = result[0] > result[1] ? result[0] : result[1];
6303
+ const leftNumber = result[0] > result[1] ? result[1] : result[0];
6304
+ const rightNumber = result[0] > result[1] ? result[0] : result[1];
6294
6305
  return Math.round(Math.random() * (rightNumber - leftNumber)) + leftNumber;
6295
6306
  }
6296
6307
  else {
@@ -6298,12 +6309,12 @@ System.register('Utils', [], (function (exports) {
6298
6309
  }
6299
6310
  }
6300
6311
  else if (result.length === 1) {
6301
- let paramData = result[0];
6312
+ const paramData = result[0];
6302
6313
  if (Array.isArray(paramData)) {
6303
6314
  return paramData[Math.floor(Math.random() * paramData.length)];
6304
6315
  }
6305
6316
  else if (typeof paramData === "object" && Object.keys(paramData).length > 0) {
6306
- let paramObjDataKey = Object.keys(paramData)[Math.floor(Math.random() * Object.keys(paramData).length)];
6317
+ const paramObjDataKey = Object.keys(paramData)[Math.floor(Math.random() * Object.keys(paramData).length)];
6307
6318
  return paramData[paramObjDataKey];
6308
6319
  }
6309
6320
  else {
@@ -6319,7 +6330,7 @@ System.register('Utils', [], (function (exports) {
6319
6330
  * Utils.getReactObj(document.querySelector("input"))?.reactProps?.onChange({target:{value:"123"}});
6320
6331
  */
6321
6332
  getReactObj(element) {
6322
- let result = {};
6333
+ const result = {};
6323
6334
  if (element == null) {
6324
6335
  return result;
6325
6336
  }
@@ -6345,9 +6356,9 @@ System.register('Utils', [], (function (exports) {
6345
6356
  if (typeof target !== "object") {
6346
6357
  throw new TypeError("target不是一个对象");
6347
6358
  }
6348
- let objectsSymbols = Object.getOwnPropertySymbols(target);
6359
+ const objectsSymbols = Object.getOwnPropertySymbols(target);
6349
6360
  if (typeof keyName === "string") {
6350
- let findSymbol = objectsSymbols.find((key) => {
6361
+ const findSymbol = objectsSymbols.find((key) => {
6351
6362
  return key.toString() === keyName;
6352
6363
  });
6353
6364
  if (findSymbol) {
@@ -6355,7 +6366,7 @@ System.register('Utils', [], (function (exports) {
6355
6366
  }
6356
6367
  }
6357
6368
  else if (typeof keyName === "symbol") {
6358
- let findSymbol = objectsSymbols.find((key) => {
6369
+ const findSymbol = objectsSymbols.find((key) => {
6359
6370
  return key === keyName;
6360
6371
  });
6361
6372
  if (findSymbol) {
@@ -6363,7 +6374,7 @@ System.register('Utils', [], (function (exports) {
6363
6374
  }
6364
6375
  }
6365
6376
  else {
6366
- let result = {};
6377
+ const result = {};
6367
6378
  objectsSymbols.forEach((item) => {
6368
6379
  result[item] = target[item];
6369
6380
  });
@@ -6378,12 +6389,12 @@ System.register('Utils', [], (function (exports) {
6378
6389
  * > 12
6379
6390
  */
6380
6391
  getTextLength(text) {
6381
- let encoder = new TextEncoder();
6382
- let bytes = encoder.encode(text);
6392
+ const encoder = new TextEncoder();
6393
+ const bytes = encoder.encode(text);
6383
6394
  return bytes.length;
6384
6395
  }
6385
6396
  getTextStorageSize(text, addType = true) {
6386
- let UtilsContext = this;
6397
+ const UtilsContext = this;
6387
6398
  return UtilsContext.formatByteToSize(UtilsContext.getTextLength(text), addType);
6388
6399
  }
6389
6400
  getThunderUrl(url) {
@@ -6396,88 +6407,75 @@ System.register('Utils', [], (function (exports) {
6396
6407
  if (url.trim() === "") {
6397
6408
  throw new TypeError("url不能为空字符串或纯空格");
6398
6409
  }
6399
- return `thunder://${this.windowApi.globalThis.btoa("AA" + url + "ZZ")}`;
6410
+ return `thunder://${this.windowApi.globalThis.btoa(`AA${url}ZZ`)}`;
6400
6411
  }
6401
6412
  /**
6402
- * 对于GM_cookie的兼容写法,当无法使用GM_cookie时可以使用这个,但是并不完全兼容,有些写不出来且限制了httponly是无法访问的
6403
- * @example
6404
- let GM_cookie = new Utils.GM_Cookie();
6405
- GM_cookie.list({name:"xxx_cookie_xxx"},function(cookies,error){
6406
- if (!error) {
6407
- console.log(cookies);
6408
- console.log(cookies.value);
6409
- } else {
6410
- console.error(error);
6411
- }
6412
- });
6413
- GM_cookie.set({name:"xxx_cookie_test_xxx",value:"这是Cookie测试值"},function(error){
6414
- if (error) {
6415
- console.error(error);
6416
- } else {
6417
- console.log('Cookie set successfully.');
6418
- }
6419
- })
6420
- GM_cookie.delete({name:"xxx_cookie_test_xxx"},function(error){
6421
- if (error) {
6422
- console.error(error);
6423
- } else {
6424
- console.log('Cookie set successfully.');
6425
- }
6426
- })
6427
- **/
6413
+ * 对于GM_cookie的兼容写法,当无法使用GM_cookie时可以使用这个,但是并不完全兼容,有些写不出来且限制了httponly是无法访问的
6414
+ * @example
6415
+ let GM_cookie = new Utils.GM_Cookie();
6416
+ GM_cookie.list({name:"xxx_cookie_xxx"},function(cookies,error){
6417
+ if (!error) {
6418
+ console.log(cookies);
6419
+ console.log(cookies.value);
6420
+ } else {
6421
+ console.error(error);
6422
+ }
6423
+ });
6424
+ GM_cookie.set({name:"xxx_cookie_test_xxx",value:"这是Cookie测试值"},function(error){
6425
+ if (error) {
6426
+ console.error(error);
6427
+ } else {
6428
+ console.log('Cookie set successfully.');
6429
+ }
6430
+ })
6431
+ GM_cookie.delete({name:"xxx_cookie_test_xxx"},function(error){
6432
+ if (error) {
6433
+ console.error(error);
6434
+ } else {
6435
+ console.log('Cookie set successfully.');
6436
+ }
6437
+ })
6438
+ **/
6428
6439
  GM_Cookie = UtilsGMCookie;
6429
6440
  /**
6430
- * 注册油猴菜单,要求本地存储的键名不能存在其它键名`GM_Menu_Local_Map`会冲突/覆盖
6431
- * @example
6432
- let GM_Menu = new Utils.GM_Menu({
6433
- data: [
6434
- {
6435
- menu_key: "menu_key",
6436
- text: "测试按钮",
6437
- enable: true,
6438
- accessKey: "a",
6439
- autoClose: false,
6440
- showText(text, enable) {
6441
- return "[" + (enable ? "√" : "×") + "]" + text;
6441
+ * 注册油猴菜单,要求本地存储的键名不能存在其它键名`GM_Menu_Local_Map`会冲突/覆盖
6442
+ * @example
6443
+ let GM_Menu = new Utils.GM_Menu({
6444
+ data: [
6445
+ {
6446
+ menu_key: "menu_key",
6447
+ text: "测试按钮",
6448
+ enable: true,
6449
+ accessKey: "a",
6450
+ autoClose: false,
6451
+ showText(text, enable) {
6452
+ return "[" + (enable ? "√" : "×") + "]" + text;
6453
+ },
6454
+ callback(data) {
6455
+ console.log("点击菜单,值修改为", data.enable);
6456
+ },
6442
6457
  },
6443
- callback(data) {
6444
- console.log("点击菜单,值修改为", data.enable);
6445
- },
6446
- },
6447
- ],
6448
- autoReload: false,
6449
- GM_getValue,
6450
- GM_setValue,
6451
- GM_registerMenuCommand,
6452
- GM_unregisterMenuCommand,
6453
- });
6454
-
6455
-
6456
- // 获取某个菜单项的值
6457
- GM_Menu.get("menu_key");
6458
- > true
6459
-
6460
- // 获取某个菜单项的开启/关闭后显示的文本
6461
- GM_Menu.getShowTextValue("menu_key");
6462
- > √测试按钮
6463
-
6464
- // 添加键为menu_key2的菜单项
6465
- GM_Menu.add({
6466
- key:"menu_key2",
6467
- text: "测试按钮2",
6468
- enable: false,
6469
- showText(text,enable){
6470
- return "[" + (enable ? "√" : "×") + "]" + text;
6471
- },
6472
- callback(data){
6473
- console.log("点击菜单,值修改为",data.enable);
6474
- }
6475
- });
6476
- // 使用数组的方式添加多个菜单,如menu_key3、menu_key4
6477
- GM_Menu.add([
6478
- {
6479
- key:"menu_key3",
6480
- text: "测试按钮3",
6458
+ ],
6459
+ autoReload: false,
6460
+ GM_getValue,
6461
+ GM_setValue,
6462
+ GM_registerMenuCommand,
6463
+ GM_unregisterMenuCommand,
6464
+ });
6465
+
6466
+
6467
+ // 获取某个菜单项的值
6468
+ GM_Menu.get("menu_key");
6469
+ > true
6470
+
6471
+ // 获取某个菜单项的开启/关闭后显示的文本
6472
+ GM_Menu.getShowTextValue("menu_key");
6473
+ > √测试按钮
6474
+
6475
+ // 添加键为menu_key2的菜单项
6476
+ GM_Menu.add({
6477
+ key:"menu_key2",
6478
+ text: "测试按钮2",
6481
6479
  enable: false,
6482
6480
  showText(text,enable){
6483
6481
  return "[" + (enable ? "√" : "×") + "]" + text;
@@ -6485,152 +6483,165 @@ System.register('Utils', [], (function (exports) {
6485
6483
  callback(data){
6486
6484
  console.log("点击菜单,值修改为",data.enable);
6487
6485
  }
6488
- },
6489
- {
6490
- key:"menu_key4",
6491
- text: "测试按钮4",
6492
- enable: false,
6493
- showText(text,enable){
6494
- return "[" + (enable ? "√" : "×") + "]" + text;
6486
+ });
6487
+ // 使用数组的方式添加多个菜单,如menu_key3、menu_key4
6488
+ GM_Menu.add([
6489
+ {
6490
+ key:"menu_key3",
6491
+ text: "测试按钮3",
6492
+ enable: false,
6493
+ showText(text,enable){
6494
+ return "[" + (enable ? "√" : "×") + "]" + text;
6495
+ },
6496
+ callback(data){
6497
+ console.log("点击菜单,值修改为",data.enable);
6498
+ }
6495
6499
  },
6496
- callback(data){
6497
- console.log("点击菜单,值修改为",data.enable);
6500
+ {
6501
+ key:"menu_key4",
6502
+ text: "测试按钮4",
6503
+ enable: false,
6504
+ showText(text,enable){
6505
+ return "[" + (enable ? "√" : "×") + "]" + text;
6506
+ },
6507
+ callback(data){
6508
+ console.log("点击菜单,值修改为",data.enable);
6509
+ }
6498
6510
  }
6499
- }
6500
- ]);
6501
-
6502
- // 更新键为menu_key的显示文字和点击回调
6503
- GM_Menu.update({
6504
- menu_key:{
6505
- text: "更新后的测试按钮",
6506
- enable: true,
6507
- showText(text,enable){
6508
- return "[" + (enable ? "√" : "×") + "]" + text;
6509
- },
6510
- callback(data){
6511
- console.log("点击菜单更新后的测试按钮,新值修改为",data.enable);
6511
+ ]);
6512
+
6513
+ // 更新键为menu_key的显示文字和点击回调
6514
+ GM_Menu.update({
6515
+ menu_key:{
6516
+ text: "更新后的测试按钮",
6517
+ enable: true,
6518
+ showText(text,enable){
6519
+ return "[" + (enable ? "√" : "×") + "]" + text;
6520
+ },
6521
+ callback(data){
6522
+ console.log("点击菜单更新后的测试按钮,新值修改为",data.enable);
6523
+ }
6512
6524
  }
6513
- }
6514
- });
6515
-
6516
- // 删除键为menu_key的菜单
6517
- GM_Menu.delete("menu_key");
6518
- **/
6525
+ });
6526
+
6527
+ // 删除键为menu_key的菜单
6528
+ GM_Menu.delete("menu_key");
6529
+ **/
6519
6530
  GM_Menu = GMMenu;
6520
6531
  /**
6521
- * 基于Function prototype,能够勾住和释放任何函数
6522
- *
6523
- * .hook
6524
- * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6525
- * + hookFunc {string} 替换的hook函数
6526
- * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6527
- * + methodName {string} 匿名函数需显式传入目标函数名eg:this.Begin = function(){....};}
6528
- *
6529
- * .unhook
6530
- * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6531
- * + funcName {string} 被Hook的函数名称
6532
- * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6533
- * @example
6534
- let hook = new Utils.Hooks();
6535
- hook.initEnv();
6536
- function myFunction(){
6537
- console.log("我自己需要执行的函数");
6538
- }
6539
- function testFunction(){
6540
- console.log("正常执行的函数");
6541
- }
6542
- testFunction.hook(testFunction,myFunction,window);
6543
- **/
6532
+ * 基于Function prototype,能够勾住和释放任何函数
6533
+ *
6534
+ * .hook
6535
+ * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6536
+ * + hookFunc {string} 替换的hook函数
6537
+ * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6538
+ * + methodName {string} 匿名函数需显式传入目标函数名eg:this.Begin = function(){....};}
6539
+ *
6540
+ * .unhook
6541
+ * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6542
+ * + funcName {string} 被Hook的函数名称
6543
+ * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6544
+ * @example
6545
+ let hook = new Utils.Hooks();
6546
+ hook.initEnv();
6547
+ function myFunction(){
6548
+ console.log("我自己需要执行的函数");
6549
+ }
6550
+ function testFunction(){
6551
+ console.log("正常执行的函数");
6552
+ }
6553
+ testFunction.hook(testFunction,myFunction,window);
6554
+ **/
6544
6555
  Hooks = Hooks;
6545
6556
  /**
6546
- * 为减少代码量和回调,把GM_xmlhttpRequest封装
6547
- * 文档地址: https://www.tampermonkey.net/documentation.php?ext=iikm
6548
- * 其中onloadstart、onprogress、onreadystatechange是回调形式,onabort、ontimeout、onerror可以设置全局回调函数
6549
- * @param _GM_xmlHttpRequest_ 油猴中的GM_xmlhttpRequest
6550
- * @example
6551
- let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6552
- let postResp = await httpx.post({
6553
- url:url,
6554
- data:JSON.stringify({
6555
- test:1
6556
- }),
6557
- timeout: 5000
6558
- });
6559
- console.log(postResp);
6560
- > {
6561
- status: true,
6562
- data: {responseText: "...", response: xxx,...},
6563
- msg: "请求完毕",
6564
- type: "onload",
6565
- }
6566
-
6567
- if(postResp === "onload" && postResp.status){
6568
- // onload
6569
- }else if(postResp === "ontimeout"){
6570
- // ontimeout
6571
- }
6572
- * @example
6573
- // 也可以先配置全局参数
6574
- let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6575
- httpx.config({
6576
- timeout: 5000,
6577
- async: false,
6578
- responseType: "html",
6579
- redirect: "follow",
6580
- })
6581
- // 优先级为 默认details < 全局details < 单独的details
6582
- */
6557
+ * 为减少代码量和回调,把GM_xmlhttpRequest封装
6558
+ * 文档地址: https://www.tampermonkey.net/documentation.php?ext=iikm
6559
+ * 其中onloadstart、onprogress、onreadystatechange是回调形式,onabort、ontimeout、onerror可以设置全局回调函数
6560
+ * @param _GM_xmlHttpRequest_ 油猴中的GM_xmlhttpRequest
6561
+ * @example
6562
+ let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6563
+ let postResp = await httpx.post({
6564
+ url:url,
6565
+ data:JSON.stringify({
6566
+ test:1
6567
+ }),
6568
+ timeout: 5000
6569
+ });
6570
+ console.log(postResp);
6571
+ > {
6572
+ status: true,
6573
+ data: {responseText: "...", response: xxx,...},
6574
+ msg: "请求完毕",
6575
+ type: "onload",
6576
+ }
6577
+
6578
+ if(postResp === "onload" && postResp.status){
6579
+ // onload
6580
+ }else if(postResp === "ontimeout"){
6581
+ // ontimeout
6582
+ }
6583
+ * @example
6584
+ // 也可以先配置全局参数
6585
+ let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6586
+ httpx.config({
6587
+ timeout: 5000,
6588
+ async: false,
6589
+ responseType: "html",
6590
+ redirect: "follow",
6591
+ })
6592
+ // 优先级为 默认details < 全局details < 单独的details
6593
+ */
6583
6594
  Httpx = Httpx;
6584
6595
  /**
6585
- * 浏览器端的indexedDB操作封装
6586
- * @example
6587
- let db = new Utils.indexedDB('web_DB', 'nav_text')
6588
- let data = {name:'管理员', roleId: 1, type: 1};
6589
- db.save('list',data).then((resolve)=>{
6590
- console.log(resolve,'存储成功')
6591
- })
6592
-
6593
- db.get('list').then((resolve)=>{
6594
- console.log(resolve,'查询成功')
6595
- })
6596
-
6597
- db.getPaging('list',20,10).then((resolve)=>{
6598
- console.log(resolve,'查询分页偏移第20,一共10行成功');
6599
- })
6600
-
6601
- db.delete('list').then(resolve=>{
6602
- console.log(resolve,'删除成功---->>>>>>name')
6603
- })
6604
-
6605
- db.deleteAll().then(resolve=>{
6606
- console.log(resolve,'清除数据库---->>>>>>name')
6607
- })
6608
- **/
6596
+ * 浏览器端的indexedDB操作封装
6597
+ * @example
6598
+ let db = new Utils.indexedDB('web_DB', 'nav_text')
6599
+ let data = {name:'管理员', roleId: 1, type: 1};
6600
+ db.save('list',data).then((resolve)=>{
6601
+ console.log(resolve,'存储成功')
6602
+ })
6603
+
6604
+ db.get('list').then((resolve)=>{
6605
+ console.log(resolve,'查询成功')
6606
+ })
6607
+
6608
+ db.getPaging('list',20,10).then((resolve)=>{
6609
+ console.log(resolve,'查询分页偏移第20,一共10行成功');
6610
+ })
6611
+
6612
+ db.delete('list').then(resolve=>{
6613
+ console.log(resolve,'删除成功---->>>>>>name')
6614
+ })
6615
+
6616
+ db.deleteAll().then(resolve=>{
6617
+ console.log(resolve,'清除数据库---->>>>>>name')
6618
+ })
6619
+ **/
6609
6620
  indexedDB = indexedDB;
6610
6621
  isNativeFunc(target) {
6611
6622
  return Boolean(target.toString().match(/^function .*\(\) { \[native code\] }$/));
6612
6623
  }
6613
6624
  isNearBottom(...args) {
6614
6625
  let nearBottomHeight = 50;
6615
- let checkWindow = () => {
6626
+ const checkWindow = () => {
6616
6627
  // 已滚动的距离
6617
- let scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
6628
+ const scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
6618
6629
  // 视窗高度
6619
- let viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6630
+ const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6620
6631
  // 最大滚动距离
6621
- let maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
6632
+ const maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
6622
6633
  return scrollTop + viewportHeight >= maxScrollHeight;
6623
6634
  };
6624
- let checkNode = ($ele) => {
6635
+ const checkNode = ($ele) => {
6625
6636
  // 已滚动的距离
6626
- let scrollTop = $ele.scrollTop;
6637
+ const scrollTop = $ele.scrollTop;
6627
6638
  // 视窗高度
6628
- let viewportHeight = $ele.clientHeight;
6639
+ const viewportHeight = $ele.clientHeight;
6629
6640
  // 最大滚动距离
6630
- let maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
6641
+ const maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
6631
6642
  return scrollTop >= maxScrollHeight;
6632
6643
  };
6633
- let firstArg = args[0];
6644
+ const firstArg = args[0];
6634
6645
  if (args.length === 0 || typeof args[0] === "number") {
6635
6646
  // nearBottomHeight
6636
6647
  //
@@ -6645,7 +6656,7 @@ System.register('Utils', [], (function (exports) {
6645
6656
  return checkNode(args[0]);
6646
6657
  }
6647
6658
  else {
6648
- throw new TypeError("参数1类型错误" + typeof firstArg);
6659
+ throw new TypeError(`参数1类型错误${typeof firstArg}`);
6649
6660
  }
6650
6661
  }
6651
6662
  /**
@@ -6675,7 +6686,7 @@ System.register('Utils', [], (function (exports) {
6675
6686
  }
6676
6687
  if (typeof target === "object") {
6677
6688
  /* 也有种可能,这个jQuery对象是1.8.3版本的,页面中的jQuery是3.4.1版本的 */
6678
- let jQueryProps = [
6689
+ const jQueryProps = [
6679
6690
  "add",
6680
6691
  "addBack",
6681
6692
  "addClass",
@@ -6859,50 +6870,50 @@ System.register('Utils', [], (function (exports) {
6859
6870
  */
6860
6871
  isNotNull = commonUtil.isNotNull.bind(commonUtil);
6861
6872
  /**
6862
- * 判断对象或数据是否为空
6863
- * + `String`判空的值,如 ""、"null"、"undefined"、" "
6864
- * + `Number`判空的值,如 0
6865
- * + `Object`判空的值,如 {}、null、undefined
6866
- * + `Array`(存在属性Symbol.iterator)判空的值,如 []
6867
- * + `Boolean`判空的值,如false
6868
- * + `Function`判空的值,如()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){}
6869
- * @returns
6870
- * + true 为空
6871
- * + false 不为空
6872
- * @example
6873
- Utils.isNull({});
6874
- > true
6875
- * @example
6876
- Utils.isNull([]);
6877
- > true
6878
- * @example
6879
- Utils.isNull(" ");
6880
- > true
6881
- * @example
6882
- Utils.isNull(function(){});
6883
- > true
6884
- * @example
6885
- Utils.isNull(()=>{}));
6886
- > true
6887
- * @example
6888
- Utils.isNull("undefined");
6889
- > true
6890
- * @example
6891
- Utils.isNull("null");
6892
- > true
6893
- * @example
6894
- Utils.isNull(" ", false);
6895
- > true
6896
- * @example
6897
- Utils.isNull([1],[]);
6898
- > false
6899
- * @example
6900
- Utils.isNull([],[1]);
6901
- > false
6902
- * @example
6903
- Utils.isNull(false,[123]);
6904
- > false
6905
- **/
6873
+ * 判断对象或数据是否为空
6874
+ * + `String`判空的值,如 ""、"null"、"undefined"、" "
6875
+ * + `Number`判空的值,如 0
6876
+ * + `Object`判空的值,如 {}、null、undefined
6877
+ * + `Array`(存在属性Symbol.iterator)判空的值,如 []
6878
+ * + `Boolean`判空的值,如false
6879
+ * + `Function`判空的值,如()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){}
6880
+ * @returns
6881
+ * + true 为空
6882
+ * + false 不为空
6883
+ * @example
6884
+ Utils.isNull({});
6885
+ > true
6886
+ * @example
6887
+ Utils.isNull([]);
6888
+ > true
6889
+ * @example
6890
+ Utils.isNull(" ");
6891
+ > true
6892
+ * @example
6893
+ Utils.isNull(function(){});
6894
+ > true
6895
+ * @example
6896
+ Utils.isNull(()=>{}));
6897
+ > true
6898
+ * @example
6899
+ Utils.isNull("undefined");
6900
+ > true
6901
+ * @example
6902
+ Utils.isNull("null");
6903
+ > true
6904
+ * @example
6905
+ Utils.isNull(" ", false);
6906
+ > true
6907
+ * @example
6908
+ Utils.isNull([1],[]);
6909
+ > false
6910
+ * @example
6911
+ Utils.isNull([],[1]);
6912
+ > false
6913
+ * @example
6914
+ Utils.isNull(false,[123]);
6915
+ > false
6916
+ **/
6906
6917
  isNull = commonUtil.isNull.bind(commonUtil);
6907
6918
  isThemeDark() {
6908
6919
  return this.windowApi.globalThis.matchMedia("(prefers-color-scheme: dark)").matches;
@@ -6931,15 +6942,15 @@ System.register('Utils', [], (function (exports) {
6931
6942
  }
6932
6943
  let result = true;
6933
6944
  for (const domItem of needCheckDomList) {
6934
- let domDisplay = this.windowApi.window.getComputedStyle(domItem);
6945
+ const domDisplay = this.windowApi.window.getComputedStyle(domItem);
6935
6946
  if (domDisplay.display === "none") {
6936
6947
  result = false;
6937
6948
  }
6938
6949
  else {
6939
- let domClientRect = domItem.getBoundingClientRect();
6950
+ const domClientRect = domItem.getBoundingClientRect();
6940
6951
  if (inView) {
6941
- let viewportWidth = this.windowApi.window.innerWidth || this.windowApi.document.documentElement.clientWidth;
6942
- let viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6952
+ const viewportWidth = this.windowApi.window.innerWidth || this.windowApi.document.documentElement.clientWidth;
6953
+ const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6943
6954
  result = !(domClientRect.right < 0 ||
6944
6955
  domClientRect.left > viewportWidth ||
6945
6956
  domClientRect.bottom < 0 ||
@@ -6958,11 +6969,11 @@ System.register('Utils', [], (function (exports) {
6958
6969
  }
6959
6970
  isWebView_Via() {
6960
6971
  let result = true;
6961
- let UtilsContext = this;
6972
+ const UtilsContext = this;
6962
6973
  if (typeof this.windowApi.top.window.via === "object") {
6963
6974
  for (const key in Object.values(this.windowApi.top.window.via)) {
6964
6975
  if (Reflect.has(this.windowApi.top.window.via, key)) {
6965
- let objValueFunc = this.windowApi.top.window.via[key];
6976
+ const objValueFunc = this.windowApi.top.window.via[key];
6966
6977
  if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
6967
6978
  result = true;
6968
6979
  }
@@ -6980,11 +6991,11 @@ System.register('Utils', [], (function (exports) {
6980
6991
  }
6981
6992
  isWebView_X() {
6982
6993
  let result = true;
6983
- let UtilsContext = this;
6994
+ const UtilsContext = this;
6984
6995
  if (typeof this.windowApi.top.window.mbrowser === "object") {
6985
6996
  for (const key in Object.values(this.windowApi.top.window.mbrowser)) {
6986
6997
  if (Reflect.has(this.windowApi.top.window.mbrowser, key)) {
6987
- let objValueFunc = this.windowApi.top.window.mbrowser[key];
6998
+ const objValueFunc = this.windowApi.top.window.mbrowser[key];
6988
6999
  if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
6989
7000
  result = true;
6990
7001
  }
@@ -7011,46 +7022,46 @@ System.register('Utils', [], (function (exports) {
7011
7022
  return result;
7012
7023
  }
7013
7024
  /**
7014
- * 自动锁对象,用于循环判断运行的函数,在循环外new后使用,注意,如果函数内部存在异步操作,需要使用await
7015
- * @example
7016
- let lock = new Utils.LockFunction(()=>{console.log(1)}))
7017
- lock.run();
7018
- > 1
7019
- * @example
7020
- let lock = new Utils.LockFunction(()=>{console.log(1)}),true) -- 异步操作
7021
- await lock.run();
7022
- > 1
7023
- **/
7025
+ * 自动锁对象,用于循环判断运行的函数,在循环外new后使用,注意,如果函数内部存在异步操作,需要使用await
7026
+ * @example
7027
+ let lock = new Utils.LockFunction(()=>{console.log(1)}))
7028
+ lock.run();
7029
+ > 1
7030
+ * @example
7031
+ let lock = new Utils.LockFunction(()=>{console.log(1)}),true) -- 异步操作
7032
+ await lock.run();
7033
+ > 1
7034
+ **/
7024
7035
  LockFunction = LockFunction;
7025
7036
  /**
7026
- * 日志对象
7027
- * @param _GM_info_ 油猴管理器的API GM_info,或者是一个对象,如{"script":{name:"Utils.Log"}}
7028
- * @example
7029
- let log = new Utils.Log(GM_info);
7030
- log.info("普通输出");
7031
- > 普通输出
7032
-
7033
- log.success("成功输出");
7034
- > 成功输出
7035
-
7036
- log.error("错误输出");
7037
- > 错误输出
7038
-
7039
- log.warn("警告输出");
7040
- > 警告输出
7041
-
7042
- log.tag = "自定义tag信息";
7043
- log.info("自定义info的颜色","#e0e0e0");
7044
- > 自定义info的颜色
7045
-
7046
- log.config({
7047
- successColor: "#31dc02",
7048
- errorColor: "#e02d2d",
7049
- infoColor: "black",
7050
- })
7051
- log.success("颜色为#31dc02");
7052
- > 颜色为#31dc02
7053
- */
7037
+ * 日志对象
7038
+ * @param _GM_info_ 油猴管理器的API GM_info,或者是一个对象,如{"script":{name:"Utils.Log"}}
7039
+ * @example
7040
+ let log = new Utils.Log(GM_info);
7041
+ log.info("普通输出");
7042
+ > 普通输出
7043
+
7044
+ log.success("成功输出");
7045
+ > 成功输出
7046
+
7047
+ log.error("错误输出");
7048
+ > 错误输出
7049
+
7050
+ log.warn("警告输出");
7051
+ > 警告输出
7052
+
7053
+ log.tag = "自定义tag信息";
7054
+ log.info("自定义info的颜色","#e0e0e0");
7055
+ > 自定义info的颜色
7056
+
7057
+ log.config({
7058
+ successColor: "#31dc02",
7059
+ errorColor: "#e02d2d",
7060
+ infoColor: "black",
7061
+ })
7062
+ log.success("颜色为#31dc02");
7063
+ > 颜色为#31dc02
7064
+ */
7054
7065
  Log = Log;
7055
7066
  mergeArrayToString(data, handleFunc) {
7056
7067
  if (!(data instanceof Array)) {
@@ -7079,8 +7090,8 @@ System.register('Utils', [], (function (exports) {
7079
7090
  return content;
7080
7091
  }
7081
7092
  mutationObserver(target, observer_config) {
7082
- let UtilsContext = this;
7083
- let default_obverser_config = {
7093
+ const UtilsContext = this;
7094
+ const default_obverser_config = {
7084
7095
  /* 监听到元素有反馈,需执行的函数 */
7085
7096
  callback: () => { },
7086
7097
  config: {
@@ -7122,11 +7133,11 @@ System.register('Utils', [], (function (exports) {
7122
7133
  immediate: false,
7123
7134
  };
7124
7135
  observer_config = UtilsContext.assign(default_obverser_config, observer_config);
7125
- let windowMutationObserver = this.windowApi.window.MutationObserver ||
7136
+ const windowMutationObserver = this.windowApi.window.MutationObserver ||
7126
7137
  this.windowApi.window.webkitMutationObserver ||
7127
7138
  this.windowApi.window.MozMutationObserver;
7128
7139
  // 观察者对象
7129
- let mutationObserver = new windowMutationObserver(function (mutations, observer) {
7140
+ const mutationObserver = new windowMutationObserver(function (mutations, observer) {
7130
7141
  if (typeof observer_config.callback === "function") {
7131
7142
  observer_config.callback(mutations, observer);
7132
7143
  }
@@ -7139,7 +7150,7 @@ System.register('Utils', [], (function (exports) {
7139
7150
  }
7140
7151
  else if (UtilsContext.isJQuery(target)) {
7141
7152
  /* 传入的参数是jQuery对象 */
7142
- target.each((index, item) => {
7153
+ target.each((_, item) => {
7143
7154
  mutationObserver.observe(item, observer_config.config);
7144
7155
  });
7145
7156
  }
@@ -7177,7 +7188,7 @@ System.register('Utils', [], (function (exports) {
7177
7188
  threshold: [0.01, 0.99],
7178
7189
  };
7179
7190
  defaultOptions = this.assign(defaultOptions, options || {});
7180
- let intersectionObserver = new IntersectionObserver((entries, observer) => {
7191
+ const intersectionObserver = new IntersectionObserver((entries, observer) => {
7181
7192
  if (entries[0].isIntersecting) {
7182
7193
  if (typeof callback === "function") {
7183
7194
  callback(entries, observer);
@@ -7207,7 +7218,7 @@ System.register('Utils', [], (function (exports) {
7207
7218
  return utils;
7208
7219
  }
7209
7220
  noConflictFunc(needReleaseObject, needReleaseName, functionNameList = [], release = true) {
7210
- let UtilsContext = this;
7221
+ const UtilsContext = this;
7211
7222
  if (typeof needReleaseObject !== "object") {
7212
7223
  throw new Error("Utils.noConflictFunc 参数 needReleaseObject 必须为 object 类型");
7213
7224
  }
@@ -7217,7 +7228,7 @@ System.register('Utils', [], (function (exports) {
7217
7228
  if (!Array.isArray(functionNameList)) {
7218
7229
  throw new Error("Utils.noConflictFunc 参数 functionNameList 必须为 Array 类型");
7219
7230
  }
7220
- let needReleaseKey = "__" + needReleaseName;
7231
+ const needReleaseKey = `__${needReleaseName}`;
7221
7232
  /**
7222
7233
  * 释放所有
7223
7234
  */
@@ -7305,7 +7316,9 @@ System.register('Utils', [], (function (exports) {
7305
7316
  if (typeof dataUri !== "string") {
7306
7317
  throw new Error("Utils.parseBase64ToBlob 参数 dataUri 必须为 string 类型");
7307
7318
  }
7308
- let dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]), dataUriLength = dataUriBase64Str.length, u8arr = new Uint8Array(dataUriLength);
7319
+ const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
7320
+ let dataUriLength = dataUriBase64Str.length;
7321
+ const u8arr = new Uint8Array(dataUriLength);
7309
7322
  while (dataUriLength--) {
7310
7323
  u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
7311
7324
  }
@@ -7320,7 +7333,9 @@ System.register('Utils', [], (function (exports) {
7320
7333
  if (typeof fileName !== "string") {
7321
7334
  throw new Error("Utils.parseBase64ToFile 参数 fileName 必须为 string 类型");
7322
7335
  }
7323
- let dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]), dataUriLength = dataUriBase64Str.length, u8arr = new Uint8Array(dataUriLength);
7336
+ const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
7337
+ let dataUriLength = dataUriBase64Str.length;
7338
+ const u8arr = new Uint8Array(dataUriLength);
7324
7339
  while (dataUriLength--) {
7325
7340
  u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
7326
7341
  }
@@ -7354,15 +7369,15 @@ System.register('Utils', [], (function (exports) {
7354
7369
  }
7355
7370
  parseCDATA(text = "") {
7356
7371
  let result = "";
7357
- let cdataRegexp = /<\!\[CDATA\[([\s\S]*)\]\]>/;
7358
- let cdataMatch = cdataRegexp.exec(text.trim());
7372
+ const cdataRegexp = /<!\[CDATA\[([\s\S]*)\]\]>/;
7373
+ const cdataMatch = cdataRegexp.exec(text.trim());
7359
7374
  if (cdataMatch && cdataMatch.length > 1) {
7360
7375
  result = cdataMatch[cdataMatch.length - 1];
7361
7376
  }
7362
7377
  return result;
7363
7378
  }
7364
7379
  async parseFileToBase64(fileObj) {
7365
- let reader = new FileReader();
7380
+ const reader = new FileReader();
7366
7381
  reader.readAsDataURL(fileObj);
7367
7382
  return new Promise((resolve) => {
7368
7383
  reader.onload = function (event) {
@@ -7371,14 +7386,14 @@ System.register('Utils', [], (function (exports) {
7371
7386
  });
7372
7387
  }
7373
7388
  parseFromString(text, mimeType = "text/html") {
7374
- let parser = new DOMParser();
7389
+ const parser = new DOMParser();
7375
7390
  return parser.parseFromString(text, mimeType);
7376
7391
  }
7377
7392
  parseStringToRegExpString(text) {
7378
7393
  if (typeof text !== "string") {
7379
7394
  throw new TypeError("string必须是字符串");
7380
7395
  }
7381
- let regString = text.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
7396
+ const regString = text.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
7382
7397
  return regString;
7383
7398
  }
7384
7399
  preventEvent(element, eventNameList = [], capture) {
@@ -7393,6 +7408,7 @@ System.register('Utils', [], (function (exports) {
7393
7408
  }
7394
7409
  if (arguments.length === 1) {
7395
7410
  /* 直接阻止事件 */
7411
+ // eslint-disable-next-line prefer-rest-params
7396
7412
  return stopEvent(arguments[0]);
7397
7413
  }
7398
7414
  else {
@@ -7408,11 +7424,11 @@ System.register('Utils', [], (function (exports) {
7408
7424
  }
7409
7425
  }
7410
7426
  /**
7411
- * 在canvas元素节点上绘制进度圆圈
7412
- * @example
7413
- let progress = new Utils.Process({canvasNode:document.querySelector("canvas")});
7414
- progress.draw();
7415
- * **/
7427
+ * 在canvas元素节点上绘制进度圆圈
7428
+ * @example
7429
+ let progress = new Utils.Process({canvasNode:document.querySelector("canvas")});
7430
+ progress.draw();
7431
+ * **/
7416
7432
  Progress = Progress;
7417
7433
  registerTrustClickEvent(isTrustValue = true, filter) {
7418
7434
  function trustEvent(event) {
@@ -7434,8 +7450,8 @@ System.register('Utils', [], (function (exports) {
7434
7450
  }
7435
7451
  const originalListener = EventTarget.prototype.addEventListener;
7436
7452
  EventTarget.prototype.addEventListener = function (...args) {
7437
- let type = args[0];
7438
- let callback = args[1];
7453
+ const type = args[0];
7454
+ const callback = args[1];
7439
7455
  // let options = args[2];
7440
7456
  if (filter(type)) {
7441
7457
  if (typeof callback === "function") {
@@ -7444,7 +7460,7 @@ System.register('Utils', [], (function (exports) {
7444
7460
  };
7445
7461
  }
7446
7462
  else if (typeof callback === "object" && "handleEvent" in callback) {
7447
- let oldHandleEvent = callback["handleEvent"];
7463
+ const oldHandleEvent = callback["handleEvent"];
7448
7464
  args[1]["handleEvent"] = function (event) {
7449
7465
  if (event == null) {
7450
7466
  return;
@@ -7455,7 +7471,7 @@ System.register('Utils', [], (function (exports) {
7455
7471
  event instanceof Proxy;
7456
7472
  oldHandleEvent.call(this, trustEvent(event));
7457
7473
  }
7458
- catch (error) {
7474
+ catch {
7459
7475
  Reflect.set(event, "isTrusted", isTrustValue);
7460
7476
  }
7461
7477
  };
@@ -7478,7 +7494,7 @@ System.register('Utils', [], (function (exports) {
7478
7494
  return isNegative ? -reversedNum : reversedNum;
7479
7495
  }
7480
7496
  selectElementText(element, childTextNode, startIndex, endIndex) {
7481
- let range = this.windowApi.document.createRange();
7497
+ const range = this.windowApi.document.createRange();
7482
7498
  range.selectNodeContents(element);
7483
7499
  if (childTextNode) {
7484
7500
  if (childTextNode.nodeType !== Node.TEXT_NODE) {
@@ -7489,7 +7505,7 @@ System.register('Utils', [], (function (exports) {
7489
7505
  range.setEnd(childTextNode, endIndex);
7490
7506
  }
7491
7507
  }
7492
- let selection = this.windowApi.globalThis.getSelection();
7508
+ const selection = this.windowApi.globalThis.getSelection();
7493
7509
  if (selection) {
7494
7510
  selection.removeAllRanges();
7495
7511
  selection.addRange(range);
@@ -7517,7 +7533,7 @@ System.register('Utils', [], (function (exports) {
7517
7533
  else {
7518
7534
  textType = "text/plain";
7519
7535
  }
7520
- let UtilsContext = this;
7536
+ const UtilsContext = this;
7521
7537
  class UtilsClipboard {
7522
7538
  #resolve;
7523
7539
  #copyData;
@@ -7529,7 +7545,7 @@ System.register('Utils', [], (function (exports) {
7529
7545
  }
7530
7546
  async init() {
7531
7547
  let copyStatus = false;
7532
- let requestPermissionStatus = await this.requestClipboardPermission();
7548
+ const requestPermissionStatus = await this.requestClipboardPermission();
7533
7549
  console.log(requestPermissionStatus);
7534
7550
  if (this.hasClipboard() && (this.hasClipboardWrite() || this.hasClipboardWriteText())) {
7535
7551
  try {
@@ -7568,7 +7584,7 @@ System.register('Utils', [], (function (exports) {
7568
7584
  */
7569
7585
  copyTextByTextArea() {
7570
7586
  try {
7571
- let copyElement = UtilsContext.windowApi.document.createElement("textarea");
7587
+ const copyElement = UtilsContext.windowApi.document.createElement("textarea");
7572
7588
  copyElement.value = this.#copyData;
7573
7589
  copyElement.setAttribute("type", "text");
7574
7590
  copyElement.setAttribute("style", "opacity:0;position:absolute;");
@@ -7588,20 +7604,17 @@ System.register('Utils', [], (function (exports) {
7588
7604
  * 申请剪贴板权限
7589
7605
  */
7590
7606
  requestClipboardPermission() {
7591
- return new Promise((resolve, reject) => {
7607
+ return new Promise((resolve) => {
7592
7608
  if (navigator.permissions && navigator.permissions.query) {
7593
7609
  navigator.permissions
7594
7610
  .query({
7595
7611
  name: "clipboard-write",
7596
7612
  })
7597
- .then((permissionStatus) => {
7613
+ .then(() => {
7598
7614
  resolve(true);
7599
7615
  })
7600
7616
  .catch((error) => {
7601
- console.error([
7602
- "申请剪贴板权限失败,尝试直接写入👉",
7603
- error.message ?? error.name ?? error.stack,
7604
- ]);
7617
+ console.error(["申请剪贴板权限失败,尝试直接写入👉", error.message ?? error.name ?? error.stack]);
7605
7618
  resolve(false);
7606
7619
  });
7607
7620
  }
@@ -7628,7 +7641,7 @@ System.register('Utils', [], (function (exports) {
7628
7641
  }
7629
7642
  else {
7630
7643
  /* 可复制对象 */
7631
- let textBlob = new Blob([this.#copyData], {
7644
+ const textBlob = new Blob([this.#copyData], {
7632
7645
  type: this.#copyDataType,
7633
7646
  });
7634
7647
  navigator.clipboard
@@ -7660,7 +7673,7 @@ System.register('Utils', [], (function (exports) {
7660
7673
  });
7661
7674
  }
7662
7675
  setTimeout(callback, delayTime = 0) {
7663
- let UtilsContext = this;
7676
+ const UtilsContext = this;
7664
7677
  if (typeof callback !== "function" && typeof callback !== "string") {
7665
7678
  throw new TypeError("Utils.setTimeout 参数 callback 必须为 function|string 类型");
7666
7679
  }
@@ -7674,7 +7687,7 @@ System.register('Utils', [], (function (exports) {
7674
7687
  });
7675
7688
  }
7676
7689
  sleep(delayTime = 0) {
7677
- let UtilsContext = this;
7690
+ const UtilsContext = this;
7678
7691
  if (typeof delayTime !== "number") {
7679
7692
  throw new Error("Utils.sleep 参数 delayTime 必须为 number 类型");
7680
7693
  }
@@ -7685,18 +7698,18 @@ System.register('Utils', [], (function (exports) {
7685
7698
  });
7686
7699
  }
7687
7700
  dragSlider(selector, offsetX = this.windowApi.window.innerWidth) {
7688
- let UtilsContext = this;
7701
+ const UtilsContext = this;
7689
7702
  function initMouseEvent(eventName, offSetX, offSetY) {
7690
- let win = typeof unsafeWindow === "undefined" ? globalThis : unsafeWindow;
7691
- let mouseEvent = UtilsContext.windowApi.document.createEvent("MouseEvents");
7703
+ const win = typeof unsafeWindow === "undefined" ? globalThis : unsafeWindow;
7704
+ const mouseEvent = UtilsContext.windowApi.document.createEvent("MouseEvents");
7692
7705
  mouseEvent.initMouseEvent(eventName, true, true, win, 0, offSetX, offSetY, offSetX, offSetY, false, false, false, false, 0, null);
7693
7706
  return mouseEvent;
7694
7707
  }
7695
- let sliderElement = typeof selector === "string" ? domUtils.selector(selector) : selector;
7708
+ const sliderElement = typeof selector === "string" ? domUtils.selector(selector) : selector;
7696
7709
  if (!(sliderElement instanceof Node) || !(sliderElement instanceof Element)) {
7697
7710
  throw new Error("Utils.dragSlider 参数selector 必须为Node/Element类型");
7698
7711
  }
7699
- let rect = sliderElement.getBoundingClientRect(), x0 = rect.x || rect.left, y0 = rect.y || rect.top, x1 = x0 + offsetX, y1 = y0;
7712
+ const rect = sliderElement.getBoundingClientRect(), x0 = rect.x || rect.left, y0 = rect.y || rect.top, x1 = x0 + offsetX, y1 = y0;
7700
7713
  sliderElement.dispatchEvent(initMouseEvent("mousedown", x0, y0));
7701
7714
  sliderElement.dispatchEvent(initMouseEvent("mousemove", x1, y1));
7702
7715
  sliderElement.dispatchEvent(initMouseEvent("mouseleave", x1, y1));
@@ -7724,34 +7737,34 @@ System.register('Utils', [], (function (exports) {
7724
7737
  console.error(err);
7725
7738
  }
7726
7739
  }
7727
- exitFullScreen(element = this.windowApi.document.documentElement) {
7728
- if (this.windowApi.document.exitFullscreen) {
7729
- return this.windowApi.document.exitFullscreen();
7740
+ exitFullScreen($el = this.windowApi.document.documentElement) {
7741
+ if ($el.exitFullscreen) {
7742
+ return $el.exitFullscreen();
7730
7743
  }
7731
- else if (this.windowApi.document.msExitFullscreen) {
7732
- return this.windowApi.document.msExitFullscreen();
7744
+ else if ($el.msExitFullscreen) {
7745
+ return $el.msExitFullscreen();
7733
7746
  }
7734
- else if (this.windowApi.document.mozCancelFullScreen) {
7735
- return this.windowApi.document.mozCancelFullScreen();
7747
+ else if ($el.mozCancelFullScreen) {
7748
+ return $el.mozCancelFullScreen();
7736
7749
  }
7737
- else if (this.windowApi.document.webkitCancelFullScreen) {
7738
- return this.windowApi.document.webkitCancelFullScreen();
7750
+ else if ($el.webkitCancelFullScreen) {
7751
+ return $el.webkitCancelFullScreen();
7739
7752
  }
7740
7753
  else {
7741
- return new Promise((resolve, reject) => {
7754
+ return new Promise((_, reject) => {
7742
7755
  reject(new TypeError("该浏览器不支持全屏API"));
7743
7756
  });
7744
7757
  }
7745
7758
  }
7746
7759
  sortListByProperty(data, getPropertyValueFunc, sortByDesc = true) {
7747
- let UtilsContext = this;
7760
+ const UtilsContext = this;
7748
7761
  if (typeof getPropertyValueFunc !== "function" && typeof getPropertyValueFunc !== "string") {
7749
7762
  throw new Error("Utils.sortListByProperty 参数 getPropertyValueFunc 必须为 function|string 类型");
7750
7763
  }
7751
7764
  if (typeof sortByDesc !== "boolean") {
7752
7765
  throw new Error("Utils.sortListByProperty 参数 sortByDesc 必须为 boolean 类型");
7753
7766
  }
7754
- let getObjValue = function (obj) {
7767
+ const getObjValue = function (obj) {
7755
7768
  return typeof getPropertyValueFunc === "string" ? obj[getPropertyValueFunc] : getPropertyValueFunc(obj);
7756
7769
  };
7757
7770
  /**
@@ -7760,9 +7773,9 @@ System.register('Utils', [], (function (exports) {
7760
7773
  * @param {any} before_obj
7761
7774
  * @returns
7762
7775
  */
7763
- let sortFunc = function (after_obj, before_obj) {
7764
- let beforeValue = getObjValue(before_obj); /* 前 */
7765
- let afterValue = getObjValue(after_obj); /* 后 */
7776
+ const sortFunc = function (after_obj, before_obj) {
7777
+ const beforeValue = getObjValue(before_obj); /* 前 */
7778
+ const afterValue = getObjValue(after_obj); /* 后 */
7766
7779
  if (sortByDesc) {
7767
7780
  if (afterValue > beforeValue) {
7768
7781
  return -1;
@@ -7791,19 +7804,18 @@ System.register('Utils', [], (function (exports) {
7791
7804
  * @param nodeList 元素列表
7792
7805
  * @param getNodeListFunc 获取元素列表的函数
7793
7806
  */
7794
- let sortNodeFunc = function (nodeList, getNodeListFunc) {
7795
- let nodeListLength = nodeList.length;
7807
+ const sortNodeFunc = function (nodeList, getNodeListFunc) {
7808
+ const nodeListLength = nodeList.length;
7796
7809
  for (let i = 0; i < nodeListLength - 1; i++) {
7797
7810
  for (let j = 0; j < nodeListLength - 1 - i; j++) {
7798
- let beforeNode = nodeList[j];
7799
- let afterNode = nodeList[j + 1];
7800
- let beforeValue = getObjValue(beforeNode); /* 前 */
7801
- let afterValue = getObjValue(afterNode); /* 后 */
7802
- if ((sortByDesc == true && beforeValue < afterValue) ||
7803
- (sortByDesc == false && beforeValue > afterValue)) {
7811
+ const beforeNode = nodeList[j];
7812
+ const afterNode = nodeList[j + 1];
7813
+ const beforeValue = getObjValue(beforeNode); /* 前 */
7814
+ const afterValue = getObjValue(afterNode); /* 后 */
7815
+ if ((sortByDesc == true && beforeValue < afterValue) || (sortByDesc == false && beforeValue > afterValue)) {
7804
7816
  /* 升序/降序 */
7805
7817
  /* 相邻元素两两对比 */
7806
- let temp = beforeNode.nextElementSibling;
7818
+ const temp = beforeNode.nextElementSibling;
7807
7819
  afterNode.after(beforeNode);
7808
7820
  if (temp == null) {
7809
7821
  /* 如果为空,那么是最后一个元素,使用append */
@@ -7861,7 +7873,7 @@ System.register('Utils', [], (function (exports) {
7861
7873
  return newTargetString;
7862
7874
  }
7863
7875
  startsWith(target, searchString, position = 0) {
7864
- let UtilsContext = this;
7876
+ const UtilsContext = this;
7865
7877
  if (position > target.length) {
7866
7878
  /* 超出目标字符串的长度 */
7867
7879
  return false;
@@ -7905,7 +7917,7 @@ System.register('Utils', [], (function (exports) {
7905
7917
  */
7906
7918
  toJSON = commonUtil.toJSON.bind(commonUtil);
7907
7919
  toSearchParamsStr(obj, addPrefix) {
7908
- let UtilsContext = this;
7920
+ const UtilsContext = this;
7909
7921
  let searhParamsStr = "";
7910
7922
  if (Array.isArray(obj)) {
7911
7923
  obj.forEach((item) => {
@@ -7913,7 +7925,7 @@ System.register('Utils', [], (function (exports) {
7913
7925
  searhParamsStr += UtilsContext.toSearchParamsStr(item);
7914
7926
  }
7915
7927
  else {
7916
- searhParamsStr += "&" + UtilsContext.toSearchParamsStr(item);
7928
+ searhParamsStr += `&${UtilsContext.toSearchParamsStr(item)}`;
7917
7929
  }
7918
7930
  });
7919
7931
  }
@@ -7921,7 +7933,7 @@ System.register('Utils', [], (function (exports) {
7921
7933
  searhParamsStr = new URLSearchParams(Object.entries(obj)).toString();
7922
7934
  }
7923
7935
  if (addPrefix && !searhParamsStr.startsWith("?")) {
7924
- searhParamsStr = "?" + searhParamsStr;
7936
+ searhParamsStr = `?${searhParamsStr}`;
7925
7937
  }
7926
7938
  return searhParamsStr;
7927
7939
  }
@@ -7969,7 +7981,7 @@ System.register('Utils', [], (function (exports) {
7969
7981
  }
7970
7982
  }
7971
7983
  waitArrayLoopToEnd(data, handleFunc) {
7972
- let UtilsContext = this;
7984
+ const UtilsContext = this;
7973
7985
  if (typeof handleFunc !== "function" && typeof handleFunc !== "string") {
7974
7986
  throw new Error("Utils.waitArrayLoopToEnd 参数 handleDataFunction 必须为 function|string 类型");
7975
7987
  }
@@ -7979,17 +7991,17 @@ System.register('Utils', [], (function (exports) {
7979
7991
  }
7980
7992
  wait(checkFn, timeout, parent) {
7981
7993
  const UtilsContext = this;
7982
- let __timeout__ = typeof timeout === "number" ? timeout : 0;
7994
+ const __timeout__ = typeof timeout === "number" ? timeout : 0;
7983
7995
  return new Promise((resolve) => {
7984
- let observer = UtilsContext.mutationObserver(parent || UtilsContext.windowApi.document, {
7996
+ const observer = UtilsContext.mutationObserver(parent || UtilsContext.windowApi.document, {
7985
7997
  config: {
7986
7998
  subtree: true,
7987
7999
  childList: true,
7988
8000
  attributes: true,
7989
8001
  },
7990
8002
  immediate: true,
7991
- callback(mutations, __observer__) {
7992
- let result = checkFn();
8003
+ callback(_, __observer__) {
8004
+ const result = checkFn();
7993
8005
  if (result.success) {
7994
8006
  // 取消观察器
7995
8007
  if (typeof __observer__?.disconnect === "function") {
@@ -8013,9 +8025,9 @@ System.register('Utils', [], (function (exports) {
8013
8025
  waitNode(...args) {
8014
8026
  // 过滤掉undefined
8015
8027
  args = args.filter((arg) => arg !== void 0);
8016
- let UtilsContext = this;
8028
+ const UtilsContext = this;
8017
8029
  // 选择器
8018
- let selector = args[0];
8030
+ const selector = args[0];
8019
8031
  // 父元素(监听的元素)
8020
8032
  let parent = UtilsContext.windowApi.document;
8021
8033
  // 超时时间
@@ -8025,7 +8037,7 @@ System.register('Utils', [], (function (exports) {
8025
8037
  }
8026
8038
  if (args.length === 1) ;
8027
8039
  else if (args.length === 2) {
8028
- let secondParam = args[1];
8040
+ const secondParam = args[1];
8029
8041
  if (typeof secondParam === "number") {
8030
8042
  // "div",10000
8031
8043
  timeout = secondParam;
@@ -8041,9 +8053,9 @@ System.register('Utils', [], (function (exports) {
8041
8053
  else if (args.length === 3) {
8042
8054
  // "div",document,10000
8043
8055
  // 第二个参数,parent
8044
- let secondParam = args[1];
8056
+ const secondParam = args[1];
8045
8057
  // 第三个参数,timeout
8046
- let thirdParam = args[2];
8058
+ const thirdParam = args[2];
8047
8059
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8048
8060
  parent = secondParam;
8049
8061
  if (typeof thirdParam === "number") {
@@ -8062,9 +8074,9 @@ System.register('Utils', [], (function (exports) {
8062
8074
  }
8063
8075
  function getNode() {
8064
8076
  if (Array.isArray(selector)) {
8065
- let result = [];
8077
+ const result = [];
8066
8078
  for (let index = 0; index < selector.length; index++) {
8067
- let node = domUtils.selector(selector[index]);
8079
+ const node = domUtils.selector(selector[index]);
8068
8080
  if (node) {
8069
8081
  result.push(node);
8070
8082
  }
@@ -8081,7 +8093,7 @@ System.register('Utils', [], (function (exports) {
8081
8093
  }
8082
8094
  }
8083
8095
  return UtilsContext.wait(() => {
8084
- let node = getNode();
8096
+ const node = getNode();
8085
8097
  if (node) {
8086
8098
  return {
8087
8099
  success: true,
@@ -8099,9 +8111,9 @@ System.register('Utils', [], (function (exports) {
8099
8111
  waitAnyNode(...args) {
8100
8112
  // 过滤掉undefined
8101
8113
  args = args.filter((arg) => arg !== void 0);
8102
- let UtilsContext = this;
8114
+ const UtilsContext = this;
8103
8115
  // 选择器
8104
- let selectorList = args[0];
8116
+ const selectorList = args[0];
8105
8117
  // 父元素(监听的元素)
8106
8118
  let parent = UtilsContext.windowApi.document;
8107
8119
  // 超时时间
@@ -8111,7 +8123,7 @@ System.register('Utils', [], (function (exports) {
8111
8123
  }
8112
8124
  if (args.length === 1) ;
8113
8125
  else if (args.length === 2) {
8114
- let secondParam = args[1];
8126
+ const secondParam = args[1];
8115
8127
  if (typeof secondParam === "number") {
8116
8128
  // "div",10000
8117
8129
  timeout = secondParam;
@@ -8127,9 +8139,9 @@ System.register('Utils', [], (function (exports) {
8127
8139
  else if (args.length === 3) {
8128
8140
  // "div",document,10000
8129
8141
  // 第二个参数,parent
8130
- let secondParam = args[1];
8142
+ const secondParam = args[1];
8131
8143
  // 第三个参数,timeout
8132
- let thirdParam = args[2];
8144
+ const thirdParam = args[2];
8133
8145
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8134
8146
  parent = secondParam;
8135
8147
  if (typeof thirdParam === "number") {
@@ -8146,7 +8158,7 @@ System.register('Utils', [], (function (exports) {
8146
8158
  else {
8147
8159
  throw new TypeError("Utils.waitAnyNode 参数个数错误");
8148
8160
  }
8149
- let promiseList = selectorList.map((selector) => {
8161
+ const promiseList = selectorList.map((selector) => {
8150
8162
  return UtilsContext.waitNode(selector, parent, timeout);
8151
8163
  });
8152
8164
  return Promise.any(promiseList);
@@ -8154,9 +8166,9 @@ System.register('Utils', [], (function (exports) {
8154
8166
  waitNodeList(...args) {
8155
8167
  // 过滤掉undefined
8156
8168
  args = args.filter((arg) => arg !== void 0);
8157
- let UtilsContext = this;
8169
+ const UtilsContext = this;
8158
8170
  // 选择器数组
8159
- let selector = args[0];
8171
+ const selector = args[0];
8160
8172
  // 父元素(监听的元素)
8161
8173
  let parent = UtilsContext.windowApi.document;
8162
8174
  // 超时时间
@@ -8166,7 +8178,7 @@ System.register('Utils', [], (function (exports) {
8166
8178
  }
8167
8179
  if (args.length === 1) ;
8168
8180
  else if (args.length === 2) {
8169
- let secondParam = args[1];
8181
+ const secondParam = args[1];
8170
8182
  if (typeof secondParam === "number") {
8171
8183
  // "div",10000
8172
8184
  timeout = secondParam;
@@ -8182,9 +8194,9 @@ System.register('Utils', [], (function (exports) {
8182
8194
  else if (args.length === 3) {
8183
8195
  // "div",document,10000
8184
8196
  // 第二个参数,parent
8185
- let secondParam = args[1];
8197
+ const secondParam = args[1];
8186
8198
  // 第三个参数,timeout
8187
- let thirdParam = args[2];
8199
+ const thirdParam = args[2];
8188
8200
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8189
8201
  parent = secondParam;
8190
8202
  if (typeof thirdParam === "number") {
@@ -8203,9 +8215,9 @@ System.register('Utils', [], (function (exports) {
8203
8215
  }
8204
8216
  function getNodeList() {
8205
8217
  if (Array.isArray(selector)) {
8206
- let result = [];
8218
+ const result = [];
8207
8219
  for (let index = 0; index < selector.length; index++) {
8208
- let nodeList = domUtils.selectorAll(selector[index], parent);
8220
+ const nodeList = domUtils.selectorAll(selector[index], parent);
8209
8221
  if (nodeList.length) {
8210
8222
  result.push(nodeList);
8211
8223
  }
@@ -8215,14 +8227,14 @@ System.register('Utils', [], (function (exports) {
8215
8227
  }
8216
8228
  }
8217
8229
  else {
8218
- let nodeList = domUtils.selectorAll(selector, parent);
8230
+ const nodeList = domUtils.selectorAll(selector, parent);
8219
8231
  if (nodeList.length) {
8220
8232
  return nodeList;
8221
8233
  }
8222
8234
  }
8223
8235
  }
8224
8236
  return UtilsContext.wait(() => {
8225
- let node = getNodeList();
8237
+ const node = getNodeList();
8226
8238
  if (node) {
8227
8239
  return {
8228
8240
  success: true,
@@ -8240,9 +8252,9 @@ System.register('Utils', [], (function (exports) {
8240
8252
  waitAnyNodeList(...args) {
8241
8253
  // 过滤掉undefined
8242
8254
  args = args.filter((arg) => arg !== void 0);
8243
- let UtilsContext = this;
8255
+ const UtilsContext = this;
8244
8256
  // 选择器数组
8245
- let selectorList = args[0];
8257
+ const selectorList = args[0];
8246
8258
  // 父元素(监听的元素)
8247
8259
  let parent = UtilsContext.windowApi.document;
8248
8260
  // 超时时间
@@ -8252,7 +8264,7 @@ System.register('Utils', [], (function (exports) {
8252
8264
  }
8253
8265
  if (args.length === 1) ;
8254
8266
  else if (args.length === 2) {
8255
- let secondParam = args[1];
8267
+ const secondParam = args[1];
8256
8268
  if (typeof secondParam === "number") {
8257
8269
  // "div",10000
8258
8270
  timeout = secondParam;
@@ -8268,9 +8280,9 @@ System.register('Utils', [], (function (exports) {
8268
8280
  else if (args.length === 3) {
8269
8281
  // "div",document,10000
8270
8282
  // 第二个参数,parent
8271
- let secondParam = args[1];
8283
+ const secondParam = args[1];
8272
8284
  // 第三个参数,timeout
8273
- let thirdParam = args[2];
8285
+ const thirdParam = args[2];
8274
8286
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8275
8287
  parent = secondParam;
8276
8288
  if (typeof thirdParam === "number") {
@@ -8287,7 +8299,7 @@ System.register('Utils', [], (function (exports) {
8287
8299
  else {
8288
8300
  throw new TypeError("Utils.waitAnyNodeList 参数个数错误");
8289
8301
  }
8290
- let promiseList = selectorList.map((selector) => {
8302
+ const promiseList = selectorList.map((selector) => {
8291
8303
  return UtilsContext.waitNodeList(selector, parent, timeout);
8292
8304
  });
8293
8305
  return Promise.any(promiseList);
@@ -8316,13 +8328,13 @@ System.register('Utils', [], (function (exports) {
8316
8328
  });
8317
8329
  }
8318
8330
  waitPropertyByInterval(checkObj, checkPropertyName, intervalTimer = 250, maxTime = -1) {
8319
- let UtilsContext = this;
8331
+ const UtilsContext = this;
8320
8332
  if (checkObj == null) {
8321
8333
  throw new TypeError("checkObj 不能为空对象 ");
8322
8334
  }
8323
8335
  let isResolve = false;
8324
8336
  return new Promise((resolve, reject) => {
8325
- let interval = UtilsContext.workerSetInterval(() => {
8337
+ const interval = UtilsContext.workerSetInterval(() => {
8326
8338
  let obj = checkObj;
8327
8339
  if (typeof checkObj === "function") {
8328
8340
  obj = checkObj();
@@ -8355,7 +8367,7 @@ System.register('Utils', [], (function (exports) {
8355
8367
  throw new Error("Utils.waitVueByInterval 参数element 不能为空");
8356
8368
  }
8357
8369
  let flag = false;
8358
- let UtilsContext = this;
8370
+ const UtilsContext = this;
8359
8371
  try {
8360
8372
  await UtilsContext.waitPropertyByInterval(element, function (targetElement) {
8361
8373
  if (targetElement == null) {
@@ -8367,7 +8379,7 @@ System.register('Utils', [], (function (exports) {
8367
8379
  if (propertyName == null) {
8368
8380
  return true;
8369
8381
  }
8370
- let vueObject = targetElement[vueName];
8382
+ const vueObject = targetElement[vueName];
8371
8383
  if (typeof propertyName === "string") {
8372
8384
  if (propertyName in vueObject) {
8373
8385
  flag = true;
@@ -8383,6 +8395,7 @@ System.register('Utils', [], (function (exports) {
8383
8395
  }
8384
8396
  return false;
8385
8397
  }, timer, maxTime);
8398
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8386
8399
  }
8387
8400
  catch (error) {
8388
8401
  return flag;
@@ -8441,7 +8454,7 @@ System.register('Utils', [], (function (exports) {
8441
8454
  if (target == null) {
8442
8455
  return;
8443
8456
  }
8444
- let handleResult = handler(target);
8457
+ const handleResult = handler(target);
8445
8458
  if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
8446
8459
  return handleResult.data;
8447
8460
  }
@@ -8454,10 +8467,10 @@ System.register('Utils', [], (function (exports) {
8454
8467
  */
8455
8468
  async asyncQueryProperty(target, handler) {
8456
8469
  if (target == null) {
8457
- // @ts-ignore
8470
+ // @ts-expect-error 空返回
8458
8471
  return;
8459
8472
  }
8460
- let handleResult = await handler(target);
8473
+ const handleResult = await handler(target);
8461
8474
  if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
8462
8475
  return handleResult.data;
8463
8476
  }
@@ -8565,6 +8578,7 @@ System.register('Utils', [], (function (exports) {
8565
8578
  workerSetTimeout(callback, timeout = 0) {
8566
8579
  try {
8567
8580
  return setTimeout$1(callback, timeout);
8581
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8568
8582
  }
8569
8583
  catch (error) {
8570
8584
  return this.windowApi.setTimeout(callback, timeout);
@@ -8579,8 +8593,10 @@ System.register('Utils', [], (function (exports) {
8579
8593
  if (timeId != null) {
8580
8594
  clearTimeout$1(timeId);
8581
8595
  }
8596
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8582
8597
  }
8583
8598
  catch (error) {
8599
+ // console.log(error);
8584
8600
  }
8585
8601
  finally {
8586
8602
  this.windowApi.clearTimeout(timeId);
@@ -8594,6 +8610,7 @@ System.register('Utils', [], (function (exports) {
8594
8610
  workerSetInterval(callback, timeout = 0) {
8595
8611
  try {
8596
8612
  return setInterval(callback, timeout);
8613
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8597
8614
  }
8598
8615
  catch (error) {
8599
8616
  return this.windowApi.setInterval(callback, timeout);
@@ -8608,8 +8625,10 @@ System.register('Utils', [], (function (exports) {
8608
8625
  if (timeId != null) {
8609
8626
  clearInterval(timeId);
8610
8627
  }
8628
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8611
8629
  }
8612
8630
  catch (error) {
8631
+ // console.log(error);
8613
8632
  }
8614
8633
  finally {
8615
8634
  this.windowApi.clearInterval(timeId);
@@ -8643,10 +8662,10 @@ System.register('Utils', [], (function (exports) {
8643
8662
  .query({
8644
8663
  name: "clipboard-read",
8645
8664
  })
8646
- .then((permissionStatus) => {
8665
+ .then(() => {
8647
8666
  readClipboardText();
8648
8667
  })
8649
- .catch((error) => {
8668
+ .catch(() => {
8650
8669
  /* 该权限申请Api可能在该环境下不生效,尝试直接读取剪贴板 */
8651
8670
  readClipboardText();
8652
8671
  });
@@ -8683,7 +8702,7 @@ System.register('Utils', [], (function (exports) {
8683
8702
  });
8684
8703
  }
8685
8704
  }
8686
- let utils = exports("default", new Utils());
8705
+ const utils = exports("default", new Utils());
8687
8706
 
8688
8707
  })
8689
8708
  };