@sswroom/sswr 1.6.7 → 1.6.9
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/Changelog +12 -0
- package/kml.d.ts +1 -0
- package/leaflet.js +3 -3
- package/package.json +1 -1
- package/text.d.ts +2 -1
- package/text.js +19 -0
- package/web.d.ts +87 -0
- package/web.js +676 -0
package/Changelog
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
1.6.9
|
|
2
|
+
-Enhance web.getBrowserInfo
|
|
3
|
+
-web.parseUserAgent support FxiOS (Firefox in iOS)
|
|
4
|
+
-leaflet.toKMLFeature() change to empty name
|
|
5
|
+
|
|
6
|
+
1.6.8
|
|
7
|
+
-Added text.replaceAll
|
|
8
|
+
-Added web.OSType
|
|
9
|
+
-Added web.BrowserType
|
|
10
|
+
-Added web.getBrowserInfo
|
|
11
|
+
-Added web.parseUserAgent
|
|
12
|
+
|
|
1
13
|
1.6.7
|
|
2
14
|
-Fixed text.isEmailAddress
|
|
3
15
|
|
package/kml.d.ts
CHANGED
package/leaflet.js
CHANGED
|
@@ -406,7 +406,7 @@ export function toKMLFeature(layer, doc)
|
|
|
406
406
|
if (layer instanceof L.FeatureGroup)
|
|
407
407
|
{
|
|
408
408
|
let featureGroup = new kml.Folder();
|
|
409
|
-
featureGroup.setName("
|
|
409
|
+
featureGroup.setName("");
|
|
410
410
|
let i;
|
|
411
411
|
for (i in layer._layers)
|
|
412
412
|
{
|
|
@@ -419,7 +419,7 @@ export function toKMLFeature(layer, doc)
|
|
|
419
419
|
else if (layer instanceof L.Marker)
|
|
420
420
|
{
|
|
421
421
|
feature = new kml.Placemark(toPoint(layer));
|
|
422
|
-
feature.setName("
|
|
422
|
+
feature.setName("");
|
|
423
423
|
// console.log("Marker found", layer);
|
|
424
424
|
if (layer._popup && layer._popup._content)
|
|
425
425
|
{
|
|
@@ -460,7 +460,7 @@ export function toKMLFeature(layer, doc)
|
|
|
460
460
|
else if (layer instanceof L.Polyline)
|
|
461
461
|
{
|
|
462
462
|
feature = new kml.Placemark(toLineString(layer));
|
|
463
|
-
feature.setName("
|
|
463
|
+
feature.setName("");
|
|
464
464
|
if (layer.options.color || layer.options.weight)
|
|
465
465
|
{
|
|
466
466
|
let lineStyle = new kml.LineStyle();
|
package/package.json
CHANGED
package/text.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export function arrayToNumbers(arr: string[]): number[];
|
|
|
24
24
|
export function toHex8(v: number): string;
|
|
25
25
|
export function toHex16(v: number): string;
|
|
26
26
|
export function toHex32(v: number): string;
|
|
27
|
-
export function u8Arr2Hex(buff: Uint8Array, byteSep
|
|
27
|
+
export function u8Arr2Hex(buff: Uint8Array, byteSep?: string | null, rowSep?: string | null): string;
|
|
28
28
|
export function splitLines(txt: string): string[];
|
|
29
29
|
export function isEmailAddress(s: string): boolean;
|
|
30
30
|
export function toUTF32Length(s: string): number;
|
|
@@ -33,6 +33,7 @@ export function charIsAlphaNumeric(s: string, index: number): boolean;
|
|
|
33
33
|
export function charIsDigit(s: string, index: number): boolean;
|
|
34
34
|
export function charIsUpperCase(s: string, index: number): boolean;
|
|
35
35
|
export function charIsLowerCase(s: string, index: number): boolean;
|
|
36
|
+
export function replaceAll(s: string, replaceFrom: string, replaceTo: string): string;
|
|
36
37
|
export function getEncList(): TextBinEnc[];
|
|
37
38
|
|
|
38
39
|
export class TextBinEnc
|
package/text.js
CHANGED
|
@@ -538,6 +538,25 @@ export function charIsLowerCase(s, index)
|
|
|
538
538
|
return false;
|
|
539
539
|
}
|
|
540
540
|
|
|
541
|
+
/**
|
|
542
|
+
* @param {string} s
|
|
543
|
+
* @param {string} replaceFrom
|
|
544
|
+
* @param {string} replaceTo
|
|
545
|
+
*/
|
|
546
|
+
export function replaceAll(s, replaceFrom, replaceTo)
|
|
547
|
+
{
|
|
548
|
+
let i = 0;
|
|
549
|
+
let j;
|
|
550
|
+
while (true)
|
|
551
|
+
{
|
|
552
|
+
j = s.indexOf(replaceFrom, i);
|
|
553
|
+
if (j < 0)
|
|
554
|
+
return s;
|
|
555
|
+
s = s.substring(0, j) + replaceTo + s.substring(j + replaceFrom.length);
|
|
556
|
+
i = j + replaceTo.length;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
541
560
|
export function getEncList()
|
|
542
561
|
{
|
|
543
562
|
let ret = [];
|
package/web.d.ts
CHANGED
|
@@ -12,6 +12,91 @@ declare class ImageInfo
|
|
|
12
12
|
height: number;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
export enum OSType
|
|
16
|
+
{
|
|
17
|
+
Unknown,
|
|
18
|
+
WindowsNT,
|
|
19
|
+
WindowsCE,
|
|
20
|
+
WindowsSvr,
|
|
21
|
+
Linux_X86_64,
|
|
22
|
+
Android,
|
|
23
|
+
iPad,
|
|
24
|
+
iPhone,
|
|
25
|
+
Darwin,
|
|
26
|
+
MacOS,
|
|
27
|
+
WindowsNT64,
|
|
28
|
+
ChromeOS,
|
|
29
|
+
Linux_i686,
|
|
30
|
+
Netcast
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export enum BrowserType
|
|
34
|
+
{
|
|
35
|
+
Unknown,
|
|
36
|
+
IE,
|
|
37
|
+
Firefox,
|
|
38
|
+
Chrome,
|
|
39
|
+
Safari,
|
|
40
|
+
UCBrowser,
|
|
41
|
+
CFNetwork,
|
|
42
|
+
SogouWeb,
|
|
43
|
+
Baidu,
|
|
44
|
+
Semrush,
|
|
45
|
+
Dalvik,
|
|
46
|
+
Indy,
|
|
47
|
+
GoogleBots,
|
|
48
|
+
AndroidWV,
|
|
49
|
+
Samsung,
|
|
50
|
+
WestWind,
|
|
51
|
+
Yandex,
|
|
52
|
+
Bing,
|
|
53
|
+
Masscan,
|
|
54
|
+
PyRequests,
|
|
55
|
+
Zgrab,
|
|
56
|
+
Edge,
|
|
57
|
+
PyURLLib,
|
|
58
|
+
GoogleBotD,
|
|
59
|
+
DotNet,
|
|
60
|
+
WinDiag,
|
|
61
|
+
SSWR,
|
|
62
|
+
SmartTV,
|
|
63
|
+
BlexBot,
|
|
64
|
+
SogouPic,
|
|
65
|
+
Nutch,
|
|
66
|
+
Yisou,
|
|
67
|
+
Wget,
|
|
68
|
+
Scrapy,
|
|
69
|
+
GoHTTP,
|
|
70
|
+
WinHTTP,
|
|
71
|
+
NLPProject,
|
|
72
|
+
ApacheHTTP,
|
|
73
|
+
BannerDet,
|
|
74
|
+
NetcraftWeb,
|
|
75
|
+
NetcraftAG,
|
|
76
|
+
AhrefsBot,
|
|
77
|
+
Mj12Bot,
|
|
78
|
+
NetSysRes,
|
|
79
|
+
Whatsapp,
|
|
80
|
+
Curl,
|
|
81
|
+
GSA,
|
|
82
|
+
Facebook,
|
|
83
|
+
Netseen,
|
|
84
|
+
MSNBot,
|
|
85
|
+
LibwwwPerl,
|
|
86
|
+
HuaweiBrowser,
|
|
87
|
+
Opera,
|
|
88
|
+
MiBrowser
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare class BrowserInfo
|
|
92
|
+
{
|
|
93
|
+
os: OSType;
|
|
94
|
+
osVer?: string;
|
|
95
|
+
browser: BrowserType;
|
|
96
|
+
browserVer?: string;
|
|
97
|
+
devName?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
15
100
|
export function getRequestURLBase(): string;
|
|
16
101
|
export function getParameterByName(name: string): string | null;
|
|
17
102
|
export function loadJSON(url: string, onResultFunc: Function): void;
|
|
@@ -28,6 +113,8 @@ export function getCacheSize(name: string): Promise<number>;
|
|
|
28
113
|
export function getInputOrSelectElement(id: string): HTMLInputElement|HTMLSelectElement;
|
|
29
114
|
export function getInputElement(id: string): HTMLInputElement;
|
|
30
115
|
export function getSelectElement(id: string): HTMLSelectElement;
|
|
116
|
+
export function getBrowserInfo(): Promise<BrowserInfo>;
|
|
117
|
+
export function parseUserAgent(userAgent: string): BrowserInfo;
|
|
31
118
|
|
|
32
119
|
declare class DialogButton
|
|
33
120
|
{
|
package/web.js
CHANGED
|
@@ -1,6 +1,80 @@
|
|
|
1
1
|
import * as data from "./data.js";
|
|
2
2
|
import * as text from "./text.js";
|
|
3
3
|
|
|
4
|
+
export const OSType = {
|
|
5
|
+
Unknown: "Unknown",
|
|
6
|
+
WindowsNT: "WindowsNT",
|
|
7
|
+
WindowsCE: "WindowsCE",
|
|
8
|
+
WindowsSvr: "WindowsSvr",
|
|
9
|
+
Linux_X86_64: "Linux_X86_64",
|
|
10
|
+
Android: "Android",
|
|
11
|
+
iPad: "iPad",
|
|
12
|
+
iPhone: "iPhone",
|
|
13
|
+
Darwin: "Darwin",
|
|
14
|
+
MacOS: "MacOS",
|
|
15
|
+
WindowsNT64: "WindowsNT64",
|
|
16
|
+
ChromeOS: "ChromeOS",
|
|
17
|
+
Linux_i686: "Linux_i686",
|
|
18
|
+
Netcast: "Netcast"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const BrowserType = {
|
|
22
|
+
Unknown: "Unknown",
|
|
23
|
+
IE: "IE",
|
|
24
|
+
Firefox: "Firefox",
|
|
25
|
+
Chrome: "Chrome",
|
|
26
|
+
Safari: "Safari",
|
|
27
|
+
UCBrowser: "UCBrowser",
|
|
28
|
+
CFNetwork: "CFNetwork",
|
|
29
|
+
SogouWeb: "SogouWeb",
|
|
30
|
+
Baidu: "Baidu",
|
|
31
|
+
Semrush: "Semrush",
|
|
32
|
+
Dalvik: "Dalvik",
|
|
33
|
+
Indy: "Indy",
|
|
34
|
+
GoogleBots: "GoogleBots",
|
|
35
|
+
AndroidWV: "AndroidWV",
|
|
36
|
+
Samsung: "Samsung",
|
|
37
|
+
WestWind: "WestWind",
|
|
38
|
+
Yandex: "Yandex",
|
|
39
|
+
Bing: "Bing",
|
|
40
|
+
Masscan: "Masscan",
|
|
41
|
+
PyRequests: "PyRequests",
|
|
42
|
+
Zgrab: "Zgrab",
|
|
43
|
+
Edge: "Edge",
|
|
44
|
+
PyURLLib: "PyURLLib",
|
|
45
|
+
GoogleBotD: "GoogleBotD",
|
|
46
|
+
DotNet: "DotNet",
|
|
47
|
+
WinDiag: "WinDiag",
|
|
48
|
+
SSWR: "SSWR",
|
|
49
|
+
SmartTV: "SmartTV",
|
|
50
|
+
BlexBot: "BlexBot",
|
|
51
|
+
SogouPic: "SogouPic",
|
|
52
|
+
Nutch: "Nutch",
|
|
53
|
+
Yisou: "Yisou",
|
|
54
|
+
Wget: "Wget",
|
|
55
|
+
Scrapy: "Scrapy",
|
|
56
|
+
GoHTTP: "GoHTTP",
|
|
57
|
+
WinHTTP: "WinHTTP",
|
|
58
|
+
NLPProject: "NLPProject",
|
|
59
|
+
ApacheHTTP: "ApacheHTTP",
|
|
60
|
+
BannerDet: "BannerDet",
|
|
61
|
+
NetcraftWeb: "NetcraftWeb",
|
|
62
|
+
NetcraftAG: "NetcraftAG",
|
|
63
|
+
AhrefsBot: "AhrefsBot",
|
|
64
|
+
Mj12Bot: "Mj12Bot",
|
|
65
|
+
NetSysRes: "NetSysRes",
|
|
66
|
+
Whatsapp: "Whatsapp",
|
|
67
|
+
Curl: "Curl",
|
|
68
|
+
GSA: "GSA",
|
|
69
|
+
Facebook: "Facebook",
|
|
70
|
+
Netseen: "Netseen",
|
|
71
|
+
MSNBot: "MSNBot",
|
|
72
|
+
LibwwwPerl: "LibwwwPerl",
|
|
73
|
+
HuaweiBrowser: "HuaweiBrowser",
|
|
74
|
+
Opera: "Opera",
|
|
75
|
+
MiBrowser: "MiBrowser"
|
|
76
|
+
}
|
|
77
|
+
|
|
4
78
|
export function getRequestURLBase()
|
|
5
79
|
{
|
|
6
80
|
let url = document.location.href;
|
|
@@ -892,6 +966,608 @@ export function getSelectElement(id)
|
|
|
892
966
|
throw new Error("Element with id \""+id+"\" is not a select");
|
|
893
967
|
}
|
|
894
968
|
|
|
969
|
+
/**
|
|
970
|
+
* @returns {Promise<{os: String,osVer?:string,browser: String,browserVer?: string,devName?:string}>}
|
|
971
|
+
*/
|
|
972
|
+
export async function getBrowserInfo()
|
|
973
|
+
{
|
|
974
|
+
let ret = parseUserAgent(navigator.userAgent);
|
|
975
|
+
// @ts-ignore
|
|
976
|
+
if (navigator.userAgentData)
|
|
977
|
+
{
|
|
978
|
+
// @ts-ignore
|
|
979
|
+
let data = await navigator.userAgentData.getHighEntropyValues(['fullVersionList', 'platformVersion', 'model']);
|
|
980
|
+
if (data.platformVersion)
|
|
981
|
+
ret.osVer = data.platformVersion;
|
|
982
|
+
if (data.model)
|
|
983
|
+
ret.devName = data.model;
|
|
984
|
+
if (data.fullVersionList)
|
|
985
|
+
{
|
|
986
|
+
console.log(data.fullVersionList);
|
|
987
|
+
let i = 0;
|
|
988
|
+
while (i < data.fullVersionList.length)
|
|
989
|
+
{
|
|
990
|
+
if (ret.browser == BrowserType.Edge)
|
|
991
|
+
{
|
|
992
|
+
if (data.fullVersionList[i].brand == "Microsoft Edge")
|
|
993
|
+
ret.browserVer = data.fullVersionList[i].version;
|
|
994
|
+
}
|
|
995
|
+
else if (ret.browser == BrowserType.Chrome)
|
|
996
|
+
{
|
|
997
|
+
if (data.fullVersionList[i].brand == "Chrome" || data.fullVersionList[i].brand == "Chromium")
|
|
998
|
+
ret.browserVer = data.fullVersionList[i].version;
|
|
999
|
+
}
|
|
1000
|
+
else if (ret.browser == BrowserType.Opera)
|
|
1001
|
+
{
|
|
1002
|
+
if (data.fullVersionList[i].brand == "Opera")
|
|
1003
|
+
ret.browserVer = data.fullVersionList[i].version;
|
|
1004
|
+
}
|
|
1005
|
+
i++;
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
return ret;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
/**
|
|
1013
|
+
* @param {string} userAgent
|
|
1014
|
+
* @returns {{os: String;osVer?: string;browser: String;browserVer?: string;devName?: string;}}
|
|
1015
|
+
*/
|
|
1016
|
+
export function parseUserAgent(userAgent)
|
|
1017
|
+
{
|
|
1018
|
+
let ent = {os: OSType.Unknown, browser: BrowserType.Unknown};
|
|
1019
|
+
let i;
|
|
1020
|
+
if (userAgent == "Microsoft Windows Network Diagnostics")
|
|
1021
|
+
{
|
|
1022
|
+
ent.browser = BrowserType.WinDiag;
|
|
1023
|
+
return ent;
|
|
1024
|
+
}
|
|
1025
|
+
else if (userAgent.startsWith("West Wind Internet Protocols "))
|
|
1026
|
+
{
|
|
1027
|
+
ent.browser = BrowserType.WestWind;
|
|
1028
|
+
ent.browserVer = userAgent.substring(29);
|
|
1029
|
+
return ent;
|
|
1030
|
+
}
|
|
1031
|
+
else if (userAgent.startsWith("Sogou web spider/"))
|
|
1032
|
+
{
|
|
1033
|
+
ent.browser = BrowserType.SogouWeb;
|
|
1034
|
+
i = userAgent.indexOf('(');
|
|
1035
|
+
if (i >= 0)
|
|
1036
|
+
{
|
|
1037
|
+
ent.browserVer = userAgent.substring(17, i);
|
|
1038
|
+
}
|
|
1039
|
+
else
|
|
1040
|
+
{
|
|
1041
|
+
ent.browserVer = userAgent.substring(17);
|
|
1042
|
+
}
|
|
1043
|
+
return ent;
|
|
1044
|
+
}
|
|
1045
|
+
else if (userAgent.startsWith("Sogou Pic Spider/"))
|
|
1046
|
+
{
|
|
1047
|
+
ent.browser = BrowserType.SogouPic;
|
|
1048
|
+
i = userAgent.indexOf('(');
|
|
1049
|
+
if (i >= 0)
|
|
1050
|
+
{
|
|
1051
|
+
ent.browserVer = ent.userAgent.substring(17, i);
|
|
1052
|
+
}
|
|
1053
|
+
else
|
|
1054
|
+
{
|
|
1055
|
+
ent.browserVer = ent.userAgent.substring(17);
|
|
1056
|
+
}
|
|
1057
|
+
return ent;
|
|
1058
|
+
}
|
|
1059
|
+
else if (userAgent == "Nutch Master Test/Dolphin-0.1-Beta")
|
|
1060
|
+
{
|
|
1061
|
+
ent.browser = BrowserType.Nutch;
|
|
1062
|
+
ent.browserVer = "0.1";
|
|
1063
|
+
return ent;
|
|
1064
|
+
}
|
|
1065
|
+
else if (userAgent == "YisouSpider")
|
|
1066
|
+
{
|
|
1067
|
+
ent.browser = BrowserType.Yisou;
|
|
1068
|
+
return ent;
|
|
1069
|
+
}
|
|
1070
|
+
else if (userAgent.startsWith("HTTP Banner Detection"))
|
|
1071
|
+
{
|
|
1072
|
+
ent.browser = BrowserType.BannerDet;
|
|
1073
|
+
return ent;
|
|
1074
|
+
}
|
|
1075
|
+
else if (userAgent.startsWith("NetSystemsResearch "))
|
|
1076
|
+
{
|
|
1077
|
+
ent.browser = BrowserType.NetSysRes;
|
|
1078
|
+
return ent;
|
|
1079
|
+
}
|
|
1080
|
+
if (userAgent.startsWith("\"") && userAgent.endsWith("\""))
|
|
1081
|
+
{
|
|
1082
|
+
userAgent.substring(1, userAgent.length - 1);
|
|
1083
|
+
}
|
|
1084
|
+
userAgent = userAgent.trim();
|
|
1085
|
+
if (userAgent == "nlpproject.info research")
|
|
1086
|
+
{
|
|
1087
|
+
ent.browser = BrowserType.NLPProject;
|
|
1088
|
+
return ent;
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
let strs = [];
|
|
1092
|
+
let bst = false;
|
|
1093
|
+
let j;
|
|
1094
|
+
let c;
|
|
1095
|
+
j = 0;
|
|
1096
|
+
i = 0;
|
|
1097
|
+
while (i < userAgent.length)
|
|
1098
|
+
{
|
|
1099
|
+
c = userAgent.charAt(i);
|
|
1100
|
+
if (c == ' ' && !bst)
|
|
1101
|
+
{
|
|
1102
|
+
strs.push(userAgent.substring(j, i));
|
|
1103
|
+
j = i + 1;
|
|
1104
|
+
}
|
|
1105
|
+
else if (c == ')' && bst)
|
|
1106
|
+
{
|
|
1107
|
+
bst = false;
|
|
1108
|
+
}
|
|
1109
|
+
else if (c == '(')
|
|
1110
|
+
{
|
|
1111
|
+
bst = true;
|
|
1112
|
+
}
|
|
1113
|
+
i++;
|
|
1114
|
+
}
|
|
1115
|
+
if (j < userAgent.length)
|
|
1116
|
+
{
|
|
1117
|
+
strs.push(userAgent.substring(j));
|
|
1118
|
+
}
|
|
1119
|
+
i = 0;
|
|
1120
|
+
while (i < strs.length)
|
|
1121
|
+
{
|
|
1122
|
+
if (strs[i].charAt(0) == '(')
|
|
1123
|
+
{
|
|
1124
|
+
let charCnt = strs[i].length;
|
|
1125
|
+
if (strs[i].endsWith(')'))
|
|
1126
|
+
{
|
|
1127
|
+
strs[i] = strs[i].substring(0, strs[i].length - 1);
|
|
1128
|
+
}
|
|
1129
|
+
let strs2 = strs[i].substring(1).split(";");
|
|
1130
|
+
j = 0;
|
|
1131
|
+
let lastIsAndroid = false;
|
|
1132
|
+
while (j < strs2.length)
|
|
1133
|
+
{
|
|
1134
|
+
strs2[j] = strs2[j].trim();
|
|
1135
|
+
if (strs2[j].startsWith("MSIE "))
|
|
1136
|
+
{
|
|
1137
|
+
ent.browser = BrowserType.IE;
|
|
1138
|
+
ent.browserVer = strs2[j].substring(5);
|
|
1139
|
+
}
|
|
1140
|
+
else if (strs2[j].startsWith("Windows NT "))
|
|
1141
|
+
{
|
|
1142
|
+
ent.os = OSType.WindowsNT;
|
|
1143
|
+
ent.osVer = strs2[j].substring(11);
|
|
1144
|
+
}
|
|
1145
|
+
else if (strs2[j] == "WOW64")
|
|
1146
|
+
{
|
|
1147
|
+
if (ent.os == OSType.WindowsNT)
|
|
1148
|
+
{
|
|
1149
|
+
ent.os = OSType.WindowsNT64;
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
else if (strs2[j] == "Win64")
|
|
1153
|
+
{
|
|
1154
|
+
if (ent.os == OSType.WindowsNT)
|
|
1155
|
+
{
|
|
1156
|
+
ent.os = OSType.WindowsNT64;
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
else if (strs2[j] == "iPad")
|
|
1160
|
+
{
|
|
1161
|
+
ent.os = OSType.iPad;
|
|
1162
|
+
}
|
|
1163
|
+
else if (ent.os == OSType.Unknown && strs2[j] == "Linux i686")
|
|
1164
|
+
{
|
|
1165
|
+
ent.os = OSType.Linux_i686;
|
|
1166
|
+
}
|
|
1167
|
+
else if (ent.os == OSType.Unknown && strs2[j] == "Linux x86_64")
|
|
1168
|
+
{
|
|
1169
|
+
ent.os = OSType.Linux_X86_64;
|
|
1170
|
+
}
|
|
1171
|
+
else if (strs2[j] == "Android")
|
|
1172
|
+
{
|
|
1173
|
+
ent.os = OSType.Android;
|
|
1174
|
+
}
|
|
1175
|
+
else if (strs2[j] == "wv")
|
|
1176
|
+
{
|
|
1177
|
+
if (ent.os == OSType.Android)
|
|
1178
|
+
{
|
|
1179
|
+
ent.browser = BrowserType.AndroidWV;
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
else if (strs2[j].startsWith("Android "))
|
|
1183
|
+
{
|
|
1184
|
+
ent.os = OSType.Android;
|
|
1185
|
+
ent.osVer = strs2[j].substring(8);
|
|
1186
|
+
lastIsAndroid = true;
|
|
1187
|
+
}
|
|
1188
|
+
else if (strs2[j].startsWith("CrOS "))
|
|
1189
|
+
{
|
|
1190
|
+
ent.os = OSType.ChromeOS;
|
|
1191
|
+
let k = strs2[j].indexOf(' ', 5);
|
|
1192
|
+
ent.osVer = strs2[j].substring(k + 1);
|
|
1193
|
+
}
|
|
1194
|
+
else if (ent.os == OSType.iPad && strs2[j] == "U")
|
|
1195
|
+
{
|
|
1196
|
+
ent.os = OSType.Android;
|
|
1197
|
+
}
|
|
1198
|
+
else if (strs2[j] == "iPhone")
|
|
1199
|
+
{
|
|
1200
|
+
ent.os = OSType.iPhone;
|
|
1201
|
+
}
|
|
1202
|
+
else if (strs2[j] == "Macintosh")
|
|
1203
|
+
{
|
|
1204
|
+
ent.os = OSType.MacOS;
|
|
1205
|
+
}
|
|
1206
|
+
else if ((ent.os == OSType.iPad || ent.os == OSType.iPhone) && strs2[j].startsWith("CPU OS "))
|
|
1207
|
+
{
|
|
1208
|
+
let k = strs2[j].indexOf(' ', 7);
|
|
1209
|
+
if (k >= 0)
|
|
1210
|
+
{
|
|
1211
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1212
|
+
}
|
|
1213
|
+
strs2[j] = text.replaceAll(strs2[j], '_', '.');
|
|
1214
|
+
ent.osVer = strs2[j].substring(7);
|
|
1215
|
+
}
|
|
1216
|
+
else if (ent.os == OSType.iPhone && strs2[j].startsWith("CPU iPhone OS "))
|
|
1217
|
+
{
|
|
1218
|
+
let k = strs2[j].indexOf(' ', 14);
|
|
1219
|
+
if (k >= 0)
|
|
1220
|
+
{
|
|
1221
|
+
strs2[j].substring(0, k);
|
|
1222
|
+
}
|
|
1223
|
+
k = strs2[j].indexOf(" like Mac OS");
|
|
1224
|
+
if (k >= 0)
|
|
1225
|
+
{
|
|
1226
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1227
|
+
}
|
|
1228
|
+
strs2[j] = text.replaceAll(strs2[j], '_', '.');
|
|
1229
|
+
ent.osVer = strs2[j].substring(14);
|
|
1230
|
+
}
|
|
1231
|
+
else if (ent.os == OSType.MacOS && strs2[j].startsWith("Intel Mac OS X "))
|
|
1232
|
+
{
|
|
1233
|
+
let k = strs2[j].indexOf(' ', 15);
|
|
1234
|
+
if (k >= 0)
|
|
1235
|
+
{
|
|
1236
|
+
strs2[j].substring(0, k);
|
|
1237
|
+
}
|
|
1238
|
+
strs2[j] = text.replaceAll(strs2[j], '_', '.');
|
|
1239
|
+
ent.osVer = strs2[j].substring(15);
|
|
1240
|
+
}
|
|
1241
|
+
else if (strs2[j] == "Trident/7.0")
|
|
1242
|
+
{
|
|
1243
|
+
ent.browser = BrowserType.IE;
|
|
1244
|
+
ent.browserVer = "11.0";
|
|
1245
|
+
}
|
|
1246
|
+
else if (strs2[j] == "JuziBrowser") //JuziBrowser
|
|
1247
|
+
{
|
|
1248
|
+
}
|
|
1249
|
+
else if (strs2[j] == "SE 2.X MetaSr 1.0") //Sugou Browser
|
|
1250
|
+
{
|
|
1251
|
+
}
|
|
1252
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j] == "Indy Library")
|
|
1253
|
+
{
|
|
1254
|
+
ent.browser = BrowserType.Indy;
|
|
1255
|
+
}
|
|
1256
|
+
else if (strs2[j].startsWith("Googlebot/"))
|
|
1257
|
+
{
|
|
1258
|
+
if (ent.os == OSType.Android)
|
|
1259
|
+
{
|
|
1260
|
+
ent.browser = BrowserType.GoogleBots;
|
|
1261
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1262
|
+
}
|
|
1263
|
+
else if (ent.os == OSType.Unknown)
|
|
1264
|
+
{
|
|
1265
|
+
ent.browser = BrowserType.GoogleBotD;
|
|
1266
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("Baiduspider-render/"))
|
|
1270
|
+
{
|
|
1271
|
+
ent.browser = BrowserType.Baidu;
|
|
1272
|
+
ent.browserVer = strs2[j].substring(19);
|
|
1273
|
+
}
|
|
1274
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("SemrushBot/"))
|
|
1275
|
+
{
|
|
1276
|
+
ent.browser = BrowserType.Semrush;
|
|
1277
|
+
ent.browserVer = strs2[j].substring(11);
|
|
1278
|
+
}
|
|
1279
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("YandexBot/"))
|
|
1280
|
+
{
|
|
1281
|
+
ent.browser = BrowserType.Yandex;
|
|
1282
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1283
|
+
}
|
|
1284
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("BLEXBot/"))
|
|
1285
|
+
{
|
|
1286
|
+
ent.browser = BrowserType.BlexBot;
|
|
1287
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1288
|
+
}
|
|
1289
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("bingbot/"))
|
|
1290
|
+
{
|
|
1291
|
+
ent.browser = BrowserType.Bing;
|
|
1292
|
+
ent.browserVer = strs2[j].substring(8);
|
|
1293
|
+
}
|
|
1294
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.IE) && strs2[j].startsWith("MS Web Services Client Protocol "))
|
|
1295
|
+
{
|
|
1296
|
+
ent.browser = BrowserType.DotNet;
|
|
1297
|
+
ent.browserVer = strs2[j].substring(32);
|
|
1298
|
+
}
|
|
1299
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("WinHttp.WinHttpRequest."))
|
|
1300
|
+
{
|
|
1301
|
+
ent.browser = BrowserType.WinHTTP;
|
|
1302
|
+
ent.browserVer = strs2[j].substring(23);
|
|
1303
|
+
}
|
|
1304
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("NetcraftSurveyAgent/"))
|
|
1305
|
+
{
|
|
1306
|
+
ent.browser = BrowserType.NetcraftAG;
|
|
1307
|
+
ent.browserVer = strs2[j].substring(20);
|
|
1308
|
+
}
|
|
1309
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("AhrefsBot/"))
|
|
1310
|
+
{
|
|
1311
|
+
ent.browser = BrowserType.AhrefsBot;
|
|
1312
|
+
ent.browserVer = strs2[j].substring(10);
|
|
1313
|
+
}
|
|
1314
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j].startsWith("MJ12bot/"))
|
|
1315
|
+
{
|
|
1316
|
+
ent.browser = BrowserType.Mj12Bot;
|
|
1317
|
+
if (strs2[j].charAt(8) == 'v')
|
|
1318
|
+
{
|
|
1319
|
+
ent.browserVer = strs2[j].substring(9);
|
|
1320
|
+
}
|
|
1321
|
+
else
|
|
1322
|
+
{
|
|
1323
|
+
ent.browserVer = strs2[j].substring(8);
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
else if (ent.browser == BrowserType.Unknown && strs2[j] == "Netcraft Web Server Survey")
|
|
1327
|
+
{
|
|
1328
|
+
ent.browser = BrowserType.NetcraftWeb;
|
|
1329
|
+
}
|
|
1330
|
+
else if (strs2[j] == "Mobile")
|
|
1331
|
+
{
|
|
1332
|
+
}
|
|
1333
|
+
else if (strs2[j] == "rv:")
|
|
1334
|
+
{
|
|
1335
|
+
}
|
|
1336
|
+
else if (lastIsAndroid)
|
|
1337
|
+
{
|
|
1338
|
+
let k = strs2[j].indexOf(" Build/");
|
|
1339
|
+
if (k >= 0)
|
|
1340
|
+
{
|
|
1341
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
k = strs2[j].indexOf(" MIUI/");
|
|
1345
|
+
if (k >= 0)
|
|
1346
|
+
{
|
|
1347
|
+
strs2[j] = strs2[j].substring(0, k);
|
|
1348
|
+
}
|
|
1349
|
+
if (strs2[j].startsWith("SAMSUNG SM-"))
|
|
1350
|
+
{
|
|
1351
|
+
ent.devName = strs2[j].substring(8);
|
|
1352
|
+
}
|
|
1353
|
+
else if (strs2[j].startsWith("HUAWEI "))
|
|
1354
|
+
{
|
|
1355
|
+
ent.devName = strs2[j].substring(7);
|
|
1356
|
+
}
|
|
1357
|
+
else if (strs2[j] == "K")
|
|
1358
|
+
{
|
|
1359
|
+
}
|
|
1360
|
+
else
|
|
1361
|
+
{
|
|
1362
|
+
ent.devName = strs2[j];
|
|
1363
|
+
}
|
|
1364
|
+
lastIsAndroid = false;
|
|
1365
|
+
}
|
|
1366
|
+
j++;
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Firefox/"))
|
|
1370
|
+
{
|
|
1371
|
+
ent.browser = BrowserType.Firefox;
|
|
1372
|
+
ent.browserVer = strs[i].substring(8);
|
|
1373
|
+
}
|
|
1374
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("SamsungBrowser/"))
|
|
1375
|
+
{
|
|
1376
|
+
ent.browser = BrowserType.Samsung;
|
|
1377
|
+
ent.browserVer = strs[i].substring(15);
|
|
1378
|
+
}
|
|
1379
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("GSA/"))
|
|
1380
|
+
{
|
|
1381
|
+
ent.browser = BrowserType.GSA;
|
|
1382
|
+
ent.browserVer = strs[i].substring(4);
|
|
1383
|
+
}
|
|
1384
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("CriOS/"))
|
|
1385
|
+
{
|
|
1386
|
+
ent.browser = BrowserType.Chrome;
|
|
1387
|
+
ent.browserVer = strs[i].substring(6);
|
|
1388
|
+
}
|
|
1389
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari) && strs[i].startsWith("FxiOS/"))
|
|
1390
|
+
{
|
|
1391
|
+
ent.browser = BrowserType.Firefox;
|
|
1392
|
+
ent.browserVer = strs[i].substring(6);
|
|
1393
|
+
}
|
|
1394
|
+
else if (strs[i].startsWith("Chrome/"))
|
|
1395
|
+
{
|
|
1396
|
+
if (ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Safari)
|
|
1397
|
+
{
|
|
1398
|
+
ent.browser = BrowserType.Chrome;
|
|
1399
|
+
ent.browserVer = strs[i].substring(7);
|
|
1400
|
+
}
|
|
1401
|
+
else if (ent.browser == BrowserType.AndroidWV)
|
|
1402
|
+
{
|
|
1403
|
+
ent.browserVer = strs[i].substring(7);
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edge/"))
|
|
1407
|
+
{
|
|
1408
|
+
ent.browser = BrowserType.Edge;
|
|
1409
|
+
ent.browserVer = strs[i].substring(5);
|
|
1410
|
+
}
|
|
1411
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("Edg/"))
|
|
1412
|
+
{
|
|
1413
|
+
ent.browser = BrowserType.Edge;
|
|
1414
|
+
ent.browserVer = strs[i].substring(4);
|
|
1415
|
+
}
|
|
1416
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("EdgiOS/"))
|
|
1417
|
+
{
|
|
1418
|
+
ent.browser = BrowserType.Edge;
|
|
1419
|
+
ent.browserVer = strs[i].substring(7);
|
|
1420
|
+
}
|
|
1421
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("OPT/"))
|
|
1422
|
+
{
|
|
1423
|
+
ent.browser = BrowserType.Opera;
|
|
1424
|
+
ent.browserVer = strs[i].substring(4);
|
|
1425
|
+
}
|
|
1426
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("OPR/"))
|
|
1427
|
+
{
|
|
1428
|
+
ent.browser = BrowserType.Opera;
|
|
1429
|
+
ent.browserVer = strs[i].substring(4);
|
|
1430
|
+
}
|
|
1431
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("HuaweiBrowser/"))
|
|
1432
|
+
{
|
|
1433
|
+
ent.browser = BrowserType.HuaweiBrowser;
|
|
1434
|
+
ent.browserVer = strs[i].substring(14);
|
|
1435
|
+
}
|
|
1436
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("XiaoMi/MiuiBrowser/"))
|
|
1437
|
+
{
|
|
1438
|
+
ent.browser = BrowserType.MiBrowser;
|
|
1439
|
+
ent.browserVer = strs[i].substring(19);
|
|
1440
|
+
}
|
|
1441
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Safari/"))
|
|
1442
|
+
{
|
|
1443
|
+
ent.browser = BrowserType.Safari;
|
|
1444
|
+
ent.browserVer = strs[i].substring(7);
|
|
1445
|
+
}
|
|
1446
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("UCBrowser/"))
|
|
1447
|
+
{
|
|
1448
|
+
ent.browser = BrowserType.UCBrowser;
|
|
1449
|
+
ent.browserVer = strs[i].substring(10);
|
|
1450
|
+
}
|
|
1451
|
+
else if ((ent.browser == BrowserType.Unknown || ent.browser == BrowserType.Chrome) && strs[i].startsWith("baidu.sogo.uc.UCBrowser/"))
|
|
1452
|
+
{
|
|
1453
|
+
ent.browser = BrowserType.UCBrowser;
|
|
1454
|
+
ent.browserVer = strs[i].substring(24);
|
|
1455
|
+
}
|
|
1456
|
+
else if (strs[i].startsWith("UBrowser/"))
|
|
1457
|
+
{
|
|
1458
|
+
}
|
|
1459
|
+
else if (strs[i].startsWith("baiduboxapp/"))
|
|
1460
|
+
{
|
|
1461
|
+
}
|
|
1462
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Dalvik/"))
|
|
1463
|
+
{
|
|
1464
|
+
ent.browser = BrowserType.Dalvik;
|
|
1465
|
+
ent.browserVer = strs[i].substring(7);
|
|
1466
|
+
}
|
|
1467
|
+
else if (ent.os == OSType.Unknown && strs[i].startsWith("Darwin/"))
|
|
1468
|
+
{
|
|
1469
|
+
ent.os = OSType.Darwin;
|
|
1470
|
+
ent.osVer = strs[i].substring(7);
|
|
1471
|
+
}
|
|
1472
|
+
else if (ent.os == OSType.Unknown && strs[i].startsWith("SmartTV/"))
|
|
1473
|
+
{
|
|
1474
|
+
ent.os = OSType.Netcast;
|
|
1475
|
+
ent.osVer = strs[i].substring(8);
|
|
1476
|
+
}
|
|
1477
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("CFNetwork/"))
|
|
1478
|
+
{
|
|
1479
|
+
ent.browser = BrowserType.CFNetwork;
|
|
1480
|
+
ent.browserVer = strs[i].substring(10);
|
|
1481
|
+
}
|
|
1482
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Version/"))
|
|
1483
|
+
{
|
|
1484
|
+
ent.browser = BrowserType.Safari;
|
|
1485
|
+
ent.browserVer = strs[i].substring(8);
|
|
1486
|
+
}
|
|
1487
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("masscan/"))
|
|
1488
|
+
{
|
|
1489
|
+
ent.browser = BrowserType.Masscan;
|
|
1490
|
+
ent.browserVer = strs[i].substring(8);
|
|
1491
|
+
}
|
|
1492
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("zgrab/"))
|
|
1493
|
+
{
|
|
1494
|
+
ent.browser = BrowserType.Zgrab;
|
|
1495
|
+
ent.browserVer = strs[i].substring(6);
|
|
1496
|
+
}
|
|
1497
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("python-requests/"))
|
|
1498
|
+
{
|
|
1499
|
+
ent.browser = BrowserType.PyRequests;
|
|
1500
|
+
ent.browserVer = strs[i].substring(16);
|
|
1501
|
+
}
|
|
1502
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Python-urllib/"))
|
|
1503
|
+
{
|
|
1504
|
+
ent.browser = BrowserType.PyURLLib;
|
|
1505
|
+
ent.browserVer = strs[i].substring(14);
|
|
1506
|
+
}
|
|
1507
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Wget/"))
|
|
1508
|
+
{
|
|
1509
|
+
ent.browser = BrowserType.Wget;
|
|
1510
|
+
ent.browserVer = strs[i].substring(5);
|
|
1511
|
+
}
|
|
1512
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Scrapy/"))
|
|
1513
|
+
{
|
|
1514
|
+
ent.browser = BrowserType.Scrapy;
|
|
1515
|
+
ent.browserVer = strs[i].substring(7);
|
|
1516
|
+
}
|
|
1517
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Go-http-client/"))
|
|
1518
|
+
{
|
|
1519
|
+
ent.browser = BrowserType.GoHTTP;
|
|
1520
|
+
ent.browserVer = strs[i].substring(15);
|
|
1521
|
+
}
|
|
1522
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("Apache-HttpClient/"))
|
|
1523
|
+
{
|
|
1524
|
+
ent.browser = BrowserType.ApacheHTTP;
|
|
1525
|
+
ent.browserVer = strs[i].substring(18);
|
|
1526
|
+
}
|
|
1527
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("WhatsApp/"))
|
|
1528
|
+
{
|
|
1529
|
+
ent.browser = BrowserType.Whatsapp;
|
|
1530
|
+
ent.browserVer = strs[i].substring(9);
|
|
1531
|
+
}
|
|
1532
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("curl/"))
|
|
1533
|
+
{
|
|
1534
|
+
ent.browser = BrowserType.Curl;
|
|
1535
|
+
ent.browserVer = strs[i].substring(5);
|
|
1536
|
+
}
|
|
1537
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("sswr/"))
|
|
1538
|
+
{
|
|
1539
|
+
ent.browser = BrowserType.SSWR;
|
|
1540
|
+
ent.browserVer = strs[i].substring(5);
|
|
1541
|
+
}
|
|
1542
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("facebookexternalhit/"))
|
|
1543
|
+
{
|
|
1544
|
+
ent.browser = BrowserType.Facebook;
|
|
1545
|
+
ent.browserVer = strs[i].substring(20);
|
|
1546
|
+
}
|
|
1547
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("NetSeen/"))
|
|
1548
|
+
{
|
|
1549
|
+
ent.browser = BrowserType.Netseen;
|
|
1550
|
+
ent.browserVer = strs[i].substring(8);
|
|
1551
|
+
}
|
|
1552
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("msnbot/"))
|
|
1553
|
+
{
|
|
1554
|
+
ent.browser = BrowserType.MSNBot;
|
|
1555
|
+
ent.browserVer = strs[i].substring(7);
|
|
1556
|
+
}
|
|
1557
|
+
else if (ent.browser == BrowserType.Unknown && strs[i].startsWith("libwww-perl/"))
|
|
1558
|
+
{
|
|
1559
|
+
ent.browser = BrowserType.LibwwwPerl;
|
|
1560
|
+
ent.browserVer = strs[i].substring(12);
|
|
1561
|
+
}
|
|
1562
|
+
else if (strs[i] == "LBBROWSER")
|
|
1563
|
+
{
|
|
1564
|
+
}
|
|
1565
|
+
i++;
|
|
1566
|
+
}
|
|
1567
|
+
return ent;
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
|
|
895
1571
|
export class Dialog
|
|
896
1572
|
{
|
|
897
1573
|
/**
|