@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.
@@ -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 [header] = tokensParts;
1869
- if (!header)
1868
+ const [header2] = tokensParts;
1869
+ if (!header2)
1870
1870
  return false;
1871
- const parsedHeader = JSON.parse(atob(header));
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 objectSchema3 = z.object(shape).passthrough();
14624
+ const objectSchema2 = z.object(shape).passthrough();
14625
14625
  const recordSchema = z.looseRecord(keySchema, valueSchema);
14626
- zodSchema = z.intersection(objectSchema3, recordSchema);
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 objectSchema2 = z.object(shape);
14656
+ const objectSchema = z.object(shape);
14657
14657
  if (schema.additionalProperties === false) {
14658
- zodSchema = objectSchema2.strict();
14658
+ zodSchema = objectSchema.strict();
14659
14659
  } else if (typeof schema.additionalProperties === "object") {
14660
- zodSchema = objectSchema2.catchall(convertSchema(schema.additionalProperties, ctx));
14660
+ zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));
14661
14661
  } else {
14662
- zodSchema = objectSchema2.passthrough();
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 base = (input.studioBaseUrl ?? DEFAULT_AUTHORING_STUDIO_BASE_URL).replace(/\/$/, "");
15216
- const url2 = new URL(`${base}/authoring/${encodeURIComponent(input.draftId)}`);
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
- }).strict().refine((page) => page.pageTemplateId || page.layoutFamilyId, {
16125
- message: "page requires layoutFamilyId or pageTemplateId",
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
- brandProfileId: external_exports.string().optional(),
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
- brandProfileId: external_exports.string().optional(),
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
- 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
- }).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((resolve3) => setTimeout(resolve3, ms));
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 [header] = tokensParts;
18203
- if (!header)
18207
+ const [header2] = tokensParts;
18208
+ if (!header2)
18204
18209
  return false;
