@agenetix/docs 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +282 -0
  3. package/dist/components/BlogCard.d.ts +7 -0
  4. package/dist/components/BlogCard.d.ts.map +1 -0
  5. package/dist/components/BlogCard.js +10 -0
  6. package/dist/components/BlogCard.js.map +1 -0
  7. package/dist/components/BlogCategories.d.ts +8 -0
  8. package/dist/components/BlogCategories.d.ts.map +1 -0
  9. package/dist/components/BlogCategories.js +23 -0
  10. package/dist/components/BlogCategories.js.map +1 -0
  11. package/dist/components/BlogDirectoryPage.d.ts +10 -0
  12. package/dist/components/BlogDirectoryPage.d.ts.map +1 -0
  13. package/dist/components/BlogDirectoryPage.js +9 -0
  14. package/dist/components/BlogDirectoryPage.js.map +1 -0
  15. package/dist/components/BlogPagination.d.ts +10 -0
  16. package/dist/components/BlogPagination.d.ts.map +1 -0
  17. package/dist/components/BlogPagination.js +23 -0
  18. package/dist/components/BlogPagination.js.map +1 -0
  19. package/dist/components/BlogPostPage.d.ts +11 -0
  20. package/dist/components/BlogPostPage.d.ts.map +1 -0
  21. package/dist/components/BlogPostPage.js +17 -0
  22. package/dist/components/BlogPostPage.js.map +1 -0
  23. package/dist/components/BlogSearch.d.ts +7 -0
  24. package/dist/components/BlogSearch.d.ts.map +1 -0
  25. package/dist/components/BlogSearch.js +5 -0
  26. package/dist/components/BlogSearch.js.map +1 -0
  27. package/dist/components/CopyPageButton.d.ts +4 -0
  28. package/dist/components/CopyPageButton.d.ts.map +1 -0
  29. package/dist/components/CopyPageButton.js +71 -0
  30. package/dist/components/CopyPageButton.js.map +1 -0
  31. package/dist/components/DocsHomePage.d.ts +12 -0
  32. package/dist/components/DocsHomePage.d.ts.map +1 -0
  33. package/dist/components/DocsHomePage.js +45 -0
  34. package/dist/components/DocsHomePage.js.map +1 -0
  35. package/dist/components/DocsLayout.d.ts +3 -0
  36. package/dist/components/DocsLayout.d.ts.map +1 -0
  37. package/dist/components/DocsLayout.js +6 -0
  38. package/dist/components/DocsLayout.js.map +1 -0
  39. package/dist/components/DocsPage.d.ts +14 -0
  40. package/dist/components/DocsPage.d.ts.map +1 -0
  41. package/dist/components/DocsPage.js +16 -0
  42. package/dist/components/DocsPage.js.map +1 -0
  43. package/dist/components/DocsPageMobileToc.d.ts +6 -0
  44. package/dist/components/DocsPageMobileToc.d.ts.map +1 -0
  45. package/dist/components/DocsPageMobileToc.js +15 -0
  46. package/dist/components/DocsPageMobileToc.js.map +1 -0
  47. package/dist/components/DocsSearch.d.ts +8 -0
  48. package/dist/components/DocsSearch.d.ts.map +1 -0
  49. package/dist/components/DocsSearch.js +44 -0
  50. package/dist/components/DocsSearch.js.map +1 -0
  51. package/dist/components/DocsSearchCommand.d.ts +9 -0
  52. package/dist/components/DocsSearchCommand.d.ts.map +1 -0
  53. package/dist/components/DocsSearchCommand.js +43 -0
  54. package/dist/components/DocsSearchCommand.js.map +1 -0
  55. package/dist/components/DocsSearchPalette.d.ts +11 -0
  56. package/dist/components/DocsSearchPalette.d.ts.map +1 -0
  57. package/dist/components/DocsSearchPalette.js +28 -0
  58. package/dist/components/DocsSearchPalette.js.map +1 -0
  59. package/dist/components/DocsSearchResults.d.ts +13 -0
  60. package/dist/components/DocsSearchResults.d.ts.map +1 -0
  61. package/dist/components/DocsSearchResults.js +26 -0
  62. package/dist/components/DocsSearchResults.js.map +1 -0
  63. package/dist/components/DocsSearchTrigger.d.ts +6 -0
  64. package/dist/components/DocsSearchTrigger.d.ts.map +1 -0
  65. package/dist/components/DocsSearchTrigger.js +7 -0
  66. package/dist/components/DocsSearchTrigger.js.map +1 -0
  67. package/dist/components/DocsShell.d.ts +3 -0
  68. package/dist/components/DocsShell.d.ts.map +1 -0
  69. package/dist/components/DocsShell.js +98 -0
  70. package/dist/components/DocsShell.js.map +1 -0
  71. package/dist/components/DocsSidebar.d.ts +10 -0
  72. package/dist/components/DocsSidebar.d.ts.map +1 -0
  73. package/dist/components/DocsSidebar.js +48 -0
  74. package/dist/components/DocsSidebar.js.map +1 -0
  75. package/dist/components/DocsToc.d.ts +6 -0
  76. package/dist/components/DocsToc.d.ts.map +1 -0
  77. package/dist/components/DocsToc.js +42 -0
  78. package/dist/components/DocsToc.js.map +1 -0
  79. package/dist/components/HeadingLinks.d.ts +2 -0
  80. package/dist/components/HeadingLinks.d.ts.map +1 -0
  81. package/dist/components/HeadingLinks.js +54 -0
  82. package/dist/components/HeadingLinks.js.map +1 -0
  83. package/dist/components/MobileDocsChrome.d.ts +9 -0
  84. package/dist/components/MobileDocsChrome.d.ts.map +1 -0
  85. package/dist/components/MobileDocsChrome.js +6 -0
  86. package/dist/components/MobileDocsChrome.js.map +1 -0
  87. package/dist/components/StickyAside.d.ts +7 -0
  88. package/dist/components/StickyAside.d.ts.map +1 -0
  89. package/dist/components/StickyAside.js +5 -0
  90. package/dist/components/StickyAside.js.map +1 -0
  91. package/dist/components/blog-utils.d.ts +8 -0
  92. package/dist/components/blog-utils.d.ts.map +1 -0
  93. package/dist/components/blog-utils.js +28 -0
  94. package/dist/components/blog-utils.js.map +1 -0
  95. package/dist/components/mdx/Accordion.d.ts +13 -0
  96. package/dist/components/mdx/Accordion.d.ts.map +1 -0
  97. package/dist/components/mdx/Accordion.js +8 -0
  98. package/dist/components/mdx/Accordion.js.map +1 -0
  99. package/dist/components/mdx/Banner.d.ts +12 -0
  100. package/dist/components/mdx/Banner.d.ts.map +1 -0
  101. package/dist/components/mdx/Banner.js +10 -0
  102. package/dist/components/mdx/Banner.js.map +1 -0
  103. package/dist/components/mdx/Callout.d.ts +9 -0
  104. package/dist/components/mdx/Callout.d.ts.map +1 -0
  105. package/dist/components/mdx/Callout.js +11 -0
  106. package/dist/components/mdx/Callout.js.map +1 -0
  107. package/dist/components/mdx/Card.d.ts +16 -0
  108. package/dist/components/mdx/Card.d.ts.map +1 -0
  109. package/dist/components/mdx/Card.js +13 -0
  110. package/dist/components/mdx/Card.js.map +1 -0
  111. package/dist/components/mdx/CodeBlock.d.ts +11 -0
  112. package/dist/components/mdx/CodeBlock.d.ts.map +1 -0
  113. package/dist/components/mdx/CodeBlock.js +61 -0
  114. package/dist/components/mdx/CodeBlock.js.map +1 -0
  115. package/dist/components/mdx/CopyCodeButton.d.ts +4 -0
  116. package/dist/components/mdx/CopyCodeButton.d.ts.map +1 -0
  117. package/dist/components/mdx/CopyCodeButton.js +18 -0
  118. package/dist/components/mdx/CopyCodeButton.js.map +1 -0
  119. package/dist/components/mdx/Files.d.ts +19 -0
  120. package/dist/components/mdx/Files.d.ts.map +1 -0
  121. package/dist/components/mdx/Files.js +11 -0
  122. package/dist/components/mdx/Files.js.map +1 -0
  123. package/dist/components/mdx/InlineToc.d.ts +12 -0
  124. package/dist/components/mdx/InlineToc.d.ts.map +1 -0
  125. package/dist/components/mdx/InlineToc.js +26 -0
  126. package/dist/components/mdx/InlineToc.js.map +1 -0
  127. package/dist/components/mdx/Mermaid.d.ts +9 -0
  128. package/dist/components/mdx/Mermaid.d.ts.map +1 -0
  129. package/dist/components/mdx/Mermaid.js +63 -0
  130. package/dist/components/mdx/Mermaid.js.map +1 -0
  131. package/dist/components/mdx/Steps.d.ts +12 -0
  132. package/dist/components/mdx/Steps.d.ts.map +1 -0
  133. package/dist/components/mdx/Steps.js +8 -0
  134. package/dist/components/mdx/Steps.js.map +1 -0
  135. package/dist/components/mdx/Tabs.d.ts +22 -0
  136. package/dist/components/mdx/Tabs.d.ts.map +1 -0
  137. package/dist/components/mdx/Tabs.js +27 -0
  138. package/dist/components/mdx/Tabs.js.map +1 -0
  139. package/dist/components/mdx/index.d.ts +11 -0
  140. package/dist/components/mdx/index.d.ts.map +1 -0
  141. package/dist/components/mdx/index.js +11 -0
  142. package/dist/components/mdx/index.js.map +1 -0
  143. package/dist/components/mdx/lazy.d.ts +11 -0
  144. package/dist/components/mdx/lazy.d.ts.map +1 -0
  145. package/dist/components/mdx/lazy.js +9 -0
  146. package/dist/components/mdx/lazy.js.map +1 -0
  147. package/dist/components/useDocsSearch.d.ts +27 -0
  148. package/dist/components/useDocsSearch.d.ts.map +1 -0
  149. package/dist/components/useDocsSearch.js +119 -0
  150. package/dist/components/useDocsSearch.js.map +1 -0
  151. package/dist/index.d.ts +33 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +33 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/mdx.d.ts +14 -0
  156. package/dist/mdx.d.ts.map +1 -0
  157. package/dist/mdx.js +107 -0
  158. package/dist/mdx.js.map +1 -0
  159. package/dist/server/blog.d.ts +3 -0
  160. package/dist/server/blog.d.ts.map +1 -0
  161. package/dist/server/blog.js +552 -0
  162. package/dist/server/blog.js.map +1 -0
  163. package/dist/server/docs.d.ts +5 -0
  164. package/dist/server/docs.d.ts.map +1 -0
  165. package/dist/server/docs.js +389 -0
  166. package/dist/server/docs.js.map +1 -0
  167. package/dist/server/search.d.ts +3 -0
  168. package/dist/server/search.d.ts.map +1 -0
  169. package/dist/server/search.js +216 -0
  170. package/dist/server/search.js.map +1 -0
  171. package/dist/styles.css +3337 -0
  172. package/dist/theme-provider.d.ts +19 -0
  173. package/dist/theme-provider.d.ts.map +1 -0
  174. package/dist/theme-provider.js +54 -0
  175. package/dist/theme-provider.js.map +1 -0
  176. package/dist/theme.d.ts +11 -0
  177. package/dist/theme.d.ts.map +1 -0
  178. package/dist/theme.js +602 -0
  179. package/dist/theme.js.map +1 -0
  180. package/dist/types.d.ts +379 -0
  181. package/dist/types.d.ts.map +1 -0
  182. package/dist/types.js +2 -0
  183. package/dist/types.js.map +1 -0
  184. package/dist/utils.d.ts +34 -0
  185. package/dist/utils.d.ts.map +1 -0
  186. package/dist/utils.js +85 -0
  187. package/dist/utils.js.map +1 -0
  188. package/package.json +133 -0
  189. package/styles.css +1 -0
