@easysociable/cli 0.1.16 → 0.1.18
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/README.md +2 -1
- package/dist/easysociable.js +690 -568
- package/dist/easysociable.js.map +1 -1
- package/package.json +18 -14
- package/skills/easysociable-slideshow/SKILL.md +202 -155
- package/skills/easysociable-slideshow/references/CONTENT_PACK.md +13 -15
- package/skills/easysociable-slideshow/references/DECK_STYLES.md +132 -0
- package/skills/easysociable-slideshow/references/PLATFORM_CAPS.md +1 -1
- package/skills/easysociable-slideshow/scripts/check-pages.mjs +136 -0
- package/skills/easysociable-slideshow/workflows/CREATE_RUN.md +12 -43
- package/skills/easysociable-slideshow/workflows/MCP_FIRST.md +1 -3
- package/skills/easysociable-slideshow/workflows/OUT_OF_SCOPE.md +1 -1
- package/skills/easysociable-template/references/CATALOG_METADATA.md +2 -2
- package/skills/easysociable-template/scripts/generate-theme-from-hex.mjs +0 -0
- package/skills/easysociable-tweet-image/SKILL.md +57 -0
package/dist/easysociable.js
CHANGED
|
@@ -1865,10 +1865,10 @@ function isValidJWT(token, algorithm = null) {
|
|
|
1865
1865
|
const tokensParts = token.split(".");
|
|
1866
1866
|
if (tokensParts.length !== 3)
|
|
1867
1867
|
return false;
|
|
1868
|
-
const [
|
|
1869
|
-
if (!
|
|
1868
|
+
const [header2] = tokensParts;
|
|
1869
|
+
if (!header2)
|
|
1870
1870
|
return false;
|
|
1871
|
-
const parsedHeader = JSON.parse(atob(
|
|
1871
|
+
const parsedHeader = JSON.parse(atob(header2));
|
|
1872
1872
|
if ("typ" in parsedHeader && parsedHeader?.typ !== "JWT")
|
|
1873
1873
|
return false;
|
|
1874
1874
|
if (!parsedHeader.alg)
|
|
@@ -14621,9 +14621,9 @@ function convertBaseSchema(schema, ctx) {
|
|
|
14621
14621
|
zodSchema = z.record(keySchema, valueSchema);
|
|
14622
14622
|
break;
|
|
14623
14623
|
}
|
|
14624
|
-
const
|
|
14624
|
+
const objectSchema2 = z.object(shape).passthrough();
|
|
14625
14625
|
const recordSchema = z.looseRecord(keySchema, valueSchema);
|
|
14626
|
-
zodSchema = z.intersection(
|
|
14626
|
+
zodSchema = z.intersection(objectSchema2, recordSchema);
|
|
14627
14627
|
break;
|
|
14628
14628
|
}
|
|
14629
14629
|
if (schema.patternProperties) {
|
|
@@ -14653,13 +14653,13 @@ function convertBaseSchema(schema, ctx) {
|
|
|
14653
14653
|
}
|
|
14654
14654
|
break;
|
|
14655
14655
|
}
|
|
14656
|
-
const
|
|
14656
|
+
const objectSchema = z.object(shape);
|
|
14657
14657
|
if (schema.additionalProperties === false) {
|
|
14658
|
-
zodSchema =
|
|
14658
|
+
zodSchema = objectSchema.strict();
|
|
14659
14659
|
} else if (typeof schema.additionalProperties === "object") {
|
|
14660
|
-
zodSchema =
|
|
14660
|
+
zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));
|
|
14661
14661
|
} else {
|
|
14662
|
-
zodSchema =
|
|
14662
|
+
zodSchema = objectSchema.passthrough();
|
|
14663
14663
|
}
|
|
14664
14664
|
break;
|
|
14665
14665
|
}
|
|
@@ -15212,8 +15212,8 @@ function assertNoPrivateTemplateFields(value, path = "$") {
|
|
|
15212
15212
|
}
|
|
15213
15213
|
}
|
|
15214
15214
|
function buildAuthoringStudioUrl(input) {
|
|
15215
|
-
const
|
|
15216
|
-
const url2 = new URL(`${
|
|
15215
|
+
const base3 = (input.studioBaseUrl ?? DEFAULT_AUTHORING_STUDIO_BASE_URL).replace(/\/$/, "");
|
|
15216
|
+
const url2 = new URL(`${base3}/authoring/${encodeURIComponent(input.draftId)}`);
|
|
15217
15217
|
if (input.token)
|
|
15218
15218
|
url2.searchParams.set("t", input.token);
|
|
15219
15219
|
return url2.toString();
|
|
@@ -15361,7 +15361,7 @@ function parseBrand(payload) {
|
|
|
15361
15361
|
function parseBrandList(payload) {
|
|
15362
15362
|
return parseDataEnvelope(payload, external_exports.array(brandSchema));
|
|
15363
15363
|
}
|
|
15364
|
-
var FORBIDDEN_PUBLIC_KEYS, templatePlatformSchema, canvasPresetSchema, pageRoleSchema, contentFamilySchema, contentArchetypeSchema, densityLevelSchema, visualStyleSchema, imageRoleSchema, slotSummarySchema, selectionMetadataSchema, selectionMetadataDraftSchema, listTemplatesQuerySchema, templateSummarySchema, publicTemplateSlotTypeSchema, publicTemplateSlotSchema, templateDetailSchema, templateSelectionSchema, presentationIntentSchema, renderSlotValueSchema, renderJobRequestSchema, legacyRenderJobRequestSchema, renderJobStatusSchema, renderCaptureHintSchema, renderJobViewSchema, renderPreviewMaterializationSchema, renderSelectionSummarySchema, renderManifestSchema, templateAuthoringCanvasSchema, templateAuthoringProvenanceSchema, templateImageModeSchema, templateImageNodeSchema, authoringImageNodeSchema, authoringIconNodeSchema, templateAuthoringSourceSchema, themeContrastEntrySchema, themePaletteSchema, themeTokensSchema, themeSummarySchema, themeDetailSchema, gradientTextSafeZoneSchema, gradientStopSchema, gradientSummarySchema, gradientDetailSchema, listGradientsQuerySchema, templateSurfaceKindSchema, templateSurfacePreviewSchema, templateImageProviderSchema, templateImageRightsStatusSchema, templateImageProvenanceSchema, importTemplateImageFileSchema, importTemplateImageInputSchema, importTemplateImageBodySchema, createRenderAssetInputSchema, renderAssetReferenceSchema, iconStyleSchema, templateIconLicenseSchema, searchTemplateIconsRequestSchema, templateIconCandidateSchema, getTemplateIconRequestSchema, templateIconProvenanceSchema, templateIconAssetReferenceSchema, templateIconErrorCodeSchema, templateImageReferenceSchema, themeCreateInputSchema, draftThemeInputSchema, createTemplateDraftInputSchema, updateTemplateDraftInputSchema, authoringDraftVariantSchema, templateAuthoringDraftSchema, DEFAULT_AUTHORING_STUDIO_BASE_URL, templatePrincipalErrorSchema, slideshowPlatformCaps, slideshowPlatformSchema, slideshowRunStatusSchema, publicSlotValueSchema, contentPackPageSchema, contentPackSchema, slideshowRunPageSchema, brandProfilePreferenceSchema, brandProfileSchema, createBrandProfileInputSchema, updateBrandProfileInputSchema, brandTypographySchema, brandColorsSchema, brandSchema, createBrandInputSchema, updateBrandInputSchema, slideshowRunSummarySchema, slideshowRunSchema, createSlideshowRunInputSchema, updateSlideshowRunInputSchema, renderSlideshowRunInputSchema, listSlideshowRunsQuerySchema;
|
|
15364
|
+
var FORBIDDEN_PUBLIC_KEYS, templatePlatformSchema, canvasPresetSchema, pageRoleSchema, contentFamilySchema, contentArchetypeSchema, densityLevelSchema, visualStyleSchema, imageRoleSchema, slotSummarySchema, selectionMetadataSchema, selectionMetadataDraftSchema, listTemplatesQuerySchema, templateSummarySchema, publicTemplateSlotTypeSchema, publicTemplateSlotSchema, templateDetailSchema, templateSelectionSchema, presentationIntentSchema, renderSlotValueSchema, renderJobRequestSchema, legacyRenderJobRequestSchema, renderJobStatusSchema, renderCaptureHintSchema, renderJobViewSchema, renderPreviewMaterializationSchema, renderSelectionSummarySchema, renderManifestSchema, templateAuthoringCanvasSchema, templateAuthoringProvenanceSchema, templateImageModeSchema, templateImageNodeSchema, authoringImageNodeSchema, authoringIconNodeSchema, templateAuthoringSourceSchema, themeContrastEntrySchema, themePaletteSchema, themeTokensSchema, themeSummarySchema, themeDetailSchema, gradientTextSafeZoneSchema, gradientStopSchema, gradientSummarySchema, gradientDetailSchema, listGradientsQuerySchema, templateSurfaceKindSchema, templateSurfacePreviewSchema, templateImageProviderSchema, templateImageRightsStatusSchema, templateImageProvenanceSchema, importTemplateImageFileSchema, importTemplateImageInputSchema, importTemplateImageBodySchema, createRenderAssetInputSchema, renderAssetReferenceSchema, iconStyleSchema, templateIconLicenseSchema, searchTemplateIconsRequestSchema, templateIconCandidateSchema, getTemplateIconRequestSchema, templateIconProvenanceSchema, templateIconAssetReferenceSchema, templateIconErrorCodeSchema, templateImageReferenceSchema, themeCreateInputSchema, draftThemeInputSchema, createTemplateDraftInputSchema, updateTemplateDraftInputSchema, authoringDraftVariantSchema, templateAuthoringDraftSchema, DEFAULT_AUTHORING_STUDIO_BASE_URL, templatePrincipalErrorSchema, slideshowPlatformCaps, slideshowPlatformSchema, slideshowRunStatusSchema, publicSlotValueSchema, contentPackPageSchema, contentPackSchema, slideshowRunPageSchema, brandProfilePreferenceSchema, brandProfileSchema, createBrandProfileInputSchema, updateBrandProfileInputSchema, brandTypographySchema, brandColorsSchema, brandSchema, createBrandInputSchema, updateBrandInputSchema, slideshowRunSummarySchema, slideshowRunSchema, createSlideshowRunInputSchema, slideshowPagePatchSchema, updateSlideshowRunInputSchema, renderSlideshowRunInputSchema, listSlideshowRunsQuerySchema;
|
|
15365
15365
|
var init_src = __esm({
|
|
15366
15366
|
"../../packages/template-public-contracts/src/index.ts"() {
|
|
15367
15367
|
"use strict";
|
|
@@ -16120,9 +16120,14 @@ var init_src = __esm({
|
|
|
16120
16120
|
pageTemplateId: external_exports.string().min(1).optional(),
|
|
16121
16121
|
layoutFamilyId: external_exports.string().min(1).optional(),
|
|
16122
16122
|
role: pageRoleSchema,
|
|
16123
|
-
slots: external_exports.record(external_exports.string(), publicSlotValueSchema)
|
|
16124
|
-
|
|
16125
|
-
|
|
16123
|
+
slots: external_exports.record(external_exports.string(), publicSlotValueSchema),
|
|
16124
|
+
/** Agent-generated page: its own Studio source on the pack platform's canvas. */
|
|
16125
|
+
layout: external_exports.object({
|
|
16126
|
+
studioJson: external_exports.string().min(1).max(2e5),
|
|
16127
|
+
canvas: external_exports.object({ width: external_exports.number().int().min(320).max(4096), height: external_exports.number().int().min(320).max(4096) }).strict()
|
|
16128
|
+
}).strict().optional()
|
|
16129
|
+
}).strict().refine((page) => page.pageTemplateId || page.layoutFamilyId || page.layout, {
|
|
16130
|
+
message: "page requires layoutFamilyId, pageTemplateId or a generated layout",
|
|
16126
16131
|
path: ["layoutFamilyId"]
|
|
16127
16132
|
});
|
|
16128
16133
|
contentPackSchema = external_exports.object({
|
|
@@ -16222,7 +16227,8 @@ var init_src = __esm({
|
|
|
16222
16227
|
status: slideshowRunStatusSchema,
|
|
16223
16228
|
revision: external_exports.number().int().positive(),
|
|
16224
16229
|
pageCount: external_exports.number().int().nonnegative(),
|
|
16225
|
-
|
|
16230
|
+
brandId: external_exports.string().nullish(),
|
|
16231
|
+
brandProfileId: external_exports.string().nullish(),
|
|
16226
16232
|
studioUrl: external_exports.string().url().optional(),
|
|
16227
16233
|
lastActivityAt: external_exports.string().optional(),
|
|
16228
16234
|
createdAt: external_exports.string(),
|
|
@@ -16239,7 +16245,8 @@ var init_src = __esm({
|
|
|
16239
16245
|
packSnapshot: contentPackSchema,
|
|
16240
16246
|
themeSnapshot: external_exports.record(external_exports.string(), external_exports.unknown()).default({}),
|
|
16241
16247
|
pages: external_exports.array(slideshowRunPageSchema),
|
|
16242
|
-
|
|
16248
|
+
brandId: external_exports.string().nullish(),
|
|
16249
|
+
brandProfileId: external_exports.string().nullish(),
|
|
16243
16250
|
studioUrl: external_exports.string().url().optional(),
|
|
16244
16251
|
lastActivityAt: external_exports.string().optional(),
|
|
16245
16252
|
updatedAt: external_exports.string(),
|
|
@@ -16252,6 +16259,12 @@ var init_src = __esm({
|
|
|
16252
16259
|
themeSnapshot: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
16253
16260
|
contentSlug: external_exports.string().optional()
|
|
16254
16261
|
}).strict();
|
|
16262
|
+
slideshowPagePatchSchema = external_exports.object({
|
|
16263
|
+
slots: external_exports.record(external_exports.string(), publicSlotValueSchema).optional(),
|
|
16264
|
+
layout: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
16265
|
+
style: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
16266
|
+
decorations: external_exports.array(external_exports.record(external_exports.string(), external_exports.unknown())).optional()
|
|
16267
|
+
});
|
|
16255
16268
|
updateSlideshowRunInputSchema = external_exports.object({
|
|
16256
16269
|
pack: contentPackSchema.optional(),
|
|
16257
16270
|
brandId: external_exports.string().optional(),
|
|
@@ -16260,11 +16273,9 @@ var init_src = __esm({
|
|
|
16260
16273
|
contentSlug: external_exports.string().optional(),
|
|
16261
16274
|
baseRevision: external_exports.number().int().positive().optional(),
|
|
16262
16275
|
pageIndex: external_exports.number().int().nonnegative().optional(),
|
|
16263
|
-
|
|
16264
|
-
|
|
16265
|
-
|
|
16266
|
-
decorations: external_exports.array(external_exports.record(external_exports.string(), external_exports.unknown())).optional()
|
|
16267
|
-
}).strict();
|
|
16276
|
+
// Batch page patch (Studio Save, agent revise): one revision, applied atomically.
|
|
16277
|
+
pages: external_exports.array(slideshowPagePatchSchema.extend({ pageIndex: external_exports.number().int().nonnegative() }).strict()).optional()
|
|
16278
|
+
}).extend(slideshowPagePatchSchema.shape).strict();
|
|
16268
16279
|
renderSlideshowRunInputSchema = external_exports.object({
|
|
16269
16280
|
outputFormats: external_exports.array(external_exports.literal("png")).length(1).default(["png"]),
|
|
16270
16281
|
idempotencyKey: external_exports.string().min(1).max(128)
|
|
@@ -16302,7 +16313,7 @@ function isRetryableStatus(status) {
|
|
|
16302
16313
|
return status === 429 || status === 502 || status === 503 || status === 504;
|
|
16303
16314
|
}
|
|
16304
16315
|
function sleep(ms) {
|
|
16305
|
-
return new Promise((
|
|
16316
|
+
return new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
16306
16317
|
}
|
|
16307
16318
|
var DEFAULT_TEMPLATE_PAGE_SIZE, MAX_TEMPLATE_PAGE_SIZE, TemplateGatewayError, TemplateGatewayClient;
|
|
16308
16319
|
var init_client = __esm({
|
|
@@ -16575,12 +16586,6 @@ var init_client = __esm({
|
|
|
16575
16586
|
this.throwIfError(response.status, response.json);
|
|
16576
16587
|
return parseSlideshowRun(response.json);
|
|
16577
16588
|
}
|
|
16578
|
-
/** Per-page shortlist (hard filter → fit score → recent-family penalty → explore slot). Agent still picks. */
|
|
16579
|
-
async recommendSlideshowTemplates(input) {
|
|
16580
|
-
const response = await this.request("POST", "/v1/slideshow/template-recommendations", input);
|
|
16581
|
-
this.throwIfError(response.status, response.json);
|
|
16582
|
-
return response.json.data;
|
|
16583
|
-
}
|
|
16584
16589
|
async listSlideshowRuns(query = {}) {
|
|
16585
16590
|
const input = listSlideshowRunsQuerySchema.parse(query);
|
|
16586
16591
|
const params = new URLSearchParams();
|
|
@@ -18199,10 +18204,10 @@ function isValidJWT2(token, algorithm = null) {
|
|
|
18199
18204
|
const tokensParts = token.split(".");
|
|
18200
18205
|
if (tokensParts.length !== 3)
|
|
18201
18206
|
return false;
|
|
18202
|
-
const [
|
|
18203
|
-
if (!
|
|
18207
|
+
const [header2] = tokensParts;
|
|
18208
|
+
if (!header2)
|
|
18204
18209
|
return false;
|
|
18205
|
-
const parsedHeader = JSON.parse(atob(
|
|
18210
|
+
const parsedHeader = JSON.parse(atob(header2));
|
|
18206
18211
|
if ("typ" in parsedHeader && parsedHeader?.typ !== "JWT")
|
|
18207
18212
|
return false;
|
|
18208
18213
|
if (!parsedHeader.alg)
|
|
@@ -22974,8 +22979,8 @@ var init_zod_json_schema_compat = __esm({
|
|
|
22974
22979
|
function isPlainObject3(value) {
|
|
22975
22980
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
22976
22981
|
}
|
|
22977
|
-
function mergeCapabilities(
|
|
22978
|
-
const result = { ...
|
|
22982
|
+
function mergeCapabilities(base3, additional) {
|
|
22983
|
+
const result = { ...base3 };
|
|
22979
22984
|
for (const key in additional) {
|
|
22980
22985
|
const k = key;
|
|
22981
22986
|
const addValue = additional[k];
|
|
@@ -23497,7 +23502,7 @@ var init_protocol = __esm({
|
|
|
23497
23502
|
return;
|
|
23498
23503
|
}
|
|
23499
23504
|
const pollInterval = task2.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1e3;
|
|
23500
|
-
await new Promise((
|
|
23505
|
+
await new Promise((resolve5) => setTimeout(resolve5, pollInterval));
|
|
23501
23506
|
options?.signal?.throwIfAborted();
|
|
23502
23507
|
}
|
|
23503
23508
|
} catch (error52) {
|
|
@@ -23514,7 +23519,7 @@ var init_protocol = __esm({
|
|
|
23514
23519
|
*/
|
|
23515
23520
|
request(request, resultSchema, options) {
|
|
23516
23521
|
const { relatedRequestId, resumptionToken, onresumptiontoken, task, relatedTask } = options ?? {};
|
|
23517
|
-
return new Promise((
|
|
23522
|
+
return new Promise((resolve5, reject) => {
|
|
23518
23523
|
const earlyReject = (error52) => {
|
|
23519
23524
|
reject(error52);
|
|
23520
23525
|
};
|
|
@@ -23592,7 +23597,7 @@ var init_protocol = __esm({
|
|
|
23592
23597
|
if (!parseResult.success) {
|
|
23593
23598
|
reject(parseResult.error);
|
|
23594
23599
|
} else {
|
|
23595
|
-
|
|
23600
|
+
resolve5(parseResult.data);
|
|
23596
23601
|
}
|
|
23597
23602
|
} catch (error52) {
|
|
23598
23603
|
reject(error52);
|
|
@@ -23853,12 +23858,12 @@ var init_protocol = __esm({
|
|
|
23853
23858
|
}
|
|
23854
23859
|
} catch {
|
|
23855
23860
|
}
|
|
23856
|
-
return new Promise((
|
|
23861
|
+
return new Promise((resolve5, reject) => {
|
|
23857
23862
|
if (signal.aborted) {
|
|
23858
23863
|
reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
|
|
23859
23864
|
return;
|
|
23860
23865
|
}
|
|
23861
|
-
const timeoutId = setTimeout(
|
|
23866
|
+
const timeoutId = setTimeout(resolve5, interval);
|
|
23862
23867
|
signal.addEventListener("abort", () => {
|
|
23863
23868
|
clearTimeout(timeoutId);
|
|
23864
23869
|
reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
|
|
@@ -26885,7 +26890,7 @@ var require_compile = __commonJS({
|
|
|
26885
26890
|
const schOrFunc = root.refs[ref];
|
|
26886
26891
|
if (schOrFunc)
|
|
26887
26892
|
return schOrFunc;
|
|
26888
|
-
let _sch =
|
|
26893
|
+
let _sch = resolve5.call(this, root, ref);
|
|
26889
26894
|
if (_sch === void 0) {
|
|
26890
26895
|
const schema = (_a3 = root.localRefs) === null || _a3 === void 0 ? void 0 : _a3[ref];
|
|
26891
26896
|
const { schemaId } = this.opts;
|
|
@@ -26912,7 +26917,7 @@ var require_compile = __commonJS({
|
|
|
26912
26917
|
function sameSchemaEnv(s1, s2) {
|
|
26913
26918
|
return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
|
|
26914
26919
|
}
|
|
26915
|
-
function
|
|
26920
|
+
function resolve5(root, ref) {
|
|
26916
26921
|
let sch;
|
|
26917
26922
|
while (typeof (sch = this.refs[ref]) == "string")
|
|
26918
26923
|
ref = sch;
|
|
@@ -27487,16 +27492,16 @@ var require_fast_uri = __commonJS({
|
|
|
27487
27492
|
}
|
|
27488
27493
|
return uri;
|
|
27489
27494
|
}
|
|
27490
|
-
function
|
|
27495
|
+
function resolve5(baseURI, relativeURI, options) {
|
|
27491
27496
|
const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
|
|
27492
27497
|
const resolved = resolveComponent(parse5(baseURI, schemelessOptions), parse5(relativeURI, schemelessOptions), schemelessOptions, true);
|
|
27493
27498
|
schemelessOptions.skipEscape = true;
|
|
27494
27499
|
return serialize(resolved, schemelessOptions);
|
|
27495
27500
|
}
|
|
27496
|
-
function resolveComponent(
|
|
27501
|
+
function resolveComponent(base3, relative, options, skipNormalization) {
|
|
27497
27502
|
const target = {};
|
|
27498
27503
|
if (!skipNormalization) {
|
|
27499
|
-
|
|
27504
|
+
base3 = parse5(serialize(base3, options), options);
|
|
27500
27505
|
relative = parse5(serialize(relative, options), options);
|
|
27501
27506
|
}
|
|
27502
27507
|
options = options || {};
|
|
@@ -27516,32 +27521,32 @@ var require_fast_uri = __commonJS({
|
|
|
27516
27521
|
target.query = relative.query;
|
|
27517
27522
|
} else {
|
|
27518
27523
|
if (!relative.path) {
|
|
27519
|
-
target.path =
|
|
27524
|
+
target.path = base3.path;
|
|
27520
27525
|
if (relative.query !== void 0) {
|
|
27521
27526
|
target.query = relative.query;
|
|
27522
27527
|
} else {
|
|
27523
|
-
target.query =
|
|
27528
|
+
target.query = base3.query;
|
|
27524
27529
|
}
|
|
27525
27530
|
} else {
|
|
27526
27531
|
if (relative.path[0] === "/") {
|
|
27527
27532
|
target.path = removeDotSegments(relative.path);
|
|
27528
27533
|
} else {
|
|
27529
|
-
if ((
|
|
27534
|
+
if ((base3.userinfo !== void 0 || base3.host !== void 0 || base3.port !== void 0) && !base3.path) {
|
|
27530
27535
|
target.path = "/" + relative.path;
|
|
27531
|
-
} else if (!
|
|
27536
|
+
} else if (!base3.path) {
|
|
27532
27537
|
target.path = relative.path;
|
|
27533
27538
|
} else {
|
|
27534
|
-
target.path =
|
|
27539
|
+
target.path = base3.path.slice(0, base3.path.lastIndexOf("/") + 1) + relative.path;
|
|
27535
27540
|
}
|
|
27536
27541
|
target.path = removeDotSegments(target.path);
|
|
27537
27542
|
}
|
|
27538
27543
|
target.query = relative.query;
|
|
27539
27544
|
}
|
|
27540
|
-
target.userinfo =
|
|
27541
|
-
target.host =
|
|
27542
|
-
target.port =
|
|
27545
|
+
target.userinfo = base3.userinfo;
|
|
27546
|
+
target.host = base3.host;
|
|
27547
|
+
target.port = base3.port;
|
|
27543
27548
|
}
|
|
27544
|
-
target.scheme =
|
|
27549
|
+
target.scheme = base3.scheme;
|
|
27545
27550
|
}
|
|
27546
27551
|
target.fragment = relative.fragment;
|
|
27547
27552
|
return target;
|
|
@@ -27714,7 +27719,7 @@ var require_fast_uri = __commonJS({
|
|
|
27714
27719
|
var fastUri = {
|
|
27715
27720
|
SCHEMES,
|
|
27716
27721
|
normalize,
|
|
27717
|
-
resolve:
|
|
27722
|
+
resolve: resolve5,
|
|
27718
27723
|
resolveComponent,
|
|
27719
27724
|
equal,
|
|
27720
27725
|
serialize,
|
|
@@ -31439,6 +31444,19 @@ var init_validate_tool_input = __esm({
|
|
|
31439
31444
|
});
|
|
31440
31445
|
|
|
31441
31446
|
// ../../packages/mcp-common/src/server.ts
|
|
31447
|
+
function mapAnnotations(tool) {
|
|
31448
|
+
const isReadOnly = tool.effect === "read-only" || tool.effect === "explicit-owned-account-read";
|
|
31449
|
+
const isDestructive = tool.effect === "explicit-approval" || tool.name.startsWith("delete_") || tool.name.startsWith("trash_");
|
|
31450
|
+
const isIdempotent = isReadOnly || tool.name.startsWith("archive_") || tool.name.startsWith("restore_") || tool.name.startsWith("attest_");
|
|
31451
|
+
return {
|
|
31452
|
+
title: tool.title,
|
|
31453
|
+
readOnlyHint: isReadOnly,
|
|
31454
|
+
destructiveHint: isDestructive,
|
|
31455
|
+
idempotentHint: isIdempotent,
|
|
31456
|
+
openWorldHint: false,
|
|
31457
|
+
effect: tool.effect
|
|
31458
|
+
};
|
|
31459
|
+
}
|
|
31442
31460
|
function createMcpServer(options) {
|
|
31443
31461
|
const server = new Server(
|
|
31444
31462
|
{ name: options.name, version: options.version },
|
|
@@ -31450,7 +31468,8 @@ function createMcpServer(options) {
|
|
|
31450
31468
|
title: tool.title,
|
|
31451
31469
|
description: tool.description,
|
|
31452
31470
|
inputSchema: tool.inputSchema,
|
|
31453
|
-
|
|
31471
|
+
outputSchema: tool.outputSchema,
|
|
31472
|
+
annotations: mapAnnotations(tool)
|
|
31454
31473
|
}))
|
|
31455
31474
|
}));
|
|
31456
31475
|
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => ({
|
|
@@ -31613,12 +31632,12 @@ var init_stdio2 = __esm({
|
|
|
31613
31632
|
this.onclose?.();
|
|
31614
31633
|
}
|
|
31615
31634
|
send(message) {
|
|
31616
|
-
return new Promise((
|
|
31635
|
+
return new Promise((resolve5) => {
|
|
31617
31636
|
const json2 = serializeMessage(message);
|
|
31618
31637
|
if (this._stdout.write(json2)) {
|
|
31619
|
-
|
|
31638
|
+
resolve5();
|
|
31620
31639
|
} else {
|
|
31621
|
-
this._stdout.once("drain",
|
|
31640
|
+
this._stdout.once("drain", resolve5);
|
|
31622
31641
|
}
|
|
31623
31642
|
});
|
|
31624
31643
|
}
|
|
@@ -31689,8 +31708,8 @@ async function serveStdioMcp(options) {
|
|
|
31689
31708
|
await waitForStdioServerClose(server, process.stdin);
|
|
31690
31709
|
}
|
|
31691
31710
|
async function waitForStdioServerClose(server, stdin = process.stdin) {
|
|
31692
|
-
await new Promise((
|
|
31693
|
-
server.onclose = () =>
|
|
31711
|
+
await new Promise((resolve5) => {
|
|
31712
|
+
server.onclose = () => resolve5();
|
|
31694
31713
|
if (stdin.readableEnded || stdin.destroyed) {
|
|
31695
31714
|
void server.close().catch(() => void 0);
|
|
31696
31715
|
return;
|
|
@@ -31758,67 +31777,67 @@ var init_src4 = __esm({
|
|
|
31758
31777
|
{
|
|
31759
31778
|
name: "list_templates",
|
|
31760
31779
|
title: "List templates",
|
|
31761
|
-
description: "List public template catalog summaries from Gateway (filterable
|
|
31780
|
+
description: "List public template catalog summaries from Gateway (filterable by platform, role, density, canvasPreset). Alternatives: Use get_template to inspect specific slot requirements. Read-only catalog query.",
|
|
31762
31781
|
effect: "read-only",
|
|
31763
31782
|
inputSchema: {
|
|
31764
31783
|
type: "object",
|
|
31765
31784
|
properties: {
|
|
31766
|
-
platforms: { type: "array", items: { type: "string" } },
|
|
31767
|
-
roles: { type: "array", items: { type: "string" } },
|
|
31768
|
-
contentFamily: { type: "string" },
|
|
31769
|
-
contentArchetypes: { type: "array", items: { type: "string" } },
|
|
31770
|
-
density: { type: "string" },
|
|
31771
|
-
canvasPreset: { type: "string" },
|
|
31772
|
-
requiresImage: { type: "boolean" },
|
|
31773
|
-
locale: { type: "string" },
|
|
31774
|
-
q: { type: "string" },
|
|
31775
|
-
limit: { type: "number" },
|
|
31776
|
-
cursor: { type: "string" },
|
|
31777
|
-
all: { type: "boolean" }
|
|
31785
|
+
platforms: { type: "array", items: { type: "string" }, description: "Platform filter: tiktok | linkedin | instagram | threads | xiaohongshu" },
|
|
31786
|
+
roles: { type: "array", items: { type: "string" }, description: "Narrative role filter: hook | value | rehook | cta" },
|
|
31787
|
+
contentFamily: { type: "string", description: "Content family filter." },
|
|
31788
|
+
contentArchetypes: { type: "array", items: { type: "string" }, description: "Content archetypes list." },
|
|
31789
|
+
density: { type: "string", description: "Density filter: sparse | normal | dense" },
|
|
31790
|
+
canvasPreset: { type: "string", description: "Aspect ratio preset (e.g. 9:16, 4:5, 1:1, 3:4)." },
|
|
31791
|
+
requiresImage: { type: "boolean", description: "Filter templates that require an image slot." },
|
|
31792
|
+
locale: { type: "string", description: "Language/locale code (e.g. en, zh-CN)." },
|
|
31793
|
+
q: { type: "string", description: "Search term matching template name or description." },
|
|
31794
|
+
limit: { type: "number", description: "Max items per page." },
|
|
31795
|
+
cursor: { type: "string", description: "Pagination cursor from previous nextCursor." },
|
|
31796
|
+
all: { type: "boolean", description: "Fetch all matching templates across pages." }
|
|
31778
31797
|
},
|
|
31779
31798
|
additionalProperties: false
|
|
31780
31799
|
},
|
|
31781
|
-
outputSchema: { type: "object", properties: { templates: { type: "array" }, nextCursor: { type: ["string", "null"] } } }
|
|
31800
|
+
outputSchema: { type: "object", properties: { templates: { type: "array", description: "Template summaries." }, nextCursor: { type: ["string", "null"], description: "Cursor for next page." } } }
|
|
31782
31801
|
},
|
|
31783
31802
|
{
|
|
31784
31803
|
name: "get_template",
|
|
31785
31804
|
title: "Get template",
|
|
31786
|
-
description: "Get one published template detail including the public slots[] table (key
|
|
31805
|
+
description: "Get one published template detail including the public slots[] table (key, type, required, constraints). Use slots to bind slide copy in create_slideshow_run or inspect template constraints. Alternatives: Use list_templates to browse catalog. Read-only catalog query.",
|
|
31787
31806
|
effect: "read-only",
|
|
31788
31807
|
inputSchema: {
|
|
31789
31808
|
type: "object",
|
|
31790
|
-
properties: { templateId: { type: "string" } },
|
|
31809
|
+
properties: { templateId: { type: "string", description: "The unique published template identifier to retrieve." } },
|
|
31791
31810
|
required: ["templateId"],
|
|
31792
31811
|
additionalProperties: false
|
|
31793
31812
|
},
|
|
31794
31813
|
outputSchema: {
|
|
31795
31814
|
type: "object",
|
|
31796
31815
|
properties: {
|
|
31797
|
-
id: { type: "string" },
|
|
31798
|
-
slots: { type: "array" }
|
|
31816
|
+
id: { type: "string", description: "Published template ID." },
|
|
31817
|
+
slots: { type: "array", description: "Public slots table." }
|
|
31799
31818
|
}
|
|
31800
31819
|
}
|
|
31801
31820
|
},
|
|
31802
31821
|
{
|
|
31803
31822
|
name: "list_gradients",
|
|
31804
31823
|
title: "List gradients",
|
|
31805
|
-
description: "List or search platform gradient recipe summaries by keyword query or tag
|
|
31824
|
+
description: "List or search platform gradient recipe summaries by keyword query or tag. Call to discover gradient presets before styling cards. Alternatives: Use get_gradient to retrieve full CSS declaration for a specific gradientId. Read-only platform catalog query.",
|
|
31806
31825
|
effect: "read-only",
|
|
31807
31826
|
inputSchema: {
|
|
31808
31827
|
type: "object",
|
|
31809
31828
|
properties: {
|
|
31810
|
-
tag: { type: "string" },
|
|
31811
|
-
q: { type: "string" },
|
|
31812
|
-
limit: { type: "number" }
|
|
31829
|
+
tag: { type: "string", description: "Style tag filter (e.g. vibrant, subtle, dark, pastel)." },
|
|
31830
|
+
q: { type: "string", description: "Search term matching gradient name or tone." },
|
|
31831
|
+
limit: { type: "number", description: "Max items to return (prefer small limit for token budget)." }
|
|
31813
31832
|
},
|
|
31814
31833
|
additionalProperties: false
|
|
31815
31834
|
},
|
|
31816
|
-
outputSchema: { type: "object", properties: { gradients: { type: "array" } } }
|
|
31835
|
+
outputSchema: { type: "object", properties: { gradients: { type: "array", description: "Array of gradient summaries." } } }
|
|
31817
31836
|
},
|
|
31818
31837
|
{
|
|
31819
31838
|
name: "get_gradient",
|
|
31820
31839
|
title: "Get gradient",
|
|
31821
|
-
description: "Retrieve the full gradient CSS recipe (
|
|
31840
|
+
description: "Retrieve the full gradient CSS recipe (linear angle, color stops, and semantic token values) for a specific gradient by gradientId. Call after list_gradients to materialize background styles or decorative surfaces on cards. Alternatives: Use list_gradients to search available recipes. Read-only platform catalog lookup. Returns full gradient recipe object.",
|
|
31822
31841
|
effect: "read-only",
|
|
31823
31842
|
inputSchema: {
|
|
31824
31843
|
type: "object",
|
|
@@ -31828,12 +31847,12 @@ var init_src4 = __esm({
|
|
|
31828
31847
|
required: ["gradientId"],
|
|
31829
31848
|
additionalProperties: false
|
|
31830
31849
|
},
|
|
31831
|
-
outputSchema: { type: "object", properties: {} }
|
|
31850
|
+
outputSchema: { type: "object", properties: { id: { type: "string", description: "Gradient preset identifier." }, css: { type: "string", description: "Full CSS linear-gradient declaration." } } }
|
|
31832
31851
|
},
|
|
31833
31852
|
{
|
|
31834
31853
|
name: "search_icons",
|
|
31835
31854
|
title: "Search icons",
|
|
31836
|
-
description: "Search the internal Template Icon Catalog (
|
|
31855
|
+
description: "Search the internal safe Template Icon Catalog (curated Iconify collections) by keyword, collection, or visual style. Use when designing templates or adding icon decorations. Select \u22648 candidates and confirm choice before materializing. Alternatives: Call get_icon once an iconId is selected to generate the immutable asset. Read-only catalog search; does not consume quota.",
|
|
31837
31856
|
effect: "read-only",
|
|
31838
31857
|
inputSchema: {
|
|
31839
31858
|
type: "object",
|
|
@@ -31846,12 +31865,12 @@ var init_src4 = __esm({
|
|
|
31846
31865
|
required: ["query"],
|
|
31847
31866
|
additionalProperties: false
|
|
31848
31867
|
},
|
|
31849
|
-
outputSchema: { type: "object", properties: { icons: { type: "array" } } }
|
|
31868
|
+
outputSchema: { type: "object", properties: { icons: { type: "array", description: "Candidate icons array with id, name, and previewSvg." } } }
|
|
31850
31869
|
},
|
|
31851
31870
|
{
|
|
31852
31871
|
name: "get_icon",
|
|
31853
31872
|
title: "Get / materialize icon",
|
|
31854
|
-
description: "
|
|
31873
|
+
description: "Materialize an immutable TemplateIconAsset via Gateway from a confirmed iconId. Call after confirming a candidate from search_icons. Requires idempotencyKey to prevent duplicate creation. Idempotent: repeated calls with identical keys return the existing asset without consuming extra quota. Returns canonical SVG string, iconAssetId, and contentHash.",
|
|
31855
31874
|
effect: "local-write-job",
|
|
31856
31875
|
inputSchema: {
|
|
31857
31876
|
type: "object",
|
|
@@ -31865,28 +31884,28 @@ var init_src4 = __esm({
|
|
|
31865
31884
|
outputSchema: {
|
|
31866
31885
|
type: "object",
|
|
31867
31886
|
properties: {
|
|
31868
|
-
iconAssetId: { type: "string" },
|
|
31869
|
-
canonicalSvg: { type: "string" },
|
|
31870
|
-
contentHash: { type: "string" }
|
|
31887
|
+
iconAssetId: { type: "string", description: "Permanent immutable icon asset ID." },
|
|
31888
|
+
canonicalSvg: { type: "string", description: "Optimized sanitized SVG code." },
|
|
31889
|
+
contentHash: { type: "string", description: "SHA-256 hash of the SVG content." }
|
|
31871
31890
|
}
|
|
31872
31891
|
}
|
|
31873
31892
|
},
|
|
31874
31893
|
{
|
|
31875
31894
|
name: "list_drafts",
|
|
31876
31895
|
title: "List authoring drafts",
|
|
31877
|
-
description: "List all template authoring drafts for the current account owner. Returns draft summaries with validation status, name, and timestamps. Use to resume an authoring session or
|
|
31896
|
+
description: "List all template authoring drafts for the current account owner. Returns draft summaries with validation status, name, and timestamps. Use to resume an authoring session or discover draft IDs before updating or publishing. Alternatives: Use get_template_draft when you have a draftId to inspect full layer AST. Read-only query scoped to account owner.",
|
|
31878
31897
|
effect: "read-only",
|
|
31879
31898
|
inputSchema: {
|
|
31880
31899
|
type: "object",
|
|
31881
31900
|
properties: {},
|
|
31882
31901
|
additionalProperties: false
|
|
31883
31902
|
},
|
|
31884
|
-
outputSchema: { type: "object", properties: { drafts: { type: "array" } } }
|
|
31903
|
+
outputSchema: { type: "object", properties: { drafts: { type: "array", description: "Array of draft summary objects." } } }
|
|
31885
31904
|
},
|
|
31886
31905
|
{
|
|
31887
31906
|
name: "create_draft",
|
|
31888
31907
|
title: "Create authoring draft",
|
|
31889
|
-
description: "Initialize a new Page Template draft for authoring. Returns draftId and
|
|
31908
|
+
description: "Initialize a new Page Template draft for authoring with custom layout, layers, and slot contracts. Use when authoring a new slide template from scratch. Do NOT use to edit an existing draft (use update_template_draft) or browse public templates (use list_templates). Requires workspace owner authorization. Returns created TemplateDraft record with draftId and interactive authoringStudioUrl for real-time visual canvas editing.",
|
|
31890
31909
|
effect: "local-write-job",
|
|
31891
31910
|
inputSchema: {
|
|
31892
31911
|
type: "object",
|
|
@@ -31900,12 +31919,12 @@ var init_src4 = __esm({
|
|
|
31900
31919
|
required: ["name"],
|
|
31901
31920
|
additionalProperties: false
|
|
31902
31921
|
},
|
|
31903
|
-
outputSchema: { type: "object", properties: { id: { type: "string" }, authoringStudioUrl: { type: "string" } } }
|
|
31922
|
+
outputSchema: { type: "object", properties: { id: { type: "string", description: "Unique draft ID." }, authoringStudioUrl: { type: "string", description: "Direct browser link to Studio visual canvas editor." } } }
|
|
31904
31923
|
},
|
|
31905
31924
|
{
|
|
31906
31925
|
name: "get_draft",
|
|
31907
31926
|
title: "Get authoring draft",
|
|
31908
|
-
description: "Fetch
|
|
31927
|
+
description: "Fetch complete authoring draft details by draftId, including full layer AST, slot contract definitions, theme bindings, and validation error logs. Call before update_template_draft or publish_template_draft to inspect draft structure and check validation status. Alternatives: Use list_template_drafts to discover draftIds. Read-only query scoped to draft owner. Returns full TemplateDraft AST entity.",
|
|
31909
31928
|
effect: "read-only",
|
|
31910
31929
|
inputSchema: {
|
|
31911
31930
|
type: "object",
|
|
@@ -31915,31 +31934,31 @@ var init_src4 = __esm({
|
|
|
31915
31934
|
required: ["draftId"],
|
|
31916
31935
|
additionalProperties: false
|
|
31917
31936
|
},
|
|
31918
|
-
outputSchema: { type: "object", properties: { id: { type: "string" } } }
|
|
31937
|
+
outputSchema: { type: "object", properties: { id: { type: "string", description: "Draft ID." }, name: { type: "string", description: "Draft name." }, authoringSource: { type: "object", description: "Layer AST and slots." } } }
|
|
31919
31938
|
},
|
|
31920
31939
|
{
|
|
31921
31940
|
name: "update_draft",
|
|
31922
31941
|
title: "Update authoring draft",
|
|
31923
|
-
description: "Update
|
|
31942
|
+
description: "Update layer AST, slot definitions, selection metadata, or theme tokens of an existing template authoring draft by draftId. Call iteratively to refine draft layout and slot contracts during authoring. Do NOT use to create new drafts (use create_template_draft), view draft AST (use get_template_draft), or release to public catalog (use publish_template_draft). Requires draft owner authorization. Performs safe partial patch: unmentioned properties remain untouched. Automatically triggers layout rule validation on save; returns validation warnings if constraints are breached. Returns updated TemplateDraft record with latest validation status and AST snapshot.",
|
|
31924
31943
|
effect: "local-write-job",
|
|
31925
31944
|
inputSchema: {
|
|
31926
31945
|
type: "object",
|
|
31927
31946
|
properties: {
|
|
31928
31947
|
draftId: { type: "string", description: "The unique draft identifier to update." },
|
|
31929
31948
|
name: { type: "string", description: "Updated template title." },
|
|
31930
|
-
authoringSource: { type: "object", additionalProperties: true, description: "Updated template AST layout structure." },
|
|
31949
|
+
authoringSource: { type: "object", additionalProperties: true, description: "Updated template AST layout structure and slot bindings." },
|
|
31931
31950
|
selectionMetadata: { type: "object", additionalProperties: true, description: "Updated platform and family metadata." },
|
|
31932
31951
|
theme: { type: "object", additionalProperties: true, description: "Updated theme tokens." }
|
|
31933
31952
|
},
|
|
31934
31953
|
required: ["draftId"],
|
|
31935
31954
|
additionalProperties: false
|
|
31936
31955
|
},
|
|
31937
|
-
outputSchema: { type: "object", properties: { id: { type: "string" } } }
|
|
31956
|
+
outputSchema: { type: "object", properties: { id: { type: "string", description: "Draft ID." }, validationStatus: { type: "string", description: "Validation status: valid | warnings | errors" } } }
|
|
31938
31957
|
},
|
|
31939
31958
|
{
|
|
31940
31959
|
name: "delete_draft",
|
|
31941
31960
|
title: "Delete authoring draft",
|
|
31942
|
-
description: "Permanently
|
|
31961
|
+
description: "Permanently delete a template authoring draft by draftId. Call only when abandoning a draft that should be permanently destroyed. If the draft is complete and ready for production, call publish_template_draft instead. Destructive operation requiring explicit user confirmation: draft canvas data, layer AST, and unpublished revisions cannot be recovered. Returns deletion confirmation record.",
|
|
31943
31962
|
effect: "explicit-approval",
|
|
31944
31963
|
inputSchema: {
|
|
31945
31964
|
type: "object",
|
|
@@ -31949,12 +31968,12 @@ var init_src4 = __esm({
|
|
|
31949
31968
|
required: ["draftId"],
|
|
31950
31969
|
additionalProperties: false
|
|
31951
31970
|
},
|
|
31952
|
-
outputSchema: { type: "object", properties: {} }
|
|
31971
|
+
outputSchema: { type: "object", properties: { draftId: { type: "string", description: "Deleted draft ID." }, deleted: { type: "boolean", description: "True if deletion confirmed." } } }
|
|
31953
31972
|
},
|
|
31954
31973
|
{
|
|
31955
31974
|
name: "publish_draft",
|
|
31956
31975
|
title: "Publish authoring draft",
|
|
31957
|
-
description: "Validate and publish an authoring draft into the
|
|
31976
|
+
description: "Validate and publish an authoring draft into the public or workspace template catalog. Call when draft design and slot contracts are finalized and ready for instantiation in slideshow runs. If still editing or fixing layout rules, use update_template_draft. To inspect validation before publishing, use get_template_draft. Promotes draft to an immutable published template. Validates AST against layout rules; fails if required slots or constraints are violated. Returns published Template entity with public templateId, slots table, and catalog status.",
|
|
31958
31977
|
effect: "local-write-job",
|
|
31959
31978
|
inputSchema: {
|
|
31960
31979
|
type: "object",
|
|
@@ -31964,7 +31983,7 @@ var init_src4 = __esm({
|
|
|
31964
31983
|
required: ["draftId"],
|
|
31965
31984
|
additionalProperties: false
|
|
31966
31985
|
},
|
|
31967
|
-
outputSchema: { type: "object", properties: { id: { type: "string" }, status: { type: "string" } } }
|
|
31986
|
+
outputSchema: { type: "object", properties: { id: { type: "string", description: "Published template ID." }, status: { type: "string", description: "Catalog status (published)." }, slots: { type: "array", description: "Public slots table." } } }
|
|
31968
31987
|
},
|
|
31969
31988
|
{
|
|
31970
31989
|
name: "create_preview_job",
|
|
@@ -31984,29 +32003,29 @@ var init_src4 = __esm({
|
|
|
31984
32003
|
{
|
|
31985
32004
|
name: "import_template_image",
|
|
31986
32005
|
title: "Import template image",
|
|
31987
|
-
description: "Upload
|
|
32006
|
+
description: "Upload and attach a transient image asset specifically to a template draft canvas. Call while authoring a template draft in canvas studio to place background or sample imagery. Do NOT use for general workspace media library assets, logos, and photos (use import_image instead). Requires draft owner authorization and idempotencyKey. Idempotent: duplicate uploads with identical idempotencyKey return the existing asset. Returns created template image asset with imageId, dimensions, and public CDN preview URL.",
|
|
31988
32007
|
effect: "local-write-job",
|
|
31989
32008
|
inputSchema: {
|
|
31990
32009
|
type: "object",
|
|
31991
32010
|
properties: {
|
|
31992
|
-
draftId: { type: "string" },
|
|
31993
|
-
fileName: { type: "string" },
|
|
31994
|
-
mimeType: { type: "string", description: "image/jpeg | image/png | image/webp" },
|
|
31995
|
-
dataBase64: { type: "string" },
|
|
31996
|
-
provider: { type: "string", description: "pinterest | unsplash | pexels | user_upload | generated" },
|
|
31997
|
-
rightsStatus: { type: "string", description: "rights_unknown | licensed_for_publish | user_owned | generated" },
|
|
31998
|
-
idempotencyKey: { type: "string" },
|
|
31999
|
-
sourceUrl: { type: "string" },
|
|
32000
|
-
externalId: { type: "string" },
|
|
32001
|
-
creator: { type: "string" },
|
|
32002
|
-
license: { type: "string" },
|
|
32003
|
-
attribution: { type: "string" },
|
|
32004
|
-
searchQuery: { type: "string" }
|
|
32011
|
+
draftId: { type: "string", description: "The unique template draft ID this image is attached to." },
|
|
32012
|
+
fileName: { type: "string", description: "Original image filename (e.g. background.jpg)." },
|
|
32013
|
+
mimeType: { type: "string", description: "MIME type: image/jpeg | image/png | image/webp" },
|
|
32014
|
+
dataBase64: { type: "string", description: "Base64-encoded image binary string." },
|
|
32015
|
+
provider: { type: "string", description: "Asset origin provider: pinterest | unsplash | pexels | user_upload | generated" },
|
|
32016
|
+
rightsStatus: { type: "string", description: "Rights ownership status: rights_unknown | licensed_for_publish | user_owned | generated" },
|
|
32017
|
+
idempotencyKey: { type: "string", description: "Unique idempotency key to prevent duplicate image creation." },
|
|
32018
|
+
sourceUrl: { type: "string", description: "Optional source URL if fetched from web." },
|
|
32019
|
+
externalId: { type: "string", description: "Optional external asset ID from provider." },
|
|
32020
|
+
creator: { type: "string", description: "Optional author or photographer attribution name." },
|
|
32021
|
+
license: { type: "string", description: "Optional license type identifier." },
|
|
32022
|
+
attribution: { type: "string", description: "Optional human-readable attribution string." },
|
|
32023
|
+
searchQuery: { type: "string", description: "Optional search keyword that discovered this image." }
|
|
32005
32024
|
},
|
|
32006
32025
|
required: ["draftId", "fileName", "mimeType", "dataBase64", "provider", "rightsStatus", "idempotencyKey"],
|
|
32007
32026
|
additionalProperties: false
|
|
32008
32027
|
},
|
|
32009
|
-
outputSchema: { type: "object", properties: { imageId: { type: "string" }, url: { type: "string" } } }
|
|
32028
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Created template image ID." }, url: { type: "string", description: "Public delivery URL." } } }
|
|
32010
32029
|
}
|
|
32011
32030
|
];
|
|
32012
32031
|
TemplateGatewayMcpBackend = class {
|
|
@@ -32072,11 +32091,11 @@ var init_src4 = __esm({
|
|
|
32072
32091
|
return { ok: true, data: { icons }, meta: meta4 };
|
|
32073
32092
|
}
|
|
32074
32093
|
if (toolName === "get_icon") {
|
|
32075
|
-
const
|
|
32094
|
+
const icon2 = await this.client.getIcon({
|
|
32076
32095
|
iconId: String(args.iconId),
|
|
32077
32096
|
idempotencyKey: String(args.idempotencyKey)
|
|
32078
32097
|
});
|
|
32079
|
-
return { ok: true, data:
|
|
32098
|
+
return { ok: true, data: icon2, meta: meta4 };
|
|
32080
32099
|
}
|
|
32081
32100
|
if (toolName === "create_draft") {
|
|
32082
32101
|
const draft = await this.client.createDraft({
|
|
@@ -32173,18 +32192,17 @@ var init_src4 = __esm({
|
|
|
32173
32192
|
function meta3() {
|
|
32174
32193
|
return { requestId: `mcp_${Date.now().toString(36)}`, runtimeVersion: "0.0.0", schemaVersion: 1, toolContractVersion: "2026-08-12" };
|
|
32175
32194
|
}
|
|
32176
|
-
var
|
|
32195
|
+
var slideshowToolRegistry, slideshowResourceTemplates, SlideshowMcpBackend;
|
|
32177
32196
|
var init_src5 = __esm({
|
|
32178
32197
|
"../../packages/slideshow-mcp-adapter/src/index.ts"() {
|
|
32179
32198
|
"use strict";
|
|
32180
32199
|
init_src3();
|
|
32181
32200
|
init_src2();
|
|
32182
|
-
objectSchema = { type: "object", properties: {}, additionalProperties: true };
|
|
32183
32201
|
slideshowToolRegistry = [
|
|
32184
32202
|
{
|
|
32185
32203
|
name: "list_runs",
|
|
32186
32204
|
title: "List slideshow runs",
|
|
32187
|
-
description: "List owner-scoped Slideshow Runs with optional platform, status, or search query filters. Returns run metadata, platform, page counts, and timestamps.
|
|
32205
|
+
description: "List owner-scoped Slideshow Runs with optional platform, lifecycle status, or search query filters. Returns run metadata, platform target, page counts, revision numbers, and timestamps. Call to browse existing carousels or find a runId before inspection, updating, or archiving. Alternatives: Use get_slideshow_run when you already have a specific runId to fetch full slide content. Behavior: Read-only query scoped to current authenticated workspace owner.",
|
|
32188
32206
|
effect: "read-only",
|
|
32189
32207
|
inputSchema: {
|
|
32190
32208
|
type: "object",
|
|
@@ -32199,44 +32217,12 @@ var init_src5 = __esm({
|
|
|
32199
32217
|
},
|
|
32200
32218
|
additionalProperties: true
|
|
32201
32219
|
},
|
|
32202
|
-
outputSchema:
|
|
32203
|
-
},
|
|
32204
|
-
{
|
|
32205
|
-
name: "recommend_templates",
|
|
32206
|
-
title: "Recommend slideshow page templates",
|
|
32207
|
-
description: "Before create_run: send the Page Contracts (role, density, slotSummary per page) and get a shortlist per page with reasons. Recently used Layout Families are demoted and one unused family is always kept. Pick one templateId per page yourself; gaps list pages needing more templates.",
|
|
32208
|
-
effect: "read-only",
|
|
32209
|
-
inputSchema: {
|
|
32210
|
-
type: "object",
|
|
32211
|
-
properties: {
|
|
32212
|
-
platform: { type: "string", description: "Target platform: tiktok | linkedin | instagram | threads | xiaohongshu" },
|
|
32213
|
-
canvasPreset: { type: "string", description: "Target aspect ratio preset (e.g. 9:16, 4:5, 1:1, 3:4)." },
|
|
32214
|
-
pages: {
|
|
32215
|
-
type: "array",
|
|
32216
|
-
description: "Ordered list of page contracts describing narrative role and slot requirements.",
|
|
32217
|
-
items: {
|
|
32218
|
-
type: "object",
|
|
32219
|
-
properties: {
|
|
32220
|
-
role: { type: "string", description: "Narrative role: hook | value | rehook | cta" },
|
|
32221
|
-
density: { type: "string", description: "Content density: sparse | normal | dense" },
|
|
32222
|
-
slotSummary: { type: "object", description: "Slot keys expected on this page." },
|
|
32223
|
-
requiresImage: { type: "boolean", description: "Whether this page must have an image slot." }
|
|
32224
|
-
},
|
|
32225
|
-
required: ["role"]
|
|
32226
|
-
}
|
|
32227
|
-
},
|
|
32228
|
-
k: { type: "integer", minimum: 2, maximum: 5, description: "Number of template recommendations to return per page (2 to 5)." },
|
|
32229
|
-
seed: { type: "string", description: "Optional deterministic randomization seed for layout family rotation." }
|
|
32230
|
-
},
|
|
32231
|
-
required: ["platform", "pages"],
|
|
32232
|
-
additionalProperties: true
|
|
32233
|
-
},
|
|
32234
|
-
outputSchema: objectSchema
|
|
32220
|
+
outputSchema: { type: "object", properties: { runs: { type: "array", description: "Array of slideshow run summary items." }, total: { type: "number", description: "Total count of matching runs." } } }
|
|
32235
32221
|
},
|
|
32236
32222
|
{
|
|
32237
32223
|
name: "create_run",
|
|
32238
32224
|
title: "Create slideshow run",
|
|
32239
|
-
description: "Create a durable multi-page Slideshow Run from a structured
|
|
32225
|
+
description: "Create a durable multi-page Slideshow Run from a structured ContentPack (platform + pages; each page carries role, slots and either a generated layout { studioJson, canvas } adapted from a Deck Style family, or a layoutFamilyId). Pass brandId to apply the user Brand. Do NOT use to edit an existing run (use update_slideshow_run instead). Requires workspace owner write authorization. Returns created SlideshowRun record with generated runId, initial revision (1), and authoringStudioUrl for interactive browser review and PNG download.",
|
|
32240
32226
|
effect: "local-write-job",
|
|
32241
32227
|
inputSchema: {
|
|
32242
32228
|
type: "object",
|
|
@@ -32249,12 +32235,12 @@ var init_src5 = __esm({
|
|
|
32249
32235
|
required: ["pack"],
|
|
32250
32236
|
additionalProperties: true
|
|
32251
32237
|
},
|
|
32252
|
-
outputSchema:
|
|
32238
|
+
outputSchema: { type: "object", properties: { runId: { type: "string", description: "Unique identifier of the created run." }, revision: { type: "number", description: "Initial revision number (1)." }, studioUrl: { type: "string", description: "Studio preview and download URL." } } }
|
|
32253
32239
|
},
|
|
32254
32240
|
{
|
|
32255
32241
|
name: "get_run",
|
|
32256
32242
|
title: "Get slideshow run",
|
|
32257
|
-
description: "Retrieve full details of
|
|
32243
|
+
description: "Retrieve full details of an existing Slideshow Run by runId, including complete slide pages, bound template IDs, slot contents, brand theme snapshot, current revision number, and studio review URL. Call before update_slideshow_run to inspect current slide contents and capture baseRevision for concurrency locking. Alternatives: Use list_slideshow_runs to discover runIds. Read-only query scoped to authenticated workspace owner.",
|
|
32258
32244
|
effect: "read-only",
|
|
32259
32245
|
inputSchema: {
|
|
32260
32246
|
type: "object",
|
|
@@ -32264,24 +32250,24 @@ var init_src5 = __esm({
|
|
|
32264
32250
|
required: ["runId"],
|
|
32265
32251
|
additionalProperties: true
|
|
32266
32252
|
},
|
|
32267
|
-
outputSchema:
|
|
32253
|
+
outputSchema: { type: "object", properties: { runId: { type: "string", description: "Unique run identifier." }, revision: { type: "number", description: "Current revision number." }, pages: { type: "array", description: "Slide pages array." }, studioUrl: { type: "string", description: "Studio review URL." } } }
|
|
32268
32254
|
},
|
|
32269
32255
|
{
|
|
32270
32256
|
name: "update_run",
|
|
32271
32257
|
title: "Update slideshow run",
|
|
32272
|
-
description: "
|
|
32258
|
+
description: "Partially update slide copy, slot bindings, layout, styling, or brand settings of an existing Slideshow Run by runId. Call get_slideshow_run first to obtain current revision and slide data. Do NOT use to create new runs (use create_slideshow_run) or delete runs (use delete_slideshow_run). Safe partial patch: unspecified fields are preserved. Requires baseRevision for optimistic concurrency locking; on revision mismatch returns 409 Conflict (no auto-merge), requiring a fresh get_slideshow_run. To patch a single slide, provide pageIndex (0-indexed) with slots, layout, or style. To update entire deck, provide pack. Returns updated SlideshowRun with incremented revision number.",
|
|
32273
32259
|
effect: "local-write-job",
|
|
32274
32260
|
inputSchema: {
|
|
32275
32261
|
type: "object",
|
|
32276
32262
|
properties: {
|
|
32277
32263
|
runId: { type: "string", description: "The unique Slideshow Run identifier to update." },
|
|
32278
|
-
baseRevision: { type: "integer", minimum: 1, description: "Current revision number for optimistic concurrency locking to prevent overwrite races." },
|
|
32279
|
-
pack: { type: "object", description: "Updated complete content-pack.v1 structure." },
|
|
32280
|
-
brandId: { type: "string", description: "Updated Brand ID styling reference." },
|
|
32264
|
+
baseRevision: { type: "integer", minimum: 1, description: "Current revision number for optimistic concurrency locking to prevent overwrite races. Must match latest revision from get_slideshow_run." },
|
|
32265
|
+
pack: { type: "object", description: "Updated complete content-pack.v1 structure. Overrides entire slide deck when provided." },
|
|
32266
|
+
brandId: { type: "string", description: "Updated Brand ID styling reference applied across slides." },
|
|
32281
32267
|
brandProfileId: { type: "string", description: "Optional legacy brand profile ID." },
|
|
32282
32268
|
contentSlug: { type: "string", description: "Updated content topic slug." },
|
|
32283
|
-
pageIndex: { type: "integer", minimum: 0, description: "Index of a single slide page to patch (0-indexed)." },
|
|
32284
|
-
slots: { type: "object", description: "Key-value map of slot overrides for the specified pageIndex." },
|
|
32269
|
+
pageIndex: { type: "integer", minimum: 0, description: "Index of a single slide page to patch (0-indexed). Must be paired with slots, layout, style, or decorations." },
|
|
32270
|
+
slots: { type: "object", description: "Key-value map of slot text/image overrides for the specified pageIndex." },
|
|
32285
32271
|
layout: { type: "object", description: "Layout adjustments for the specified pageIndex." },
|
|
32286
32272
|
style: { type: "object", description: "Style token adjustments for the specified pageIndex." },
|
|
32287
32273
|
decorations: { type: "array", description: "Visual decorations list for the specified pageIndex." }
|
|
@@ -32289,12 +32275,12 @@ var init_src5 = __esm({
|
|
|
32289
32275
|
required: ["runId"],
|
|
32290
32276
|
additionalProperties: true
|
|
32291
32277
|
},
|
|
32292
|
-
outputSchema:
|
|
32278
|
+
outputSchema: { type: "object", properties: { runId: { type: "string", description: "Run identifier." }, revision: { type: "number", description: "Incremented revision number." }, studioUrl: { type: "string", description: "Studio review URL." } } }
|
|
32293
32279
|
},
|
|
32294
32280
|
{
|
|
32295
32281
|
name: "archive_run",
|
|
32296
32282
|
title: "Archive slideshow run",
|
|
32297
|
-
description: "
|
|
32283
|
+
description: "Soft-hide an active Slideshow Run from default workspace lists and pickers without deleting slide data or review URLs. Use to declutter the workspace after campaign completion. Do NOT use for permanent destruction; use delete_slideshow_run instead. Idempotent state change, fully reversible via restore_slideshow_run. Preserves all slide records, rendered assets, and external links. Returns updated SlideshowRun with status set to archived.",
|
|
32298
32284
|
effect: "local-write-job",
|
|
32299
32285
|
inputSchema: {
|
|
32300
32286
|
type: "object",
|
|
@@ -32304,12 +32290,12 @@ var init_src5 = __esm({
|
|
|
32304
32290
|
required: ["runId"],
|
|
32305
32291
|
additionalProperties: true
|
|
32306
32292
|
},
|
|
32307
|
-
outputSchema:
|
|
32293
|
+
outputSchema: { type: "object", properties: { runId: { type: "string", description: "Run identifier." }, status: { type: "string", description: "Updated status (archived)." } } }
|
|
32308
32294
|
},
|
|
32309
32295
|
{
|
|
32310
32296
|
name: "restore_run",
|
|
32311
32297
|
title: "Restore slideshow run",
|
|
32312
|
-
description: "Restore a previously archived or trashed Slideshow Run back to active workspace status, restoring it to the default projects view.",
|
|
32298
|
+
description: "Restore a previously archived or trashed Slideshow Run back to active workspace status, restoring it to the default projects view. Use to reactivate an archived or trashed carousel project. Alternatives: Use get_slideshow_run to inspect run contents before restoring. Idempotent state change. Returns restored SlideshowRun record visible in default workspace listings.",
|
|
32313
32299
|
effect: "local-write-job",
|
|
32314
32300
|
inputSchema: {
|
|
32315
32301
|
type: "object",
|
|
@@ -32319,12 +32305,12 @@ var init_src5 = __esm({
|
|
|
32319
32305
|
required: ["runId"],
|
|
32320
32306
|
additionalProperties: true
|
|
32321
32307
|
},
|
|
32322
|
-
outputSchema:
|
|
32308
|
+
outputSchema: { type: "object", properties: { runId: { type: "string", description: "Run identifier." }, status: { type: "string", description: "Restored status (active)." } } }
|
|
32323
32309
|
},
|
|
32324
32310
|
{
|
|
32325
32311
|
name: "delete_run",
|
|
32326
32312
|
title: "Delete slideshow run",
|
|
32327
|
-
description: "
|
|
32313
|
+
description: "Move a Slideshow Run to trash or permanently remove it from the workspace along with its slide page records. Use only when a run is obsolete and permanently discarded. Alternatives: If you only want to hide the run from active lists while preserving review links and data, use archive_slideshow_run instead. Destructive operation requiring explicit user confirmation. Invalidates studio review URLs. Returns deletion confirmation record.",
|
|
32328
32314
|
effect: "explicit-approval",
|
|
32329
32315
|
inputSchema: {
|
|
32330
32316
|
type: "object",
|
|
@@ -32334,7 +32320,7 @@ var init_src5 = __esm({
|
|
|
32334
32320
|
required: ["runId"],
|
|
32335
32321
|
additionalProperties: true
|
|
32336
32322
|
},
|
|
32337
|
-
outputSchema:
|
|
32323
|
+
outputSchema: { type: "object", properties: { runId: { type: "string", description: "Deleted run identifier." }, deleted: { type: "boolean", description: "True if deletion confirmed." } } }
|
|
32338
32324
|
}
|
|
32339
32325
|
];
|
|
32340
32326
|
slideshowResourceTemplates = [
|
|
@@ -32357,8 +32343,6 @@ var init_src5 = __esm({
|
|
|
32357
32343
|
contentSlug: args.contentSlug,
|
|
32358
32344
|
status: args.status
|
|
32359
32345
|
}), meta: m };
|
|
32360
|
-
case "recommend_templates":
|
|
32361
|
-
return { ok: true, data: await this.client.recommendSlideshowTemplates({ platform: String(args.platform), pages: args.pages, canvasPreset: args.canvasPreset, k: args.k, seed: args.seed }), meta: m };
|
|
32362
32346
|
case "create_run":
|
|
32363
32347
|
return { ok: true, data: await this.client.createSlideshowRun({ pack: args.pack, brandId: args.brandId, brandProfileId: args.brandProfileId, contentSlug: args.contentSlug }), meta: m };
|
|
32364
32348
|
case "get_run":
|
|
@@ -32429,7 +32413,6 @@ var init_src6 = __esm({
|
|
|
32429
32413
|
};
|
|
32430
32414
|
slideshowNames = {
|
|
32431
32415
|
list_runs: "list_slideshow_runs",
|
|
32432
|
-
recommend_templates: "recommend_slideshow_templates",
|
|
32433
32416
|
create_run: "create_slideshow_run",
|
|
32434
32417
|
get_run: "get_slideshow_run",
|
|
32435
32418
|
update_run: "update_slideshow_run",
|
|
@@ -32441,15 +32424,15 @@ var init_src6 = __esm({
|
|
|
32441
32424
|
{
|
|
32442
32425
|
name: "list_brands",
|
|
32443
32426
|
title: "List brands",
|
|
32444
|
-
description: "List owner-scoped Brands with typography tokens, color palettes, and logos.
|
|
32427
|
+
description: "List owner-scoped Brands with typography tokens, color palettes, and logos. Call to discover available brand identities before creating or styling slideshow runs. Alternatives: Use get_brand when you have a specific brandId to inspect full tokens. Read-only query scoped to current workspace owner. Returns array of Brand summaries.",
|
|
32445
32428
|
effect: "read-only",
|
|
32446
32429
|
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
|
32447
|
-
outputSchema: { type: "object", properties: {} }
|
|
32430
|
+
outputSchema: { type: "object", properties: { brands: { type: "array", description: "Array of brand kit summaries." } } }
|
|
32448
32431
|
},
|
|
32449
32432
|
{
|
|
32450
32433
|
name: "get_brand",
|
|
32451
32434
|
title: "Get brand",
|
|
32452
|
-
description: "Fetch a complete Brand profile by brandId, including typography tokens, 4-color palette (primary, secondary, accent, surface), logoAssetId, and baseRevision. Call
|
|
32435
|
+
description: "Fetch a complete Brand profile by brandId, including typography tokens, 4-color palette (primary, secondary, accent, surface), logoAssetId, and baseRevision. Call before generating or updating branded slides to inject brand styles and capture baseRevision. Alternatives: Use list_brands to discover brandIds. Read-only query scoped to workspace owner. Returns full Brand entity.",
|
|
32453
32436
|
effect: "read-only",
|
|
32454
32437
|
inputSchema: {
|
|
32455
32438
|
type: "object",
|
|
@@ -32459,12 +32442,12 @@ var init_src6 = __esm({
|
|
|
32459
32442
|
required: ["brandId"],
|
|
32460
32443
|
additionalProperties: false
|
|
32461
32444
|
},
|
|
32462
|
-
outputSchema: { type: "object", properties: {} }
|
|
32445
|
+
outputSchema: { type: "object", properties: { brandId: { type: "string", description: "Brand ID." }, revision: { type: "number", description: "Current revision number." }, typography: { type: "object", description: "Typography settings." }, colors: { type: "object", description: "Color palette." } } }
|
|
32463
32446
|
},
|
|
32464
32447
|
{
|
|
32465
32448
|
name: "create_brand",
|
|
32466
32449
|
title: "Create brand",
|
|
32467
|
-
description: "Create a new owner-scoped Brand kit defining typography, color palette, handle, and optional logo asset.
|
|
32450
|
+
description: "Create a new owner-scoped Brand kit defining typography, color palette, handle, and optional logo asset. Call before creating slideshow runs to establish consistent visual identity. Do NOT use to edit an existing brand; use update_brand instead. Requires workspace owner authorization. Persists initial brand record with revision 1. Returns created Brand entity with brandId and initial revision.",
|
|
32468
32451
|
effect: "local-write-job",
|
|
32469
32452
|
inputSchema: {
|
|
32470
32453
|
type: "object",
|
|
@@ -32479,18 +32462,18 @@ var init_src6 = __esm({
|
|
|
32479
32462
|
required: ["name"],
|
|
32480
32463
|
additionalProperties: false
|
|
32481
32464
|
},
|
|
32482
|
-
outputSchema: { type: "object", properties: {} }
|
|
32465
|
+
outputSchema: { type: "object", properties: { brandId: { type: "string", description: "Created brand ID." }, revision: { type: "number", description: "Initial revision (1)." } } }
|
|
32483
32466
|
},
|
|
32484
32467
|
{
|
|
32485
32468
|
name: "update_brand",
|
|
32486
32469
|
title: "Update brand",
|
|
32487
|
-
description: "Patch visual styles or metadata of an existing Brand. Requires baseRevision for optimistic concurrency locking to prevent overwrite races. Returns updated Brand with incremented revision.",
|
|
32470
|
+
description: "Patch visual styles, typography, or metadata of an existing Brand by brandId. Call after get_brand to modify palette or fonts. Do NOT use to create new brands (use create_brand) or to delete (use delete_brand). Requires baseRevision for optimistic concurrency locking to prevent overwrite races; on revision mismatch returns 409 Conflict. Safe partial patch: unspecified styling tokens are preserved. Returns updated Brand with incremented revision.",
|
|
32488
32471
|
effect: "local-write-job",
|
|
32489
32472
|
inputSchema: {
|
|
32490
32473
|
type: "object",
|
|
32491
32474
|
properties: {
|
|
32492
32475
|
brandId: { type: "string", description: "The unique identifier of the brand to update." },
|
|
32493
|
-
baseRevision: { type: "integer", minimum: 1, description: "Current revision number for optimistic concurrency lock." },
|
|
32476
|
+
baseRevision: { type: "integer", minimum: 1, description: "Current revision number for optimistic concurrency lock. Must match latest revision from get_brand." },
|
|
32494
32477
|
name: { type: "string", description: "Updated brand name." },
|
|
32495
32478
|
displayName: { type: "string", description: "Updated display name." },
|
|
32496
32479
|
handle: { type: "string", description: "Updated social handle." },
|
|
@@ -32501,12 +32484,12 @@ var init_src6 = __esm({
|
|
|
32501
32484
|
required: ["brandId", "baseRevision"],
|
|
32502
32485
|
additionalProperties: false
|
|
32503
32486
|
},
|
|
32504
|
-
outputSchema: { type: "object", properties: {} }
|
|
32487
|
+
outputSchema: { type: "object", properties: { brandId: { type: "string", description: "Brand ID." }, revision: { type: "number", description: "Incremented revision number." } } }
|
|
32505
32488
|
},
|
|
32506
32489
|
{
|
|
32507
32490
|
name: "archive_brand",
|
|
32508
32491
|
title: "Archive brand",
|
|
32509
|
-
description: "Archive an active Brand to soft-hide it from default pickers and list queries without losing styling tokens.
|
|
32492
|
+
description: "Archive an active Brand to soft-hide it from default pickers and list queries without losing styling tokens. Call to declutter workspace brands. Do NOT use for permanent deletion; use delete_brand instead. Idempotent state transition, fully reversible via restore_brand. Existing slideshow runs referencing this brand continue to display correctly. Returns updated Brand with status set to archived.",
|
|
32510
32493
|
effect: "local-write-job",
|
|
32511
32494
|
inputSchema: {
|
|
32512
32495
|
type: "object",
|
|
@@ -32516,12 +32499,12 @@ var init_src6 = __esm({
|
|
|
32516
32499
|
required: ["brandId"],
|
|
32517
32500
|
additionalProperties: false
|
|
32518
32501
|
},
|
|
32519
|
-
outputSchema: { type: "object", properties: {} }
|
|
32502
|
+
outputSchema: { type: "object", properties: { brandId: { type: "string", description: "Brand ID." }, status: { type: "string", description: "Updated status (archived)." } } }
|
|
32520
32503
|
},
|
|
32521
32504
|
{
|
|
32522
32505
|
name: "restore_brand",
|
|
32523
32506
|
title: "Restore brand",
|
|
32524
|
-
description: "Restore a previously archived or trashed Brand back to active status
|
|
32507
|
+
description: "Restore a previously archived or trashed Brand back to active status. Call to unhide a brand and make it immediately selectable in brand selectors and default list queries. Alternatives: Use get_brand to inspect tokens before restoring. Idempotent state transition. Returns restored Brand with status set to active.",
|
|
32525
32508
|
effect: "local-write-job",
|
|
32526
32509
|
inputSchema: {
|
|
32527
32510
|
type: "object",
|
|
@@ -32531,12 +32514,12 @@ var init_src6 = __esm({
|
|
|
32531
32514
|
required: ["brandId"],
|
|
32532
32515
|
additionalProperties: false
|
|
32533
32516
|
},
|
|
32534
|
-
outputSchema: { type: "object", properties: {} }
|
|
32517
|
+
outputSchema: { type: "object", properties: { brandId: { type: "string", description: "Brand ID." }, status: { type: "string", description: "Restored status (active)." } } }
|
|
32535
32518
|
},
|
|
32536
32519
|
{
|
|
32537
32520
|
name: "delete_brand",
|
|
32538
32521
|
title: "Delete brand",
|
|
32539
|
-
description: "Move a Brand to trash
|
|
32522
|
+
description: "Move a Brand to trash for deletion. Call only when a brand kit is obsolete and permanently discarded. Alternatives: If existing runs still use this brand theme, prefer archive_brand to preserve styling safely. Destructive operation requiring explicit confirmation. Dependent design workflows may lose default brand styling. Returns deletion confirmation record.",
|
|
32540
32523
|
effect: "explicit-approval",
|
|
32541
32524
|
inputSchema: {
|
|
32542
32525
|
type: "object",
|
|
@@ -32546,7 +32529,7 @@ var init_src6 = __esm({
|
|
|
32546
32529
|
required: ["brandId"],
|
|
32547
32530
|
additionalProperties: false
|
|
32548
32531
|
},
|
|
32549
|
-
outputSchema: { type: "object", properties: {} }
|
|
32532
|
+
outputSchema: { type: "object", properties: { brandId: { type: "string", description: "Deleted brand ID." }, deleted: { type: "boolean", description: "True if deletion confirmed." } } }
|
|
32550
32533
|
}
|
|
32551
32534
|
];
|
|
32552
32535
|
rename = (tool, names) => ({ ...tool, name: names[tool.name] ?? tool.name });
|
|
@@ -32556,7 +32539,7 @@ var init_src6 = __esm({
|
|
|
32556
32539
|
{
|
|
32557
32540
|
name: "list_images",
|
|
32558
32541
|
title: "List images",
|
|
32559
|
-
description: "List owner-scoped image assets in the media library with optional search query q. Returns image IDs, CDN URLs,
|
|
32542
|
+
description: "List owner-scoped image assets in the media library with optional search query q. Returns image IDs, CDN URLs, dimensions, and rights status for slot assignment. Call to browse media assets or discover imageId before slot binding. Alternatives: Use get_image to fetch full metadata for a specific imageId. Read-only query scoped to workspace owner.",
|
|
32560
32543
|
effect: "read-only",
|
|
32561
32544
|
inputSchema: {
|
|
32562
32545
|
type: "object",
|
|
@@ -32565,12 +32548,12 @@ var init_src6 = __esm({
|
|
|
32565
32548
|
},
|
|
32566
32549
|
additionalProperties: false
|
|
32567
32550
|
},
|
|
32568
|
-
outputSchema: { type: "object", properties: {} }
|
|
32551
|
+
outputSchema: { type: "object", properties: { images: { type: "array", description: "Array of image asset records." } } }
|
|
32569
32552
|
},
|
|
32570
32553
|
{
|
|
32571
32554
|
name: "get_image",
|
|
32572
32555
|
title: "Get image",
|
|
32573
|
-
description: "Fetch metadata and public R2/CDN delivery URL for a specific image asset by imageId.
|
|
32556
|
+
description: "Fetch metadata and public R2/CDN delivery URL for a specific image asset by imageId. Call to inspect dimensions, content hash, and rightsStatus before binding to slide slots. Alternatives: Use list_images to search assets across media library. Read-only query scoped to workspace owner. Returns full Image entity.",
|
|
32574
32557
|
effect: "read-only",
|
|
32575
32558
|
inputSchema: {
|
|
32576
32559
|
type: "object",
|
|
@@ -32580,12 +32563,12 @@ var init_src6 = __esm({
|
|
|
32580
32563
|
required: ["imageId"],
|
|
32581
32564
|
additionalProperties: false
|
|
32582
32565
|
},
|
|
32583
|
-
outputSchema: { type: "object", properties: {} }
|
|
32566
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Image asset ID." }, url: { type: "string", description: "Public delivery URL." }, rightsStatus: { type: "string", description: "Rights status." } } }
|
|
32584
32567
|
},
|
|
32585
32568
|
{
|
|
32586
32569
|
name: "import_image",
|
|
32587
32570
|
title: "Import image",
|
|
32588
|
-
description: "Upload
|
|
32571
|
+
description: "Upload a new image file into the permanent workspace media library, storing the binary asset on Cloudflare R2 and registering metadata in Directus. Call to add reusable media assets (logos, photos, graphics) for use across slideshow runs and brands. Do NOT use for transient template draft canvas images (use import_template_image instead). Requires workspace write permissions. Returns created Image record with generated imageId and public delivery URL.",
|
|
32589
32572
|
effect: "local-write-job",
|
|
32590
32573
|
inputSchema: {
|
|
32591
32574
|
type: "object",
|
|
@@ -32598,12 +32581,12 @@ var init_src6 = __esm({
|
|
|
32598
32581
|
},
|
|
32599
32582
|
additionalProperties: false
|
|
32600
32583
|
},
|
|
32601
|
-
outputSchema: { type: "object", properties: {} }
|
|
32584
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Created image ID." }, url: { type: "string", description: "Public delivery URL." } } }
|
|
32602
32585
|
},
|
|
32603
32586
|
{
|
|
32604
32587
|
name: "update_image",
|
|
32605
32588
|
title: "Update image",
|
|
32606
|
-
description: "Update metadata for an existing
|
|
32589
|
+
description: "Update metadata fields (such as human-readable name or rightsStatus) for an existing image asset by imageId. Call to rename images or change categorization tags. Do NOT use to record legal commercial compliance attestations (use attest_image instead) or to replace image binary pixels (use import_image to upload a new asset). Requires workspace owner authorization. Safe partial update: only provided fields are modified. Returns updated Image asset record.",
|
|
32607
32590
|
effect: "local-write-job",
|
|
32608
32591
|
inputSchema: {
|
|
32609
32592
|
type: "object",
|
|
@@ -32615,28 +32598,28 @@ var init_src6 = __esm({
|
|
|
32615
32598
|
required: ["imageId"],
|
|
32616
32599
|
additionalProperties: false
|
|
32617
32600
|
},
|
|
32618
|
-
outputSchema: { type: "object", properties: {} }
|
|
32601
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Image asset ID." }, name: { type: "string", description: "Updated title." }, rightsStatus: { type: "string", description: "Updated rights status." } } }
|
|
32619
32602
|
},
|
|
32620
32603
|
{
|
|
32621
32604
|
name: "attest_image",
|
|
32622
32605
|
title: "Attest image rights",
|
|
32623
|
-
description: "Record legal
|
|
32606
|
+
description: "Record an immutable legal copyright or commercial rights ownership attestation for an image asset. Call before multi-platform export to satisfy commercial compliance requirements. Do NOT use to edit metadata like title or tags (use update_image instead) or upload images (use import_image). Not required for personal or draft-only runs. Requires workspace owner authorization. Writes a permanent audit log record bound to imageId. Re-attesting with a new statementVersion creates a new timestamped attestation record without revoking prior history. Returns attestation confirmation object.",
|
|
32624
32607
|
effect: "local-write-job",
|
|
32625
32608
|
inputSchema: {
|
|
32626
32609
|
type: "object",
|
|
32627
32610
|
properties: {
|
|
32628
32611
|
imageId: { type: "string", description: "The unique image asset identifier to attest." },
|
|
32629
|
-
statementVersion: { type: "string", description: "Legal attestation terms version accepted (e.g. v1)." }
|
|
32612
|
+
statementVersion: { type: "string", description: "Legal attestation terms version accepted (e.g. v1). Returns 400 if invalid or empty." }
|
|
32630
32613
|
},
|
|
32631
32614
|
required: ["imageId"],
|
|
32632
32615
|
additionalProperties: false
|
|
32633
32616
|
},
|
|
32634
|
-
outputSchema: { type: "object", properties: {} }
|
|
32617
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Image asset ID." }, statementVersion: { type: "string", description: "Recorded statement version." }, attestedAt: { type: "string", description: "ISO timestamp of attestation." } } }
|
|
32635
32618
|
},
|
|
32636
32619
|
{
|
|
32637
32620
|
name: "archive_image",
|
|
32638
32621
|
title: "Archive image",
|
|
32639
|
-
description: "Archive an image asset to soft-hide it from active media pickers without deleting binary storage.
|
|
32622
|
+
description: "Archive an image asset to soft-hide it from active media pickers without deleting binary files from storage. Call to declutter media library when an image is retired from active use. For permanent deletion, use delete_image instead. Idempotent state transition, fully reversible via restore_image. Slides and carousels currently referencing this image continue to display and render without disruption. Returns updated Image record with status set to archived.",
|
|
32640
32623
|
effect: "local-write-job",
|
|
32641
32624
|
inputSchema: {
|
|
32642
32625
|
type: "object",
|
|
@@ -32646,12 +32629,12 @@ var init_src6 = __esm({
|
|
|
32646
32629
|
required: ["imageId"],
|
|
32647
32630
|
additionalProperties: false
|
|
32648
32631
|
},
|
|
32649
|
-
outputSchema: { type: "object", properties: {} }
|
|
32632
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Image asset ID." }, status: { type: "string", description: "Updated status (archived)." } } }
|
|
32650
32633
|
},
|
|
32651
32634
|
{
|
|
32652
32635
|
name: "restore_image",
|
|
32653
32636
|
title: "Restore image",
|
|
32654
|
-
description: "Restore
|
|
32637
|
+
description: "Restore a previously archived or trashed image asset back to active status in the workspace media library. Call to unhide a retired asset and make it selectable again in slide slot editors. Alternatives: Use get_image to inspect asset details before restoring. Idempotent state transition. Returns restored Image record visible in default media queries.",
|
|
32655
32638
|
effect: "local-write-job",
|
|
32656
32639
|
inputSchema: {
|
|
32657
32640
|
type: "object",
|
|
@@ -32661,12 +32644,12 @@ var init_src6 = __esm({
|
|
|
32661
32644
|
required: ["imageId"],
|
|
32662
32645
|
additionalProperties: false
|
|
32663
32646
|
},
|
|
32664
|
-
outputSchema: { type: "object", properties: {} }
|
|
32647
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Image asset ID." }, status: { type: "string", description: "Restored status (active)." } } }
|
|
32665
32648
|
},
|
|
32666
32649
|
{
|
|
32667
32650
|
name: "delete_image",
|
|
32668
32651
|
title: "Delete image",
|
|
32669
|
-
description: "Move an image asset to trash for deletion.
|
|
32652
|
+
description: "Move an image asset to trash for permanent removal. Call only when an image is obsolete, copyrighted without license, or marked for permanent deletion. If existing slides still use this image, prefer archive_image to hide it safely without breaking slide renders. Destructive operation requiring explicit user confirmation. May cause slide render failures if imageId is bound to active slides. Returns deletion confirmation record.",
|
|
32670
32653
|
effect: "explicit-approval",
|
|
32671
32654
|
inputSchema: {
|
|
32672
32655
|
type: "object",
|
|
@@ -32676,7 +32659,7 @@ var init_src6 = __esm({
|
|
|
32676
32659
|
required: ["imageId"],
|
|
32677
32660
|
additionalProperties: false
|
|
32678
32661
|
},
|
|
32679
|
-
outputSchema: { type: "object", properties: {} }
|
|
32662
|
+
outputSchema: { type: "object", properties: { imageId: { type: "string", description: "Deleted image asset ID." }, deleted: { type: "boolean", description: "True if deletion confirmed." } } }
|
|
32680
32663
|
}
|
|
32681
32664
|
];
|
|
32682
32665
|
unifiedToolRegistry = [...templateTools, ...slideshowTools, ...brandTools, ...imageTools];
|
|
@@ -32785,10 +32768,10 @@ var init_v1_mcp = __esm({
|
|
|
32785
32768
|
|
|
32786
32769
|
// src/v1-cli.ts
|
|
32787
32770
|
init_src2();
|
|
32788
|
-
import { cp, readFile, writeFile, mkdir, chmod, copyFile, rm } from "fs/promises";
|
|
32789
|
-
import { existsSync as
|
|
32790
|
-
import { homedir as
|
|
32791
|
-
import { join as
|
|
32771
|
+
import { cp, readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, chmod, copyFile, rm } from "fs/promises";
|
|
32772
|
+
import { existsSync as existsSync4, readFileSync as readFileSync3, statSync as statSync2 } from "fs";
|
|
32773
|
+
import { homedir as homedir3 } from "os";
|
|
32774
|
+
import { join as join5, resolve as resolve4 } from "path";
|
|
32792
32775
|
import { Command } from "commander";
|
|
32793
32776
|
|
|
32794
32777
|
// src/runtime/mcp-hosts.ts
|
|
@@ -32868,15 +32851,18 @@ function isUnifiedConfigCompatible(config3) {
|
|
|
32868
32851
|
// src/installSkills.ts
|
|
32869
32852
|
var DEFAULT_SKILL_IDS = [
|
|
32870
32853
|
"easysociable-template",
|
|
32871
|
-
"easysociable-slideshow"
|
|
32854
|
+
"easysociable-slideshow",
|
|
32855
|
+
"easysociable-tweet-image"
|
|
32872
32856
|
];
|
|
32873
32857
|
var SKILL_ALIASES = {
|
|
32874
32858
|
content: "easysociable-content",
|
|
32875
32859
|
template: "easysociable-template",
|
|
32876
32860
|
slideshow: "easysociable-slideshow",
|
|
32861
|
+
tweet: "easysociable-tweet-image",
|
|
32877
32862
|
"easysociable-content": "easysociable-content",
|
|
32878
32863
|
"easysociable-template": "easysociable-template",
|
|
32879
|
-
"easysociable-slideshow": "easysociable-slideshow"
|
|
32864
|
+
"easysociable-slideshow": "easysociable-slideshow",
|
|
32865
|
+
"easysociable-tweet-image": "easysociable-tweet-image"
|
|
32880
32866
|
};
|
|
32881
32867
|
function parseInstallSkills(raw) {
|
|
32882
32868
|
if (!raw?.trim())
|
|
@@ -32887,7 +32873,7 @@ function parseInstallSkills(raw) {
|
|
|
32887
32873
|
const resolved = tokens.map((token) => {
|
|
32888
32874
|
const skill = SKILL_ALIASES[token];
|
|
32889
32875
|
if (!skill)
|
|
32890
|
-
throw new Error(`Unknown skill "${token}". Use content, template, slideshow (comma-separated).`);
|
|
32876
|
+
throw new Error(`Unknown skill "${token}". Use content, template, slideshow, tweet (comma-separated).`);
|
|
32891
32877
|
return skill;
|
|
32892
32878
|
});
|
|
32893
32879
|
return [...new Set(resolved)];
|
|
@@ -33496,7 +33482,7 @@ function openBrowser(url2) {
|
|
|
33496
33482
|
}
|
|
33497
33483
|
function waitForBrowserLogin(options) {
|
|
33498
33484
|
const state = randomBytes(16).toString("hex");
|
|
33499
|
-
return new Promise((
|
|
33485
|
+
return new Promise((resolve5, reject) => {
|
|
33500
33486
|
const server = createServer((req, res) => {
|
|
33501
33487
|
if (req.method !== "POST" || !req.url?.startsWith("/callback")) {
|
|
33502
33488
|
res.writeHead(404).end();
|
|
@@ -33522,7 +33508,7 @@ function waitForBrowserLogin(options) {
|
|
|
33522
33508
|
clearTimeout(timer);
|
|
33523
33509
|
server.close();
|
|
33524
33510
|
if (error52) reject(error52);
|
|
33525
|
-
else
|
|
33511
|
+
else resolve5(result);
|
|
33526
33512
|
}
|
|
33527
33513
|
server.on("error", (error52) => finish(error52));
|
|
33528
33514
|
server.listen(0, "127.0.0.1", () => {
|
|
@@ -33536,274 +33522,434 @@ function waitForBrowserLogin(options) {
|
|
|
33536
33522
|
}
|
|
33537
33523
|
|
|
33538
33524
|
// src/formulas.ts
|
|
33539
|
-
|
|
33540
|
-
|
|
33541
|
-
import { join as join4 } from "path";
|
|
33542
|
-
var DEFAULT_CANDIDATES = [
|
|
33543
|
-
process.env.EASYSOCIABLE_FORMULA_CATALOG,
|
|
33544
|
-
join4(homedir3(), "Documents", "Obsidian Vault", "TikTok Radar", "graph")
|
|
33545
|
-
].filter((p) => Boolean(p));
|
|
33546
|
-
function resolveCatalogDir(explicit) {
|
|
33547
|
-
if (explicit) {
|
|
33548
|
-
if (!existsSync4(join4(explicit, "catalog.json"))) {
|
|
33549
|
-
throw new Error(`No catalog.json under ${explicit}`);
|
|
33550
|
-
}
|
|
33551
|
-
return explicit;
|
|
33552
|
-
}
|
|
33553
|
-
for (const candidate of DEFAULT_CANDIDATES) {
|
|
33554
|
-
if (existsSync4(join4(candidate, "catalog.json"))) return candidate;
|
|
33555
|
-
}
|
|
33556
|
-
throw new Error(
|
|
33557
|
-
`Formula catalog not found. Set EASYSOCIABLE_FORMULA_CATALOG to the graph/ dir (expected catalog.json). Tried: ${DEFAULT_CANDIDATES.join(", ")}`
|
|
33558
|
-
);
|
|
33559
|
-
}
|
|
33560
|
-
function readJson(path) {
|
|
33561
|
-
return JSON.parse(readFileSync3(path, "utf8"));
|
|
33562
|
-
}
|
|
33563
|
-
function loadCatalog(dir) {
|
|
33564
|
-
const root = resolveCatalogDir(dir);
|
|
33565
|
-
return readJson(join4(root, "catalog.json"));
|
|
33566
|
-
}
|
|
33567
|
-
function listFormulas(opts = {}) {
|
|
33568
|
-
const root = resolveCatalogDir(opts.dir);
|
|
33569
|
-
const formulasDir = join4(root, "formulas");
|
|
33570
|
-
if (!existsSync4(formulasDir)) return [];
|
|
33571
|
-
const cards = [];
|
|
33572
|
-
for (const name of readdirSync2(formulasDir)) {
|
|
33573
|
-
if (!name.startsWith("F-") || !name.endsWith(".json")) continue;
|
|
33574
|
-
const card = readJson(join4(formulasDir, name));
|
|
33575
|
-
if (opts.recipe && card.recipe !== opts.recipe) continue;
|
|
33576
|
-
if (opts.niche && card.niche !== opts.niche) continue;
|
|
33577
|
-
if (opts.status && card.status !== opts.status) continue;
|
|
33578
|
-
if (opts.platform && card.platform !== opts.platform) continue;
|
|
33579
|
-
cards.push(card);
|
|
33580
|
-
}
|
|
33581
|
-
return cards.sort((a, b) => {
|
|
33582
|
-
const statusRank = (s) => s === "published" ? 0 : 1;
|
|
33583
|
-
const d = statusRank(a.status) - statusRank(b.status);
|
|
33584
|
-
if (d !== 0) return d;
|
|
33585
|
-
return (b.evidence.account_count || 0) - (a.evidence.account_count || 0);
|
|
33586
|
-
});
|
|
33587
|
-
}
|
|
33588
|
-
function getFormula(id, dir) {
|
|
33589
|
-
const root = resolveCatalogDir(dir);
|
|
33590
|
-
const path = join4(root, "formulas", `${id}.json`);
|
|
33591
|
-
if (!existsSync4(path)) throw new Error(`Formula not found: ${id}`);
|
|
33592
|
-
const looksPath = join4(root, "looks.json");
|
|
33593
|
-
const looks = existsSync4(looksPath) ? readJson(looksPath)[id] : void 0;
|
|
33594
|
-
return { ...readJson(path), looks: looks ?? [] };
|
|
33595
|
-
}
|
|
33596
|
-
async function fetchHostedFormula(id, baseUrl, fetchImpl = fetch) {
|
|
33597
|
-
const response = await fetchImpl(`${baseUrl.replace(/\/$/, "")}/v1/formulas/${encodeURIComponent(id)}`);
|
|
33525
|
+
async function getCatalogJson(url2, what, fetchImpl = fetch) {
|
|
33526
|
+
const response = await fetchImpl(url2);
|
|
33598
33527
|
const body = await response.json().catch(() => null);
|
|
33599
|
-
if (!response.ok || !body?.ok ||
|
|
33600
|
-
throw new Error(
|
|
33601
|
-
}
|
|
33528
|
+
if (!response.ok || !body?.ok || body.data == null)
|
|
33529
|
+
throw new Error(`${what} (${body?.error?.message ?? `HTTP ${response.status}`})`);
|
|
33602
33530
|
return body.data;
|
|
33603
33531
|
}
|
|
33604
|
-
|
|
33605
|
-
|
|
33606
|
-
|
|
33607
|
-
|
|
33608
|
-
|
|
33609
|
-
|
|
33532
|
+
var base = (baseUrl) => baseUrl.replace(/\/$/, "");
|
|
33533
|
+
async function fetchFormulas(baseUrl, fetchImpl = fetch) {
|
|
33534
|
+
return (await getCatalogJson(`${base(baseUrl)}/v1/formulas?limit=-1`, "Formula catalog unavailable", fetchImpl)).items ?? [];
|
|
33535
|
+
}
|
|
33536
|
+
async function fetchFormula(id, baseUrl, fetchImpl = fetch) {
|
|
33537
|
+
return getCatalogJson(`${base(baseUrl)}/v1/formulas/${encodeURIComponent(id)}`, `Formula not found: ${id}`, fetchImpl);
|
|
33538
|
+
}
|
|
33539
|
+
var byEvidence = (a, b) => Number(b.status === "published") - Number(a.status === "published") || b.evidence.account_count - a.evidence.account_count;
|
|
33540
|
+
function filterFormulas(cards, opts = {}) {
|
|
33541
|
+
return cards.filter((c) => (!opts.recipe || c.recipe === opts.recipe) && (!opts.niche || c.niche === opts.niche) && (!opts.status || c.status === opts.status) && (!opts.platform || c.platform === opts.platform)).sort(byEvidence);
|
|
33542
|
+
}
|
|
33543
|
+
function poolByPattern(cards, key) {
|
|
33544
|
+
const groups = /* @__PURE__ */ new Map();
|
|
33545
|
+
for (const card of cards) groups.set(key(card), [...groups.get(key(card)) ?? [], card]);
|
|
33546
|
+
return [...groups.values()].map((group) => {
|
|
33547
|
+
const rep = [...group].sort(byEvidence)[0];
|
|
33548
|
+
const accounts = new Set(group.flatMap((c) => c.evidence.accounts ?? []));
|
|
33549
|
+
const posts = new Set(group.flatMap((c) => c.evidence.post_ids ?? []));
|
|
33550
|
+
const newest = group.map((c) => c.evidence.newest_days_ago).filter((d) => typeof d === "number");
|
|
33551
|
+
return {
|
|
33552
|
+
...rep,
|
|
33553
|
+
status: group.some((c) => c.status === "published") ? "published" : rep.status,
|
|
33554
|
+
niches: [...new Set(group.map((c) => c.niche))],
|
|
33555
|
+
evidence: {
|
|
33556
|
+
...rep.evidence,
|
|
33557
|
+
account_count: Math.max(accounts.size, ...group.map((c) => c.evidence.account_count)),
|
|
33558
|
+
post_count: Math.max(posts.size, ...group.map((c) => c.evidence.post_count)),
|
|
33559
|
+
newest_days_ago: newest.length ? Math.min(...newest) : null,
|
|
33560
|
+
accounts: [...accounts]
|
|
33561
|
+
}
|
|
33562
|
+
};
|
|
33563
|
+
});
|
|
33564
|
+
}
|
|
33565
|
+
function evidenceScore(card, reasons) {
|
|
33566
|
+
let score = 0;
|
|
33567
|
+
if (card.status === "published") {
|
|
33568
|
+
score += 2;
|
|
33569
|
+
reasons.push(`published (${card.evidence.account_count} accounts)`);
|
|
33570
|
+
} else {
|
|
33571
|
+
reasons.push(`hypothesis: ${card.evidence.account_count} account(s), weak evidence`);
|
|
33572
|
+
}
|
|
33573
|
+
if (typeof card.evidence.newest_days_ago === "number" && card.evidence.newest_days_ago <= 60) {
|
|
33574
|
+
score += 0.5;
|
|
33575
|
+
reasons.push("recent evidence");
|
|
33610
33576
|
}
|
|
33577
|
+
return score + Math.min(card.evidence.account_count, 5) * 0.3;
|
|
33611
33578
|
}
|
|
33612
33579
|
function recommendFormulas(input) {
|
|
33613
|
-
const
|
|
33614
|
-
const
|
|
33615
|
-
|
|
33616
|
-
|
|
33617
|
-
platform
|
|
33618
|
-
});
|
|
33619
|
-
const scored = all.map((card) => {
|
|
33620
|
-
let score = 0;
|
|
33621
|
-
const reasons = [];
|
|
33622
|
-
if (card.recipe === input.recipe) {
|
|
33623
|
-
score += 5;
|
|
33624
|
-
reasons.push("recipe match");
|
|
33625
|
-
}
|
|
33626
|
-
if (input.niche && card.niche === input.niche) {
|
|
33627
|
-
score += 2;
|
|
33628
|
-
reasons.push("niche match");
|
|
33629
|
-
} else if (input.niche && card.fit?.length) {
|
|
33580
|
+
const pooled = poolByPattern(filterFormulas(input.cards, { recipe: input.recipe }), (card) => card.swipe);
|
|
33581
|
+
const scored = pooled.map((card) => {
|
|
33582
|
+
const reasons = ["recipe match"];
|
|
33583
|
+
let score = 5 + evidenceScore(card, reasons);
|
|
33584
|
+
if (input.platform && card.platform === input.platform) {
|
|
33630
33585
|
score += 0.5;
|
|
33631
|
-
reasons.push("
|
|
33632
|
-
}
|
|
33633
|
-
if (card.status === "published") {
|
|
33634
|
-
score += 2;
|
|
33635
|
-
reasons.push(`published (${card.evidence.account_count} accounts)`);
|
|
33636
|
-
} else {
|
|
33637
|
-
reasons.push("hypothesis \u2014 weak evidence");
|
|
33586
|
+
reasons.push("same platform");
|
|
33638
33587
|
}
|
|
33639
33588
|
const points = card.beats.filter((b) => b.role === "point").length;
|
|
33640
33589
|
if (typeof input.factCount === "number" && input.factCount > 0) {
|
|
33641
|
-
|
|
33642
|
-
|
|
33643
|
-
reasons.push("enough facts for point beats");
|
|
33644
|
-
} else {
|
|
33645
|
-
score -= 1;
|
|
33646
|
-
reasons.push(`need ~${points} facts, have ${input.factCount}`);
|
|
33647
|
-
}
|
|
33648
|
-
}
|
|
33649
|
-
const newest = card.evidence.newest_days_ago;
|
|
33650
|
-
if (typeof newest === "number" && newest <= 60) {
|
|
33651
|
-
score += 0.5;
|
|
33652
|
-
reasons.push("recent evidence");
|
|
33590
|
+
score += input.factCount >= points ? 1.5 : -1;
|
|
33591
|
+
reasons.push(input.factCount >= points ? "enough facts for point beats" : `need ~${points} facts, have ${input.factCount}`);
|
|
33653
33592
|
}
|
|
33654
|
-
score += Math.min(card.evidence.account_count, 5) * 0.3;
|
|
33655
33593
|
return { ...card, score, reasons };
|
|
33656
|
-
});
|
|
33657
|
-
scored.
|
|
33658
|
-
|
|
33659
|
-
|
|
33660
|
-
if (!top.length || best < 4) {
|
|
33661
|
-
return {
|
|
33662
|
-
cards: top,
|
|
33663
|
-
stop: true,
|
|
33664
|
-
message: "Top score is low \u2014 change the angle or recipe rather than forcing a card."
|
|
33665
|
-
};
|
|
33666
|
-
}
|
|
33667
|
-
return { cards: top, stop: false };
|
|
33594
|
+
}).sort((a, b) => b.score - a.score).slice(0, input.limit ?? 5);
|
|
33595
|
+
if (!scored.length || scored[0].score < 4)
|
|
33596
|
+
return { cards: scored, stop: true, message: "No fitting card: write the arc yourself." };
|
|
33597
|
+
return { cards: scored, stop: false };
|
|
33668
33598
|
}
|
|
33669
33599
|
|
|
33670
33600
|
// src/hooks.ts
|
|
33671
|
-
|
|
33672
|
-
|
|
33673
|
-
|
|
33674
|
-
return JSON.parse(readFileSync4(path, "utf8"));
|
|
33675
|
-
}
|
|
33676
|
-
function loadHooksCatalog(dir) {
|
|
33677
|
-
const root = resolveCatalogDir(dir);
|
|
33678
|
-
const path = join5(root, "hooks_catalog.json");
|
|
33679
|
-
if (!existsSync5(path)) {
|
|
33680
|
-
throw new Error(`No hooks_catalog.json under ${root}. Run: python3 scripts/compile_hooks.py`);
|
|
33681
|
-
}
|
|
33682
|
-
return readJson2(path);
|
|
33683
|
-
}
|
|
33684
|
-
function listHooks(opts = {}) {
|
|
33685
|
-
const root = resolveCatalogDir(opts.dir);
|
|
33686
|
-
const hooksDir = join5(root, "hooks");
|
|
33687
|
-
if (!existsSync5(hooksDir))
|
|
33688
|
-
return [];
|
|
33689
|
-
const cards = [];
|
|
33690
|
-
for (const name of readdirSync3(hooksDir)) {
|
|
33691
|
-
if (!name.startsWith("H-") || !name.endsWith(".json"))
|
|
33692
|
-
continue;
|
|
33693
|
-
const card = readJson2(join5(hooksDir, name));
|
|
33694
|
-
if (opts.type && card.hook_type !== opts.type)
|
|
33695
|
-
continue;
|
|
33696
|
-
if (opts.niche && card.niche !== opts.niche)
|
|
33697
|
-
continue;
|
|
33698
|
-
if (opts.status && card.status !== opts.status)
|
|
33699
|
-
continue;
|
|
33700
|
-
if (opts.formula && !(card.formula_ids || []).includes(opts.formula))
|
|
33701
|
-
continue;
|
|
33702
|
-
cards.push(card);
|
|
33703
|
-
}
|
|
33704
|
-
return cards.sort((a, b) => {
|
|
33705
|
-
const statusRank = (s) => s === "published" ? 0 : 1;
|
|
33706
|
-
const d = statusRank(a.status) - statusRank(b.status);
|
|
33707
|
-
if (d !== 0)
|
|
33708
|
-
return d;
|
|
33709
|
-
return (b.evidence.account_count || 0) - (a.evidence.account_count || 0);
|
|
33710
|
-
});
|
|
33601
|
+
var base2 = (baseUrl) => baseUrl.replace(/\/$/, "");
|
|
33602
|
+
async function fetchHooks(baseUrl, fetchImpl = fetch) {
|
|
33603
|
+
return (await getCatalogJson(`${base2(baseUrl)}/v1/hooks`, "Hook catalog unavailable", fetchImpl)).items ?? [];
|
|
33711
33604
|
}
|
|
33712
|
-
function
|
|
33713
|
-
|
|
33714
|
-
const path = join5(root, "hooks", `${id}.json`);
|
|
33715
|
-
if (!existsSync5(path))
|
|
33716
|
-
throw new Error(`Hook not found: ${id}`);
|
|
33717
|
-
return readJson2(path);
|
|
33605
|
+
async function fetchHook(id, baseUrl, fetchImpl = fetch) {
|
|
33606
|
+
return getCatalogJson(`${base2(baseUrl)}/v1/hooks/${encodeURIComponent(id)}`, `Hook not found: ${id}`, fetchImpl);
|
|
33718
33607
|
}
|
|
33719
|
-
|
|
33720
|
-
|
|
33608
|
+
function filterHooks(cards, opts = {}) {
|
|
33609
|
+
return cards.filter((c) => (!opts.type || c.hook_type === opts.type) && (!opts.niche || c.niche === opts.niche) && (!opts.status || c.status === opts.status) && (!opts.formula || (c.formula_ids ?? []).includes(opts.formula))).sort((a, b) => Number(b.status === "published") - Number(a.status === "published") || b.evidence.account_count - a.evidence.account_count);
|
|
33610
|
+
}
|
|
33611
|
+
function recommendHooks(input) {
|
|
33612
|
+
const pooled = poolByPattern(filterHooks(input.cards, { type: input.type }), (card) => card.hook_type);
|
|
33613
|
+
const scored = pooled.map((card) => {
|
|
33614
|
+
const reasons = [];
|
|
33615
|
+
return { ...card, score: evidenceScore(card, reasons), reasons };
|
|
33616
|
+
}).sort((a, b) => b.score - a.score).slice(0, input.limit ?? 5);
|
|
33617
|
+
if (!scored.length || scored[0].score < 2)
|
|
33618
|
+
return { cards: scored, stop: true, message: "No well-evidenced hook: write one yourself." };
|
|
33619
|
+
return { cards: scored, stop: false };
|
|
33620
|
+
}
|
|
33621
|
+
|
|
33622
|
+
// ../../packages/tweet-card/src/index.ts
|
|
33623
|
+
import { readFile } from "fs/promises";
|
|
33624
|
+
import { createRequire } from "module";
|
|
33625
|
+
import { Resvg, initWasm } from "@resvg/resvg-wasm";
|
|
33626
|
+
|
|
33627
|
+
// ../../packages/tweet-card/src/assets.ts
|
|
33628
|
+
var FONT_BY_LANGUAGE = {
|
|
33629
|
+
"ja-JP": "Noto Sans JP",
|
|
33630
|
+
"ko-KR": "Noto Sans KR",
|
|
33631
|
+
"zh-CN": "Noto Sans SC",
|
|
33632
|
+
"zh-TW": "Noto Sans TC",
|
|
33633
|
+
"zh-HK": "Noto Sans HK",
|
|
33634
|
+
"th-TH": "Noto Sans Thai",
|
|
33635
|
+
"bn-IN": "Noto Sans Bengali",
|
|
33636
|
+
"ar-AR": "Noto Sans Arabic",
|
|
33637
|
+
"ta-IN": "Noto Sans Tamil",
|
|
33638
|
+
"ml-IN": "Noto Sans Malayalam",
|
|
33639
|
+
"he-IL": "Noto Sans Hebrew",
|
|
33640
|
+
"te-IN": "Noto Sans Telugu",
|
|
33641
|
+
"devanagari": "Noto Sans Devanagari",
|
|
33642
|
+
"kannada": "Noto Sans Kannada"
|
|
33643
|
+
};
|
|
33644
|
+
var FALLBACK_FONT = "Noto Sans";
|
|
33645
|
+
var TWEMOJI_BASE = "https://cdn.jsdelivr.net/gh/jdecked/twemoji@latest/assets/svg";
|
|
33646
|
+
function toBase64(bytes) {
|
|
33647
|
+
return Buffer.from(bytes).toString("base64");
|
|
33648
|
+
}
|
|
33649
|
+
async function imageDataUri(url2, fetchImpl) {
|
|
33650
|
+
if (!url2) return null;
|
|
33651
|
+
const response = await fetchImpl(url2).catch(() => null);
|
|
33652
|
+
if (!response?.ok) return null;
|
|
33653
|
+
const type = response.headers.get("content-type") || "image/jpeg";
|
|
33654
|
+
return `data:${type};base64,${toBase64(await response.arrayBuffer())}`;
|
|
33655
|
+
}
|
|
33656
|
+
async function googleFont(family, weight, text, fetchImpl) {
|
|
33657
|
+
const css = await fetchImpl(`https://fonts.googleapis.com/css2?family=${encodeURIComponent(family)}:wght@${weight}&text=${encodeURIComponent(text)}`).then((r) => r.ok ? r.text() : "").catch(() => "");
|
|
33658
|
+
const url2 = /src: url\((.+?)\)/.exec(css)?.[1];
|
|
33659
|
+
const font = url2 ? await fetchImpl(url2).then((r) => r.ok ? r.arrayBuffer() : null).catch(() => null) : null;
|
|
33660
|
+
return font ? { name: `${family} ${text}`, data: font, weight, style: "normal" } : null;
|
|
33661
|
+
}
|
|
33662
|
+
async function fontsForSegment(languageCode, text, fetchImpl, preferred) {
|
|
33663
|
+
const candidates = languageCode.split("|");
|
|
33664
|
+
const language = preferred && candidates.includes(preferred) ? preferred : candidates[0];
|
|
33665
|
+
const family = FONT_BY_LANGUAGE[language ?? ""] ?? FALLBACK_FONT;
|
|
33666
|
+
const fonts = await Promise.all([googleFont(family, 400, text, fetchImpl), googleFont(family, 700, text, fetchImpl)]);
|
|
33667
|
+
return fonts.filter((f) => f !== null);
|
|
33668
|
+
}
|
|
33669
|
+
function twemojiCode(emoji4) {
|
|
33670
|
+
const points = Array.from(emoji4).map((ch) => ch.codePointAt(0));
|
|
33671
|
+
const kept = points.includes(8205) ? points : points.filter((p) => p !== 65039);
|
|
33672
|
+
return kept.map((p) => p.toString(16)).join("-");
|
|
33673
|
+
}
|
|
33674
|
+
async function emojiDataUri(emoji4, fetchImpl) {
|
|
33675
|
+
const svg = await fetchImpl(`${TWEMOJI_BASE}/${twemojiCode(emoji4)}.svg`).then((r) => r.ok ? r.text() : null).catch(() => null);
|
|
33676
|
+
return svg ? `data:image/svg+xml;base64,${Buffer.from(svg).toString("base64")}` : null;
|
|
33677
|
+
}
|
|
33678
|
+
|
|
33679
|
+
// ../../packages/tweet-card/src/card.ts
|
|
33680
|
+
var CARD_WIDTH = 540;
|
|
33681
|
+
var CANVAS_PADDING = 40;
|
|
33682
|
+
var CARD_PADDING = 24;
|
|
33683
|
+
var INNER_WIDTH = CARD_WIDTH - CARD_PADDING * 2;
|
|
33684
|
+
var GAP = 4;
|
|
33685
|
+
var SIZE_RATIO = { "4:5": 5 / 4, "3:4": 4 / 3, "9:16": 16 / 9, "1:1": 1 };
|
|
33686
|
+
var THEMES = {
|
|
33687
|
+
light: { bg: "#FFFFFF", text: "#0F1419", muted: "#536471", border: "#EFF3F4" },
|
|
33688
|
+
dark: { bg: "#000000", text: "#E7E9EA", muted: "#71767B", border: "#2F3336" }
|
|
33689
|
+
};
|
|
33690
|
+
var PATHS = {
|
|
33691
|
+
x: ["M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"],
|
|
33692
|
+
verified: ["M22.25 12c0-1.43-.88-2.67-2.19-3.34.46-1.39.2-2.9-.81-3.91s-2.52-1.27-3.91-.81c-.66-1.31-1.91-2.19-3.34-2.19s-2.67.88-3.33 2.19c-1.4-.46-2.91-.2-3.92.81s-1.26 2.52-.8 3.91c-1.31.67-2.2 1.91-2.2 3.34s.89 2.67 2.2 3.34c-.46 1.39-.21 2.9.8 3.91s2.52 1.26 3.91.81c.67 1.31 1.91 2.19 3.34 2.19s2.68-.88 3.34-2.19c1.39.45 2.9.2 3.91-.81s1.27-2.52.81-3.91c1.31-.67 2.19-1.91 2.19-3.34zm-11.71 4.2L6.8 12.46l1.41-1.42 2.26 2.26 4.8-5.23 1.47 1.36-6.2 6.77z"],
|
|
33693
|
+
replies: ["M7.9 20A9 9 0 1 0 4 16.1L2 22Z"],
|
|
33694
|
+
reposts: ["m2 9 3-3 3 3", "M13 18H7a2 2 0 0 1-2-2V6", "m22 15-3 3-3-3", "M11 6h6a2 2 0 0 1 2 2v10"],
|
|
33695
|
+
likes: ["M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"],
|
|
33696
|
+
views: ["M3 3v18h18", "M18 17V9", "M13 17V5", "M8 17v-3"]
|
|
33697
|
+
};
|
|
33698
|
+
function h(type, props, ...children) {
|
|
33699
|
+
const kept = children.filter((c) => Boolean(c));
|
|
33700
|
+
return { type, props: { ...props, children: kept.length === 1 ? kept[0] : kept } };
|
|
33701
|
+
}
|
|
33702
|
+
var box = (style, ...children) => h("div", { style: { display: "flex", ...style } }, ...children);
|
|
33703
|
+
function icon(paths, size, color, filled = false) {
|
|
33704
|
+
const paint = filled ? { fill: color } : { fill: "none", stroke: color, "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" };
|
|
33705
|
+
return h("svg", { width: size, height: size, viewBox: "0 0 24 24" }, ...paths.map((d) => h("path", { d, ...paint })));
|
|
33706
|
+
}
|
|
33707
|
+
function formatCount(value) {
|
|
33708
|
+
if (value >= 1e6) return `${(value / 1e6).toFixed(1).replace(/\.0$/, "")}M`;
|
|
33709
|
+
if (value >= 1e3) return `${(value / 1e3).toFixed(1).replace(/\.0$/, "")}K`;
|
|
33710
|
+
return String(value);
|
|
33711
|
+
}
|
|
33712
|
+
function formatDate(iso) {
|
|
33713
|
+
if (!iso) return "";
|
|
33714
|
+
const d = new Date(iso);
|
|
33715
|
+
if (Number.isNaN(d.getTime())) return "";
|
|
33716
|
+
const time5 = d.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit" });
|
|
33717
|
+
return `${time5} \xB7 ${d.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" })}`;
|
|
33718
|
+
}
|
|
33719
|
+
function header(card, avatar, theme) {
|
|
33720
|
+
const t = THEMES[theme];
|
|
33721
|
+
const photo = avatar ? h("img", { src: avatar, width: 48, height: 48, style: { borderRadius: 24 } }) : box({ width: 48, height: 48, borderRadius: 24, backgroundColor: t.border });
|
|
33722
|
+
const name = box(
|
|
33723
|
+
{ alignItems: "center", gap: 4 },
|
|
33724
|
+
h("span", { style: { fontSize: 16, fontWeight: 700, color: t.text } }, card.author.name),
|
|
33725
|
+
card.author.verified && icon(PATHS.verified, 18, "#1D9BF0", true)
|
|
33726
|
+
);
|
|
33727
|
+
const who = box({ flexDirection: "column", marginLeft: 12 }, name, h("span", { style: { fontSize: 15, color: t.muted } }, `@${card.author.handle}`));
|
|
33728
|
+
return box({ justifyContent: "space-between", alignItems: "flex-start" }, box({ alignItems: "center" }, photo, who), icon(PATHS.x, 22, t.text, true));
|
|
33729
|
+
}
|
|
33730
|
+
function mediaCell(src, width, height, isVideo) {
|
|
33731
|
+
const play = box(
|
|
33732
|
+
{ position: "absolute", top: height / 2 - 24, left: width / 2 - 24, width: 48, height: 48, borderRadius: 24, backgroundColor: "rgba(0,0,0,0.6)", alignItems: "center", justifyContent: "center" },
|
|
33733
|
+
h("svg", { width: 20, height: 20, viewBox: "0 0 24 24" }, h("path", { d: "M7 4v16l13-8z", fill: "#FFFFFF" }))
|
|
33734
|
+
);
|
|
33735
|
+
return box({ position: "relative", width, height }, h("img", { src, width, height, style: { objectFit: "cover" } }), isVideo && play);
|
|
33736
|
+
}
|
|
33737
|
+
function singleHeight(item) {
|
|
33738
|
+
if (!item.width || !item.height) return 280;
|
|
33739
|
+
return Math.round(Math.min(340, Math.max(160, INNER_WIDTH * item.height / item.width)));
|
|
33740
|
+
}
|
|
33741
|
+
function mediaBlock(card, sources, theme) {
|
|
33742
|
+
const items = card.media.slice(0, 4).map((m, i) => ({ m, src: sources[i] })).filter((x) => Boolean(x.src));
|
|
33743
|
+
if (!items.length) return null;
|
|
33744
|
+
const rows = items.length === 1 ? [items] : [items.slice(0, 2), items.slice(2, 4)].filter((r) => r.length);
|
|
33745
|
+
const rowHeight = items.length === 1 ? singleHeight(items[0].m) : rows.length === 1 ? 220 : 160;
|
|
33746
|
+
return box(
|
|
33747
|
+
{ flexDirection: "column", gap: GAP, marginTop: 12, borderRadius: 16, overflow: "hidden", border: `1px solid ${THEMES[theme].border}` },
|
|
33748
|
+
...rows.map((row) => box({ gap: GAP }, ...row.map(({ m, src }) => mediaCell(src, row.length === 1 ? INNER_WIDTH : (INNER_WIDTH - GAP) / 2, rowHeight, m.type !== "photo"))))
|
|
33749
|
+
);
|
|
33750
|
+
}
|
|
33751
|
+
function metricsRow(card, theme) {
|
|
33752
|
+
const color = THEMES[theme].muted;
|
|
33753
|
+
const shown = ["replies", "reposts", "likes", "views"].filter((k) => card.metrics[k] !== null);
|
|
33754
|
+
if (!shown.length) return null;
|
|
33755
|
+
return box({ gap: 28, marginTop: 12 }, ...shown.map((k) => box({ alignItems: "center", gap: 6 }, icon(PATHS[k], 18, color), h("span", { style: { fontSize: 14, color } }, formatCount(card.metrics[k])))));
|
|
33756
|
+
}
|
|
33757
|
+
function cardElement(card, images, theme, hideMetrics) {
|
|
33758
|
+
const t = THEMES[theme];
|
|
33759
|
+
const metrics = hideMetrics ? null : metricsRow(card, theme);
|
|
33760
|
+
const date7 = formatDate(card.createdAt);
|
|
33761
|
+
const stamp = date7 && box({ marginTop: 12, paddingBottom: metrics ? 12 : 0, borderBottom: metrics ? `1px solid ${t.border}` : "none" }, h("span", { style: { fontSize: 14, color: t.muted } }, date7));
|
|
33762
|
+
return box(
|
|
33763
|
+
{ flexDirection: "column", width: CARD_WIDTH, padding: CARD_PADDING, borderRadius: 16, backgroundColor: t.bg, border: `1px solid ${t.border}`, fontFamily: "Inter" },
|
|
33764
|
+
header(card, images.avatar, theme),
|
|
33765
|
+
h("div", { style: { marginTop: 12, fontSize: 17, lineHeight: 1.5, color: t.text, whiteSpace: "pre-wrap", wordBreak: "break-word" } }, card.text),
|
|
33766
|
+
mediaBlock(card, images.media, theme),
|
|
33767
|
+
stamp,
|
|
33768
|
+
metrics
|
|
33769
|
+
);
|
|
33770
|
+
}
|
|
33771
|
+
|
|
33772
|
+
// ../../packages/tweet-card/src/fonts.generated.ts
|
|
33773
|
+
var INTER_400 = "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Bh4AegYeAHoGHgB6Bh4AegYeAHoGHgB6Bh4AeggKAHoFHAC0Bh4AegUmALQFJgC0BSYAtAUmALQFIgB0BSIAdAUiAHQFIgB0BSIAdAUiAHQFKgBiBSoAYgUqAGIF9AC0BfQAtAX0ALQF9AC0BfQAtAX0ALQF9AC0BfQAtAX0ALQF9AC0BfQAtAWFADQH4gA0B+IANAV1ADkFbgA0BW4ANAVuADQFbgA0BQgAegUIAHoFCAB6BQgAegR+AFoEfgBaBH4AWgR+AFoEfgBaBH4AWgR+AFoEfgBaBH4AWgR+AFoHVwBaBOYAngTmAJ4EkgBoBJIAaASSAGgEkgBoBJIAaASSAGgE5gBoBOYAaAWuAGgEqgBoBKoAaASqAGgEqgBoBKoAaASqAGgEqgBoBKoAaASqAGgEqgBoAuoA6AL2ABQChACeBOgAaAToAGgE6ABoBOgAaAToAGgEuwCeBLsACQS7/7cB8AB8AfAAngHw/7AB8P/WAfD/8QHwAJ4B8P+4AfD/5AHw/9cB8P/1AfD/5gPgAHwB8P/mAfD/twRkAJ4EZACeAfAAngHw//QC4ACeAfAAngHwAEgCuACeBwIAngS6AJ4EugCeBLoAngS6AJ4EugCeBLoAngTMAGgEzABoBMwAaATMAFMEzABoBMwAaATMAGgEzABoBMwAaATMAGgH/wBoBOYAngTmAGgDAwCeAwMAngMDAEgDAwBqBDkAbAQ5AGwEOQBsBDkAbAQ5AGwEOQBsBO4AtAKeABQCngAUAp4AFAMCABQCngAUBLsAngS7AJ4EuwCeBLAAngS7AJ4EuwCeBLsAngS7AJ4EuwCeBLsAngS7AJ4EuwCeBH8ANgaMAEYGjABGBF4AQQR/ADYEfwA2BH8ANgR/ADYEawB+BGsAfgRrAH4EawB+BRYAqASpAGgFIgB0BJIAaARmAB4E4wBuBVUANAUMAHoDQQBgBOEAmgTxAH0FKwB4BL8AgAT2AHoEhwBiBPMAegT2AHoFMACOBTAA4QUwAL0FMACWBTAAeQUwALIFMACXBTAAtgUwAJgFMACXAiYAbAImAJACJgCQAiYAkAImAGwDIAD/AyAAcAMgAFIDIABwAyABIgMgAHADIAD/AyAAcAMgAFIDIABwAyABIgMgAHAFMAFOBTABTgUwAL8FMAC+BTAAvwUwAL8FMADUBTAA1AUwALQFMADDBTAAwwUwAL8FMACYBTAAlwUwAQYFMAC/BTAAvgUwAL8FMAC/BTAA1AUwANQFMAC0BTAAwwUwAMMFMAC/BTAAmAUwAJcFMADGAiYAAAImAAAFJwBoAk0AoAJNAKAEFwBSBBcAZgLrANoC6wBgAusA4gLrAHsDaQCQA2kAewe6AHoC6wDaAusAYALrAOIC6wB7A2kAkANpAHsHugB6BREAIgXMAHgC4gAuAqkBBgIpAMAC4gAuA64AkAQAAAAFMABgCAAAAAgAAAAEgAEAA64AkAQAAAAFMABgCAAAAASAAQACFgCgAhYAoAJmANIDugDSA4YAoAOGAKADXgB4Ae4AeAIWAFADhgBQAcgAZgOKAGYCTgCAAk4AoAbqAKACTgCgAk4AoAJqAIACTgCgAxMAZAMTAFAEqQBkBKkAUAVLAK4FSwDtBUsAzgVLAM4FSwDiBUsA4gVLAMMFSwDSBUsA0gVLAM4FSwCnBUsApgVLAK4FSwDtBUsAzgVLAM4FSwDiBUsA4gVLAMMFSwDSBUsA0gVLAM4FSwCnBUsApgVLAOADpgAAA+4AcgPuAHIDxQBSBAIAcgUpAMMFVABkB1AAqATjAFIDpQCCA6EAQwPcAE4BlQBYA3sAYATSAG4EjAB6B30AaAUJAEwCbwBjA4kAcAORAGcBif5wAxAATgIbAEsC8QBjAw0AZAMhAFsC+gB0AwwATgLGAEcDBQBOAwwATgMZAHkDGgCGAesAhQHrADwB2ACAAdgAZgMQAE4CGwBLAvEAYwMNAGQDIQBbAvoAdAMMAE4CxgBHAwUATgMMAE4DGQB5AxoAhgHrAIUB6wA8AdgAgAHYAGYGxwBLBmsASwcOAGQH2wDmCq8A5gKVAKgD+ACqApUAlgS6ARQD0gDUAiUAmwAAAG4AAACoAAAAlgAAANQAAADiAkAAAAJAAAABdAAAB6IAygq6AMoVdADKCroAygeiAQAKugEAFXQBAAeiAQAKugEACroAyg4AAMoKugDKDgAAygasAMoGrADKB6IAygq6AMoVdADKCroAygeiAQAKugEAFXQBAAeiAQAKugEACroAyg4AAMoKugDKDgAAygXhABQF4QAUBrcAtASAALQFKgBiBDQAngLeACgC3gAoAAABFAAAAHoAAABmAAAAZgAAAGMAAAAqAAAAmwAAAF4AAAAqAiYAxgScAAYEyQBS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CpwKkgqICn4KdApqCmAKVgpMCkIKOAouCiQKGgoQCgYJ/AnyCegJ3gnUCcoJwAm2CawJogmYCY4JhAl6CXAJZglcCVIJSAk+CTQJKgkgCRYJDAkCCPgI7gjkCNoI0AjGCLwIsgioCJ4IlAiKCIAIdghsCGIIWAhOCEQIOggwCCYIHAgSCAgH/gf0B+oH4AfWB8wHwge4B64HpAeaB5AHhgd8B3IHaAdeB1QHSgdABzYHLAciBxgHDgcEBvoG8AbmBtwG0gbIBr4GtAaqBqAGlgaMBoIGeAZuBmQGWgZQBkYGPAYyBigGHgYUBgoGAAX2BewF4gXYBc4FxAW6BbAFpgWcBZIFiAV+BXQFagVgBVYFTAVCBTgFLgUkBRoFEAUGBPwE8gToBN4E1ATKBMAEtgSsBKIEmASOBIQEegRwBGYEXARSBEgEPgQ0BCoEIAQWBAwEAgP4A+4D5APaA9ADxgO8A7IDqAOeA5QDigOAA3YDbANiA1gDTgNEAzoDMgMqAyIDGgMSAwoDAgL6AvIC6gLiAtoC0gLKAsICugKyAqoCogKaApICigKCAnoCcgJqAmICWgJSAkoCQgI6AjICKgIiAhoCFAIOAggCAgHnAAIBXAHnAAIBWgHnAAIBVgHnAAIBVAHnAAMBXAFcAecAAwFcAVoB5wADAVwBWQHnAAMBXAFWAecAAwFcAVQB5wADAVwBUwHnAAMBWgFcAecAAwFaAVoB5wADAVoBWQHnAAMBWgFWAecAAwFaAVQB5wADAVoBUwHnAAMBWQFcAecAAwFZAVoB5wADAVkBWQHnAAMBWQFWAecAAwFZAVQB5wADAVkBUwHnAAMBVgFcAecAAwFWAVoB5wADAVYBWQHnAAMBVgFWAecAAwFWAVQB5wADAVYBUwHnAAMBVAFcAecAAwFUAVoB5wADAVQBWQHnAAMBVAFWAecAAwFUAVQB5wADAVQBUwHnAAMBUwFcAecAAwFTAVoB5wADAVMBWQHnAAMBUwFWAecAAwFTAVQB5wADAVMBUwHoAAQBXAFcAVwB6AAEAVwBXAFaAegABAFcAVwBWQHoAAQBXAFcAVYB6AAEAVwBXAFUAegABAFcAVwBUwHoAAQBXAFaAVwB6AAEAVwBWgFaAegABAFcAVoBWQHoAAQBXAFaAVYB6AAEAVwBWgFUAegABAFcAVoBUwHoAAQBXAFZAVwB6AAEAVwBWQFaAegABAFcAVkBWQHoAAQBXAFZAVYB6AAEAVwBWQFUAegABAFcAVkBUwHoAAQBXAFWAVwB6AAEAVwBVgFaAegABAFcAVYBWQHoAAQBXAFWAVYB6AAEAVwBVgFUAegABAFcAVYBUwHoAAQBXAFUAVwB6AAEAVwBVAFaAegABAFcAVQBWQHoAAQBXAFUAVYB6AAEAVwBVAFUAegABAFcAVQBUwHoAAQBXAFTAVwB6AAEAVwBUwFaAegABAFcAVMBWQHoAAQBXAFTAVYB6AAEAVwBUwFUAegABAFcAVMBUwHoAAQBWgFcAVwB6AAEAVoBXAFaAegABAFaAVwBWQHoAAQBWgFcAVYB6AAEAVoBXAFUAegABAFaAVwBUwHoAAQBWgFaAVwB6AAEAVoBWgFaAegABAFaAVoBWQHoAAQBWgFaAVYB6AAEAVoBWgFUAegABAFaAVoBUwHoAAQBWgFZAVwB6AAEAVoBWQFaAegABAFaAVkBWQHoAAQBWgFZAVYB6AAEAVoBWQFUAegABAFaAVkBUwHoAAQBWgFWAVwB6AAEAVoBVgFaAegABAFaAVYBWQHoAAQBWgFWAVYB6AAEAVoBVgFUAegABAFaAVYBUwHoAAQBWgFUAVwB6AAEAVoBVAFaAegABAFaAVQBWQHoAAQBWgFUAVYB6AAEAVoBVAFUAegABAFaAVQBUwHoAAQBWgFTAVwB6AAEAVoBUwFaAegABAFaAVMBWQHoAAQBWgFTAVYB6AAEAVoBUwFUAegABAFaAVMBUwHoAAQBWQFcAVwB6AAEAVkBXAFaAegABAFZAVwBWQHoAAQBWQFcAVYB6AAEAVkBXAFUAegABAFZAVwBUwHoAAQBWQFaAVwB6AAEAVkBWgFaAegABAFZAVoBWQHoAAQBWQFaAVYB6AAEAVkBWgFUAegABAFZAVoBUwHoAAQBWQFZAVwB6AAEAVkBWQFaAegABAFZAVkBWQHoAAQBWQFZAVYB6AAEAVkBWQFUAegABAFZAVkBUwHoAAQBWQFWAVwB6AAEAVkBVgFaAegABAFZAVYBWQHoAAQBWQFWAVYB6AAEAVkBVgFUAegABAFZAVYBUwHoAAQBWQFUAVwB6AAEAVkBVAFaAegABAFZAVQBWQHoAAQBWQFUAVYB6AAEAVkBVAFUAegABAFZAVQBUwHoAAQBWQFTAVwB6AAEAVkBUwFaAegABAFZAVMBWQHoAAQBWQFTAVYB6AAEAVkBUwFUAegABAFZAVMBUwHoAAQBVgFcAVwB6AAEAVYBXAFaAegABAFWAVwBWQHoAAQBVgFcAVYB6AAEAVYBXAFUAegABAFWAVwBUwHoAAQBVgFaAVwB6AAEAVYBWgFaAegABAFWAVoBWQHoAAQBVgFaAVYB6AAEAVYBWgFUAegABAFWAVoBUwHoAAQBVgFZAVwB6AAEAVYBWQFaAegABAFWAVkBWQHoAAQBVgFZAVYB6AAEAVYBWQFUAegABAFWAVkBUwHoAAQBVgFWAVwB6AAEAVYBVgFaAegABAFWAVYBWQHoAAQBVgFWAVYB6AAEAVYBVgFUAegABAFWAVYBUwHoAAQBVgFUAVwB6AAEAVYBVAFaAegABAFWAVQBWQHoAAQBVgFUAVYB6AAEAVYBVAFUAegABAFWAVQBUwHoAAQBVgFTAVwB6AAEAVYBUwFaAegABAFWAVMBWQHoAAQBVgFTAVYB6AAEAVYBUwFUAegABAFWAVMBUwHoAAQBVAFcAVwB6AAEAVQBXAFaAegABAFUAVwBWQHoAAQBVAFcAVYB6AAEAVQBXAFUAegABAFUAVwBUwHoAAQBVAFaAVwB6AAEAVQBWgFaAegABAFUAVoBWQHoAAQBVAFaAVYB6AAEAVQBWgFUAegABAFUAVoBUwHoAAQBVAFZAVwB6AAEAVQBWQFaAegABAFUAVkBWQHoAAQBVAFZAVYB6AAEAVQBWQFUAegABAFUAVkBUwHoAAQBVAFWAVwB6AAEAVQBVgFaAegABAFUAVYBWQHoAAQBVAFWAVYB6AAEAVQBVgFUAegABAFUAVYBUwHoAAQBVAFUAVwB6AAEAVQBVAFaAegABAFUAVQBWQHoAAQBVAFUAVYB6AAEAVQBVAFUAegABAFUAVQBUwHoAAQBVAFTAVwB6AAEAVQBUwFaAegABAFUAVMBWQHoAAQBVAFTAVYB6AAEAVQBUwFUAegABAFUAVMBUwHoAAQBUwFcAVwB6AAEAVMBXAFaAegABAFTAVwBWQHoAAQBUwFcAVYB6AAEAVMBXAFUAegABAFTAVwBUwHoAAQBUwFaAVwB6AAEAVMBWgFaAegABAFTAVoBWQHoAAQBUwFaAVYB6AAEAVMBWgFUAegABAFTAVoBUwHoAAQBUwFZAVwB6AAEAVMBWQFaAegABAFTAVkBWQHoAAQBUwFZAVYB6AAEAVMBWQFUAegABAFTAVkBUwHoAAQBUwFWAVwB6AAEAVMBVgFaAegABAFTAVYBWQHoAAQBUwFWAVYB6AAEAVMBVgFUAegABAFTAVYBUwHoAAQBUwFUAVwB6AAEAVMBVAFaAegABAFTAVQBWQHoAAQBUwFUAVYB6AAEAVMBVAFUAegABAFTAVQBUwHoAAQBUwFTAVwB6AAEAVMBUwFaAegABAFTAVMBWQHoAAQBUwFTAVYB6AAEAVMBUwFUAegABAFTAVMBUwAmAaYBnAGSAYgBfgF0AWoBYAFWAUwBQgE4AS4BJAEaARABBgD8APIA6ADeANQAygDAALYArACiAJoAkgCKAIIAegByAGoAYgBaAFQATgHYAAIBVgHYAAIBVAHYAAMBVgFWAdgAAwFWAVQB2AADAVYBUwHYAAMBVAFWAdgAAwFUAVQB2AADAVQBUwHYAAMBUwFWAdgAAwFTAVQB2AADAVMBUwHZAAQBVgFWAVYB2QAEAVYBVgFUAdkABAFWAVYBUwHZAAQBVgFUAVYB2QAEAVYBVAFUAdkABAFWAVQBUwHZAAQBVgFTAVYB2QAEAVYBUwFUAdkABAFWAVMBUwHZAAQBVAFWAVYB2QAEAVQBVgFUAdkABAFUAVYBUwHZAAQBVAFUAVYB2QAEAVQBVAFUAdkABAFUAVQBUwHZAAQBVAFTAVYB2QAEAVQBUwFUAdkABAFUAVMBUwHZAAQBUwFWAVYB2QAEAVMBVgFUAdkABAFTAVYBUwHZAAQBUwFUAVYB2QAEAVMBVAFUAdkABAFTAVQBUwHZAAQBUwFTAVYB2QAEAVMBUwFUAdkABAFTAVMBUwArA1IDSAM+AzQDKgMgAxYDDAMCAvgC7gLkAtoC0ALGArwCsgKoAp4ClAKKAoACdgJsAmICWAJOAkQCOgIwAiYCHAISAggB/gH0AdQBzAHEAbwBtAGsASIAKwL6AvAC5gLcAtICyAK+ArQCqgKgApYCjAKCAngCbgJkAloCUAJGAjwCMgIoAh4CFAIKAgAB9gHsAeIB2AHOAcQBugGwAaYBnAF8AXQBbAFkAVwBVAFIADgC/ALyAugC3gLUAsoCwAK2AqwCogKYAo4ChAJ6AnACZgJcAlICSAI+AjQCKgIgAhYCDAICAfgB7gHk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AAAAAP/pAAAAAAAA/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+n+6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAA/7oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0v+YAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8z/mAAAAAD/owAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+oAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+w/9gAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/68AAAAAAAAAAP+jAAAAAP+AAAD/uwAAAAAAAAAA/5gAAAAA/5gAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAD/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAP/GAAAAAAAAAAAAAAAAAAD/mwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8j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AAAAAAAAAAD/u/91/vX/mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/af9e/14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/af9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+jAAAAAAAA/7sAAAAAAAAAAP/iAAAAAAAAAAAAAP+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7wAAAAD/owAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAA/17/aQAAAAAAAAAA/7oAAAAAAAAAAAAAAAD/mP/SAAAAAP+YAAAAAAAAAAAAAP+jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mAAAAAAAAAAA/68AAP87/6MAAAAAAAAAAP+YAAAAAAAAAAAAAAAA/3X/uwAAAAD/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAAAAAAD/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAP/2AAAAAAAAAAD/zwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/eAAAAAAAAAAAAXQAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3gAAAAAAAAAAAAAAAAAAAAAAAP+vAAD/uwAAAAAAAP+7AAD/rwAAAAAAAP8jACD/u//sAAAAAAAA/7sAAAAAAAAAAAAAAAD/gAAAAK7/uwAAAAAAAAAAAAAAAAAAAAAAAP+vAAAAAAAAAAAAAAAAAAD/mAAAAAAAAAAA/+IAAAAAAAD/7AAAAAAAAP+7AAAAAAAAAAD/0gAAAAAAAAAAAAAAAAAAAAAAAAAA/4z/owAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0gAAAAAAAAAAAAAAAP+j/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8YAAP+6AAAAAP+MAAAAAAAAAAAAAP+v/7oAAP+Y/+wAAAAAAAD/owAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAAAAAAAAAAAAAAAAAA/8YAAAAAAAAAAAAA/7r/r/+vAAAAAAAAAAD/8v/YAAAAAP/s/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/GAAD/0gAAAAAAAP91AAD/u/87/1IAAAAAAAAAAAAAAAD/uwAAAAAAAP91AAAAAAAAAAAAAP/GAAAAAAAAAAAAAP+w/0b/O/9SAAD+9QAAAAD/OwAAAAAAAP+AAAAAAP9M/6P/WwAAAAD/dQAAAAD+xgAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAA/6P/uwAAAAAAAAAA/6MAAAAAAAAAAAAAAAD/rwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9IAAAAAAAAAAAAAAAD/0v/DAAAAAAAAAAD/9QAAAAAAAAAAAAAAAP/SAAAAAAAAAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAP+vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK7/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xAAAAAD/u/+6/+AAAAAAAAD/0gAUAAD/xgAAAAAAAAAAAAAAAP/SAAAAAAAAAAAAAAAAAB4AAADRAAD/jAAA/0b/gP+wAAAAAAAAAAD/xAAAAAAAAAAAAAAAAP+A/68AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8YAAAAA/9IAAAAAAAAAKAAAAAAAAAAAAAAAAP+A/9IAAP+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAA/9IAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/bAAAAAP91AAAAAAAAAAAAAAAAAAD/mAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAP9pAAD/Xv+MAAAAAAAAAAAAAP/bAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mP+6AAD/jAAA/5gAAAAAAAD/uwAAAAD/mAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAP+YAAAAMgAAAAD/OwAA/yP/gAAAAAAAAAAAAAD/mAAAAAAAAAAAAAAAAP+7/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAAAAAAAAAP+YAAD/u/90AAD/mAAAAAAAAP+jAAAAAP+YAAD/gAAAAAAAAAAA/68AAAAAAAAAHgAA/4AAAAAAAK7/u/87AAD/GP87AAAAAAAAAAAAAP+YAAAAAAAAAAAAAP/s/7v/jAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAD/nAAAAAD/9QAAAAD/aQAAAAAAAAAAAAAAAAAAAAD/owAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/rwAA/t7/OwAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAARQAAAAAAaAAAAAAAAAAAAAAAAAC6AAAAggAAAAAAAAB4ACgAAAC6AAAAggCuAAAAAAAAAAABVAAAAAAAAAAAAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAAAArgAAAAAAAAAAAAAAugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+mAAAAAAAAAAAAAAAAAAD/u/+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAe/9gAAAAA/9j/dQAA/2n/UgAAAAsAAAAAAAAAAAAAAAAAAAAAAAD/dAAAAAD/df+MAAAAAAAAAAAAAAAAAAAAAAAA/2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAP+YAAD/I/87AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9GAAAAAAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+v/8QAAP9GAAD/zv+7AAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAAAAAAAP+vAAD/DP91AAAAAAAAAAAAAP+vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAD/gP/V/4z+6AAd/4z/rwAAAB3/YwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+IAAAAA/14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/q8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+6AAAAAAAAAAAAAAAA/7v/wwAAAAAAAAAA/7oAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAD/aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/aQAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7AAAAAA/zsAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/tIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAFAAAAAD/2AAA/1L/YAAAAAAAAAAA/8YAAAAAAAAAAP/iAAD/mP/SAAD/2/+YAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+n/XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAD/aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/dP+IAAAAAP/E/4j/iAAA/4j/iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/iAAAAAD/iAAA/4gAAAAAAAAAAAAAAAAAAP/EAAAAAAAAAAD/dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/iAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAD/uwAAAAAAAAAAAAD/ugAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAP+A/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAP+7AAD/Rv71AAAAAAAAAAD/rwAAAAAAAP+7AAAAAP+A/7sAAP+7/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/dQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/YAAAAAAAAP9qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8YAAP/1/28AAP/pAAAAAAAA/+n/7wAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAEUAAAAAAAAAAAAAAAAAAAAAAAAAUQAAAFEAAAAAAAAARQAAAAAAAAAAAEUAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAABFAFEARQAAAHQAAAC0AFEAAAAAAAAAAAAAAAAAAABdACIAAAAAAAAAAAAAAIsAAAAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/0YARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4z/mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mP+YAAD/IwAA/6MAAAAAAAD/rwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6AAAAAAAAAAD/OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAIAABAIYAAACIAJIAhgCUAKcAkQCpALYApQC4AO8AswDxAPMA6wD3APgA7gD6APsA8AD+AQAA8gEWARYA9QEYARgA9gEaARoA9wEdAR0A+AEtATcA+QE9AUYBBAFIAUgBDgFKAUoBDwFPAVABEAFSAVMBEgFYAVkBFAFdAWUBFgFqAW0BHwFvAXQBIwF3AYABKQGDAYwBMwGPAZwBPQGgAaABSwG8AbwBTAHXAdoBTQHmAekBUQH0AfQBVQH3AfgBVgACAIkAAQALAAUADAAMAAEADQASAAQAEwAfAAEAIAAkAAQAJQAoAAEAKQApABQAKgArAAEALAAvABQAMAAxAAEAMgAzACMANABBAAEAQgBMAAQATQBNAAEATgBOAAQATwBSAAEAUwBYABEAWQBbAA0AXABmAAkAZwBnABkAaABpAB0AagBqABIAawBuAAwAbwByABYAcwB9AAcAfgB/AAEAgACSAAIAlACUACQAlQCVAAEAlgCaAAIAmwCdAAEAngCfAA8AoAChAB4AogCkAA8ApQCmAB4ApwCnAA8AqQCpAA8AqgCrABgArACzAAEAtAC6AAMAuwDFAAIAxgDGAAMAxwDHAAIAyADLAAMAzADRAAsA0gDSAAEA0wDXAAYA2ADaAAgA2wDbAD4A3ADjAAgA5ADkAAoA5QDmABwA5wDnABoA6ADrAAoA7ADvABcA8ADwAAEA8QDxAAIA8gDyADoA8wDzACkA9wD3AC8A+AD4ADUA+gD6ADcA+wD7ADAA/QD9AC8A/gD+AD8A/wD/ADsBFwEXACEBGQEZACEBGwEbACEBHQEdAA4BLQEwABABMQExAA4BMgEyABUBMwEzAA4BNAE1ABABNgE2AA4BNwE3ABUBPQE9AC4BPgE+ADMBPwE/ACsBQAFAACwBQQFBACsBQgFCACwBQwFDACsBRAFEACwBRQFFAB8BRwFHACEBSQFJACEBSwFLACEBTwFPAEABUAFQABMBUgFSADkBUwFTAA4BWAFYABUBWQFZAA4BXQFdABUBXgFeACgBXwFfACUBYAFhACYBYgFiACgBYwFjACUBZAFlACIBagFsACABbQFvABsBcAFwAA4BcQFxADEBcgFyADIBcwFzADEBdAF0ADIBdwF6ABABewF7AA4BfAF8ABUBfQF9AA4BfgF/ABABgAGAAA4BgwGGABABhwGHAA4BiAGIABUBiQGJAA4BigGLABABjAGNAA4BjwGQAC0BkQGSACoBkwGTABUBlAGUADYBlQGVAB8BlgGWAC0BlwGXACoBmAGbACcBnAGcADQBowGjAD0BvAG8ADwB2wHdAA4B3gHfABAB9AH0ADgB9wH3AA0B+AH4AAMAAgCOAAEACgAFAAsACwAHAAwADAASAA0AEgAZABMAFAAEABUAHgAHAB8AHwAtACAAJAAdACkAKQAYACwALwAYADIAMwAIADQANQAVADYAOgAaAEIASwAEAEwATAAHAE0ATQAlAE4ATgAEAE8AUgAUAFMAWAARAFkAWwANAFwAZgAIAGcAZwAkAGgAaQAiAGoAagAXAGsAbgAMAG8AcgAeAHMAfAACAH0AfQAnAH4AhQABAIgAiABCAIkAkgABAJQAlAAfAJUAlQA6AJYAmgAcAJsAnQACAJ4AnwAJAKAAoQAmAKIApAAJAKUApgAmAKcApwAJAKkAqwAJAKwArQAWALQAtgACALgAugACALsAxgABAMcAxwAcAMgAywAKAMwA0QAOANIA0gASANMA1wAGANgA2gADANsA2wBFANwA4wADAOQA5AALAOUA5gAhAOcA5wAgAOgA6wALAOwA7wATAPEA8QABAPIA8gBDAPMA8wAzAPcA9wA7APgA+AAjAPoA+gA4APsA+wA8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AEUA8ABFAVAARQAEAFn/aQBa/2kAW/9pAff/aQAEAHf/nAB5/6EAfP9vAKP/xgABAYD/ugABAXD/uwASANn/mAEd/7sBMf+7ATP/uwE2/7sBU/+7AVn/uwFw/7sBe/+7AX3/uwGA/7sBh/+7AYn/uwGM/7sBjf+7Adv/uwHc/7sB3f+7ACIA2P+7ANn/uwDa/7sA2/+7ANz/uwDd/7sA3v+7AN//uwDg/7sA4f+7AOL/uwDj/7sA5/+AAOz/uwDt/7sA7v+7AO//uwEd/7sBMf+7ATP/uwE2/7sBU/+7AVn/uwFw/7sBe/+7AX3/uwGA/7sBh/+7AYn/uwGM/7sBjf+7Adv/uwHc/7sB3f+7AAIA2f+YAXD/XgAQAR3/rwEx/68BM/+vATb/rwFT/68BWf+vAXD/rwF7/68Bff+vAYf/rwGJ/68BjP+vAY3/rwHb/68B3P+vAd3/rwAQAR3/mAEx/5gBM/+YATb/mAFT/5gBWf+YAXD/mAF7/5gBff+YAYf/mAGJ/5gBjP+YAY3/mAHb/5gB3P+YAd3/mAACAY4AAAHzAEUAAQF1AAAAAQACAAAACAABAQAABAAAAHsGygbKBsoGygbKBsoGygbKBsoGygbEBsQGxAbEBsQGxAbEBsQGtgawBrAGngaeBnwGYgZ8BkwGHgbEBsQGxAbEBsQGxAbEBsQGxAbEBhAGxAXWBaQF1gawBrAGsAawBrAGsAawBrAGsAawBrAFggV4BXgFagVIBUgFSAVIBT4FPgU+BT4E9ATqBNwE0gTMBMYEzAS8BLwEtgSsBJoEmgSaBJAEigSKBIoEigSKBHgEeAR4BHIEeAR4BHgEeAR4BHgEeAR4BGAEWgRaBGAEYARgBGAD4AOGA2ADOgMgAt4CzASaAhICDAIMAgwCDAH6BsQB+gG4BLwAAgAeAAEACgAAAA0AFAAKAB8AHwASADIAOgATAEIASwAcAE0ATgAmAFkAcgAoAIcAhwBCAJQAlABDAKAAoQBEAKQApABGAKYApgBHAKsArQBIAK8AsABLALYAtgBNALwAvQBOANIA5gBQAOgA6wBlAPAA8ABpAToBOgBqATwBPABrAVIBUgBsAXABcABtAXYBdgBuAXwBfABvAY0BjgBwAZgBmwByAZ4BngB2AfQB9AB3AfYB+AB4ABAAMv8MADP/DAB3/68AfP+vAIr/mAC8/5gAvf+YANr/rwDb/y8A6f+7ATr/uwFP/5gBbP9SAW7/rwF1/14Bjv+MAAQAa/+7AGz/uwBt/7sAbv+7AAEBOv+vAC4ADf+vAA7/rwAP/68AEP+vABH/rwAS/68AIP+vACH/rwAi/68AI/+vACT/rwBC/68AQ/+vAET/rwBF/68ARv+vAEf/rwBI/68ASf+vAEr/rwBL/68ATP+vAE7/rwBZ/4wAWv+MAFv/jABc/68AXf+vAF7/rwBf/68AYP+vAGH/rwBi/68AY/+vAGT/rwBl/68AZv+vAGf/XgCqAMUAqwDFAOT/XgDo/14A6f9eAOr/XgDr/14B9/+MAAQAWf+MAFr/jABb/4wB9/+MABAAWf9eAFr/XgBb/14AZ/9pAGj/aQBp/2kAav+MAGv/RgBs/0YAbf9GAG7/RgBv/4AAcP+AAHH/gABy/4AB9/9eAAYAZ/+vAGr/owBr/5gAbP+YAG3/mABu/5gACQBZ/68AWv+vAFv/rwDk/5gA6P+YAOn/mADq/5gA6/+YAff/rwAJAFn/dQBa/3UAW/91AGf/uwBr/3UAbP91AG3/dQBu/3UB9/91ABYAWf+MAFr/jABb/4wAZ/+AAGj/rwBp/68Aa/9pAGz/aQBt/2kAbv9pAOT/uwDl/7sA5v+7AOj/uwDp/7sA6v+7AOv/uwGY/68Bmf+vAZr/rwGb/68B9/+MAB4AAf+vAAL/rwAD/68ABP+vAAX/rwAG/68AB/+vAAj/rwAJ/68ACv+vAAv/rwAy/68AM/+vAFn/jABa/4wAW/+MAGf/mABv/68AcP+vAHH/rwBy/68BUv+YAV7/jAFi/4wBZP8AAWX/AAFq/y8Ba/8vAWz/LwH3/4wAAQE6/7sABABb/4ABbP9pAXX/uwGO/14AAQBb/2kABABb/2kBdf+vAY3/uwGO/7sAAQF1/8YAAgFe/3UBYv91AAQAWf+YAFr/mABb/5gB9/+YAAIB8wBFAfQARQABAfMARQACAXX/UgGN/3UAAQCrAEUAAQChAFEAAgCqAEUAqwBFAAMAogBFAKQARQCrAEUAAgClAFEBjv/jABIAWQBFAFoARQBbAEUAnABRAJ4ARQCfAEUAoABRAKEAUQCiAEUAowBFAKQAUQClAFEApgBRAKcARQCpAEUAqgBRAKsAUQH3AEUAAgFw/7sBdf+AAAgAwv+MATr/gAFs/zsBcP+YAXX/LwF8/6MBjf+YAZ7/uwADAXD/owF1/4wBjf+YAAIBOv+YAXX/aQAIAHf/rwC9/6MBOv+YAUX/uwFw/68Bdf9pAY3/gAGO/14ADAB3/68AfP+vAIr/mAC8/5gAvf+YAOn/uwE6/7sBT/+YAWz/UgFu/68Bdf9eAY7/jAAOAHf/rwB8/68Aiv+YALz/mAC9/5gA2v+vANv/LwDp/7sBOv+7AU//mAFs/1IBbv+vAXX/XgGO/4wAAwE6/7sBa/+7AWz/OwALAVP/mAFf/7sBY/+7AWb/owFn/6MBcP+AAYD/rwGN/vUBkf+7AZL/uwGX/7sABQFm/6MBZ/+jAYD/uwGS/68Bl/+jAAYBZv+jAWf/owGA/6MBkf+jAZL/owGX/6MACAFT/5gBZv+jAWf/owFw/4ABgP+vAY3+9QGS/68Bl/+jAAQBcP+jAXX/dQGN/5gBnv+7AAEBjv+YAAMBa/+7AWz/UgGO/7sAAQGO/68AAQH3/4wACgFI/mAD+AdAAAMADQARABUAIQAnADEANQA7AEcAAAEhESEBFSE1Izc1IRUzAxEhEQcjNTMBESERIxUzNTMVIzUnFSE1IxUlFTM1MzUhFTMVESM1MycVITUjNScVITUjNTM1IRUzFQP4/VACsP4IAUDX1/7A2NgBQEDAwP8AAUDAQEDAQAFAQP8AwID+wIBAQIABQIDAAUCQkP7AcP5gCOD4AEBAf0FAAYD/AAEAwIABwP8AAQCAQIDAgEDgoIBAoEBAYAEgYEDgQKCAQEBgQEBgAAACADQAAAVRBdIADQARAAAzATMBIwEmJiczBgYHARM1IRU0Ah3cAiTI/sQdTTckNk8a/s1GAv0F0vouA3RS9b7A+Uz8jAGgpqYA//8ANAAABVEHdgImAAEAAAAHAfsAZQF0//8ANAAABVEHaQImAAEAAAAHAdMAvQF0//8ANAAABVEHigImAAEAAAAHAdEBJAF0//8ANAAABVEHigImAAEAAAAHAdABywF0//8ANAAABVEHigImAAEAAAAHAf0BGwF0//8ANAAABVEH+gImAAEAAAAHAgMBkQAA//8ANAAABVEHRwImAAEAAAAHAdIA2QF0//8ANAAABVEHigImAAEAAAAHAf8BPQF0//8ANP5MBZUF0gImAAEAAAAHAgcDlQAAAAIANAAAB20F0gAPABMAADMBIRUhESEVIREhFSERIwETNSEVNALMBGL9NAKe/WIC1/xzXf2ChgKuBdKo/hSo/hKoBVf6qQGgnp4AAwC0AAAEyAXSABMAHQAnAAAzESEyFhYVFAYGBxUeAhUUBgYjJSEyNjU0JiYjITUhMjY2NTQmIyG0AhCcy2NEb0FGi11n3LD+nQFerpNMi2D+mAFIUIJMh5H+sgXSa7NtYH1KEg4EWKJ1cLRpqIZhS35MoD9zTWGGAAABAHr/7AVoBeYAJQAABSIkAjU0EiQzMh4CFyMuAyMiBgIVFBIWMzI+AjczDgMDD7/+1aurASu/ccmgaxS+EE1vhkmG2H5/2IVJhm9NEL4Ta6DJFLkBV+ztAVe6Qn+1c010UCiI/vm/vv75hylPdUxytIBD//8Aev5TBWgF5gImAA0AAAAHAgECBP/1//8Aev/sBWgHigImAA0AAAAHAdACGAF0//8Aev/sBWgHigImAA0AAAAHAf0BaAF0//8Aev/sBWgHdwImAA0AAAAHAfwCGAF0//8Aev/sBWgHigImAA0AAAAHAf4BaAF0AAIAtAAABUwF0gAVABkAACEhNSEyNhI1NAImIyE1ITIEEhUUAgQBESMRAoX+mAFctu92deet/ooBg9oBNaWm/sL+Cr6oiwEEtbMBAYqosv6z5+n+sbQF0vouBdL//wC0AAAFTAeKAiYAEwAAAAcB/gDEAXQAAQC0AAAESQXSAAsAADMRIRUhESEVIREhFbQDjP0yAp39YwLXBdKo/hqo/gyo//8AtAAABEkHigImABUAAAAHAdEA4QF0//8AtAAABEkHigImABUAAAAHAdABiAF0//8AtAAABEkHigImABUAAAAHAf0A2AF0//8AtAAABEkHdgImABUAAAAHAfsAIgF0//8AtAAABEkHRwImABUAAAAHAdIAlgF0//8AtAAABEkHigImABUAAAAHAf8A+gF0//8AtAAABEkHdwImABUAAAAHAfwBiAF0//8AtP5MBIwF0gImABUAAAAHAgICjgAA//8AtAAABEkHigImABUAAAAHAf4A2AF0AAEAtAAABDkF0gAJAAAzESEVIREhFSERtAOF/TkCg/19BdKo/gKo/XwAAAEAev/sBXgF5gAnAAAFIiQCNTQSJDMyHgIXIy4DIyIGAhUUEhYzMjY2NRchNSEVFAIEAxXH/tSoqAEov3bNomsUxBdMaYRPg9Z+f9qJfsBrOf5FAjye/u0UugFX6+0BV7pGgrNsSHJSK4f++cC+/vqIa8WGC6ajuf7wlf//AHr/7AV4B4oCJgAgAAAABwH9AWIBdP//AHr/7AV4B4oCJgAgAAAABwH/AYQBdP//AHr/7AV4B3cCJgAgAAAABwH8AhIBdP//AHr+EwV4BeYCJgAgAAAABwHPAegAAAABALQAAAU+BdIACwAAMxEzESERMxEjESERtL4DDr6+/PIF0v18AoT6LgKm/Vr//wC0AAAFPgeKAiYAJQAAAAcB/QFRAXQAAgBiAAAF1AXSAAMADwAAARUhNRMRMxEhETMRIxEhEQXU+o54vgMOvr788gSYmJj7aAXS/XwChPouAqb9WgABALQAAAFyBdIAAwAAAREjEQFyvgXS+i4F0gD////KAAACXAd2AiYAKAAAAAcB+/62AXT//wALAAABcgeKAiYAKAAAAAcB0f91AXT//wC0AAACGQeKAiYAKAAAAAcB0AAcAXT////SAAACVAeKAiYAKAAAAAcB/f9sAXT////wAAACNgdpAiYAKAAAAAcB0/8OAXT////+AAACKAdHAiYAKAAAAAcB0v8qAXT////xAAACNQeKAiYAKAAAAAcB//+OAXT//wAV/kwBtQXSAiYAKAAAAAYCArcA//8AlgAAAZEHdwImACgAAAAHAfwAHAF0AAEAZP/sA90F0gARAAAFIiY1NTMVFBYzMjY1ETMRFAYCIcX4voxzcoy+9xTo1lBQiI+PiAQo+9jW6P//AGT/7AS/B4oCJgAyAAAABwH9AdcBdAADALQAAAUnBdIACQAQABQAAAE1PgI3ATMBJwERMxEDFxEhATcBATYzZWo4Ab35/YQK/hS+AwMC1P3ldgKGAarLRoB6PAHh/VYB/NcF0v4C/r9d/coC9pT8dv//ALT+EwUnBdICJgA0AAAABwHPAaMAAAABALQAAAQkBdIABQAAMxEzESEVtL4CsgXS+taoAP//ALQAAAQkB4oCJgA2AAAABwHQABwBdP//ALT+EwQkBdICJgA2AAAABwHPAU4AAP//ALQAAAQkBhgCJgA2AAAABwIEAagAAP//ADIAAARgBdIAJgA2PAAABgIPMugAAQC0AAAGhgXSAC0AADMRIQEeAxcjPgM3ASERIxE0PgI3Mw4DBwEjAS4DJzMeAxURtAEOAW8NISUiDSoOIiUiDQFqAQ+7AQMDARAVLy0oDv6zpf6uDiYtMBkSAgMCAgXS/FQhY3RzMS5xdWYiA6z6LgNTLnaChj9Fj4VuJPytA1Mja4ORSTiChXsx/K0AAAEAtAAABVMF0gAbAAAzETMBHgIXIy4CNREzESMBLgInMx4CFRG04AJeGERPJhsJCAK+4v3kJUtgRyMFCAUF0vxHJXSSU1adhC4DkvouA1A7fat+b7yMKPyu//8AtAAABVMHaQImADwAAAAHAdMA/wF0//8AtAAABVMHigImADwAAAAHAdACDQF0//8AtP4TBVMF0gImADwAAAAHAc8B5wAA//8AtAAABVMHigImADwAAAAHAf4BXQF0AAIAtP5VBV4F0gAPACsAAAE1FhYzMjY1ETMRFAYjIiYBETMBHgIXIy4CNREzESMBLgInMx4CFRED0xEfC1M/vpSPIDn80uACXhhETyYbCQgCvuL95CVLYEcjBQgF/l6fAwIxNAEj/tV8hAUBpgXS/EcldJJTVp2ELgOS+i4DUDt9q35vvIwo/K4AAAIAev/sBaQF5gAPAB8AAAUiJAI1NBIkMzIEEhUUAgQnMjYSNTQCJiMiBgIVFBIWAxC//tWsrAErv78BKqur/ta/hdd/f9eFhth/f9gUuQFX7O0BV7q6/qnt7P6pubCHAQe+wAEHh4j++b++/vqIAP//AHr/7AWkB3YCJgBCAAAABwH7ALMBdP//AHr/7AWkB2kCJgBCAAAABwHTAQsBdP//AHr/0gWkBgACJgBCAAAABwIFAMIAAP//AHr/7AWkB4oCJgBCAAAABwHRAXIBdP//AHr/7AWkB4oCJgBCAAAABwHQAhkBdP//AHr/7AWkB4oCJgBCAAAABwH9AWkBdP//AHr/7AWkB0cCJgBCAAAABwHSAScBdP//AHr/7AWkB4oCJgBCAAAABwH/AYsBdP//AHr/7AWkB4oCJgBCAAAABwHKASgBdAACAHoAAAeEBdIAFQAhAAAhIiQCNTQSJDMhFSEiBgIVFBIWMyEVIxEhFSERIRUhESEVAxfE/tKrqwEuxAEg/uCQ2np62pABIEgDjP0yAp39YwLXuwFP3uEBT7qojv79sa7+/Y+oBdKo/hqo/gyoAAEAtAAABK4F0gAXAAAzESEyFhYVFAYGIyE1ITI2NjU0JiYjIRG0Af6u4W1t4K7+lwFgdpBBQZF3/soF0n/WhYXYgKdRjVhYi1D61QADAHr/dAWkBeYABwAXACcAAAEzFxcTIycnByIkAjU0EiQzMgQSFRQCBCcyNhI1NAImIyIGAhUUEhYC0samKvjGoiq+v/7VrKwBK7+/ASqrq/7Wv4XXf3/XhYbYf3/YAdLaOv622jiauQFX7O0BV7q6/qnt7P6pubCHAQe+wAEHh4j++b++/vqIAAACALQAAAToBdIAFwAbAAAzESEyFhYVFAYGIyE1ITI2NjU0JiYjIREhATMBtAH+ruFtbeCu/msBjHaPQkKQd/7KApr+mNYBbgXSd9CFhcxzqUV/V1mDSfrVAp/9YQD//wC0AAAE6AeKAiYATwAAAAcB0AGUAXT//wC0/hME6AXSAiYATwAAAAcBzwGIAAD//wC0AAAE6AeKAiYATwAAAAcB/gDkAXQAAQB0/+YErgXmADIAAAUiJiYnMx4CMzI2NjU0JiYnJyYmNTQ2NjMyFhYXIyYmIyIGBhUUFhYXFx4DFRQGBgKRoe2GCcMIYplXZaFeUYZQtLTIiOiQk+KDBLoNtoVgkVBhhTaVPJGEVX/yGmi7fVRtNUJ4T0haOhYzM76Ufr1oaLNxbXc/bUZOXzUPKRA4XY9oesRy//8AdP/mBK4HigImAFMAAAAHAdABmQF0//8AdP/mBK4HigImAFMAAAAHAf0A6QF0//8AdP5eBK4F5gImAFMAAAAHAgEBiAAA//8AdP/mBK4HigImAFMAAAAHAf4A6QF0//8AdP4TBK4F5gImAFMAAAAHAc8BdQAAAAEAYgAABMgF0gAHAAATNSEVIREjEWIEZv4tvgUqqKj61gUq//8AYv5eBMgF0gImAFkAAAAHAgEBjQAA//8AYgAABMgHigImAFkAAAAHAf4A7wF0AAEAtP/oBUAF0gAVAAAFIiQmNREzERQWFjMyNjY1ETMRFAYEAvuw/vmQvl+wenqvXr6Q/vsYivCZA9f8OGunYGCnawPI/CmZ8Ir//wC0/+gFQAeKAiYAXAAAAAcB0QFdAXT//wC0/+gFQAeKAiYAXAAAAAcB0AIEAXT//wC0/+gFQAeKAiYAXAAAAAcB/QFUAXT//wC0/+gFQAd2AiYAXAAAAAcB+wCeAXT//wC0/+gFQAdpAiYAXAAAAAcB0wD2AXT//wC0/+gFQAdHAiYAXAAAAAcB0gESAXT//wC0/+gFQAeKAiYAXAAAAAcB/wF2AXT//wC0/+gFQAf6AiYAXAAAAAcCAwHKAAD//wC0/+gFQAeKAiYAXAAAAAcBygETAXT//wC0/kwFQAXSAiYAXAAAAAcCCAINAAAAAQA0AAAFUQXSAA0AACEBMwEWFhcjNjY3ATMBAlj93MgBOxtRNiU2UBoBM8r94gXS/IxM/rq/+UwDdPouAAABADQAAAeuBdIAJQAAIQEzEx4CFyM+AjcTMxMeAhcjPgI3EzMBIwEmJiczBgYHAwHK/mrC7BMiIA4XDyAkE/HY7xQjIg8aDyAkEuvE/mjd/wAZLhYoFiod/wXS/G5Jl5tSUpuXSQOS/G5Jl5tSUpuXSQOS+i4DsFzZjobTavxQ//8ANAAAB64HigImAGgAAAAHAf0CSgF0AAEAOQAABTwF0gAfAAAzARUBMxMeAhcjPgI3EzMBNQEjAS4CJzMOAgcBOQJH/drc1zA9MyAhIDM/MNvX/dsCQdv++yo6Mh8pHjM7LP75A0GNAx7+xEZgXEA/XGFGATz86oz8uAF6PllZPjtZWz/+hgABADQAAAU6BdIADwAAIREBMwEWFhcjNjY3ATMBEQJY/dzcAScyTSlMKU4vASbb/dwCYgNw/h9Rk3BylU0B4fyQ/Z4A//8ANAAABToHigImAGsAAAAHAdABwAF0//8ANAAABToHigImAGsAAAAHAf0BEAF0//8ANAAABToHdgImAGsAAAAHAfsAWgF0AAEAegAABI4F0gAXAAAzNQE2NjcXBgYjITUhFQEGBgcnNjYzIRWCApotZjMVXLpc/fUEDP1wMGs1FVy3XAIOhgPfQ4dCPgYDqIj8MUeORT4GA6gA//8AegAABI4HigImAG8AAAAHAdABjQF0//8AegAABI4HdwImAG8AAAAHAfwBjQF0//8AegAABI4HigImAG8AAAAHAf4A3QF0AAIAWv/mA+AEbAAnADkAAAUiJiY1ND4CNz4CNTU0JiYjIgYGByc+AjMyHgIVESM1Iw4CJzI2NjU1DgMHDgIVFBYWAddqrWZMf5pOZH49NGhOUHJHEq0rkrBWOI+FV7EME1SGQGSKSAtKX1kaQXFEPGgaUJpuYHhFIgoNDiIpBkZhNDJLJzlmczAbUJ2D/R+YJ1M4n059RJsNFRALAwgnS0A6Tij//wBa/+YD4AYWAiYAcwAAAAcB0AE3AAD//wBa/+YD4AYWAiYAcwAAAAcB/wCpAAD//wBa/+YD4AYWAiYAcwAAAAcB/QCHAAD//wBa/+YD4AYCAiYAcwAAAAYB+9EA//8AWv/mA+AGFgImAHMAAAAHAdEAkAAA//8AWv/mA+AF0wImAHMAAAAGAdJFAP//AFr+VgQjBGwCJgBzAAAABwIJAiUAAP//AFr/5gPgBpwCJgBzAAAABwIAAP0AAP//AFr/5gPgBfUCJgBzAAAABgHTKQAAAQBa/+YG8wRsAFQAAAUiJiY1ND4CMyEHNiYmIyIGBhUVFBYWMzI2NjcXDgIjIiYmJxM+AjMyHgIVFSEiBgYVFBYzMjY2NRE0JiYjIgYGByc+AjMyFhYXAyMOAwHYaq5mVoyoUgRUVA5CjmVlkk5WmmVDbE8Vrxp8uHR6wXwVHyV1n2RZrIxT+0VPh1ODZGSJRzNnTlByRxKtK5KwVkGYgyAjFBFSdIoaUJpuYIBLIT9trmZjn1tlfKxaJk05LVWBSVKSYAI1UnhBO4PWm0spVEBXWU59RAFfRWI0MksnOWZzMCNra/1YL1M/JAACAJ7/6AR+BdIAFgAmAAAFIiYmJyMVIxEzETM+AjMyFhIVFAIGJzI2NjU0JiYjIgYGFRQWFgKlaoJGExSutA4TRIBtjNV5eNWnaY1HRo1qZ4xHSI0YSV0frQXS/dkeW0iM/v2xsv78jqFxv3V0u25ouXx8vmsAAgCe/l4EfgXSABYAJgAABSImJicjESMRMxEzPgIzMhYSFRQCBicyNjY1NCYmIyIGBhUUFhYCpWqCRhMOtLQOE0SAbYzVeXjVp2mNR0aNameMR0iNGEldH/2xB3T92R5bSIz+/bGy/vyOoXG/dXS7bmi5fHy+awAAAQBo/+gELgRsACUAAAUiJgI1NBI2MzIeAhcHLgMjIgYGFRQWFjMyPgI3Fw4DAmWY5YCA5ZhRkHdWF60MMkdcN3CQRkaQcDheSTIMrBZXeJIYkAEErK8BBZAqT3NJMStINR11vnBuvXQeN0wtMUt1Uyv//wBo/l4ELgRsAiYAgAAAAAcCAQFbAAD//wBo/+gELgYWAiYAgAAAAAcB0AFuAAD//wBo/+gELgYWAiYAgAAAAAcB/QC+AAD//wBo/+gELgYDAiYAgAAAAAcB/AFuAAD//wBo/+gELgYWAiYAgAAAAAcB/gC+AAAAAgBo/+gESAXSABYAJgAABSImAjU0EjYzMhYWFzMRMxEjNSMOAicyNjY1NCYmIyIGBhUUFhYCQYvWeHnWi22ARRIOtK4UEkeBUGaMSEeMZ2qNRkeOGI4BBLKxAQOMSFseAif6Lq0fXUmha758fLlobrt0db9x//8AaP/oBNwF0gImAIYAAAAHAgsBygIv//8AaP/oBYQGGAAmAIYAAAAHAgQECgAAAAEAaP/oBEYEbAAnAAAFIiYCNTQSNjMyHgIVFSE1IQc0JiYjIgYGFRUUFhYzMjY2NxcOAgJ0out/fOOYWa2NVPycAwNURYhlZZBMVptmQmxOFa4afLcYkAECrKwBBpQ7g9abS5g4bqthY59bZXytWSZNOTBUgEgA//8AaP/oBEYGAgImAIkAAAAGAfv+AP//AGj/6ARGBhYCJgCJAAAABwHRAL0AAP//AGj/6ARGBhYCJgCJAAAABwHQAWQAAP//AGj/6ARGBhYCJgCJAAAABwH9ALQAAP//AGj/6ARGBdMCJgCJAAAABgHScgD//wBo/+gERgYWAiYAiQAAAAcB/wDWAAD//wBo/+gERgYDAiYAiQAAAAcB/AFkAAD//wBo/kwERgRsAiYAiQAAAAcCCgIuAAD//wBo/+gERgYWAiYAiQAAAAcB/gC0AAAAAQDoAAACzgYYABAAADMRNDY2MzIWFwcmJiMiBhUR6FuSUUBUFDIOLSZTTATzYYJCFQmaBQxVUfs1AAIAFAAAAtYGGAADABQAAAEVITUTETQ2NjMyFhcHJiYjIgYVEQKm/W7cW5JRQFQUMg4tJlNMBF6amvuiBPNhgkIVCZoFDFVR+zX//wCeAAAChAYYAAYAk7YAAAIAaP5GBEoEbAAlADUAAAEiJiYnNx4CMzI2NTUjDgIjIiYmNTQ2NjMyFhYXMzUzERQGBgMyNjY1NCYmIyIGBhUUFhYCY3y1eCOSGEd5YoatERNFgWyG1nx614tsgUYTEa+C3Y1mjEhHjGdqjkdIjv5GP2g9XiBON4CK4CBYQ3/0r63/jEdcHrP7hZC3VgJsXa96d7VnbbZwc7Bj//8AaP5GBEoGFgImAJYAAAAHAf0AtgAA//8AaP5GBEoGFgImAJYAAAAHAf8A2AAA//8AaP5GBEoGAwImAJYAAAAHAfwBZgAA//8AaP5GBEoGdwImAJYAAAAHAhABaAAAAAEAngAABB0F0gAWAAABESMRMxEjNjYzMhYWFREjETQmIyIGBgFStLQfM71/catftYd1UIBKAp79YgXS/X2bgl27jv06AreBkkaGAP//AAkAAAQdBdICJgCbAAAABwIL/30CL////7cAAAQdB4oCJgCbAAAABwH9/1EBdP//AHwAAAF3BgMCJgCfAAAABgH8AgAAAQCeAAABUgReAAMAADMRMxGetARe+6L///+wAAACQgYCAiYAnwAAAAcB+/6cAAD////WAAACHAX1AiYAnwAAAAcB0/70AAD////xAAABUgYWAiYAnwAAAAcB0f9bAAD//wCeAAAB/wYWAiYAnwAAAAYB0AIA////uAAAAjoGFgImAJ8AAAAHAf3/UgAA////5AAAAg4F0wImAJ8AAAAHAdL/EAAA////1wAAAhsGFgImAJ8AAAAHAf//dAAA////9f5MAZUGAwImAJ8AAAAmAgKXAAAGAfwCAAAB/+b+XgFTBF4ADAAAEzMRFgYGIyM1MzI2NZ21AUqSbSQhTkgEXvtSaphQpllTAP//AHz+XgNmBgMAJgCfAAAAJgH8AgAAJwCoAfAAAAAHAfwB8QAA////5v5eAXYGAwImAKgAAAAGAfwBAP///7f+XgI5BhYCJgCoAAAABwH9/1EAAAADAJ4AAARIBdIABgAKAA4AAAE1MwEzASMBETMRIQE3AQFHIQHe3/37FP6StAIP/lSAAhMBkt8B7f3t/bUF0vouAiN//V7//wCe/hMESAXSAiYArAAAAAcBzwEoAAAAAQCeAAABUgXSAAMAAAERIxEBUrQF0vouBdIA////9AAAAfoF0gImAK4AAAAGAg70AP//AJ4AAALgBdIAJgCuAAAABwFrATICb///AJ4AAAH+B4oCJgCuAAAABwHQAAEBdP//AEj+EwFSBdICJgCuAAAABgHP2gD//wCeAAAClQYYACYArgAAAAcCBAEbAAAAAQCeAAAGZARyACkAADMRMxcjPgIzMhYXIz4CMzIWFhURIxE0JiMiBgYVESMRNCYjIgYGFRGerwEOF2OFSHqXFhgUapdZYaBftIhaS207tHxfQXNGBF76W3c8lnpUekJUqoL9DgLteWg/bkf9JgL/XXI9eFn9QAAAAQCeAAAEHARsABYAAAERIxEzEyM2NjMyFhYVESMRNCYjIgYGAVK0rQEZM71/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";
|
|
33774
|
+
var INTER_700 = "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BioAXgYqAF4GKgBeCCQAXgUvAIcGNwBeBUEAhwVBAIcFQQCHBUEAhwU9AFUFPQBVBT0AVQU9AFUFPQBVBT0AVQVXAEsFVwBLBVcASwXbAIcF2wCHBdsAhwXbAIcF2wCHBdsAhwXbAIcF2wCHBdsAhwXbAIcF2wCHBfkAMQhNADEITQAxBegAMwXZADEF2QAxBdkAMQXZADEFUABwBVAAcAVQAHAFUABwBKUARASlAEQEpQBEBKUARASlAEQEpQBEBKUARASlAEQEpQBEBKUARAdIAEQFCwCABQsAgAS1AFEEtQBRBLUAUQS1AFEEtQBRBLUAUQULAFEFCwBRBgkAUQTEAFEExABRBMQAUQTEAFEExABRBMQAUQTEAFEExABRBMQAUQTEAFEDHQDOAy8AFALCAIAFDgBRBQ4AUQUOAFEFDgBRBQ4AUQT7AIAE+//3BPv/fgIrAHECKwCAAiv/ogIr/7oCK//gAisAgAIr/4ICK//0Aiv/vQIrAAMCK//OBFcAcQIr/84CK/+CBKQAgASkAIACKwCAAiv/7gOYAIACKwCAAisAMQMpAIAHTQCABPsAgAT7AIAE+wCABPsAgAT7AIAE+wCABOgAUQToAFEE6ABRBOgAUQToAFEE6ABRBOgAUQToAFEE6ABRBOgAUQfnAFEFCwCABQsAUQNCAIADQgCAA0IAMwNCADUEewBOBHsATgR7AE4EewBOBHsATgR7AE4FQgCHAu4AFALuABQC7gAUA4gAFALuABQE+wCABPsAgAT7AIAFBgCABPsAgAT7AIAE+wCABPsAgAT7AIAE+wCABPsAgAT7AIAEzAAfBs0AHwbNAB8EpAAqBNEAHwTRAB8E0QAfBNEAHwSVAHgElQB4BJUAeASVAHgFWgCCBMsAUQU9AFUEtQBRBJAAHgUcAF4FegA6BWUAXgNzAF0FCgBuBSoAYwVpAGUE+gBdBTIAXgSnAEsFNQBeBTIAXgUsAFwFLACxBSwAgQUsAF8FLABBBSwAcgUsAFsFLACNBSwAWQUsAFsCJgA5AiYAZwImAGcCJgBnAiYAOQMgAKcDIABhAyAAHQMgAGEDIADWAyAAYQMgAKcDIABhAyAAHQMgAGEDIADWAyAAYQUsAUIFLAFCBSwAmAUsAJgFLACYBSwAmAUsAKMFLACjBSwAlQUsAIkFLACcBSwAmAUsAHsFLAB3BSwA+QUsAJgFLACYBSwAmAUsAJgFLACjBSwAowUsAJUFLACJBSwAnAUsAJgFLAB7BSwAdwUsAJsCJgAAAiYAAAVgAFECtACpArQAqQR6AE8EegBhAwQAqQMEAEMDBAC2AwQAZgPAAIwDwABmCCEAXgMEAKkDBABDAwQAtgMEAGYDwACMA8AAZgghAF4FMQAWBhgAhwMbABwC+QDuArYA1QMbABwDvgCMBAAAAAUsAEYIAAAACAAAAAPLAKUDvgCMBAAAAAUsAEYIAAAAA8sApQJ8AKUCfAClArYAygRqAMoEUgClBEEApQQUAHgCTwB4AnwAUwRBAFMCMgB1BGEAdQKsAHcCrACpCAQAqQKsAKkCrACpAr4AdwKsAKkDcwBZA3MASwVIAFkFSABLBW4ApgVuAM0FbgC5BW4AuQVuAMUFbgDFBW4AtwVuAKsFbgC9BW4AuQVuAJ0FbgCZBW4ApgVuAM0FbgC5BW4AuQVuAMUFbgDFBW4AtwVuAKsFbgC9BW4AuQVuAJ0FbgCZBW4A1wPPAAAEqgCgBKoAoAPlAEUEeQCgBWMAtwVMAGEHUACoBR8AUgOtAHMDtgA4A+sAQgHKAEcDsgBPBMoATwSMAF4H2ABTBVsAhAKqAG8DrgBhA8YAYAGv/nADOQBEAi0AUAL5AEcDGQBLAzEATAMcAGkDIABEAsUAOQMjAEQDIABEAyYAcgMnAHcB5wBsAecALQIjAIcCIwBgAzkARAItAFAC+QBHAxkASwMxAEwDHABpAyAARALFADkDIwBEAyAARAMmAHIDJwB3AecAbAHnAC0CIwCHAiMAYAcNAFAGxABQB1wASwggALoLHgC6AuwAqQRtAKoC7AChBPsBCgODAKAC6gDsAAAANwAAAKkAAAChAAAAoAAAAKcB5QAAAeUAAAFCAAAHogDKCroAyhV0AMoKugDKB6IBAAq6AQAVdAEAB6IBAAq6AQAKugDKDgAAygq6AMoOAADKBz4Aygc+AMoHogDKCroAyhV0AMoKugDKB6IBAAq6AQAVdAEAB6IBAAq6AQAKugDKDgAAygq6AMoOAADKBhQAFAYUABQG6wCHBJ8AiwVXAEsEsQCAA6EAjwOhAI8AAAEKAAAAggAAAEMAAABDAAAAXQAAAGMAAADsAAAAQQAAAGMCEQCfBO0AGATnAFICHQAsA2kAQAIcAEECVgAx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CkwKQgo4Ci4KJAoaChAKBgn8CfIJ6AneCdQJygnACbYJrAmiCZgJjgmECXoJcAlmCVwJUglICT4JNAkqCSAJFgkMCQII+AjuCOQI2gjQCMYIvAiyCKgIngiUCIoIgAh2CGwIYghYCE4IRAg6CDAIJggcCBIICAf+B/QH6gfgB9YHzAfCB7gHrgekB5oHkAeGB3wHcgdoB14HVAdKB0AHNgcsByIHGAcOBwQG+gbwBuYG3AbSBsgGvga0BqoGoAaWBowGggZ4Bm4GZAZaBlAGRgY8BjIGKAYeBhQGCgYABfYF7AXiBdgFzgXEBboFsAWmBZwFkgWIBX4FdAVqBWAFVgVMBUIFOAUuBSQFGgUQBQYE/ATyBOgE3gTUBMoEwAS2BKwEogSYBI4EhAR6BHAEZgRcBFIESAQ+BDQEKgQgBBYEDAQCA/gD7gPkA9oD0APGA7wDsgOoA54DlAOKA4ADdgNsA2IDWANOA0QDOgMyAyoDIgMaAxIDCgMCAvoC8gLqAuIC2gLSAsoCwgK6ArICqgKiApoCkgKKAoICegJyAmoCYgJaAlICSgJCAjoCMgIqAiICGgIUAg4CCAICAecAAgFcAecAAgFaAecAAgFWAecAAgFUAecAAwFcAVwB5wADAVwBWgHnAAMBXAFZAecAAwFcAVYB5wADAVwBVAHnAAMBXAFTAecAAwFaAVwB5wADAVoBWgHnAAMBWgFZAecAAwFaAVYB5wADAVoBVAHnAAMBWgFTAecAAwFZAVwB5wADAVkBWgHnAAMBWQFZAecAAwFZAVYB5wADAVkBVAHnAAMBWQFTAecAAwFWAVwB5wADAVYBWgHnAAMBVgFZAecAAwFWAVYB5wADAVYBVAHnAAMBVgFTAecAAwFUAVwB5wADAVQBWgHnAAMBVAFZAecAAwFUAVYB5wADAVQBVAHnAAMBVAFTAecAAwFTAVwB5wADAVMBWgHnAAMBUwFZAecAAwFTAVYB5wADAVMBVAHnAAMBUwFTAegABAFcAVwBXAHoAAQBXAFcAVoB6AAEAVwBXAFZAegABAFcAVwBVgHoAAQBXAFcAVQB6AAEAVwBXAFTAegABAFcAVoBXAHoAAQBXAFaAVoB6AAEAVwBWgFZAegABAFcAVoBVgHoAAQBXAFaAVQB6AAEAVwBWgFTAegABAFcAVkBXAHoAAQBXAFZAVoB6AAEAVwBWQFZAegABAFcAVkBVgHoAAQBXAFZAVQB6AAEAVwBWQFTAegABAFcAVYBXAHoAAQBXAFWAVoB6AAEAVwBVgFZAegABAFcAVYBVgHoAAQBXAFWAVQB6AAEAVwBVgFTAegABAFcAVQBXAHoAAQBXAFUAVoB6AAEAVwBVAFZAegABAFcAVQBVgHoAAQBXAFUAVQB6AAEAVwBVAFTAegABAFcAVMBXAHoAAQBXAFTAVoB6AAEAVwBUwFZAegABAFcAVMBVgHoAAQBXAFTAVQB6AAEAVwBUwFTAegABAFaAVwBXAHoAAQBWgFcAVoB6AAEAVoBXAFZAegABAFaAVwBVgHoAAQBWgFcAVQB6AAEAVoBXAFTAegABAFaAVoBXAHoAAQBWgFaAVoB6AAEAVoBWgFZAegABAFaAVoBVgHoAAQBWgFaAVQB6AAEAVoBWgFTAegABAFaAVkBXAHoAAQBWgFZAVoB6AAEAVoBWQFZAegABAFaAVkBVgHoAAQBWgFZAVQB6AAEAVoBWQFTAegABAFaAVYBXAHoAAQBWgFWAVoB6AAEAVoBVgFZAegABAFaAVYBVgHoAAQBWgFWAVQB6AAEAVoBVgFTAegABAFaAVQBXAHoAAQBWgFUAVoB6AAEAVoBVAFZAegABAFaAVQBVgHoAAQBWgFUAVQB6AAEAVoBVAFTAegABAFaAVMBXAHoAAQBWgFTAVoB6AAEAVoBUwFZAegABAFaAVMBVgHoAAQBWgFTAVQB6AAEAVoBUwFTAegABAFZAVwBXAHoAAQBWQFcAVoB6AAEAVkBXAFZAegABAFZAVwBVgHoAAQBWQFcAVQB6AAEAVkBXAFTAegABAFZAVoBXAHoAAQBWQFaAVoB6AAEAVkBWgFZAegABAFZAVoBVgHoAAQBWQFaAVQB6AAEAVkBWgFTAegABAFZAVkBXAHoAAQBWQFZAVoB6AAEAVkBWQFZAegABAFZAVkBVgHoAAQBWQFZAVQB6AAEAVkBWQFTAegABAFZAVYBXAHoAAQBWQFWAVoB6AAEAVkBVgFZAegABAFZAVYBVgHoAAQBWQFWAVQB6AAEAVkBVgFTAegABAFZAVQBXAHoAAQBWQFUAVoB6AAEAVkBVAFZAegABAFZAVQBVgHoAAQBWQFUAVQB6AAEAVkBVAFTAegABAFZAVMBXAHoAAQBWQFTAVoB6AAEAVkBUwFZAegABAFZAVMBVgHoAAQBWQFTAVQB6AAEAVkBUwFTAegABAFWAVwBXAHoAAQBVgFcAVoB6AAEAVYBXAFZAegABAFWAVwBVgHoAAQBVgFcAVQB6AAEAVYBXAFTAegABAFWAVoBXAHoAAQBVgFaAVoB6AAEAVYBWgFZAegABAFWAVoBVgHoAAQBVgFaAVQB6AAEAVYBWgFTAegABAFWAVkBXAHoAAQBVgFZAVoB6AAEAVYBWQFZAegABAFWAVkBVgHoAAQBVgFZAVQB6AAEAVYBWQFTAegABAFWAVYBXAHoAAQBVgFWAVoB6AAEAVYBVgFZAegABAFWAVYBVgHoAAQBVgFWAVQB6AAEAVYBVgFTAegABAFWAVQBXAHoAAQBVgFUAVoB6AAEAVYBVAFZAegABAFWAVQBVgHoAAQBVgFUAVQB6AAEAVYBVAFTAegABAFWAVMBXAHoAAQBVgFTAVoB6AAEAVYBUwFZAegABAFWAVMBVgHoAAQBVgFTAVQB6AAEAVYBUwFTAegABAFUAVwBXAHoAAQBVAFcAVoB6AAEAVQBXAFZAegABAFUAVwBVgHoAAQBVAFcAVQB6AAEAVQBXAFTAegABAFUAVoBXAHoAAQBVAFaAVoB6AAEAVQBWgFZAegABAFUAVoBVgHoAAQBVAFaAVQB6AAEAVQBWgFTAegABAFUAVkBXAHoAAQBVAFZAVoB6AAEAVQBWQFZAegABAFUAVkBVgHoAAQBVAFZAVQB6AAEAVQBWQFTAegABAFUAVYBXAHoAAQBVAFWAVoB6AAEAVQBVgFZAegABAFUAVYBVgHoAAQBVAFWAVQB6AAEAVQBVgFTAegABAFUAVQBXAHoAAQBVAFUAVoB6AAEAVQBVAFZAegABAFUAVQBVgHoAAQBVAFUAVQB6AAEAVQBVAFTAegABAFUAVMBXAHoAAQBVAFTAVoB6AAEAVQBUwFZAegABAFUAVMBVgHoAAQBVAFTAVQB6AAEAVQBUwFTAegABAFTAVwBXAHoAAQBUwFcAVoB6AAEAVMBXAFZAegABAFTAVwBVgHoAAQBUwFcAVQB6AAEAVMBXAFTAegABAFTAVoBXAHoAAQBUwFaAVoB6AAEAVMBWgFZAegABAFTAVoBVgHoAAQBUwFaAVQB6AAEAVMBWgFTAegABAFTAVkBXAHoAAQBUwFZAVoB6AAEAVMBWQFZAegABAFTAVkBVgHoAAQBUwFZAVQB6AAEAVMBWQFTAegABAFTAVYBXAHoAAQBUwFWAVoB6AAEAVMBVgFZAegABAFTAVYBVgHoAAQBUwFWAVQB6AAEAVMBVgFTAegABAFTAVQBXAHoAAQBUwFUAVoB6AAEAVMBVAFZAegABAFTAVQBVgHoAAQBUwFUAVQB6AAEAVMBVAFTAegABAFTAVMBXAHoAAQBUwFTAVoB6AAEAVMBUwFZAegABAFTAVMBVgHoAAQBUwFTAVQB6AAEAVMBUwFTACYBpgGcAZIBiAF+AXQBagFgAVYBTAFCATgBLgEkARoBEAEGAPwA8gDoAN4A1ADKAMAAtgCsAKIAmgCSAIoAggB6AHIAagBiAFoAVABOAdgAAgFWAdgAAgFUAdgAAwFWAVYB2AADAVYBVAHYAAMBVgFTAdgAAwFUAVYB2AADAVQBVAHYAAMBVAFTAdgAAwFTAVYB2AADAVMBVAHYAAMBUwFTAdkABAFWAVYBVgHZAAQBVgFWAVQB2QAEAVYBVgFTAdkABAFWAVQBVgHZAAQBVgFUAVQB2QAEAVYBVAFTAdkABAFWAVMBVgHZAAQBVgFTAVQB2QAEAVYBUwFTAdkABAFUAVYBVgHZAAQBVAFWAVQB2QAEAVQBVgFTAdkABAFUAVQBVgHZAAQBVAFUAVQB2QAEAVQBVAFTAdkABAFUAVMBVgHZAAQBVAFTAVQB2QAEAVQBUwFTAdkABAFTAVYBVgHZAAQBUwFWAVQB2QAEAVMBVgFTAdkABAFTAVQBVgHZAAQBUwFUAVQB2QAEAVMBVAFTAdkABAFTAVMBVgHZAAQBUwFTAVQB2QAEAVMBUwFTACsDUgNIAz4DNAMqAyADFgMMAwIC+ALuAuQC2gLQAsYCvAKyAqgCngKUAooCgAJ2AmwCYgJYAk4CRAI6AjACJgIcAhICCAH+AfQB1AHMAcQBvAG0AawBIgArAvoC8ALmAtwC0gLIAr4CtAKqAqAClgKMAoICeAJuAmQCWgJQAkYCPAIyAigCHgIUAgoCAAH2AewB4gHYAc4BxAG6AbABpgGcAXwBdAFsAWQBXAFUAUgAOAL8AvIC6ALeAtQCygLAArYCrAKiApgCjgKEAnoCcAJmAlwCUgJIAj4CNAIqAiACFgIMAgIB+AHuAeQB2gHQAcYBvAGyAagBngGU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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3f7pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAAAAAAAAAAAAD/tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/V/5gAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xP+YAAAAAP+jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6gAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAAAA/7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6X/sgAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/rwAAAAAAAAAA/6MAAAAA/4AAAP+7AAAAAAAAAAD/mAAAAAD/mAAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAA/8YAAAAAAAAAAAAAAAAAAP+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAAAAA/yP+3gAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAD/9QAAAAAAAP9p/17/XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9p/2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/6MAAAAAAAD/uwAAAAAAAAAA//IAAAAAAAD/8AAA/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/vAAAAAP+jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAAAAAAAAAAAAD/ff9jAAAAAAAAAAD/rgAAAAAAAAAAAAAAAP+k/9IAAAAA/9AAAAAAAAAAAAAA/6MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+YAAAAAAAAAAD/rwAA/zv/owAAAAAAAAAA/5gAAAAAAAAAAAAAAAD/df+7AAAAAP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAP/nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAAAAAAAAAAAAAAAAAAAAAP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5wAAAAAAAAAA//YAAAAAAAAAAP/EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAAAAAAAAAABdAAAAAAAAAAAAAAAAAAAAAAAAAAD/5wAAAAAAAAAA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AAAAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAP9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9pAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/sAAAAAD/OwAAAAAAAAAAAAD/3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7sAAAAUAAAAAP/bAAD/GP9gAAAAAAAAAAD/xgAAAAAAAAAA/9cAAP+D/9cAAP/k/5oAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/3f8+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP87AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAACX/9QAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAP9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP95/30AAAAA/67/ff99AAD/g/99AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP99AAAAAP+DAAD/iAAAAAAAAAAAAAAAAAAA/64AAAAAAAAAAP95AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP99AAAAAAAAAAAAAAAAAAAAAAAjAAAAAAAAAAAAAP+7AAAAAAAAAAAAAP+1AAAAAAAAAAAAAAAA/8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+7AAAAAAAAAAAAAAAA/4D/mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/uwAAAAAAAAAA/7sAAP9G/vUAAAAAAAAAAP+vAAAAAAAA/7sAAAAA/4D/uwAA/7v/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP91AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8RAAAAAAAA/zkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/xgAA//X/bwAA/+kAAAAAAAD/6f/vAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFAAAARQAAAAAAAAAAAAAAAAAAAAAAAABRAAAAUQAAAAAAAABFAAAAAAAAAAAARQAAAAAAAAAAAAAARQAAAAAAPwAAAAAAAAAAAEUAUQBFAAAAdAAQAQ0AUQAAAAAAAAAAAAAAAAAAAF0AIgAAAAAAAAAAAAAAQAAAAAAAXQAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAA/+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAAAAD/RgBFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/jP+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+Y/5gAAP8jAAD/owAAAAAAAP+vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALoAAAAAAAAAAP87AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAD/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAgAAEAhgAAAIgAkgCGAJQApwCRAKkAtgClALgA7wCzAPEA8wDrAPcA+ADuAPoA+wDwAP4BAADyARYBFgD1ARgBGAD2ARoBGgD3AR0BHQD4AS0BNwD5AT0BRgEEAUgBSAEOAUoBSgEPAU8BUAEQAVIBUwESAVgBWQEUAV0BZQEWAWoBbQEfAW8BdAEjAXcBgAEpAYMBjAEzAY8BnAE9AaABoAFLAbwBvAFMAdcB2gFNAeYB6QFRAfQB9AFVAfcB+AFWAAIAiQABAAsABQAMAAwAAQANABIABAATAB8AAQAgACQABAAlACgAAQApACkAFAAqACsAAQAsAC8AFAAwADEAAQAyADMAIwA0AEEAAQBCAEwABABNAE0AAQBOAE4ABABPAFIAAQBTAFgAEQBZAFsADQBcAGYACQBnAGcAGQBoAGkAHQBqAGoAEgBrAG4ADABvAHIAFgBzAH0ABwB+AH8AAQCAAJIAAgCUAJQAJACVAJUAAQCWAJoAAgCbAJ0AAQCeAJ8ADwCgAKEAHgCiAKQADwClAKYAHgCnAKcADwCpAKkADwCqAKsAGACsALMAAQC0ALoAAwC7AMUAAgDGAMYAAwDHAMcAAgDIAMsAAwDMANEACwDSANIAAQDTANcABgDYANoACADbANsAPgDcAOMACADkAOQACgDlAOYAHADnAOcAGgDoAOsACgDsAO8AFwDwAPAAAQDxAPEAAgDyAPIAOgDzAPMAKQD3APcALwD4APgANQD6APoANwD7APsAMAD9AP0ALwD+AP4APwD/AP8AOwEXARcAIQEZARkAIQEbARsAIQEdAR0ADgEtATAAEAExATEADgEyATIAFQEzATMADgE0ATUAEAE2ATYADgE3ATcAFQE9AT0ALgE+AT4AMwE/AT8AKwFAAUAALAFBAUEAKwFCAUIALAFDAUMAKwFEAUQALAFFAUUAHwFHAUcAIQFJAUkAIQFLAUsAIQFPAU8AQAFQAVAAEwFSAVIAOQFTAVMADgFYAVgAFQFZAVkADgFdAV0AFQFeAV4AKAFfAV8AJQFgAWEAJgFiAWIAKAFjAWMAJQFkAWUAIgFqAWwAIAFtAW8AGwFwAXAADgFxAXEAMQFyAXIAMgFzAXMAMQF0AXQAMgF3AXoAEAF7AXsADgF8AXwAFQF9AX0ADgF+AX8AEAGAAYAADgGDAYYAEAGHAYcADgGIAYgAFQGJAYkADgGKAYsAEAGMAY0ADgGPAZAALQGRAZIAKgGTAZMAFQGUAZQANgGVAZUAHwGWAZYALQGXAZcAKgGYAZsAJwGcAZwANAGjAaMAPQG8AbwAPAHbAd0ADgHeAd8AEAH0AfQAOAH3AfcADQH4AfgAAwACAI4AAQAKAAUACwALAAcADAAMABIADQASABkAEwAUAAQAFQAeAAcAHwAfAC0AIAAkAB0AKQApABgALAAvABgAMgAzAAgANAA1ABUANgA6ABoAQgBLAAQATABMAAcATQBNACUATgBOAAQATwBSABQAUwBYABEAWQBbAA0AXABmAAgAZwBnACQAaABpACIAagBqABcAawBuAAwAbwByAB4AcwB8AAIAfQB9ACcAfgCFAAEAiACIAEIAiQCSAAEAlACUAB8AlQCVADoAlgCaABwAmwCdAAIAngCfAAkAoAChACYAogCkAAkApQCmACYApwCnAAkAqQCrAAkArACtABYAtAC2AAIAuAC6AAIAuwDGAAEAxwDHABwAyADLAAoAzADRAA4A0gDSABIA0wDXAAYA2ADaAAMA2wDbAEUA3ADjAAMA5ADkAAsA5QDmACEA5wDnACAA6ADrAAsA7ADvABMA8QDxAAEA8gDyAEMA8wDzADMA9wD3ADsA+AD4ACMA+gD6ADgA+wD7ADwA/gD+AEYA/wD/ADgBAAEAADsBFgEWACsBGAEYACsBGgEaACsBHQEdAA8BLQEwABABMQExAA8BMgEyABsBMwEzAA8BNAE1ABABNgE2AA8BNwE3ABsBPQE9ADkBPgE+AD8BPwE/ADUBQAFAADYBQQFBADUBQgFCADYBQwFDADUBRAFEADYBRQFFADABRgFGACsBSAFIACsBSgFKACsBTwFPAEcBUAFQACMBUgFSACoBUwFTAA8BWAFYABsBWQFZAA8BXQFdABsBXgFeADIBXwFfAC4BYAFhAC8BYgFiADIBYwFjAC4BZAFlACwBagFsACkBbQFtACgBbwFvACgBcAFwAA8BcQFxAD0BcgFyAD4BcwFzAD0BdAF0AD4BdwF6ABABewF7AA8BfAF8ABsBfQF9AA8BfgF/ABABgAGAAA8BgwGGABABhwGHAA8BiAGIABsBiQGJAA8BigGLABABjAGMAA8BjwGQADcBkQGSADQBkwGTABsBlAGUAEEBlQGVADABlgGWADcBlwGXADQBmAGbADEBnAGcACMBoAGgAEABvAG8AEQB1wHZAA8B2gHaABAB5gHoAA8B6QHpABAB9AH0AAQB9wH3AA0B+AH4ABYAAQACAAAACAABANoABAAAAGgG3gbeBt4G3gbeBt4G3gbeBt4G3gbUBtQG1AbUBtQG1AbUBtQGkgZQCOYG1AbUBtQG1AbUBtQG1AZGBbwFcgVsBWwFZgVUBVQFVAVUBUIG1ARcBFYESARIBCoESARIBBQD7gQqBEgESARIBBQG1APQA8oG1AbUBtQDwAPAA8ADwAO6A7oDugO6A7oDugO6A7oDugO6A7oDugOcA5YDgAN2A3YDdgN2A5YDaAN2A3YDVgMoA3YDdgMaA3YDdgN2AeQDlgN2A3YDdgN2A3YDdgGuAAEAaAABAAIAAwAEAAUABgAHAAgACQAKACUAJgAnACgAKgArADAAMQA3ADkAOgA7ADwAPQA+AD8AQABBAFkAWgBbAGgAaQBqAGsAbABtAG4AeQCGAIcAiACeAJ8AoQCiAKMApAClAKYApwCpAKoAqwCuAK8AsACxALIAswDIAMkAygDLANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAPQA+AD8AR0BMQEzATYBUAFSAVMBWQFwAXYBewF9AYABhwGJAYwBjgGcAdcB2AHZAeYB5wHoAfcADQAB/4wAAv+MAAP/jAAE/4wABf+MAAb/jAAH/4wACP+MAAn/jAAK/4wAC/+MANn/mAFw/14ATQAMAEUAEwBFABQARQAVAEUAFgBFABcARQAYAEUAGQBFABoARQAbAEUAHABFAB0ARQAeAEUAHwBFACUARQAmAEUAJwBFACgARQAqAEUAKwBFADAARQAxAEUANABFADUARQA2AEUANwBFADgARQA5AEUAOgBFADsARQA8AEUAPQBFAD4ARQA/AEUAQABFAEEARQBNAEUATwBFAFAARQBRAEUAUgBFAH4ARQB/AEUAlQBFAJsARQCcAEUAnQBFAJ4AIACfACAAogAgAKMAIACkACAApwAgAKkAIACsAEUArQBFAK4ARQCvAEUAsABFALEARQCyAEUAswBFALQARQC1AEUAtgBFALcARQC4AEUAuQBFALoARQDGAEUAyABFAMkARQDKAEUAywBFANIARQDwAEUB+ABFAAMAWv+JAFv/iQBq/64ACwAB/7IAAv+yAAP/sgAE/7IABf+yAAb/sgAH/7IACP+yAAn/sgAK/7IAC/+yAAQAWf9eAFr/XgBb/14B9/9eAAMAZ/+cAGj/igBp/4oAAgBa/4kAW/+JAAUA0wAAANQAAADVAAAA1gAAANcAAAABAfMASwAHAJ4ARQCfAEUAogBFAKMARQCkAEUApwBFAKkARQABAfMAJQACAXX/rwGN/7sAAQGOACUABwDTAB4A1AAeANUAHgDWAB4A1wAeAY4AJQH0AEUACQCeAFEAnwBRAKIAUQCjAFEApABRAKcAUQCpAFEAqgBRAKsAUQAFAKAARQClAEUApgBFAPQAAAGOAAAABwCeAFEAnwBRAKIAUQCjAFEApABRAKcAUQCpAFEAAwChAEUA9AAAAY4AAAABAKQARQA5AAwARQATAEUAFABFABUARQAWAEUAFwBFABgARQAZAEUAGgBFABsARQAcAEUAHQBFAB4ARQAfAEUAJQBFACYARQAnAEUAKABFACoARQArAEUAMABFADEARQA0AEUANQBFADYARQA3AEUAOABFADkARQA6AEUAOwBFADwARQA9AEUAPgBFAD8ARQBAAEUAQQBFAE0ARQBPAEUAUABFAFEARQBSAEUAfgBFAH8ARQCVAEUAmwBFAJ0ARQCsAEUArQBFAK4ARQCvAEUAsABFALEARQCyAEUAswBFANIARQDwAEUBUABFAAQAWf9qAFr/agBb/2oB9/9qAAQAd/+XAHn/RwB8/3cAo/+2AAEBgP+7AAEBcP+7ABIA2f+YAR3/uwEx/7sBM/+7ATb/uwFT/7sBWf+7AXD/uwF7/7sBff+7AYD/uwGH/7sBif+7AYz/uwGN/7sB2/+7Adz/uwHd/7sAIgDY/48A2f+PANr/jwDb/48A3P+PAN3/jwDe/48A3/+PAOD/jwDh/48A4v+PAOP/jwDn/6AA7P+uAO3/rgDu/64A7/+uAR3/uwEx/7sBM/+7ATb/uwFT/7sBWf+7AXD/uwF7/7sBff+7AYD/uwGH/7sBif+7AYz/uwGN/7sB2/+7Adz/uwHd/7sAAgDZ/5gBcP9eABABHf+1ATH/tQEz/7UBNv+1AVP/tQFZ/7UBcP+1AXv/tQF9/7UBh/+1AYn/tQGM/7UBjf+1Adv/tQHc/7UB3f+1ABABHf+eATH/ngEz/54BNv+eAVP/ngFZ/54BcP+eAXv/ngF9/54Bh/+eAYn/ngGM/54Bjf+eAdv/ngHc/54B3f+eAAIBjgAlAfMASwABAXX/sgABAAIAAAAIAAEBAAAEAAAAewbKBsoGygbKBsoGygbKBsoGygbKBsQGxAbEBsQGxAbEBsQGxAa2BrAGsAaeBp4GfAZiBnwGTAYeBsQGxAbEBsQGxAbEBsQGxAbEBsQGEAbEBdYFpAXWBrAGsAawBrAGsAawBrAGsAawBrAGsAWCBXgFeAVqBUgFSAVIBUgFPgU+BT4FPgT0BOoE3ATSBMwExgTMBLwEvAS2BKwEmgSaBJoEkASKBIoEigSKBIoEeAR4BHgEcgR4BHgEeAR4BHgEeAR4BHgEYARaBFoEYARgBGAEYAPgA4YDYAM6AyAC3gLMBJoCEgIMAgwCDAIMAfoGxAH6AbgEvAACAB4AAQAKAAAADQAUAAoAHwAfABIAMgA6ABMAQgBLABwATQBOACYAWQByACgAhwCHAEIAlACUAEMAoAChAEQApACkAEYApgCmAEcAqwCtAEgArwCwAEsAtgC2AE0AvAC9AE4A0gDmAFAA6ADrAGUA8ADwAGkBOgE6AGoBPAE8AGsBUgFSAGwBcAFwAG0BdgF2AG4BfAF8AG8BjQGOAHABmAGbAHIBngGeAHYB9AH0AHcB9gH4AHgAEAAy/wwAM/8MAHf/rwB8/68Aiv+YALz/mAC9/5gA2v+vANv/LwDp/7sBOv+7AU//mAFs/1IBbv+vAXX/XgGO/4wABABr/7sAbP+7AG3/uwBu/7sAAQE6/68ALgAN/68ADv+vAA//rwAQ/68AEf+vABL/rwAg/68AIf+vACL/rwAj/68AJP+vAEL/rwBD/68ARP+vAEX/rwBG/68AR/+vAEj/rwBJ/68ASv+vAEv/rwBM/68ATv+vAFn/jABa/4wAW/+MAFz/rwBd/68AXv+vAF//rwBg/68AYf+vAGL/rwBj/68AZP+vAGX/rwBm/68AZ/9eAKoAxQCrAMUA5P9eAOj/XgDp/14A6v9eAOv/XgH3/4wABABZ/4wAWv+MAFv/jAH3/4wAEABZ/14AWv9eAFv/XgBn/2kAaP9pAGn/aQBq/4wAa/9GAGz/RgBt/0YAbv9GAG//gABw/4AAcf+AAHL/gAH3/14ABgBn/68Aav+jAGv/mABs/5gAbf+YAG7/mAAJAFn/rwBa/68AW/+vAOT/mADo/5gA6f+YAOr/mADr/5gB9/+vAAkAWf91AFr/dQBb/3UAZ/+7AGv/dQBs/3UAbf91AG7/dQH3/3UAFgBZ/4wAWv+MAFv/jABn/4AAaP+vAGn/rwBr/2kAbP9pAG3/aQBu/2kA5P+7AOX/uwDm/7sA6P+7AOn/uwDq/7sA6/+7AZj/rwGZ/68Bmv+vAZv/rwH3/4wAHgAB/68AAv+vAAP/rwAE/68ABf+vAAb/rwAH/68ACP+vAAn/rwAK/68AC/+vADL/rwAz/68AWf+MAFr/jABb/4wAZ/+YAG//rwBw/68Acf+vAHL/rwFS/5gBXv+MAWL/jAFk/wABZf8AAWr/LwFr/y8BbP8vAff/jAABATr/uwAEAFv/gAFs/2kBdf+7AY7/XgABAFv/aQAEAFv/aQF1/68Bjf+7AY7/uwABAXX/xgACAV7/dQFi/3UABABZ/5gAWv+YAFv/mAH3/5gAAgHzAEUB9ABFAAEB8wBFAAIBdf9SAY3/dQABAKsARQABAKEAUQACAKoARQCrAEUAAwCiAEUApABFAKsARQACAKUAUQGO/+MAEgBZAEUAWgBFAFsARQCcAFEAngBFAJ8ARQCgAFEAoQBRAKIARQCjAEUApABRAKUAUQCmAFEApwBFAKkARQCqAFEAqwBRAfcARQACAXD/uwF1/4AACADC/4wBOv+AAWz/OwFw/5gBdf8v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PnOwYmGweGyaU0D+fAJspv7eFLkBV+vyAVe2SYa3bzZVPB9z3J6e3XROkWEJ6LrE/ueXAP//AF7/7AWeB5cCJgAgAAAABwH9ATcBdP//AF7/7AWeB5MCJgAgAAAABwH/AVgBdP//AF7/7AWeB5gCJgAgAAAABwH8AegBdP//AF7+IgWeBeYCJgAgAAAABwHPAfAAAAABAIcAAAVzBdIACwAAMxEhESERIREhESERhwExAokBMv7O/XcF0v2mAlr6LgJ7/YUA//8AhwAABXMHlwImACUAAAAHAf0BJQF0AAIASwAABikF0gADAA8AAAEVITUTESERIREhESERIREGKfoiegEyAokBMv7O/XcEyq6u+zYF0v2mAlr6LgJ7/YUAAAEAhwAAAbgF0gADAAABESERAbj+zwXS+i4F0v///60AAAKUB48CJgAoAAAABwH7/qMBdP///+sAAAG4B5cCJgAoAAAABwHR/0oBdP//AIcAAAJVB5cCJgAoAAAABwHQAAsBdP///40AAAK0B5cCJgAoAAAABwH9/0kBdP///8UAAAJ8B4UCJgAoAAAABwHT/x4BdP////8AAAJCB10CJgAoAAAABwHS/18BdP///8cAAAJ6B5MCJgAoAAAABwH//2oBdP//ABD+UQHqBdICJgAoAAAABgICzgD//wB8AAABxQeYAiYAKAAAAAcB/P/7AXQAAQBE/+wEJgXSABEAAAUiJDU1IRUUFjMyNjURIREUBAI36P71ATFpWVloAS7++BTz4Vdca25ubAQW++/i8///AET/7AUiB5cCJgAyAAAABwH9AbcBdAADAIcAAAWOBdIACQAQABQAAAERPgI3ASEBJwERIREDFxEhATcBAWguWGpEAW0Bdf2LGf2XATEFBQJt/kbBAmIBUQEWU4yNUwGs/SgJ/P0F0v5p/oSV/dYCoOT8fAD//wCH/iIFjgXSAiYANAAAAAcBzwG/AAAAAQCHAAAEOwXSAAUAADMRIREhFYcBMQKDBdL7K/3//wCHAAAEOweXAiYANgAAAAcB0AAHAXT//wCH/iIEOwXSAiYANgAAAAcBzwFGAAD//wCHAAAEOwYdAiYANgAAAAcCBAH7AAD//wAXAAAEjAXSACYANlIAAAYCDxfeAAEAhwAABu4F0gAtAAAzESETHgMXIz4DNxMhESERND4CNzMOAwcDIQMu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";
|
|
33775
|
+
|
|
33776
|
+
// ../../packages/tweet-card/src/index.ts
|
|
33777
|
+
var BACKGROUNDS = {
|
|
33778
|
+
"plum-plate": "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
|
|
33779
|
+
"sunset": "linear-gradient(135deg, #ff7e5f 0%, #feb47b 100%)",
|
|
33780
|
+
"oceanic": "linear-gradient(90deg, rgb(16, 185, 129), rgb(6, 182, 212), rgb(59, 130, 246))",
|
|
33781
|
+
"hyper": "linear-gradient(90deg, rgb(236, 72, 153), rgb(239, 68, 68), rgb(234, 179, 8))",
|
|
33782
|
+
"cotton-candy": "linear-gradient(90deg, rgb(255, 175, 189), rgb(255, 195, 160))",
|
|
33783
|
+
"gotham-dark": "linear-gradient(90deg, rgb(15, 23, 42), rgb(30, 41, 59), rgb(51, 65, 85))",
|
|
33784
|
+
"neon": "linear-gradient(135deg, #b224ef 0%, #7579ff 100%)",
|
|
33785
|
+
"emerald": "linear-gradient(135deg, #0ba360 0%, #3cba92 100%)",
|
|
33786
|
+
"night-fade": "linear-gradient(0deg, #a18cd1 0%, #fbc2eb 100%)",
|
|
33787
|
+
"midnight": "linear-gradient(135deg, #232526 0%, #414345 100%)"
|
|
33788
|
+
};
|
|
33789
|
+
var CARD_SIZES = ["auto", "4:5", "3:4", "9:16", "1:1"];
|
|
33790
|
+
var AUTO_SCALE = 2;
|
|
33791
|
+
var FIXED_WIDTH_PX = 1080;
|
|
33792
|
+
var LOCALE_BY_LANG = { zh: "zh-CN", ja: "ja-JP", ko: "ko-KR", th: "th-TH", ar: "ar-AR", he: "he-IL", hi: "devanagari" };
|
|
33793
|
+
var require2 = createRequire(import.meta.url);
|
|
33794
|
+
var satori = (...args) => require2("satori").default(...args);
|
|
33795
|
+
var resvgReady;
|
|
33796
|
+
function initResvg() {
|
|
33797
|
+
const wasmPath = require2.resolve("@resvg/resvg-wasm/index_bg.wasm");
|
|
33798
|
+
resvgReady ??= readFile(wasmPath).then((bytes) => initWasm(bytes));
|
|
33799
|
+
return resvgReady;
|
|
33800
|
+
}
|
|
33801
|
+
function resolveBackground(value = "plum-plate") {
|
|
33802
|
+
if (value === "none" || value === "transparent") return null;
|
|
33803
|
+
if (/^#[0-9a-f]{3,8}$/i.test(value)) return value;
|
|
33804
|
+
const preset = BACKGROUNDS[value];
|
|
33805
|
+
if (!preset) throw new Error(`Unknown background "${value}". Use none, a #hex colour, or one of: ${Object.keys(BACKGROUNDS).join(", ")}`);
|
|
33806
|
+
return preset;
|
|
33807
|
+
}
|
|
33808
|
+
function resolve2(options) {
|
|
33809
|
+
const size = options.size ?? "auto";
|
|
33810
|
+
if (!CARD_SIZES.includes(size)) throw new Error(`Unknown size "${size}". Use one of: ${CARD_SIZES.join(", ")}`);
|
|
33811
|
+
return { size, theme: options.theme ?? "light", background: resolveBackground(options.background), hideMetrics: Boolean(options.hideMetrics), fetchImpl: options.fetchImpl ?? fetch };
|
|
33812
|
+
}
|
|
33813
|
+
function arrayBuffer(base644) {
|
|
33814
|
+
const buf = Buffer.from(base644, "base64");
|
|
33815
|
+
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
|
33816
|
+
}
|
|
33817
|
+
function satoriBase(card, fetchImpl, warnings) {
|
|
33818
|
+
const warnOnce = (msg) => {
|
|
33819
|
+
if (!warnings.includes(msg)) warnings.push(msg);
|
|
33820
|
+
};
|
|
33821
|
+
const locale = LOCALE_BY_LANG[card.lang?.split("-")[0] ?? ""];
|
|
33822
|
+
return {
|
|
33823
|
+
fonts: [{ name: "Inter", data: arrayBuffer(INTER_400), weight: 400, style: "normal" }, { name: "Inter", data: arrayBuffer(INTER_700), weight: 700, style: "normal" }],
|
|
33824
|
+
locale,
|
|
33825
|
+
loadAdditionalAsset: async (code, segment) => {
|
|
33826
|
+
if (code === "emoji") return await emojiDataUri(segment, fetchImpl) ?? (warnOnce("Some emoji could not be downloaded"), "");
|
|
33827
|
+
const fonts = await fontsForSegment(code, segment, fetchImpl, locale);
|
|
33828
|
+
if (!fonts.length) warnOnce(`Font for ${code} could not be downloaded; some characters may be missing`);
|
|
33829
|
+
return fonts;
|
|
33830
|
+
}
|
|
33831
|
+
};
|
|
33832
|
+
}
|
|
33833
|
+
async function loadImages(card, fetchImpl, warnings) {
|
|
33834
|
+
const [avatar, ...media] = await Promise.all([imageDataUri(card.author.avatarUrl, fetchImpl), ...card.media.slice(0, 4).map((m) => imageDataUri(m.url, fetchImpl))]);
|
|
33835
|
+
if (card.author.avatarUrl && !avatar) warnings.push("Avatar could not be downloaded");
|
|
33836
|
+
if (media.some((m) => !m)) warnings.push("Some media could not be downloaded");
|
|
33837
|
+
return { avatar, media };
|
|
33838
|
+
}
|
|
33839
|
+
function svgHeight(svg) {
|
|
33840
|
+
return Number(/height="([\d.]+)"/.exec(svg)?.[1] ?? 0);
|
|
33841
|
+
}
|
|
33842
|
+
function canvasSize(opts) {
|
|
33843
|
+
const width = opts.size === "auto" && !opts.background ? CARD_WIDTH : CARD_WIDTH + CANVAS_PADDING * 2;
|
|
33844
|
+
return opts.size === "auto" ? { width } : { width, height: Math.round(width * SIZE_RATIO[opts.size]) };
|
|
33845
|
+
}
|
|
33846
|
+
function canvas(cardNode, opts, scale) {
|
|
33847
|
+
const pad = opts.size === "auto" && !opts.background ? 0 : CANVAS_PADDING;
|
|
33848
|
+
const fill = opts.background ? opts.background.startsWith("#") ? { backgroundColor: opts.background } : { backgroundImage: opts.background } : {};
|
|
33849
|
+
const sized = h("div", { style: { display: "flex", transform: `scale(${scale})` } }, cardNode);
|
|
33850
|
+
return h("div", { style: { display: "flex", width: "100%", height: "100%", padding: pad, alignItems: "center", justifyContent: "center", ...fill } }, sized);
|
|
33851
|
+
}
|
|
33852
|
+
async function fitScale(cardNode, base3, opts) {
|
|
33853
|
+
if (opts.size === "auto") return 1;
|
|
33854
|
+
const cardHeight = svgHeight(await satori(cardNode, { ...base3, width: CARD_WIDTH }));
|
|
33855
|
+
const available = canvasSize(opts).height - CANVAS_PADDING * 2;
|
|
33856
|
+
return Math.min(1, available / cardHeight);
|
|
33857
|
+
}
|
|
33858
|
+
async function renderTweetPng(card, options = {}) {
|
|
33859
|
+
const opts = resolve2(options);
|
|
33860
|
+
const warnings = [];
|
|
33861
|
+
const [images] = await Promise.all([loadImages(card, opts.fetchImpl, warnings), initResvg()]);
|
|
33862
|
+
const base3 = satoriBase(card, opts.fetchImpl, warnings);
|
|
33863
|
+
const cardNode = cardElement(card, images, opts.theme, opts.hideMetrics);
|
|
33864
|
+
const scale = await fitScale(cardNode, base3, opts);
|
|
33865
|
+
const svg = await satori(canvas(cardNode, opts, scale), { ...base3, ...canvasSize(opts) });
|
|
33866
|
+
const width = opts.size === "auto" ? canvasSize(opts).width * AUTO_SCALE : FIXED_WIDTH_PX;
|
|
33867
|
+
const image = new Resvg(svg, { fitTo: { mode: "width", value: width } }).render();
|
|
33868
|
+
return { png: image.asPng(), width: image.width, height: image.height, warnings };
|
|
33869
|
+
}
|
|
33870
|
+
|
|
33871
|
+
// src/tweets.ts
|
|
33872
|
+
import { mkdir, writeFile } from "fs/promises";
|
|
33873
|
+
import { join as join4, resolve as resolve3 } from "path";
|
|
33874
|
+
var STATUS_URL = /^https?:\/\/(?:[\w-]+\.)*[\w-]+\.\w+\/(?:[^/]+\/)*status(?:es)?\/(\d{1,20})(?:[/?#]|$)/i;
|
|
33875
|
+
var BARE_ID = /^\d{1,20}$/;
|
|
33876
|
+
var RATE_LIMIT_RETRIES = 2;
|
|
33877
|
+
var TweetError = class extends Error {
|
|
33878
|
+
constructor(code, message, retryable = false) {
|
|
33879
|
+
super(message);
|
|
33880
|
+
this.code = code;
|
|
33881
|
+
this.retryable = retryable;
|
|
33882
|
+
}
|
|
33883
|
+
};
|
|
33884
|
+
function parseTweetId(input) {
|
|
33885
|
+
const value = input.trim();
|
|
33886
|
+
if (BARE_ID.test(value)) return value;
|
|
33887
|
+
return STATUS_URL.exec(value)?.[1] ?? null;
|
|
33888
|
+
}
|
|
33889
|
+
async function fetchCard(id, opts) {
|
|
33890
|
+
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
33891
|
+
const response = await fetchImpl(`${opts.baseUrl.replace(/\/$/, "")}/v1/x/tweets/${id}`, { headers: { authorization: `Bearer ${opts.apiKey}` } });
|
|
33721
33892
|
const body = await response.json().catch(() => null);
|
|
33722
|
-
if (
|
|
33723
|
-
|
|
33893
|
+
if (response.ok && body?.data) return body.data;
|
|
33894
|
+
throw new TweetError(body?.error?.code ?? `HTTP_${response.status}`, body?.error?.message ?? `Gateway returned ${response.status}`, response.status === 429);
|
|
33895
|
+
}
|
|
33896
|
+
async function fetchCardWithRetry(id, opts) {
|
|
33897
|
+
for (let attempt = 0; ; attempt++) {
|
|
33898
|
+
try {
|
|
33899
|
+
return await fetchCard(id, opts);
|
|
33900
|
+
} catch (error52) {
|
|
33901
|
+
if (!(error52 instanceof TweetError && error52.retryable && attempt < RATE_LIMIT_RETRIES)) throw error52;
|
|
33902
|
+
await new Promise((r) => setTimeout(r, opts.retryDelayMs ?? 3e4));
|
|
33903
|
+
}
|
|
33724
33904
|
}
|
|
33725
|
-
return body.data;
|
|
33726
33905
|
}
|
|
33727
|
-
async function
|
|
33728
|
-
if (opts.dir)
|
|
33729
|
-
return getHook(id, opts.dir);
|
|
33906
|
+
async function renderOne(input, id, opts) {
|
|
33730
33907
|
try {
|
|
33731
|
-
|
|
33732
|
-
|
|
33733
|
-
|
|
33908
|
+
const card = await fetchCardWithRetry(id, opts);
|
|
33909
|
+
const result = await renderTweetPng(card, { ...opts.render, fetchImpl: opts.fetchImpl });
|
|
33910
|
+
const file2 = resolve3(join4(opts.outDir, `tweet-${card.author.handle || "x"}-${id}.png`));
|
|
33911
|
+
await writeFile(file2, result.png);
|
|
33912
|
+
return { input, id, status: "ok", file: file2, width: result.width, height: result.height, warnings: result.warnings };
|
|
33913
|
+
} catch (error52) {
|
|
33914
|
+
const code = error52 instanceof TweetError ? error52.code : "RENDER_FAILED";
|
|
33915
|
+
return { input, id, status: "failed", error: { code, message: error52 instanceof Error ? error52.message : String(error52) } };
|
|
33734
33916
|
}
|
|
33735
33917
|
}
|
|
33736
|
-
function
|
|
33737
|
-
|
|
33738
|
-
const
|
|
33739
|
-
|
|
33740
|
-
|
|
33741
|
-
|
|
33742
|
-
const
|
|
33743
|
-
|
|
33744
|
-
|
|
33745
|
-
|
|
33746
|
-
if (input.type && card.hook_type === input.type) {
|
|
33747
|
-
score += 3;
|
|
33748
|
-
reasons.push("hook_type match");
|
|
33749
|
-
}
|
|
33750
|
-
if (input.niche && card.niche === input.niche) {
|
|
33751
|
-
score += 2;
|
|
33752
|
-
reasons.push("niche match");
|
|
33753
|
-
} else if (input.niche) {
|
|
33754
|
-
score += 0.25;
|
|
33755
|
-
reasons.push("cross-niche kept");
|
|
33756
|
-
}
|
|
33757
|
-
if (card.status === "published") {
|
|
33758
|
-
score += 2;
|
|
33759
|
-
reasons.push(`published (${card.evidence.account_count} accounts)`);
|
|
33760
|
-
} else {
|
|
33761
|
-
reasons.push("hypothesis \u2014 weak evidence");
|
|
33918
|
+
async function renderTweets(inputs, opts) {
|
|
33919
|
+
await mkdir(opts.outDir, { recursive: true });
|
|
33920
|
+
const seen = /* @__PURE__ */ new Set();
|
|
33921
|
+
const items = inputs.map((input) => ({ input, id: parseTweetId(input) })).filter(({ id }) => !id || !seen.has(id) && seen.add(id));
|
|
33922
|
+
const results = new Array(items.length);
|
|
33923
|
+
let next = 0;
|
|
33924
|
+
const worker = async () => {
|
|
33925
|
+
for (let i = next++; i < items.length; i = next++) {
|
|
33926
|
+
const { input, id } = items[i];
|
|
33927
|
+
results[i] = id ? await renderOne(input, id, opts) : { input, id: null, status: "failed", error: { code: "INVALID_TWEET_URL", message: "Not an X/Twitter status link or tweet id" } };
|
|
33762
33928
|
}
|
|
33763
|
-
|
|
33764
|
-
|
|
33765
|
-
|
|
33766
|
-
reasons.push("recent evidence");
|
|
33767
|
-
}
|
|
33768
|
-
score += Math.min(card.evidence.account_count, 5) * 0.3;
|
|
33769
|
-
if (topic && card.format.toLowerCase().includes("{x}")) {
|
|
33770
|
-
score += 0.25;
|
|
33771
|
-
reasons.push("format has {X} slot");
|
|
33772
|
-
}
|
|
33773
|
-
return { ...card, score, reasons };
|
|
33774
|
-
});
|
|
33775
|
-
scored.sort((a, b) => b.score - a.score);
|
|
33776
|
-
const top = scored.slice(0, limit);
|
|
33777
|
-
const best = top[0]?.score ?? 0;
|
|
33778
|
-
if (!top.length || best < 2) {
|
|
33779
|
-
return {
|
|
33780
|
-
cards: top,
|
|
33781
|
-
stop: true,
|
|
33782
|
-
message: "Top score is low \u2014 try another niche/type or gather more labeled hooks."
|
|
33783
|
-
};
|
|
33784
|
-
}
|
|
33785
|
-
return { cards: top, stop: false };
|
|
33929
|
+
};
|
|
33930
|
+
await Promise.all(Array.from({ length: opts.concurrency ?? 4 }, worker));
|
|
33931
|
+
return results;
|
|
33786
33932
|
}
|
|
33787
33933
|
|
|
33788
33934
|
// src/v1-cli.ts
|
|
33789
33935
|
var CLI_MODULE_URL = import.meta.url;
|
|
33790
33936
|
function readCliVersion() {
|
|
33791
33937
|
try {
|
|
33792
|
-
const pkg = JSON.parse(
|
|
33938
|
+
const pkg = JSON.parse(readFileSync3(join5(cliPackageRoot(CLI_MODULE_URL), "package.json"), "utf8"));
|
|
33793
33939
|
return typeof pkg.version === "string" && pkg.version ? pkg.version : "0.0.0";
|
|
33794
33940
|
} catch {
|
|
33795
33941
|
return "0.0.0";
|
|
33796
33942
|
}
|
|
33797
33943
|
}
|
|
33798
33944
|
var HEADLESS_RENDER_DISABLED = "PNG delivery is Studio Download (browser ZIP). CLI/MCP hosted PNG jobs are retired. Open the Run in Studio and use Download.";
|
|
33799
|
-
var credentialPath =
|
|
33945
|
+
var credentialPath = join5(homedir3(), ".config", "easysociable", "credentials.json");
|
|
33800
33946
|
function resolveInstallSkillIds(options) {
|
|
33801
33947
|
return parseInstallSkills(typeof options.skills === "string" ? options.skills : void 0);
|
|
33802
33948
|
}
|
|
33803
33949
|
function readStoredCredentials() {
|
|
33804
33950
|
try {
|
|
33805
|
-
if (!
|
|
33806
|
-
const parsed = JSON.parse(
|
|
33951
|
+
if (!existsSync4(credentialPath)) return null;
|
|
33952
|
+
const parsed = JSON.parse(readFileSync3(credentialPath, "utf8"));
|
|
33807
33953
|
if (typeof parsed.apiKey !== "string" || typeof parsed.baseUrl !== "string") return null;
|
|
33808
33954
|
return { apiKey: parsed.apiKey, baseUrl: parsed.baseUrl };
|
|
33809
33955
|
} catch {
|
|
@@ -33811,8 +33957,8 @@ function readStoredCredentials() {
|
|
|
33811
33957
|
}
|
|
33812
33958
|
}
|
|
33813
33959
|
async function writeStoredCredentials(credentials) {
|
|
33814
|
-
await
|
|
33815
|
-
await
|
|
33960
|
+
await mkdir2(join5(homedir3(), ".config", "easysociable"), { recursive: true, mode: 448 });
|
|
33961
|
+
await writeFile2(credentialPath, `${JSON.stringify(credentials, null, 2)}
|
|
33816
33962
|
`, { mode: 384 });
|
|
33817
33963
|
await chmod(credentialPath, 384);
|
|
33818
33964
|
}
|
|
@@ -33837,12 +33983,15 @@ function commandWantsJson(command) {
|
|
|
33837
33983
|
function gatewayBaseUrl(stored = readStoredCredentials()) {
|
|
33838
33984
|
return stored?.baseUrl ?? process.env.EASYSOCIABLE_GATEWAY_URL ?? process.env.EASYSOCIABLE_API_URL ?? "http://127.0.0.1:8787";
|
|
33839
33985
|
}
|
|
33840
|
-
function
|
|
33986
|
+
function gatewayCredentials() {
|
|
33841
33987
|
const stored = readStoredCredentials();
|
|
33842
33988
|
const allowEnv = process.env.EASYSOCIABLE_ALLOW_ENV_CREDENTIALS === "true";
|
|
33843
|
-
const baseUrl = gatewayBaseUrl(stored);
|
|
33844
33989
|
const apiKey = stored?.apiKey ?? (allowEnv ? process.env.EASYSOCIABLE_API_KEY : void 0);
|
|
33845
33990
|
if (!apiKey) throw new Error("EASYSOCIABLE_API_KEY is required. Run `easysociable auth login` first.");
|
|
33991
|
+
return { apiKey, baseUrl: gatewayBaseUrl(stored) };
|
|
33992
|
+
}
|
|
33993
|
+
function clientFromEnv() {
|
|
33994
|
+
const { apiKey, baseUrl } = gatewayCredentials();
|
|
33846
33995
|
return new TemplateGatewayClient({
|
|
33847
33996
|
baseUrl,
|
|
33848
33997
|
apiKey,
|
|
@@ -33855,14 +34004,14 @@ function jsonOption(command) {
|
|
|
33855
34004
|
}
|
|
33856
34005
|
function defaultEngineRoot() {
|
|
33857
34006
|
try {
|
|
33858
|
-
if (
|
|
34007
|
+
if (existsSync4("/workspace") && statSync2("/workspace").isDirectory())
|
|
33859
34008
|
return "/workspace";
|
|
33860
34009
|
} catch {
|
|
33861
34010
|
}
|
|
33862
34011
|
return process.cwd();
|
|
33863
34012
|
}
|
|
33864
34013
|
function installHome(options) {
|
|
33865
|
-
return typeof options.home === "string" && options.home ? String(options.home) :
|
|
34014
|
+
return typeof options.home === "string" && options.home ? String(options.home) : homedir3();
|
|
33866
34015
|
}
|
|
33867
34016
|
function installSource(options) {
|
|
33868
34017
|
if (typeof options.source === "string" && options.source)
|
|
@@ -33873,17 +34022,17 @@ function installSource(options) {
|
|
|
33873
34022
|
}
|
|
33874
34023
|
function detectedHosts(home) {
|
|
33875
34024
|
const candidates = [
|
|
33876
|
-
{ host: "codex", dir:
|
|
33877
|
-
{ host: "claude", dir:
|
|
34025
|
+
{ host: "codex", dir: join5(home, ".codex") },
|
|
34026
|
+
{ host: "claude", dir: join5(home, ".claude") }
|
|
33878
34027
|
];
|
|
33879
|
-
return candidates.filter((item) =>
|
|
34028
|
+
return candidates.filter((item) => existsSync4(item.dir)).map((item) => ({ host: item.host, configPath: join5(item.dir, "mcp.json"), skillsPath: join5(item.dir, "skills") }));
|
|
33880
34029
|
}
|
|
33881
34030
|
async function planInstallation(options) {
|
|
33882
34031
|
const home = installHome(options);
|
|
33883
34032
|
const source = installSource(options);
|
|
33884
34033
|
const hosts = detectedHosts(home);
|
|
33885
34034
|
const skillNames = resolveInstallSkillIds(options);
|
|
33886
|
-
const missingSkills = skillNames.filter((name) => !
|
|
34035
|
+
const missingSkills = skillNames.filter((name) => !existsSync4(join5(source, name)));
|
|
33887
34036
|
return {
|
|
33888
34037
|
source,
|
|
33889
34038
|
home,
|
|
@@ -33892,7 +34041,7 @@ async function planInstallation(options) {
|
|
|
33892
34041
|
missingSkills,
|
|
33893
34042
|
changes: hosts.flatMap((host) => [
|
|
33894
34043
|
`merge ${host.configPath} with one easysociable MCP registration`,
|
|
33895
|
-
...skillNames.map((name) => `install ${
|
|
34044
|
+
...skillNames.map((name) => `install ${join5(host.skillsPath, name)}`)
|
|
33896
34045
|
])
|
|
33897
34046
|
};
|
|
33898
34047
|
}
|
|
@@ -33908,15 +34057,15 @@ async function applyInstallation(options) {
|
|
|
33908
34057
|
const backupSuffix = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
33909
34058
|
const backups = [];
|
|
33910
34059
|
for (const host of detectedHosts(String(plan.home))) {
|
|
33911
|
-
if (
|
|
34060
|
+
if (existsSync4(host.configPath)) {
|
|
33912
34061
|
const backupPath = `${host.configPath}.bak.${backupSuffix}`;
|
|
33913
34062
|
await copyFile(host.configPath, backupPath);
|
|
33914
34063
|
backups.push(backupPath);
|
|
33915
34064
|
}
|
|
33916
34065
|
await installHostConfig({ host: host.host, dataDir: "", configPath: host.configPath });
|
|
33917
|
-
await
|
|
34066
|
+
await mkdir2(host.skillsPath, { recursive: true, mode: 448 });
|
|
33918
34067
|
for (const skill of resolveInstallSkillIds(options))
|
|
33919
|
-
await cp(
|
|
34068
|
+
await cp(join5(String(plan.source), skill), join5(host.skillsPath, skill), { recursive: true, force: false, errorOnExist: false });
|
|
33920
34069
|
}
|
|
33921
34070
|
if (options.json !== true) {
|
|
33922
34071
|
process.stdout.write(`Installed skills your Agent will use:
|
|
@@ -33949,8 +34098,8 @@ function withClient(action) {
|
|
|
33949
34098
|
function addCrudCommands(parent, resource, routes) {
|
|
33950
34099
|
jsonOption(parent.command("list").description(`List ${resource}`)).action(withClient(async (client) => client.requestJson("GET", routes.list)));
|
|
33951
34100
|
jsonOption(parent.command("get").requiredOption("--id <id>").description(`Get ${resource}`)).action(withClient(async (client, opts) => client.requestJson("GET", routes.get.replace(":id", String(opts.id)))));
|
|
33952
|
-
if (routes.create) jsonOption(parent.command("create").requiredOption("--file <path>").description(`Create ${resource}`)).action(withClient(async (client, opts) => client.requestJson("POST", routes.create, JSON.parse(await
|
|
33953
|
-
if (routes.update) jsonOption(parent.command("update").requiredOption("--id <id>").requiredOption("--file <path>").description(`Update ${resource}`)).action(withClient(async (client, opts) => client.requestJson("PATCH", routes.update.replace(":id", String(opts.id)), JSON.parse(await
|
|
34101
|
+
if (routes.create) jsonOption(parent.command("create").requiredOption("--file <path>").description(`Create ${resource}`)).action(withClient(async (client, opts) => client.requestJson("POST", routes.create, JSON.parse(await readFile2(String(opts.file), "utf8")))));
|
|
34102
|
+
if (routes.update) jsonOption(parent.command("update").requiredOption("--id <id>").requiredOption("--file <path>").description(`Update ${resource}`)).action(withClient(async (client, opts) => client.requestJson("PATCH", routes.update.replace(":id", String(opts.id)), JSON.parse(await readFile2(String(opts.file), "utf8")))));
|
|
33954
34103
|
for (const [name, method, route] of [["archive", "POST", routes.archive], ["restore", "POST", routes.restore], ["delete", "DELETE", routes.delete]]) {
|
|
33955
34104
|
if (!route) continue;
|
|
33956
34105
|
jsonOption(parent.command(name).requiredOption("--id <id>").description(`${name} ${resource}`)).action(withClient(async (client, opts) => client.requestJson(method, route.replace(":id", String(opts.id)))));
|
|
@@ -33958,14 +34107,14 @@ function addCrudCommands(parent, resource, routes) {
|
|
|
33958
34107
|
}
|
|
33959
34108
|
function buildV1Cli() {
|
|
33960
34109
|
const program = new Command().name("easysociable").description("EasySociable Gateway CLI for Template and Slideshow V1").version(readCliVersion()).option("--json", "Emit a JSON envelope");
|
|
33961
|
-
jsonOption(program.command("install").description("Install Skills and one MCP registration for detected Codex/Claude hosts").option("--yes", "Apply the reviewed changes").option("--skills <list>", "Skills to install: content,template,slideshow (default: template,slideshow)").option("--source <path>", "Skill source root").option("--home <path>", "Home directory fixture for tests")).action(async (...args) => {
|
|
34110
|
+
jsonOption(program.command("install").description("Install Skills and one MCP registration for detected Codex/Claude hosts").option("--yes", "Apply the reviewed changes").option("--skills <list>", "Skills to install: content,template,slideshow,tweet (default: template,slideshow,tweet)").option("--source <path>", "Skill source root").option("--home <path>", "Home directory fixture for tests")).action(async (...args) => {
|
|
33962
34111
|
const command = args.at(-1);
|
|
33963
34112
|
const opts = command.opts();
|
|
33964
34113
|
const plan = await planInstallation(opts);
|
|
33965
34114
|
const result = opts.yes === true ? await applyInstallation(opts) : { ...plan, applied: false, next: "Review changes and re-run with --yes" };
|
|
33966
34115
|
print(result, Boolean(opts.json));
|
|
33967
34116
|
});
|
|
33968
|
-
jsonOption(program.command("update").description("Update installed Skills and MCP registration with backup").option("--yes", "Apply the reviewed changes").option("--skills <list>", "Skills to install: content,template,slideshow (default: template,slideshow)").option("--source <path>", "Skill source root").option("--home <path>", "Home directory fixture for tests")).action(async (...args) => {
|
|
34117
|
+
jsonOption(program.command("update").description("Update installed Skills and MCP registration with backup").option("--yes", "Apply the reviewed changes").option("--skills <list>", "Skills to install: content,template,slideshow,tweet (default: template,slideshow,tweet)").option("--source <path>", "Skill source root").option("--home <path>", "Home directory fixture for tests")).action(async (...args) => {
|
|
33969
34118
|
const command = args.at(-1);
|
|
33970
34119
|
const opts = command.opts();
|
|
33971
34120
|
const plan = await planInstallation(opts);
|
|
@@ -33996,7 +34145,7 @@ function buildV1Cli() {
|
|
|
33996
34145
|
const opts = command.opts();
|
|
33997
34146
|
if (opts.run) {
|
|
33998
34147
|
if (opts.requireKnowledge === true) {
|
|
33999
|
-
const engineRoot =
|
|
34148
|
+
const engineRoot = resolve4(String(opts.run), "..", "..");
|
|
34000
34149
|
const knowledge = checkKnowledge(engineRoot);
|
|
34001
34150
|
if (!knowledge.valid) {
|
|
34002
34151
|
print({ valid: false, missing: knowledge.missing, knowledge, action: "validated" }, commandWantsJson(command));
|
|
@@ -34063,7 +34212,18 @@ function buildV1Cli() {
|
|
|
34063
34212
|
jsonOption(auth.command("status").description("Show authentication status")).action(async (...args) => {
|
|
34064
34213
|
const command = args.at(-1);
|
|
34065
34214
|
const stored = readStoredCredentials();
|
|
34066
|
-
|
|
34215
|
+
let account = null;
|
|
34216
|
+
let error52;
|
|
34217
|
+
if (stored) {
|
|
34218
|
+
try {
|
|
34219
|
+
const me = await clientFromEnv().requestJson("GET", "/v1/commercial/me");
|
|
34220
|
+
const principal = me.data?.principal ?? me.principal ?? {};
|
|
34221
|
+
account = { email: principal.email ?? principal.workspaceName ?? null, workspaceId: principal.workspaceId ?? null, planId: principal.planId ?? null };
|
|
34222
|
+
} catch (cause) {
|
|
34223
|
+
error52 = cause instanceof Error ? cause.message : String(cause);
|
|
34224
|
+
}
|
|
34225
|
+
}
|
|
34226
|
+
print({ authenticated: Boolean(account), account, ...error52 ? { error: error52 } : {}, baseUrl: gatewayBaseUrl(stored), credentialPath }, Boolean(command.opts().json));
|
|
34067
34227
|
});
|
|
34068
34228
|
auth.command("login").description("Sign in via the browser (or store an existing API key with --api-key)").option("--api-key <key>").option("--gateway-url <url>", "Gateway URL").option("--site-url <url>", "EasySociable site URL", process.env.EASYSOCIABLE_SITE_URL ?? "https://easysociable.com").action(async (...args) => {
|
|
34069
34229
|
const command = args.at(-1);
|
|
@@ -34094,7 +34254,7 @@ Waiting for approval\u2026
|
|
|
34094
34254
|
jsonOption(themes.command("set-default").requiredOption("--profile-id <profileId>").requiredOption("--theme-id <themeId>")).action(withClient(async (client, opts) => client.requestJson("POST", `/v1/profiles/${opts.profileId}/default-theme`, { themeId: opts.themeId })));
|
|
34095
34255
|
const images = program.command("images").description("Manage account image assets");
|
|
34096
34256
|
addCrudCommands(images, "images", { list: "/v1/images", get: "/v1/images/:id", create: "/v1/images/imports", update: "/v1/images/:id", archive: "/v1/images/:id/archive", restore: "/v1/images/:id/restore", delete: "/v1/images/:id" });
|
|
34097
|
-
jsonOption(images.command("upload").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.requestJson("POST", "/v1/images/imports", JSON.parse(await
|
|
34257
|
+
jsonOption(images.command("upload").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.requestJson("POST", "/v1/images/imports", JSON.parse(await readFile2(String(opts.file), "utf8")))));
|
|
34098
34258
|
jsonOption(images.command("import-url").requiredOption("--url <url>").option("--name <name>")).action(withClient(async (client, opts) => client.requestJson("POST", "/v1/images/imports", { sourceUrl: String(opts.url), ...opts.name ? { name: String(opts.name) } : {} })));
|
|
34099
34259
|
jsonOption(images.command("search").requiredOption("--q <query>")).action(withClient(async (client, opts) => client.requestJson("GET", `/v1/images?q=${encodeURIComponent(String(opts.q))}`)));
|
|
34100
34260
|
jsonOption(images.command("attest").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.requestJson("POST", `/v1/images/${opts.id}/attest`, { accepted: true })));
|
|
@@ -34114,8 +34274,20 @@ Waiting for approval\u2026
|
|
|
34114
34274
|
return page.templates;
|
|
34115
34275
|
}));
|
|
34116
34276
|
jsonOption(templates.command("get").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.getTemplate(String(opts.id))));
|
|
34117
|
-
jsonOption(templates.command("
|
|
34118
|
-
|
|
34277
|
+
jsonOption(templates.command("source").option("--id <pageId>").option("--family <familyId>").option("--platform <platform>", "With --family: pick that platform's variant")).action(withClient(async (client, opts) => {
|
|
34278
|
+
let id = opts.id ? String(opts.id) : "";
|
|
34279
|
+
if (!id && opts.family) {
|
|
34280
|
+
const { variants } = await client.getTemplateFamily(String(opts.family));
|
|
34281
|
+
const variant = variants.find((v) => v.platforms?.includes(String(opts.platform ?? "instagram")));
|
|
34282
|
+
if (!variant) throw new Error(`Family ${opts.family} has no ${opts.platform ?? "instagram"} variant`);
|
|
34283
|
+
id = variant.pageId;
|
|
34284
|
+
}
|
|
34285
|
+
if (!id) throw new Error("Pass --id <pageId> or --family <familyId> [--platform <p>]");
|
|
34286
|
+
const draft = await client.getDraft(id);
|
|
34287
|
+
return { id: draft.id, name: draft.name, familyId: draft.familyId, canvas: draft.authoringSource?.canvas, studioJson: draft.authoringSource?.json };
|
|
34288
|
+
}));
|
|
34289
|
+
jsonOption(templates.command("create-draft").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.createDraft(JSON.parse(await readFile2(String(opts.file), "utf8")))));
|
|
34290
|
+
jsonOption(templates.command("update-draft").requiredOption("--id <id>").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.updateDraft(String(opts.id), JSON.parse(await readFile2(String(opts.file), "utf8")))));
|
|
34119
34291
|
jsonOption(templates.command("validate").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.validateDraft(String(opts.id))));
|
|
34120
34292
|
jsonOption(templates.command("publish").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.publishDraft(String(opts.id))));
|
|
34121
34293
|
jsonOption(templates.command("list-drafts")).action(withClient(async (client) => client.listDrafts()));
|
|
@@ -34140,16 +34312,12 @@ Waiting for approval\u2026
|
|
|
34140
34312
|
contentSlug: opts.contentSlug ? String(opts.contentSlug) : void 0,
|
|
34141
34313
|
status: opts.status ? String(opts.status) : void 0
|
|
34142
34314
|
})));
|
|
34143
|
-
jsonOption(slideshows.command("
|
|
34144
|
-
const input = JSON.parse(await readFile(String(opts.file), "utf8"));
|
|
34145
|
-
return client.recommendSlideshowTemplates(opts.seed ? { ...input, seed: String(opts.seed) } : input);
|
|
34146
|
-
}));
|
|
34147
|
-
jsonOption(slideshows.command("create").requiredOption("--file <path>").option("--allow-local-fixture", "Allow workspace_local fixture keys (dev only)")).action(withClient(async (client, opts) => {
|
|
34315
|
+
jsonOption(slideshows.command("create").requiredOption("--file <path>").option("--brand-id <id>", "Brand whose colors/fonts the Run uses").option("--theme <path>", 'No Brand: JSON { "color": { canvas, text, textMuted, accent } } (a Deck Style palette)').option("--allow-local-fixture", "Allow workspace_local fixture keys (dev only)")).action(withClient(async (client, opts) => {
|
|
34148
34316
|
await assertHumanStudioIdentity(client, { allowLocalFixture: opts.allowLocalFixture === true });
|
|
34149
|
-
return client.createSlideshowRun({ pack: JSON.parse(await
|
|
34317
|
+
return client.createSlideshowRun({ pack: JSON.parse(await readFile2(String(opts.file), "utf8")), ...opts.brandId ? { brandId: String(opts.brandId) } : {}, ...opts.theme ? { themeSnapshot: JSON.parse(await readFile2(String(opts.theme), "utf8")) } : {} });
|
|
34150
34318
|
}));
|
|
34151
34319
|
jsonOption(slideshows.command("get").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.getSlideshowRun(String(opts.id))));
|
|
34152
|
-
jsonOption(slideshows.command("update").requiredOption("--id <id>").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.updateSlideshowRun(String(opts.id), JSON.parse(await
|
|
34320
|
+
jsonOption(slideshows.command("update").requiredOption("--id <id>").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.updateSlideshowRun(String(opts.id), JSON.parse(await readFile2(String(opts.file), "utf8")))));
|
|
34153
34321
|
jsonOption(slideshows.command("archive").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.archiveSlideshowRun(String(opts.id))));
|
|
34154
34322
|
jsonOption(slideshows.command("restore").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.restoreSlideshowRun(String(opts.id))));
|
|
34155
34323
|
jsonOption(slideshows.command("delete").requiredOption("--id <id>")).action(withClient(async (client, opts) => client.trashSlideshowRun(String(opts.id))));
|
|
@@ -34162,7 +34330,7 @@ Waiting for approval\u2026
|
|
|
34162
34330
|
const renders = program.command("renders").description("Inspect final render jobs");
|
|
34163
34331
|
jsonOption(renders.command("create-asset").requiredOption("--file <path>").requiredOption("--idempotency-key <key>")).action(withClient(async (client, opts) => {
|
|
34164
34332
|
const fileName = String(opts.file);
|
|
34165
|
-
const bytes = await
|
|
34333
|
+
const bytes = await readFile2(fileName);
|
|
34166
34334
|
return client.createRenderAsset({
|
|
34167
34335
|
file: {
|
|
34168
34336
|
fileName: fileName.split("/").pop() ?? "asset",
|
|
@@ -34182,99 +34350,53 @@ Waiting for approval\u2026
|
|
|
34182
34350
|
jsonOption(renders.command("export").description("Retired: PNG packs come from Studio Download").requiredOption("--id <id>").requiredOption("--output <path>")).action(withClient(async () => {
|
|
34183
34351
|
throw new Error(HEADLESS_RENDER_DISABLED);
|
|
34184
34352
|
}));
|
|
34185
|
-
const
|
|
34186
|
-
formulas.option("--catalog <path>", "Path to graph/ dir containing catalog.json (or set EASYSOCIABLE_FORMULA_CATALOG)");
|
|
34187
|
-
jsonOption(formulas.command("list").option("--recipe <recipe>").option("--niche <niche>").option("--status <status>").option("--platform <platform>")).action((...args) => {
|
|
34353
|
+
const catalogAction = (run) => async (...args) => {
|
|
34188
34354
|
const command = args.at(-1);
|
|
34189
|
-
|
|
34190
|
-
|
|
34191
|
-
|
|
34192
|
-
|
|
34193
|
-
|
|
34194
|
-
|
|
34195
|
-
|
|
34196
|
-
|
|
34197
|
-
|
|
34198
|
-
|
|
34199
|
-
|
|
34200
|
-
|
|
34201
|
-
|
|
34202
|
-
|
|
34203
|
-
|
|
34204
|
-
|
|
34205
|
-
|
|
34206
|
-
|
|
34207
|
-
|
|
34208
|
-
jsonOption(
|
|
34209
|
-
|
|
34210
|
-
|
|
34211
|
-
|
|
34212
|
-
|
|
34213
|
-
});
|
|
34214
|
-
jsonOption(
|
|
34215
|
-
|
|
34216
|
-
|
|
34217
|
-
|
|
34218
|
-
|
|
34219
|
-
|
|
34220
|
-
|
|
34221
|
-
|
|
34222
|
-
const
|
|
34223
|
-
|
|
34224
|
-
|
|
34225
|
-
|
|
34226
|
-
|
|
34227
|
-
|
|
34228
|
-
|
|
34229
|
-
}
|
|
34230
|
-
|
|
34231
|
-
});
|
|
34232
|
-
|
|
34233
|
-
|
|
34234
|
-
jsonOption(hooks.command("list").option("--type <hook_type>", "contrast | list-tease | identity | number | other").option("--niche <niche>").option("--status <status>").option("--formula <formula_id>", "Only hooks soft-linked to this formula")).action((...args) => {
|
|
34235
|
-
const command = args.at(-1);
|
|
34236
|
-
const opts = command.optsWithGlobals();
|
|
34237
|
-
const cards = listHooks({
|
|
34238
|
-
dir: opts.catalog ? String(opts.catalog) : void 0,
|
|
34239
|
-
type: opts.type ? String(opts.type) : void 0,
|
|
34240
|
-
niche: opts.niche ? String(opts.niche) : void 0,
|
|
34241
|
-
status: opts.status ? String(opts.status) : void 0,
|
|
34242
|
-
formula: opts.formula ? String(opts.formula) : void 0
|
|
34243
|
-
});
|
|
34244
|
-
print(cards.map((c) => ({
|
|
34245
|
-
id: c.id,
|
|
34246
|
-
hook_type: c.hook_type,
|
|
34247
|
-
niche: c.niche,
|
|
34248
|
-
status: c.status,
|
|
34249
|
-
accounts: c.evidence.account_count,
|
|
34250
|
-
posts: c.evidence.post_count,
|
|
34251
|
-
formula_ids: c.formula_ids,
|
|
34252
|
-
title: c.title,
|
|
34253
|
-
format: c.format
|
|
34254
|
-
})), commandWantsJson(command));
|
|
34255
|
-
});
|
|
34256
|
-
jsonOption(hooks.command("get").requiredOption("--id <id>")).action(async (...args) => {
|
|
34257
|
-
const command = args.at(-1);
|
|
34258
|
-
const opts = command.optsWithGlobals();
|
|
34259
|
-
const card = await resolveHook(String(opts.id), { dir: opts.catalog ? String(opts.catalog) : void 0, baseUrl: gatewayBaseUrl() });
|
|
34260
|
-
print(card, commandWantsJson(command));
|
|
34261
|
-
});
|
|
34262
|
-
jsonOption(hooks.command("catalog")).action((...args) => {
|
|
34263
|
-
const command = args.at(-1);
|
|
34264
|
-
const opts = command.optsWithGlobals();
|
|
34265
|
-
print(loadHooksCatalog(opts.catalog ? String(opts.catalog) : void 0), commandWantsJson(command));
|
|
34266
|
-
});
|
|
34267
|
-
jsonOption(hooks.command("recommend").description("Rank hook molds for a topic/niche. Agent then fills format with the topic (do not copy example).").option("--topic <topic>", "User topic for {X}").option("--niche <niche>").option("--type <hook_type>").option("--limit <n>", "Max hooks", "5")).action((...args) => {
|
|
34268
|
-
const command = args.at(-1);
|
|
34269
|
-
const opts = command.optsWithGlobals();
|
|
34270
|
-
const result = recommendHooks({
|
|
34271
|
-
topic: opts.topic ? String(opts.topic) : void 0,
|
|
34272
|
-
niche: opts.niche ? String(opts.niche) : void 0,
|
|
34273
|
-
type: opts.type ? String(opts.type) : void 0,
|
|
34274
|
-
dir: opts.catalog ? String(opts.catalog) : void 0,
|
|
34275
|
-
limit: opts.limit != null ? Number(opts.limit) : 5
|
|
34276
|
-
});
|
|
34277
|
-
print(result, commandWantsJson(command));
|
|
34355
|
+
print(await run(command.optsWithGlobals()), commandWantsJson(command));
|
|
34356
|
+
};
|
|
34357
|
+
const str = (value) => value == null ? void 0 : String(value);
|
|
34358
|
+
const formulas = program.command("formulas").description("Read Formula cards (proven carousel structures) from the hosted catalog");
|
|
34359
|
+
jsonOption(formulas.command("list").option("--recipe <recipe>").option("--niche <niche>").option("--status <status>").option("--platform <platform>")).action(catalogAction(async (opts) => filterFormulas(await fetchFormulas(gatewayBaseUrl()), {
|
|
34360
|
+
recipe: str(opts.recipe),
|
|
34361
|
+
niche: str(opts.niche),
|
|
34362
|
+
status: str(opts.status),
|
|
34363
|
+
platform: str(opts.platform)
|
|
34364
|
+
}).map((c) => ({ id: c.id, recipe: c.recipe, niche: c.niche, swipe: c.swipe, status: c.status, accounts: c.evidence.account_count, posts: c.evidence.post_count, title_template: c.title_template }))));
|
|
34365
|
+
jsonOption(formulas.command("get").requiredOption("--id <id>")).action(catalogAction((opts) => fetchFormula(String(opts.id), gatewayBaseUrl())));
|
|
34366
|
+
jsonOption(formulas.command("recommend").description("Rank structures for a recipe (pick the recipe from the content shape). Cards differing only by niche are pooled.").requiredOption("--recipe <recipe>").option("--platform <platform>", "Bonus for cards proven on this platform").option("--fact-count <n>", "How many facts are available to fill point beats").option("--limit <n>", "Max cards", "5")).action(catalogAction(async (opts) => recommendFormulas({
|
|
34367
|
+
cards: await fetchFormulas(gatewayBaseUrl()),
|
|
34368
|
+
recipe: String(opts.recipe),
|
|
34369
|
+
platform: str(opts.platform),
|
|
34370
|
+
factCount: opts.factCount != null ? Number(opts.factCount) : void 0,
|
|
34371
|
+
limit: Number(opts.limit ?? 5)
|
|
34372
|
+
})));
|
|
34373
|
+
const hooks = program.command("hooks").description("Read Hook format molds from the hosted catalog");
|
|
34374
|
+
jsonOption(hooks.command("list").option("--type <hook_type>", "contrast | list-tease | identity | number | other").option("--niche <niche>").option("--status <status>").option("--formula <formula_id>", "Only hooks soft-linked to this formula")).action(catalogAction(async (opts) => filterHooks(await fetchHooks(gatewayBaseUrl()), {
|
|
34375
|
+
type: str(opts.type),
|
|
34376
|
+
niche: str(opts.niche),
|
|
34377
|
+
status: str(opts.status),
|
|
34378
|
+
formula: str(opts.formula)
|
|
34379
|
+
}).map((c) => ({ id: c.id, hook_type: c.hook_type, niche: c.niche, status: c.status, accounts: c.evidence.account_count, posts: c.evidence.post_count, formula_ids: c.formula_ids, title: c.title, format: c.format }))));
|
|
34380
|
+
jsonOption(hooks.command("get").requiredOption("--id <id>")).action(catalogAction((opts) => fetchHook(String(opts.id), gatewayBaseUrl())));
|
|
34381
|
+
jsonOption(hooks.command("recommend").description("One hook mold per type, evidence pooled across niches. Fill its format with the topic (never copy the example).").option("--type <hook_type>").option("--limit <n>", "Max hooks", "5")).action(catalogAction(async (opts) => recommendHooks({
|
|
34382
|
+
cards: await fetchHooks(gatewayBaseUrl()),
|
|
34383
|
+
type: str(opts.type),
|
|
34384
|
+
limit: Number(opts.limit ?? 5)
|
|
34385
|
+
})));
|
|
34386
|
+
const tweets = program.command("tweets").description("Turn X (Twitter) posts into images");
|
|
34387
|
+
jsonOption(tweets.command("render").description("Render one PNG per X link or tweet id (no carousel). Text is never rewritten.").argument("[links...]", "x.com / twitter.com status links or tweet ids").option("--file <path>", "Text file with one link per line").option("--size <size>", "auto | 4:5 | 3:4 | 9:16 | 1:1", "auto").option("--theme <theme>", "light | dark", "light").option("--background <bg>", `none | #hex | ${Object.keys(BACKGROUNDS).join(" | ")}`, "plum-plate").option("--hide-metrics", "Hide reply and like counts").option("--out <dir>", "Output directory", "./tweets")).action(async (links, _opts, command) => {
|
|
34388
|
+
const opts = command.opts();
|
|
34389
|
+
const fromFile = opts.file ? (await readFile2(opts.file, "utf8")).split(/\s+/) : [];
|
|
34390
|
+
const inputs = [...links, ...fromFile].filter(Boolean);
|
|
34391
|
+
if (!inputs.length) throw new Error("Pass at least one X link or tweet id (or --file).");
|
|
34392
|
+
if (!CARD_SIZES.includes(opts.size)) throw new Error(`Unknown size "${opts.size}". Use one of: ${CARD_SIZES.join(", ")}`);
|
|
34393
|
+
if (!["light", "dark"].includes(opts.theme)) throw new Error(`Unknown theme "${opts.theme}". Use light or dark.`);
|
|
34394
|
+
resolveBackground(opts.background);
|
|
34395
|
+
const render = { size: opts.size, theme: opts.theme, background: opts.background, hideMetrics: Boolean(opts.hideMetrics) };
|
|
34396
|
+
const items = await renderTweets(inputs, { ...gatewayCredentials(), outDir: opts.out, render });
|
|
34397
|
+
print(commandWantsJson(command) ? items : items.map((i) => i.status === "ok" ? `ok ${i.file}` : `failed ${i.input} ${i.error.code}: ${i.error.message}`).join("\n"), commandWantsJson(command));
|
|
34398
|
+
const failed = items.filter((i) => i.status === "failed").length;
|
|
34399
|
+
if (failed) throw new Error(`${failed} of ${items.length} tweets failed`);
|
|
34278
34400
|
});
|
|
34279
34401
|
const mcp = program.command("mcp").description("Install and run the unified EasySociable MCP server");
|
|
34280
34402
|
jsonOption(mcp.command("install").requiredOption("--host <host>", "codex, claude, hermes, or openclaw").option("--config-path <path>")).action((...args) => {
|