@whitesev/utils 2.7.8 → 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.
- package/README.md +176 -176
- package/dist/index.amd.js +896 -877
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +896 -877
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +896 -877
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +896 -877
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +896 -877
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +896 -877
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/CommonUtil.d.ts +59 -59
- package/dist/types/src/DOMUtils.d.ts +1 -1
- package/dist/types/src/Dictionary.d.ts +1 -1
- package/dist/types/src/Httpx.d.ts +2 -2
- package/dist/types/src/Progress.d.ts +0 -4
- package/dist/types/src/TryCatch.d.ts +2 -2
- package/dist/types/src/Utils.d.ts +365 -365
- package/dist/types/src/UtilsGMCookie.d.ts +2 -2
- package/dist/types/src/UtilsGMMenu.d.ts +1 -1
- package/dist/types/src/indexedDB.d.ts +3 -3
- package/dist/types/src/types/Event.d.ts +188 -188
- package/dist/types/src/types/Httpx.d.ts +1344 -1343
- package/dist/types/src/types/Log.d.ts +19 -19
- package/dist/types/src/types/Progress.d.ts +20 -20
- package/dist/types/src/types/React.d.ts +119 -119
- package/dist/types/src/types/TryCatch.d.ts +9 -9
- package/dist/types/src/types/UtilsGMCookie.d.ts +93 -93
- package/dist/types/src/types/UtilsGMMenu.d.ts +77 -77
- package/dist/types/src/types/Vue2.d.ts +166 -166
- package/dist/types/src/types/WindowApi.d.ts +14 -14
- package/dist/types/src/types/ajaxHooker.d.ts +151 -151
- package/dist/types/src/types/env.d.ts +7 -2
- package/dist/types/src/types/global.d.ts +31 -31
- package/package.json +16 -7
- package/src/ColorConversion.ts +105 -106
- package/src/CommonUtil.ts +280 -279
- package/src/DOMUtils.ts +251 -272
- package/src/Dictionary.ts +153 -154
- package/src/GBKEncoder.ts +108 -112
- package/src/Hooks.ts +73 -81
- package/src/Httpx.ts +1457 -1466
- package/src/LockFunction.ts +62 -62
- package/src/Log.ts +258 -259
- package/src/ModuleRaid.js +1 -0
- package/src/Progress.ts +108 -114
- package/src/TryCatch.ts +86 -86
- package/src/Utils.ts +4772 -4825
- package/src/UtilsCommon.ts +14 -14
- package/src/UtilsGMCookie.ts +254 -261
- package/src/UtilsGMMenu.ts +445 -454
- package/src/Vue.ts +233 -229
- package/src/WindowApi.ts +59 -59
- package/src/ajaxHooker/ajaxHooker.js +1 -0
- package/src/indexedDB.ts +497 -502
- package/src/types/Event.d.ts +188 -188
- package/src/types/Httpx.d.ts +1344 -1343
- package/src/types/Log.d.ts +19 -19
- package/src/types/Progress.d.ts +20 -20
- package/src/types/React.d.ts +119 -119
- package/src/types/TryCatch.d.ts +9 -9
- package/src/types/UtilsGMCookie.d.ts +93 -93
- package/src/types/UtilsGMMenu.d.ts +77 -77
- package/src/types/Vue2.d.ts +166 -166
- package/src/types/WindowApi.d.ts +14 -14
- package/src/types/ajaxHooker.d.ts +151 -151
- package/src/types/env.d.ts +7 -2
- package/src/types/global.d.ts +31 -31
package/dist/index.system.js
CHANGED
|
@@ -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(/^(
|
|
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(
|
|
29
|
+
throw new TypeError(`输入错误的hex:${hex}`);
|
|
30
30
|
}
|
|
31
31
|
return hex && hex.replace(/\s+/g, "").length === 7
|
|
32
|
-
?
|
|
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(
|
|
41
|
+
throw new TypeError(`输入错误的hex:${str}`);
|
|
50
42
|
}
|
|
51
43
|
/* replace替换查找的到的字符串 */
|
|
52
44
|
str = str.replace("#", "");
|
|
53
45
|
/* match得到查询数组 */
|
|
54
|
-
|
|
46
|
+
const hxs = str.match(/../g);
|
|
55
47
|
for (let index = 0; index < 3; index++) {
|
|
56
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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] =
|
|
77
|
-
return
|
|
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(
|
|
79
|
+
throw new TypeError(`输入错误的hex:${color}`);
|
|
87
80
|
}
|
|
88
|
-
|
|
81
|
+
const rgbc = this.hexToRgb(color);
|
|
89
82
|
for (let index = 0; index < 3; index++) {
|
|
90
|
-
|
|
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(
|
|
96
|
+
throw new TypeError(`输入错误的hex:${color}`);
|
|
102
97
|
}
|
|
103
|
-
|
|
98
|
+
const rgbc = this.hexToRgb(color);
|
|
104
99
|
for (let index = 0; index < 3; index++) {
|
|
105
|
-
|
|
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++]] =
|
|
118
|
+
this.#U2Ghash[this.#data[index++]] = `%${i.toString(16)}%${j.toString(16)}`.toUpperCase();
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
|
-
for (
|
|
125
|
-
this.#
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
155
|
-
return [...str].reduce((result, val
|
|
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 =
|
|
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
|
-
|
|
179
|
-
|
|
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
|
-
|
|
192
|
-
|
|
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
|
-
|
|
198
|
-
|
|
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(
|
|
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 = (
|
|
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
|
-
|
|
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
|
|
273
|
-
console.log(`%c
|
|
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
|
-
|
|
290
|
+
const UtilsContext = this;
|
|
293
291
|
if (Array.isArray(source)) {
|
|
294
|
-
|
|
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
|
-
|
|
311
|
-
|
|
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
|
|
315
|
+
Reflect.set(target, sourceKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
|
|
318
316
|
continue;
|
|
319
317
|
}
|
|
320
|
-
target
|
|
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
|
-
|
|
327
|
-
|
|
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
|
|
331
|
+
Reflect.set(target, targetKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
|
|
334
332
|
continue;
|
|
335
333
|
}
|
|
336
334
|
/* 直接赋值 */
|
|
337
|
-
target
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
395
|
+
const UtilsContext = this;
|
|
397
396
|
return !UtilsContext.isNull.apply(this, args);
|
|
398
397
|
}
|
|
399
398
|
deepClone(obj) {
|
|
400
|
-
|
|
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
|
-
|
|
404
|
+
const clone = obj instanceof Array ? [] : {};
|
|
406
405
|
for (const [key, value] of Object.entries(obj)) {
|
|
407
|
-
|
|
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((
|
|
438
|
+
.error(() => {
|
|
435
439
|
TryCatch()
|
|
436
440
|
.error(() => {
|
|
437
441
|
try {
|
|
438
|
-
result = new Function(
|
|
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(/\\(?:["
|
|
450
|
-
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][
|
|
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(
|
|
456
|
+
result = new Function(`return ${data}`)();
|
|
453
457
|
}
|
|
454
458
|
else {
|
|
455
459
|
if (typeof errorCallBack === "function") {
|
|
456
|
-
errorCallBack(new Error("target is not
|
|
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
|
-
|
|
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
|
-
|
|
501
|
+
const cookies = this.getCookiesList();
|
|
498
502
|
let findValue = void 0;
|
|
499
503
|
for (const cookieItem of cookies) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
504
|
+
const item = cookieItem.trim();
|
|
505
|
+
const itemSplit = item.split("=");
|
|
506
|
+
const itemName = itemSplit[0];
|
|
503
507
|
itemSplit.splice(0, 1);
|
|
504
|
-
|
|
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
|
-
|
|
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
|
-
|
|
547
|
+
const cookies = this.getCookiesList();
|
|
544
548
|
cookies.forEach((item) => {
|
|
545
549
|
item = item.trim();
|
|
546
|
-
|
|
547
|
-
|
|
550
|
+
const itemSplit = item.split("=");
|
|
551
|
+
const itemName = itemSplit[0];
|
|
548
552
|
itemSplit.splice(0, 1);
|
|
549
|
-
|
|
550
|
-
|
|
553
|
+
const itemValue = decodeURIComponent(itemSplit.join(""));
|
|
554
|
+
const nameRegexp = defaultOption.name instanceof RegExp
|
|
551
555
|
? defaultOption.name
|
|
552
|
-
: new RegExp(
|
|
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
|
-
|
|
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
|
-
|
|
598
|
+
const cookies = this.getCookiesList();
|
|
595
599
|
cookies.forEach((item) => {
|
|
596
600
|
item = item.trim();
|
|
597
|
-
|
|
598
|
-
|
|
601
|
+
const itemSplit = item.split("=");
|
|
602
|
+
const itemName = itemSplit[0];
|
|
599
603
|
itemSplit.splice(0, 1);
|
|
600
|
-
|
|
601
|
-
|
|
604
|
+
const itemValue = decodeURIComponent(itemSplit.join(""));
|
|
605
|
+
const nameRegexp = defaultOption.name instanceof RegExp
|
|
602
606
|
? defaultOption.name
|
|
603
|
-
: new RegExp(
|
|
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
|
-
|
|
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 +=
|
|
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
|
-
|
|
706
|
-
|
|
704
|
+
const cookies = cookieStr.split(";");
|
|
705
|
+
const result = [];
|
|
707
706
|
for (const cookieItem of cookies) {
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
707
|
+
const item = cookieItem.trim();
|
|
708
|
+
const itemSplit = item.split("=");
|
|
709
|
+
const itemName = itemSplit[0];
|
|
711
710
|
itemSplit.splice(0, 1);
|
|
712
|
-
|
|
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
|
-
|
|
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
|
|
1777
|
+
return `${this.$emoji.success} ${menuText}`;
|
|
1778
1778
|
}
|
|
1779
1779
|
else {
|
|
1780
|
-
return this.$emoji.error
|
|
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
|
-
|
|
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
|
-
|
|
1799
|
+
const cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
|
|
1800
1800
|
const { showText, clickCallBack } = this.handleMenuData(cloneMenuOptionData);
|
|
1801
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
1842
|
+
return `${this.$emoji.success} ${menuText}`;
|
|
1843
1843
|
}
|
|
1844
1844
|
else {
|
|
1845
|
-
return this.$emoji.error
|
|
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
|
-
|
|
1857
|
-
|
|
1856
|
+
const that = this;
|
|
1857
|
+
const menuLocalDataItemKey = menuOption.key;
|
|
1858
1858
|
/* 菜单默认开启的状态 */
|
|
1859
|
-
|
|
1859
|
+
const defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
|
|
1860
1860
|
/** 油猴菜单上显示的文本 */
|
|
1861
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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[
|
|
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
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
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 (
|
|
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[
|
|
2217
|
-
Reflect.deleteProperty(_context,
|
|
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 (
|
|
2225
|
+
if (Object.prototype.hasOwnProperty.call(Function.prototype, "hook")) {
|
|
2226
2226
|
Reflect.deleteProperty(Function.prototype, "hook");
|
|
2227
2227
|
}
|
|
2228
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
2286
|
+
const item = this.$config.configList[index];
|
|
2287
2287
|
if (typeof item.fn === "function") {
|
|
2288
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2364
|
+
const item = this.$config.configList[index];
|
|
2365
2365
|
if (typeof item.successFn === "function") {
|
|
2366
|
-
|
|
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
|
-
|
|
2399
|
+
const item = this.$config.configList[index];
|
|
2400
2400
|
if (typeof item.errorFn === "function") {
|
|
2401
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2448
|
+
const option = {
|
|
2449
2449
|
url: void 0,
|
|
2450
2450
|
};
|
|
2451
2451
|
if (typeof args[0] === "string") {
|
|
2452
2452
|
/* 传入的是url,转为配置 */
|
|
2453
|
-
|
|
2453
|
+
const url = args[0];
|
|
2454
2454
|
option.url = url;
|
|
2455
2455
|
if (typeof args[1] === "object") {
|
|
2456
2456
|
/* 处理第二个参数details */
|
|
2457
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
2513
|
-
|
|
2514
|
-
|
|
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)
|
|
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(
|
|
2550
|
-
|
|
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(
|
|
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(
|
|
2583
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
2636
|
+
const processData = userRequestOption.processData ?? true;
|
|
2630
2637
|
if (requestOption.data != null && processData) {
|
|
2631
|
-
|
|
2638
|
+
const method = requestOption.method;
|
|
2632
2639
|
if (method === "GET" || method === "HEAD") {
|
|
2633
2640
|
// GET类型,data如果有,那么需要转为searchParams
|
|
2634
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
2674
|
-
|
|
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
|
-
|
|
2680
|
-
|
|
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)
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2749
|
-
|
|
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
|
|
2801
|
+
* @param _reject promise抛出错误回调
|
|
2795
2802
|
* @param argsResult 返回的参数列表
|
|
2796
2803
|
*/
|
|
2797
|
-
async onAbort(details, resolve,
|
|
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,
|
|
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
|
|
2879
|
+
* @param _reject 抛出错误
|
|
2873
2880
|
* @param argsResult 返回的参数列表
|
|
2874
2881
|
*/
|
|
2875
|
-
async onError(details, resolve,
|
|
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
|
|
2916
|
+
* @param _reject 抛出错误
|
|
2910
2917
|
* @param argsResult 返回的参数列表
|
|
2911
2918
|
*/
|
|
2912
|
-
async onLoad(details, resolve,
|
|
2919
|
+
async onLoad(details, resolve, _reject, argsResult) {
|
|
2913
2920
|
// console.log(argsResult);
|
|
2914
2921
|
/* X浏览器会因为设置了responseType导致不返回responseText */
|
|
2915
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2946
|
+
const parser = new DOMParser();
|
|
2941
2947
|
httpxResponse = parser.parseFromString(httpxResponseText, "text/html");
|
|
2942
2948
|
}
|
|
2943
2949
|
else if (details.responseType === "arraybuffer") {
|
|
2944
|
-
|
|
2945
|
-
|
|
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
|
-
|
|
2950
|
-
|
|
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
|
-
|
|
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
|
|
2967
|
+
catch {
|
|
2962
2968
|
console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
|
|
2963
2969
|
}
|
|
2964
2970
|
}
|
|
2965
2971
|
}
|
|
2966
|
-
catch
|
|
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
|
|
2977
|
+
catch {
|
|
2972
2978
|
console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
|
|
2973
2979
|
}
|
|
2974
2980
|
}
|
|
2975
2981
|
}
|
|
2976
2982
|
/* Stay扩展中没有finalUrl,对应的是responseURL */
|
|
2977
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3130
|
+
const arrayBuffer = await fetchResponse.arrayBuffer();
|
|
3125
3131
|
/** 数据编码 */
|
|
3126
3132
|
let encoding = "utf-8";
|
|
3127
3133
|
if (fetchResponse.headers.has("Content-Type")) {
|
|
3128
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3162
|
+
const parser = new DOMParser();
|
|
3157
3163
|
response = parser.parseFromString(responseText, "text/html");
|
|
3158
3164
|
}
|
|
3159
3165
|
// 转为XML结构
|
|
3160
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3408
|
-
|
|
3416
|
+
// 对请求的参数进行合并处理
|
|
3417
|
+
const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
|
|
3418
|
+
/**
|
|
3419
|
+
* 取消请求
|
|
3420
|
+
*/
|
|
3409
3421
|
let abortFn = null;
|
|
3410
|
-
|
|
3411
|
-
|
|
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
|
-
|
|
3433
|
+
// 处理重试逻辑
|
|
3416
3434
|
const requestResult = await this.HttpxRequest.request(requestOption);
|
|
3417
3435
|
if (requestResult != null && typeof requestResult.abort === "function") {
|
|
3418
|
-
abortFn =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
3514
|
+
const that = this;
|
|
3498
3515
|
/* 打开数据库 */
|
|
3499
3516
|
/* 如果支持IndexDB */
|
|
3500
3517
|
if (!that.#db[dbName]) {
|
|
3501
3518
|
/* 如果缓存中没有,则进行数据库的创建或打开,提高效率 */
|
|
3502
|
-
|
|
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
|
-
|
|
3529
|
+
const target = event.target;
|
|
3513
3530
|
that.#db[dbName] = target.result;
|
|
3514
3531
|
}
|
|
3515
|
-
|
|
3532
|
+
const store = that.createStore(dbName);
|
|
3516
3533
|
callback(store);
|
|
3517
3534
|
};
|
|
3518
3535
|
request.onupgradeneeded = function (event) {
|
|
3519
|
-
|
|
3536
|
+
const target = event.target;
|
|
3520
3537
|
that.#db[dbName] = target.result;
|
|
3521
|
-
|
|
3538
|
+
const store = that.#db[dbName].createObjectStore(that.#storeName, {
|
|
3522
3539
|
keyPath: "key",
|
|
3523
3540
|
});
|
|
3524
|
-
store.transaction.oncomplete = function (
|
|
3541
|
+
store.transaction.oncomplete = function () {
|
|
3525
3542
|
callback(store);
|
|
3526
3543
|
};
|
|
3527
3544
|
};
|
|
3528
3545
|
}
|
|
3529
3546
|
else {
|
|
3530
3547
|
/* 如果缓存中已经打开了数据库,就直接使用 */
|
|
3531
|
-
|
|
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
|
-
|
|
3558
|
+
const that = this;
|
|
3542
3559
|
return new Promise((resolve) => {
|
|
3543
|
-
|
|
3544
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3601
|
+
const that = this;
|
|
3585
3602
|
return new Promise((resolve) => {
|
|
3586
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3642
|
+
const that = this;
|
|
3626
3643
|
return new Promise((resolve) => {
|
|
3627
|
-
|
|
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
|
-
|
|
3656
|
+
const request = idbStore.get(key);
|
|
3640
3657
|
request.onsuccess = function (event) {
|
|
3641
|
-
|
|
3642
|
-
|
|
3658
|
+
const target = event.target;
|
|
3659
|
+
const result = target.result;
|
|
3643
3660
|
/* result 返回的是 {key: string, value: any} */
|
|
3644
3661
|
/* 键值对存储 */
|
|
3645
|
-
|
|
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
|
-
|
|
3703
|
+
const that = this;
|
|
3687
3704
|
return new Promise((resolve) => {
|
|
3688
3705
|
/* 正则查询 */
|
|
3689
|
-
|
|
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
|
-
|
|
3718
|
+
const request = idbStore.getAll();
|
|
3702
3719
|
request.onsuccess = function (event) {
|
|
3703
|
-
|
|
3704
|
-
|
|
3720
|
+
const target = event.target;
|
|
3721
|
+
const result = target.result;
|
|
3705
3722
|
if (result.length !== 0) {
|
|
3706
|
-
result.forEach((dataItem
|
|
3723
|
+
result.forEach((dataItem) => {
|
|
3707
3724
|
// 当前项的key
|
|
3708
|
-
|
|
3725
|
+
const __key = dataItem["key"];
|
|
3709
3726
|
// 当前项的value
|
|
3710
|
-
|
|
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
|
-
|
|
3759
|
+
const that = this;
|
|
3743
3760
|
return new Promise((resolve) => {
|
|
3744
3761
|
/* 根据key删除某条数据 */
|
|
3745
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3798
|
+
const that = this;
|
|
3782
3799
|
return new Promise((resolve) => {
|
|
3783
3800
|
/* 清空数据库 */
|
|
3784
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3935
|
+
const result = {
|
|
3919
3936
|
name: "",
|
|
3920
3937
|
position: "",
|
|
3921
3938
|
};
|
|
3922
3939
|
for (let stackString of stack) {
|
|
3923
3940
|
stackString = stackString.trim();
|
|
3924
|
-
|
|
3925
|
-
|
|
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
|
-
|
|
3934
|
-
|
|
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
|
-
|
|
3963
|
+
const lastStackString = stack[stack.length - 1].trim();
|
|
3947
3964
|
if (lastStackString.startsWith("at chrome-extension://")) {
|
|
3948
|
-
|
|
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
|
-
|
|
3995
|
+
const stackSplit = new Error().stack.split("\n");
|
|
3979
3996
|
stackSplit.splice(0, 2);
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
|
|
3997
|
+
const { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
|
|
3998
|
+
const tagName = this.tag;
|
|
3999
|
+
const that = this;
|
|
3983
4000
|
/** tag的html输出格式 */
|
|
3984
|
-
|
|
4001
|
+
const tagNameHTML = `%c[${tagName}%c`;
|
|
3985
4002
|
/** 调用的函数名的html输出格式 */
|
|
3986
4003
|
let callerNameHTML = `%c${callerName}%c]%c`;
|
|
3987
|
-
callerName.trim()
|
|
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
|
-
|
|
4092
|
+
const stack = new Error().stack.split("\n");
|
|
4074
4093
|
stack.splice(0, 1);
|
|
4075
|
-
|
|
4094
|
+
const errorStackParse = this.parseErrorStack(stack);
|
|
4076
4095
|
/** 堆栈函数名 */
|
|
4077
|
-
|
|
4096
|
+
const stackFunctionName = errorStackParse.name;
|
|
4078
4097
|
/** 堆栈位置 */
|
|
4079
|
-
|
|
4080
|
-
|
|
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
|
|
4144
|
-
#width
|
|
4145
|
-
#height
|
|
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
|
-
|
|
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
|
|
4174
|
-
this.#config.canvasNode.style.height = this.#height
|
|
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
|
-
|
|
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
|
-
|
|
4201
|
-
this.#ctx.font = this.#config.fontSize
|
|
4213
|
+
const txt = `${parseInt(this.#config.progress.toString())}%`;
|
|
4214
|
+
this.#ctx.font = `${this.#config.fontSize}px SimHei`;
|
|
4202
4215
|
/* 获取文本宽度 */
|
|
4203
|
-
|
|
4204
|
-
|
|
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
|
-
|
|
4241
|
+
const that = this;
|
|
4229
4242
|
return function* () {
|
|
4230
|
-
|
|
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
|
-
|
|
4241
|
-
|
|
4242
|
-
return that.entries();
|
|
4253
|
+
return () => {
|
|
4254
|
+
return this.entries();
|
|
4243
4255
|
};
|
|
4244
4256
|
}
|
|
4245
4257
|
/**
|
|
@@ -4286,13 +4298,13 @@ System.register('Utils', [], (function (exports) {
|
|
|
4286
4298
|
* 获取字典所有的键
|
|
4287
4299
|
*/
|
|
4288
4300
|
keys() {
|
|
4289
|
-
return this.items.keys()
|
|
4301
|
+
return Array.from(this.items.keys());
|
|
4290
4302
|
}
|
|
4291
4303
|
/**
|
|
4292
4304
|
* 返回字典中的所有值
|
|
4293
4305
|
*/
|
|
4294
4306
|
values() {
|
|
4295
|
-
return this.items.values()
|
|
4307
|
+
return Array.from(this.items.values());
|
|
4296
4308
|
}
|
|
4297
4309
|
/**
|
|
4298
4310
|
* 清空字典
|
|
@@ -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
|
|
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
|
-
|
|
4472
|
+
scheduler;
|
|
4460
4473
|
constructor(fn, scheduler) {
|
|
4461
4474
|
this.fn = fn;
|
|
4462
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4548
|
-
|
|
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 (
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
5323
|
-
|
|
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
|
-
|
|
5347
|
+
const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
5333
5348
|
let pattern = textMatch[2];
|
|
5334
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5386
|
-
|
|
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
|
-
|
|
5410
|
+
const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
5398
5411
|
let pattern = textMatch[2];
|
|
5399
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5433
|
-
|
|
5444
|
+
const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
5445
|
+
const text = textMatch[2];
|
|
5434
5446
|
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
5435
|
-
|
|
5447
|
+
const $closest = $el?.closest(selector);
|
|
5436
5448
|
if ($closest) {
|
|
5437
|
-
|
|
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
|
-
|
|
5458
|
+
const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
5448
5459
|
let pattern = textMatch[2];
|
|
5449
|
-
|
|
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
|
-
|
|
5466
|
+
const regexp = new RegExp(pattern, flags);
|
|
5456
5467
|
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
5457
|
-
|
|
5468
|
+
const $closest = $el?.closest(selector);
|
|
5458
5469
|
if ($closest) {
|
|
5459
|
-
|
|
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
|
-
|
|
5479
|
+
const $closest = $el?.closest(selector);
|
|
5469
5480
|
return $closest;
|
|
5470
5481
|
}
|
|
5471
5482
|
}
|
|
5472
5483
|
}
|
|
5473
|
-
|
|
5484
|
+
const domUtils = new DOMUtils();
|
|
5474
5485
|
|
|
5475
5486
|
class Utils {
|
|
5476
5487
|
windowApi;
|
|
@@ -5478,12 +5489,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
5478
5489
|
this.windowApi = new WindowApi(option);
|
|
5479
5490
|
}
|
|
5480
5491
|
/** 版本号 */
|
|
5481
|
-
version = "2025.9.
|
|
5492
|
+
version = "2025.9.14";
|
|
5482
5493
|
addStyle(cssText) {
|
|
5483
5494
|
if (typeof cssText !== "string") {
|
|
5484
5495
|
throw new Error("Utils.addStyle 参数cssText 必须为String类型");
|
|
5485
5496
|
}
|
|
5486
|
-
|
|
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
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5516
|
-
|
|
5517
|
-
|
|
5518
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5607
|
+
const UtilsContext = this;
|
|
5597
5608
|
if (!UtilsContext.isDOM(element)) {
|
|
5598
5609
|
throw new Error("Utils.checkUserClickInNode 参数 targetNode 必须为 Element|Node 类型");
|
|
5599
5610
|
}
|
|
5600
|
-
|
|
5601
|
-
|
|
5602
|
-
|
|
5611
|
+
const clickEvent = UtilsContext.windowApi.window.event;
|
|
5612
|
+
const touchEvent = UtilsContext.windowApi.window.event;
|
|
5613
|
+
const $click = clickEvent?.composedPath()?.[0];
|
|
5603
5614
|
// 点击的x坐标
|
|
5604
|
-
|
|
5615
|
+
const clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
|
|
5605
5616
|
// 点击的y坐标
|
|
5606
|
-
|
|
5607
|
-
|
|
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
|
-
|
|
5636
|
-
|
|
5637
|
-
|
|
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
|
-
|
|
5650
|
+
return;
|
|
5640
5651
|
}
|
|
5641
5652
|
clonedFormData.append(key, value);
|
|
5642
|
-
}
|
|
5653
|
+
});
|
|
5643
5654
|
return clonedFormData;
|
|
5644
5655
|
}
|
|
5645
5656
|
createOverload() {
|
|
5646
|
-
|
|
5657
|
+
const fnMap = new Map();
|
|
5647
5658
|
function overload(...args) {
|
|
5648
|
-
|
|
5649
|
-
|
|
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
|
-
|
|
5667
|
+
const fn = args.pop();
|
|
5657
5668
|
if (typeof fn !== "function") {
|
|
5658
5669
|
throw new TypeError("最后一个参数必须是函数");
|
|
5659
5670
|
}
|
|
5660
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5812
|
+
const that = this;
|
|
5802
5813
|
if (element.outerHTML.includes(text)) {
|
|
5803
5814
|
if (element.children.length === 0) {
|
|
5804
|
-
|
|
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
|
-
|
|
5811
|
-
for (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5837
|
-
if (
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5951
|
-
text = today.getFullYear()
|
|
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
|
-
|
|
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
|
-
|
|
6006
|
-
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6010
|
-
|
|
6011
|
-
|
|
6012
|
-
|
|
6013
|
-
|
|
6014
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6044
|
-
|
|
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
|
-
|
|
6051
|
-
|
|
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
|
-
|
|
6058
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
6083
|
-
selector +=
|
|
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 +=
|
|
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
|
-
|
|
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
|
-
|
|
6105
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
6203
|
-
|
|
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
|
-
|
|
6234
|
-
|
|
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
|
-
|
|
6262
|
+
const androidVersion = UtilsContext.getRandomValue(12, 14);
|
|
6252
6263
|
/* 手机型号 */
|
|
6253
|
-
|
|
6264
|
+
const randomMobile = UtilsContext.getRandomValue(mobileNameList);
|
|
6254
6265
|
/* chrome大版本号 */
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
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
|
-
|
|
6291
|
+
const UtilsContext = this;
|
|
6281
6292
|
/* chrome大版本号 */
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6293
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6359
|
+
const objectsSymbols = Object.getOwnPropertySymbols(target);
|
|
6349
6360
|
if (typeof keyName === "string") {
|
|
6350
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6382
|
-
|
|
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
|
-
|
|
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(
|
|
6410
|
+
return `thunder://${this.windowApi.globalThis.btoa(`AA${url}ZZ`)}`;
|
|
6400
6411
|
}
|
|
6401
6412
|
/**
|
|
6402
|
-
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
|
|
6417
|
-
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
|
|
6424
|
-
|
|
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
|
-
|
|
6431
|
-
|
|
6432
|
-
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
|
|
6439
|
-
|
|
6440
|
-
|
|
6441
|
-
|
|
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
|
-
|
|
6444
|
-
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
|
|
6451
|
-
|
|
6452
|
-
|
|
6453
|
-
|
|
6454
|
-
|
|
6455
|
-
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
|
|
6459
|
-
|
|
6460
|
-
|
|
6461
|
-
|
|
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
|
-
|
|
6491
|
-
|
|
6492
|
-
|
|
6493
|
-
|
|
6494
|
-
|
|
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
|
-
|
|
6497
|
-
|
|
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
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6511
|
-
|
|
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
|
-
|
|
6517
|
-
|
|
6518
|
-
**/
|
|
6525
|
+
});
|
|
6526
|
+
|
|
6527
|
+
// 删除键为menu_key的菜单
|
|
6528
|
+
GM_Menu.delete("menu_key");
|
|
6529
|
+
**/
|
|
6519
6530
|
GM_Menu = GMMenu;
|
|
6520
6531
|
/**
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
6528
|
-
|
|
6529
|
-
|
|
6530
|
-
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
|
|
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
|
-
|
|
6547
|
-
|
|
6548
|
-
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
|
|
6552
|
-
|
|
6553
|
-
|
|
6554
|
-
|
|
6555
|
-
|
|
6556
|
-
|
|
6557
|
-
|
|
6558
|
-
|
|
6559
|
-
|
|
6560
|
-
|
|
6561
|
-
|
|
6562
|
-
|
|
6563
|
-
|
|
6564
|
-
|
|
6565
|
-
|
|
6566
|
-
|
|
6567
|
-
|
|
6568
|
-
|
|
6569
|
-
|
|
6570
|
-
|
|
6571
|
-
|
|
6572
|
-
|
|
6573
|
-
|
|
6574
|
-
|
|
6575
|
-
|
|
6576
|
-
|
|
6577
|
-
|
|
6578
|
-
|
|
6579
|
-
|
|
6580
|
-
|
|
6581
|
-
|
|
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
|
-
|
|
6586
|
-
|
|
6587
|
-
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
|
|
6592
|
-
|
|
6593
|
-
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
|
|
6597
|
-
|
|
6598
|
-
|
|
6599
|
-
|
|
6600
|
-
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
|
|
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
|
-
|
|
6626
|
+
const checkWindow = () => {
|
|
6616
6627
|
// 已滚动的距离
|
|
6617
|
-
|
|
6628
|
+
const scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
|
|
6618
6629
|
// 视窗高度
|
|
6619
|
-
|
|
6630
|
+
const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
|
|
6620
6631
|
// 最大滚动距离
|
|
6621
|
-
|
|
6632
|
+
const maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
|
|
6622
6633
|
return scrollTop + viewportHeight >= maxScrollHeight;
|
|
6623
6634
|
};
|
|
6624
|
-
|
|
6635
|
+
const checkNode = ($ele) => {
|
|
6625
6636
|
// 已滚动的距离
|
|
6626
|
-
|
|
6637
|
+
const scrollTop = $ele.scrollTop;
|
|
6627
6638
|
// 视窗高度
|
|
6628
|
-
|
|
6639
|
+
const viewportHeight = $ele.clientHeight;
|
|
6629
6640
|
// 最大滚动距离
|
|
6630
|
-
|
|
6641
|
+
const maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
|
|
6631
6642
|
return scrollTop >= maxScrollHeight;
|
|
6632
6643
|
};
|
|
6633
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
6864
|
-
|
|
6865
|
-
|
|
6866
|
-
|
|
6867
|
-
|
|
6868
|
-
|
|
6869
|
-
|
|
6870
|
-
|
|
6871
|
-
|
|
6872
|
-
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
|
|
6877
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
6883
|
-
|
|
6884
|
-
|
|
6885
|
-
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
|
|
6897
|
-
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
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
|
-
|
|
6945
|
+
const domDisplay = this.windowApi.window.getComputedStyle(domItem);
|
|
6935
6946
|
if (domDisplay.display === "none") {
|
|
6936
6947
|
result = false;
|
|
6937
6948
|
}
|
|
6938
6949
|
else {
|
|
6939
|
-
|
|
6950
|
+
const domClientRect = domItem.getBoundingClientRect();
|
|
6940
6951
|
if (inView) {
|
|
6941
|
-
|
|
6942
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
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
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
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
|
-
|
|
7083
|
-
|
|
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
|
-
|
|
7136
|
+
const windowMutationObserver = this.windowApi.window.MutationObserver ||
|
|
7126
7137
|
this.windowApi.window.webkitMutationObserver ||
|
|
7127
7138
|
this.windowApi.window.MozMutationObserver;
|
|
7128
7139
|
// 观察者对象
|
|
7129
|
-
|
|
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((
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7358
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
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
|
-
|
|
7438
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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((
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7701
|
+
const UtilsContext = this;
|
|
7689
7702
|
function initMouseEvent(eventName, offSetX, offSetY) {
|
|
7690
|
-
|
|
7691
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
7728
|
-
if (
|
|
7729
|
-
return
|
|
7740
|
+
exitFullScreen($el = this.windowApi.document.documentElement) {
|
|
7741
|
+
if ($el.exitFullscreen) {
|
|
7742
|
+
return $el.exitFullscreen();
|
|
7730
7743
|
}
|
|
7731
|
-
else if (
|
|
7732
|
-
return
|
|
7744
|
+
else if ($el.msExitFullscreen) {
|
|
7745
|
+
return $el.msExitFullscreen();
|
|
7733
7746
|
}
|
|
7734
|
-
else if (
|
|
7735
|
-
return
|
|
7747
|
+
else if ($el.mozCancelFullScreen) {
|
|
7748
|
+
return $el.mozCancelFullScreen();
|
|
7736
7749
|
}
|
|
7737
|
-
else if (
|
|
7738
|
-
return
|
|
7750
|
+
else if ($el.webkitCancelFullScreen) {
|
|
7751
|
+
return $el.webkitCancelFullScreen();
|
|
7739
7752
|
}
|
|
7740
7753
|
else {
|
|
7741
|
-
return new Promise((
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
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
|
-
|
|
7795
|
-
|
|
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
|
-
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 +=
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
7994
|
+
const __timeout__ = typeof timeout === "number" ? timeout : 0;
|
|
7983
7995
|
return new Promise((resolve) => {
|
|
7984
|
-
|
|
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(
|
|
7992
|
-
|
|
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
|
-
|
|
8028
|
+
const UtilsContext = this;
|
|
8017
8029
|
// 选择器
|
|
8018
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8056
|
+
const secondParam = args[1];
|
|
8045
8057
|
// 第三个参数,timeout
|
|
8046
|
-
|
|
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
|
-
|
|
8077
|
+
const result = [];
|
|
8066
8078
|
for (let index = 0; index < selector.length; index++) {
|
|
8067
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8114
|
+
const UtilsContext = this;
|
|
8103
8115
|
// 选择器
|
|
8104
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8142
|
+
const secondParam = args[1];
|
|
8131
8143
|
// 第三个参数,timeout
|
|
8132
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8169
|
+
const UtilsContext = this;
|
|
8158
8170
|
// 选择器数组
|
|
8159
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8197
|
+
const secondParam = args[1];
|
|
8186
8198
|
// 第三个参数,timeout
|
|
8187
|
-
|
|
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
|
-
|
|
8218
|
+
const result = [];
|
|
8207
8219
|
for (let index = 0; index < selector.length; index++) {
|
|
8208
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8255
|
+
const UtilsContext = this;
|
|
8244
8256
|
// 选择器数组
|
|
8245
|
-
|
|
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
|
-
|
|
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
|
-
|
|
8283
|
+
const secondParam = args[1];
|
|
8272
8284
|
// 第三个参数,timeout
|
|
8273
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
8470
|
+
// @ts-expect-error 空返回
|
|
8458
8471
|
return;
|
|
8459
8472
|
}
|
|
8460
|
-
|
|
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((
|
|
8665
|
+
.then(() => {
|
|
8647
8666
|
readClipboardText();
|
|
8648
8667
|
})
|
|
8649
|
-
.catch((
|
|
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
|
-
|
|
8705
|
+
const utils = exports("default", new Utils());
|
|
8687
8706
|
|
|
8688
8707
|
})
|
|
8689
8708
|
};
|