@svta/cml-xml 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/index.d.ts +87 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +254 -7
- package/dist/index.js.map +1 -1
- package/package.json +6 -27
- package/NOTICE +0 -35
- package/dist/XmlNode.d.ts +0 -15
- package/dist/XmlNode.d.ts.map +0 -1
- package/dist/XmlNode.js +0 -2
- package/dist/XmlNode.js.map +0 -1
- package/dist/XmlParseOptions.d.ts +0 -12
- package/dist/XmlParseOptions.d.ts.map +0 -1
- package/dist/XmlParseOptions.js +0 -2
- package/dist/XmlParseOptions.js.map +0 -1
- package/dist/getElementsByName.d.ts +0 -15
- package/dist/getElementsByName.d.ts.map +0 -1
- package/dist/getElementsByName.js +0 -24
- package/dist/getElementsByName.js.map +0 -1
- package/dist/parseXml.d.ts +0 -17
- package/dist/parseXml.d.ts.map +0 -1
- package/dist/parseXml.js +0 -236
- package/dist/parseXml.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# @svta/cml-xml
|
|
2
|
+
|
|
3
|
+
XML parsing utilities.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i @svta/cml-xml
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { parseXml } from "@svta/cml-xml/parseXml";
|
|
15
|
+
|
|
16
|
+
const obj = parseXml(
|
|
17
|
+
`<root>
|
|
18
|
+
<child>text</child>
|
|
19
|
+
<ns:tag>content</ns:tag>
|
|
20
|
+
</root>`
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
assert(obj.childNodes[0].nodeName === "root");
|
|
24
|
+
assert(obj.childNodes[0].childNodes[0].nodeName === "child");
|
|
25
|
+
assert(obj.childNodes[0].childNodes[0].childNodes[0].nodeValue === "text");
|
|
26
|
+
assert(obj.childNodes[0].childNodes[1].nodeName === "ns:tag");
|
|
27
|
+
assert(obj.childNodes[0].childNodes[1].prefix === "ns");
|
|
28
|
+
assert(obj.childNodes[0].childNodes[1].localName === "tag");
|
|
29
|
+
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,89 @@
|
|
|
1
|
+
//#region src/XmlNode.d.ts
|
|
1
2
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
* XML node
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* @beta
|
|
7
|
+
*/
|
|
8
|
+
type XmlNode = {
|
|
9
|
+
nodeName: string;
|
|
10
|
+
nodeValue: string | null;
|
|
11
|
+
attributes: Record<string, string>;
|
|
12
|
+
childNodes: XmlNode[];
|
|
13
|
+
prefix?: string | null;
|
|
14
|
+
localName?: string;
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/XmlParseOptions.d.ts
|
|
18
|
+
/**
|
|
19
|
+
* XML parsing options
|
|
20
|
+
*
|
|
21
|
+
*
|
|
22
|
+
* @beta
|
|
23
|
+
*/
|
|
24
|
+
type XmlParseOptions = {
|
|
25
|
+
pos?: number;
|
|
26
|
+
keepWhitespace?: boolean;
|
|
27
|
+
keepComments?: boolean;
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/decodeXml.d.ts
|
|
31
|
+
/**
|
|
32
|
+
* Parse XML into a JS object with no validation and some failure tolerance
|
|
33
|
+
*
|
|
34
|
+
* @param input - The input XML string
|
|
35
|
+
* @param options - Optional parsing options
|
|
36
|
+
* @returns The parsed XML
|
|
37
|
+
*
|
|
38
|
+
* @beta
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* {@includeCode ../test/decodeXml.test.ts#example}
|
|
42
|
+
*/
|
|
43
|
+
declare function decodeXml(input: string, options?: XmlParseOptions): XmlNode;
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/encodeXml.d.ts
|
|
46
|
+
/**
|
|
47
|
+
* Basic xml encoding utility. Encodes XML into a string.
|
|
48
|
+
*
|
|
49
|
+
* @param xml - The XML node to encode
|
|
50
|
+
* @returns The parsed XML
|
|
51
|
+
*
|
|
52
|
+
* @beta
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* {@includeCode ../test/decodeXml.test.ts#example}
|
|
56
|
+
*/
|
|
57
|
+
declare function encodeXml(xml: XmlNode): string;
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/getElementsByName.d.ts
|
|
60
|
+
/**
|
|
61
|
+
* Recursively finds all elements by name within an XML structure.
|
|
62
|
+
*
|
|
63
|
+
* @param node - The current XML node to search within.
|
|
64
|
+
* @param name - The name of the target nodes to find.
|
|
65
|
+
* @param found - An array to collect matching nodes.
|
|
66
|
+
* @returns An array of all matching XmlNodes.
|
|
67
|
+
*
|
|
68
|
+
*
|
|
69
|
+
* @beta
|
|
70
|
+
*
|
|
71
|
+
*/
|
|
72
|
+
declare function getElementsByName(node: XmlNode, name: string, found?: XmlNode[]): XmlNode[];
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/parseXml.d.ts
|
|
75
|
+
/**
|
|
76
|
+
* Parse XML into a JS object with no validation and some failure tolerance
|
|
77
|
+
*
|
|
78
|
+
* @param input - The input XML string
|
|
79
|
+
* @param options - Optional parsing options
|
|
80
|
+
* @returns The parsed XML
|
|
81
|
+
*
|
|
82
|
+
* @beta
|
|
83
|
+
*
|
|
84
|
+
* @deprecated Use {@link decodeXml} instead.
|
|
85
|
+
*/
|
|
86
|
+
declare const parseXml: typeof decodeXml;
|
|
87
|
+
//#endregion
|
|
88
|
+
export { XmlNode, XmlParseOptions, decodeXml, encodeXml, getElementsByName, parseXml };
|
|
11
89
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["parseXml: typeof decodeXml"],"sources":["../src/XmlNode.ts","../src/XmlParseOptions.ts","../src/decodeXml.ts","../src/encodeXml.ts","../src/getElementsByName.ts","../src/parseXml.ts"],"sourcesContent":[],"mappings":";;AAOA;;;;;KAAY,OAAA;;;ECDZ,UAAY,EDIC,MCJD,CAAA,MAAA,EAAA,MAAA,CAAA;cDKC;;;AEKb,CAAA;;;;AFTA;;;;;KCDY,eAAA;;;EAAZ,YAAY,CAAA,EAAA,OAAA;;;;;;;;;;;AAAZ;;;;ACUA;AAAgB,iBAAA,SAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAkC,eAAlC,CAAA,EAAyD,OAAzD;;;AFThB;;;;;;;;ACDA;;;iBEOgB,SAAA,MAAe;;;AHN/B;;;;;;;;ACDA;;;;ACUgB,iBEFA,iBAAA,CFEA,IAAA,EEFwB,OFExB,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EEFsD,OFEtD,EAAA,CAAA,EEFuE,OFEvE,EAAA;;;AFThB;;;;;;;;ACDA;;;cIOaA,iBAAiB"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,256 @@
|
|
|
1
|
+
import { unescapeHtml } from "@svta/cml-utils";
|
|
2
|
+
|
|
3
|
+
//#region src/decodeXml.ts
|
|
1
4
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
* Parse XML into a JS object with no validation and some failure tolerance
|
|
6
|
+
*
|
|
7
|
+
* @param input - The input XML string
|
|
8
|
+
* @param options - Optional parsing options
|
|
9
|
+
* @returns The parsed XML
|
|
10
|
+
*
|
|
11
|
+
* @beta
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* {@includeCode ../test/decodeXml.test.ts#example}
|
|
15
|
+
*/
|
|
16
|
+
function decodeXml(input, options = {}) {
|
|
17
|
+
let pos = options.pos || 0;
|
|
18
|
+
const length = input.length;
|
|
19
|
+
const keepComments = !!options.keepComments;
|
|
20
|
+
const keepWhitespace = !!options.keepWhitespace;
|
|
21
|
+
const openBracket = "<";
|
|
22
|
+
const openBracketCC = "<".charCodeAt(0);
|
|
23
|
+
const closeBracket = ">";
|
|
24
|
+
const closeBracketCC = ">".charCodeAt(0);
|
|
25
|
+
const minusCC = "-".charCodeAt(0);
|
|
26
|
+
const slashCC = "/".charCodeAt(0);
|
|
27
|
+
const questionCC = "?".charCodeAt(0);
|
|
28
|
+
const exclamationCC = "!".charCodeAt(0);
|
|
29
|
+
const singleQuoteCC = "'".charCodeAt(0);
|
|
30
|
+
const doubleQuoteCC = "\"".charCodeAt(0);
|
|
31
|
+
const openCornerBracketCC = "[".charCodeAt(0);
|
|
32
|
+
const closeCornerBracketCC = "]".charCodeAt(0);
|
|
33
|
+
const nameSpacer = "\r\n >/= ";
|
|
34
|
+
function createTextNode(value, nodeName = "#text") {
|
|
35
|
+
return {
|
|
36
|
+
nodeName,
|
|
37
|
+
nodeValue: value,
|
|
38
|
+
attributes: {},
|
|
39
|
+
childNodes: []
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* parsing a list of entries
|
|
44
|
+
*/
|
|
45
|
+
function parseChildren(tagName = "") {
|
|
46
|
+
const children = [];
|
|
47
|
+
while (input[pos]) if (input.charCodeAt(pos) == openBracketCC) {
|
|
48
|
+
if (input.charCodeAt(pos + 1) === slashCC) {
|
|
49
|
+
const closeStart = pos + 2;
|
|
50
|
+
pos = input.indexOf(closeBracket, pos);
|
|
51
|
+
if (!input.startsWith(tagName, closeStart)) {
|
|
52
|
+
const parsedText = input.substring(0, pos).split("\n");
|
|
53
|
+
throw new Error("Unexpected close tag\nLine: " + (parsedText.length - 1) + "\nColumn: " + (parsedText[parsedText.length - 1].length + 1) + "\nChar: " + input[pos]);
|
|
54
|
+
}
|
|
55
|
+
if (pos + 1) pos += 1;
|
|
56
|
+
return children;
|
|
57
|
+
} else if (input.charCodeAt(pos + 1) === questionCC) {
|
|
58
|
+
pos = input.indexOf(closeBracket, pos);
|
|
59
|
+
pos++;
|
|
60
|
+
continue;
|
|
61
|
+
} else if (input.charCodeAt(pos + 1) === exclamationCC) {
|
|
62
|
+
if (input.charCodeAt(pos + 2) == minusCC) {
|
|
63
|
+
const startCommentPos = pos;
|
|
64
|
+
while (pos !== -1 && !(input.charCodeAt(pos) === closeBracketCC && input.charCodeAt(pos - 1) == minusCC && input.charCodeAt(pos - 2) == minusCC && pos != -1)) pos = input.indexOf(closeBracket, pos + 1);
|
|
65
|
+
if (pos === -1) pos = length;
|
|
66
|
+
if (keepComments) children.push(createTextNode(input.substring(startCommentPos, pos + 1), "#comment"));
|
|
67
|
+
} else if (input.charCodeAt(pos + 2) === openCornerBracketCC && input.charCodeAt(pos + 8) === openCornerBracketCC && input.startsWith("CDATA", pos + 3)) {
|
|
68
|
+
const cdataEndIndex = input.indexOf("]]>", pos);
|
|
69
|
+
if (cdataEndIndex == -1) {
|
|
70
|
+
children.push(createTextNode(input.substr(pos + 9), "#cdata"));
|
|
71
|
+
pos = length;
|
|
72
|
+
} else {
|
|
73
|
+
children.push(createTextNode(input.substring(pos + 9, cdataEndIndex), "#cdata"));
|
|
74
|
+
pos = cdataEndIndex + 3;
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
} else {
|
|
78
|
+
const startDoctype = pos + 1;
|
|
79
|
+
pos += 2;
|
|
80
|
+
let encapsuled = false;
|
|
81
|
+
while ((input.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && input[pos]) {
|
|
82
|
+
if (input.charCodeAt(pos) === openCornerBracketCC) encapsuled = true;
|
|
83
|
+
else if (encapsuled === true && input.charCodeAt(pos) === closeCornerBracketCC) encapsuled = false;
|
|
84
|
+
pos++;
|
|
85
|
+
}
|
|
86
|
+
children.push(createTextNode(input.substring(startDoctype, pos), "#doctype"));
|
|
87
|
+
}
|
|
88
|
+
pos++;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const node = parseNode();
|
|
92
|
+
children.push(node);
|
|
93
|
+
} else {
|
|
94
|
+
const text = parseText();
|
|
95
|
+
if (keepWhitespace) {
|
|
96
|
+
if (text.length > 0) children.push(createTextNode(text));
|
|
97
|
+
} else {
|
|
98
|
+
const trimmed = text.trim();
|
|
99
|
+
if (trimmed.length > 0) children.push(createTextNode(trimmed));
|
|
100
|
+
}
|
|
101
|
+
pos++;
|
|
102
|
+
}
|
|
103
|
+
return children;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* returns the text outside of texts until the first '<'
|
|
107
|
+
*/
|
|
108
|
+
function parseText() {
|
|
109
|
+
const start = pos;
|
|
110
|
+
pos = input.indexOf(openBracket, pos) - 1;
|
|
111
|
+
if (pos === -2) pos = length;
|
|
112
|
+
return unescapeHtml(input.slice(start, pos + 1));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* returns text until the first nonAlphabetic letter
|
|
116
|
+
*/
|
|
117
|
+
function parseName() {
|
|
118
|
+
const start = pos;
|
|
119
|
+
while (nameSpacer.indexOf(input[pos]) === -1 && input[pos]) pos++;
|
|
120
|
+
return input.slice(start, pos);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* parses the attributes of a node
|
|
124
|
+
*/
|
|
125
|
+
function parseAttributes() {
|
|
126
|
+
const attributes = {};
|
|
127
|
+
while (input.charCodeAt(pos) !== closeBracketCC && input[pos]) {
|
|
128
|
+
const c = input.charCodeAt(pos);
|
|
129
|
+
if (c > 64 && c < 91 || c > 96 && c < 123) {
|
|
130
|
+
const name = parseName();
|
|
131
|
+
let value = "";
|
|
132
|
+
let code = input.charCodeAt(pos);
|
|
133
|
+
while (code !== singleQuoteCC && code !== doubleQuoteCC) {
|
|
134
|
+
pos++;
|
|
135
|
+
code = input.charCodeAt(pos);
|
|
136
|
+
}
|
|
137
|
+
if (code === singleQuoteCC || code === doubleQuoteCC) {
|
|
138
|
+
value = parseString();
|
|
139
|
+
if (pos === -1) throw new Error("Missing closing quote");
|
|
140
|
+
} else pos--;
|
|
141
|
+
attributes[name] = unescapeHtml(value);
|
|
142
|
+
}
|
|
143
|
+
pos++;
|
|
144
|
+
}
|
|
145
|
+
return attributes;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* parses a node
|
|
149
|
+
*/
|
|
150
|
+
function parseNode() {
|
|
151
|
+
pos++;
|
|
152
|
+
const nodeName = parseName();
|
|
153
|
+
let localName = nodeName;
|
|
154
|
+
let prefix = null;
|
|
155
|
+
const nsIndex = nodeName.indexOf(":");
|
|
156
|
+
if (nsIndex !== -1) {
|
|
157
|
+
prefix = nodeName.slice(0, nsIndex);
|
|
158
|
+
localName = nodeName.slice(nsIndex + 1);
|
|
159
|
+
}
|
|
160
|
+
const attributes = parseAttributes();
|
|
161
|
+
let childNodes = [];
|
|
162
|
+
const prev = input.charCodeAt(pos - 1);
|
|
163
|
+
pos++;
|
|
164
|
+
if (prev !== slashCC) childNodes = parseChildren(nodeName);
|
|
165
|
+
return {
|
|
166
|
+
nodeName,
|
|
167
|
+
nodeValue: null,
|
|
168
|
+
attributes,
|
|
169
|
+
childNodes,
|
|
170
|
+
prefix,
|
|
171
|
+
localName
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* is parsing a string, that starts with a char and with the same usually ' or "
|
|
176
|
+
*/
|
|
177
|
+
function parseString() {
|
|
178
|
+
const startChar = input[pos];
|
|
179
|
+
const startpos = pos + 1;
|
|
180
|
+
pos = input.indexOf(startChar, startpos);
|
|
181
|
+
return input.slice(startpos, pos);
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
nodeName: "#document",
|
|
185
|
+
nodeValue: null,
|
|
186
|
+
childNodes: parseChildren(""),
|
|
187
|
+
attributes: {}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
//#endregion
|
|
192
|
+
//#region src/encodeXml.ts
|
|
193
|
+
/**
|
|
194
|
+
* Basic xml encoding utility. Encodes XML into a string.
|
|
195
|
+
*
|
|
196
|
+
* @param xml - The XML node to encode
|
|
197
|
+
* @returns The parsed XML
|
|
198
|
+
*
|
|
199
|
+
* @beta
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* {@includeCode ../test/decodeXml.test.ts#example}
|
|
203
|
+
*/
|
|
204
|
+
function encodeXml(xml) {
|
|
205
|
+
const { nodeName, attributes, childNodes } = xml;
|
|
206
|
+
if (nodeName === "#document") return `<?xml version="1.0" encoding="UTF-8"?>${encodeXml(childNodes[0])}`;
|
|
207
|
+
if (nodeName === "#text") return xml.nodeValue || "";
|
|
208
|
+
let result = `<${nodeName}`;
|
|
209
|
+
if (attributes) for (const key in attributes) result += ` ${key}=${JSON.stringify(attributes[key])}`;
|
|
210
|
+
let children = "";
|
|
211
|
+
const childCount = childNodes?.length;
|
|
212
|
+
if (childCount) for (let i = 0; i < childCount; i++) children += encodeXml(childNodes[i]);
|
|
213
|
+
const close = !children ? " />" : `>${children}</${nodeName}>`;
|
|
214
|
+
result += close;
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
//#endregion
|
|
219
|
+
//#region src/getElementsByName.ts
|
|
220
|
+
/**
|
|
221
|
+
* Recursively finds all elements by name within an XML structure.
|
|
222
|
+
*
|
|
223
|
+
* @param node - The current XML node to search within.
|
|
224
|
+
* @param name - The name of the target nodes to find.
|
|
225
|
+
* @param found - An array to collect matching nodes.
|
|
226
|
+
* @returns An array of all matching XmlNodes.
|
|
227
|
+
*
|
|
228
|
+
*
|
|
229
|
+
* @beta
|
|
230
|
+
*
|
|
231
|
+
*/
|
|
232
|
+
function getElementsByName(node, name, found = []) {
|
|
233
|
+
if (!node) return found;
|
|
234
|
+
if (node.nodeName === name) found.push(node);
|
|
235
|
+
if (node.childNodes) for (const child of node.childNodes) getElementsByName(child, name, found);
|
|
236
|
+
return found;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
//#endregion
|
|
240
|
+
//#region src/parseXml.ts
|
|
241
|
+
/**
|
|
242
|
+
* Parse XML into a JS object with no validation and some failure tolerance
|
|
243
|
+
*
|
|
244
|
+
* @param input - The input XML string
|
|
245
|
+
* @param options - Optional parsing options
|
|
246
|
+
* @returns The parsed XML
|
|
247
|
+
*
|
|
248
|
+
* @beta
|
|
249
|
+
*
|
|
250
|
+
* @deprecated Use {@link decodeXml} instead.
|
|
251
|
+
*/
|
|
252
|
+
const parseXml = decodeXml;
|
|
253
|
+
|
|
254
|
+
//#endregion
|
|
255
|
+
export { decodeXml, encodeXml, getElementsByName, parseXml };
|
|
9
256
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC","sourcesContent":["/**\n * A collection of tools for working with XML.\n *\n * @packageDocumentation\n * @beta\n */\nexport * from './getElementsByName.js';\nexport * from './parseXml.js';\nexport type * from './XmlNode.js';\nexport type * from './XmlParseOptions.js';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["children: any[]","attributes: Record<string, string>","value: string","childNodes: any[]","parseXml: typeof decodeXml"],"sources":["../src/decodeXml.ts","../src/encodeXml.ts","../src/getElementsByName.ts","../src/parseXml.ts"],"sourcesContent":["import { unescapeHtml } from '@svta/cml-utils';\nimport type { XmlNode } from './XmlNode.js';\nimport type { XmlParseOptions } from './XmlParseOptions.js';\n\n/**\n * Parse XML into a JS object with no validation and some failure tolerance\n *\n * @param input - The input XML string\n * @param options - Optional parsing options\n * @returns The parsed XML\n *\n * @beta\n *\n * @example\n * {@includeCode ../test/decodeXml.test.ts#example}\n */\nexport function decodeXml(input: string, options: XmlParseOptions = {}): XmlNode {\n\tlet pos = options.pos || 0;\n\n\tconst length = input.length;\n\tconst keepComments = !!options.keepComments;\n\tconst keepWhitespace = !!options.keepWhitespace;\n\n\tconst openBracket = '<';\n\tconst openBracketCC = '<'.charCodeAt(0);\n\tconst closeBracket = '>';\n\tconst closeBracketCC = '>'.charCodeAt(0);\n\tconst minusCC = '-'.charCodeAt(0);\n\tconst slashCC = '/'.charCodeAt(0);\n\tconst questionCC = '?'.charCodeAt(0);\n\tconst exclamationCC = '!'.charCodeAt(0);\n\tconst singleQuoteCC = \"'\".charCodeAt(0);\n\tconst doubleQuoteCC = '\"'.charCodeAt(0);\n\tconst openCornerBracketCC = '['.charCodeAt(0);\n\tconst closeCornerBracketCC = ']'.charCodeAt(0);\n\tconst nameSpacer = '\\r\\n\\t>/= ';\n\n\tfunction createTextNode(value: string, nodeName = '#text'): XmlNode {\n\t\treturn {\n\t\t\tnodeName,\n\t\t\tnodeValue: value,\n\t\t\tattributes: {},\n\t\t\tchildNodes: [],\n\t\t};\n\t}\n\n\t/**\n\t * parsing a list of entries\n\t */\n\tfunction parseChildren(tagName: string = ''): XmlNode[] {\n\t\tconst children: any[] = [];\n\t\twhile (input[pos]) {\n\t\t\tif (input.charCodeAt(pos) == openBracketCC) {\n\t\t\t\tif (input.charCodeAt(pos + 1) === slashCC) {\n\t\t\t\t\tconst closeStart = pos + 2;\n\t\t\t\t\tpos = input.indexOf(closeBracket, pos);\n\t\t\t\t\tif (!input.startsWith(tagName, closeStart)) {\n\t\t\t\t\t\tconst parsedText = input.substring(0, pos).split('\\n');\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Unexpected close tag\\nLine: ' + (parsedText.length - 1) +\n\t\t\t\t\t\t\t'\\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +\n\t\t\t\t\t\t\t'\\nChar: ' + input[pos],\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (pos + 1) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn children;\n\t\t\t\t}\n\t\t\t\telse if (input.charCodeAt(pos + 1) === questionCC) {\n\t\t\t\t\t// xml declaration\n\t\t\t\t\tpos = input.indexOf(closeBracket, pos);\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse if (input.charCodeAt(pos + 1) === exclamationCC) {\n\t\t\t\t\tif (input.charCodeAt(pos + 2) == minusCC) {\n\t\t\t\t\t\t// comment support\n\t\t\t\t\t\tconst startCommentPos = pos;\n\t\t\t\t\t\twhile (pos !== -1 && !(input.charCodeAt(pos) === closeBracketCC && input.charCodeAt(pos - 1) == minusCC && input.charCodeAt(pos - 2) == minusCC && pos != -1)) {\n\t\t\t\t\t\t\tpos = input.indexOf(closeBracket, pos + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\tpos = length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (keepComments) {\n\t\t\t\t\t\t\tchildren.push(createTextNode(input.substring(startCommentPos, pos + 1), '#comment'));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (\n\t\t\t\t\t\tinput.charCodeAt(pos + 2) === openCornerBracketCC &&\n\t\t\t\t\t\tinput.charCodeAt(pos + 8) === openCornerBracketCC &&\n\t\t\t\t\t\tinput.startsWith('CDATA', pos + 3)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// cdata\n\t\t\t\t\t\tconst cdataEndIndex = input.indexOf(']]>', pos);\n\t\t\t\t\t\tif (cdataEndIndex == -1) {\n\t\t\t\t\t\t\tchildren.push(createTextNode(input.substr(pos + 9), '#cdata'));\n\t\t\t\t\t\t\tpos = length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tchildren.push(createTextNode(input.substring(pos + 9, cdataEndIndex), '#cdata'));\n\t\t\t\t\t\t\tpos = cdataEndIndex + 3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// doctypesupport\n\t\t\t\t\t\tconst startDoctype = pos + 1;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tlet encapsuled = false;\n\t\t\t\t\t\twhile ((input.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && input[pos]) {\n\t\t\t\t\t\t\tif (input.charCodeAt(pos) === openCornerBracketCC) {\n\t\t\t\t\t\t\t\tencapsuled = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (encapsuled === true && input.charCodeAt(pos) === closeCornerBracketCC) {\n\t\t\t\t\t\t\t\tencapsuled = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpos++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildren.push(createTextNode(input.substring(startDoctype, pos), '#doctype'));\n\t\t\t\t\t}\n\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst node = parseNode();\n\t\t\t\tchildren.push(node);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst text = parseText();\n\t\t\t\tif (keepWhitespace) {\n\t\t\t\t\tif (text.length > 0) {\n\t\t\t\t\t\tchildren.push(createTextNode(text));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst trimmed = text.trim();\n\t\t\t\t\tif (trimmed.length > 0) {\n\t\t\t\t\t\tchildren.push(createTextNode(trimmed));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpos++;\n\t\t\t}\n\t\t}\n\t\treturn children;\n\t}\n\n\t/**\n\t * returns the text outside of texts until the first '<'\n\t */\n\tfunction parseText(): string {\n\t\tconst start = pos;\n\t\tpos = input.indexOf(openBracket, pos) - 1;\n\t\tif (pos === -2) {\n\t\t\tpos = length;\n\t\t}\n\n\t\treturn unescapeHtml(input.slice(start, pos + 1));\n\t}\n\n\t/**\n\t * returns text until the first nonAlphabetic letter\n\t */\n\tfunction parseName(): string {\n\t\tconst start = pos;\n\t\twhile (nameSpacer.indexOf(input[pos]) === -1 && input[pos]) {\n\t\t\tpos++;\n\t\t}\n\t\treturn input.slice(start, pos);\n\t}\n\n\t/**\n\t * parses the attributes of a node\n\t */\n\tfunction parseAttributes(): Record<string, string> {\n\t\tconst attributes: Record<string, string> = {};\n\n\t\t// parsing attributes\n\t\twhile (input.charCodeAt(pos) !== closeBracketCC && input[pos]) {\n\t\t\tconst c = input.charCodeAt(pos);\n\t\t\tif ((c > 64 && c < 91) || (c > 96 && c < 123)) {\n\t\t\t\tconst name = parseName();\n\t\t\t\tlet value: string = '';\n\t\t\t\t// search beginning of the string\n\t\t\t\tlet code = input.charCodeAt(pos);\n\t\t\t\twhile (code !== singleQuoteCC && code !== doubleQuoteCC) {\n\t\t\t\t\tpos++;\n\t\t\t\t\tcode = input.charCodeAt(pos);\n\t\t\t\t}\n\n\t\t\t\tif (code === singleQuoteCC || code === doubleQuoteCC) {\n\t\t\t\t\tvalue = parseString();\n\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\tthrow new Error('Missing closing quote');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpos--;\n\t\t\t\t}\n\n\t\t\t\tattributes[name] = unescapeHtml(value);\n\t\t\t}\n\t\t\tpos++;\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\t/**\n\t * parses a node\n\t */\n\tfunction parseNode(): XmlNode {\n\t\tpos++;\n\t\tconst nodeName = parseName();\n\t\tlet localName = nodeName;\n\t\tlet prefix = null;\n\n\t\tconst nsIndex = nodeName.indexOf(':');\n\t\tif (nsIndex !== -1) {\n\t\t\tprefix = nodeName.slice(0, nsIndex);\n\t\t\tlocalName = nodeName.slice(nsIndex + 1);\n\t\t}\n\n\t\tconst attributes = parseAttributes();\n\n\t\tlet childNodes: any[] = [];\n\n\t\t// optional parsing of children\n\t\tconst prev = input.charCodeAt(pos - 1);\n\t\tpos++;\n\n\t\tif (prev !== slashCC) {\n\t\t\tchildNodes = parseChildren(nodeName);\n\t\t}\n\n\t\treturn {\n\t\t\tnodeName,\n\t\t\tnodeValue: null,\n\t\t\tattributes,\n\t\t\tchildNodes,\n\t\t\tprefix,\n\t\t\tlocalName,\n\t\t};\n\t}\n\n\t/**\n\t * is parsing a string, that starts with a char and with the same usually ' or \"\n\t */\n\tfunction parseString(): string {\n\t\tconst startChar = input[pos];\n\t\tconst startpos = pos + 1;\n\t\tpos = input.indexOf(startChar, startpos);\n\t\treturn input.slice(startpos, pos);\n\t}\n\n\treturn {\n\t\tnodeName: '#document',\n\t\tnodeValue: null,\n\t\tchildNodes: parseChildren(''),\n\t\tattributes: {},\n\t};\n}\n","import type { XmlNode } from './XmlNode.js';\n\n/**\n * Basic xml encoding utility. Encodes XML into a string.\n *\n * @param xml - The XML node to encode\n * @returns The parsed XML\n *\n * @beta\n *\n * @example\n * {@includeCode ../test/decodeXml.test.ts#example}\n */\nexport function encodeXml(xml: XmlNode): string {\n\tconst { nodeName, attributes, childNodes } = xml;\n\n\tif (nodeName === '#document') {\n\t\treturn `<?xml version=\"1.0\" encoding=\"UTF-8\"?>${encodeXml(childNodes[0])}`;\n\t}\n\n\tif (nodeName === '#text') {\n\t\treturn xml.nodeValue || '';\n\t}\n\n\tlet result = `<${nodeName}`;\n\n\tif (attributes) {\n\t\tfor (const key in attributes) {\n\t\t\tresult += ` ${key}=${JSON.stringify(attributes[key])}`;\n\t\t}\n\t}\n\n\tlet children = '';\n\n\tconst childCount = childNodes?.length;\n\n\tif (childCount) {\n\t\tfor (let i = 0; i < childCount; i++) {\n\t\t\tchildren += encodeXml(childNodes[i]);\n\t\t}\n\t}\n\n\tconst close = (!children) ? ' />' : `>${children}</${nodeName}>`;\n\tresult += close;\n\n\treturn result;\n}\n","import type { XmlNode } from './XmlNode.js';\n\n/**\n * Recursively finds all elements by name within an XML structure.\n *\n * @param node - The current XML node to search within.\n * @param name - The name of the target nodes to find.\n * @param found - An array to collect matching nodes.\n * @returns An array of all matching XmlNodes.\n *\n *\n * @beta\n *\n */\nexport function getElementsByName(node: XmlNode, name: string, found: XmlNode[] = []): XmlNode[] {\n\tif (!node) {\n\t\treturn found;\n\t}\n\n\tif (node.nodeName === name) {\n\t\tfound.push(node);\n\t}\n\n\tif (node.childNodes) {\n\t\tfor (const child of node.childNodes) {\n\t\t\tgetElementsByName(child, name, found);\n\t\t}\n\t}\n\n\treturn found;\n}\n","import { decodeXml } from './decodeXml.js';\n\n/**\n * Parse XML into a JS object with no validation and some failure tolerance\n *\n * @param input - The input XML string\n * @param options - Optional parsing options\n * @returns The parsed XML\n *\n * @beta\n *\n * @deprecated Use {@link decodeXml} instead.\n */\nexport const parseXml: typeof decodeXml = decodeXml;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svta/cml-xml",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "XML parsing utilities",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
-
"
|
|
6
|
+
"type": "module",
|
|
7
|
+
"homepage": "https://github.com/streaming-video-technology-alliance/common-media-library/tree/main/libs/xml",
|
|
7
8
|
"authors": "Casey Occhialini <1508707+littlespex@users.noreply.github.com>",
|
|
8
9
|
"repository": {
|
|
9
10
|
"type": "git",
|
|
@@ -26,27 +27,7 @@
|
|
|
26
27
|
".": {
|
|
27
28
|
"types": "./dist/index.d.ts",
|
|
28
29
|
"import": "./dist/index.js",
|
|
29
|
-
"require": "./dist/cjs/index.js",
|
|
30
30
|
"default": "./dist/index.js"
|
|
31
|
-
},
|
|
32
|
-
"./*.js": {
|
|
33
|
-
"import": "./dist/*.js",
|
|
34
|
-
"require": "./dist/cjs/*.js",
|
|
35
|
-
"default": "./dist/*.js"
|
|
36
|
-
},
|
|
37
|
-
"./*": {
|
|
38
|
-
"types": "./dist/*.d.ts",
|
|
39
|
-
"import": "./dist/*.js",
|
|
40
|
-
"require": "./dist/cjs/*.js",
|
|
41
|
-
"default": "./dist/*.js"
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
"typesVersions": {
|
|
45
|
-
"*": {
|
|
46
|
-
"*": [
|
|
47
|
-
"dist/*",
|
|
48
|
-
"dist/cjs/*"
|
|
49
|
-
]
|
|
50
31
|
}
|
|
51
32
|
},
|
|
52
33
|
"keywords": [
|
|
@@ -55,10 +36,8 @@
|
|
|
55
36
|
"XML"
|
|
56
37
|
],
|
|
57
38
|
"scripts": {
|
|
58
|
-
"build": "
|
|
59
|
-
"
|
|
60
|
-
"test": "node --no-warnings --test **/*.test.ts",
|
|
61
|
-
"prepublishOnly": "npm run build"
|
|
39
|
+
"build": "node ../../scripts/build.ts",
|
|
40
|
+
"test": "node ../../scripts/test.ts"
|
|
62
41
|
},
|
|
63
42
|
"engines": {
|
|
64
43
|
"node": ">=20"
|
|
@@ -71,6 +50,6 @@
|
|
|
71
50
|
}
|
|
72
51
|
},
|
|
73
52
|
"peerDependencies": {
|
|
74
|
-
"@svta/cml-utils": "
|
|
53
|
+
"@svta/cml-utils": "0.20.0"
|
|
75
54
|
}
|
|
76
55
|
}
|
package/NOTICE
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
Streaming Video Technology Alliance Common Media Library Copyright (c) 2023
|
|
2
|
-
Streaming Video Technology Alliance
|
|
3
|
-
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
The following implementation in this project is derived from the `tXml` library
|
|
7
|
-
(https://github.com/TobiasNickel/tXml)
|
|
8
|
-
|
|
9
|
-
- src/utils/parseXml.ts
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
The MIT License (MIT)
|
|
13
|
-
|
|
14
|
-
Copyright (c) 2015 Tobias Nickel
|
|
15
|
-
|
|
16
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
17
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
18
|
-
in the Software without restriction, including without limitation the rights
|
|
19
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
20
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
21
|
-
furnished to do so, subject to the following conditions:
|
|
22
|
-
|
|
23
|
-
The above copyright notice and this permission notice shall be included in all
|
|
24
|
-
copies or substantial portions of the Software.
|
|
25
|
-
|
|
26
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
27
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
28
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
29
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
30
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
31
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
32
|
-
SOFTWARE.
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
---
|
package/dist/XmlNode.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* XML node
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @beta
|
|
6
|
-
*/
|
|
7
|
-
export type XmlNode = {
|
|
8
|
-
nodeName: string;
|
|
9
|
-
nodeValue: string | null;
|
|
10
|
-
attributes: Record<string, string>;
|
|
11
|
-
childNodes: XmlNode[];
|
|
12
|
-
prefix?: string | null;
|
|
13
|
-
localName?: string;
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=XmlNode.d.ts.map
|
package/dist/XmlNode.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"XmlNode.d.ts","sourceRoot":"","sources":["../src/XmlNode.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"}
|
package/dist/XmlNode.js
DELETED
package/dist/XmlNode.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"XmlNode.js","sourceRoot":"","sources":["../src/XmlNode.ts"],"names":[],"mappings":"","sourcesContent":["\n/**\n * XML node\n *\n *\n * @beta\n */\nexport type XmlNode = {\n\tnodeName: string;\n\tnodeValue: string | null;\n\tattributes: Record<string, string>;\n\tchildNodes: XmlNode[];\n\tprefix?: string | null;\n\tlocalName?: string;\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"XmlParseOptions.d.ts","sourceRoot":"","sources":["../src/XmlParseOptions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"}
|
package/dist/XmlParseOptions.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"XmlParseOptions.js","sourceRoot":"","sources":["../src/XmlParseOptions.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * XML parsing options\n *\n *\n * @beta\n */\nexport type XmlParseOptions = {\n\tpos?: number;\n\tkeepWhitespace?: boolean;\n\tkeepComments?: boolean;\n};\n"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { XmlNode } from './XmlNode.js';
|
|
2
|
-
/**
|
|
3
|
-
* Recursively finds all elements by name within an XML structure.
|
|
4
|
-
*
|
|
5
|
-
* @param node - The current XML node to search within.
|
|
6
|
-
* @param name - The name of the target nodes to find.
|
|
7
|
-
* @param found - An array to collect matching nodes.
|
|
8
|
-
* @returns An array of all matching XmlNodes.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @beta
|
|
12
|
-
*
|
|
13
|
-
*/
|
|
14
|
-
export declare function getElementsByName(node: XmlNode, name: string, found?: XmlNode[]): XmlNode[];
|
|
15
|
-
//# sourceMappingURL=getElementsByName.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getElementsByName.d.ts","sourceRoot":"","sources":["../src/getElementsByName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,EAAO,GAAG,OAAO,EAAE,CAY/F"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursively finds all elements by name within an XML structure.
|
|
3
|
-
*
|
|
4
|
-
* @param node - The current XML node to search within.
|
|
5
|
-
* @param name - The name of the target nodes to find.
|
|
6
|
-
* @param found - An array to collect matching nodes.
|
|
7
|
-
* @returns An array of all matching XmlNodes.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @beta
|
|
11
|
-
*
|
|
12
|
-
*/
|
|
13
|
-
export function getElementsByName(node, name, found = []) {
|
|
14
|
-
if (node.nodeName === name) {
|
|
15
|
-
found.push(node);
|
|
16
|
-
}
|
|
17
|
-
if (node.childNodes) {
|
|
18
|
-
for (const child of node.childNodes) {
|
|
19
|
-
getElementsByName(child, name, found);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return found;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=getElementsByName.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getElementsByName.js","sourceRoot":"","sources":["../src/getElementsByName.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa,EAAE,IAAY,EAAE,QAAmB,EAAE;IACnF,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC","sourcesContent":["import type { XmlNode } from './XmlNode.js';\n\n/**\n * Recursively finds all elements by name within an XML structure.\n *\n * @param node - The current XML node to search within.\n * @param name - The name of the target nodes to find.\n * @param found - An array to collect matching nodes.\n * @returns An array of all matching XmlNodes.\n *\n *\n * @beta\n *\n */\nexport function getElementsByName(node: XmlNode, name: string, found: XmlNode[] = []): XmlNode[] {\n\tif (node.nodeName === name) {\n\t\tfound.push(node);\n\t}\n\n\tif (node.childNodes) {\n\t\tfor (const child of node.childNodes) {\n\t\t\tgetElementsByName(child, name, found);\n\t\t}\n\t}\n\n\treturn found;\n}\n"]}
|
package/dist/parseXml.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { XmlNode } from './XmlNode.js';
|
|
2
|
-
import type { XmlParseOptions } from './XmlParseOptions.js';
|
|
3
|
-
/**
|
|
4
|
-
* Parse XML into a JS object with no validation and some failure tolerance
|
|
5
|
-
*
|
|
6
|
-
* @param input - The input XML string
|
|
7
|
-
* @param options - Optional parsing options
|
|
8
|
-
* @returns The parsed XML
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* @beta
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* {@includeCode ../test/parseXml.test.ts#example}
|
|
15
|
-
*/
|
|
16
|
-
export declare function parseXml(input: string, options?: XmlParseOptions): XmlNode;
|
|
17
|
-
//# sourceMappingURL=parseXml.d.ts.map
|
package/dist/parseXml.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseXml.d.ts","sourceRoot":"","sources":["../src/parseXml.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAyP9E"}
|
package/dist/parseXml.js
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { unescapeHtml } from '@svta/cml-utils/unescapeHtml.js';
|
|
2
|
-
/**
|
|
3
|
-
* Parse XML into a JS object with no validation and some failure tolerance
|
|
4
|
-
*
|
|
5
|
-
* @param input - The input XML string
|
|
6
|
-
* @param options - Optional parsing options
|
|
7
|
-
* @returns The parsed XML
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @beta
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* {@includeCode ../test/parseXml.test.ts#example}
|
|
14
|
-
*/
|
|
15
|
-
export function parseXml(input, options = {}) {
|
|
16
|
-
let pos = options.pos || 0;
|
|
17
|
-
const length = input.length;
|
|
18
|
-
const keepComments = !!options.keepComments;
|
|
19
|
-
const keepWhitespace = !!options.keepWhitespace;
|
|
20
|
-
const openBracket = '<';
|
|
21
|
-
const openBracketCC = '<'.charCodeAt(0);
|
|
22
|
-
const closeBracket = '>';
|
|
23
|
-
const closeBracketCC = '>'.charCodeAt(0);
|
|
24
|
-
const minusCC = '-'.charCodeAt(0);
|
|
25
|
-
const slashCC = '/'.charCodeAt(0);
|
|
26
|
-
const questionCC = '?'.charCodeAt(0);
|
|
27
|
-
const exclamationCC = '!'.charCodeAt(0);
|
|
28
|
-
const singleQuoteCC = "'".charCodeAt(0);
|
|
29
|
-
const doubleQuoteCC = '"'.charCodeAt(0);
|
|
30
|
-
const openCornerBracketCC = '['.charCodeAt(0);
|
|
31
|
-
const closeCornerBracketCC = ']'.charCodeAt(0);
|
|
32
|
-
const nameSpacer = '\r\n\t>/= ';
|
|
33
|
-
function createTextNode(value, nodeName = '#text') {
|
|
34
|
-
return {
|
|
35
|
-
nodeName,
|
|
36
|
-
nodeValue: value,
|
|
37
|
-
attributes: {},
|
|
38
|
-
childNodes: [],
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* parsing a list of entries
|
|
43
|
-
*/
|
|
44
|
-
function parseChildren(tagName = '') {
|
|
45
|
-
const children = [];
|
|
46
|
-
while (input[pos]) {
|
|
47
|
-
if (input.charCodeAt(pos) == openBracketCC) {
|
|
48
|
-
if (input.charCodeAt(pos + 1) === slashCC) {
|
|
49
|
-
const closeStart = pos + 2;
|
|
50
|
-
pos = input.indexOf(closeBracket, pos);
|
|
51
|
-
if (!input.startsWith(tagName, closeStart)) {
|
|
52
|
-
const parsedText = input.substring(0, pos).split('\n');
|
|
53
|
-
throw new Error('Unexpected close tag\nLine: ' + (parsedText.length - 1) +
|
|
54
|
-
'\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +
|
|
55
|
-
'\nChar: ' + input[pos]);
|
|
56
|
-
}
|
|
57
|
-
if (pos + 1) {
|
|
58
|
-
pos += 1;
|
|
59
|
-
}
|
|
60
|
-
return children;
|
|
61
|
-
}
|
|
62
|
-
else if (input.charCodeAt(pos + 1) === questionCC) {
|
|
63
|
-
// xml declaration
|
|
64
|
-
pos = input.indexOf(closeBracket, pos);
|
|
65
|
-
pos++;
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
else if (input.charCodeAt(pos + 1) === exclamationCC) {
|
|
69
|
-
if (input.charCodeAt(pos + 2) == minusCC) {
|
|
70
|
-
// comment support
|
|
71
|
-
const startCommentPos = pos;
|
|
72
|
-
while (pos !== -1 && !(input.charCodeAt(pos) === closeBracketCC && input.charCodeAt(pos - 1) == minusCC && input.charCodeAt(pos - 2) == minusCC && pos != -1)) {
|
|
73
|
-
pos = input.indexOf(closeBracket, pos + 1);
|
|
74
|
-
}
|
|
75
|
-
if (pos === -1) {
|
|
76
|
-
pos = length;
|
|
77
|
-
}
|
|
78
|
-
if (keepComments) {
|
|
79
|
-
children.push(createTextNode(input.substring(startCommentPos, pos + 1), '#comment'));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
else if (input.charCodeAt(pos + 2) === openCornerBracketCC &&
|
|
83
|
-
input.charCodeAt(pos + 8) === openCornerBracketCC &&
|
|
84
|
-
input.startsWith('CDATA', pos + 3)) {
|
|
85
|
-
// cdata
|
|
86
|
-
const cdataEndIndex = input.indexOf(']]>', pos);
|
|
87
|
-
if (cdataEndIndex == -1) {
|
|
88
|
-
children.push(createTextNode(input.substr(pos + 9), '#cdata'));
|
|
89
|
-
pos = length;
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
children.push(createTextNode(input.substring(pos + 9, cdataEndIndex), '#cdata'));
|
|
93
|
-
pos = cdataEndIndex + 3;
|
|
94
|
-
}
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
// doctypesupport
|
|
99
|
-
const startDoctype = pos + 1;
|
|
100
|
-
pos += 2;
|
|
101
|
-
let encapsuled = false;
|
|
102
|
-
while ((input.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && input[pos]) {
|
|
103
|
-
if (input.charCodeAt(pos) === openCornerBracketCC) {
|
|
104
|
-
encapsuled = true;
|
|
105
|
-
}
|
|
106
|
-
else if (encapsuled === true && input.charCodeAt(pos) === closeCornerBracketCC) {
|
|
107
|
-
encapsuled = false;
|
|
108
|
-
}
|
|
109
|
-
pos++;
|
|
110
|
-
}
|
|
111
|
-
children.push(createTextNode(input.substring(startDoctype, pos), '#doctype'));
|
|
112
|
-
}
|
|
113
|
-
pos++;
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
const node = parseNode();
|
|
117
|
-
children.push(node);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
const text = parseText();
|
|
121
|
-
if (keepWhitespace) {
|
|
122
|
-
if (text.length > 0) {
|
|
123
|
-
children.push(createTextNode(text));
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
const trimmed = text.trim();
|
|
128
|
-
if (trimmed.length > 0) {
|
|
129
|
-
children.push(createTextNode(trimmed));
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
pos++;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return children;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* returns the text outside of texts until the first '<'
|
|
139
|
-
*/
|
|
140
|
-
function parseText() {
|
|
141
|
-
const start = pos;
|
|
142
|
-
pos = input.indexOf(openBracket, pos) - 1;
|
|
143
|
-
if (pos === -2) {
|
|
144
|
-
pos = length;
|
|
145
|
-
}
|
|
146
|
-
return unescapeHtml(input.slice(start, pos + 1));
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* returns text until the first nonAlphabetic letter
|
|
150
|
-
*/
|
|
151
|
-
function parseName() {
|
|
152
|
-
const start = pos;
|
|
153
|
-
while (nameSpacer.indexOf(input[pos]) === -1 && input[pos]) {
|
|
154
|
-
pos++;
|
|
155
|
-
}
|
|
156
|
-
return input.slice(start, pos);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* parses the attributes of a node
|
|
160
|
-
*/
|
|
161
|
-
function parseAttributes() {
|
|
162
|
-
const attributes = {};
|
|
163
|
-
// parsing attributes
|
|
164
|
-
while (input.charCodeAt(pos) !== closeBracketCC && input[pos]) {
|
|
165
|
-
const c = input.charCodeAt(pos);
|
|
166
|
-
if ((c > 64 && c < 91) || (c > 96 && c < 123)) {
|
|
167
|
-
const name = parseName();
|
|
168
|
-
let value = '';
|
|
169
|
-
// search beginning of the string
|
|
170
|
-
let code = input.charCodeAt(pos);
|
|
171
|
-
while (code !== singleQuoteCC && code !== doubleQuoteCC) {
|
|
172
|
-
pos++;
|
|
173
|
-
code = input.charCodeAt(pos);
|
|
174
|
-
}
|
|
175
|
-
if (code === singleQuoteCC || code === doubleQuoteCC) {
|
|
176
|
-
value = parseString();
|
|
177
|
-
if (pos === -1) {
|
|
178
|
-
throw new Error('Missing closing quote');
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
pos--;
|
|
183
|
-
}
|
|
184
|
-
attributes[name] = unescapeHtml(value);
|
|
185
|
-
}
|
|
186
|
-
pos++;
|
|
187
|
-
}
|
|
188
|
-
return attributes;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* parses a node
|
|
192
|
-
*/
|
|
193
|
-
function parseNode() {
|
|
194
|
-
pos++;
|
|
195
|
-
const nodeName = parseName();
|
|
196
|
-
let localName = nodeName;
|
|
197
|
-
let prefix = null;
|
|
198
|
-
const nsIndex = nodeName.indexOf(':');
|
|
199
|
-
if (nsIndex !== -1) {
|
|
200
|
-
prefix = nodeName.slice(0, nsIndex);
|
|
201
|
-
localName = nodeName.slice(nsIndex + 1);
|
|
202
|
-
}
|
|
203
|
-
const attributes = parseAttributes();
|
|
204
|
-
let childNodes = [];
|
|
205
|
-
// optional parsing of children
|
|
206
|
-
const prev = input.charCodeAt(pos - 1);
|
|
207
|
-
pos++;
|
|
208
|
-
if (prev !== slashCC) {
|
|
209
|
-
childNodes = parseChildren(nodeName);
|
|
210
|
-
}
|
|
211
|
-
return {
|
|
212
|
-
nodeName,
|
|
213
|
-
nodeValue: null,
|
|
214
|
-
attributes,
|
|
215
|
-
childNodes,
|
|
216
|
-
prefix,
|
|
217
|
-
localName,
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* is parsing a string, that starts with a char and with the same usually ' or "
|
|
222
|
-
*/
|
|
223
|
-
function parseString() {
|
|
224
|
-
const startChar = input[pos];
|
|
225
|
-
const startpos = pos + 1;
|
|
226
|
-
pos = input.indexOf(startChar, startpos);
|
|
227
|
-
return input.slice(startpos, pos);
|
|
228
|
-
}
|
|
229
|
-
return {
|
|
230
|
-
nodeName: '#document',
|
|
231
|
-
nodeValue: null,
|
|
232
|
-
childNodes: parseChildren(''),
|
|
233
|
-
attributes: {},
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
//# sourceMappingURL=parseXml.js.map
|
package/dist/parseXml.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseXml.js","sourceRoot":"","sources":["../src/parseXml.ts"],"names":[],"mappings":"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","sourcesContent":["import { unescapeHtml } from '@svta/cml-utils/unescapeHtml.js';\nimport type { XmlNode } from './XmlNode.js';\nimport type { XmlParseOptions } from './XmlParseOptions.js';\n\n/**\n * Parse XML into a JS object with no validation and some failure tolerance\n *\n * @param input - The input XML string\n * @param options - Optional parsing options\n * @returns The parsed XML\n *\n *\n * @beta\n *\n * @example\n * {@includeCode ../test/parseXml.test.ts#example}\n */\nexport function parseXml(input: string, options: XmlParseOptions = {}): XmlNode {\n\tlet pos = options.pos || 0;\n\n\tconst length = input.length;\n\tconst keepComments = !!options.keepComments;\n\tconst keepWhitespace = !!options.keepWhitespace;\n\n\tconst openBracket = '<';\n\tconst openBracketCC = '<'.charCodeAt(0);\n\tconst closeBracket = '>';\n\tconst closeBracketCC = '>'.charCodeAt(0);\n\tconst minusCC = '-'.charCodeAt(0);\n\tconst slashCC = '/'.charCodeAt(0);\n\tconst questionCC = '?'.charCodeAt(0);\n\tconst exclamationCC = '!'.charCodeAt(0);\n\tconst singleQuoteCC = \"'\".charCodeAt(0);\n\tconst doubleQuoteCC = '\"'.charCodeAt(0);\n\tconst openCornerBracketCC = '['.charCodeAt(0);\n\tconst closeCornerBracketCC = ']'.charCodeAt(0);\n\tconst nameSpacer = '\\r\\n\\t>/= ';\n\n\tfunction createTextNode(value: string, nodeName = '#text'): XmlNode {\n\t\treturn {\n\t\t\tnodeName,\n\t\t\tnodeValue: value,\n\t\t\tattributes: {},\n\t\t\tchildNodes: [],\n\t\t};\n\t}\n\n\t/**\n\t * parsing a list of entries\n\t */\n\tfunction parseChildren(tagName: string = ''): XmlNode[] {\n\t\tconst children: any[] = [];\n\t\twhile (input[pos]) {\n\t\t\tif (input.charCodeAt(pos) == openBracketCC) {\n\t\t\t\tif (input.charCodeAt(pos + 1) === slashCC) {\n\t\t\t\t\tconst closeStart = pos + 2;\n\t\t\t\t\tpos = input.indexOf(closeBracket, pos);\n\t\t\t\t\tif (!input.startsWith(tagName, closeStart)) {\n\t\t\t\t\t\tconst parsedText = input.substring(0, pos).split('\\n');\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Unexpected close tag\\nLine: ' + (parsedText.length - 1) +\n\t\t\t\t\t\t\t'\\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +\n\t\t\t\t\t\t\t'\\nChar: ' + input[pos],\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (pos + 1) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn children;\n\t\t\t\t}\n\t\t\t\telse if (input.charCodeAt(pos + 1) === questionCC) {\n\t\t\t\t\t// xml declaration\n\t\t\t\t\tpos = input.indexOf(closeBracket, pos);\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse if (input.charCodeAt(pos + 1) === exclamationCC) {\n\t\t\t\t\tif (input.charCodeAt(pos + 2) == minusCC) {\n\t\t\t\t\t\t// comment support\n\t\t\t\t\t\tconst startCommentPos = pos;\n\t\t\t\t\t\twhile (pos !== -1 && !(input.charCodeAt(pos) === closeBracketCC && input.charCodeAt(pos - 1) == minusCC && input.charCodeAt(pos - 2) == minusCC && pos != -1)) {\n\t\t\t\t\t\t\tpos = input.indexOf(closeBracket, pos + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\tpos = length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (keepComments) {\n\t\t\t\t\t\t\tchildren.push(createTextNode(input.substring(startCommentPos, pos + 1), '#comment'));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (\n\t\t\t\t\t\tinput.charCodeAt(pos + 2) === openCornerBracketCC &&\n\t\t\t\t\t\tinput.charCodeAt(pos + 8) === openCornerBracketCC &&\n\t\t\t\t\t\tinput.startsWith('CDATA', pos + 3)\n\t\t\t\t\t) {\n\t\t\t\t\t\t// cdata\n\t\t\t\t\t\tconst cdataEndIndex = input.indexOf(']]>', pos);\n\t\t\t\t\t\tif (cdataEndIndex == -1) {\n\t\t\t\t\t\t\tchildren.push(createTextNode(input.substr(pos + 9), '#cdata'));\n\t\t\t\t\t\t\tpos = length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tchildren.push(createTextNode(input.substring(pos + 9, cdataEndIndex), '#cdata'));\n\t\t\t\t\t\t\tpos = cdataEndIndex + 3;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// doctypesupport\n\t\t\t\t\t\tconst startDoctype = pos + 1;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tlet encapsuled = false;\n\t\t\t\t\t\twhile ((input.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && input[pos]) {\n\t\t\t\t\t\t\tif (input.charCodeAt(pos) === openCornerBracketCC) {\n\t\t\t\t\t\t\t\tencapsuled = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (encapsuled === true && input.charCodeAt(pos) === closeCornerBracketCC) {\n\t\t\t\t\t\t\t\tencapsuled = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpos++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildren.push(createTextNode(input.substring(startDoctype, pos), '#doctype'));\n\t\t\t\t\t}\n\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst node = parseNode();\n\t\t\t\tchildren.push(node);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst text = parseText();\n\t\t\t\tif (keepWhitespace) {\n\t\t\t\t\tif (text.length > 0) {\n\t\t\t\t\t\tchildren.push(createTextNode(text));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst trimmed = text.trim();\n\t\t\t\t\tif (trimmed.length > 0) {\n\t\t\t\t\t\tchildren.push(createTextNode(trimmed));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpos++;\n\t\t\t}\n\t\t}\n\t\treturn children;\n\t}\n\n\t/**\n\t * returns the text outside of texts until the first '<'\n\t */\n\tfunction parseText(): string {\n\t\tconst start = pos;\n\t\tpos = input.indexOf(openBracket, pos) - 1;\n\t\tif (pos === -2) {\n\t\t\tpos = length;\n\t\t}\n\n\t\treturn unescapeHtml(input.slice(start, pos + 1));\n\t}\n\n\t/**\n\t * returns text until the first nonAlphabetic letter\n\t */\n\tfunction parseName(): string {\n\t\tconst start = pos;\n\t\twhile (nameSpacer.indexOf(input[pos]) === -1 && input[pos]) {\n\t\t\tpos++;\n\t\t}\n\t\treturn input.slice(start, pos);\n\t}\n\n\t/**\n\t * parses the attributes of a node\n\t */\n\tfunction parseAttributes(): Record<string, string> {\n\t\tconst attributes: Record<string, string> = {};\n\n\t\t// parsing attributes\n\t\twhile (input.charCodeAt(pos) !== closeBracketCC && input[pos]) {\n\t\t\tconst c = input.charCodeAt(pos);\n\t\t\tif ((c > 64 && c < 91) || (c > 96 && c < 123)) {\n\t\t\t\tconst name = parseName();\n\t\t\t\tlet value: string = '';\n\t\t\t\t// search beginning of the string\n\t\t\t\tlet code = input.charCodeAt(pos);\n\t\t\t\twhile (code !== singleQuoteCC && code !== doubleQuoteCC) {\n\t\t\t\t\tpos++;\n\t\t\t\t\tcode = input.charCodeAt(pos);\n\t\t\t\t}\n\n\t\t\t\tif (code === singleQuoteCC || code === doubleQuoteCC) {\n\t\t\t\t\tvalue = parseString();\n\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\tthrow new Error('Missing closing quote');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpos--;\n\t\t\t\t}\n\n\t\t\t\tattributes[name] = unescapeHtml(value);\n\t\t\t}\n\t\t\tpos++;\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\t/**\n\t * parses a node\n\t */\n\tfunction parseNode(): XmlNode {\n\t\tpos++;\n\t\tconst nodeName = parseName();\n\t\tlet localName = nodeName;\n\t\tlet prefix = null;\n\n\t\tconst nsIndex = nodeName.indexOf(':');\n\t\tif (nsIndex !== -1) {\n\t\t\tprefix = nodeName.slice(0, nsIndex);\n\t\t\tlocalName = nodeName.slice(nsIndex + 1);\n\t\t}\n\n\t\tconst attributes = parseAttributes();\n\n\t\tlet childNodes: any[] = [];\n\n\t\t// optional parsing of children\n\t\tconst prev = input.charCodeAt(pos - 1);\n\t\tpos++;\n\n\t\tif (prev !== slashCC) {\n\t\t\tchildNodes = parseChildren(nodeName);\n\t\t}\n\n\t\treturn {\n\t\t\tnodeName,\n\t\t\tnodeValue: null,\n\t\t\tattributes,\n\t\t\tchildNodes,\n\t\t\tprefix,\n\t\t\tlocalName,\n\t\t};\n\t}\n\n\t/**\n\t * is parsing a string, that starts with a char and with the same usually ' or \"\n\t */\n\tfunction parseString(): string {\n\t\tconst startChar = input[pos];\n\t\tconst startpos = pos + 1;\n\t\tpos = input.indexOf(startChar, startpos);\n\t\treturn input.slice(startpos, pos);\n\t}\n\n\treturn {\n\t\tnodeName: '#document',\n\t\tnodeValue: null,\n\t\tchildNodes: parseChildren(''),\n\t\tattributes: {},\n\t};\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/XmlNode.ts","../src/XmlParseOptions.ts","../src/getElementsByName.ts","../../utils/dist/unescapeHtml.d.ts","../src/parseXml.ts","../src/index.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/accepts/index.d.ts","../../../node_modules/@types/argparse/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/command-line-args/index.d.ts","../../../node_modules/@types/content-disposition/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/keygrip/index.d.ts","../../../node_modules/@types/cookies/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/http-assert/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/koa-compose/index.d.ts","../../../node_modules/@types/koa/index.d.ts","../../../node_modules/@types/m3u8-parser/index.d.ts","../../../node_modules/@types/parse5/lib/tree-adapters/default.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/@types/xml2js/lib/processors.d.ts","../../../node_modules/@types/xml2js/index.d.ts"],"fileIdsList":[[90,144,161,162],[82,90,144,161,162],[82,83,84,86,90,144,161,162],[82,83,85,90,144,161,162],[90,144,158,161,162,194],[90,144,158,161,162,194,197],[90,144,158,161,162,194,197,208,209],[90,144,155,158,161,162,194,202,203,204],[90,144,161,162,198,205,207],[90,144,161,162,212],[90,144,161,162,217],[90,143,144,155,158,159,161,162,164,170,187,194,195,200,206,209,210,214,216],[90,141,142,144,161,162],[90,143,144,161,162],[144,161,162],[90,144,149,161,162,179],[90,144,145,150,155,161,162,164,176,187],[90,144,145,146,155,161,162,164],[90,144,147,161,162,188],[90,144,148,149,156,161,162,165],[90,144,149,161,162,176,184],[90,144,150,152,155,161,162,164],[90,143,144,151,161,162],[90,144,152,153,161,162],[90,144,154,155,161,162],[90,143,144,155,161,162],[90,144,155,156,157,161,162,176,187],[90,144,155,156,157,161,162,171,176,179],[90,136,144,152,155,158,161,162,164,176,187],[90,144,155,156,158,159,161,162,164,176,184,187],[90,144,158,160,161,162,176,184,187],[88,89,90,91,92,93,94,95,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193],[90,144,155,161,162],[90,144,161,162,163,187],[90,144,152,155,161,162,164,176],[90,144,161,162,165],[90,144,161,162,166],[90,143,144,161,162,167],[90,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193],[90,144,161,162,169],[90,144,161,162,170],[90,144,155,161,162,171,172],[90,144,161,162,171,173,188,190],[90,144,155,161,162,176,177,179],[90,144,161,162,178,179],[90,144,161,162,176,177],[90,144,161,162,179],[90,144,161,162,180],[90,141,144,161,162,176,181],[90,144,155,161,162,182,183],[90,144,161,162,182,183],[90,144,149,161,162,164,176,184],[90,144,161,162,185],[90,144,161,162,164,186],[90,144,158,161,162,170,187],[90,144,149,161,162,188],[90,144,161,162,176,189],[90,144,161,162,163,190],[90,144,161,162,191],[90,144,149,161,162],[90,136,144,161,162],[90,144,161,162,192],[90,136,144,155,157,161,162,167,176,179,187,189,190,192],[90,144,161,162,176,193],[90,144,161,162,219],[90,144,161,162,220],[90,144,161,162,223,261],[90,144,161,162,223,246,261],[90,144,161,162,222,261],[90,144,161,162,261],[90,144,161,162,223],[90,144,161,162,223,247,261],[90,144,161,162,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260],[90,144,161,162,247,261],[90,144,156,161,162,176,194,201],[90,144,158,161,162,194,202,206],[90,144,155,158,160,161,162,164,176,184,187,193,194],[90,144,155,161,162,194,263],[90,102,105,108,109,144,161,162,187],[90,105,144,161,162,176,187],[90,105,109,144,161,162,187],[90,144,161,162,176],[90,99,144,161,162],[90,103,144,161,162],[90,101,102,105,144,161,162,187],[90,144,161,162,164,184],[90,144,161,162,194],[90,99,144,161,162,194],[90,101,105,144,161,162,164,187],[90,96,97,98,100,104,144,155,161,162,176,187],[90,105,113,121,144,161,162],[90,97,103,144,161,162],[90,105,130,131,144,161,162],[90,97,100,105,144,161,162,179,187,194],[90,105,144,161,162],[90,101,105,144,161,162,187],[90,96,144,161,162],[90,99,100,101,103,104,105,106,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,144,161,162],[90,105,123,126,144,152,161,162],[90,105,113,114,115,144,161,162],[90,103,105,114,116,144,161,162],[90,104,144,161,162],[90,97,99,105,144,161,162],[90,105,109,114,116,144,161,162],[90,109,144,161,162],[90,103,105,108,144,161,162,187],[90,97,101,105,113,144,161,162],[90,105,123,144,161,162],[90,116,144,161,162],[90,99,105,130,144,161,162,179,192,194]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"8bf8b5e44e3c9c36f98e1007e8b7018c0f38d8adc07aecef42f5200114547c70","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"f7ea407b550c25114b304d72b047bbd5f6f88a17e418bb3598ee6846779e4144","signature":"3210d9a77a398359ba12e729bcf8e356114996899527b6a5b7b1298cb219ff50"},{"version":"7f3f583eb5428c0fbaccc2f4baf78aac1c50c42ac9363d02f9e3fa693c6c5ef7","signature":"3f6be1134e959bcbb40eda8612a185e32172a0d3401c72983a15711a69e48d49"},{"version":"0c60837c03aa07607b8d182f8c7600eec00ac011b964f6115c8f479f373939c5","signature":"7fd39554b6b8c3178bf89be22cde91b3e32e59cdf8b0c5bc7e04d94d460a4144"},"5698c4def2b0bf8d5fc60ef41f626cf5d706c1ebc9e29cbcecbf51ab82874ddd",{"version":"6173c8a6ff844745cf83d645d0c73a96f6a3ff3c96a3bd09b3e5511074668d1d","signature":"83ee6b3c67c7bb3270bc58b833f5c4bae70644dc6a4df77ee0ca95bd78cd800c"},"575b3b69b906a654b272ea7a58d43da3db6076b0e5256c12fe5f3cc336225503",{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa83e100f0c74a06c9d24f40a096c9e9cc3c02704250d01541e22c0ae9264eda","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"00b21ef538da5a2bbe419e2144f3be50661768e1e039ef2b57bb89f96aff9b18","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"e843e840f484f7e59b2ef9488501a301e3300a8e3e56aa84a02ddf915c7ce07d","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"18f8cfbb14ba9405e67d30968ae67b8d19133867d13ebc49c8ed37ec64ce9bdb","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f68328826a275104d92bd576c796c570f66365f25ea8bbaaa208727bce132d5f","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"18334defc3d0a0e1966f5f3c23c7c83b62c77811e51045c5a7ff3883b446f81f","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b17fcd63aa13734bf1d01419f4d6031b1c6a5fb2cbdb45e9839fb1762bdf0df","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"beb77fcd86c8cee62c32b2fb82753f5bc0e171d938e20af3cb0b8925db78d60b","impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"aa9224557befad144262c85b463c0a7ba8a3a0ad2a7c907349f8bb8bc3fe4abc","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"8d86c8d8c43e04cc3dde9953e571656812c8964a3651203af7b3a1df832a34df","affectsGlobalScope":true,"impliedFormat":1},{"version":"0121911fcc364eb821d058cf4c3b9339f197eccbe298098a4c6be0396b607d90","impliedFormat":1},{"version":"c6176c7b9f3769ba7f076c7a791588562c653cc0ba08fb2184f87bf78db2a87c","impliedFormat":1},{"version":"6def204d0b267101d3a42300a7363f53406c5d86b932e76e2365bf89689a85c4","impliedFormat":1},{"version":"4f766affd1281935fe5f7fd5d7af693a7c26d81adef7c1aefb84b9cd573a9cbb","impliedFormat":1},{"version":"165a0c1f95bc939c72f18a280fc707fba6f2f349539246b050cfc09eb1d9f446","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7baae9bf5b50e572e7742c886c73c6f8fa50b34190bc5f0fd20dd7e706fda832","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"5e9f8c1e042b0f598a9be018fc8c3cb670fe579e9f2e18e3388b63327544fe16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"b827f8800f42858f0a751a605c003b7ab571ff7af184436f36cef9bdfebae808","impliedFormat":1},{"version":"363eedb495912790e867da6ff96e81bf792c8cfe386321e8163b71823a35719a","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"6b306cd4282bbb54d4a6bb23cfb7a271160983dfc38c67b5a132504cfcc34896","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"450172a56b944c2d83f45cc11c9a388ea967cd301a21202aa0a23c34c7506a18","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"3af7d02e5d6ecbf363e61fb842ee55d3518a140fd226bdfb24a3bca6768c58df","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"7dfa742c23851808a77ec27062fbbd381c8c36bb3cfdff46cb8af6c6c233bfc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb078cfcd14dc0b1700a48272958f803f30f13f99111c5978c75c3a0aa07e40e","affectsGlobalScope":true,"impliedFormat":1},{"version":"784490137935e1e38c49b9289110e74a1622baf8a8907888dcbe9e476d7c5e44","impliedFormat":1},{"version":"420fdd37c51263be9db3fcac35ffd836216c71e6000e6a9740bb950fb0540654","impliedFormat":1},{"version":"73b0bff83ee76e3a9320e93c7fc15596e858b33c687c39a57567e75c43f2a324","impliedFormat":1},{"version":"3c947600f6f5664cca690c07fcf8567ca58d029872b52c31c2f51d06fbdb581b","affectsGlobalScope":true,"impliedFormat":1},{"version":"493c64d062139b1849b0e9c4c3a6465e1227d2b42be9e26ec577ca728984c041","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"87f287f296f3ff07dbd14ea7853c2400d995dccd7bd83206196d6c0974774e96","impliedFormat":1},{"version":"dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"5b7206ca5f2f6eeaac6daa285664f424e0b728f3e31937da89deb8696c5f1dbc","impliedFormat":1},{"version":"0504070e7eaba788f5d0d5926782ed177f1db01cee28363c488fae94950c0bbc","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"a8932b7a5ef936687cc5b2492b525e2ad5e7ed321becfea4a17d5a6c80f49e92","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"0e13570a7e86c6d83dd92e81758a930f63747483e2cd34ef36fcdb47d1f9726a","impliedFormat":1},{"version":"d26a79f97f25eb1c5fc36a8552e4decc7ad11104a016d31b1307c3afaf48feb1","impliedFormat":1},{"version":"6847334317c1bc1e6fc4b679b0095bbd2b6ee3b85fe3f26fc26bac462f68ef5e","impliedFormat":1},{"version":"2224f3072e3cc07906eeed5c71746779511fba2dd224addc5489bcdb489bdee5","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"fbf802b3a028f5eb22ad406ee5fc7c368f0acfd3a2a6d0f805120766f5717ec8","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"7e8d3f08435ad2cefe67f58182618bfc9a0a29db08cf2544b94cbcae754a9bd9","impliedFormat":1},{"version":"8cf9b9045a614f883b623c2f1a631ec6a93321747e933330b2eec0ee47164a34","impliedFormat":1},{"version":"b0f87d06834f4d3ff5b99dfb2f81f4a7a046dc99cecbdbf897fd50479cd98182","impliedFormat":1},{"version":"fc37aca06f6b8b296c42412a2e75ab53d30cd1fa8a340a3bb328a723fd678377","impliedFormat":1},{"version":"5f2c582b9ef260cb9559a64221b38606378c1fabe17694592cdfe5975a6d7efa","impliedFormat":1},{"version":"8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","impliedFormat":1},{"version":"ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","impliedFormat":1},{"version":"20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","impliedFormat":1},{"version":"6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a56fe175741cc8841835eb72e61fa5a34adcbc249ede0e3494c229f0750f6b85","impliedFormat":1},{"version":"bc81aff061c53a7140270555f4b22da4ecfe8601e8027cf5aa175fbdc7927c31","impliedFormat":1},{"version":"c0288f54de6f544706a3150c8b579b1a975870695c4be866f727ece6a16f3976","impliedFormat":1},{"version":"f8636a916949481bc363ae24cbeb8451fa98fd2d07329e0664a46567278c9adb","impliedFormat":1}],"root":[[82,84],86,87],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"erasableSyntaxOnly":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":false,"inlineSources":true,"isolatedDeclarations":true,"module":99,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","preserveConstEnums":true,"removeComments":false,"rewriteRelativeImportExtensions":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":6,"verbatimModuleSyntax":true},"referencedMap":[[85,1],[82,1],[83,1],[84,2],[87,3],[86,4],[195,5],[196,1],[198,6],[199,1],[197,5],[200,1],[210,7],[211,1],[205,8],[208,9],[213,10],[214,1],[206,1],[215,1],[209,1],[216,11],[217,12],[218,1],[201,1],[141,13],[142,13],[143,14],[90,15],[144,16],[145,17],[146,18],[88,1],[147,19],[148,20],[149,21],[150,22],[151,23],[152,24],[153,24],[154,25],[155,26],[156,27],[157,28],[91,1],[89,1],[158,29],[159,30],[160,31],[194,32],[161,33],[162,1],[163,34],[164,35],[165,36],[166,37],[167,38],[168,39],[169,40],[170,41],[171,42],[172,42],[173,43],[174,1],[175,1],[176,44],[178,45],[177,46],[179,47],[180,48],[181,49],[182,50],[183,51],[184,52],[185,53],[186,54],[187,55],[188,56],[189,57],[190,58],[191,59],[92,1],[93,60],[94,1],[95,1],[137,61],[138,62],[139,1],[140,47],[192,63],[193,64],[220,65],[219,66],[203,1],[204,1],[221,1],[246,67],[247,68],[223,69],[226,70],[244,67],[245,67],[235,67],[234,71],[232,67],[227,67],[240,67],[238,67],[242,67],[222,67],[239,67],[243,67],[228,67],[229,67],[241,67],[224,67],[230,67],[231,67],[233,67],[237,67],[248,72],[236,67],[225,67],[261,73],[260,1],[255,72],[257,74],[256,72],[249,72],[250,72],[252,72],[254,72],[258,74],[259,74],[251,74],[253,74],[202,75],[207,76],[212,1],[262,77],[264,78],[263,1],[80,1],[81,1],[15,1],[13,1],[14,1],[17,1],[16,1],[2,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[25,1],[3,1],[26,1],[27,1],[4,1],[28,1],[32,1],[29,1],[30,1],[31,1],[33,1],[34,1],[35,1],[5,1],[36,1],[37,1],[38,1],[39,1],[6,1],[43,1],[40,1],[41,1],[42,1],[44,1],[7,1],[45,1],[50,1],[51,1],[46,1],[47,1],[48,1],[49,1],[8,1],[55,1],[52,1],[53,1],[54,1],[56,1],[9,1],[57,1],[58,1],[59,1],[61,1],[60,1],[62,1],[63,1],[10,1],[64,1],[65,1],[66,1],[11,1],[67,1],[68,1],[69,1],[70,1],[71,1],[1,1],[72,1],[73,1],[12,1],[77,1],[75,1],[79,1],[74,1],[78,1],[76,1],[113,79],[125,80],[111,81],[126,82],[135,83],[102,84],[103,85],[101,86],[134,87],[129,88],[133,89],[105,90],[122,91],[104,92],[132,93],[99,94],[100,88],[106,95],[107,1],[112,96],[110,95],[97,97],[136,98],[127,99],[116,100],[115,95],[117,101],[120,102],[114,103],[118,104],[130,87],[108,105],[109,106],[121,107],[98,82],[124,108],[123,95],[119,109],[128,1],[96,1],[131,110]],"version":"5.8.2"}
|