@@ -0,0 +1,216 @@
1
+ import { stripMarkdown } from "../utils";
2
+ export function searchEntries(entries, query, limit) {
3
+ const trimmedQuery = query.trim();
4
+ if (trimmedQuery.length < 2) {
5
+ return {
6
+ query: trimmedQuery,
7
+ total: 0,
8
+ results: [],
9
+ };
10
+ }
11
+ const normalizedQuery = trimmedQuery.toLowerCase();
12
+ const queryTerms = getQueryTerms(trimmedQuery);
13
+ const results = entries
14
+ .filter((entry) => !entry.isHome)
15
+ .map((entry) => scoreEntry(entry, normalizedQuery, queryTerms))
16
+ .filter((result) => result !== null)
17
+ .sort((left, right) => {
18
+ if (right.score !== left.score) {
19
+ return right.score - left.score;
20
+ }
21
+ return left.title.localeCompare(right.title);
22
+ });
23
+ return {
24
+ query: trimmedQuery,
25
+ total: results.length,
26
+ results: results.slice(0, limit).map(({ score: _score, ...result }) => result),
27
+ };
28
+ }
29
+ function scoreEntry(entry, normalizedQuery, queryTerms) {
30
+ const title = entry.title.trim();
31
+ const description = entry.description.trim();
32
+ const contentText = stripMarkdown(entry.content);
33
+ const normalizedTitle = title.toLowerCase();
34
+ const normalizedDescription = description.toLowerCase();
35
+ const normalizedContent = contentText.toLowerCase();
36
+ let score = 0;
37
+ const matchedFields = new Set();
38
+ if (normalizedTitle.includes(normalizedQuery)) {
39
+ score += 140;
40
+ matchedFields.add("title");
41
+ }
42
+ if (normalizedDescription.includes(normalizedQuery)) {
43
+ score += 64;
44
+ matchedFields.add("description");
45
+ }
46
+ if (normalizedContent.includes(normalizedQuery)) {
47
+ score += 36;
48
+ matchedFields.add("content");
49
+ }
50
+ let matchedTermCount = 0;
51
+ for (const term of queryTerms) {
52
+ const titleMatches = countMatches(normalizedTitle, term);
53
+ const descriptionMatches = countMatches(normalizedDescription, term);
54
+ const contentMatches = Math.min(6, countMatches(normalizedContent, term));
55
+ if (titleMatches || descriptionMatches || contentMatches) {
56
+ matchedTermCount += 1;
57
+ }
58
+ if (titleMatches > 0) {
59
+ score += 30 + (titleMatches - 1) * 8;
60
+ matchedFields.add("title");
61
+ }
62
+ if (descriptionMatches > 0) {
63
+ score += 15 + (descriptionMatches - 1) * 4;
64
+ matchedFields.add("description");
65
+ }
66
+ if (contentMatches > 0) {
67
+ score += 8 + (contentMatches - 1) * 2;
68
+ matchedFields.add("content");
69
+ }
70
+ }
71
+ if (matchedFields.size === 0) {
72
+ return null;
73
+ }
74
+ if (matchedTermCount === queryTerms.length) {
75
+ score += 20;
76
+ }
77
+ const section = findMatchingSection(entry.content, entry.headings, normalizedQuery);
78
+ const snippet = createSnippet({
79
+ contentText: section ? stripMarkdown(section.content) : contentText,
80
+ description,
81
+ normalizedQuery,
82
+ queryTerms,
83
+ });
84
+ return {
85
+ slug: entry.slug,
86
+ slugs: entry.slugs,
87
+ href: section ? `${entry.href}#${section.anchor}` : entry.href,
88
+ title,
89
+ description,
90
+ section: entry.section,
91
+ sectionLabel: entry.sectionLabel,
92
+ snippet,
93
+ matchedFields: Array.from(matchedFields),
94
+ sectionTitle: section?.heading,
95
+ sectionAnchor: section?.anchor,
96
+ locale: entry.locale,
97
+ contentLocale: entry.contentLocale,
98
+ score,
99
+ };
100
+ }
101
+ function findMatchingSection(content, headings, normalizedQuery) {
102
+ const sections = extractSections(content, headings);
103
+ if (sections.length === 0) {
104
+ return undefined;
105
+ }
106
+ const matched = sections
107
+ .map((section) => ({
108
+ section,
109
+ score: (section.heading.toLowerCase().includes(normalizedQuery) ? 40 : 0) +
110
+ (stripMarkdown(section.content).toLowerCase().includes(normalizedQuery) ? 16 : 0),
111
+ }))
112
+ .filter((candidate) => candidate.score > 0)
113
+ .sort((left, right) => right.score - left.score)[0];
114
+ return matched?.section;
115
+ }
116
+ function extractSections(content, headings) {
117
+ const sectionHeadings = headings.filter((heading) => heading.level >= 2 && heading.level <= 4);
118
+ if (sectionHeadings.length === 0) {
119
+ return [];
120
+ }
121
+ const lines = content.split("\n");
122
+ const located = sectionHeadings
123
+ .map((heading) => ({
124
+ heading,
125
+ index: lines.findIndex((line) => line.trim().replace(/^#+\s+/, "") === heading.text),
126
+ }))
127
+ .filter((item) => item.index >= 0);
128
+ return located.map((item, index) => {
129
+ const next = located[index + 1];
130
+ const contentSlice = lines
131
+ .slice(item.index, next ? next.index : undefined)
132
+ .join("\n")
133
+ .trim();
134
+ return {
135
+ heading: item.heading.text,
136
+ anchor: item.heading.id,
137
+ content: contentSlice,
138
+ };
139
+ });
140
+ }
141
+ function createSnippet({ contentText, description, normalizedQuery, queryTerms, }) {
142
+ const fallbackText = description || contentText;
143
+ if (!contentText) {
144
+ return trimSnippet(fallbackText, 180);
145
+ }
146
+ const normalizedContent = contentText.toLowerCase();
147
+ const phraseIndex = normalizedContent.indexOf(normalizedQuery);
148
+ const termIndexes = queryTerms
149
+ .map((term) => normalizedContent.indexOf(term))
150
+ .filter((index) => index >= 0);
151
+ const matchIndex = phraseIndex >= 0
152
+ ? phraseIndex
153
+ : termIndexes.length > 0
154
+ ? Math.min(...termIndexes)
155
+ : -1;
156
+ if (matchIndex < 0) {
157
+ return trimSnippet(fallbackText, 180);
158
+ }
159
+ const preferredStart = Math.max(0, matchIndex - 92);
160
+ const preferredEnd = Math.min(contentText.length, matchIndex + 156);
161
+ const sentenceStart = findSnippetStart(contentText, preferredStart);
162
+ const sentenceEnd = findSnippetEnd(contentText, preferredEnd);
163
+ let snippet = contentText.slice(sentenceStart, sentenceEnd).trim();
164
+ if (sentenceStart > 0) {
165
+ snippet = `...${snippet}`;
166
+ }
167
+ if (sentenceEnd < contentText.length) {
168
+ snippet = `${snippet}...`;
169
+ }
170
+ return trimSnippet(snippet, 220);
171
+ }
172
+ function findSnippetStart(text, preferredStart) {
173
+ const punctuationIndex = Math.max(text.lastIndexOf(". ", preferredStart), text.lastIndexOf(": ", preferredStart), text.lastIndexOf("? ", preferredStart), text.lastIndexOf("! ", preferredStart));
174
+ return punctuationIndex >= 0 ? punctuationIndex + 2 : preferredStart;
175
+ }
176
+ function findSnippetEnd(text, preferredEnd) {
177
+ const punctuationMatches = [
178
+ text.indexOf(". ", preferredEnd),
179
+ text.indexOf("? ", preferredEnd),
180
+ text.indexOf("! ", preferredEnd),
181
+ ].filter((index) => index >= 0);
182
+ if (punctuationMatches.length === 0) {
183
+ return preferredEnd;
184
+ }
185
+ return Math.min(...punctuationMatches) + 1;
186
+ }
187
+ function trimSnippet(text, maxLength) {
188
+ if (text.length <= maxLength) {
189
+ return text;
190
+ }
191
+ return `${text.slice(0, maxLength).trimEnd()}...`;
192
+ }
193
+ function countMatches(text, term) {
194
+ if (!term) {
195
+ return 0;
196
+ }
197
+ let count = 0;
198
+ let searchIndex = 0;
199
+ while (true) {
200
+ const matchIndex = text.indexOf(term, searchIndex);
201
+ if (matchIndex < 0) {
202
+ return count;
203
+ }
204
+ count += 1;
205
+ searchIndex = matchIndex + term.length;
206
+ }
207
+ }
208
+ function getQueryTerms(query) {
209
+ const terms = query
210
+ .toLowerCase()
211
+ .split(/[^a-z0-9]+/i)
212
+ .map((term) => term.trim())
213
+ .filter((term) => term.length >= 2);
214
+ return Array.from(new Set(terms.length > 0 ? terms : [query.toLowerCase()]));
215
+ }
216
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/server/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAYzC,MAAM,UAAU,aAAa,CAC3B,OAAoB,EACpB,KAAa,EACb,KAAa;IAEb,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAElC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO;SACpB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;SAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;SAC9D,MAAM,CAAC,CAAC,MAAM,EAAoC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;SACrE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,KAAgB,EAChB,eAAuB,EACvB,UAAoB;IAEpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,qBAAqB,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,iBAAiB,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAEpD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6C,CAAC;IAE3E,IAAI,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9C,KAAK,IAAI,GAAG,CAAC;QACb,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,qBAAqB,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACpD,KAAK,IAAI,EAAE,CAAC;QACZ,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,KAAK,IAAI,EAAE,CAAC;QACZ,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,kBAAkB,GAAG,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1E,IAAI,YAAY,IAAI,kBAAkB,IAAI,cAAc,EAAE,CAAC;YACzD,gBAAgB,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACrC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,IAAI,EAAE,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3C,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACtC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,gBAAgB,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QAC3C,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,aAAa,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW;QACnE,WAAW;QACX,eAAe;QACf,UAAU;KACX,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;QAC9D,KAAK;QACL,WAAW;QACX,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,OAAO;QACP,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QACxC,YAAY,EAAE,OAAO,EAAE,OAAO;QAC9B,aAAa,EAAE,OAAO,EAAE,MAAM;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAe,EACf,QAAuB,EACvB,eAAuB;IAEvB,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ;SACrB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO;QACP,KAAK,EACH,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACpF,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;SAC1C,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,OAAO,OAAO,EAAE,OAAO,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,QAAuB;IAC/D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAE/F,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,eAAe;SAC5B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;KACrF,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAErC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,KAAK;aACvB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;aAChD,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,EAAE,CAAC;QAEV,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC1B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACvB,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,WAAW,EACX,WAAW,EACX,eAAe,EACf,UAAU,GAMX;IACC,MAAM,YAAY,GAAG,WAAW,IAAI,WAAW,CAAC;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,UAAU;SAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACjC,MAAM,UAAU,GACd,WAAW,IAAI,CAAC;QACd,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;YAC1B,CAAC,CAAC,CAAC,CAAC,CAAC;IAEX,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAE9D,IAAI,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,GAAG,GAAG,OAAO,KAAK,CAAC;IAC5B,CAAC;IAED,OAAO,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,cAAsB;IAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,EACtC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,EACtC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,EACtC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CACvC,CAAC;IAEF,OAAO,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,YAAoB;IACxD,MAAM,kBAAkB,GAAG;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;KACjC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAEhC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,SAAiB;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY;IAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,IAAI,CAAC,CAAC;QACX,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,KAAK,GAAG,KAAK;SAChB,WAAW,EAAE;SACb,KAAK,CAAC,aAAa,CAAC;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC"}