openclaw-github-trending 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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +480 -0
  3. package/dist/channels/email.d.ts +61 -0
  4. package/dist/channels/email.d.ts.map +1 -0
  5. package/dist/channels/email.js +599 -0
  6. package/dist/channels/email.js.map +1 -0
  7. package/dist/channels/feishu.d.ts +50 -0
  8. package/dist/channels/feishu.d.ts.map +1 -0
  9. package/dist/channels/feishu.js +322 -0
  10. package/dist/channels/feishu.js.map +1 -0
  11. package/dist/channels/types.d.ts +66 -0
  12. package/dist/channels/types.d.ts.map +1 -0
  13. package/dist/channels/types.js +12 -0
  14. package/dist/channels/types.js.map +1 -0
  15. package/dist/cli.d.ts +2 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/core/config.d.ts +83 -0
  19. package/dist/core/config.d.ts.map +1 -0
  20. package/dist/core/config.js +145 -0
  21. package/dist/core/config.js.map +1 -0
  22. package/dist/core/fetcher.d.ts +43 -0
  23. package/dist/core/fetcher.d.ts.map +1 -0
  24. package/dist/core/fetcher.js +306 -0
  25. package/dist/core/fetcher.js.map +1 -0
  26. package/dist/core/file-storage.d.ts +62 -0
  27. package/dist/core/file-storage.d.ts.map +1 -0
  28. package/dist/core/file-storage.js +253 -0
  29. package/dist/core/file-storage.js.map +1 -0
  30. package/dist/core/history.d.ts +71 -0
  31. package/dist/core/history.d.ts.map +1 -0
  32. package/dist/core/history.js +133 -0
  33. package/dist/core/history.js.map +1 -0
  34. package/dist/core/summarizer.d.ts +64 -0
  35. package/dist/core/summarizer.d.ts.map +1 -0
  36. package/dist/core/summarizer.js +324 -0
  37. package/dist/core/summarizer.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +668 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/models/config.d.ts +93 -0
  43. package/dist/models/config.d.ts.map +1 -0
  44. package/dist/models/config.js +3 -0
  45. package/dist/models/config.js.map +1 -0
  46. package/dist/models/history.d.ts +6 -0
  47. package/dist/models/history.d.ts.map +1 -0
  48. package/dist/models/history.js +7 -0
  49. package/dist/models/history.js.map +1 -0
  50. package/dist/models/repository.d.ts +28 -0
  51. package/dist/models/repository.d.ts.map +1 -0
  52. package/dist/models/repository.js +3 -0
  53. package/dist/models/repository.js.map +1 -0
  54. package/dist/models/service.types.d.ts +87 -0
  55. package/dist/models/service.types.d.ts.map +1 -0
  56. package/dist/models/service.types.js +3 -0
  57. package/dist/models/service.types.js.map +1 -0
  58. package/dist/services/trending.service.d.ts +29 -0
  59. package/dist/services/trending.service.d.ts.map +1 -0
  60. package/dist/services/trending.service.js +306 -0
  61. package/dist/services/trending.service.js.map +1 -0
  62. package/dist/tool.d.ts +47 -0
  63. package/dist/tool.d.ts.map +1 -0
  64. package/dist/tool.js +314 -0
  65. package/dist/tool.js.map +1 -0
  66. package/dist/utils/logger.d.ts +77 -0
  67. package/dist/utils/logger.d.ts.map +1 -0
  68. package/dist/utils/logger.js +214 -0
  69. package/dist/utils/logger.js.map +1 -0
  70. package/dist/utils/markdown.d.ts +9 -0
  71. package/dist/utils/markdown.d.ts.map +1 -0
  72. package/dist/utils/markdown.js +40 -0
  73. package/dist/utils/markdown.js.map +1 -0
  74. package/openclaw.plugin.json +152 -0
  75. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { RepositoryInfo } from '../models/repository';