18205
- const parsedHeader = JSON.parse(atob(header));
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(base, additional) {
22978
- const result = { ...base };
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((resolve3) => setTimeout(resolve3, pollInterval));
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((resolve3, reject) => {
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
- resolve3(parseResult.data);
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((resolve3, reject) => {
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(resolve3, interval);
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 = resolve3.call(this, root, ref);
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 resolve3(root, ref) {
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 resolve3(baseURI, relativeURI, options) {
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(base, relative, options, skipNormalization) {
27501
+ function resolveComponent(base3, relative, options, skipNormalization) {
27497
27502
  const target = {};
27498
27503
  if (!skipNormalization) {
27499
- base = parse5(serialize(base, options), options);
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 = base.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 = base.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 ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
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 (!base.path) {
27536
+ } else if (!base3.path) {
27532
27537
  target.path = relative.path;
27533
27538
  } else {
27534
- target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.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 = base.userinfo;
27541
- target.host = base.host;
27542
- target.port = base.port;
27545
+ target.userinfo = base3.userinfo;
27546
+ target.host = base3.host;
27547
+ target.port = base3.port;
27543
27548
  }
27544
- target.scheme = base.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: resolve3,
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
- annotations: { effect: tool.effect }
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((resolve3) => {
31635
+ return new Promise((resolve5) => {
31617
31636
  const json2 = serializeMessage(message);
31618
31637
  if (this._stdout.write(json2)) {
31619
- resolve3();
31638
+ resolve5();
31620
31639
  } else {
31621
- this._stdout.once("drain", resolve3);
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((resolve3) => {
31693
- server.onclose = () => resolve3();
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; no AST). Paged: follow nextCursor, or pass all=true with platforms to get the whole platform catalog before choosing. For Slideshow page choice prefer recommend_slideshow_templates.",
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/type/required/constraints). Use slots to fill create_render_job. Never returns AST or bindingMap.",
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 (Gateway catalog only). Prefer small limit for Agent token budget.",
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 (color stops, linear angle, and semantic tokens) for a specific gradient by gradientId. Use this after selecting a gradient from list_gradients to apply background styling or surface decoration to cards.",
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 (Gateway-only; allowlisted Iconify collections). Read-only \u2014 does not materialize assets. Prefer \u22648 candidates and wait for user confirmation before get_icon.",
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: "After the user confirms one search_icons candidate, materialize an immutable TemplateIconAsset via Gateway. Requires idempotencyKey. Returns canonicalSvg + iconAssetId. Never call Iconify or Better Icons from the client.",
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 find draft IDs before updating or publishing.",
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 an interactive authoringStudioUrl for real-time visual canvas editing before publishing. Call this to create custom template layouts.",
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 full authoring draft detail by draftId including layer canvas tree, slot contracts, theme bindings, and validation errors. Call this to inspect or validate a draft prior to updating or publishing.",
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 properties of an existing authoring draft. Modifies layer nodes, slot definitions, selection metadata, or theme tokens. Re-validates layout rules upon save. Call this to iteratively refine draft designs.",
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 discard and delete a template authoring draft. Destructive operation requiring confirmation: draft canvas data and unpublished changes cannot be recovered.",
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 immutable public or workspace template catalog. Once published, the template becomes immutable and can be instantiated into multi-page slideshow runs.",
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 an image asset specifically attached to a template draft canvas (for general brand/media library assets, use import_image).",
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 icon = await this.client.getIcon({
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: icon, meta: meta4 };
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 objectSchema, slideshowToolRegistry, slideshowResourceTemplates, SlideshowMcpBackend;
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. Follow pagination to inspect existing carousel projects and draft runs.",
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: objectSchema
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 content-pack.v1 (pages with role, templateId, and filled slot copy). Returns runId and interactive Studio review URL for browser preview and PNG pack download.",
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: objectSchema
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 a Slideshow Run by runId, including page list, bound template IDs, filled slot content, theme snapshot, and studio edit URL.",
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: objectSchema
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: "Update slide copy, slot bindings, theme overrides, or presentation preferences of an existing Slideshow Run. Uses optimistic concurrency revision lock to prevent overwrite conflicts.",
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: objectSchema
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: "Archive a Slideshow Run to declutter the workspace and hide it from default project lists while keeping all generated slides and review URLs intact. Reversible via restore_slideshow_run.",
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: objectSchema
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: objectSchema
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: "Permanently delete a Slideshow Run and its associated slide page records. Destructive operation requiring explicit user confirmation; studio review link will become invalid.",
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: objectSchema
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. Use to discover available brand identities before creating or styling slideshow runs.",
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 this before generating branded slides to inject brand styles.",
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. Returns the created Brand entity with revision 1. Best invoked before creating slideshow runs to establish consistent visual identity.",
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. Reversible via restore_brand. Existing slideshow runs referencing this brand continue to display correctly.",
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, making it immediately selectable in brand selectors and default list queries.",
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/pending deletion. Requires confirmation because dependent design workflows may lose default brand styling. Can be recovered with restore_brand.",
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, mime types, and rights status for slot assignment.",
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. Use to inspect dimensions and rightsStatus before binding to slide slots.",
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 and register an image into the permanent account media library (persisted to R2 + Directus metadata). For transient draft canvas images only, use import_template_image instead.",
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 media library asset by imageId (e.g. rename asset or update rightsStatus). Does not re-upload binary content.",
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 ownership or commercial rights attestation for an image asset (statementVersion). Recommended before multi-platform export to ensure commercial compliance.",
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. Reversible via restore_image. Slides referencing this image remain intact.",
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 an archived image asset back to active status in the media library, making it selectable in slot editors and list queries.",
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. Requires confirmation because slides referencing this image asset may fail to render properly.",
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 existsSync6, readFileSync as readFileSync5, statSync as statSync2 } from "fs";
32790
- import { homedir as homedir4 } from "os";
32791
- import { join as join6, resolve as resolve2 } from "path";
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((resolve3, reject) => {
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 resolve3(result);
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
- import { existsSync as existsSync4, readFileSync as readFileSync3, readdirSync as readdirSync2 } from "fs";
33540
- import { homedir as homedir3 } from "os";
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 || !body.data) {
33600
- throw new Error(`Formula not found: ${id} (${body?.error?.message ?? `HTTP ${response.status}`})`);
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
- async function resolveFormula(id, opts) {
33605
- if (opts.dir) return getFormula(id, opts.dir);
33606
- try {
33607
- return getFormula(id);
33608
- } catch {
33609
- return fetchHostedFormula(id, opts.baseUrl, opts.fetchImpl);
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 limit = input.limit ?? 5;
33614
- const all = listFormulas({
33615
- dir: input.dir,
33616
- recipe: input.recipe,
33617
- platform: input.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("cross-niche kept");
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
- if (input.factCount >= points) {
33642
- score += 1.5;
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.sort((a, b) => b.score - a.score);
33658
- const top = scored.slice(0, limit);
33659
- const best = top[0]?.score ?? 0;
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
- import { existsSync as existsSync5, readFileSync as readFileSync4, readdirSync as readdirSync3 } from "fs";
33672
- import { join as join5 } from "path";
33673
- function readJson2(path) {
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 getHook(id, dir) {
33713
- const root = resolveCatalogDir(dir);
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
- async function fetchHostedHook(id, baseUrl, fetchImpl = fetch) {
33720
- const response = await fetchImpl(`${baseUrl.replace(/\/$/, "")}/v1/hooks/${encodeURIComponent(id)}`);
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+wA8AP4A/gBGAP8A/wA4AQABAAA7ARYBFgArARgBGAArARoBGgArAR0BHQAPAS0BMAAQATEBMQAPATIBMgAbATMBMwAPATQBNQAQATYBNgAPATcBNwAbAT0BPQA5AT4BPgA/AT8BPwA1AUABQAA2AUEBQQA1AUIBQgA2AUMBQwA1AUQBRAA2AUUBRQAwAUYBRgArAUgBSAArAUoBSgArAU8BTwBHAVABUAAjAVIBUgAqAVMBUwAPAVgBWAAbAVkBWQAPAV0BXQAbAV4BXgAyAV8BXwAuAWABYQAvAWIBYgAyAWMBYwAuAWQBZQAsAWoBbAApAW0BbQAoAW8BbwAoAXABcAAPAXEBcQA9AXIBcgA+AXMBcwA9AXQBdAA+AXcBegAQAXsBewAPAXwBfAAbAX0BfQAPAX4BfwAQAYABgAAPAYMBhgAQAYcBhwAPAYgBiAAbAYkBiQAPAYoBiwAQAYwBjAAPAY8BkAA3AZEBkgA0AZMBkwAbAZQBlABBAZUBlQAwAZYBlgA3AZcBlwA0AZgBmwAxAZwBnAAjAaABoABAAbwBvABEAdcB2QAPAdoB2gAQAeYB6AAPAekB6QAQAfQB9AAEAfcB9wANAfgB+AAWAAEAAgAAAAgAAQDaAAQAAABoBtgG2AbYBtgG2AbYBtgG2AbYBtgGzgbOBs4GzgbOBs4GzgbOBowGSgjgBs4GzgbOBs4GzgbOBs4GQAW2BWwFZgVmBWAFTgVOBU4FTgU8Bs4EVgRQBEIEQgQkBEIEQgQOA+gEJARCBEIEQgQOBs4DygPEBs4GzgbOA7oDugO6A7oDtAO0A7QDtAO0A7QDtAO0A7QDtAO0A7QDlgucA4ADdgN2A3YDdgucA2gDdgN2A1YDKAN2A3YDGgN2A3YDdgHkC5wDdgN2A3YDdgN2A3YBrgABAGgAAQACAAMABAAFAAYABwAIAAkACgAlACYAJwAoACoAKwAwADEANwA5ADoAOwA8AD0APgA/AEAAQQBZAFoAWwBoAGkAagBrAGwAbQBuAHkAhgCHAIgAngCfAKEAogCjAKQApQCmAKcAqQCqAKsArgCvALAAsQCyALMAyADJAMoAywDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wD0APgA/AEdATEBMwE2AVABUgFTAVkBcAF2AXsBfQGAAYcBiQGMAY4BnAHXAdgB2QHmAecB6AH3AA0AAf+MAAL/jAAD/4wABP+MAAX/jAAG/4wAB/+MAAj/jAAJ/4wACv+MAAv/jADZ/5gBcP9eAE0ADABFABMARQAUAEUAFQBFABYARQAXAEUAGABFABkARQAaAEUAGwBFABwARQAdAEUAHgBFAB8ARQAlAEUAJgBFACcARQAoAEUAKgBFACsARQAwAEUAMQBFADQARQA1AEUANgBFADcARQA4AEUAOQBFADoARQA7AEUAPABFAD0ARQA+AEUAPwBFAEAARQBBAEUATQBFAE8ARQBQAEUAUQBFAFIARQB+AEUAfwBFAJUARQCbAEUAnABFAJ0ARQCeAEUAnwBFAKIARQCjAEUApABFAKcARQCpAEUArABFAK0ARQCuAEUArwBFALAARQCxAEUAsgBFALMARQC0AEUAtQBFALYARQC3AEUAuABFALkARQC6AEUAxgBFAMgARQDJAEUAygBFAMsARQDSAEUA8ABFAfgARQADAFr/uwBb/7sAav+6AAsAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAEAFn/XgBa/14AW/9eAff/XgADAGf/nABo/4wAaf+MAAIAWv+7AFv/uwAFANMAAADUAAAA1QAAANYAAADXAAAABwCeAEUAnwBFAKIARQCjAEUApABFAKcARQCpAEUAAQHzAAAAAgF1/68Bjf+7AAEBjgAAAAcA0wAeANQAHgDVAB4A1gAeANcAHgGOAAAB9ABFAAkAngBRAJ8AUQCiAFEAowBRAKQAUQCnAFEAqQBRAKoAUQCrAFEABQCgAEUApQBFAKYARQD0AAABjgAAAAcAngBRAJ8AUQCiAFEAowBRAKQAUQCnAFEAqQBRAAMAoQBFAPQAAAGOAAAAAQCkAEUAOQAMAEUAEwBFABQARQAVAEUAFgBFABcARQAYAEUAGQBFABoARQAbAEUAHABFAB0ARQAeAEUAHwBFACUARQAmAEUAJwBFACgARQAqAEUAKwBFADAARQAxAEUANABFADUARQA2AEUANwBFADgARQA5AEUAOgBFADsARQA8AEUAPQBFAD4ARQA/AEUAQABFAEEARQBNAEUATwBFAFAARQBRAEUAUgBFAH4ARQB/AEUAlQBFAJsARQCdAEUArABFAK0ARQCuAEUArwBFALAARQCxAEUAsgBFALMARQDSAEUA8ABFAVAARQAEAFn/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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AAEAngAABB0F0gAWAAABESMRMxEjNjYzMhYWFREjETQmIyIGBgFStLQfM71/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 (!response.ok || !body?.ok || !body.data) {
33723
- throw new Error(`Hook not found: ${id} (${body?.error?.message ?? `HTTP ${response.status}`})`);
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 resolveHook(id, opts) {
33728
- if (opts.dir)
33729
- return getHook(id, opts.dir);
33906
+ async function renderOne(input, id, opts) {
33730
33907
  try {
33731
- return getHook(id);
33732
- } catch {
33733
- return fetchHostedHook(id, opts.baseUrl, opts.fetchImpl);
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 recommendHooks(input) {
33737
- const limit = input.limit ?? 5;
33738
- const all = listHooks({
33739
- dir: input.dir,
33740
- type: input.type
33741
- });
33742
- const topic = (input.topic || "").toLowerCase();
33743
- const scored = all.map((card) => {
33744
- let score = 0;
33745
- const reasons = [];
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
- const newest = card.evidence.newest_days_ago;
33764
- if (typeof newest === "number" && newest <= 60) {
33765
- score += 0.5;
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(readFileSync5(join6(cliPackageRoot(CLI_MODULE_URL), "package.json"), "utf8"));
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 = join6(homedir4(), ".config", "easysociable", "credentials.json");
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 (!existsSync6(credentialPath)) return null;
33806
- const parsed = JSON.parse(readFileSync5(credentialPath, "utf8"));
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 mkdir(join6(homedir4(), ".config", "easysociable"), { recursive: true, mode: 448 });
33815
- await writeFile(credentialPath, `${JSON.stringify(credentials, null, 2)}
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 clientFromEnv() {
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 (existsSync6("/workspace") && statSync2("/workspace").isDirectory())
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) : homedir4();
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: join6(home, ".codex") },
33877
- { host: "claude", dir: join6(home, ".claude") }
34025
+ { host: "codex", dir: join5(home, ".codex") },
34026
+ { host: "claude", dir: join5(home, ".claude") }
33878
34027
  ];
33879
- return candidates.filter((item) => existsSync6(item.dir)).map((item) => ({ host: item.host, configPath: join6(item.dir, "mcp.json"), skillsPath: join6(item.dir, "skills") }));
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) => !existsSync6(join6(source, 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 ${join6(host.skillsPath, name)}`)
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 (existsSync6(host.configPath)) {
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 mkdir(host.skillsPath, { recursive: true, mode: 448 });
34066
+ await mkdir2(host.skillsPath, { recursive: true, mode: 448 });
33918
34067
  for (const skill of resolveInstallSkillIds(options))
33919
- await cp(join6(String(plan.source), skill), join6(host.skillsPath, skill), { recursive: true, force: false, errorOnExist: false });
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 readFile(String(opts.file), "utf8")))));
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 readFile(String(opts.file), "utf8")))));
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 = resolve2(String(opts.run), "..", "..");
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
- print({ authenticated: Boolean(stored), baseUrl: gatewayBaseUrl(stored), credentialPath }, Boolean(command.opts().json));
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 readFile(String(opts.file), "utf8")))));
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("create-draft").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.createDraft(JSON.parse(await readFile(String(opts.file), "utf8")))));
34118
- jsonOption(templates.command("update-draft").requiredOption("--id <id>").requiredOption("--file <path>")).action(withClient(async (client, opts) => client.updateDraft(String(opts.id), JSON.parse(await readFile(String(opts.file), "utf8")))));
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("recommend").description("Shortlist Page Templates per page from Page Contracts JSON ({ platform, pages: [{ role, density?, slotSummary? }], seed? })").requiredOption("--file <path>").option("--seed <seed>", "Tie-break seed, e.g. the content slug")).action(withClient(async (client, opts) => {
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 readFile(String(opts.file), "utf8")) });
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 readFile(String(opts.file), "utf8")))));
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 readFile(fileName);
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 formulas = program.command("formulas").description("Read Formula cards (local TikTok Radar graph/; `get` falls back to the hosted catalog)");
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
- const opts = command.optsWithGlobals();
34190
- const cards = listFormulas({
34191
- dir: opts.catalog ? String(opts.catalog) : void 0,
34192
- recipe: opts.recipe ? String(opts.recipe) : void 0,
34193
- niche: opts.niche ? String(opts.niche) : void 0,
34194
- status: opts.status ? String(opts.status) : void 0,
34195
- platform: opts.platform ? String(opts.platform) : void 0
34196
- });
34197
- print(cards.map((c) => ({
34198
- id: c.id,
34199
- recipe: c.recipe,
34200
- niche: c.niche,
34201
- swipe: c.swipe,
34202
- status: c.status,
34203
- accounts: c.evidence.account_count,
34204
- posts: c.evidence.post_count,
34205
- title_template: c.title_template
34206
- })), commandWantsJson(command));
34207
- });
34208
- jsonOption(formulas.command("get").requiredOption("--id <id>")).action(async (...args) => {
34209
- const command = args.at(-1);
34210
- const opts = command.optsWithGlobals();
34211
- const card = await resolveFormula(String(opts.id), { dir: opts.catalog ? String(opts.catalog) : void 0, baseUrl: gatewayBaseUrl() });
34212
- print(card, commandWantsJson(command));
34213
- });
34214
- jsonOption(formulas.command("catalog")).action((...args) => {
34215
- const command = args.at(-1);
34216
- const opts = command.optsWithGlobals();
34217
- print(loadCatalog(opts.catalog ? String(opts.catalog) : void 0), commandWantsJson(command));
34218
- });
34219
- jsonOption(formulas.command("recommend").description("Rank cards for a recipe (niche is a bonus). Pass --recipe from Jev theme\u2192recipe.").requiredOption("--recipe <recipe>").option("--niche <niche>").option("--platform <platform>", "tiktok").option("--fact-count <n>", "How many user facts are available to fill point beats").option("--limit <n>", "Max cards", "5")).action((...args) => {
34220
- const command = args.at(-1);
34221
- const opts = command.optsWithGlobals();
34222
- const result = recommendFormulas({
34223
- recipe: String(opts.recipe),
34224
- niche: opts.niche ? String(opts.niche) : void 0,
34225
- platform: opts.platform ? String(opts.platform) : void 0,
34226
- factCount: opts.factCount != null ? Number(opts.factCount) : void 0,
34227
- dir: opts.catalog ? String(opts.catalog) : void 0,
34228
- limit: opts.limit != null ? Number(opts.limit) : 5
34229
- });
34230
- print(result, commandWantsJson(command));
34231
- });
34232
- const hooks = program.command("hooks").description("Read Hook format molds (local graph/hooks/; `get` falls back to hosted catalog)");
34233
- hooks.option("--catalog <path>", "Path to graph/ dir (or set EASYSOCIABLE_FORMULA_CATALOG)");
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) => {