@cyanheads/pubmed-mcp-server 2.10.10 → 2.10.12
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/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +10 -3
- package/dist/mcp-server/resources/definitions/database-info.resource.js +6 -6
- package/dist/mcp-server/resources/definitions/database-info.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_schemas.d.ts +16 -0
- package/dist/mcp-server/tools/definitions/_schemas.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_schemas.js +20 -0
- package/dist/mcp-server/tools/definitions/_schemas.js.map +1 -1
- package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts +6 -0
- package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/convert-ids.tool.js +28 -3
- package/dist/mcp-server/tools/definitions/convert-ids.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts +27 -0
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js +166 -24
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts +1 -0
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js +10 -6
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.js +40 -4
- package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.js +11 -13
- package/dist/mcp-server/tools/definitions/format-citations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js +42 -8
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.js +37 -2
- package/dist/mcp-server/tools/definitions/search-articles.tool.js.map +1 -1
- package/dist/services/error-contracts.d.ts +17 -0
- package/dist/services/error-contracts.d.ts.map +1 -1
- package/dist/services/error-contracts.js +19 -0
- package/dist/services/error-contracts.js.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.d.ts +4 -20
- package/dist/services/ncbi/formatting/citation-formatter.d.ts.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.js +406 -31
- package/dist/services/ncbi/formatting/citation-formatter.js.map +1 -1
- package/dist/services/ncbi/ncbi-service.d.ts +3 -2
- package/dist/services/ncbi/ncbi-service.d.ts.map +1 -1
- package/dist/services/ncbi/ncbi-service.js +22 -10
- package/dist/services/ncbi/ncbi-service.js.map +1 -1
- package/dist/services/ncbi/parsing/article-parser.d.ts +45 -2
- package/dist/services/ncbi/parsing/article-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/article-parser.js +201 -2
- package/dist/services/ncbi/parsing/article-parser.js.map +1 -1
- package/dist/services/ncbi/parsing/esummary-parser.d.ts +11 -1
- package/dist/services/ncbi/parsing/esummary-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/esummary-parser.js +48 -8
- package/dist/services/ncbi/parsing/esummary-parser.js.map +1 -1
- package/dist/services/ncbi/parsing/pmc-article-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/pmc-article-parser.js +33 -4
- package/dist/services/ncbi/parsing/pmc-article-parser.js.map +1 -1
- package/dist/services/ncbi/parsing/pmc-xml-helpers.d.ts +19 -0
- package/dist/services/ncbi/parsing/pmc-xml-helpers.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/pmc-xml-helpers.js +81 -2
- package/dist/services/ncbi/parsing/pmc-xml-helpers.js.map +1 -1
- package/dist/services/ncbi/parsing/xml-helpers.d.ts +29 -3
- package/dist/services/ncbi/parsing/xml-helpers.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/xml-helpers.js +46 -0
- package/dist/services/ncbi/parsing/xml-helpers.js.map +1 -1
- package/dist/services/ncbi/response-handler.d.ts.map +1 -1
- package/dist/services/ncbi/response-handler.js +96 -28
- package/dist/services/ncbi/response-handler.js.map +1 -1
- package/dist/services/ncbi/types.d.ts +172 -2
- package/dist/services/ncbi/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -41,10 +41,77 @@ export function textOf(node) {
|
|
|
41
41
|
const v = node[TEXT_KEY];
|
|
42
42
|
return v == null ? '' : String(v);
|
|
43
43
|
}
|
|
44
|
+
/** JATS element carrying a LaTeX rendering of a formula. */
|
|
45
|
+
const TEX_MATH_TAG = 'tex-math';
|
|
46
|
+
/** JATS container holding equivalent renderings of one object. */
|
|
47
|
+
const ALTERNATIVES_TAG = 'alternatives';
|
|
48
|
+
/**
|
|
49
|
+
* JATS pointers to an external rendering: a file reference, not a rendering of
|
|
50
|
+
* the object itself.
|
|
51
|
+
*/
|
|
52
|
+
const POINTER_TAGS = new Set([
|
|
53
|
+
'graphic',
|
|
54
|
+
'inline-graphic',
|
|
55
|
+
'media',
|
|
56
|
+
'inline-media',
|
|
57
|
+
]);
|
|
58
|
+
/**
|
|
59
|
+
* The `\begin{document}` … `\end{document}` body of a LaTeX document. The
|
|
60
|
+
* closing marker is optional so a deposit that opens the document and never
|
|
61
|
+
* closes it still yields its expression rather than falling back to the whole
|
|
62
|
+
* document, preamble included.
|
|
63
|
+
*/
|
|
64
|
+
const TEX_DOCUMENT_BODY = /\\begin\{document\}([\s\S]*?)(?:\\end\{document\}|$)/;
|
|
65
|
+
/**
|
|
66
|
+
* The expression a `<tex-math>` contributes: the body between
|
|
67
|
+
* `\begin{document}` and `\end{document}`.
|
|
68
|
+
*
|
|
69
|
+
* Publishers deposit `<tex-math>` as a complete LaTeX document —
|
|
70
|
+
* `\documentclass[12pt]{minimal}\usepackage{amsmath}…\begin{document}$$…$$\end{document}`
|
|
71
|
+
* — and every character of that preamble reached prose before this rule
|
|
72
|
+
* existed, once per formula (312 times in one Scientific Reports record). The
|
|
73
|
+
* math delimiters inside the body are kept, so the expression still reads as
|
|
74
|
+
* math rather than as bare tokens. A body deposited without the wrapper is
|
|
75
|
+
* already the expression and is returned unchanged. (#135)
|
|
76
|
+
*/
|
|
77
|
+
function texMathExpression(raw) {
|
|
78
|
+
return TEX_DOCUMENT_BODY.exec(raw)?.[1] ?? raw;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The single child of an `<alternatives>` whose text stands for the whole
|
|
82
|
+
* element.
|
|
83
|
+
*
|
|
84
|
+
* `<alternatives>` offers equivalent renderings of one object — a TeX and a
|
|
85
|
+
* MathML spelling of the same formula, a graphic and a marked-up table — so
|
|
86
|
+
* reading every child states the object twice in the same sentence. The
|
|
87
|
+
* `<tex-math>` is preferred because it survives as readable math, then any other
|
|
88
|
+
* rendering that carries text, and a pointer's own `<alt-text>` only when the
|
|
89
|
+
* deposit offers nothing else. Every candidate must carry text under the
|
|
90
|
+
* caller's `excluded` set, which is what keeps the selection from landing on a
|
|
91
|
+
* rendering that would then contribute nothing: an empty `<tex-math>`, a
|
|
92
|
+
* `<graphic>` naming its file, or a child the caller excludes by tag. Returns
|
|
93
|
+
* undefined when no child qualifies. (#135)
|
|
94
|
+
*
|
|
95
|
+
* Structural selections are unaffected: `<table-wrap>` and `<disp-formula>`
|
|
96
|
+
* resolve their own `<alternatives>` children by tag.
|
|
97
|
+
*/
|
|
98
|
+
export function selectAlternative(node, excluded) {
|
|
99
|
+
const children = childrenOf(node);
|
|
100
|
+
const carriesText = (child) => concatText(child, excluded).trim() !== '';
|
|
101
|
+
return (children.find((child) => tagNameOf(child) === TEX_MATH_TAG && carriesText(child)) ??
|
|
102
|
+
children.find((child) => !POINTER_TAGS.has(tagNameOf(child) ?? '') && carriesText(child)) ??
|
|
103
|
+
children.find(carriesText));
|
|
104
|
+
}
|
|
44
105
|
/**
|
|
45
106
|
* Concatenate text content in document order without normalizing whitespace.
|
|
46
107
|
* Internal helper so recursion preserves the original spacing between siblings.
|
|
47
108
|
* `excluded` skips a whole subtree by tag name; omitting it reads everything.
|
|
109
|
+
*
|
|
110
|
+
* Two JATS elements do not contribute the plain concatenation of their subtree:
|
|
111
|
+
* a `<tex-math>` contributes only its LaTeX document body, and an
|
|
112
|
+
* `<alternatives>` contributes exactly one child. Both rules live here so every
|
|
113
|
+
* prose consumer inherits them — paragraphs, table cells, captions, abstracts.
|
|
114
|
+
* (#135)
|
|
48
115
|
*/
|
|
49
116
|
function concatText(input, excluded) {
|
|
50
117
|
const nodes = Array.isArray(input) ? input : [input];
|
|
@@ -52,10 +119,22 @@ function concatText(input, excluded) {
|
|
|
52
119
|
for (const node of nodes) {
|
|
53
120
|
if (isTextNode(node)) {
|
|
54
121
|
parts.push(textOf(node));
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const tag = tagNameOf(node) ?? '';
|
|
125
|
+
if (excluded?.has(tag))
|
|
126
|
+
continue;
|
|
127
|
+
if (tag === TEX_MATH_TAG) {
|
|
128
|
+
parts.push(texMathExpression(concatText(childrenOf(node))));
|
|
129
|
+
continue;
|
|
55
130
|
}
|
|
56
|
-
|
|
57
|
-
|
|
131
|
+
if (tag === ALTERNATIVES_TAG) {
|
|
132
|
+
const chosen = selectAlternative(node, excluded);
|
|
133
|
+
if (chosen)
|
|
134
|
+
parts.push(concatText(chosen, excluded));
|
|
135
|
+
continue;
|
|
58
136
|
}
|
|
137
|
+
parts.push(concatText(childrenOf(node), excluded));
|
|
59
138
|
}
|
|
60
139
|
return parts.join('');
|
|
61
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmc-xml-helpers.js","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/pmc-xml-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,uFAAuF;AACvF,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;IACvD,CAAC;IACD,OAAO;AACT,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,MAAM,CAAC,IAAc,EAAE,IAAY;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAwC,CAAC;IACpE,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACjC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC1B,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,MAAM,CAAC,IAAc;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"pmc-xml-helpers.js","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/pmc-xml-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,20 +14,46 @@ export declare function ensureArray<T>(item: T | T[] | undefined | null): T[];
|
|
|
14
14
|
/**
|
|
15
15
|
* Safely extracts text content from an XML element, which might be a string or an object with a '#text' property.
|
|
16
16
|
* Handles cases where #text might be a number or boolean by converting to string.
|
|
17
|
+
*
|
|
18
|
+
* Always returns a string. Use {@link getOptionalText} where an absent element
|
|
19
|
+
* must stay distinguishable from an empty one — a default parameter fires on an
|
|
20
|
+
* explicit `undefined`, so this function cannot report absence. (#137)
|
|
17
21
|
* @param element - The XML element (string, object with #text, or undefined).
|
|
18
22
|
* @param defaultValue - The value to return if text cannot be extracted. Defaults to an empty string.
|
|
19
23
|
* @returns The text content or the default value.
|
|
20
24
|
*/
|
|
21
|
-
export declare function getText(element: unknown, defaultValue: undefined): string | undefined;
|
|
22
25
|
export declare function getText(element: unknown, defaultValue?: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Text of an XML element, with an absent or empty element reported as absent.
|
|
28
|
+
*
|
|
29
|
+
* NCBI ships a field it carries with no value as an empty element — `<AuthType/>`,
|
|
30
|
+
* `<ClusterID/>`, `<ELocationID></ELocationID>` — and a caller cannot act on the
|
|
31
|
+
* difference between that and no element at all. Both are `undefined` here, so
|
|
32
|
+
* a conditional spread (`...(v !== undefined && { v })`) omits the key instead
|
|
33
|
+
* of writing an empty string into the parsed record. (#137)
|
|
34
|
+
* @param element - The XML element (string, object with #text, or undefined).
|
|
35
|
+
* @returns The text content, or undefined when the element is absent or empty.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getOptionalText(element: unknown): string | undefined;
|
|
23
38
|
/**
|
|
24
39
|
* Safely extracts an attribute value from an XML element.
|
|
25
40
|
* Assumes attributes are prefixed with '@_' by fast-xml-parser.
|
|
41
|
+
*
|
|
42
|
+
* Always returns a string; {@link getOptionalAttribute} is the form that reports
|
|
43
|
+
* absence. (#137)
|
|
26
44
|
* @param element - The XML element object.
|
|
27
45
|
* @param attributeName - The name of the attribute (e.g., 'UI', 'MajorTopicYN', without the '@_' prefix).
|
|
28
46
|
* @param defaultValue - The value to return if the attribute is not found. Defaults to an empty string.
|
|
29
47
|
* @returns The attribute value or the default value.
|
|
30
48
|
*/
|
|
31
|
-
export declare function getAttribute(element: unknown, attributeName: string,
|
|
32
|
-
|
|
49
|
+
export declare function getAttribute(element: unknown, attributeName: string, // e.g., 'UI', 'MajorTopicYN'
|
|
50
|
+
defaultValue?: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Attribute value of an XML element, with a missing or empty attribute reported
|
|
53
|
+
* as absent — the {@link getOptionalText} rule applied to attributes. (#137)
|
|
54
|
+
* @param element - The XML element object.
|
|
55
|
+
* @param attributeName - The attribute name, without the '@_' prefix.
|
|
56
|
+
* @returns The attribute value, or undefined when it is missing or empty.
|
|
57
|
+
*/
|
|
58
|
+
export declare function getOptionalAttribute(element: unknown, attributeName: string): string | undefined;
|
|
33
59
|
//# sourceMappingURL=xml-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml-helpers.d.ts","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/xml-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,CAKpE;AAED
|
|
1
|
+
{"version":3,"file":"xml-helpers.d.ts","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/xml-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,CAKpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,SAAK,GAAG,MAAM,CAmBnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,EAAE,6BAA6B;AACpD,YAAY,SAAK,GAChB,MAAM,CAUR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhG"}
|
|
@@ -16,6 +16,17 @@ export function ensureArray(item) {
|
|
|
16
16
|
}
|
|
17
17
|
return Array.isArray(item) ? item : [item];
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Safely extracts text content from an XML element, which might be a string or an object with a '#text' property.
|
|
21
|
+
* Handles cases where #text might be a number or boolean by converting to string.
|
|
22
|
+
*
|
|
23
|
+
* Always returns a string. Use {@link getOptionalText} where an absent element
|
|
24
|
+
* must stay distinguishable from an empty one — a default parameter fires on an
|
|
25
|
+
* explicit `undefined`, so this function cannot report absence. (#137)
|
|
26
|
+
* @param element - The XML element (string, object with #text, or undefined).
|
|
27
|
+
* @param defaultValue - The value to return if text cannot be extracted. Defaults to an empty string.
|
|
28
|
+
* @returns The text content or the default value.
|
|
29
|
+
*/
|
|
19
30
|
export function getText(element, defaultValue = '') {
|
|
20
31
|
if (element == null) {
|
|
21
32
|
return defaultValue;
|
|
@@ -38,6 +49,31 @@ export function getText(element, defaultValue = '') {
|
|
|
38
49
|
}
|
|
39
50
|
return defaultValue;
|
|
40
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Text of an XML element, with an absent or empty element reported as absent.
|
|
54
|
+
*
|
|
55
|
+
* NCBI ships a field it carries with no value as an empty element — `<AuthType/>`,
|
|
56
|
+
* `<ClusterID/>`, `<ELocationID></ELocationID>` — and a caller cannot act on the
|
|
57
|
+
* difference between that and no element at all. Both are `undefined` here, so
|
|
58
|
+
* a conditional spread (`...(v !== undefined && { v })`) omits the key instead
|
|
59
|
+
* of writing an empty string into the parsed record. (#137)
|
|
60
|
+
* @param element - The XML element (string, object with #text, or undefined).
|
|
61
|
+
* @returns The text content, or undefined when the element is absent or empty.
|
|
62
|
+
*/
|
|
63
|
+
export function getOptionalText(element) {
|
|
64
|
+
return getText(element) || undefined;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Safely extracts an attribute value from an XML element.
|
|
68
|
+
* Assumes attributes are prefixed with '@_' by fast-xml-parser.
|
|
69
|
+
*
|
|
70
|
+
* Always returns a string; {@link getOptionalAttribute} is the form that reports
|
|
71
|
+
* absence. (#137)
|
|
72
|
+
* @param element - The XML element object.
|
|
73
|
+
* @param attributeName - The name of the attribute (e.g., 'UI', 'MajorTopicYN', without the '@_' prefix).
|
|
74
|
+
* @param defaultValue - The value to return if the attribute is not found. Defaults to an empty string.
|
|
75
|
+
* @returns The attribute value or the default value.
|
|
76
|
+
*/
|
|
41
77
|
export function getAttribute(element, attributeName, // e.g., 'UI', 'MajorTopicYN'
|
|
42
78
|
defaultValue = '') {
|
|
43
79
|
const fullAttributeName = `@_${attributeName}`; // As per fast-xml-parser config
|
|
@@ -53,4 +89,14 @@ defaultValue = '') {
|
|
|
53
89
|
}
|
|
54
90
|
return defaultValue;
|
|
55
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Attribute value of an XML element, with a missing or empty attribute reported
|
|
94
|
+
* as absent — the {@link getOptionalText} rule applied to attributes. (#137)
|
|
95
|
+
* @param element - The XML element object.
|
|
96
|
+
* @param attributeName - The attribute name, without the '@_' prefix.
|
|
97
|
+
* @returns The attribute value, or undefined when it is missing or empty.
|
|
98
|
+
*/
|
|
99
|
+
export function getOptionalAttribute(element, attributeName) {
|
|
100
|
+
return getAttribute(element, attributeName) || undefined;
|
|
101
|
+
}
|
|
56
102
|
//# sourceMappingURL=xml-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml-helpers.js","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/xml-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,IAAgC;IAC7D,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;
|
|
1
|
+
{"version":3,"file":"xml-helpers.js","sourceRoot":"","sources":["../../../../src/services/ncbi/parsing/xml-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,IAAgC;IAC7D,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE,YAAY,GAAG,EAAE;IACzD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC;IAClE,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,OAAkC,CAAC;QAC/C,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,GAAG,CAAC;YACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,aAAqB,EAAE,6BAA6B;AACpD,YAAY,GAAG,EAAE;IAEjB,MAAM,iBAAiB,GAAG,KAAK,aAAa,EAAE,CAAC,CAAC,gCAAgC;IAChF,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,OAAkC,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnC,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QACxC,IAAI,OAAO,GAAG,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,uCAAuC;QACzF,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAsC;IACzF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,aAAqB;IAC1E,OAAO,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,SAAS,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA2OrD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD;AAeD;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IACjD;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAElD,cAkBC;IAED;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IA2BtB,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAoBrE;IAED,sBAAsB,CAAC,CAAC,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,CAsOH;CACF"}
|
|
@@ -19,43 +19,78 @@ import { logger, requestContextService } from '@cyanheads/mcp-ts-core/utils';
|
|
|
19
19
|
import { XMLParser as FastXmlParser, XMLValidator } from 'fast-xml-parser';
|
|
20
20
|
import { recoveryFor } from '../error-contracts.js';
|
|
21
21
|
import { ORDERED_XML_PARSER_OPTIONS, XML_PROCESS_ENTITIES_OPTIONS, } from './parsing/ordered-xml-parser-options.js';
|
|
22
|
+
import { decodeHtmlEntities } from './parsing/text-helpers.js';
|
|
22
23
|
/**
|
|
23
24
|
* jpaths that NCBI may return as either a single value or an array.
|
|
24
25
|
* The `isArray` callback forces these to always parse as arrays for consistency.
|
|
26
|
+
*
|
|
27
|
+
* **Convention: one entry per shape, spelling the full path from the document
|
|
28
|
+
* root.** fast-xml-parser supplies that full dotted path and the lookup is an
|
|
29
|
+
* exact match, so an entry naming only its last segments never fires. Where a
|
|
30
|
+
* child is shared between record kinds, both ancestries are listed —
|
|
31
|
+
* `PubmedArticle` and `PubmedBookArticle.BookDocument` each get their own line.
|
|
32
|
+
* (#138)
|
|
33
|
+
*
|
|
34
|
+
* Two absences are deliberate. `<Link>` carries exactly one `<Id>`, which
|
|
35
|
+
* `find-related` reads without `ensureArray`, so listing it would strand every
|
|
36
|
+
* related PMID; and the JATS paths a PMC full-text response uses are governed by
|
|
37
|
+
* {@link ORDERED_XML_PARSER_OPTIONS}, which declares no `isArray` at all, so an
|
|
38
|
+
* entry for one here could never fire.
|
|
39
|
+
*
|
|
40
|
+
* Read sites still pass values through `ensureArray`, which is why correcting
|
|
41
|
+
* the previously ancestor-less entries changes nothing downstream. It stays.
|
|
25
42
|
*/
|
|
26
43
|
const NCBI_ARRAY_JPATHS = new Set([
|
|
27
|
-
|
|
44
|
+
// ESearch
|
|
28
45
|
'eSearchResult.IdList.Id',
|
|
46
|
+
// EFetch — journal articles
|
|
29
47
|
'PubmedArticleSet.PubmedArticle',
|
|
48
|
+
'PubmedArticleSet.PubmedArticle.MedlineCitation.Article.AuthorList.Author',
|
|
49
|
+
'PubmedArticleSet.PubmedArticle.MedlineCitation.Article.AuthorList.Author.AffiliationInfo',
|
|
50
|
+
'PubmedArticleSet.PubmedArticle.MedlineCitation.Article.GrantList.Grant',
|
|
51
|
+
'PubmedArticleSet.PubmedArticle.MedlineCitation.Article.PublicationTypeList.PublicationType',
|
|
52
|
+
'PubmedArticleSet.PubmedArticle.MedlineCitation.KeywordList.Keyword',
|
|
53
|
+
'PubmedArticleSet.PubmedArticle.MedlineCitation.MeshHeadingList.MeshHeading',
|
|
54
|
+
'PubmedArticleSet.PubmedArticle.MedlineCitation.MeshHeadingList.MeshHeading.QualifierName',
|
|
55
|
+
'PubmedArticleSet.PubmedArticle.PubmedData.History.PubMedPubDate',
|
|
56
|
+
// EFetch — Bookshelf records
|
|
57
|
+
'PubmedArticleSet.PubmedBookArticle',
|
|
58
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.AuthorList',
|
|
59
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.AuthorList.Author',
|
|
60
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.AuthorList.Author.AffiliationInfo',
|
|
61
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.KeywordList.Keyword',
|
|
62
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.PublicationType',
|
|
63
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.Book.AuthorList',
|
|
64
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.Book.AuthorList.Author',
|
|
65
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.Book.ELocationID',
|
|
66
|
+
'PubmedArticleSet.PubmedBookArticle.BookDocument.Book.Isbn',
|
|
67
|
+
'PubmedArticleSet.PubmedBookArticle.PubmedBookData.History.PubMedPubDate',
|
|
30
68
|
'PubmedArticleSet.DeleteCitation.PMID',
|
|
31
|
-
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
|
|
35
|
-
'
|
|
36
|
-
'
|
|
37
|
-
|
|
38
|
-
'History.PubMedPubDate',
|
|
39
|
-
'LinkSet.LinkSetDb.Link',
|
|
40
|
-
'Link.Id',
|
|
41
|
-
'DbInfo.FieldList.Field',
|
|
42
|
-
'DbInfo.LinkList.Link',
|
|
69
|
+
// ELink
|
|
70
|
+
'eLinkResult.LinkSet.LinkSetDb',
|
|
71
|
+
'eLinkResult.LinkSet.LinkSetDb.Link',
|
|
72
|
+
// EInfo
|
|
73
|
+
'eInfoResult.DbInfo.FieldList.Field',
|
|
74
|
+
'eInfoResult.DbInfo.LinkList.Link',
|
|
75
|
+
// ESummary
|
|
43
76
|
'eSummaryResult.DocSum',
|
|
44
|
-
|
|
77
|
+
// EFetch — MeSH descriptor records
|
|
45
78
|
'DescriptorRecordSet.DescriptorRecord',
|
|
46
|
-
'ConceptList.Concept',
|
|
47
|
-
'TermList.Term',
|
|
48
|
-
'TreeNumberList.TreeNumber',
|
|
49
|
-
'pmc-articleset.article',
|
|
50
|
-
'article-meta.article-id',
|
|
51
|
-
'article-meta.pub-date',
|
|
52
|
-
'contrib-group.contrib',
|
|
53
|
-
'kwd-group.kwd',
|
|
54
|
-
'body.sec',
|
|
55
|
-
'sec.sec',
|
|
56
|
-
'sec.p',
|
|
57
|
-
'ref-list.ref',
|
|
79
|
+
'DescriptorRecordSet.DescriptorRecord.ConceptList.Concept',
|
|
80
|
+
'DescriptorRecordSet.DescriptorRecord.ConceptList.Concept.TermList.Term',
|
|
81
|
+
'DescriptorRecordSet.DescriptorRecord.TreeNumberList.TreeNumber',
|
|
58
82
|
]);
|
|
83
|
+
/**
|
|
84
|
+
* ESummary version-1 `<Item>` elements, at any nesting depth.
|
|
85
|
+
*
|
|
86
|
+
* A `DocSum` item of `Type="List"` or `Type="Structure"` holds further `<Item>`
|
|
87
|
+
* children, and `lookup-mesh` walks three levels of them to reach a tree number.
|
|
88
|
+
* The nesting is open-ended, so one anchored pattern covers it where a fixed
|
|
89
|
+
* list of paths would silently cap the depth. Anchored at the root for the same
|
|
90
|
+
* reason the set is: a suffix match would catch an unrelated `Item` elsewhere.
|
|
91
|
+
* (#138)
|
|
92
|
+
*/
|
|
93
|
+
const ESUMMARY_ITEM_JPATH = /^eSummaryResult\.DocSum(?:\.Item)+$/;
|
|
59
94
|
/**
|
|
60
95
|
* Ordered paths to check for NCBI error messages in parsed XML.
|
|
61
96
|
* More specific paths come first so they take precedence.
|
|
@@ -134,6 +169,11 @@ const ERROR_TAG_REGEX = /<ERROR(?:\s[^>]*)?>/;
|
|
|
134
169
|
* Unicode superscript map. Covers digits, common operators, and the few
|
|
135
170
|
* letters that have superscript codepoints (n, i). `−` (U+2212, the proper
|
|
136
171
|
* minus) is normalized to U+207B alongside ASCII `-`.
|
|
172
|
+
*
|
|
173
|
+
* `®` and `™` map to themselves. They have no superscript codepoint because
|
|
174
|
+
* they need none — the glyphs are already raised, and the `<sup>` around them
|
|
175
|
+
* (`GeneReviews<sup>®</sup>`) is presentation, not content. Without an
|
|
176
|
+
* entry the `^` fallback fires and a book title renders `GeneReviews^®`. (#114)
|
|
137
177
|
*/
|
|
138
178
|
const SUPERSCRIPT_MAP = {
|
|
139
179
|
'0': '⁰',
|
|
@@ -154,6 +194,8 @@ const SUPERSCRIPT_MAP = {
|
|
|
154
194
|
')': '⁾',
|
|
155
195
|
n: 'ⁿ',
|
|
156
196
|
i: 'ⁱ',
|
|
197
|
+
'®': '®',
|
|
198
|
+
'™': '™',
|
|
157
199
|
};
|
|
158
200
|
/**
|
|
159
201
|
* Unicode subscript map. Covers digits and operators; alphabetic subscripts
|
|
@@ -178,9 +220,19 @@ const SUBSCRIPT_MAP = {
|
|
|
178
220
|
'(': '₍',
|
|
179
221
|
')': '₎',
|
|
180
222
|
};
|
|
223
|
+
/**
|
|
224
|
+
* Map one `<sup>`/`<sub>` payload, or fall back to the ASCII prefix form.
|
|
225
|
+
*
|
|
226
|
+
* Lookup runs on the decoded text because this pass happens before the XML
|
|
227
|
+
* parser: a registered mark reaches it as `®`, not `®`, and a per-character
|
|
228
|
+
* lookup over the entity's own characters can only ever miss. The fallback
|
|
229
|
+
* returns the *original* content, so an unmappable payload keeps whatever
|
|
230
|
+
* encoding it arrived in and the string stays valid XML for the parser that
|
|
231
|
+
* follows — nothing in either table decodes to `&`, `<` or `>`.
|
|
232
|
+
*/
|
|
181
233
|
function mapInlineContent(content, table, asciiPrefix) {
|
|
182
234
|
let out = '';
|
|
183
|
-
for (const ch of content) {
|
|
235
|
+
for (const ch of decodeHtmlEntities(content)) {
|
|
184
236
|
const mapped = table[ch];
|
|
185
237
|
if (mapped === undefined)
|
|
186
238
|
return `${asciiPrefix}${content}`;
|
|
@@ -212,6 +264,17 @@ export function flattenInlineMarkup(xml) {
|
|
|
212
264
|
.replace(/<inf>([^<]*)<\/inf>/g, (_, c) => mapInlineContent(c, SUBSCRIPT_MAP, '_'))
|
|
213
265
|
.replace(/<\/?(?:i|b|u|sc)>/g, '');
|
|
214
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Keeps `Book/Isbn` out of fast-xml-parser's numeric coercion.
|
|
269
|
+
*
|
|
270
|
+
* An ISBN-10 can start with a zero (`0309605393`); coerced, it becomes the
|
|
271
|
+
* number 309605393 and the leading digit is gone before any read site sees it,
|
|
272
|
+
* so the record ships a wrong ISBN with no error anywhere. The processor's
|
|
273
|
+
* contract does the work: returning `undefined` leaves the raw text alone,
|
|
274
|
+
* while returning the value unchanged for every other tag keeps the existing
|
|
275
|
+
* coercion exactly as it was. (#114)
|
|
276
|
+
*/
|
|
277
|
+
const preserveIsbnText = (tagName, tagValue) => tagName === 'Isbn' ? undefined : tagValue;
|
|
215
278
|
/**
|
|
216
279
|
* Parses NCBI E-utility responses (XML, JSON, text) and checks for NCBI-specific
|
|
217
280
|
* error structures embedded in response bodies.
|
|
@@ -242,7 +305,12 @@ export class NcbiResponseHandler {
|
|
|
242
305
|
attributeNamePrefix: '@_',
|
|
243
306
|
processEntities: XML_PROCESS_ENTITIES_OPTIONS,
|
|
244
307
|
htmlEntities: true,
|
|
245
|
-
isArray: (_name, jpath) =>
|
|
308
|
+
isArray: (_name, jpath) => {
|
|
309
|
+
// `jPathOrMatcher` is a string unless `jPath: false` is set, which it is not.
|
|
310
|
+
const path = jpath;
|
|
311
|
+
return NCBI_ARRAY_JPATHS.has(path) || ESUMMARY_ITEM_JPATH.test(path);
|
|
312
|
+
},
|
|
313
|
+
tagValueProcessor: preserveIsbnText,
|
|
246
314
|
};
|
|
247
315
|
this.xmlParser = new FastXmlParser({ ...flatOptions, parseTagValue: true });
|
|
248
316
|
this.verbatimXmlParser = new FastXmlParser({ ...flatOptions, parseTagValue: false });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC7E;;;;;;;;GAQG;AACH,8GAA8G;AAC9G,OAAO,EAAE,SAAS,IAAI,aAAa,EAAmB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE5F,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,yCAAyC,CAAC;AAGjD;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,WAAW;IACX,yBAAyB;IACzB,gCAAgC;IAChC,sCAAsC;IACtC,mBAAmB;IACnB,iBAAiB;IACjB,6BAA6B;IAC7B,2BAA2B;IAC3B,iBAAiB;IACjB,qBAAqB;IACrB,qCAAqC;IACrC,uBAAuB;IACvB,wBAAwB;IACxB,SAAS;IACT,wBAAwB;IACxB,sBAAsB;IACtB,uBAAuB;IACvB,aAAa;IACb,sCAAsC;IACtC,qBAAqB;IACrB,eAAe;IACf,2BAA2B;IAC3B,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,uBAAuB;IACvB,eAAe;IACf,UAAU;IACV,SAAS;IACT,OAAO;IACP,cAAc;CACf,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,+CAA+C;IAC/C,OAAO;CACR,CAAC;AAEF;;;;GAIG;AACH,MAAM,uBAAuB,GAAa;IACxC,8BAA8B;IAC9B,uBAAuB;IACvB,gBAAgB;CACjB,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,wCAAwC;IACxC,uCAAuC;IACvC,gDAAgD;IAChD,yCAAyC;CAC1C,CAAC;AAEF,SAAS,WAAW,CAAC,GAAY,EAAE,IAAY;IAC7C,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAK,OAAmC,EAAE,CAAC;YAC3F,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO;QACT,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAe,EAAE,MAAM,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;YACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,IAAI,IAAI,OAAQ,IAAgC,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,GAAI,IAAgC,CAAC,OAAO,CAAW,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,IAAI,oCAAoC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,OAAO,mFAAmF,CAAC;QAC7F,CAAC;QACD,OAAO,mEAAmE,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,eAAe,GAAqC;IACxD,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAqC;IACtD,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,SAAS,gBAAgB,CACvB,OAAe,EACf,KAAuC,EACvC,WAAmB;IAEnB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,GAAG,WAAW,GAAG,OAAO,EAAE,CAAC;QAC5D,GAAG,IAAI,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG;SACP,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;SAC5F,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;SAC1F,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;SAC1F,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,CAAgB;IAC1C;;;;OAIG;IACc,gBAAgB,CAAgB;IACjD;;;;;;;;;OASG;IACc,iBAAiB,CAAgB;IAElD;QACE,kEAAkE;QAClE,MAAM,WAAW,GAAG;YAClB,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,IAAI;YACzB,eAAe,EAAE,4BAA4B;YAC7C,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAe,CAAC;SAC7C,CAAC;QAEvB,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,gBAAgB,GAAG,IAAI,aAAa,CAAC,0BAA0B,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;;OAQG;IACK,cAAc,CAAC,SAAkC,EAAE,QAAgB;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CACV,6CAA6C,EAC7C,qBAAqB,CAAC,oBAAoB,CAAC;YACzC,SAAS,EAAE,cAAc;YACzB,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;SACvD,CAAC,CACH,CAAC;QAEF,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,QAAQ,CAAC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBAC5D,MAAM,EAAE,yBAAyB;gBACjC,QAAQ;gBACR,UAAU,EAAE,aAAa;gBACzB,GAAG,WAAW,CAAC,yBAAyB,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,kBAAkB,CAAC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACtE,MAAM,EAAE,kBAAkB;YAC1B,QAAQ;YACR,UAAU,EAAE,aAAa;YACzB,GAAG,WAAW,CAAC,kBAAkB,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,SAAkC;QACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;IAC7F,CAAC;IAED,sBAAsB,CACpB,YAAoB,EACpB,QAAgB,EAChB,OAA4B;QAE5B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;QAE1C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CACV,mCAAmC,EACnC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,eAAe;gBAC1B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;aACzC,CAAC,CACH,CAAC;YACF,OAAO,YAAiB,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CACV,iCAAiC,EACjC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,cAAc;gBACzB,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;aACzC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,mCAAmC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,CACZ,0DAA0D,EAC1D,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,kBAAkB;oBAC7B,iBAAiB,EAAE,EAAE,QAAQ,EAAE;iBAChC,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CACtB,0EAA0E,EAC1E,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAC7E,CAAC;YACJ,CAAC;YAED,yEAAyE;YACzE,yEAAyE;YACzE,uEAAuE;YACvE,qEAAqE;YACrE,0EAA0E;YAC1E,+DAA+D;YAC/D,MAAM,eAAe,GAAG,YAAY;iBACjC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;iBAC/B,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;iBAChC,IAAI,EAAE,CAAC;YACV,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,OAAO,CACZ,sEAAsE,EACtE,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,mBAAmB;oBAC9B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE;iBACrE,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CACtB,wFAAwF,EACxF,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAC7E,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACjE,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CACV,iCAAiC,EACjC,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,gBAAgB;oBAC3B,iBAAiB,EAAE;wBACjB,QAAQ;wBACR,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;qBAChD;iBACF,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CAAC,iCAAiC,EAAE;oBAC1D,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ;oBACR,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC/C,GAAG,WAAW,CAAC,uBAAuB,CAAC;iBACxC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,EAAE,gBAAgB,IAAI,KAAK,CAAC;YAEtD,IAAI,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrD,uEAAuE;gBACvE,wEAAwE;gBACxE,sBAAsB;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAA4B,CAAC;gBAClF,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,yEAAyE;YACzE,yCAAyC;YACzC,MAAM,MAAM,GAAG,UAAU;gBACvB,CAAC,CAAC,IAAI,CAAC,gBAAgB;gBACvB,CAAC,CAAC,OAAO,EAAE,iBAAiB;oBAC1B,CAAC,CAAC,IAAI,CAAC,iBAAiB;oBACxB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,uEAAuE;YACvE,6DAA6D;YAC7D,8CAA8C;YAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAClF,IAAI,SAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,WAAW,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3E,MAAM,CAAC,KAAK,CACV,mDAAmD,EACnD,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,mBAAmB;oBAC9B,iBAAiB,EAAE;wBACjB,QAAQ;wBACR,WAAW;wBACX,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;qBAChD;iBACF,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CACtB,2CAA2C,WAAW,EAAE,EACxD;oBACE,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ;oBACR,WAAW;oBACX,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC/C,GAAG,WAAW,CAAC,uBAAuB,CAAC;iBACxC,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,SAAoC,CAAC;gBACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;gBACxF,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,CACV,4CAA4C,EAC5C,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,YAAY;oBACvB,iBAAiB,EAAE,EAAE,QAAQ,EAAE;iBAChC,CAAC,CACH,CAAC;gBACF,OAAO,YAAiB,CAAC;YAC3B,CAAC;YAED,MAAM,CAAC,KAAK,CACV,mCAAmC,EACnC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,gBAAgB;gBAC3B,iBAAiB,EAAE,EAAE,QAAQ,EAAE;aAChC,CAAC,CACH,CAAC;YACF,OAAO,SAAc,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CACV,kCAAkC,EAClC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,eAAe;gBAC1B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;aACzC,CAAC,CACH,CAAC;YAEF,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,kBAAkB,CACtB,qCAAqC,EACrC;oBACE,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ;oBACR,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC/C,GAAG,WAAW,CAAC,uBAAuB,CAAC;iBACxC,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBAC9D,MAAM,YAAY,GAAG,MAAM,CAAE,MAAkC,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,CAAC,KAAK,CACV,8CAA8C,EAC9C,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,eAAe;oBAC1B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;iBACrD,CAAC,CACH,CAAC;gBACF,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;oBAC9D,MAAM,QAAQ,CAAC,mBAAmB,YAAY,EAAE,EAAE;wBAChD,MAAM,EAAE,yBAAyB;wBACjC,QAAQ;wBACR,UAAU,EAAE,CAAC,YAAY,CAAC;wBAC1B,GAAG,WAAW,CAAC,yBAAyB,CAAC;qBAC1C,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,kBAAkB,CAAC,mBAAmB,YAAY,EAAE,EAAE;oBAC1D,MAAM,EAAE,kBAAkB;oBAC1B,QAAQ;oBACR,SAAS,EAAE,YAAY;oBACvB,GAAG,WAAW,CAAC,kBAAkB,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,KAAK,CACV,oCAAoC,EACpC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,iBAAiB;gBAC5B,iBAAiB,EAAE,EAAE,QAAQ,EAAE;aAChC,CAAC,CACH,CAAC;YACF,OAAO,MAAW,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,OAAO,CACZ,sBAAsB,OAAO,iCAAiC,EAC9D,qBAAqB,CAAC,oBAAoB,CAAC;YACzC,SAAS,EAAE,oBAAoB;YAC/B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;SACzC,CAAC,CACH,CAAC;QACF,OAAO,YAAiB,CAAC;IAC3B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../../src/services/ncbi/response-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC7E;;;;;;;;GAQG;AACH,8GAA8G;AAC9G,OAAO,EAAE,SAAS,IAAI,aAAa,EAAmB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE5F,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,UAAU;IACV,yBAAyB;IACzB,4BAA4B;IAC5B,gCAAgC;IAChC,0EAA0E;IAC1E,0FAA0F;IAC1F,wEAAwE;IACxE,4FAA4F;IAC5F,oEAAoE;IACpE,4EAA4E;IAC5E,0FAA0F;IAC1F,iEAAiE;IACjE,6BAA6B;IAC7B,oCAAoC;IACpC,4DAA4D;IAC5D,mEAAmE;IACnE,mFAAmF;IACnF,qEAAqE;IACrE,iEAAiE;IACjE,iEAAiE;IACjE,wEAAwE;IACxE,kEAAkE;IAClE,2DAA2D;IAC3D,yEAAyE;IACzE,sCAAsC;IACtC,QAAQ;IACR,+BAA+B;IAC/B,oCAAoC;IACpC,QAAQ;IACR,oCAAoC;IACpC,kCAAkC;IAClC,WAAW;IACX,uBAAuB;IACvB,mCAAmC;IACnC,sCAAsC;IACtC,0DAA0D;IAC1D,wEAAwE;IACxE,gEAAgE;CACjE,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,+CAA+C;IAC/C,OAAO;CACR,CAAC;AAEF;;;;GAIG;AACH,MAAM,uBAAuB,GAAa;IACxC,8BAA8B;IAC9B,uBAAuB;IACvB,gBAAgB;CACjB,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,wCAAwC;IACxC,uCAAuC;IACvC,gDAAgD;IAChD,yCAAyC;CAC1C,CAAC;AAEF,SAAS,WAAW,CAAC,GAAY,EAAE,IAAY;IAC7C,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAK,OAAmC,EAAE,CAAC;YAC3F,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO;QACT,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAe,EAAE,MAAM,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;YACtF,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,IAAI,IAAI,OAAQ,IAAgC,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClF,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,GAAI,IAAgC,CAAC,OAAO,CAAW,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,IAAI,oCAAoC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,OAAO,mFAAmF,CAAC;QAC7F,CAAC;QACD,OAAO,mEAAmE,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAqC;IACxD,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAqC;IACtD,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CACvB,OAAe,EACf,KAAuC,EACvC,WAAmB;IAEnB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,GAAG,WAAW,GAAG,OAAO,EAAE,CAAC;QAC5D,GAAG,IAAI,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG;SACP,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;SAC5F,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;SAC1F,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;SAC1F,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,QAAgB,EAAsB,EAAE,CACjF,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACb,SAAS,CAAgB;IAC1C;;;;OAIG;IACc,gBAAgB,CAAgB;IACjD;;;;;;;;;OASG;IACc,iBAAiB,CAAgB;IAElD;QACE,kEAAkE;QAClE,MAAM,WAAW,GAAG;YAClB,gBAAgB,EAAE,KAAK;YACvB,mBAAmB,EAAE,IAAI;YACzB,eAAe,EAAE,4BAA4B;YAC7C,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxB,8EAA8E;gBAC9E,MAAM,IAAI,GAAG,KAAe,CAAC;gBAC7B,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC;YACD,iBAAiB,EAAE,gBAAgB;SACf,CAAC;QAEvB,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,GAAG,IAAI,aAAa,CAAC,EAAE,GAAG,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,gBAAgB,GAAG,IAAI,aAAa,CAAC,0BAA0B,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;;OAQG;IACK,cAAc,CAAC,SAAkC,EAAE,QAAgB;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CACV,6CAA6C,EAC7C,qBAAqB,CAAC,oBAAoB,CAAC;YACzC,SAAS,EAAE,cAAc;YACzB,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;SACvD,CAAC,CACH,CAAC;QAEF,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,MAAM,QAAQ,CAAC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBAC5D,MAAM,EAAE,yBAAyB;gBACjC,QAAQ;gBACR,UAAU,EAAE,aAAa;gBACzB,GAAG,WAAW,CAAC,yBAAyB,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,kBAAkB,CAAC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACtE,MAAM,EAAE,kBAAkB;YAC1B,QAAQ;YACR,UAAU,EAAE,aAAa;YACzB,GAAG,WAAW,CAAC,kBAAkB,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,SAAkC;QACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;IAC7F,CAAC;IAED,sBAAsB,CACpB,YAAoB,EACpB,QAAgB,EAChB,OAA4B;QAE5B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;QAE1C,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CACV,mCAAmC,EACnC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,eAAe;gBAC1B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;aACzC,CAAC,CACH,CAAC;YACF,OAAO,YAAiB,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CACV,iCAAiC,EACjC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,cAAc;gBACzB,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;aACzC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,mCAAmC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,CACZ,0DAA0D,EAC1D,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,kBAAkB;oBAC7B,iBAAiB,EAAE,EAAE,QAAQ,EAAE;iBAChC,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CACtB,0EAA0E,EAC1E,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAC7E,CAAC;YACJ,CAAC;YAED,yEAAyE;YACzE,yEAAyE;YACzE,uEAAuE;YACvE,qEAAqE;YACrE,0EAA0E;YAC1E,+DAA+D;YAC/D,MAAM,eAAe,GAAG,YAAY;iBACjC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;iBAC/B,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;iBAChC,IAAI,EAAE,CAAC;YACV,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,OAAO,CACZ,sEAAsE,EACtE,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,mBAAmB;oBAC9B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE;iBACrE,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CACtB,wFAAwF,EACxF,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAC7E,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACjE,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CACV,iCAAiC,EACjC,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,gBAAgB;oBAC3B,iBAAiB,EAAE;wBACjB,QAAQ;wBACR,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;qBAChD;iBACF,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CAAC,iCAAiC,EAAE;oBAC1D,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ;oBACR,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC/C,GAAG,WAAW,CAAC,uBAAuB,CAAC;iBACxC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,EAAE,gBAAgB,IAAI,KAAK,CAAC;YAEtD,IAAI,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrD,uEAAuE;gBACvE,wEAAwE;gBACxE,sBAAsB;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAA4B,CAAC;gBAClF,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,yEAAyE;YACzE,yCAAyC;YACzC,MAAM,MAAM,GAAG,UAAU;gBACvB,CAAC,CAAC,IAAI,CAAC,gBAAgB;gBACvB,CAAC,CAAC,OAAO,EAAE,iBAAiB;oBAC1B,CAAC,CAAC,IAAI,CAAC,iBAAiB;oBACxB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACrB,uEAAuE;YACvE,6DAA6D;YAC7D,8CAA8C;YAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAClF,IAAI,SAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,WAAW,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3E,MAAM,CAAC,KAAK,CACV,mDAAmD,EACnD,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,mBAAmB;oBAC9B,iBAAiB,EAAE;wBACjB,QAAQ;wBACR,WAAW;wBACX,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;qBAChD;iBACF,CAAC,CACH,CAAC;gBACF,MAAM,kBAAkB,CACtB,2CAA2C,WAAW,EAAE,EACxD;oBACE,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ;oBACR,WAAW;oBACX,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC/C,GAAG,WAAW,CAAC,uBAAuB,CAAC;iBACxC,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,SAAoC,CAAC;gBACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;gBACxF,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,CACV,4CAA4C,EAC5C,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,YAAY;oBACvB,iBAAiB,EAAE,EAAE,QAAQ,EAAE;iBAChC,CAAC,CACH,CAAC;gBACF,OAAO,YAAiB,CAAC;YAC3B,CAAC;YAED,MAAM,CAAC,KAAK,CACV,mCAAmC,EACnC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,gBAAgB;gBAC3B,iBAAiB,EAAE,EAAE,QAAQ,EAAE;aAChC,CAAC,CACH,CAAC;YACF,OAAO,SAAc,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CACV,kCAAkC,EAClC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,eAAe;gBAC1B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;aACzC,CAAC,CACH,CAAC;YAEF,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,kBAAkB,CACtB,qCAAqC,EACrC;oBACE,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ;oBACR,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC/C,GAAG,WAAW,CAAC,uBAAuB,CAAC;iBACxC,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBAC9D,MAAM,YAAY,GAAG,MAAM,CAAE,MAAkC,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,CAAC,KAAK,CACV,8CAA8C,EAC9C,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,eAAe;oBAC1B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;iBACrD,CAAC,CACH,CAAC;gBACF,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;oBAC9D,MAAM,QAAQ,CAAC,mBAAmB,YAAY,EAAE,EAAE;wBAChD,MAAM,EAAE,yBAAyB;wBACjC,QAAQ;wBACR,UAAU,EAAE,CAAC,YAAY,CAAC;wBAC1B,GAAG,WAAW,CAAC,yBAAyB,CAAC;qBAC1C,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,kBAAkB,CAAC,mBAAmB,YAAY,EAAE,EAAE;oBAC1D,MAAM,EAAE,kBAAkB;oBAC1B,QAAQ;oBACR,SAAS,EAAE,YAAY;oBACvB,GAAG,WAAW,CAAC,kBAAkB,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,KAAK,CACV,oCAAoC,EACpC,qBAAqB,CAAC,oBAAoB,CAAC;gBACzC,SAAS,EAAE,iBAAiB;gBAC5B,iBAAiB,EAAE,EAAE,QAAQ,EAAE;aAChC,CAAC,CACH,CAAC;YACF,OAAO,MAAW,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,OAAO,CACZ,sBAAsB,OAAO,iCAAiC,EAC9D,qBAAqB,CAAC,oBAAoB,CAAC;YACzC,SAAS,EAAE,oBAAoB;YAC/B,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;SACzC,CAAC,CACH,CAAC;QACF,OAAO,YAAiB,CAAC;IAC3B,CAAC;CACF"}
|