2
+ import { PluginConfig } from '../models/config';
3
+ /**
4
+ * GitHub Trending Fetcher
5
+ * Fetches and parses GitHub trending repositories
6
+ */
7
+ export declare class GitHubFetcher {
8
+ private readonly BASE_URL;
9
+ private readonly RAW_URL;
10
+ private readonly proxyConfig?;
11
+ constructor(config?: PluginConfig);
12
+ /**
13
+ * Create axios instance with proxy configuration
14
+ */
15
+ private createAxiosInstance;
16
+ /**
17
+ * Parse star count from string (supports k suffix)
18
+ * @param countString Star count as string (e.g., "1.2k", "2345")
19
+ * @returns Number of stars
20
+ */
21
+ parseStarCount(countString: string | null | undefined): number;
22
+ /**
23
+ * Parse trending page HTML and extract repository information
24
+ * @param html HTML content of trending page
25
+ * @returns Array of RepositoryInfo objects
26
+ */
27
+ parseTrendingPage(html: string): RepositoryInfo[];
28
+ /**
29
+ * Fetch trending repositories
30
+ * @param since Time period: 'daily', 'weekly', 'monthly'
31
+ * @returns Array of RepositoryInfo objects
32
+ */
33
+ fetchTrending(since?: 'daily' | 'weekly' | 'monthly'): Promise<RepositoryInfo[]>;
34
+ /**
35
+ * Fetch README content from a repository
36
+ * Tries multiple file names (README.md, README.rst, README.txt, README) and branches (main, master)
37
+ * @param fullName Repository full name (owner/repo)
38
+ * @returns README content as string, or empty string if not found
39
+ */
40
+ fetchReadme(fullName: string): Promise<string>;
41
+ }
42
+ export default GitHubFetcher;
43
+ //# sourceMappingURL=fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAsC;gBAEvD,MAAM,CAAC,EAAE,YAAY;IASjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwC3B;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;IAuB9D;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE;IA4EjD;;;;OAIG;IACG,aAAa,CAAC,KAAK,GAAE,OAAO,GAAG,QAAQ,GAAG,SAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAqD/F;;;;;OAKG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA0DrD;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.GitHubFetcher = void 0;
40
+ const axios_1 = __importDefault(require("axios"));
41
+ const cheerio = __importStar(require("cheerio"));
42
+ const logger_1 = require("../utils/logger");
43
+ const logger = logger_1.Logger.get('Fetcher');
44
+ /**
45
+ * GitHub Trending Fetcher
46
+ * Fetches and parses GitHub trending repositories
47
+ */
48
+ class GitHubFetcher {
49
+ constructor(config) {
50
+ this.BASE_URL = 'https://github.com';
51
+ this.RAW_URL = 'https://raw.githubusercontent.com';
52
+ this.proxyConfig = config?.proxy;
53
+ if (this.proxyConfig?.enabled && this.proxyConfig.url) {
54
+ logger.info('GitHub Fetcher] Proxy enabled', {
55
+ proxyUrl: this.proxyConfig.url
56
+ });
57
+ }
58
+ }
59
+ /**
60
+ * Create axios instance with proxy configuration
61
+ */
62
+ createAxiosInstance(proxyConfig) {
63
+ const axiosConfig = {
64
+ headers: {
65
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
66
+ }
67
+ };
68
+ // Apply proxy if enabled
69
+ if (proxyConfig?.enabled && proxyConfig.url) {
70
+ logger.info('GitHub Fetcher] Applying proxy to axios', {
71
+ proxyUrl: proxyConfig.url
72
+ });
73
+ const proxyUrl = proxyConfig.url;
74
+ const match = proxyUrl.match(/^(https?):\/\/(?:([^:]+):([^@]+)@)?([^:]+):(\d+)$/);
75
+ if (match) {
76
+ const [, protocol, username, password, host, port] = match;
77
+ axiosConfig.proxy = {
78
+ protocol: protocol || 'http',
79
+ host: host,
80
+ port: parseInt(port, 10),
81
+ ...(username && password ? { auth: { username, password } } : {})
82
+ };
83
+ logger.info('GitHub Fetcher] Proxy configuration applied', {
84
+ protocol,
85
+ host,
86
+ port,
87
+ hasAuth: !!username
88
+ });
89
+ }
90
+ else {
91
+ logger.warn('GitHub Fetcher] Invalid proxy URL format, using default axios instance', {
92
+ proxyUrl
93
+ });
94
+ }
95
+ }
96
+ return axios_1.default.create(axiosConfig);
97
+ }
98
+ /**
99
+ * Parse star count from string (supports k suffix)
100
+ * @param countString Star count as string (e.g., "1.2k", "2345")
101
+ * @returns Number of stars
102
+ */
103
+ parseStarCount(countString) {
104
+ if (!countString || typeof countString !== 'string') {
105
+ return 0;
106
+ }
107
+ const trimmed = countString.trim();
108
+ if (!trimmed) {
109
+ return 0;
110
+ }
111
+ // Check for k suffix (thousands)
112
+ const match = trimmed.match(/^([\d.]+)k$/i);
113
+ if (match) {
114
+ const num = parseFloat(match[1]);
115
+ return isNaN(num) ? 0 : Math.floor(num * 1000);
116
+ }
117
+ // Remove any non-numeric characters (commas, etc.)
118
+ const clean = trimmed.replace(/[^0-9]/g, '');
119
+ const num = parseInt(clean, 10);
120
+ return isNaN(num) ? 0 : num;
121
+ }
122
+ /**
123
+ * Parse trending page HTML and extract repository information
124
+ * @param html HTML content of trending page
125
+ * @returns Array of RepositoryInfo objects
126
+ */
127
+ parseTrendingPage(html) {
128
+ const $ = cheerio.load(html);
129
+ const repositories = [];
130
+ // Find all trending repositories using simple, reliable selector
131
+ $('article.Box-row').each((_, element) => {
132
+ const $item = $(element);
133
+ // Extract repository link - support both h1 and h2 (GitHub changed this)
134
+ const $repoLink = $item.find('h2.h3 a, h1.h3 a').first();
135
+ const href = $repoLink.attr('href');
136
+ if (!href)
137
+ return;
138
+ // Clean up href to get full URL
139
+ let url = href.startsWith('http') ? href : `${this.BASE_URL}${href}`;
140
+ // Extract full name (owner/repo) - clean up whitespace and slashes
141
+ const rawName = $repoLink.text();
142
+ const fullName = rawName.replace(/\s+/g, '').replace('/', '/');
143
+ // Extract name (repo name only)
144
+ const name = href.split('/').pop() || '';
145
+ // Description
146
+ const description = $item.find('p.col-9').text().trim();
147
+ // Total Star count - try new format first, then fallback to old format
148
+ let starCount = 0;
149
+ const starLink = $item.find('a[href$="/stargazers"]');
150
+ if (starLink.length > 0) {
151
+ // New GitHub format: link to stargazers
152
+ const starText = starLink.text().trim();
153
+ starCount = this.parseStarCount(starText);
154
+ }
155
+ else {
156
+ // Old format: span with aria-label="Star"
157
+ const starText = $item.find('span[aria-label="Star"]').first().text() ||
158
+ $item.find('.d-inline-block.mr-3').first().find('span').first().text();
159
+ if (starText) {
160
+ starCount = this.parseStarCount(starText);
161
+ }
162
+ }
163
+ // Fork count - try new format first, then fallback to old format
164
+ let forkCount = 0;
165
+ const forkLink = $item.find('a[href$="/forks"]');
166
+ if (forkLink.length > 0) {
167
+ // New GitHub format: link to forks
168
+ const forkText = forkLink.text().trim();
169
+ forkCount = this.parseStarCount(forkText);
170
+ }
171
+ else {
172
+ // Old format: span with aria-label="Fork"
173
+ const forkText = $item.find('span[aria-label="Fork"]').first().text() ||
174
+ $item.find('.d-inline-block.mr-3').eq(1).find('span').first().text();
175
+ if (forkText) {
176
+ forkCount = this.parseStarCount(forkText);
177
+ }
178
+ }
179
+ // Language - try itemprop first (real GitHub), then fallback (test fixtures)
180
+ const language = $item.find('span[itemprop="programmingLanguage"]').text().trim() ||
181
+ $item.find('span.text-bold.mr-2').last().text().trim();
182
+ repositories.push({
183
+ name,
184
+ full_name: fullName,
185
+ url,
186
+ stars: starCount,
187
+ description,
188
+ language,
189
+ forks: forkCount
190
+ });
191
+ });
192
+ return repositories;
193
+ }
194
+ /**
195
+ * Fetch trending repositories
196
+ * @param since Time period: 'daily', 'weekly', 'monthly'
197
+ * @returns Array of RepositoryInfo objects
198
+ */
199
+ async fetchTrending(since = 'daily') {
200
+ if (!['daily', 'weekly', 'monthly'].includes(since)) {
201
+ throw new Error('Invalid since parameter. Must be "daily", "weekly", or "monthly".');
202
+ }
203
+ const url = `${this.BASE_URL}/trending?since=${since}`;
204
+ logger.info('GitHub Fetcher] Fetching trending repositories', {
205
+ since,
206
+ url,
207
+ proxyConfig: this.proxyConfig,
208
+ });
209
+ try {
210
+ const axiosInstance = this.createAxiosInstance(this.proxyConfig);
211
+ const startTime = Date.now();
212
+ const response = await axiosInstance.get(url);
213
+ const duration = Date.now() - startTime;
214
+ logger.info('GitHub Fetcher] Got response from GitHub', {
215
+ status: response.status,
216
+ durationMs: duration,
217
+ dataLength: response.data?.length || 0
218
+ });
219
+ if (!response.data) {
220
+ throw new Error('Empty response from GitHub');
221
+ }
222
+ if (response.status !== 200) {
223
+ throw new Error(`Failed to fetch trending page: HTTP ${response.status}`);
224
+ }
225
+ logger.debug('GitHub Fetcher] Parsing HTML content...');
226
+ const repos = this.parseTrendingPage(response.data);
227
+ logger.info('GitHub Fetcher] ✅ Successfully parsed trending page', {
228
+ repoCount: repos.length
229
+ });
230
+ return repos;
231
+ }
232
+ catch (error) {
233
+ logger.error('GitHub Fetcher] Failed to fetch trending repositories', {
234
+ error: error instanceof Error ? error.message : 'Unknown error',
235
+ stack: error instanceof Error ? error.stack : undefined
236
+ });
237
+ if (error instanceof Error) {
238
+ throw new Error(`Failed to fetch trending page: ${error.message}`);
239
+ }
240
+ throw error;
241
+ }
242
+ }
243
+ /**
244
+ * Fetch README content from a repository
245
+ * Tries multiple file names (README.md, README.rst, README.txt, README) and branches (main, master)
246
+ * @param fullName Repository full name (owner/repo)
247
+ * @returns README content as string, or empty string if not found
248
+ */
249
+ async fetchReadme(fullName) {
250
+ const readmeFiles = ['README.md', 'README.rst', 'README.txt', 'README'];
251
+ const branches = ['main', 'master'];
252
+ logger.debug('GitHub Fetcher] Fetching README', {
253
+ fullName,
254
+ readmeFiles,
255
+ branches
256
+ });
257
+ for (const readmeName of readmeFiles) {
258
+ for (const branch of branches) {
259
+ const readmeUrl = `${this.RAW_URL}/${fullName}/${branch}/${readmeName}`;
260
+ try {
261
+ const axiosInstance = this.createAxiosInstance(this.proxyConfig);
262
+ const startTime = Date.now();
263
+ const response = await axiosInstance.get(readmeUrl, {
264
+ timeout: 10000 // 10 second timeout
265
+ });
266
+ const duration = Date.now() - startTime;
267
+ if (response.status === 200 && response.data) {
268
+ logger.info('GitHub Fetcher] ✅ README found', {
269
+ fullName,
270
+ readmeName,
271
+ branch,
272
+ contentLength: response.data.length,
273
+ durationMs: duration
274
+ });
275
+ return response.data;
276
+ }
277
+ }
278
+ catch (error) {
279
+ // Continue to next combination if this one fails
280
+ if (axios_1.default.isAxiosError(error) && error.response?.status === 404) {
281
+ logger.debug('GitHub Fetcher] README not found', {
282
+ fullName,
283
+ readmeName,
284
+ branch
285
+ });
286
+ continue;
287
+ }
288
+ // For other errors, log and continue
289
+ logger.warn('GitHub Fetcher] Error fetching README', {
290
+ fullName,
291
+ readmeName,
292
+ branch,
293
+ error: error instanceof Error ? error.message : 'Unknown error'
294
+ });
295
+ continue;
296
+ }
297
+ }
298
+ }
299
+ // No README found in any combination
300
+ logger.info('GitHub Fetcher] No README found in any combination', { fullName });
301
+ return '';
302
+ }
303
+ }
304
+ exports.GitHubFetcher = GitHubFetcher;
305
+ exports.default = GitHubFetcher;
306
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * File-based storage manager
3
+ * Stores data in JSON files with monthly rotation
4
+ * Location: ~/.openclaw/plugins/openclaw-github-trending/data/YYYY-MM.json
5
+ */
6
+ export declare class FileStorageManager {
7
+ private dataDir;
8
+ private pluginId;
9
+ constructor(pluginId?: string);
10
+ /**
11
+ * Get current month key (YYYY-MM)
12
+ */
13
+ private getCurrentMonthKey;
14
+ /**
15
+ * Get file path for a specific month
16
+ */
17
+ private getFilePath;
18
+ /**
19
+ * Load data from file (current month by default)
20
+ */
21
+ get(key: string, monthKey?: string): Promise<any>;
22
+ /**
23
+ * Save data to file (current month by default)
24
+ */
25
+ set(key: string, value: any, monthKey?: string): Promise<void>;
26
+ /**
27
+ * Get all months with data
28
+ */
29
+ getMonths(): Promise<string[]>;
30
+ /**
31
+ * Get full data object for a specific month
32
+ */
33
+ getMonthData(monthKey?: string): Promise<Record<string, any> | null>;
34
+ /**
35
+ * Merge data across all months (useful for migrations)
36
+ */
37
+ getAllData(): Promise<Record<string, any>>;
38
+ /**
39
+ * Delete data for a specific key
40
+ */
41
+ delete(key: string, monthKey?: string): Promise<void>;
42
+ /**
43
+ * Clear all data for a specific month
44
+ */
45
+ clear(monthKey?: string): Promise<void>;
46
+ /**
47
+ * Get storage statistics
48
+ */
49
+ getStats(): Promise<{
50
+ totalMonths: number;
51
+ currentMonth: string;
52
+ currentMonthSize: number;
53
+ totalSize: number;
54
+ files: {
55
+ month: string;
56
+ size: number;
57
+ }[];
58
+ }>;
59
+ }
60
+ export declare function getStorageManager(pluginId?: string): FileStorageManager;
61
+ export default FileStorageManager;
62
+ //# sourceMappingURL=file-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../../src/core/file-storage.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,GAAE,MAAmC;IAsBzD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA2BvD;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCpE;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBpC;;OAEG;IACG,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IA0B1E;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAmBhD;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B3D;;OAEG;IACG,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC1C,CAAC;CA4BH;AAKD,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAmC,GAAG,kBAAkB,CAKnG;AAED,eAAe,kBAAkB,CAAC"}