@channel47/dataforseo-mcp-server 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.
- package/LICENSE +21 -0
- package/README.md +155 -0
- package/dist/api/ai-optimization/index.d.ts +3 -0
- package/dist/api/ai-optimization/index.js +178 -0
- package/dist/api/ai-optimization/index.js.map +1 -0
- package/dist/api/app-data/index.d.ts +3 -0
- package/dist/api/app-data/index.js +115 -0
- package/dist/api/app-data/index.js.map +1 -0
- package/dist/api/backlinks/index.d.ts +3 -0
- package/dist/api/backlinks/index.js +186 -0
- package/dist/api/backlinks/index.js.map +1 -0
- package/dist/api/business-data/index.d.ts +3 -0
- package/dist/api/business-data/index.js +235 -0
- package/dist/api/business-data/index.js.map +1 -0
- package/dist/api/client.d.ts +10 -0
- package/dist/api/client.js +54 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/content-analysis/index.d.ts +3 -0
- package/dist/api/content-analysis/index.js +64 -0
- package/dist/api/content-analysis/index.js.map +1 -0
- package/dist/api/content-generation/index.d.ts +3 -0
- package/dist/api/content-generation/index.js +75 -0
- package/dist/api/content-generation/index.js.map +1 -0
- package/dist/api/domain-analytics/index.d.ts +3 -0
- package/dist/api/domain-analytics/index.js +69 -0
- package/dist/api/domain-analytics/index.js.map +1 -0
- package/dist/api/keywords/index.d.ts +3 -0
- package/dist/api/keywords/index.js +73 -0
- package/dist/api/keywords/index.js.map +1 -0
- package/dist/api/labs/index.d.ts +3 -0
- package/dist/api/labs/index.js +315 -0
- package/dist/api/labs/index.js.map +1 -0
- package/dist/api/localfalcon/index.d.ts +7 -0
- package/dist/api/localfalcon/index.js +109 -0
- package/dist/api/localfalcon/index.js.map +1 -0
- package/dist/api/merchant/index.d.ts +3 -0
- package/dist/api/merchant/index.js +133 -0
- package/dist/api/merchant/index.js.map +1 -0
- package/dist/api/onpage/index.d.ts +3 -0
- package/dist/api/onpage/index.js +68 -0
- package/dist/api/onpage/index.js.map +1 -0
- package/dist/api/serp/index.d.ts +3 -0
- package/dist/api/serp/index.js +99 -0
- package/dist/api/serp/index.js.map +1 -0
- package/dist/api/tools.d.ts +11 -0
- package/dist/api/tools.js +61 -0
- package/dist/api/tools.js.map +1 -0
- package/dist/api/types.d.ts +89 -0
- package/dist/api/types.js +19 -0
- package/dist/api/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool } from "../tools.js";
|
|
3
|
+
export function registerContentGenerationTools(server, apiClient) {
|
|
4
|
+
// Content Generation Generate Text
|
|
5
|
+
registerTool(server, "content_generation_text", z.object({
|
|
6
|
+
topic: z.string().describe("Topic for the generated content"),
|
|
7
|
+
creative_level: z.number().min(0).max(1).optional().describe("Creative level (0-1)"),
|
|
8
|
+
language_code: z.string().optional().describe("Language code"),
|
|
9
|
+
language_name: z.string().optional().describe("Language name"),
|
|
10
|
+
target_audience: z.array(z.string()).optional().describe("Target audience"),
|
|
11
|
+
text_style: z.string().optional().describe("Text style"),
|
|
12
|
+
writer_experience_level: z.enum(["expert", "beginner", "intermediate"]).optional().describe("Writer experience level"),
|
|
13
|
+
subject_experience_level: z.enum(["expert", "beginner", "intermediate"]).optional().describe("Subject experience level"),
|
|
14
|
+
text_format: z.enum(["plain", "html"]).optional().describe("Text format")
|
|
15
|
+
}), async (params, client) => {
|
|
16
|
+
const response = await client.post("/content_generation/text/live", [params]);
|
|
17
|
+
return response;
|
|
18
|
+
}, apiClient);
|
|
19
|
+
// Content Generation Generate Paraphrase
|
|
20
|
+
registerTool(server, "content_generation_paraphrase", z.object({
|
|
21
|
+
text: z.string().describe("Text to paraphrase"),
|
|
22
|
+
paraphrase_level: z.number().min(1).max(3).optional().describe("Paraphrase level (1-3)"),
|
|
23
|
+
creative_level: z.number().min(0).max(1).optional().describe("Creative level (0-1)"),
|
|
24
|
+
language_code: z.string().optional().describe("Language code"),
|
|
25
|
+
language_name: z.string().optional().describe("Language name")
|
|
26
|
+
}), async (params, client) => {
|
|
27
|
+
const response = await client.post("/content_generation/paraphrase/live", [params]);
|
|
28
|
+
return response;
|
|
29
|
+
}, apiClient);
|
|
30
|
+
// Content Generation Generate Meta Tags
|
|
31
|
+
registerTool(server, "content_generation_meta_tags", z.object({
|
|
32
|
+
text: z.string().optional().describe("Text to generate meta tags from"),
|
|
33
|
+
url: z.string().optional().describe("URL to extract text from"),
|
|
34
|
+
language_code: z.string().optional().describe("Language code"),
|
|
35
|
+
language_name: z.string().optional().describe("Language name"),
|
|
36
|
+
creative_level: z.number().min(0).max(1).optional().describe("Creative level (0-1)")
|
|
37
|
+
}), async (params, client) => {
|
|
38
|
+
const response = await client.post("/content_generation/meta_tags/live", [params]);
|
|
39
|
+
return response;
|
|
40
|
+
}, apiClient);
|
|
41
|
+
// Content Generation Generate Summarize
|
|
42
|
+
registerTool(server, "content_generation_summarize", z.object({
|
|
43
|
+
text: z.string().optional().describe("Text to summarize"),
|
|
44
|
+
url: z.string().optional().describe("URL to extract text from"),
|
|
45
|
+
language_code: z.string().optional().describe("Language code"),
|
|
46
|
+
language_name: z.string().optional().describe("Language name"),
|
|
47
|
+
summary_size: z.enum(["small", "medium", "large"]).optional().describe("Summary size")
|
|
48
|
+
}), async (params, client) => {
|
|
49
|
+
const response = await client.post("/content_generation/summarize/live", [params]);
|
|
50
|
+
return response;
|
|
51
|
+
}, apiClient);
|
|
52
|
+
// Content Generation Generate Title
|
|
53
|
+
registerTool(server, "content_generation_title", z.object({
|
|
54
|
+
text: z.string().optional().describe("Text to generate title from"),
|
|
55
|
+
url: z.string().optional().describe("URL to extract text from"),
|
|
56
|
+
language_code: z.string().optional().describe("Language code"),
|
|
57
|
+
language_name: z.string().optional().describe("Language name"),
|
|
58
|
+
creative_level: z.number().min(0).max(1).optional().describe("Creative level (0-1)")
|
|
59
|
+
}), async (params, client) => {
|
|
60
|
+
const response = await client.post("/content_generation/title/live", [params]);
|
|
61
|
+
return response;
|
|
62
|
+
}, apiClient);
|
|
63
|
+
// Content Generation Explain Code
|
|
64
|
+
registerTool(server, "content_generation_explain_code", z.object({
|
|
65
|
+
code: z.string().describe("Code to explain"),
|
|
66
|
+
language_code: z.string().optional().describe("Language code"),
|
|
67
|
+
language_name: z.string().optional().describe("Language name"),
|
|
68
|
+
code_language: z.string().optional().describe("Programming language of the code"),
|
|
69
|
+
explanation_type: z.enum(["line_by_line", "function", "block"]).optional().describe("Type of explanation")
|
|
70
|
+
}), async (params, client) => {
|
|
71
|
+
const response = await client.post("/content_generation/explain_code/live", [params]);
|
|
72
|
+
return response;
|
|
73
|
+
}, apiClient);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/content-generation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool } from "../tools.js";
|
|
3
|
+
export function registerDomainAnalyticsTools(server, apiClient) {
|
|
4
|
+
// Technologies Summary
|
|
5
|
+
registerTool(server, "domain_analytics_technologies_summary", z.object({
|
|
6
|
+
technology_name: z.string().optional().describe("Filter results by technology name"),
|
|
7
|
+
technology_group: z.string().optional().describe("Filter results by technology group"),
|
|
8
|
+
category: z.string().optional().describe("Filter results by category")
|
|
9
|
+
}), async (params, client) => {
|
|
10
|
+
const response = await client.post("/domain_analytics/technologies/summary/live", [params]);
|
|
11
|
+
return response;
|
|
12
|
+
}, apiClient);
|
|
13
|
+
// Technologies Technologies
|
|
14
|
+
registerTool(server, "domain_analytics_technologies_technologies", z.object({
|
|
15
|
+
technology_name: z.string().optional().describe("Filter results by technology name"),
|
|
16
|
+
technology_group: z.string().optional().describe("Filter results by technology group"),
|
|
17
|
+
category: z.string().optional().describe("Filter results by category")
|
|
18
|
+
}), async (params, client) => {
|
|
19
|
+
const response = await client.post("/domain_analytics/technologies/technologies/live", [params]);
|
|
20
|
+
return response;
|
|
21
|
+
}, apiClient);
|
|
22
|
+
// Technologies Domains by Technology
|
|
23
|
+
registerTool(server, "domain_analytics_technologies_domains_by_technology", z.object({
|
|
24
|
+
technology_name: z.string().describe("Technology name to search for"),
|
|
25
|
+
technology_group: z.string().optional().describe("Filter results by technology group"),
|
|
26
|
+
category: z.string().optional().describe("Filter results by category"),
|
|
27
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
28
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
29
|
+
}), async (params, client) => {
|
|
30
|
+
const response = await client.post("/domain_analytics/technologies/domains_by_technology/live", [params]);
|
|
31
|
+
return response;
|
|
32
|
+
}, apiClient);
|
|
33
|
+
// Technologies Domain Technologies
|
|
34
|
+
registerTool(server, "domain_analytics_technologies_domain_technologies", z.object({
|
|
35
|
+
target: z.string().describe("Target domain to analyze"),
|
|
36
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
37
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
38
|
+
}), async (params, client) => {
|
|
39
|
+
const response = await client.post("/domain_analytics/technologies/domain_technologies/live", [params]);
|
|
40
|
+
return response;
|
|
41
|
+
}, apiClient);
|
|
42
|
+
// Technologies Technology Stats
|
|
43
|
+
registerTool(server, "domain_analytics_technologies_technology_stats", z.object({
|
|
44
|
+
technology_name: z.string().describe("Technology name to get stats for"),
|
|
45
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
46
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
47
|
+
}), async (params, client) => {
|
|
48
|
+
const response = await client.post("/domain_analytics/technologies/technology_stats/live", [params]);
|
|
49
|
+
return response;
|
|
50
|
+
}, apiClient);
|
|
51
|
+
// Technologies Domains by HTML Terms
|
|
52
|
+
registerTool(server, "domain_analytics_technologies_domains_by_html_terms", z.object({
|
|
53
|
+
terms: z.array(z.string()).describe("HTML terms to search for"),
|
|
54
|
+
intersection_mode: z.enum(["and", "or"]).optional().describe("Intersection mode"),
|
|
55
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
56
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
57
|
+
}), async (params, client) => {
|
|
58
|
+
const response = await client.post("/domain_analytics/technologies/domains_by_html_terms/live", [params]);
|
|
59
|
+
return response;
|
|
60
|
+
}, apiClient);
|
|
61
|
+
// Whois Overview
|
|
62
|
+
registerTool(server, "domain_analytics_whois_overview", z.object({
|
|
63
|
+
domain: z.string().describe("Domain to get WHOIS information for")
|
|
64
|
+
}), async (params, client) => {
|
|
65
|
+
const response = await client.post("/domain_analytics/whois/overview/live", [params]);
|
|
66
|
+
return response;
|
|
67
|
+
}, apiClient);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/domain-analytics/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool } from "../tools.js";
|
|
3
|
+
export function registerKeywordsTools(server, apiClient) {
|
|
4
|
+
// Google Ads Keywords Data
|
|
5
|
+
registerTool(server, "keywords_google_ads_keywords_for_keyword", z.object({
|
|
6
|
+
keyword: z.string().describe("Keyword to get data for"),
|
|
7
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
8
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
9
|
+
}), async (params, client) => {
|
|
10
|
+
const response = await client.post("/keywords_data/google_ads/keywords_for_keywords/live", [params]);
|
|
11
|
+
return response;
|
|
12
|
+
}, apiClient);
|
|
13
|
+
// Google Ads Keywords Suggestions
|
|
14
|
+
registerTool(server, "keywords_google_ads_keywords_for_site", z.object({
|
|
15
|
+
target: z.string().describe("Target domain, subdomain or URL to analyze"),
|
|
16
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
17
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
18
|
+
}), async (params, client) => {
|
|
19
|
+
const response = await client.post("/keywords_data/google_ads/keywords_for_site/live", [params]);
|
|
20
|
+
return response;
|
|
21
|
+
}, apiClient);
|
|
22
|
+
// Google Ads Search Volume
|
|
23
|
+
registerTool(server, "keywords_google_ads_search_volume", z.object({
|
|
24
|
+
keywords: z.array(z.string()).describe("Keywords to get search volume for"),
|
|
25
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
26
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
27
|
+
}), async (params, client) => {
|
|
28
|
+
const response = await client.post("/keywords_data/google_ads/search_volume/live", [params]);
|
|
29
|
+
return response;
|
|
30
|
+
}, apiClient);
|
|
31
|
+
// Google Ads Keywords Locations
|
|
32
|
+
registerTool(server, "keywords_google_ads_locations", z.object({
|
|
33
|
+
country: z.string().optional().describe("Filter locations by country name")
|
|
34
|
+
}), async (params, client) => {
|
|
35
|
+
const url = params.country
|
|
36
|
+
? `/keywords_data/google_ads/locations?country=${encodeURIComponent(params.country)}`
|
|
37
|
+
: "/keywords_data/google_ads/locations";
|
|
38
|
+
const response = await client.get(url);
|
|
39
|
+
return response;
|
|
40
|
+
}, apiClient);
|
|
41
|
+
// Google Ads Keywords Languages
|
|
42
|
+
registerTool(server, "keywords_google_ads_languages", {}, async (_params, client) => {
|
|
43
|
+
const response = await client.get("/keywords_data/google_ads/languages");
|
|
44
|
+
return response;
|
|
45
|
+
}, apiClient);
|
|
46
|
+
// Google Ads Keywords Categories
|
|
47
|
+
registerTool(server, "keywords_google_ads_categories", {}, async (_params, client) => {
|
|
48
|
+
const response = await client.get("/keywords_data/google_ads/categories");
|
|
49
|
+
return response;
|
|
50
|
+
}, apiClient);
|
|
51
|
+
// Google Trends
|
|
52
|
+
registerTool(server, "keywords_google_trends_explore", z.object({
|
|
53
|
+
keywords: z.array(z.string()).describe("Keywords to explore"),
|
|
54
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
55
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
56
|
+
date_from: z.string().optional().describe("Start date in YYYY-MM-DD format"),
|
|
57
|
+
date_to: z.string().optional().describe("End date in YYYY-MM-DD format"),
|
|
58
|
+
category_code: z.number().optional().describe("Google Trends category code")
|
|
59
|
+
}), async (params, client) => {
|
|
60
|
+
const response = await client.post("/keywords_data/google_trends/explore/live", [params]);
|
|
61
|
+
return response;
|
|
62
|
+
}, apiClient);
|
|
63
|
+
// Bing Keyword Data
|
|
64
|
+
registerTool(server, "keywords_bing_keywords_for_keywords", z.object({
|
|
65
|
+
keyword: z.string().describe("Keyword to get data for"),
|
|
66
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
67
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
68
|
+
}), async (params, client) => {
|
|
69
|
+
const response = await client.post("/keywords_data/bing/keywords_for_keywords/live", [params]);
|
|
70
|
+
return response;
|
|
71
|
+
}, apiClient);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/keywords/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { registerTool } from "../tools.js";
|
|
3
|
+
// DataForSEO Labs API schemas
|
|
4
|
+
const keywordResearchBaseSchema = z.object({
|
|
5
|
+
keyword: z.string().describe("Keyword(s) to research"),
|
|
6
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
7
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
8
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
9
|
+
offset: z.number().optional().describe("Offset for pagination"),
|
|
10
|
+
include_seed_keyword: z.boolean().optional().describe("Include the seed keyword in the results")
|
|
11
|
+
});
|
|
12
|
+
const domainResearchBaseSchema = z.object({
|
|
13
|
+
target: z.string().describe("Target domain name"),
|
|
14
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
15
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
16
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
17
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
18
|
+
});
|
|
19
|
+
export function registerLabsTools(server, apiClient) {
|
|
20
|
+
// Keywords for Site
|
|
21
|
+
registerTool(server, "labs_google_keywords_for_site", domainResearchBaseSchema.extend({
|
|
22
|
+
include_serp_info: z.boolean().optional().describe("Include SERP information")
|
|
23
|
+
}), async (params, client) => {
|
|
24
|
+
const response = await client.post("/dataforseo_labs/google/keywords_for_site/live", [params]);
|
|
25
|
+
return response;
|
|
26
|
+
}, apiClient);
|
|
27
|
+
// Related Keywords
|
|
28
|
+
registerTool(server, "labs_google_related_keywords", keywordResearchBaseSchema, async (params, client) => {
|
|
29
|
+
const response = await client.post("/dataforseo_labs/google/related_keywords/live", [params]);
|
|
30
|
+
return response;
|
|
31
|
+
}, apiClient);
|
|
32
|
+
// Keyword Suggestions
|
|
33
|
+
registerTool(server, "labs_google_keyword_suggestions", keywordResearchBaseSchema, async (params, client) => {
|
|
34
|
+
const response = await client.post("/dataforseo_labs/google/keyword_suggestions/live", [params]);
|
|
35
|
+
return response;
|
|
36
|
+
}, apiClient);
|
|
37
|
+
// Keyword Ideas
|
|
38
|
+
registerTool(server, "labs_google_keyword_ideas", keywordResearchBaseSchema, async (params, client) => {
|
|
39
|
+
const response = await client.post("/dataforseo_labs/google/keyword_ideas/live", [params]);
|
|
40
|
+
return response;
|
|
41
|
+
}, apiClient);
|
|
42
|
+
// Historical Search Volume
|
|
43
|
+
registerTool(server, "labs_google_historical_search_volume", z.object({
|
|
44
|
+
keywords: z.array(z.string()).describe("Keywords to get historical search volume for"),
|
|
45
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
46
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
47
|
+
include_serp_info: z.boolean().optional().describe("Include SERP information")
|
|
48
|
+
}), async (params, client) => {
|
|
49
|
+
const response = await client.post("/dataforseo_labs/google/historical_search_volume/live", [params]);
|
|
50
|
+
return response;
|
|
51
|
+
}, apiClient);
|
|
52
|
+
// Bulk Keyword Difficulty
|
|
53
|
+
registerTool(server, "labs_google_bulk_keyword_difficulty", z.object({
|
|
54
|
+
keywords: z.array(z.string()).describe("Keywords to calculate difficulty for"),
|
|
55
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
56
|
+
language_code: z.string().optional().describe("The language code for the search")
|
|
57
|
+
}), async (params, client) => {
|
|
58
|
+
const response = await client.post("/dataforseo_labs/google/bulk_keyword_difficulty/live", [params]);
|
|
59
|
+
return response;
|
|
60
|
+
}, apiClient);
|
|
61
|
+
// Search Intent
|
|
62
|
+
registerTool(server, "labs_google_search_intent", z.object({
|
|
63
|
+
keywords: z.array(z.string()).describe("Keywords to determine search intent"),
|
|
64
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
65
|
+
language_code: z.string().optional().describe("The language code for the search")
|
|
66
|
+
}), async (params, client) => {
|
|
67
|
+
const response = await client.post("/dataforseo_labs/google/search_intent/live", [params]);
|
|
68
|
+
return response;
|
|
69
|
+
}, apiClient);
|
|
70
|
+
// Categories for Domain
|
|
71
|
+
registerTool(server, "labs_google_categories_for_domain", domainResearchBaseSchema, async (params, client) => {
|
|
72
|
+
const response = await client.post("/dataforseo_labs/google/categories_for_domain/live", [params]);
|
|
73
|
+
return response;
|
|
74
|
+
}, apiClient);
|
|
75
|
+
// Domain Rank Overview
|
|
76
|
+
registerTool(server, "labs_google_domain_rank_overview", domainResearchBaseSchema, async (params, client) => {
|
|
77
|
+
const response = await client.post("/dataforseo_labs/google/domain_rank_overview/live", [params]);
|
|
78
|
+
return response;
|
|
79
|
+
}, apiClient);
|
|
80
|
+
// Ranked Keywords
|
|
81
|
+
registerTool(server, "labs_google_ranked_keywords", domainResearchBaseSchema.extend({
|
|
82
|
+
include_serp_info: z.boolean().optional().describe("Include SERP information"),
|
|
83
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
84
|
+
}), async (params, client) => {
|
|
85
|
+
const response = await client.post("/dataforseo_labs/google/ranked_keywords/live", [params]);
|
|
86
|
+
return response;
|
|
87
|
+
}, apiClient);
|
|
88
|
+
// Competitors Domain
|
|
89
|
+
registerTool(server, "labs_google_competitors_domain", domainResearchBaseSchema.extend({
|
|
90
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
91
|
+
}), async (params, client) => {
|
|
92
|
+
const response = await client.post("/dataforseo_labs/google/competitors_domain/live", [params]);
|
|
93
|
+
return response;
|
|
94
|
+
}, apiClient);
|
|
95
|
+
// Domain Intersection
|
|
96
|
+
registerTool(server, "labs_google_domain_intersection", z.object({
|
|
97
|
+
domains: z.array(z.string()).min(2).max(20).describe("Domains to compare"),
|
|
98
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
99
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
100
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
101
|
+
offset: z.number().optional().describe("Offset for pagination"),
|
|
102
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
103
|
+
}), async (params, client) => {
|
|
104
|
+
const response = await client.post("/dataforseo_labs/google/domain_intersection/live", [params]);
|
|
105
|
+
return response;
|
|
106
|
+
}, apiClient);
|
|
107
|
+
// Subdomains
|
|
108
|
+
registerTool(server, "labs_google_subdomains", domainResearchBaseSchema.extend({
|
|
109
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
110
|
+
}), async (params, client) => {
|
|
111
|
+
const response = await client.post("/dataforseo_labs/google/subdomains/live", [params]);
|
|
112
|
+
return response;
|
|
113
|
+
}, apiClient);
|
|
114
|
+
// Relevant Pages
|
|
115
|
+
registerTool(server, "labs_google_relevant_pages", domainResearchBaseSchema.extend({
|
|
116
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
117
|
+
}), async (params, client) => {
|
|
118
|
+
const response = await client.post("/dataforseo_labs/google/relevant_pages/live", [params]);
|
|
119
|
+
return response;
|
|
120
|
+
}, apiClient);
|
|
121
|
+
// Bulk Traffic Estimation
|
|
122
|
+
registerTool(server, "labs_google_bulk_traffic_estimation", z.object({
|
|
123
|
+
targets: z.array(z.string()).describe("Domains to estimate traffic for"),
|
|
124
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
125
|
+
language_code: z.string().optional().describe("The language code for the search")
|
|
126
|
+
}), async (params, client) => {
|
|
127
|
+
const response = await client.post("/dataforseo_labs/google/bulk_traffic_estimation/live", [params]);
|
|
128
|
+
return response;
|
|
129
|
+
}, apiClient);
|
|
130
|
+
// === AMAZON LABS API ===
|
|
131
|
+
// Amazon Bulk Search Volume
|
|
132
|
+
registerTool(server, "labs_amazon_bulk_search_volume", z.object({
|
|
133
|
+
keywords: z.array(z.string()).describe("Keywords to get search volume for"),
|
|
134
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
135
|
+
language_code: z.string().optional().describe("The language code for the search")
|
|
136
|
+
}), async (params, client) => {
|
|
137
|
+
const response = await client.post("/dataforseo_labs/amazon/bulk_search_volume/live", [params]);
|
|
138
|
+
return response;
|
|
139
|
+
}, apiClient);
|
|
140
|
+
// Amazon Related Keywords
|
|
141
|
+
registerTool(server, "labs_amazon_related_keywords", keywordResearchBaseSchema.extend({
|
|
142
|
+
marketplace: z.string().optional().describe("Amazon marketplace (e.g., amazon.com)")
|
|
143
|
+
}), async (params, client) => {
|
|
144
|
+
const response = await client.post("/dataforseo_labs/amazon/related_keywords/live", [params]);
|
|
145
|
+
return response;
|
|
146
|
+
}, apiClient);
|
|
147
|
+
// Amazon Ranked Keywords
|
|
148
|
+
registerTool(server, "labs_amazon_ranked_keywords", z.object({
|
|
149
|
+
target: z.string().describe("Target ASIN or Amazon domain"),
|
|
150
|
+
marketplace: z.string().optional().describe("Amazon marketplace (e.g., amazon.com)"),
|
|
151
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
152
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
153
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
154
|
+
offset: z.number().optional().describe("Offset for pagination"),
|
|
155
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
156
|
+
}), async (params, client) => {
|
|
157
|
+
const response = await client.post("/dataforseo_labs/amazon/ranked_keywords/live", [params]);
|
|
158
|
+
return response;
|
|
159
|
+
}, apiClient);
|
|
160
|
+
// Amazon Product Competitors
|
|
161
|
+
registerTool(server, "labs_amazon_product_competitors", z.object({
|
|
162
|
+
asin: z.string().describe("Target Amazon ASIN"),
|
|
163
|
+
marketplace: z.string().optional().describe("Amazon marketplace (e.g., amazon.com)"),
|
|
164
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
165
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
166
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
167
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
168
|
+
}), async (params, client) => {
|
|
169
|
+
const response = await client.post("/dataforseo_labs/amazon/product_competitors/live", [params]);
|
|
170
|
+
return response;
|
|
171
|
+
}, apiClient);
|
|
172
|
+
// === BING LABS API ===
|
|
173
|
+
// Bing Keywords for Site
|
|
174
|
+
registerTool(server, "labs_bing_keywords_for_site", domainResearchBaseSchema.extend({
|
|
175
|
+
include_serp_info: z.boolean().optional().describe("Include SERP information")
|
|
176
|
+
}), async (params, client) => {
|
|
177
|
+
const response = await client.post("/dataforseo_labs/bing/keywords_for_site/live", [params]);
|
|
178
|
+
return response;
|
|
179
|
+
}, apiClient);
|
|
180
|
+
// Bing Related Keywords
|
|
181
|
+
registerTool(server, "labs_bing_related_keywords", keywordResearchBaseSchema, async (params, client) => {
|
|
182
|
+
const response = await client.post("/dataforseo_labs/bing/related_keywords/live", [params]);
|
|
183
|
+
return response;
|
|
184
|
+
}, apiClient);
|
|
185
|
+
// Bing Domain Rank Overview
|
|
186
|
+
registerTool(server, "labs_bing_domain_rank_overview", domainResearchBaseSchema, async (params, client) => {
|
|
187
|
+
const response = await client.post("/dataforseo_labs/bing/domain_rank_overview/live", [params]);
|
|
188
|
+
return response;
|
|
189
|
+
}, apiClient);
|
|
190
|
+
// Bing Ranked Keywords
|
|
191
|
+
registerTool(server, "labs_bing_ranked_keywords", domainResearchBaseSchema.extend({
|
|
192
|
+
include_serp_info: z.boolean().optional().describe("Include SERP information"),
|
|
193
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
194
|
+
}), async (params, client) => {
|
|
195
|
+
const response = await client.post("/dataforseo_labs/bing/ranked_keywords/live", [params]);
|
|
196
|
+
return response;
|
|
197
|
+
}, apiClient);
|
|
198
|
+
// Bing Competitors Domain
|
|
199
|
+
registerTool(server, "labs_bing_competitors_domain", domainResearchBaseSchema.extend({
|
|
200
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
201
|
+
}), async (params, client) => {
|
|
202
|
+
const response = await client.post("/dataforseo_labs/bing/competitors_domain/live", [params]);
|
|
203
|
+
return response;
|
|
204
|
+
}, apiClient);
|
|
205
|
+
// === GOOGLE PLAY AND APP STORE LABS API ===
|
|
206
|
+
// Google Play Keywords for App
|
|
207
|
+
registerTool(server, "labs_google_play_keywords_for_app", z.object({
|
|
208
|
+
app_id: z.string().describe("Google Play app ID"),
|
|
209
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
210
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
211
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
212
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
213
|
+
}), async (params, client) => {
|
|
214
|
+
const response = await client.post("/dataforseo_labs/google_play/keywords_for_app/live", [params]);
|
|
215
|
+
return response;
|
|
216
|
+
}, apiClient);
|
|
217
|
+
// Google Play Ranked Apps
|
|
218
|
+
registerTool(server, "labs_google_play_ranked_apps", keywordResearchBaseSchema.extend({
|
|
219
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
220
|
+
}), async (params, client) => {
|
|
221
|
+
const response = await client.post("/dataforseo_labs/google_play/ranked_apps/live", [params]);
|
|
222
|
+
return response;
|
|
223
|
+
}, apiClient);
|
|
224
|
+
// Google Play App Competitors
|
|
225
|
+
registerTool(server, "labs_google_play_app_competitors", z.object({
|
|
226
|
+
app_id: z.string().describe("Google Play app ID"),
|
|
227
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
228
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
229
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
230
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
231
|
+
}), async (params, client) => {
|
|
232
|
+
const response = await client.post("/dataforseo_labs/google_play/app_competitors/live", [params]);
|
|
233
|
+
return response;
|
|
234
|
+
}, apiClient);
|
|
235
|
+
// App Store Keywords for App
|
|
236
|
+
registerTool(server, "labs_app_store_keywords_for_app", z.object({
|
|
237
|
+
app_id: z.string().describe("App Store app ID"),
|
|
238
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
239
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
240
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
241
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
242
|
+
}), async (params, client) => {
|
|
243
|
+
const response = await client.post("/dataforseo_labs/app_store/keywords_for_app/live", [params]);
|
|
244
|
+
return response;
|
|
245
|
+
}, apiClient);
|
|
246
|
+
// App Store Ranked Apps
|
|
247
|
+
registerTool(server, "labs_app_store_ranked_apps", keywordResearchBaseSchema.extend({
|
|
248
|
+
filters: z.array(z.any()).optional().describe("Filters to apply to the results")
|
|
249
|
+
}), async (params, client) => {
|
|
250
|
+
const response = await client.post("/dataforseo_labs/app_store/ranked_apps/live", [params]);
|
|
251
|
+
return response;
|
|
252
|
+
}, apiClient);
|
|
253
|
+
// App Store App Competitors
|
|
254
|
+
registerTool(server, "labs_app_store_app_competitors", z.object({
|
|
255
|
+
app_id: z.string().describe("App Store app ID"),
|
|
256
|
+
location_code: z.number().optional().describe("The location code for the search"),
|
|
257
|
+
language_code: z.string().optional().describe("The language code for the search"),
|
|
258
|
+
limit: z.number().optional().describe("Maximum number of results to return"),
|
|
259
|
+
offset: z.number().optional().describe("Offset for pagination")
|
|
260
|
+
}), async (params, client) => {
|
|
261
|
+
const response = await client.post("/dataforseo_labs/app_store/app_competitors/live", [params]);
|
|
262
|
+
return response;
|
|
263
|
+
}, apiClient);
|
|
264
|
+
// === META ENDPOINTS FOR LABS API ===
|
|
265
|
+
// Categories
|
|
266
|
+
registerTool(server, "labs_categories", z.object({
|
|
267
|
+
engine: z.enum(["google", "amazon", "bing", "google_play", "app_store"]).describe("Engine to get categories for"),
|
|
268
|
+
category_code: z.number().optional().describe("Parent category code"),
|
|
269
|
+
language_code: z.string().optional().describe("Language code")
|
|
270
|
+
}), async (params, client) => {
|
|
271
|
+
const url = `/dataforseo_labs/${params.engine}/categories`;
|
|
272
|
+
const queryParams = [];
|
|
273
|
+
if (params.category_code) {
|
|
274
|
+
queryParams.push(`category_code=${params.category_code}`);
|
|
275
|
+
}
|
|
276
|
+
if (params.language_code) {
|
|
277
|
+
queryParams.push(`language_code=${params.language_code}`);
|
|
278
|
+
}
|
|
279
|
+
const fullUrl = queryParams.length > 0 ? `${url}?${queryParams.join('&')}` : url;
|
|
280
|
+
const response = await client.get(fullUrl);
|
|
281
|
+
return response;
|
|
282
|
+
}, apiClient);
|
|
283
|
+
// Locations
|
|
284
|
+
registerTool(server, "labs_locations", z.object({
|
|
285
|
+
engine: z.enum(["google", "amazon", "bing", "google_play", "app_store"]).describe("Engine to get locations for"),
|
|
286
|
+
country: z.string().optional().describe("Filter locations by country name")
|
|
287
|
+
}), async (params, client) => {
|
|
288
|
+
const url = `/dataforseo_labs/${params.engine}/locations`;
|
|
289
|
+
const queryParams = [];
|
|
290
|
+
if (params.country) {
|
|
291
|
+
queryParams.push(`country=${encodeURIComponent(params.country)}`);
|
|
292
|
+
}
|
|
293
|
+
const fullUrl = queryParams.length > 0 ? `${url}?${queryParams.join('&')}` : url;
|
|
294
|
+
const response = await client.get(fullUrl);
|
|
295
|
+
return response;
|
|
296
|
+
}, apiClient);
|
|
297
|
+
// Languages
|
|
298
|
+
registerTool(server, "labs_languages", z.object({
|
|
299
|
+
engine: z.enum(["google", "amazon", "bing", "google_play", "app_store"]).describe("Engine to get languages for")
|
|
300
|
+
}), async (params, client) => {
|
|
301
|
+
const url = `/dataforseo_labs/${params.engine}/languages`;
|
|
302
|
+
const response = await client.get(url);
|
|
303
|
+
return response;
|
|
304
|
+
}, apiClient);
|
|
305
|
+
// Available History
|
|
306
|
+
registerTool(server, "labs_available_history", z.object({
|
|
307
|
+
engine: z.enum(["google", "amazon", "bing", "google_play", "app_store"]).describe("Engine to get available history for"),
|
|
308
|
+
function: z.string().describe("Function name (e.g., keywords_for_site, serp)")
|
|
309
|
+
}), async (params, client) => {
|
|
310
|
+
const url = `/dataforseo_labs/${params.engine}/available_history/${params.function}`;
|
|
311
|
+
const response = await client.get(url);
|
|
312
|
+
return response;
|
|
313
|
+
}, apiClient);
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/labs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,8BAA8B;AAC9B,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACtD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC/D,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CACjG,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CAChE,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,SAA2B;IAC9E,oBAAoB;IACpB,YAAY,CACV,MAAM,EACN,+BAA+B,EAC/B,wBAAwB,CAAC,MAAM,CAAC;QAC9B,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC/E,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,gDAAgD,EAChD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,mBAAmB;IACnB,YAAY,CACV,MAAM,EACN,8BAA8B,EAC9B,yBAAyB,EACzB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,+CAA+C,EAC/C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,sBAAsB;IACtB,YAAY,CACV,MAAM,EACN,iCAAiC,EACjC,yBAAyB,EACzB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,kDAAkD,EAClD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,gBAAgB;IAChB,YAAY,CACV,MAAM,EACN,2BAA2B,EAC3B,yBAAyB,EACzB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,4CAA4C,EAC5C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,2BAA2B;IAC3B,YAAY,CACV,MAAM,EACN,sCAAsC,EACtC,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACtF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC/E,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,uDAAuD,EACvD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,0BAA0B;IAC1B,YAAY,CACV,MAAM,EACN,qCAAqC,EACrC,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC9E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAClF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,sDAAsD,EACtD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,gBAAgB;IAChB,YAAY,CACV,MAAM,EACN,2BAA2B,EAC3B,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC7E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAClF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,4CAA4C,EAC5C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,wBAAwB;IACxB,YAAY,CACV,MAAM,EACN,mCAAmC,EACnC,wBAAwB,EACxB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,oDAAoD,EACpD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,uBAAuB;IACvB,YAAY,CACV,MAAM,EACN,kCAAkC,EAClC,wBAAwB,EACxB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,mDAAmD,EACnD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,kBAAkB;IAClB,YAAY,CACV,MAAM,EACN,6BAA6B,EAC7B,wBAAwB,CAAC,MAAM,CAAC;QAC9B,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC9E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,8CAA8C,EAC9C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,qBAAqB;IACrB,YAAY,CACV,MAAM,EACN,gCAAgC,EAChC,wBAAwB,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,iDAAiD,EACjD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,sBAAsB;IACtB,YAAY,CACV,MAAM,EACN,iCAAiC,EACjC,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC1E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC/D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,kDAAkD,EAClD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,aAAa;IACb,YAAY,CACV,MAAM,EACN,wBAAwB,EACxB,wBAAwB,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,yCAAyC,EACzC,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,iBAAiB;IACjB,YAAY,CACV,MAAM,EACN,4BAA4B,EAC5B,wBAAwB,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,6CAA6C,EAC7C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,0BAA0B;IAC1B,YAAY,CACV,MAAM,EACN,qCAAqC,EACrC,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACxE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAClF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,sDAAsD,EACtD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,0BAA0B;IAE1B,4BAA4B;IAC5B,YAAY,CACV,MAAM,EACN,gCAAgC,EAChC,CAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC3E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAClF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,iDAAiD,EACjD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,0BAA0B;IAC1B,YAAY,CACV,MAAM,EACN,8BAA8B,EAC9B,yBAAyB,CAAC,MAAM,CAAC;QAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KACrF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,+CAA+C,EAC/C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,yBAAyB;IACzB,YAAY,CACV,MAAM,EACN,6BAA6B,EAC7B,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACpF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC/D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,8CAA8C,EAC9C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,6BAA6B;IAC7B,YAAY,CACV,MAAM,EACN,iCAAiC,EACjC,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACpF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAChE,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,kDAAkD,EAClD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,wBAAwB;IAExB,yBAAyB;IACzB,YAAY,CACV,MAAM,EACN,6BAA6B,EAC7B,wBAAwB,CAAC,MAAM,CAAC;QAC9B,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC/E,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,8CAA8C,EAC9C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,wBAAwB;IACxB,YAAY,CACV,MAAM,EACN,4BAA4B,EAC5B,yBAAyB,EACzB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,6CAA6C,EAC7C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,4BAA4B;IAC5B,YAAY,CACV,MAAM,EACN,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,iDAAiD,EACjD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,uBAAuB;IACvB,YAAY,CACV,MAAM,EACN,2BAA2B,EAC3B,wBAAwB,CAAC,MAAM,CAAC;QAC9B,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC9E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,4CAA4C,EAC5C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,0BAA0B;IAC1B,YAAY,CACV,MAAM,EACN,8BAA8B,EAC9B,wBAAwB,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,+CAA+C,EAC/C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,6CAA6C;IAE7C,+BAA+B;IAC/B,YAAY,CACV,MAAM,EACN,mCAAmC,EACnC,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAChE,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,oDAAoD,EACpD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,0BAA0B;IAC1B,YAAY,CACV,MAAM,EACN,8BAA8B,EAC9B,yBAAyB,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,+CAA+C,EAC/C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,8BAA8B;IAC9B,YAAY,CACV,MAAM,EACN,kCAAkC,EAClC,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAChE,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,mDAAmD,EACnD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,6BAA6B;IAC7B,YAAY,CACV,MAAM,EACN,iCAAiC,EACjC,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAChE,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,kDAAkD,EAClD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,wBAAwB;IACxB,YAAY,CACV,MAAM,EACN,4BAA4B,EAC5B,yBAAyB,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjF,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,6CAA6C,EAC7C,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,4BAA4B;IAC5B,YAAY,CACV,MAAM,EACN,gCAAgC,EAChC,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC/C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QAC5E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAChE,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,iDAAiD,EACjD,CAAC,MAAM,CAAC,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,sCAAsC;IAEtC,aAAa;IACb,YAAY,CACV,MAAM,EACN,iBAAiB,EACjB,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACjH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACrE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAC/D,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,oBAAoB,MAAM,CAAC,MAAM,aAAa,CAAC;QAC3D,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,WAAW,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACjF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA0B,OAAO,CAAC,CAAC;QAEpE,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,YAAY;IACZ,YAAY,CACV,MAAM,EACN,gBAAgB,EAChB,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAChH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAC5E,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,oBAAoB,MAAM,CAAC,MAAM,YAAY,CAAC;QAC1D,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACjF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA0B,OAAO,CAAC,CAAC;QAEpE,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,YAAY;IACZ,YAAY,CACV,MAAM,EACN,gBAAgB,EAChB,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACjH,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,oBAAoB,MAAM,CAAC,MAAM,YAAY,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA0B,GAAG,CAAC,CAAC;QAEhE,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;IAEF,oBAAoB;IACpB,YAAY,CACV,MAAM,EACN,wBAAwB,EACxB,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACxH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KAC/E,CAAC,EACF,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,oBAAoB,MAAM,CAAC,MAAM,sBAAsB,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAA0B,GAAG,CAAC,CAAC;QAEhE,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,SAAS,CACV,CAAC;AACJ,CAAC"}
|