@cyanheads/pubmed-mcp-server 2.10.18 → 2.10.20
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 +16 -15
- package/CLAUDE.md +16 -15
- package/Dockerfile +86 -36
- package/README.md +86 -109
- package/changelog/2.10.x/2.10.19.md +42 -0
- package/changelog/2.10.x/2.10.20.md +63 -0
- package/dist/mcp-server/resources/definitions/database-info.resource.d.ts +43 -1
- package/dist/mcp-server/resources/definitions/database-info.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/database-info.resource.js +2 -0
- package/dist/mcp-server/resources/definitions/database-info.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_text.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/_text.js +10 -5
- package/dist/mcp-server/tools/definitions/_text.js.map +1 -1
- package/dist/mcp-server/tools/definitions/_visible-text.d.ts +19 -0
- package/dist/mcp-server/tools/definitions/_visible-text.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/_visible-text.js +22 -0
- package/dist/mcp-server/tools/definitions/_visible-text.js.map +1 -0
- package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts +11 -4
- package/dist/mcp-server/tools/definitions/convert-ids.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/convert-ids.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/convert-ids.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts +20 -7
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js +68 -15
- package/dist/mcp-server/tools/definitions/fetch-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts +37 -12
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js +590 -481
- package/dist/mcp-server/tools/definitions/fetch-fulltext.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts +5 -5
- package/dist/mcp-server/tools/definitions/find-related.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/find-related.tool.js +31 -13
- package/dist/mcp-server/tools/definitions/find-related.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts +11 -4
- package/dist/mcp-server/tools/definitions/format-citations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts +26 -21
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js +109 -55
- package/dist/mcp-server/tools/definitions/lookup-citation.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts +15 -7
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js +19 -11
- package/dist/mcp-server/tools/definitions/lookup-mesh.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.d.ts +20 -2
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.js +98 -14
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-fetch.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts +21 -6
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js +42 -10
- package/dist/mcp-server/tools/definitions/pubmed-europepmc-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts +42 -18
- package/dist/mcp-server/tools/definitions/search-articles.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-articles.tool.js +220 -48
- package/dist/mcp-server/tools/definitions/search-articles.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts +15 -7
- package/dist/mcp-server/tools/definitions/spell-check.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/spell-check.tool.js +13 -9
- package/dist/mcp-server/tools/definitions/spell-check.tool.js.map +1 -1
- package/dist/services/error-contracts.d.ts +43 -72
- package/dist/services/error-contracts.d.ts.map +1 -1
- package/dist/services/error-contracts.js +44 -76
- package/dist/services/error-contracts.js.map +1 -1
- package/dist/services/europe-pmc/api-client.d.ts +8 -2
- package/dist/services/europe-pmc/api-client.d.ts.map +1 -1
- package/dist/services/europe-pmc/api-client.js +13 -8
- package/dist/services/europe-pmc/api-client.js.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.d.ts +25 -2
- package/dist/services/europe-pmc/europe-pmc-service.d.ts.map +1 -1
- package/dist/services/europe-pmc/europe-pmc-service.js +90 -25
- package/dist/services/europe-pmc/europe-pmc-service.js.map +1 -1
- package/dist/services/europe-pmc/types.d.ts +6 -1
- package/dist/services/europe-pmc/types.d.ts.map +1 -1
- package/dist/services/ncbi/api-client.d.ts.map +1 -1
- package/dist/services/ncbi/api-client.js +2 -3
- package/dist/services/ncbi/api-client.js.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.d.ts +24 -0
- package/dist/services/ncbi/formatting/citation-formatter.d.ts.map +1 -1
- package/dist/services/ncbi/formatting/citation-formatter.js +147 -46
- package/dist/services/ncbi/formatting/citation-formatter.js.map +1 -1
- package/dist/services/ncbi/ncbi-service.d.ts +18 -2
- package/dist/services/ncbi/ncbi-service.d.ts.map +1 -1
- package/dist/services/ncbi/ncbi-service.js +182 -90
- package/dist/services/ncbi/ncbi-service.js.map +1 -1
- package/dist/services/ncbi/parsing/article-parser.d.ts +15 -1
- package/dist/services/ncbi/parsing/article-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/article-parser.js +67 -29
- package/dist/services/ncbi/parsing/article-parser.js.map +1 -1
- package/dist/services/ncbi/parsing/esummary-parser.d.ts +9 -0
- package/dist/services/ncbi/parsing/esummary-parser.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/esummary-parser.js +26 -2
- 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 +395 -147
- package/dist/services/ncbi/parsing/pmc-article-parser.js.map +1 -1
- package/dist/services/ncbi/parsing/pmc-xml-helpers.d.ts +73 -5
- package/dist/services/ncbi/parsing/pmc-xml-helpers.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/pmc-xml-helpers.js +223 -27
- package/dist/services/ncbi/parsing/pmc-xml-helpers.js.map +1 -1
- package/dist/services/ncbi/parsing/text-helpers.d.ts +8 -6
- package/dist/services/ncbi/parsing/text-helpers.d.ts.map +1 -1
- package/dist/services/ncbi/parsing/text-helpers.js +95 -19
- package/dist/services/ncbi/parsing/text-helpers.js.map +1 -1
- package/dist/services/ncbi/response-handler.d.ts +20 -12
- package/dist/services/ncbi/response-handler.d.ts.map +1 -1
- package/dist/services/ncbi/response-handler.js +134 -38
- package/dist/services/ncbi/response-handler.js.map +1 -1
- package/dist/services/ncbi/types.d.ts +35 -2
- package/dist/services/ncbi/types.d.ts.map +1 -1
- package/dist/services/openalex/api-client.d.ts.map +1 -1
- package/dist/services/openalex/api-client.js +6 -7
- package/dist/services/openalex/api-client.js.map +1 -1
- package/dist/services/openalex/openalex-service.d.ts +10 -6
- package/dist/services/openalex/openalex-service.d.ts.map +1 -1
- package/dist/services/openalex/openalex-service.js +14 -12
- package/dist/services/openalex/openalex-service.js.map +1 -1
- package/dist/services/unpaywall/unpaywall-service.d.ts.map +1 -1
- package/dist/services/unpaywall/unpaywall-service.js +1 -3
- package/dist/services/unpaywall/unpaywall-service.js.map +1 -1
- package/package.json +16 -13
- package/server.json +10 -24
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview PubMed search tool. Searches PubMed with full query syntax,
|
|
3
3
|
* field-specific filters, date ranges, pagination, and optional brief summaries.
|
|
4
|
-
* A query with no search term — blank,
|
|
5
|
-
* parentheses — is rejected before NCBI is called
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* A query with no search term — blank, invisible characters only, markup only, a
|
|
5
|
+
* bare field tag, or empty parentheses — is rejected before NCBI is called, as
|
|
6
|
+
* is a filter value with no term once sanitized (`" "`, `"()"`), a
|
|
7
|
+
* `dateRange` bound that is no real calendar date, and a range whose `minDate`
|
|
8
|
+
* falls after its `maxDate`. `limit`, `retmax`, `num_results`, and `pageSize`
|
|
9
|
+
* are accepted as aliases for `maxResults`, `term` and `queryTerm` for `query`,
|
|
10
|
+
* `retstart` for `offset`, and `sortBy` for `sort`. The total match count rides
|
|
11
|
+
* in `output` so `format()` can state it in the header beside the returned
|
|
12
|
+
* count, and a summary's `docType` is rendered only when it marks something
|
|
13
|
+
* other than an ordinary journal article (`citation`).
|
|
10
14
|
* @module src/mcp-server/tools/definitions/search-articles.tool
|
|
11
15
|
*/
|
|
12
16
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
17
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
13
18
|
export declare const searchArticlesTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
14
19
|
query: z.ZodString;
|
|
15
20
|
maxResults: z.ZodDefault<z.ZodNumber>;
|
|
@@ -64,44 +69,63 @@ export declare const searchArticlesTool: import("@cyanheads/mcp-ts-core").ToolDe
|
|
|
64
69
|
totalCount: z.ZodNumber;
|
|
65
70
|
}, z.core.$strip>, readonly [{
|
|
66
71
|
readonly reason: 'queue_full';
|
|
67
|
-
readonly code:
|
|
72
|
+
readonly code: JsonRpcErrorCode.RateLimited;
|
|
68
73
|
readonly when: 'The local NCBI request queue shed the call — the queue is full, or the call cannot start before its total deadline (for example behind the cooldown that follows an NCBI 429).';
|
|
69
74
|
readonly recovery: 'Wait the number of seconds in `retryAfter`, then retry; the NCBI request queue is saturated or cooling down after a rate limit.';
|
|
70
75
|
readonly retryable: true;
|
|
71
76
|
readonly thrownBy: 'service';
|
|
72
77
|
}, {
|
|
73
78
|
readonly reason: 'ncbi_unreachable';
|
|
74
|
-
readonly code:
|
|
75
|
-
readonly when: 'NCBI E-utilities
|
|
76
|
-
readonly recovery: 'Retry after a brief delay; NCBI
|
|
79
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
80
|
+
readonly when: 'NCBI E-utilities failed on every attempt the retry budget allowed — retries ran out, or the next backoff would overrun the total deadline.';
|
|
81
|
+
readonly recovery: 'Retry after a brief delay; NCBI failed on every attempt this call made.';
|
|
82
|
+
readonly retryable: true;
|
|
83
|
+
readonly thrownBy: 'service';
|
|
84
|
+
}, {
|
|
85
|
+
readonly reason: 'ncbi_rate_limited';
|
|
86
|
+
readonly code: JsonRpcErrorCode.RateLimited;
|
|
87
|
+
readonly when: 'NCBI answered HTTP 429 (too many requests) and the call stopped on it — retries ran out, the next backoff would overrun the total deadline, or the Retry-After NCBI named outlasts the time left or the 30-second backoff cap.';
|
|
88
|
+
readonly recovery: "Wait as long as `retryAfter` says when present (a number of seconds or an HTTP date), otherwise a few seconds, then retry; NCBI is throttling this server's requests. If the server runs without NCBI_API_KEY, setting it raises the E-utilities ceiling from about 3 to about 10 requests per second and shortens the default gap between requests — an operator setting in the server's environment, not a tool input.";
|
|
77
89
|
readonly retryable: true;
|
|
78
90
|
readonly thrownBy: 'service';
|
|
79
91
|
}, {
|
|
80
92
|
readonly reason: 'ncbi_deadline_exceeded';
|
|
81
|
-
readonly code:
|
|
82
|
-
readonly when: '
|
|
83
|
-
readonly recovery: '
|
|
93
|
+
readonly code: JsonRpcErrorCode.Timeout;
|
|
94
|
+
readonly when: 'The total NCBI request deadline expired before NCBI answered successfully — mid-request, while queued, or during a retry backoff.';
|
|
95
|
+
readonly recovery: 'Retry after a brief delay; NCBI may be under temporary load. For a large batch, split it into smaller calls.';
|
|
84
96
|
readonly retryable: true;
|
|
85
97
|
readonly thrownBy: 'service';
|
|
86
98
|
}, {
|
|
87
99
|
readonly reason: 'ncbi_invalid_response';
|
|
88
|
-
readonly code:
|
|
100
|
+
readonly code: JsonRpcErrorCode.SerializationError;
|
|
89
101
|
readonly when: 'NCBI returned a body that could not be parsed (invalid XML/JSON).';
|
|
90
102
|
readonly recovery: 'Retry the request; NCBI returned a malformed response that could not be parsed.';
|
|
91
103
|
readonly retryable: true;
|
|
92
104
|
readonly thrownBy: 'service';
|
|
93
105
|
}, {
|
|
94
106
|
readonly reason: 'ncbi_resource_not_found';
|
|
95
|
-
readonly code:
|
|
107
|
+
readonly code: JsonRpcErrorCode.NotFound;
|
|
96
108
|
readonly when: 'NCBI returned a structured "not found" error for the requested ID(s).';
|
|
97
109
|
readonly recovery: 'Verify the ID exists in PubMed; the resource was not found in NCBI and retrying will not help.';
|
|
98
110
|
readonly retryable: false;
|
|
99
111
|
readonly thrownBy: 'service';
|
|
100
112
|
}, {
|
|
101
113
|
readonly reason: 'blank_query';
|
|
102
|
-
readonly code:
|
|
103
|
-
readonly when: 'The query
|
|
104
|
-
readonly recovery: 'Supply a nonblank search term
|
|
114
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
115
|
+
readonly when: 'The query contains no search term: nothing is left once whitespace and invisible characters such as a zero-width space are disregarded. pubmed_search_articles and pubmed_europepmc_search first decode HTML entities and also disregard markup and parentheses, so `()`, `<b></b>`, and ` ` hold no term there; pubmed_search_articles also disregards bracketed field tags such as `[pdat]`.';
|
|
116
|
+
readonly recovery: 'Supply a nonblank search term; retrying the same blank input will not help.';
|
|
117
|
+
readonly retryable: false;
|
|
118
|
+
}, {
|
|
119
|
+
readonly reason: 'invalid_date_range';
|
|
120
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
121
|
+
readonly when: 'A `dateRange` bound is not a real calendar date — a month outside 01–12, day 00, or a day past the end of its month such as `2023/02/29` — or `minDate` falls after `maxDate` once PubMed expands each partial date: `minDate` from the start of its year or month, `maxDate` to the end.';
|
|
122
|
+
readonly recovery: 'Correct the named bound to a real calendar date, or swap the bounds so minDate does not fall after maxDate; the same range will be rejected again.';
|
|
123
|
+
readonly retryable: false;
|
|
124
|
+
}, {
|
|
125
|
+
readonly reason: 'blank_filter';
|
|
126
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
127
|
+
readonly when: 'An `author`, `journal`, or `language` value, or a `publicationTypes` or `meshTerms` element, holds no term once markup is removed and HTML entities are decoded — only whitespace, invisible characters such as a zero-width space, parentheses, brackets, or double quotes are left, as in `()` or `""` — so its field clause would carry no term. An exactly-empty string is not blank here; it sets no filter.';
|
|
128
|
+
readonly recovery: 'Give each named filter a value, or pass an empty string or omit it for no filter; the same blank value will be rejected again.';
|
|
105
129
|
readonly retryable: false;
|
|
106
130
|
}], {
|
|
107
131
|
readonly effectiveQuery: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-articles.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"search-articles.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAiUjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAYjB,oBAAoB;;mBAEtB,2RAA2R;uBAE/R,oJAAoJ;;;qBAI9I,cAAc;;mBAEhB,mZAAmZ;uBAEvZ,gIAAgI;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6dtI,CAAC"}
|
|
@@ -1,27 +1,144 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview PubMed search tool. Searches PubMed with full query syntax,
|
|
3
3
|
* field-specific filters, date ranges, pagination, and optional brief summaries.
|
|
4
|
-
* A query with no search term — blank,
|
|
5
|
-
* parentheses — is rejected before NCBI is called
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* A query with no search term — blank, invisible characters only, markup only, a
|
|
5
|
+
* bare field tag, or empty parentheses — is rejected before NCBI is called, as
|
|
6
|
+
* is a filter value with no term once sanitized (`" "`, `"()"`), a
|
|
7
|
+
* `dateRange` bound that is no real calendar date, and a range whose `minDate`
|
|
8
|
+
* falls after its `maxDate`. `limit`, `retmax`, `num_results`, and `pageSize`
|
|
9
|
+
* are accepted as aliases for `maxResults`, `term` and `queryTerm` for `query`,
|
|
10
|
+
* `retstart` for `offset`, and `sortBy` for `sort`. The total match count rides
|
|
11
|
+
* in `output` so `format()` can state it in the header beside the returned
|
|
12
|
+
* count, and a summary's `docType` is rendered only when it marks something
|
|
13
|
+
* other than an ordinary journal article (`citation`).
|
|
10
14
|
* @module src/mcp-server/tools/definitions/search-articles.tool
|
|
11
15
|
*/
|
|
12
16
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
17
|
+
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
13
18
|
import { sanitization } from '@cyanheads/mcp-ts-core/utils';
|
|
14
|
-
import {
|
|
19
|
+
import { NCBI_SERVICE_ERRORS, QUERY_INPUT_ERRORS } from '../../../services/error-contracts.js';
|
|
15
20
|
import { getNcbiService } from '../../../services/ncbi/ncbi-service.js';
|
|
16
21
|
import { extractBriefSummaries } from '../../../services/ncbi/parsing/esummary-parser.js';
|
|
17
22
|
import { conceptMeta, EDAM_DATABASE_SEARCH, EDAM_PUBMED_ID, SCHEMA_SEARCH_ACTION, } from './_concepts.js';
|
|
18
23
|
import { escapeMarkdownInline } from './_text.js';
|
|
24
|
+
import { hasVisibleText } from './_visible-text.js';
|
|
19
25
|
/**
|
|
20
26
|
* Accepts empty strings (treated as "no filter" by the handler) or dates in
|
|
21
27
|
* YYYY, YYYY/MM, or YYYY/MM/DD form with `/`, `-`, or `.` separators.
|
|
22
28
|
* Catches obvious typos at the edge so they don't degrade silently to 0 results.
|
|
29
|
+
* Calendar validity and bound order are checked in the handler
|
|
30
|
+
* ({@link dateRangeProblem}).
|
|
23
31
|
*/
|
|
24
32
|
const DATE_RE = /^$|^\d{4}([/\-.]\d{1,2}([/\-.]\d{1,2})?)?$/;
|
|
33
|
+
/**
|
|
34
|
+
* Days in `month` (1–12) of `year`, leap years included. `setUTCFullYear` reads
|
|
35
|
+
* the year literally, where `Date.UTC` would map 0–99 onto 1900–1999.
|
|
36
|
+
*/
|
|
37
|
+
function daysInMonth(year, month) {
|
|
38
|
+
const date = new Date(0);
|
|
39
|
+
date.setUTCFullYear(year, month, 0);
|
|
40
|
+
return date.getUTCDate();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The first and last day a `dateRange` bound covers, as zero-padded
|
|
44
|
+
* `YYYY/MM/DD` strings that sort in calendar order — PubMed reads a partial
|
|
45
|
+
* date as its whole year or month — or why the bound names no real date. The
|
|
46
|
+
* value has already matched {@link DATE_RE}, so it splits into one to three
|
|
47
|
+
* numbers with a four-digit year.
|
|
48
|
+
*/
|
|
49
|
+
function dateBoundSpan(value) {
|
|
50
|
+
const [yearText = '', monthText, dayText] = value.split(/[/\-.]/);
|
|
51
|
+
const year = Number(yearText);
|
|
52
|
+
const month = monthText === undefined ? undefined : Number(monthText);
|
|
53
|
+
const day = dayText === undefined ? undefined : Number(dayText);
|
|
54
|
+
const ymd = (m, d) => `${yearText}/${String(m).padStart(2, '0')}/${String(d).padStart(2, '0')}`;
|
|
55
|
+
if (month !== undefined && (month < 1 || month > 12)) {
|
|
56
|
+
return { problem: `month ${monthText} is outside 01–12` };
|
|
57
|
+
}
|
|
58
|
+
if (month !== undefined && day !== undefined) {
|
|
59
|
+
if (day < 1)
|
|
60
|
+
return { problem: `day ${dayText} is not a day; days start at 01` };
|
|
61
|
+
const monthDays = daysInMonth(year, month);
|
|
62
|
+
if (day > monthDays) {
|
|
63
|
+
return { problem: `${ymd(month, 1).slice(0, 7)} has ${monthDays} days` };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
first: ymd(month ?? 1, day ?? 1),
|
|
68
|
+
last: ymd(month ?? 12, day ?? daysInMonth(year, month ?? 12)),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Why a `dateRange` names no real span, or `undefined` when it does. Every
|
|
73
|
+
* non-empty bound must be a real calendar date, even beside an empty bound that
|
|
74
|
+
* drops the filter, and `minDate` must not fall after `maxDate` once each is
|
|
75
|
+
* expanded the way PubMed reads a partial date: `minDate` from the start of its
|
|
76
|
+
* year or month, `maxDate` to the end. `2024/06 : 2024` is a range;
|
|
77
|
+
* `2024/07 : 2024/06/30` is reversed. PubMed answers either mistake with zero
|
|
78
|
+
* hits and reports the valid date tag as unrecognized. (#177)
|
|
79
|
+
*/
|
|
80
|
+
function dateRangeProblem(minDate, maxDate) {
|
|
81
|
+
const min = minDate ? dateBoundSpan(minDate) : undefined;
|
|
82
|
+
const max = maxDate ? dateBoundSpan(maxDate) : undefined;
|
|
83
|
+
const fields = [];
|
|
84
|
+
const problems = [];
|
|
85
|
+
for (const [field, value, span] of [
|
|
86
|
+
['dateRange.minDate', minDate, min],
|
|
87
|
+
['dateRange.maxDate', maxDate, max],
|
|
88
|
+
]) {
|
|
89
|
+
if (span && 'problem' in span) {
|
|
90
|
+
fields.push(field);
|
|
91
|
+
problems.push(`\`${field}\` "${value}" is not a real calendar date: ${span.problem}.`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (fields.length > 0)
|
|
95
|
+
return { fields, message: problems.join(' ') };
|
|
96
|
+
if (min && max && 'first' in min && 'last' in max && min.first > max.last) {
|
|
97
|
+
return {
|
|
98
|
+
fields: ['dateRange.minDate', 'dateRange.maxDate'],
|
|
99
|
+
message: `\`dateRange.minDate\` "${minDate}" (from ${min.first}) falls after \`dateRange.maxDate\` "${maxDate}" (through ${max.last}), so the range covers no dates.`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* PubMed query syntax a filter value can hold without holding a term:
|
|
106
|
+
* grouping parentheses, field-tag brackets, and phrase quotes.
|
|
107
|
+
*/
|
|
108
|
+
const FILTER_SYNTAX = /[()[\]"]/g;
|
|
109
|
+
/**
|
|
110
|
+
* Sanitizes one filter value, recording `path` in `blank` when it holds no term
|
|
111
|
+
* once {@link FILTER_SYNTAX} is disregarded (`" "`, `"<b></b>"`, `"​"`,
|
|
112
|
+
* `"()"`): sent as written, it would put a field clause with no term in the
|
|
113
|
+
* query PubMed runs, and PubMed answers `asthma AND ()[Author]` with every
|
|
114
|
+
* `asthma` match. A value that passes is returned sanitized, syntax characters
|
|
115
|
+
* included. An exactly-empty string sets no filter — form clients send one for a
|
|
116
|
+
* field left untouched (#14) — so it returns `undefined`, like an omitted field.
|
|
117
|
+
* (#176)
|
|
118
|
+
*/
|
|
119
|
+
async function sanitizeFilter(value, path, blank) {
|
|
120
|
+
if (!value)
|
|
121
|
+
return;
|
|
122
|
+
const sanitized = await sanitization.sanitizeString(value, { context: 'text' });
|
|
123
|
+
if (hasVisibleText(sanitized.replace(FILTER_SYNTAX, '')))
|
|
124
|
+
return sanitized;
|
|
125
|
+
blank.push(path);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* {@link sanitizeFilter} for each list element, naming a blank one by its
|
|
130
|
+
* index in the framework's dotted path style (`meshTerms.1`) and dropping an
|
|
131
|
+
* empty one. `undefined` when no element is left to filter on.
|
|
132
|
+
*/
|
|
133
|
+
async function sanitizeFilterList(values, path, blank) {
|
|
134
|
+
const kept = [];
|
|
135
|
+
for (const [index, value] of (values ?? []).entries()) {
|
|
136
|
+
const sanitized = await sanitizeFilter(value, `${path}.${index}`, blank);
|
|
137
|
+
if (sanitized !== undefined)
|
|
138
|
+
kept.push(sanitized);
|
|
139
|
+
}
|
|
140
|
+
return kept.length > 0 ? kept : undefined;
|
|
141
|
+
}
|
|
25
142
|
/**
|
|
26
143
|
* NCBI's eSearch serves `retstart` up to 9998 for PubMed and fails the whole
|
|
27
144
|
* request above it, so the ceiling is enforced at the edge where the caller can
|
|
@@ -60,13 +177,16 @@ const PUBMED_FIELD_TAGS = new Set([
|
|
|
60
177
|
/**
|
|
61
178
|
* The query with every parenthesis and every bracketed field tag removed — what
|
|
62
179
|
* the blank-term check tests. A tag's search modifier (`[mh:noexp]`,
|
|
63
|
-
* `[tiab:~3]`) does not change what it is;
|
|
180
|
+
* `[tiab:~3]`) does not change what it is; a bracket with no visible text
|
|
181
|
+
* carries no term.
|
|
64
182
|
*/
|
|
65
183
|
function withoutTermlessMarkup(query) {
|
|
66
184
|
return query
|
|
67
185
|
.replace(/\[([^\]]*)\]/g, (bracket, content) => {
|
|
68
186
|
const tag = content.trim().toLowerCase();
|
|
69
|
-
return
|
|
187
|
+
return !hasVisibleText(content) || PUBMED_FIELD_TAGS.has(tag.replace(/\s*:.*$/, ''))
|
|
188
|
+
? ''
|
|
189
|
+
: bracket;
|
|
70
190
|
})
|
|
71
191
|
.replace(/[()]/g, '');
|
|
72
192
|
}
|
|
@@ -97,7 +217,7 @@ function buildNotice(args) {
|
|
|
97
217
|
const notices = [];
|
|
98
218
|
if (partialDateBound) {
|
|
99
219
|
const missing = partialDateBound.name === 'minDate' ? 'maxDate' : 'minDate';
|
|
100
|
-
const sentinel = missing === 'maxDate' ? '3000' : '
|
|
220
|
+
const sentinel = missing === 'maxDate' ? '3000' : '1000';
|
|
101
221
|
notices.push(`No date filter was applied: dateRange needs both bounds and only \`${partialDateBound.name}\` ("${partialDateBound.value}") was supplied. Set \`${missing}\` as well — for an open-ended range pass a wide sentinel (e.g. \`${missing}: "${sentinel}"\`).`);
|
|
102
222
|
}
|
|
103
223
|
const ignoredFields = [
|
|
@@ -164,16 +284,50 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
|
|
|
164
284
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
165
285
|
_meta: conceptMeta([SCHEMA_SEARCH_ACTION, EDAM_DATABASE_SEARCH, EDAM_PUBMED_ID]),
|
|
166
286
|
sourceUrl: 'https://github.com/cyanheads/pubmed-mcp-server/blob/main/src/mcp-server/tools/definitions/search-articles.tool.ts',
|
|
167
|
-
errors: [
|
|
287
|
+
errors: [
|
|
288
|
+
...NCBI_SERVICE_ERRORS,
|
|
289
|
+
...QUERY_INPUT_ERRORS,
|
|
290
|
+
{
|
|
291
|
+
reason: 'invalid_date_range',
|
|
292
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
293
|
+
when: 'A `dateRange` bound is not a real calendar date — a month outside 01–12, day 00, or a day past the end of its month such as `2023/02/29` — or `minDate` falls after `maxDate` once PubMed expands each partial date: `minDate` from the start of its year or month, `maxDate` to the end.',
|
|
294
|
+
recovery: 'Correct the named bound to a real calendar date, or swap the bounds so minDate does not fall after maxDate; the same range will be rejected again.',
|
|
295
|
+
retryable: false,
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
reason: 'blank_filter',
|
|
299
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
300
|
+
when: 'An `author`, `journal`, or `language` value, or a `publicationTypes` or `meshTerms` element, holds no term once markup is removed and HTML entities are decoded — only whitespace, invisible characters such as a zero-width space, parentheses, brackets, or double quotes are left, as in `()` or `""` — so its field clause would carry no term. An exactly-empty string is not blank here; it sets no filter.',
|
|
301
|
+
recovery: 'Give each named filter a value, or pass an empty string or omit it for no filter; the same blank value will be rejected again.',
|
|
302
|
+
retryable: false,
|
|
303
|
+
},
|
|
304
|
+
],
|
|
168
305
|
// Never advertised; rewritten to the canonical key before the schema parses.
|
|
169
|
-
//
|
|
170
|
-
|
|
306
|
+
// ESearch's own names (`retmax`, `term`, `retstart`), sibling tools' names, and
|
|
307
|
+
// common caller spellings. `max_results` needs no entry — the framework's
|
|
308
|
+
// case-style repair maps it. (#156, #190)
|
|
309
|
+
inputAliases: {
|
|
310
|
+
limit: 'maxResults',
|
|
311
|
+
retmax: 'maxResults',
|
|
312
|
+
num_results: 'maxResults',
|
|
313
|
+
pageSize: 'maxResults',
|
|
314
|
+
term: 'query',
|
|
315
|
+
queryTerm: 'query',
|
|
316
|
+
retstart: 'offset',
|
|
317
|
+
sortBy: 'sort',
|
|
318
|
+
},
|
|
171
319
|
input: z.object({
|
|
172
320
|
query: z
|
|
173
321
|
.string()
|
|
174
322
|
.min(1)
|
|
175
|
-
.describe('PubMed search query (supports full NCBI syntax). Must carry a search term: a value that is blank once markup, bracketed field tags (`[pdat]`), and
|
|
176
|
-
maxResults: z
|
|
323
|
+
.describe('PubMed search query (supports full NCBI syntax). Must carry a search term: a value that is blank once markup, bracketed field tags (`[pdat]`), parentheses, and invisible characters such as a zero-width space are disregarded is rejected rather than sent to PubMed.'),
|
|
324
|
+
maxResults: z
|
|
325
|
+
.number()
|
|
326
|
+
.int()
|
|
327
|
+
.min(0)
|
|
328
|
+
.max(1000)
|
|
329
|
+
.default(20)
|
|
330
|
+
.describe('Maximum results to return. 0 returns only `totalCount`.'),
|
|
177
331
|
offset: z
|
|
178
332
|
.number()
|
|
179
333
|
.int()
|
|
@@ -190,29 +344,38 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
|
|
|
190
344
|
minDate: z
|
|
191
345
|
.string()
|
|
192
346
|
.regex(DATE_RE, 'Date must be YYYY, YYYY/MM, or YYYY/MM/DD (/, -, or . separators)')
|
|
193
|
-
.describe('Start date (YYYY/MM/DD, YYYY/MM, or YYYY)
|
|
347
|
+
.describe('Start date (YYYY/MM/DD, YYYY/MM, or YYYY). Must be a real calendar date — `2023/02/29` is rejected. Leaving it empty drops the whole date range, not just this bound; for no lower bound pass a wide sentinel such as `1000`.'),
|
|
194
348
|
maxDate: z
|
|
195
349
|
.string()
|
|
196
350
|
.regex(DATE_RE, 'Date must be YYYY, YYYY/MM, or YYYY/MM/DD (/, -, or . separators)')
|
|
197
|
-
.describe('End date (YYYY/MM/DD, YYYY/MM, or YYYY)
|
|
351
|
+
.describe('End date (YYYY/MM/DD, YYYY/MM, or YYYY). Must be a real calendar date — `2023/02/29` is rejected. Leaving it empty drops the whole date range, not just this bound; for no upper bound pass a wide sentinel such as `3000`.'),
|
|
198
352
|
dateType: z
|
|
199
353
|
.enum(['pdat', 'mdat', 'edat'])
|
|
200
354
|
.default('pdat')
|
|
201
355
|
.describe('Date type: pdat (publication), mdat (modification), edat (entrez)'),
|
|
202
356
|
})
|
|
203
357
|
.optional()
|
|
204
|
-
.describe('Filter by date range. The filter is applied only when both `minDate` and `maxDate` are non-empty; either one empty disables the entire date range.'),
|
|
358
|
+
.describe('Filter by date range. The filter is applied only when both `minDate` and `maxDate` are non-empty; either one empty disables the entire date range. A partial date covers its whole year or month, and a range whose `minDate` falls after its `maxDate` is rejected: `2024/06` to `2024` is valid, `2024/07` to `2024/06/30` is not.'),
|
|
205
359
|
publicationTypes: z
|
|
206
360
|
.array(z.string())
|
|
207
361
|
.optional()
|
|
208
|
-
.describe('Filter by publication type (e.g. "Review", "Clinical Trial", "Meta-Analysis"). Multiple values are OR\'d — any match qualifies.'),
|
|
209
|
-
author: z
|
|
210
|
-
|
|
362
|
+
.describe('Filter by publication type (e.g. "Review", "Clinical Trial", "Meta-Analysis"). Multiple values are OR\'d — any match qualifies. Empty strings are skipped; an element of only whitespace, invisible characters, markup, parentheses, brackets, or double quotes is rejected.'),
|
|
363
|
+
author: z
|
|
364
|
+
.string()
|
|
365
|
+
.optional()
|
|
366
|
+
.describe('Filter by author name (e.g. "Smith J"). An empty string applies no filter; a value of only whitespace, invisible characters, markup, parentheses, brackets, or double quotes is rejected.'),
|
|
367
|
+
journal: z
|
|
368
|
+
.string()
|
|
369
|
+
.optional()
|
|
370
|
+
.describe('Filter by journal name. An empty string applies no filter; a value of only whitespace, invisible characters, markup, parentheses, brackets, or double quotes is rejected.'),
|
|
211
371
|
meshTerms: z
|
|
212
372
|
.array(z.string())
|
|
213
373
|
.optional()
|
|
214
|
-
.describe("Filter by MeSH terms. Multiple terms are AND'd — all must match."),
|
|
215
|
-
language: z
|
|
374
|
+
.describe("Filter by MeSH terms. Multiple terms are AND'd — all must match. Empty strings are skipped; an element of only whitespace, invisible characters, markup, parentheses, brackets, or double quotes is rejected."),
|
|
375
|
+
language: z
|
|
376
|
+
.string()
|
|
377
|
+
.optional()
|
|
378
|
+
.describe('Filter by language (e.g. "english"). An empty string applies no filter; a value of only whitespace, invisible characters, markup, parentheses, brackets, or double quotes is rejected.'),
|
|
216
379
|
hasAbstract: z.boolean().optional().describe('Only include articles with abstracts'),
|
|
217
380
|
freeFullText: z.boolean().optional().describe('Only include free full text articles'),
|
|
218
381
|
species: z.enum(['humans', 'animals']).optional().describe('Filter by species'),
|
|
@@ -257,7 +420,10 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
|
|
|
257
420
|
.array(z.string().describe('One editor, "Surname Initials" as ESummary renders it'))
|
|
258
421
|
.optional()
|
|
259
422
|
.describe("Editors of the containing book, kept out of `authors` so they cannot displace the record's own authors. Absent on a journal article and on a book that credits no editors."),
|
|
260
|
-
pubDate: z
|
|
423
|
+
pubDate: z
|
|
424
|
+
.string()
|
|
425
|
+
.optional()
|
|
426
|
+
.describe('Publication date as YYYY-MM-DD; a month- or year-only date reads as the first day of that month or year. On an NCBI Bookshelf chapter (`docType` "chapter") it is the chapter\'s own date — its last revision, otherwise its contribution — not the year its book began.'),
|
|
261
427
|
doi: z
|
|
262
428
|
.string()
|
|
263
429
|
.optional()
|
|
@@ -337,14 +503,33 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
|
|
|
337
503
|
// sent as written. A bracket that is not a field tag (`[18F]`) is a term, and
|
|
338
504
|
// boolean operators are kept: NCBI reads an operand-less `NOT[ti]` as
|
|
339
505
|
// literal text and returns real matches. (#145)
|
|
340
|
-
|
|
341
|
-
|
|
506
|
+
//
|
|
507
|
+
// Invisible characters carry no term either, including those the sanitizer
|
|
508
|
+
// decodes from an entity (`​`). (#176)
|
|
509
|
+
if (!hasVisibleText(withoutTermlessMarkup(effectiveQuery))) {
|
|
510
|
+
throw ctx.fail('blank_query', 'The `query` carries no search term — it is blank once markup, bracketed field tags, parentheses, and invisible characters are disregarded.');
|
|
342
511
|
}
|
|
343
|
-
// Build filters — capture normalized values for both query construction and appliedFilters
|
|
344
|
-
let normalizedDateRange;
|
|
345
512
|
const { dateRange } = input;
|
|
346
513
|
const minDate = dateRange?.minDate.trim() ?? '';
|
|
347
514
|
const maxDate = dateRange?.maxDate.trim() ?? '';
|
|
515
|
+
const dateProblem = dateRangeProblem(minDate, maxDate);
|
|
516
|
+
if (dateProblem) {
|
|
517
|
+
throw ctx.fail('invalid_date_range', dateProblem.message, { fields: dateProblem.fields });
|
|
518
|
+
}
|
|
519
|
+
// Every filter is sanitized and checked before any clause is built, so a
|
|
520
|
+
// blank one fails the call instead of reaching PubMed as an empty field
|
|
521
|
+
// clause (`asthma AND [Author]`). (#176)
|
|
522
|
+
const blankFilters = [];
|
|
523
|
+
const sanitizedPubTypes = await sanitizeFilterList(input.publicationTypes, 'publicationTypes', blankFilters);
|
|
524
|
+
const sanitizedAuthor = await sanitizeFilter(input.author, 'author', blankFilters);
|
|
525
|
+
const sanitizedJournal = await sanitizeFilter(input.journal, 'journal', blankFilters);
|
|
526
|
+
const sanitizedMeshTerms = await sanitizeFilterList(input.meshTerms, 'meshTerms', blankFilters);
|
|
527
|
+
const sanitizedLanguage = await sanitizeFilter(input.language, 'language', blankFilters);
|
|
528
|
+
if (blankFilters.length > 0) {
|
|
529
|
+
throw ctx.fail('blank_filter', `${quoteClauses(blankFilters)} ${blankFilters.length === 1 ? 'holds' : 'hold'} no term once markup, whitespace, invisible characters, parentheses, brackets, and double quotes are disregarded, so the field clause would carry no term.`, { fields: blankFilters });
|
|
530
|
+
}
|
|
531
|
+
// Build filters — capture normalized values for both query construction and appliedFilters
|
|
532
|
+
let normalizedDateRange;
|
|
348
533
|
if (dateRange && minDate && maxDate) {
|
|
349
534
|
normalizedDateRange = {
|
|
350
535
|
minDate: minDate.replace(/[-.]/g, '/'),
|
|
@@ -360,31 +545,18 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
|
|
|
360
545
|
: maxDate && !minDate
|
|
361
546
|
? { name: 'maxDate', value: maxDate }
|
|
362
547
|
: undefined;
|
|
363
|
-
|
|
364
|
-
if (input.publicationTypes?.length) {
|
|
365
|
-
sanitizedPubTypes = await Promise.all(input.publicationTypes.map((pt) => sanitization.sanitizeString(pt, { context: 'text' })));
|
|
548
|
+
if (sanitizedPubTypes) {
|
|
366
549
|
effectiveQuery += ` AND (${sanitizedPubTypes.map((pt) => `"${pt}"[Publication Type]`).join(' OR ')})`;
|
|
367
550
|
}
|
|
368
|
-
|
|
369
|
-
if (input.author) {
|
|
370
|
-
sanitizedAuthor = await sanitization.sanitizeString(input.author, { context: 'text' });
|
|
551
|
+
if (sanitizedAuthor)
|
|
371
552
|
effectiveQuery += ` AND ${sanitizedAuthor}[Author]`;
|
|
372
|
-
|
|
373
|
-
let sanitizedJournal;
|
|
374
|
-
if (input.journal) {
|
|
375
|
-
sanitizedJournal = await sanitization.sanitizeString(input.journal, { context: 'text' });
|
|
553
|
+
if (sanitizedJournal)
|
|
376
554
|
effectiveQuery += ` AND "${sanitizedJournal}"[Journal]`;
|
|
377
|
-
|
|
378
|
-
let sanitizedMeshTerms;
|
|
379
|
-
if (input.meshTerms?.length) {
|
|
380
|
-
sanitizedMeshTerms = await Promise.all(input.meshTerms.map((term) => sanitization.sanitizeString(term, { context: 'text' })));
|
|
555
|
+
if (sanitizedMeshTerms) {
|
|
381
556
|
effectiveQuery += ` AND (${sanitizedMeshTerms.map((term) => `"${term}"[MeSH Terms]`).join(' AND ')})`;
|
|
382
557
|
}
|
|
383
|
-
|
|
384
|
-
if (input.language) {
|
|
385
|
-
sanitizedLanguage = await sanitization.sanitizeString(input.language, { context: 'text' });
|
|
558
|
+
if (sanitizedLanguage)
|
|
386
559
|
effectiveQuery += ` AND ${sanitizedLanguage}[Language]`;
|
|
387
|
-
}
|
|
388
560
|
if (input.hasAbstract)
|
|
389
561
|
effectiveQuery += ' AND hasabstract[text word]';
|
|
390
562
|
if (input.freeFullText)
|
|
@@ -439,10 +611,10 @@ export const searchArticlesTool = tool('pubmed_search_articles', {
|
|
|
439
611
|
const searchUrl = `https://pubmed.ncbi.nlm.nih.gov/?term=${encodeURIComponent(effectiveQuery)}`;
|
|
440
612
|
const appliedFilters = {
|
|
441
613
|
...(normalizedDateRange && { dateRange: normalizedDateRange }),
|
|
442
|
-
...(sanitizedPubTypes
|
|
614
|
+
...(sanitizedPubTypes && { publicationTypes: sanitizedPubTypes }),
|
|
443
615
|
...(sanitizedAuthor && { author: sanitizedAuthor }),
|
|
444
616
|
...(sanitizedJournal && { journal: sanitizedJournal }),
|
|
445
|
-
...(sanitizedMeshTerms
|
|
617
|
+
...(sanitizedMeshTerms && { meshTerms: sanitizedMeshTerms }),
|
|
446
618
|
...(sanitizedLanguage && { language: sanitizedLanguage }),
|
|
447
619
|
...(input.hasAbstract && { hasAbstract: true }),
|
|
448
620
|
...(input.freeFullText && { freeFullText: true }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-articles.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search-articles.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-articles.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,OAAO,GAAG,4CAA4C,CAAC;AAE7D;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,CAAC,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CACnC,GAAG,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAE5E,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,SAAS,SAAS,mBAAmB,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,OAAO,iCAAiC,EAAE,CAAC;QACjF,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,SAAS,OAAO,EAAE,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,OAAe,EACf,OAAe;IAEf,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI;QACjC,CAAC,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC;QACnC,CAAC,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC;KAC3B,EAAE,CAAC;QACX,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,KAAK,kCAAkC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEtE,IAAI,GAAG,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1E,OAAO;YACL,MAAM,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;YAClD,OAAO,EAAE,0BAA0B,OAAO,WAAW,GAAG,CAAC,KAAK,wCAAwC,OAAO,cAAc,GAAG,CAAC,IAAI,kCAAkC;SACtK,CAAC;IACJ,CAAC;IACD,OAAO;AACT,CAAC;AAED;;;GAGG;AACH,MAAM,aAAa,GAAG,WAAW,CAAC;AAElC;;;;;;;;;GASG;AACH,KAAK,UAAU,cAAc,CAC3B,KAAyB,EACzB,IAAY,EACZ,KAAe;IAEf,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,IAAI,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO;AACT,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAA4B,EAC5B,IAAY,EACZ,KAAe;IAEf,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QACzE,IAAI,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B;IACE,sFAAsF;IACtF,sFAAsF;IACtF,sFAAsF;IACtF,qFAAqF;IACrF,4DAA4D;IAC5D,sFAAsF;IACtF,iFAAiF;IACjF,uFAAuF;IACvF,iFAAiF;IACjF,oFAAoF;IACpF,+EAA+E;IAC/E,oFAAoF;IACpF,iFAAiF;IACjF,iFAAiF;IACjF,wFAAwF;IACxF,qCAAqC;CACtC;KACE,IAAI,CAAC,GAAG,CAAC;KACT,KAAK,CAAC,GAAG,CAAC,CACd,CAAC;AAEF;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,KAAK;SACT,OAAO,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,OAAe,EAAE,EAAE;QACrD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAClF,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC;IACd,CAAC,CAAC;SACD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,0GAA0G;AAC1G,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,gFAAgF;AAChF,SAAS,YAAY,CAAC,OAAiB;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,WAAW,CAAC,IAQpB;IACC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,GAC3F,IAAI,CAAC;IACP,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACzD,OAAO,CAAC,IAAI,CACV,sEAAsE,gBAAgB,CAAC,IAAI,QAAQ,gBAAgB,CAAC,KAAK,0BAA0B,OAAO,qEAAqE,OAAO,MAAM,QAAQ,OAAO,CAC5P,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG;QACpB,GAAG,CAAC,SAAS,EAAE,aAAa,IAAI,EAAE,CAAC;QACnC,GAAG,CAAC,WAAW,EAAE,aAAa,IAAI,EAAE,CAAC;KACtC,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CACV,6CAA6C,YAAY,CAAC,aAAa,CAAC,wHAAwH,CACjM,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG;QACvB,GAAG,CAAC,SAAS,EAAE,cAAc,IAAI,EAAE,CAAC;QACpC,GAAG,CAAC,WAAW,EAAE,cAAc,IAAI,EAAE,CAAC;QACtC,GAAG,CAAC,WAAW,EAAE,oBAAoB,IAAI,EAAE,CAAC;KAC7C,CAAC;IACF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CACV,8BAA8B,YAAY,CAAC,gBAAgB,CAAC,kIAAkI,CAC/L,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACV,UAAU;gBACR,CAAC,CAAC,qLAAqL;gBACvL,CAAC,CAAC,gHAAgH,CACrH,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;QACjE,OAAO,CAAC,IAAI,CACV,UAAU,MAAM,wBAAwB,UAAU,2CAA2C,UAAU,2BAA2B,CACnI,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC;SACT,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACpD,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;aAC9B,QAAQ,CAAC,8CAA8C,CAAC;KAC5D,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,gBAAgB,EAAE,CAAC;SAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC/E,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC7F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACjF,WAAW,EAAE,CAAC;SACX,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;SAC3B,QAAQ,EAAE;SACV,QAAQ,CAAC,sCAAsC,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,EAAE;IAC/D,WAAW,EACT,gSAAgS;IAClS,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,WAAW,CAAC,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;IAChF,SAAS,EACP,mHAAmH;IAErH,MAAM,EAAE;QACN,GAAG,mBAAmB;QACtB,GAAG,kBAAkB;QACrB;YACE,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,2RAA2R;YACjS,QAAQ,EACN,oJAAoJ;YACtJ,SAAS,EAAE,KAAK;SACjB;QACD;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,mZAAmZ;YACzZ,QAAQ,EACN,gIAAgI;YAClI,SAAS,EAAE,KAAK;SACjB;KACO;IAEV,6EAA6E;IAC7E,gFAAgF;IAChF,0EAA0E;IAC1E,0CAA0C;IAC1C,YAAY,EAAE;QACZ,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,YAAY;QACzB,QAAQ,EAAE,YAAY;QACtB,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,OAAO;QAClB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,MAAM;KACf;IAED,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,yQAAyQ,CAC1Q;QACH,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,IAAI,CAAC;aACT,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,yDAAyD,CAAC;QACtE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,UAAU,CAAC;aACf,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CACP,2EAA2E,UAAU,GAAG,CAAC,6CAA6C,UAAU,gEAAgE,CACjN;QACH,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;aACpD,OAAO,CAAC,WAAW,CAAC;aACpB,QAAQ,CAAC,8EAA8E,CAAC;QAC3F,SAAS,EAAE,CAAC;aACT,MAAM,CAAC;YACN,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,KAAK,CAAC,OAAO,EAAE,mEAAmE,CAAC;iBACnF,QAAQ,CACP,+NAA+N,CAChO;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,KAAK,CAAC,OAAO,EAAE,mEAAmE,CAAC;iBACnF,QAAQ,CACP,6NAA6N,CAC9N;YACH,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;iBAC9B,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CAAC,mEAAmE,CAAC;SACjF,CAAC;aACD,QAAQ,EAAE;aACV,QAAQ,CACP,sUAAsU,CACvU;QACH,gBAAgB,EAAE,CAAC;aAChB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,8QAA8Q,CAC/Q;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2LAA2L,CAC5L;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2KAA2K,CAC5K;QACH,SAAS,EAAE,CAAC;aACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CACP,+MAA+M,CAChN;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wLAAwL,CACzL;QACH,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACpF,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACrF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC/E,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,iBAAiB,CAAC;aACtB,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CACP,uEAAuE,iBAAiB,0DAA0D,CACnJ;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACjD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjD,SAAS,EAAE,CAAC;aACT,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACtD,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gNAAgN,CACjN;YACH,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,qMAAqM,CACtM;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,0JAA0J,CAC3J;YACH,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wHAAwH,CACzH;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wKAAwK,CACzK;YACH,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC,CAAC;iBACnF,QAAQ,EAAE;iBACV,QAAQ,CACP,4KAA4K,CAC7K;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,0QAA0Q,CAC3Q;YACH,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wMAAwM,CACzM;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SACxD,CAAC;aACD,QAAQ,CAAC,uBAAuB,CAAC,CACrC;aACA,QAAQ,CAAC,sDAAsD,CAAC;QACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACnD,2EAA2E;QAC3E,4DAA4D;QAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAC3D,CAAC;IAEF,iFAAiF;IACjF,yEAAyE;IACzE,8EAA8E;IAC9E,wCAAwC;IACxC,UAAU,EAAE;QACV,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,CAAC,kEAAkE,CAAC;QAC/E,cAAc,EAAE,oBAAoB,CAAC,QAAQ,CAC3C,gEAAgE,CACjE;QACD,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,4PAA4P,CAC7P;KACJ;IAED,oFAAoF;IACpF,qFAAqF;IACrF,iBAAiB,EAAE;QACjB,cAAc,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;QAC5C,cAAc,EAAE;YACd,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;gBAClB,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CACR,qBAAqB,OAAO,CAAC,SAAS,CAAC,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAChH,CAAC;gBACJ,CAAC;gBACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;oBACrC,KAAK,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChF,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClE,IAAI,OAAO,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,IAAI,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;oBAC9B,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,OAAO,CAAC,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxE,IAAI,OAAO,CAAC,WAAW;oBAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAC/D,IAAI,OAAO,CAAC,YAAY;oBAAE,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAClE,IAAI,OAAO,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;oBACrB,CAAC,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC7C,CAAC,CAAC,2BAA2B,CAAC;YAClC,CAAC;SACF;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAE9B,IAAI,cAAc,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzF,4EAA4E;QAC5E,uEAAuE;QACvE,qEAAqE;QACrE,uEAAuE;QACvE,gEAAgE;QAChE,sEAAsE;QACtE,EAAE;QACF,4EAA4E;QAC5E,0EAA0E;QAC1E,8EAA8E;QAC9E,sEAAsE;QACtE,gDAAgD;QAChD,EAAE;QACF,2EAA2E;QAC3E,6CAA6C;QAC7C,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,GAAG,CAAC,IAAI,CACZ,aAAa,EACb,4IAA4I,CAC7I,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAC5B,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,yEAAyE;QACzE,wEAAwE;QACxE,4CAA4C;QAC5C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAChD,KAAK,CAAC,gBAAgB,EACtB,kBAAkB,EAClB,YAAY,CACb,CAAC;QACF,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnF,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QACtF,MAAM,kBAAkB,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAChG,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QACzF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,CAAC,IAAI,CACZ,cAAc,EACd,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,4JAA4J,EACzO,EAAE,MAAM,EAAE,YAAY,EAAE,CACzB,CAAC;QACJ,CAAC;QAED,2FAA2F;QAC3F,IAAI,mBAES,CAAC;QACd,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACpC,mBAAmB,GAAG;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;gBACtC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;gBACtC,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC7B,CAAC;YACF,cAAc,IAAI,SAAS,mBAAmB,CAAC,OAAO,IAAI,mBAAmB,CAAC,QAAQ,OAAO,mBAAmB,CAAC,OAAO,IAAI,mBAAmB,CAAC,QAAQ,IAAI,CAAC;QAC/J,CAAC;QACD,6EAA6E;QAC7E,4DAA4D;QAC5D,MAAM,gBAAgB,GACpB,OAAO,IAAI,CAAC,OAAO;YACjB,CAAC,CAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAY;YAChD,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO;gBACnB,CAAC,CAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAY;gBAChD,CAAC,CAAC,SAAS,CAAC;QAElB,IAAI,iBAAiB,EAAE,CAAC;YACtB,cAAc,IAAI,SAAS,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACxG,CAAC;QACD,IAAI,eAAe;YAAE,cAAc,IAAI,QAAQ,eAAe,UAAU,CAAC;QACzE,IAAI,gBAAgB;YAAE,cAAc,IAAI,SAAS,gBAAgB,YAAY,CAAC;QAC9E,IAAI,kBAAkB,EAAE,CAAC;YACvB,cAAc,IAAI,SAAS,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACxG,CAAC;QACD,IAAI,iBAAiB;YAAE,cAAc,IAAI,QAAQ,iBAAiB,YAAY,CAAC;QAE/E,IAAI,KAAK,CAAC,WAAW;YAAE,cAAc,IAAI,6BAA6B,CAAC;QACvE,IAAI,KAAK,CAAC,YAAY;YAAE,cAAc,IAAI,6BAA6B,CAAC;QACxE,IAAI,KAAK,CAAC,OAAO;YAAE,cAAc,IAAI,QAAQ,KAAK,CAAC,OAAO,cAAc,CAAC;QAEzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC;YACE,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,KAAK,CAAC,UAAU;YACxB,QAAQ,EAAE,KAAK,CAAC,MAAM;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;SACrD,EACD,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACvB,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,SAAS,GAcP,EAAE,CAAC;QAET,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,cAAc,GAAgD;gBAClE,EAAE,EAAE,QAAQ;gBACZ,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK;aACf,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACzC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACxC,cAAc,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC7C,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnE,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnF,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBACnE,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,aAAa,EAAE,CAAC,CAAC,aAAa;oBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,6CAA6C,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACnF,SAAS,EAAE,mCAAmC,CAAC,CAAC,IAAI,GAAG;iBACxD,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,yCAAyC,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;QAChG,MAAM,cAAc,GAAG;YACrB,GAAG,CAAC,mBAAmB,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;YAC9D,GAAG,CAAC,iBAAiB,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;YACjE,GAAG,CAAC,eAAe,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YACnD,GAAG,CAAC,gBAAgB,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACtD,GAAG,CAAC,kBAAkB,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAC5D,GAAG,CAAC,iBAAiB,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/C,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YACjD,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;SACjD,CAAC;QACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACtC,UAAU,EAAE,QAAQ,CAAC,KAAK;YAC1B,SAAS,EAAE,KAAK,CAAC,MAAM;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,UAAU,EAAE,QAAQ,CAAC,KAAK;YAC1B,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC;YAClD,GAAG,CAAC,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,CAAC;YAC7C,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC5D,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;SACnE,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC;QAC/C,IAAI,MAAM;YAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEtC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK;YACL,SAAS;YACT,SAAS;YACT,UAAU,EAAE,QAAQ,CAAC,KAAK;SAC3B,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG;YACZ,0BAA0B;YAC1B,cAAc,MAAM,CAAC,KAAK,EAAE;YAC5B,iBAAiB,MAAM,CAAC,KAAK,CAAC,MAAM,OAAO,MAAM,CAAC,UAAU,kBAAkB,MAAM,CAAC,MAAM,EAAE;YAC7F,mBAAmB,MAAM,CAAC,SAAS,EAAE;SACtC,CAAC;QACF,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,2BAA2B,MAAM,CAAC,SAAS,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC;gBACnG,KAAK,CAAC,IAAI;gBACR,uEAAuE;gBACvE,kDAAkD;gBAClD,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,iBAAiB;oBAC1C,CAAC,CAAC,OAAO,KAAK,0CAA0C,iBAAiB,0BAA0B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,wDAAwD;oBACxM,CAAC,CAAC,OAAO,KAAK,oCAAoC,iBAAiB,kBAAkB,CACxF,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,qEAAqE;gBACrE,wDAAwD;gBACxD,KAAK,CAAC,IAAI,CAAC,UAAU,oBAAoB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClC,IAAI,CAAC,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,IAAI,CAAC,CAAC,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpD,mEAAmE;gBACnE,2DAA2D;gBAC3D,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;oBACnC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;gBACD,mEAAmE;gBACnE,+DAA+D;gBAC/D,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,UAAU;oBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzD,IAAI,CAAC,CAAC,GAAG;oBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,CAAC,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,CAAC,SAAS;oBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,CAAC,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|