@oomol-lab/open-flow 0.1.0-beta.60 → 0.1.0-beta.62

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.
@@ -1,7 +1,7 @@
1
1
  import { o as __toESM, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
2
2
  import { a as derive, i as compute, l as val, r as combine, t as arrayShallowEqual } from "./dist-bO8nvHFH.js";
3
3
  import { l as useTranslate, o as I18nProvider } from "./dist-BFmpkX4P.js";
4
- import { $n as fastComponentRef, $r as itemPress, $t as useDirection, A as webhookSupportsBody, An as useImplicitActiveTrigger, Ar as ownerDocument, At as useCompositeListItem, Bi as isHTMLElement$1, Bn as useFloatingParentNodeId, Br as useOnMount, Ci as useRenderElement, Cn as useHoverFloatingInteraction, Ct as SelectGroup, D as authoringDefinitionSchemas, Di as warn, Dn as createInitialPopupStoreState, Dt as SelectValue, Ei as NOOP, Et as SelectTrigger, Fi as SafeReact, Fn as useClick, Fr as useTransitionStatus, Gn as DROPDOWN_COLLISION_AVOIDANCE, H as applyFlowChanges$1, Hn as FloatingTreeStore, Hr as createChangeEventDetails, Ii as useStableCallback, In as FloatingFocusManager, Ir as useOpenChangeComplete, Jr as focusOut, Jt as usePositioner, K as normalizeNodeName, Kn as POPUP_COLLISION_AVOIDANCE, Kr as closePress, Kt as useToolbarRootContext, L as comparePorts, Li as useRefWithInit, Ln as FloatingNode, Lr as useAnimationsFinished, Lt as COMPOSITE_KEYS, Mi as formatErrorMessage, Mn as useTriggerDataForwarding, Ni as mergeProps, Nn as useTriggerRegistration, Nr as Check, O as decodeRevisionContent, Oi as useMergedRefs, On as popupStoreSelectors, Ot as Separator, P as decisionTask, Pi as useIsoLayoutEffect, Pn as useDismiss, Pr as createLucideIcon, Q as nodeInputMappings, Qn as fastComponent, Qt as adaptiveOrigin, R as matchesSchema, Ri as getParentNode, Rn as FloatingTree, Si as clsx, Sn as useHoverReferenceInteraction, St as SelectContent, Ti as EMPTY_OBJECT, Tn as useSyncedFloatingRootContext, Tr as contains, U as isSchemaKeyword, Un as FloatingPortal, Vi as isLastTraversableNode, Vn as useFloatingTree, Vr as useValueChanged, W as nextNodeName, Wn as CLICK_TRIGGER_IDENTIFIER, Wr as cancelOpen, X as conditionInputPorts, Xt as InternalBackdrop, Yn as ReactStore, Yr as imperativeAction, Yt as getDisabledMountTransitionStyles, Zt as useAnchorPositioning, _i as useControlled, _n as safePolygon, _t as strictObject, ai as triggerHover, an as triggerOpenStateMapping, ar as Label, at as dequal, bi as cn, bn as useListNavigation, bt as Select, ci as useFormContext, cr as useTimeout, ct as boolean, d as TooltipContent, di as useBaseUiId, dr as getTabbableBeforeElement, dt as json$2, en as CompositeList, fi as useId$1, fr as isOutsideEvent, ft as lazy$1, gi as visuallyHiddenInput, gt as record$2, hi as visuallyHidden, ht as object$1, in as pressableTriggerOpenStateMapping, ir as useOnFirstRender, it as format, ji as useCompositeRootContext, jn as useOpenStateTransitions, ki as useButton, kn as PopupTriggerMap, kr as isMac, li as useRegisterFieldControl, lr as getNextTabbable, lt as discriminatedUnion, mi as fieldValidityMapping, mt as number, nn as getPseudoElementBounds, nr as createSelector, or as Input, ot as _enum, p as TooltipTrigger, pt as literal, q as portsByHandle, qn as FocusGuard, qt as useAnchoredPopupScrollLock, ri as siblingOpen, rn as popupStateMapping, si as useLabelableContext, sn as useOpenInteractionType, sr as Timeout, st as array, ti as none, tn as inertValue, tt as otherwiseOutput, u as Tooltip, ui as useFieldRootContext, ur as getTabbableAfterElement, ut as int, vi as Button, vn as useTypeahead, vt as string$1, wi as EMPTY_ARRAY, wn as useFocus, wt as SelectItem, xi as cva, xn as useInteractions, yi as buttonVariants, yn as useRole, yt as union, z as schemaObject, zn as useFloatingNodeId, zr as transitionStatusMapping } from "./icons-D70mz3qW.js";
4
+ import { $ as otherwiseOutput, $n as fastComponent, $t as adaptiveOrigin, Ai as useButton, An as PopupTriggerMap, Ar as isMac, B as applyFlowChanges$1, Bn as useFloatingNodeId, Br as transitionStatusMapping, Ci as clsx, Cn as useHoverReferenceInteraction, Ct as SelectContent, D as authoringDefinitionSchemas, Di as NOOP, Dt as SelectTrigger, Ei as EMPTY_OBJECT, En as useSyncedFloatingRootContext, Er as contains, F as comparePorts, Fi as useIsoLayoutEffect, Fn as useDismiss, Fr as createLucideIcon, G as portsByHandle, Gn as CLICK_TRIGGER_IDENTIFIER, Gr as cancelOpen, H as nextNodeName, Hi as isLastTraversableNode, Hn as useFloatingTree, Hr as useValueChanged, I as matchesSchema, Ii as SafeReact, In as useClick, Ir as useTransitionStatus, J as conditionInputPorts, Jn as FocusGuard, Jt as useAnchoredPopupScrollLock, Kn as DROPDOWN_COLLISION_AVOIDANCE, L as schemaObject, Li as useStableCallback, Ln as FloatingFocusManager, Lr as useOpenChangeComplete, M as decisionTask, Mi as useCompositeRootContext, Mn as useOpenStateTransitions, Ni as formatErrorMessage, Nn as useTriggerDataForwarding, O as decodeRevisionContent, Oi as warn, On as createInitialPopupStoreState, Ot as SelectValue, Pi as mergeProps, Pn as useTriggerRegistration, Pr as Check, Qt as useAnchorPositioning, Ri as useRefWithInit, Rn as FloatingNode, Rr as useAnimationsFinished, Rt as COMPOSITE_KEYS, Si as cva, Sn as useInteractions, Ti as EMPTY_ARRAY, Tn as useFocus, Tt as SelectItem, Un as FloatingTreeStore, Ur as createChangeEventDetails, V as isSchemaKeyword, Vi as isHTMLElement$1, Vn as useFloatingParentNodeId, Vr as useOnMount, W as normalizeNodeName, Wn as FloatingPortal, X as nodeInputMappings, Xn as ReactStore, Xr as imperativeAction, Xt as getDisabledMountTransitionStyles, Yr as focusOut, Yt as usePositioner, Zt as InternalBackdrop, _i as visuallyHiddenInput, _t as strictObject, an as pressableTriggerOpenStateMapping, ar as useOnFirstRender, at as webhookSupportsBody, bi as buttonVariants, bn as useRole, bt as unknown, ci as useLabelableContext, cn as useOpenInteractionType, cr as Timeout, ct as boolean, d as TooltipContent, di as useFieldRootContext, dr as getTabbableAfterElement, dt as json$2, ei as itemPress, en as useDirection, er as fastComponentRef, fi as useBaseUiId, fr as getTabbableBeforeElement, ft as lazy$1, gi as visuallyHidden, gt as record$2, hi as fieldValidityMapping, ht as object$1, ii as siblingOpen, in as popupStateMapping, jn as useImplicitActiveTrigger, jr as ownerDocument, jt as useCompositeListItem, ki as useMergedRefs, kn as popupStoreSelectors, kt as Separator, li as useFormContext, lr as useTimeout, lt as discriminatedUnion, mt as number, ni as none, nn as inertValue, nt as format, oi as triggerHover, on as triggerOpenStateMapping, or as Label, ot as _enum, p as TooltipTrigger, pi as useId$1, pr as isOutsideEvent, pt as literal, qn as POPUP_COLLISION_AVOIDANCE, qr as closePress, qt as useToolbarRootContext, rn as getPseudoElementBounds, rr as createSelector, rt as dequal, sr as Input, st as array, tn as CompositeList, u as Tooltip, ui as useRegisterFieldControl, ur as getNextTabbable, ut as int, vi as useControlled, vn as safePolygon, vt as string$1, wi as useRenderElement, wn as useHoverFloatingInteraction, wt as SelectGroup, xi as cn, xn as useListNavigation, xt as Select, yi as Button, yn as useTypeahead, yt as union, zi as getParentNode, zn as FloatingTree } from "./icons-CajfDpy_.js";
5
5
  import { c as isUiLanguage, d as uiLanguages, i as objectValue, l as resolveUiLanguage, s as valueType, t as initialValue } from "./value-DL_poNiC.js";
6
6
  import "./lib-Dws05GHj.js";
7
7
  import * as React from "react";
@@ -1016,7 +1016,7 @@ var authenticationSchema = union([
1016
1016
  in: _enum(["header", "query"])
1017
1017
  })
1018
1018
  ]);
1019
- strictObject({
1019
+ var authoringOpenApiSchema = strictObject({
1020
1020
  sourceUrl: string$1().min(1),
1021
1021
  path: string$1().min(1),
1022
1022
  method: string$1().min(1),
@@ -1113,37 +1113,54 @@ var when = union([
1113
1113
  all,
1114
1114
  strictObject({ any: array(union([expression, all])) })
1115
1115
  ]);
1116
- strictObject({}), strictObject({ sourceFlowIds: array(id$1).optional() }), authoringDefinitionSchemas.webhook.omit({ bodyFields: true }).extend({ body: inputFields }).strict(), strictObject({ schedule: authoringDefinitionSchemas.schedule }), strictObject({
1117
- key: id$1,
1118
- connectionId: id$1.optional(),
1119
- schedule: authoringDefinitionSchemas.schedule
1120
- }), strictObject({
1121
- key: id$1,
1122
- connectionId: id$1.optional()
1123
- }), strictObject({
1124
- inputs: inputFields,
1125
- outputs: outputFields,
1126
- capabilities: authoringDefinitionSchemas.capabilities.optional()
1127
- }), authoringDefinitionSchemas.connector.strict(), authoringDefinitionSchemas.agent.omit({
1128
- prompt: true,
1129
- tools: true
1130
- }).extend({
1131
- inputs: inputFields,
1132
- resultSchema: json$1.describe("JSON schema of the final result. Defaults to text. The tool manages the output definition; references can omit port."),
1133
- tools: array(agentTool$1),
1134
- notification: notification.optional()
1135
- }).strict(), authoringLlmConfiguration.extend({ inputs: inputFields }), authoringDefinitionSchemas.decision, strictObject({
1136
- match: _enum(["first", "all"]),
1137
- branches: array(strictObject({
1138
- name: id$1,
1139
- description: string$1().optional(),
1140
- when
1141
- }))
1142
- }), strictObject({
1143
- values: patch,
1144
- outputs: outputFields
1145
- }), strictObject({ inputs: inputFields }), strictObject({ inputs: inputFields });
1146
- var metadata = {
1116
+ var authoringConfigurations = {
1117
+ manual: strictObject({}),
1118
+ error: strictObject({ sourceFlowIds: array(id$1).optional() }),
1119
+ webhook: authoringDefinitionSchemas.webhook.omit({ bodyFields: true }).extend({ body: inputFields }).strict(),
1120
+ cron: strictObject({ schedule: authoringDefinitionSchemas.schedule }),
1121
+ poll: strictObject({
1122
+ key: id$1,
1123
+ connectionId: id$1.optional(),
1124
+ schedule: authoringDefinitionSchemas.schedule
1125
+ }),
1126
+ integration: strictObject({
1127
+ key: id$1,
1128
+ connectionId: id$1.optional()
1129
+ }),
1130
+ code: strictObject({
1131
+ inputs: inputFields,
1132
+ outputs: outputFields,
1133
+ capabilities: authoringDefinitionSchemas.capabilities.optional()
1134
+ }),
1135
+ connector: authoringDefinitionSchemas.connector.strict(),
1136
+ openapi: authoringOpenApiSchema,
1137
+ agent: authoringDefinitionSchemas.agent.omit({
1138
+ prompt: true,
1139
+ tools: true
1140
+ }).extend({
1141
+ inputs: inputFields,
1142
+ resultSchema: json$1.describe("JSON schema of the final result. Defaults to text. The tool manages the output definition; references can omit port."),
1143
+ tools: array(agentTool$1),
1144
+ notification: notification.optional()
1145
+ }).strict(),
1146
+ llm: authoringLlmConfiguration.extend({ inputs: inputFields }),
1147
+ decision: authoringDefinitionSchemas.decision,
1148
+ condition: strictObject({
1149
+ match: _enum(["first", "all"]),
1150
+ branches: array(strictObject({
1151
+ name: id$1,
1152
+ description: string$1().optional(),
1153
+ when
1154
+ }))
1155
+ }),
1156
+ value: strictObject({
1157
+ values: patch,
1158
+ outputs: outputFields
1159
+ }),
1160
+ wait: strictObject({ inputs: inputFields }),
1161
+ approval: strictObject({ inputs: inputFields })
1162
+ };
1163
+ var metadata$1 = {
1147
1164
  name: id$1.optional(),
1148
1165
  description: string$1().optional(),
1149
1166
  icon: string$1().optional(),
@@ -1151,7 +1168,7 @@ var metadata = {
1151
1168
  timeoutMs: number().nonnegative().optional()
1152
1169
  };
1153
1170
  var updates = strictObject({
1154
- ...metadata,
1171
+ ...metadata$1,
1155
1172
  config: patch.optional().describe("Recursively merge configuration; omitted fields remain unchanged and arrays replace as a whole. This includes schema objects: {} does not clear an existing schema. Use clear paths to remove fields, e.g. [\"config\",\"inputs\",\"amount\",\"schema\",\"type\"].")
1156
1173
  });
1157
1174
  var authoringEditSchema = discriminatedUnion("op", [
@@ -1292,6 +1309,419 @@ var authoringSearchResponse = object$1({
1292
1309
  version: literal(1)
1293
1310
  });
1294
1311
  //#endregion
1312
+ //#region src/control/common/publicationDecoders.ts
1313
+ function publication$7(value) {
1314
+ const source = record$1(value);
1315
+ const liveEnd = source.liveEnd == null ? void 0 : record$1(source.liveEnd);
1316
+ if (liveEnd != null && typeof liveEnd.enabled != "boolean") return invalidResponse();
1317
+ const operation = source.operation;
1318
+ const sourcePublicationId = source.sourcePublicationId;
1319
+ if (source.version != 1) return invalidResponse();
1320
+ if (operation != "publish" && operation != "rollback") return invalidResponse();
1321
+ if (sourcePublicationId != null && typeof sourcePublicationId != "string") return invalidResponse();
1322
+ return {
1323
+ ...liveEnd == null ? {} : { liveEnd: {
1324
+ enabled: liveEnd.enabled,
1325
+ endedAt: string(liveEnd.endedAt)
1326
+ } },
1327
+ actorId: string(source.actorId),
1328
+ closureDigest: string(source.closureDigest),
1329
+ createdAt: string(source.createdAt),
1330
+ engineContract: string(source.engineContract),
1331
+ flowId: string(source.flowId),
1332
+ modelVersion: integer(source.modelVersion),
1333
+ operation,
1334
+ publicationId: string(source.publicationId),
1335
+ sharedAccessDigest: string(source.sharedAccessDigest),
1336
+ revisionDigest: string(source.revisionDigest),
1337
+ revisionId: string(source.revisionId),
1338
+ ...sourcePublicationId == null ? {} : { sourcePublicationId },
1339
+ version: 1
1340
+ };
1341
+ }
1342
+ function publishOperation(value) {
1343
+ const source = record$1(value);
1344
+ const status = source.status;
1345
+ const common = {
1346
+ createdAt: string(source.createdAt),
1347
+ flowId: string(source.flowId),
1348
+ operationId: string(source.operationId),
1349
+ revisionId: string(source.revisionId),
1350
+ updatedAt: string(source.updatedAt),
1351
+ version: 1
1352
+ };
1353
+ if (source.version != 1) return invalidResponse();
1354
+ switch (status) {
1355
+ case "pending":
1356
+ exact(source, [
1357
+ "createdAt",
1358
+ "flowId",
1359
+ "operationId",
1360
+ "revisionId",
1361
+ "status",
1362
+ "updatedAt",
1363
+ "version"
1364
+ ]);
1365
+ return {
1366
+ ...common,
1367
+ status
1368
+ };
1369
+ case "succeeded":
1370
+ exact(source, [
1371
+ "createdAt",
1372
+ "flowId",
1373
+ "operationId",
1374
+ "publicationId",
1375
+ "revisionId",
1376
+ "status",
1377
+ "updatedAt",
1378
+ "version"
1379
+ ]);
1380
+ return {
1381
+ ...common,
1382
+ publicationId: string(source.publicationId),
1383
+ status
1384
+ };
1385
+ case "failed": {
1386
+ exact(source, [
1387
+ "createdAt",
1388
+ "flowId",
1389
+ "issue",
1390
+ "operationId",
1391
+ "revisionId",
1392
+ "status",
1393
+ "updatedAt",
1394
+ "version"
1395
+ ]);
1396
+ const issue = record$1(source.issue);
1397
+ const nodeId = issue.nodeId;
1398
+ exact(issue, [
1399
+ "code",
1400
+ "message",
1401
+ ...nodeId == null ? [] : ["nodeId"]
1402
+ ]);
1403
+ return {
1404
+ ...common,
1405
+ issue: {
1406
+ code: string(issue.code),
1407
+ message: string(issue.message),
1408
+ ...nodeId == null ? {} : { nodeId: string(nodeId) }
1409
+ },
1410
+ status
1411
+ };
1412
+ }
1413
+ default: return invalidResponse();
1414
+ }
1415
+ }
1416
+ function live(value) {
1417
+ const source = record$1(value);
1418
+ const status = source.status;
1419
+ const candidate = source.publication;
1420
+ if (source.version != 1 || typeof source.hasUnpublishedChanges != "boolean") return invalidResponse();
1421
+ if (status != "not-published" && status != "runnable" && status != "suspended") return invalidResponse();
1422
+ if (status == "not-published" && candidate !== null) return invalidResponse();
1423
+ if (status != "not-published" && candidate === null) return invalidResponse();
1424
+ return {
1425
+ flowId: string(source.flowId),
1426
+ hasUnpublishedChanges: source.hasUnpublishedChanges,
1427
+ publication: candidate === null ? null : publication$7(candidate),
1428
+ revision: integer(source.revision),
1429
+ status,
1430
+ version: 1
1431
+ };
1432
+ }
1433
+ function publicationPage(value) {
1434
+ const source = record$1(value);
1435
+ const nextCursor = source.nextCursor;
1436
+ const total = source.total;
1437
+ if (source.version != 1 || !Array.isArray(source.publications)) return invalidResponse();
1438
+ if (nextCursor != null && typeof nextCursor != "string") return invalidResponse();
1439
+ if (total != null && !Number.isSafeInteger(total)) return invalidResponse();
1440
+ return {
1441
+ ...nextCursor == null ? {} : { nextCursor },
1442
+ publications: source.publications.map(publication$7),
1443
+ ...total == null ? {} : { total },
1444
+ version: 1
1445
+ };
1446
+ }
1447
+ //#endregion
1448
+ //#region src/trigger/common/configSchema.ts
1449
+ var configInputsSchema = array(union([strictObject({
1450
+ handle: string$1().min(1),
1451
+ description: string$1().optional(),
1452
+ jsonSchema: json$2(),
1453
+ nullable: boolean(),
1454
+ value: json$2().optional()
1455
+ }), strictObject({
1456
+ group: string$1(),
1457
+ collapsed: boolean().optional()
1458
+ })]));
1459
+ //#endregion
1460
+ //#region src/control/common/triggerDecoders.ts
1461
+ function triggerKeySummary(value) {
1462
+ const source = record$1(value);
1463
+ const type = source.type;
1464
+ if (type != "integration" && type != "poll") return invalidResponse();
1465
+ return {
1466
+ description: typeof source.description == "string" ? source.description : invalidResponse(),
1467
+ displayName: string(source.displayName),
1468
+ key: string(source.key),
1469
+ name: string(source.name),
1470
+ provider: string(source.provider),
1471
+ type
1472
+ };
1473
+ }
1474
+ function triggerKey(value) {
1475
+ const source = record$1(value);
1476
+ const summary = triggerKeySummary(source);
1477
+ const base = {
1478
+ configInputs: configInputsSchema.parse(source.configInputs),
1479
+ definitionVersion: source.definitionVersion === 2 ? 2 : invalidResponse(),
1480
+ description: summary.description,
1481
+ displayName: summary.displayName,
1482
+ key: summary.key,
1483
+ name: summary.name,
1484
+ outputs: (Array.isArray(source.outputs) ? source.outputs : invalidResponse()).map((entry) => {
1485
+ const port = record$1(entry);
1486
+ return Object.assign({
1487
+ handle: string(port.handle),
1488
+ jsonSchema: jsonValue(port.jsonSchema),
1489
+ nullable: typeof port.nullable === "boolean" ? port.nullable : invalidResponse()
1490
+ }, port.description == null ? {} : { description: string(port.description) });
1491
+ }),
1492
+ provider: summary.provider
1493
+ };
1494
+ if (summary.type == "poll") return {
1495
+ ...base,
1496
+ type: "poll"
1497
+ };
1498
+ const endpoint = record$1(source.endpoint);
1499
+ const body = record$1(endpoint.body);
1500
+ if (!Array.isArray(endpoint.methods) || !Array.isArray(body.formats) || typeof body.allowArray != "boolean" || typeof body.allowEmpty != "boolean") return invalidResponse();
1501
+ const methods = endpoint.methods.map(string);
1502
+ const formats = body.formats.map(string);
1503
+ const successStatus = integer(endpoint.successStatus);
1504
+ if (methods.some((method) => ![
1505
+ "DELETE",
1506
+ "GET",
1507
+ "HEAD",
1508
+ "PATCH",
1509
+ "POST",
1510
+ "PUT"
1511
+ ].includes(method)) || formats.some((format) => ![
1512
+ "form",
1513
+ "json",
1514
+ "multipart",
1515
+ "text"
1516
+ ].includes(format)) || successStatus < 200 || successStatus > 299) return invalidResponse();
1517
+ return {
1518
+ ...base,
1519
+ endpoint: {
1520
+ body: {
1521
+ allowArray: body.allowArray,
1522
+ allowEmpty: body.allowEmpty,
1523
+ formats
1524
+ },
1525
+ methods,
1526
+ successStatus
1527
+ },
1528
+ type: "integration"
1529
+ };
1530
+ }
1531
+ var triggerKinds = /* @__PURE__ */ new Set([
1532
+ "error",
1533
+ "cron",
1534
+ "integration",
1535
+ "poll",
1536
+ "webhook"
1537
+ ]);
1538
+ var triggerHealth = /* @__PURE__ */ new Set([
1539
+ "failed",
1540
+ "healthy",
1541
+ "initializing",
1542
+ "needs_reauth",
1543
+ "suspended"
1544
+ ]);
1545
+ var triggerActivityKinds = /* @__PURE__ */ new Set([
1546
+ "delivery.failed",
1547
+ "health.failed",
1548
+ "health.needs_reauth",
1549
+ "health.recovered",
1550
+ "health.suspended",
1551
+ "operator.paused",
1552
+ "operator.resumed"
1553
+ ]);
1554
+ function triggerBinding(value) {
1555
+ const source = record$1(value);
1556
+ const health = source.health;
1557
+ const listener = source.listener == null ? void 0 : record$1(source.listener);
1558
+ if (listener != null && listener.health != "healthy" && listener.health != "failed" && listener.health != "needs_reauth") return invalidResponse();
1559
+ const kind = source.kind;
1560
+ const runtimeVersion = integer(source.runtimeVersion);
1561
+ if (source.version != 1 || typeof health != "string" || !triggerHealth.has(health)) return invalidResponse();
1562
+ if (typeof kind != "string" || !triggerKinds.has(kind)) return invalidResponse();
1563
+ if (runtimeVersion <= 0) return invalidResponse();
1564
+ return {
1565
+ ...source.currentPublicationId == null ? {} : { currentPublicationId: string(source.currentPublicationId) },
1566
+ ...source.currentRevisionId == null ? {} : { currentRevisionId: string(source.currentRevisionId) },
1567
+ ...source.endpointUrl == null ? {} : { endpointUrl: string(source.endpointUrl) },
1568
+ ...listener == null ? {} : { listener: {
1569
+ health: listener.health,
1570
+ ...listener.lastErrorCode == null ? {} : { lastErrorCode: string(listener.lastErrorCode) }
1571
+ } },
1572
+ flowId: string(source.flowId),
1573
+ health,
1574
+ kind,
1575
+ ...source.lastErrorCode == null ? {} : { lastErrorCode: string(source.lastErrorCode) },
1576
+ runtimeVersion,
1577
+ triggerNodeId: string(source.triggerNodeId),
1578
+ updatedAt: string(source.updatedAt),
1579
+ version: 1
1580
+ };
1581
+ }
1582
+ function triggerBindingDetail(value) {
1583
+ const source = record$1(value);
1584
+ if (source.version != 1) return invalidResponse();
1585
+ return {
1586
+ binding: triggerBinding(source.binding),
1587
+ version: 1
1588
+ };
1589
+ }
1590
+ function triggerActivity(value) {
1591
+ const source = record$1(value);
1592
+ const kind = source.kind;
1593
+ if (typeof kind != "string" || !triggerActivityKinds.has(kind)) return invalidResponse();
1594
+ const errorCode = optionalString(source.errorCode);
1595
+ const errorMessage = optionalString(source.errorMessage);
1596
+ if (errorMessage != null && errorMessage.length > 512) return invalidResponse();
1597
+ return {
1598
+ activityId: string(source.activityId),
1599
+ createdAt: string(source.createdAt),
1600
+ ...errorCode == null ? {} : { errorCode },
1601
+ ...errorMessage == null ? {} : { errorMessage },
1602
+ kind
1603
+ };
1604
+ }
1605
+ function triggerActivityPage(value) {
1606
+ const source = record$1(value);
1607
+ const nextCursor = optionalString(source.nextCursor);
1608
+ if (source.version != 1 || !Array.isArray(source.activities)) return invalidResponse();
1609
+ return {
1610
+ activities: source.activities.map(triggerActivity),
1611
+ ...nextCursor == null ? {} : { nextCursor },
1612
+ version: 1
1613
+ };
1614
+ }
1615
+ function pollTriggerTestResult(value) {
1616
+ const source = record$1(value);
1617
+ const filtered = integer(source.filtered);
1618
+ if (source.version != 1 || !Array.isArray(source.events) || typeof source.hasMore != "boolean" || filtered < 0) return invalidResponse();
1619
+ return {
1620
+ events: source.events.map((event) => {
1621
+ const object = record$1(event);
1622
+ return Object.fromEntries(Object.entries(object).map(([key, item]) => [key, jsonValue(item)]));
1623
+ }),
1624
+ filtered,
1625
+ hasMore: source.hasMore,
1626
+ version: 1
1627
+ };
1628
+ }
1629
+ //#endregion
1630
+ //#region src/control/common/liveDetails.ts
1631
+ var metadata = {
1632
+ nodeId: string$1().min(1),
1633
+ name: string$1(),
1634
+ description: string$1().optional()
1635
+ };
1636
+ var binding = unknown().transform(triggerBinding);
1637
+ var provider = {
1638
+ provider: string$1().min(1),
1639
+ inputs: record$2(string$1(), discriminatedUnion("kind", [strictObject({
1640
+ kind: literal("value"),
1641
+ value: json$2()
1642
+ }), strictObject({ kind: literal("unset") })]))
1643
+ };
1644
+ var entrySchema = discriminatedUnion("type", [
1645
+ strictObject({
1646
+ ...metadata,
1647
+ type: literal("manual"),
1648
+ config: authoringConfigurations.manual
1649
+ }),
1650
+ strictObject({
1651
+ ...metadata,
1652
+ type: literal("webhook"),
1653
+ config: authoringConfigurations.webhook,
1654
+ binding
1655
+ }),
1656
+ strictObject({
1657
+ ...metadata,
1658
+ type: literal("cron"),
1659
+ config: authoringConfigurations.cron,
1660
+ binding
1661
+ }),
1662
+ strictObject({
1663
+ ...metadata,
1664
+ type: literal("error"),
1665
+ config: authoringConfigurations.error,
1666
+ binding
1667
+ }),
1668
+ strictObject({
1669
+ ...metadata,
1670
+ ...provider,
1671
+ type: literal("poll"),
1672
+ config: authoringConfigurations.poll,
1673
+ binding
1674
+ }),
1675
+ strictObject({
1676
+ ...metadata,
1677
+ ...provider,
1678
+ type: literal("integration"),
1679
+ config: authoringConfigurations.integration,
1680
+ binding
1681
+ })
1682
+ ]);
1683
+ function decodeLiveDetails(value) {
1684
+ const source = record$1(value);
1685
+ const flowId = string(source.flowId);
1686
+ if (source.version != 1 || !Array.isArray(source.entries)) return invalidResponse();
1687
+ if (source.publication === null) {
1688
+ if (source.status != "not-published" || source.entries.length != 0 || Object.hasOwn(source, "enabled")) return invalidResponse();
1689
+ return {
1690
+ flowId,
1691
+ publication: null,
1692
+ status: "not-published",
1693
+ entries: [],
1694
+ version: 1
1695
+ };
1696
+ }
1697
+ const current = publication$7(source.publication);
1698
+ const status = source.status;
1699
+ if (current.flowId != flowId || typeof source.enabled != "boolean") return invalidResponse();
1700
+ if (status != "runnable" && status != "suspended") return invalidResponse();
1701
+ if (!source.enabled && source.status == "runnable") return invalidResponse();
1702
+ return {
1703
+ flowId,
1704
+ publication: current,
1705
+ status,
1706
+ enabled: source.enabled,
1707
+ entries: decodeEntries(source.entries, current),
1708
+ version: 1
1709
+ };
1710
+ }
1711
+ /** Both producers and consumers enforce the same published-entry invariants. */
1712
+ function decodeEntries(values, current) {
1713
+ const parsed = array(entrySchema).safeParse(values);
1714
+ if (!parsed.success) return invalidResponse();
1715
+ const ids = /* @__PURE__ */ new Set();
1716
+ for (const entry of parsed.data) {
1717
+ if (ids.has(entry.nodeId)) return invalidResponse();
1718
+ ids.add(entry.nodeId);
1719
+ if (entry.type != "manual" && (entry.binding.flowId != current.flowId || entry.binding.triggerNodeId != entry.nodeId || entry.binding.kind != entry.type || entry.binding.currentPublicationId != current.publicationId || entry.binding.currentRevisionId != current.revisionId)) return invalidResponse();
1720
+ if (entry.type == "webhook" && (!entry.binding.endpointUrl || !webhookSupportsBody(entry.config.method) && Object.keys(entry.config.body).length > 0)) return invalidResponse();
1721
+ }
1722
+ return parsed.data;
1723
+ }
1724
+ //#endregion
1295
1725
  //#region src/control/common/providerIconSprite.ts
1296
1726
  /** Optional artwork must never make an otherwise usable catalog unavailable. */
1297
1727
  function providerIconAppearance(metadata, position) {
@@ -2243,191 +2673,6 @@ function decodeEventSources(value) {
2243
2673
  }).parse(value);
2244
2674
  }
2245
2675
  //#endregion
2246
- //#region src/trigger/common/configSchema.ts
2247
- var configInputsSchema = array(union([strictObject({
2248
- handle: string$1().min(1),
2249
- description: string$1().optional(),
2250
- jsonSchema: json$2(),
2251
- nullable: boolean(),
2252
- value: json$2().optional()
2253
- }), strictObject({
2254
- group: string$1(),
2255
- collapsed: boolean().optional()
2256
- })]));
2257
- //#endregion
2258
- //#region src/control/common/triggerDecoders.ts
2259
- function triggerKeySummary(value) {
2260
- const source = record$1(value);
2261
- const type = source.type;
2262
- if (type != "integration" && type != "poll") return invalidResponse();
2263
- return {
2264
- description: typeof source.description == "string" ? source.description : invalidResponse(),
2265
- displayName: string(source.displayName),
2266
- key: string(source.key),
2267
- name: string(source.name),
2268
- provider: string(source.provider),
2269
- type
2270
- };
2271
- }
2272
- function triggerKey(value) {
2273
- const source = record$1(value);
2274
- const summary = triggerKeySummary(source);
2275
- const base = {
2276
- configInputs: configInputsSchema.parse(source.configInputs),
2277
- definitionVersion: source.definitionVersion === 2 ? 2 : invalidResponse(),
2278
- description: summary.description,
2279
- displayName: summary.displayName,
2280
- key: summary.key,
2281
- name: summary.name,
2282
- outputs: (Array.isArray(source.outputs) ? source.outputs : invalidResponse()).map((entry) => {
2283
- const port = record$1(entry);
2284
- return Object.assign({
2285
- handle: string(port.handle),
2286
- jsonSchema: jsonValue(port.jsonSchema),
2287
- nullable: typeof port.nullable === "boolean" ? port.nullable : invalidResponse()
2288
- }, port.description == null ? {} : { description: string(port.description) });
2289
- }),
2290
- provider: summary.provider
2291
- };
2292
- if (summary.type == "poll") return {
2293
- ...base,
2294
- type: "poll"
2295
- };
2296
- const endpoint = record$1(source.endpoint);
2297
- const body = record$1(endpoint.body);
2298
- if (!Array.isArray(endpoint.methods) || !Array.isArray(body.formats) || typeof body.allowArray != "boolean" || typeof body.allowEmpty != "boolean") return invalidResponse();
2299
- const methods = endpoint.methods.map(string);
2300
- const formats = body.formats.map(string);
2301
- const successStatus = integer(endpoint.successStatus);
2302
- if (methods.some((method) => ![
2303
- "DELETE",
2304
- "GET",
2305
- "HEAD",
2306
- "PATCH",
2307
- "POST",
2308
- "PUT"
2309
- ].includes(method)) || formats.some((format) => ![
2310
- "form",
2311
- "json",
2312
- "multipart",
2313
- "text"
2314
- ].includes(format)) || successStatus < 200 || successStatus > 299) return invalidResponse();
2315
- return {
2316
- ...base,
2317
- endpoint: {
2318
- body: {
2319
- allowArray: body.allowArray,
2320
- allowEmpty: body.allowEmpty,
2321
- formats
2322
- },
2323
- methods,
2324
- successStatus
2325
- },
2326
- type: "integration"
2327
- };
2328
- }
2329
- var triggerKinds = /* @__PURE__ */ new Set([
2330
- "error",
2331
- "cron",
2332
- "integration",
2333
- "poll",
2334
- "webhook"
2335
- ]);
2336
- var triggerHealth = /* @__PURE__ */ new Set([
2337
- "failed",
2338
- "healthy",
2339
- "initializing",
2340
- "needs_reauth",
2341
- "suspended"
2342
- ]);
2343
- var triggerActivityKinds = /* @__PURE__ */ new Set([
2344
- "delivery.failed",
2345
- "health.failed",
2346
- "health.needs_reauth",
2347
- "health.recovered",
2348
- "health.suspended",
2349
- "operator.paused",
2350
- "operator.resumed"
2351
- ]);
2352
- function triggerBinding(value) {
2353
- const source = record$1(value);
2354
- const health = source.health;
2355
- const listener = source.listener == null ? void 0 : record$1(source.listener);
2356
- if (listener != null && listener.health != "healthy" && listener.health != "failed" && listener.health != "needs_reauth") return invalidResponse();
2357
- const kind = source.kind;
2358
- const operatorState = source.operatorState;
2359
- const runtimeVersion = integer(source.runtimeVersion);
2360
- if (source.version != 1 || typeof health != "string" || !triggerHealth.has(health)) return invalidResponse();
2361
- if (typeof kind != "string" || !triggerKinds.has(kind)) return invalidResponse();
2362
- if (operatorState != "active" && operatorState != "paused") return invalidResponse();
2363
- if (runtimeVersion <= 0) return invalidResponse();
2364
- return {
2365
- ...source.currentPublicationId == null ? {} : { currentPublicationId: string(source.currentPublicationId) },
2366
- ...source.currentRevisionId == null ? {} : { currentRevisionId: string(source.currentRevisionId) },
2367
- ...source.endpointUrl == null ? {} : { endpointUrl: string(source.endpointUrl) },
2368
- ...listener == null ? {} : { listener: {
2369
- health: listener.health,
2370
- ...listener.lastErrorCode == null ? {} : { lastErrorCode: string(listener.lastErrorCode) }
2371
- } },
2372
- flowId: string(source.flowId),
2373
- health,
2374
- kind,
2375
- ...source.lastErrorCode == null ? {} : { lastErrorCode: string(source.lastErrorCode) },
2376
- operatorState,
2377
- runtimeVersion,
2378
- triggerNodeId: string(source.triggerNodeId),
2379
- updatedAt: string(source.updatedAt),
2380
- version: 1
2381
- };
2382
- }
2383
- function triggerBindingDetail(value) {
2384
- const source = record$1(value);
2385
- if (source.version != 1) return invalidResponse();
2386
- return {
2387
- binding: triggerBinding(source.binding),
2388
- version: 1
2389
- };
2390
- }
2391
- function triggerActivity(value) {
2392
- const source = record$1(value);
2393
- const kind = source.kind;
2394
- if (typeof kind != "string" || !triggerActivityKinds.has(kind)) return invalidResponse();
2395
- const errorCode = optionalString(source.errorCode);
2396
- const errorMessage = optionalString(source.errorMessage);
2397
- if (errorMessage != null && errorMessage.length > 512) return invalidResponse();
2398
- return {
2399
- activityId: string(source.activityId),
2400
- createdAt: string(source.createdAt),
2401
- ...errorCode == null ? {} : { errorCode },
2402
- ...errorMessage == null ? {} : { errorMessage },
2403
- kind
2404
- };
2405
- }
2406
- function triggerActivityPage(value) {
2407
- const source = record$1(value);
2408
- const nextCursor = optionalString(source.nextCursor);
2409
- if (source.version != 1 || !Array.isArray(source.activities)) return invalidResponse();
2410
- return {
2411
- activities: source.activities.map(triggerActivity),
2412
- ...nextCursor == null ? {} : { nextCursor },
2413
- version: 1
2414
- };
2415
- }
2416
- function pollTriggerTestResult(value) {
2417
- const source = record$1(value);
2418
- const filtered = integer(source.filtered);
2419
- if (source.version != 1 || !Array.isArray(source.events) || typeof source.hasMore != "boolean" || filtered < 0) return invalidResponse();
2420
- return {
2421
- events: source.events.map((event) => {
2422
- const object = record$1(event);
2423
- return Object.fromEntries(Object.entries(object).map(([key, item]) => [key, jsonValue(item)]));
2424
- }),
2425
- filtered,
2426
- hasMore: source.hasMore,
2427
- version: 1
2428
- };
2429
- }
2430
- //#endregion
2431
2676
  //#region src/control/common/triggerCatalog.ts
2432
2677
  function decodeTriggerCatalog(value) {
2433
2678
  const source = record$1(value);
@@ -2760,140 +3005,54 @@ function errorListener(value) {
2760
3005
  enabled: source.enabled
2761
3006
  };
2762
3007
  }
2763
- //#endregion
2764
- //#region src/control/common/publicationDecoders.ts
2765
- function publication$7(value) {
2766
- const source = record$1(value);
2767
- const liveEnd = source.liveEnd == null ? void 0 : record$1(source.liveEnd);
2768
- if (liveEnd != null && typeof liveEnd.enabled != "boolean") return invalidResponse();
2769
- const operation = source.operation;
2770
- const sourcePublicationId = source.sourcePublicationId;
2771
- if (source.version != 1) return invalidResponse();
2772
- if (operation != "publish" && operation != "rollback") return invalidResponse();
2773
- if (sourcePublicationId != null && typeof sourcePublicationId != "string") return invalidResponse();
3008
+ function variableReferences(input) {
3009
+ const source = record$1(input);
3010
+ exact(source, [
3011
+ "version",
3012
+ "references",
3013
+ "unknown"
3014
+ ]);
3015
+ if (source.version != 1 || !Array.isArray(source.references) || !Array.isArray(source.unknown)) return invalidResponse();
2774
3016
  return {
2775
- ...liveEnd == null ? {} : { liveEnd: {
2776
- enabled: liveEnd.enabled,
2777
- endedAt: string(liveEnd.endedAt)
2778
- } },
2779
- actorId: string(source.actorId),
2780
- closureDigest: string(source.closureDigest),
2781
- createdAt: string(source.createdAt),
2782
- engineContract: string(source.engineContract),
2783
- flowId: string(source.flowId),
2784
- modelVersion: integer(source.modelVersion),
2785
- operation,
2786
- publicationId: string(source.publicationId),
2787
- sharedAccessDigest: string(source.sharedAccessDigest),
2788
- revisionDigest: string(source.revisionDigest),
2789
- revisionId: string(source.revisionId),
2790
- ...sourcePublicationId == null ? {} : { sourcePublicationId },
2791
- version: 1
2792
- };
2793
- }
2794
- function publishOperation(value) {
2795
- const source = record$1(value);
2796
- const status = source.status;
2797
- const common = {
2798
- createdAt: string(source.createdAt),
2799
- flowId: string(source.flowId),
2800
- operationId: string(source.operationId),
2801
- revisionId: string(source.revisionId),
2802
- updatedAt: string(source.updatedAt),
2803
- version: 1
2804
- };
2805
- if (source.version != 1) return invalidResponse();
2806
- switch (status) {
2807
- case "pending":
2808
- exact(source, [
2809
- "createdAt",
2810
- "flowId",
2811
- "operationId",
2812
- "revisionId",
2813
- "status",
2814
- "updatedAt",
2815
- "version"
2816
- ]);
2817
- return {
2818
- ...common,
2819
- status
2820
- };
2821
- case "succeeded":
2822
- exact(source, [
2823
- "createdAt",
3017
+ version: 1,
3018
+ references: source.references.map((value) => {
3019
+ const item = record$1(value);
3020
+ exact(item, [
2824
3021
  "flowId",
2825
- "operationId",
2826
- "publicationId",
2827
- "revisionId",
2828
- "status",
2829
- "updatedAt",
2830
- "version"
3022
+ "flowName",
3023
+ "draft",
3024
+ "live"
2831
3025
  ]);
3026
+ if (typeof item.draft != "boolean") return invalidResponse();
3027
+ const live = item.live === null ? null : record$1(item.live);
3028
+ if (live != null) {
3029
+ exact(live, ["publicationId", "enabled"]);
3030
+ if (typeof live.enabled != "boolean") return invalidResponse();
3031
+ }
2832
3032
  return {
2833
- ...common,
2834
- publicationId: string(source.publicationId),
2835
- status
3033
+ flowId: string(item.flowId),
3034
+ flowName: string(item.flowName),
3035
+ draft: item.draft,
3036
+ live: live == null ? null : {
3037
+ publicationId: string(live.publicationId),
3038
+ enabled: live.enabled
3039
+ }
2836
3040
  };
2837
- case "failed": {
2838
- exact(source, [
2839
- "createdAt",
3041
+ }),
3042
+ unknown: source.unknown.map((value) => {
3043
+ const item = record$1(value);
3044
+ exact(item, [
2840
3045
  "flowId",
2841
- "issue",
2842
- "operationId",
2843
- "revisionId",
2844
- "status",
2845
- "updatedAt",
2846
- "version"
2847
- ]);
2848
- const issue = record$1(source.issue);
2849
- const nodeId = issue.nodeId;
2850
- exact(issue, [
2851
- "code",
2852
- "message",
2853
- ...nodeId == null ? [] : ["nodeId"]
3046
+ "flowName",
3047
+ "scope"
2854
3048
  ]);
3049
+ if (item.scope !== "draft" && item.scope !== "live") return invalidResponse();
2855
3050
  return {
2856
- ...common,
2857
- issue: {
2858
- code: string(issue.code),
2859
- message: string(issue.message),
2860
- ...nodeId == null ? {} : { nodeId: string(nodeId) }
2861
- },
2862
- status
3051
+ flowId: string(item.flowId),
3052
+ flowName: string(item.flowName),
3053
+ scope: item.scope
2863
3054
  };
2864
- }
2865
- default: return invalidResponse();
2866
- }
2867
- }
2868
- function live(value) {
2869
- const source = record$1(value);
2870
- const status = source.status;
2871
- const candidate = source.publication;
2872
- if (source.version != 1 || typeof source.hasUnpublishedChanges != "boolean") return invalidResponse();
2873
- if (status != "not-published" && status != "runnable" && status != "suspended") return invalidResponse();
2874
- if (status == "not-published" && candidate !== null) return invalidResponse();
2875
- if (status != "not-published" && candidate === null) return invalidResponse();
2876
- return {
2877
- flowId: string(source.flowId),
2878
- hasUnpublishedChanges: source.hasUnpublishedChanges,
2879
- publication: candidate === null ? null : publication$7(candidate),
2880
- revision: integer(source.revision),
2881
- status,
2882
- version: 1
2883
- };
2884
- }
2885
- function publicationPage(value) {
2886
- const source = record$1(value);
2887
- const nextCursor = source.nextCursor;
2888
- const total = source.total;
2889
- if (source.version != 1 || !Array.isArray(source.publications)) return invalidResponse();
2890
- if (nextCursor != null && typeof nextCursor != "string") return invalidResponse();
2891
- if (total != null && !Number.isSafeInteger(total)) return invalidResponse();
2892
- return {
2893
- ...nextCursor == null ? {} : { nextCursor },
2894
- publications: source.publications.map(publication$7),
2895
- ...total == null ? {} : { total },
2896
- version: 1
3055
+ })
2897
3056
  };
2898
3057
  }
2899
3058
  //#endregion
@@ -3472,6 +3631,9 @@ var ControlClient = class {
3472
3631
  version: 1
3473
3632
  };
3474
3633
  }
3634
+ async getVariableReferences(name, signal) {
3635
+ return variableReferences(await this.request(`/v1/variables/${segment$1(name)}/references`, { signal }));
3636
+ }
3475
3637
  async getVariable(name) {
3476
3638
  return variable(await this.request(`/v1/variables/${segment$1(name)}`));
3477
3639
  }
@@ -3584,18 +3746,6 @@ var ControlClient = class {
3584
3746
  const query = parameters.size == 0 ? "" : `?${parameters}`;
3585
3747
  return triggerActivityPage(await this.request(`/v1/flows/${segment$1(flowId)}/triggers/${segment$1(triggerNodeId)}/activities${query}`));
3586
3748
  }
3587
- async pauseFlowTrigger(flowId, triggerNodeId) {
3588
- return triggerBinding(await this.request(`/v1/flows/${segment$1(flowId)}/triggers/${segment$1(triggerNodeId)}/pause`, {
3589
- body: JSON.stringify({ version: 1 }),
3590
- method: "POST"
3591
- }));
3592
- }
3593
- async resumeFlowTrigger(flowId, triggerNodeId) {
3594
- return triggerBinding(await this.request(`/v1/flows/${segment$1(flowId)}/triggers/${segment$1(triggerNodeId)}/resume`, {
3595
- body: JSON.stringify({ version: 1 }),
3596
- method: "POST"
3597
- }));
3598
- }
3599
3749
  async testFlowPollTrigger(flowId, triggerNodeId) {
3600
3750
  return pollTriggerTestResult(await this.request(`/v1/flows/${segment$1(flowId)}/triggers/${segment$1(triggerNodeId)}/test`, {
3601
3751
  body: JSON.stringify({ version: 1 }),
@@ -3851,6 +4001,11 @@ var ControlClient = class {
3851
4001
  method: "POST"
3852
4002
  }));
3853
4003
  }
4004
+ async getLiveDetails(flowId, signal) {
4005
+ const details = decodeLiveDetails(await this.request(`/v1/flows/${segment$1(flowId)}/live/details`, { signal }));
4006
+ if (details.flowId != flowId) return invalidResponse();
4007
+ return details;
4008
+ }
3854
4009
  async getLive(flowId, signal) {
3855
4010
  return live(await this.request(`/v1/flows/${segment$1(flowId)}/live`, { signal }));
3856
4011
  }
@@ -10729,9 +10884,7 @@ var resources$1 = {
10729
10884
  "networkFailed": "Could not reach the service. Check your connection and try again.",
10730
10885
  "published": "Published {{name}}.",
10731
10886
  "rolledBack": "Rolled Live back to revision {{revision}}.",
10732
- "requestFailed": "The service could not complete this operation. Try again later.",
10733
- "triggerPaused": "Trigger activation is paused.",
10734
- "triggerResumed": "Trigger activation is resuming."
10887
+ "requestFailed": "The service could not complete this operation. Try again later."
10735
10888
  },
10736
10889
  publication: {
10737
10890
  "active": "Active",
@@ -10768,13 +10921,10 @@ var resources$1 = {
10768
10921
  "loadingTriggerActivities": "Loading activity…",
10769
10922
  "lastError": "Last error",
10770
10923
  "needsReauth": "Needs reauthorization",
10771
- "needsReauthDescription": "Review this Trigger's Connection in the Draft and reauthorize it before resuming delivery.",
10924
+ "needsReauthDescription": "This Live Trigger's Connection needs reauthorization. Contact the connection administrator to reauthorize it, then check the Trigger's status.",
10772
10925
  "none": "Not published",
10773
10926
  "notPublished": "Not published",
10774
10927
  "operation": "Operation",
10775
- "operatorState": "Operator state",
10776
- "pauseTrigger": "Pause",
10777
- "pausingTrigger": "Pausing…",
10778
10928
  "publishDraft": "Publish to Live",
10779
10929
  "publishConfirm": "Publish this draft?",
10780
10930
  "publishConfirmDescription": "The current draft will become the live version.",
@@ -10790,8 +10940,6 @@ var resources$1 = {
10790
10940
  "pollTestResult": "Test result",
10791
10941
  "pollTesting": "Testing…",
10792
10942
  "reconciling": "Reconciling",
10793
- "resumeTrigger": "Resume",
10794
- "resumingTrigger": "Resuming…",
10795
10943
  "retired": "Retired",
10796
10944
  "revision": "Fixed revision",
10797
10945
  "rollback": "Roll back",
@@ -11263,6 +11411,14 @@ var resources$1 = {
11263
11411
  "description": "Description",
11264
11412
  "required": "Input required"
11265
11413
  },
11414
+ webhookDeployment: {
11415
+ "title": "Live Webhook",
11416
+ "unpublished": "Publish this flow to generate a Webhook URL.",
11417
+ "unpublishedChanges": "Live uses the published version. Draft changes are not live yet.",
11418
+ "loadFailed": "Could not load the Webhook deployment.",
11419
+ "pending": "The Webhook URL is not available yet.",
11420
+ "copyFailed": "Could not copy. Select the URL and copy it manually."
11421
+ },
11266
11422
  webhookEditor: {
11267
11423
  "webhookAddHeader": "Add header",
11268
11424
  "webhookDeleteHeader": "Delete response header",
@@ -12168,9 +12324,7 @@ var resources$1 = {
12168
12324
  "networkFailed": "暂时无法连接服务,请检查网络后重试。",
12169
12325
  "published": "已发布 {{name}}。",
12170
12326
  "rolledBack": "已将线上版本回滚到修订 {{revision}}。",
12171
- "requestFailed": "服务未能完成此操作,请稍后重试。",
12172
- "triggerPaused": "Trigger 激活已暂停。",
12173
- "triggerResumed": "Trigger 激活正在恢复。"
12327
+ "requestFailed": "服务未能完成此操作,请稍后重试。"
12174
12328
  },
12175
12329
  publication: {
12176
12330
  "active": "运行中",
@@ -12207,13 +12361,10 @@ var resources$1 = {
12207
12361
  "loadingTriggerActivities": "正在加载活动…",
12208
12362
  "lastError": "最近错误",
12209
12363
  "needsReauth": "需要重新授权",
12210
- "needsReauthDescription": "请在草稿中检查此 Trigger 的 Connection,重新授权后再恢复投递。",
12364
+ "needsReauthDescription": "此线上 Trigger 的 Connection 需要重新授权。请联系连接管理员处理。重新授权后,请检查 Trigger 的运行状态。",
12211
12365
  "none": "尚未发布",
12212
12366
  "notPublished": "尚未发布",
12213
12367
  "operation": "操作",
12214
- "operatorState": "操作状态",
12215
- "pauseTrigger": "暂停",
12216
- "pausingTrigger": "正在暂停…",
12217
12368
  "publishDraft": "发布到线上",
12218
12369
  "publishConfirm": "发布当前草稿?",
12219
12370
  "publishConfirmDescription": "发布后,当前草稿将成为线上版本。",
@@ -12229,8 +12380,6 @@ var resources$1 = {
12229
12380
  "pollTestResult": "测试结果",
12230
12381
  "pollTesting": "正在测试…",
12231
12382
  "reconciling": "正在对账",
12232
- "resumeTrigger": "恢复",
12233
- "resumingTrigger": "正在恢复…",
12234
12383
  "retired": "已停用",
12235
12384
  "revision": "固定修订",
12236
12385
  "rollback": "回滚",
@@ -12702,6 +12851,14 @@ var resources$1 = {
12702
12851
  "description": "说明",
12703
12852
  "required": "需要输入"
12704
12853
  },
12854
+ webhookDeployment: {
12855
+ "title": "线上 Webhook",
12856
+ "unpublished": "发布后生成 Webhook 地址。",
12857
+ "unpublishedChanges": "线上使用已发布版本,草稿修改尚未生效。",
12858
+ "loadFailed": "无法加载 Webhook 部署信息。",
12859
+ "pending": "Webhook 地址暂未就绪。",
12860
+ "copyFailed": "复制失败,请选中地址手动复制。"
12861
+ },
12705
12862
  webhookEditor: {
12706
12863
  "webhookAddHeader": "添加响应头",
12707
12864
  "webhookDeleteHeader": "删除响应头",
@@ -13607,9 +13764,7 @@ var resources$1 = {
13607
13764
  "networkFailed": "暫時無法連線到服務,請檢查網路後再試一次。",
13608
13765
  "published": "已發布 {{name}}。",
13609
13766
  "rolledBack": "已將線上版本還原到修訂 {{revision}}。",
13610
- "requestFailed": "服務未能完成此操作,請稍後再試一次。",
13611
- "triggerPaused": "Trigger 啟用已暫停。",
13612
- "triggerResumed": "Trigger 啟用正在恢復。"
13767
+ "requestFailed": "服務未能完成此操作,請稍後再試一次。"
13613
13768
  },
13614
13769
  publication: {
13615
13770
  "active": "運作中",
@@ -13646,13 +13801,10 @@ var resources$1 = {
13646
13801
  "loadingTriggerActivities": "正在載入活動…",
13647
13802
  "lastError": "最後一次錯誤",
13648
13803
  "needsReauth": "需要重新授權",
13649
- "needsReauthDescription": "請在草稿中檢查這個 Trigger 的 Connection,重新授權後再恢復投遞。",
13804
+ "needsReauthDescription": "此線上 Trigger 的 Connection 需要重新授權。請聯絡連線管理員處理。重新授權後,請檢查 Trigger 的執行狀態。",
13650
13805
  "none": "尚未發布",
13651
13806
  "notPublished": "尚未發布",
13652
13807
  "operation": "操作",
13653
- "operatorState": "操作者狀態",
13654
- "pauseTrigger": "暫停",
13655
- "pausingTrigger": "正在暫停…",
13656
13808
  "publishDraft": "發布到線上",
13657
13809
  "publishConfirm": "發佈目前草稿?",
13658
13810
  "publishConfirmDescription": "發佈後,目前草稿將成為線上版本。",
@@ -13668,8 +13820,6 @@ var resources$1 = {
13668
13820
  "pollTestResult": "測試結果",
13669
13821
  "pollTesting": "正在測試…",
13670
13822
  "reconciling": "同步中",
13671
- "resumeTrigger": "恢復",
13672
- "resumingTrigger": "正在恢復…",
13673
13823
  "retired": "已停用",
13674
13824
  "revision": "固定修訂",
13675
13825
  "rollback": "還原",
@@ -14141,6 +14291,14 @@ var resources$1 = {
14141
14291
  "description": "說明",
14142
14292
  "required": "需要輸入"
14143
14293
  },
14294
+ webhookDeployment: {
14295
+ "title": "線上 Webhook",
14296
+ "unpublished": "發佈後產生 Webhook 位址。",
14297
+ "unpublishedChanges": "線上使用已發佈版本,草稿修改尚未生效。",
14298
+ "loadFailed": "無法載入 Webhook 部署資訊。",
14299
+ "pending": "Webhook 位址尚未就緒。",
14300
+ "copyFailed": "複製失敗,請選取位址手動複製。"
14301
+ },
14144
14302
  webhookEditor: {
14145
14303
  "webhookAddHeader": "新增標頭",
14146
14304
  "webhookDeleteHeader": "刪除回應標頭",
@@ -14842,9 +15000,7 @@ var resources$1 = {
14842
15000
  "networkFailed": "サービスに接続できません。ネットワーク接続を確認してから再試行してください。",
14843
15001
  "published": "{{name}} を公開しました。",
14844
15002
  "rolledBack": "本番をリビジョン {{revision}} にロールバックしました。",
14845
- "requestFailed": "サービスがこの操作を完了できませんでした。しばらくしてから再試行してください。",
14846
- "triggerPaused": "Trigger の有効化を一時停止しました。",
14847
- "triggerResumed": "Trigger の有効化を再開しています。"
15003
+ "requestFailed": "サービスがこの操作を完了できませんでした。しばらくしてから再試行してください。"
14848
15004
  },
14849
15005
  publication: {
14850
15006
  "active": "稼働中",
@@ -14881,13 +15037,10 @@ var resources$1 = {
14881
15037
  "loadingTriggerActivities": "アクティビティを読み込み中…",
14882
15038
  "lastError": "最新のエラー",
14883
15039
  "needsReauth": "再認証が必要",
14884
- "needsReauthDescription": "配信を再開する前に、ドラフトでこの Trigger の Connection を確認し、再認証してください。",
15040
+ "needsReauthDescription": "この稼働中の Trigger の Connection は再認証が必要です。接続の管理者に再認証を依頼してください。再認証後、Trigger の稼働状態を確認してください。",
14885
15041
  "none": "未公開",
14886
15042
  "notPublished": "未公開",
14887
15043
  "operation": "操作",
14888
- "operatorState": "オペレーター状態",
14889
- "pauseTrigger": "一時停止",
14890
- "pausingTrigger": "一時停止中…",
14891
15044
  "publishDraft": "本番へ公開",
14892
15045
  "publishConfirm": "現在の下書きを公開しますか?",
14893
15046
  "publishConfirmDescription": "公開すると、現在の下書きが公開中のバージョンになります。",
@@ -14903,8 +15056,6 @@ var resources$1 = {
14903
15056
  "pollTestResult": "テスト結果",
14904
15057
  "pollTesting": "テスト中…",
14905
15058
  "reconciling": "同期中",
14906
- "resumeTrigger": "再開",
14907
- "resumingTrigger": "再開中…",
14908
15059
  "retired": "停止済み",
14909
15060
  "revision": "固定リビジョン",
14910
15061
  "rollback": "ロールバック",
@@ -15376,6 +15527,14 @@ var resources$1 = {
15376
15527
  "description": "説明",
15377
15528
  "required": "入力が必要"
15378
15529
  },
15530
+ webhookDeployment: {
15531
+ "title": "公開中の Webhook",
15532
+ "unpublished": "公開すると Webhook URL が生成されます。",
15533
+ "unpublishedChanges": "公開済みのバージョンが使用されています。下書きの変更はまだ反映されていません。",
15534
+ "loadFailed": "Webhook のデプロイ情報を読み込めませんでした。",
15535
+ "pending": "Webhook URL はまだ利用できません。",
15536
+ "copyFailed": "コピーできませんでした。URL を選択して手動でコピーしてください。"
15537
+ },
15379
15538
  webhookEditor: {
15380
15539
  "webhookAddHeader": "レスポンスヘッダーを追加",
15381
15540
  "webhookDeleteHeader": "レスポンスヘッダーを削除",
@@ -16281,9 +16440,7 @@ var resources$1 = {
16281
16440
  "networkFailed": "서비스에 연결할 수 없습니다. 네트워크 연결을 확인한 뒤 다시 시도하세요.",
16282
16441
  "published": "{{name}} 게시를 완료했습니다.",
16283
16442
  "rolledBack": "라이브를 리비전 {{revision}}(으)로 롤백했습니다.",
16284
- "requestFailed": "서비스에서 이 작업을 완료하지 못했습니다. 나중에 다시 시도하세요.",
16285
- "triggerPaused": "Trigger 활성화가 일시 중지되었습니다.",
16286
- "triggerResumed": "Trigger 활성화를 재개하는 중입니다."
16443
+ "requestFailed": "서비스에서 이 작업을 완료하지 못했습니다. 나중에 다시 시도하세요."
16287
16444
  },
16288
16445
  publication: {
16289
16446
  "active": "활성",
@@ -16320,13 +16477,10 @@ var resources$1 = {
16320
16477
  "loadingTriggerActivities": "활동 불러오는 중…",
16321
16478
  "lastError": "마지막 오류",
16322
16479
  "needsReauth": "재인증 필요",
16323
- "needsReauthDescription": "초안에서 이 Trigger의 Connection을 확인하고 다시 인증한 뒤 전달을 재개하세요.",
16480
+ "needsReauthDescription": "이 운영 중인 Trigger의 Connection에 재인증이 필요합니다. 연결 관리자에게 재인증을 요청하세요. 재인증 후 Trigger의 실행 상태를 확인하세요.",
16324
16481
  "none": "게시되지 않음",
16325
16482
  "notPublished": "게시되지 않음",
16326
16483
  "operation": "작업",
16327
- "operatorState": "운영자 상태",
16328
- "pauseTrigger": "일시 중지",
16329
- "pausingTrigger": "일시 중지하는 중…",
16330
16484
  "publishDraft": "라이브에 게시",
16331
16485
  "publishConfirm": "현재 초안을 게시할까요?",
16332
16486
  "publishConfirmDescription": "게시하면 현재 초안이 라이브 버전이 됩니다.",
@@ -16342,8 +16496,6 @@ var resources$1 = {
16342
16496
  "pollTestResult": "테스트 결과",
16343
16497
  "pollTesting": "테스트하는 중…",
16344
16498
  "reconciling": "조정 중",
16345
- "resumeTrigger": "재개",
16346
- "resumingTrigger": "재개하는 중…",
16347
16499
  "retired": "중단됨",
16348
16500
  "revision": "고정 리비전",
16349
16501
  "rollback": "롤백",
@@ -16815,6 +16967,14 @@ var resources$1 = {
16815
16967
  "description": "설명",
16816
16968
  "required": "입력 필요"
16817
16969
  },
16970
+ webhookDeployment: {
16971
+ "title": "배포된 Webhook",
16972
+ "unpublished": "게시하면 Webhook URL이 생성됩니다.",
16973
+ "unpublishedChanges": "게시된 버전을 사용 중입니다. 초안 변경 사항은 아직 반영되지 않았습니다.",
16974
+ "loadFailed": "Webhook 배포 정보를 불러올 수 없습니다.",
16975
+ "pending": "Webhook URL이 아직 준비되지 않았습니다.",
16976
+ "copyFailed": "복사하지 못했습니다. URL을 선택하여 직접 복사하세요."
16977
+ },
16818
16978
  webhookEditor: {
16819
16979
  "webhookAddHeader": "헤더 추가",
16820
16980
  "webhookDeleteHeader": "응답 헤더 삭제",
@@ -17516,9 +17676,7 @@ var resources$1 = {
17516
17676
  "networkFailed": "Не удалось подключиться к сервису. Проверьте сетевое соединение и повторите попытку.",
17517
17677
  "published": "Опубликовано: {{name}}.",
17518
17678
  "rolledBack": "Рабочая версия откачена к ревизии {{revision}}.",
17519
- "requestFailed": "Сервис не смог выполнить эту операцию. Повторите попытку позже.",
17520
- "triggerPaused": "Активация Trigger приостановлена.",
17521
- "triggerResumed": "Активация Trigger возобновляется."
17679
+ "requestFailed": "Сервис не смог выполнить эту операцию. Повторите попытку позже."
17522
17680
  },
17523
17681
  publication: {
17524
17682
  "active": "Активно",
@@ -17555,13 +17713,10 @@ var resources$1 = {
17555
17713
  "loadingTriggerActivities": "Загрузка активности…",
17556
17714
  "lastError": "Последняя ошибка",
17557
17715
  "needsReauth": "Нужна повторная авторизация",
17558
- "needsReauthDescription": "Проверьте Connection этого Trigger в черновике и авторизуйте его заново, прежде чем возобновлять доставку.",
17716
+ "needsReauthDescription": "Connection этого опубликованного Trigger требует повторной авторизации. Обратитесь к администратору подключения для повторной авторизации, затем проверьте состояние Trigger.",
17559
17717
  "none": "Не опубликовано",
17560
17718
  "notPublished": "Не опубликовано",
17561
17719
  "operation": "Операция",
17562
- "operatorState": "Состояние оператора",
17563
- "pauseTrigger": "Приостановить",
17564
- "pausingTrigger": "Приостановка…",
17565
17720
  "publishDraft": "Опубликовать черновик",
17566
17721
  "publishConfirm": "Опубликовать этот черновик?",
17567
17722
  "publishConfirmDescription": "Текущий черновик станет действующей версией.",
@@ -17577,8 +17732,6 @@ var resources$1 = {
17577
17732
  "pollTestResult": "Результат проверки",
17578
17733
  "pollTesting": "Проверка…",
17579
17734
  "reconciling": "Синхронизация",
17580
- "resumeTrigger": "Возобновить",
17581
- "resumingTrigger": "Возобновление…",
17582
17735
  "retired": "Отключено",
17583
17736
  "revision": "Зафиксированная ревизия",
17584
17737
  "rollback": "Откатить",
@@ -18050,6 +18203,14 @@ var resources$1 = {
18050
18203
  "description": "Описание",
18051
18204
  "required": "Требуется вход"
18052
18205
  },
18206
+ webhookDeployment: {
18207
+ "title": "Опубликованный Webhook",
18208
+ "unpublished": "Опубликуйте процесс, чтобы создать URL Webhook.",
18209
+ "unpublishedChanges": "Используется опубликованная версия. Изменения черновика ещё не применены.",
18210
+ "loadFailed": "Не удалось загрузить данные развёртывания Webhook.",
18211
+ "pending": "URL Webhook пока недоступен.",
18212
+ "copyFailed": "Не удалось скопировать. Выделите URL и скопируйте его вручную."
18213
+ },
18053
18214
  webhookEditor: {
18054
18215
  "webhookAddHeader": "Добавить заголовок",
18055
18216
  "webhookDeleteHeader": "Удалить заголовок ответа",
@@ -18814,9 +18975,7 @@ var resources$1 = {
18814
18975
  "networkFailed": "Impossible de joindre le service. Vérifiez votre connexion, puis réessayez.",
18815
18976
  "published": "{{name}} publié.",
18816
18977
  "rolledBack": "Version en ligne restaurée à la révision {{revision}}.",
18817
- "requestFailed": "Le service n’a pas pu terminer cette opération. Réessayez plus tard.",
18818
- "triggerPaused": "L'activation du Trigger est en pause.",
18819
- "triggerResumed": "L'activation du Trigger reprend."
18978
+ "requestFailed": "Le service n’a pas pu terminer cette opération. Réessayez plus tard."
18820
18979
  },
18821
18980
  publication: {
18822
18981
  "active": "Actif",
@@ -18853,13 +19012,10 @@ var resources$1 = {
18853
19012
  "loadingTriggerActivities": "Chargement de l'activité…",
18854
19013
  "lastError": "Dernière erreur",
18855
19014
  "needsReauth": "Réautorisation requise",
18856
- "needsReauthDescription": "Vérifiez la Connection de ce Trigger dans le Brouillon et réautorisez-la avant de reprendre la livraison.",
19015
+ "needsReauthDescription": "La Connection de ce Trigger en production nécessite une nouvelle autorisation. Contactez la personne qui administre la connexion pour la réautoriser, puis vérifiez l’état du Trigger.",
18857
19016
  "none": "Non publié",
18858
19017
  "notPublished": "Non publié",
18859
19018
  "operation": "Opération",
18860
- "operatorState": "État de l'opérateur",
18861
- "pauseTrigger": "Mettre en pause",
18862
- "pausingTrigger": "Mise en pause…",
18863
19019
  "publishDraft": "Publier en ligne",
18864
19020
  "publishConfirm": "Publier ce brouillon ?",
18865
19021
  "publishConfirmDescription": "Le brouillon actuel deviendra la version en ligne.",
@@ -18875,8 +19031,6 @@ var resources$1 = {
18875
19031
  "pollTestResult": "Résultat du test",
18876
19032
  "pollTesting": "Test en cours…",
18877
19033
  "reconciling": "Réconciliation",
18878
- "resumeTrigger": "Reprendre",
18879
- "resumingTrigger": "Reprise…",
18880
19034
  "retired": "Retiré",
18881
19035
  "revision": "Révision figée",
18882
19036
  "rollback": "Restaurer",
@@ -19348,6 +19502,14 @@ var resources$1 = {
19348
19502
  "description": "Description",
19349
19503
  "required": "Entrée requise"
19350
19504
  },
19505
+ webhookDeployment: {
19506
+ "title": "Webhook en ligne",
19507
+ "unpublished": "Publiez ce flux pour générer une URL Webhook.",
19508
+ "unpublishedChanges": "La version publiée est utilisée. Les modifications du brouillon ne sont pas encore en ligne.",
19509
+ "loadFailed": "Impossible de charger le déploiement du Webhook.",
19510
+ "pending": "L’URL Webhook n’est pas encore disponible.",
19511
+ "copyFailed": "Échec de la copie. Sélectionnez l’URL et copiez-la manuellement."
19512
+ },
19351
19513
  webhookEditor: {
19352
19514
  "webhookAddHeader": "Ajouter un en-tête",
19353
19515
  "webhookDeleteHeader": "Supprimer l'en-tête de réponse",
@@ -26268,7 +26430,7 @@ function PopoverHeader({ className, ...props }) {
26268
26430
  function PopoverTitle({ className, ...props }) {
26269
26431
  return /* @__PURE__ */ jsx(PopoverTitle$1, {
26270
26432
  "data-slot": "popover-title",
26271
- className: cn("font-medium", className),
26433
+ className: cn("m-0 text-sm font-medium", className),
26272
26434
  ...props
26273
26435
  });
26274
26436
  }
@@ -28355,19 +28517,19 @@ var RunStore = class {
28355
28517
  //#region \0virtual:oomol-provider-icons
28356
28518
  var spriteCatalog = {
28357
28519
  "iconSprite": {
28358
- "version": "448a441f7e1bbddd5d124583100a598dd7470724877a060c500f9a73fec1287e",
28520
+ "version": "8ea143c870865b9d01ef4a921f01e711fa37e575648a97baf41bf53705f72f81",
28359
28521
  "pixelRatio": 2,
28360
28522
  "iconSize": 48,
28361
28523
  "bleed": 1,
28362
28524
  "width": 2050,
28363
28525
  "height": 2e3,
28364
- "lightUrl": "https://static.oomol.com/logo/provider-sprites/448a441f7e1bbddd5d124583100a598dd7470724877a060c500f9a73fec1287e/light.png",
28365
- "darkUrl": "https://static.oomol.com/logo/provider-sprites/448a441f7e1bbddd5d124583100a598dd7470724877a060c500f9a73fec1287e/dark.png"
28526
+ "lightUrl": "https://static.oomol.com/logo/provider-sprites/8ea143c870865b9d01ef4a921f01e711fa37e575648a97baf41bf53705f72f81/light.png",
28527
+ "darkUrl": "https://static.oomol.com/logo/provider-sprites/8ea143c870865b9d01ef4a921f01e711fa37e575648a97baf41bf53705f72f81/dark.png"
28366
28528
  },
28367
28529
  "positions": {
28368
28530
  "solarwinds_service_desk": {
28369
- "x": 2001,
28370
- "y": 1551
28531
+ "x": 51,
28532
+ "y": 1601
28371
28533
  },
28372
28534
  "finlight": {
28373
28535
  "x": 151,
@@ -28378,7 +28540,7 @@ var spriteCatalog = {
28378
28540
  "y": 851
28379
28541
  },
28380
28542
  "viral_loops": {
28381
- "x": 1351,
28543
+ "x": 1451,
28382
28544
  "y": 1801
28383
28545
  },
28384
28546
  "greip": {
@@ -28390,11 +28552,11 @@ var spriteCatalog = {
28390
28552
  "y": 51
28391
28553
  },
28392
28554
  "unirateapi": {
28393
- "x": 1701,
28555
+ "x": 1801,
28394
28556
  "y": 1751
28395
28557
  },
28396
28558
  "thesportsdb": {
28397
- "x": 551,
28559
+ "x": 651,
28398
28560
  "y": 1701
28399
28561
  },
28400
28562
  "17track": {
@@ -28413,8 +28575,16 @@ var spriteCatalog = {
28413
28575
  "x": 1951,
28414
28576
  "y": 1
28415
28577
  },
28578
+ "opper": {
28579
+ "x": 851,
28580
+ "y": 1201
28581
+ },
28582
+ "scanmalware": {
28583
+ "x": 1401,
28584
+ "y": 1451
28585
+ },
28416
28586
  "osv": {
28417
- "x": 1301,
28587
+ "x": 1351,
28418
28588
  "y": 1201
28419
28589
  },
28420
28590
  "ably_control": {
@@ -28482,7 +28652,7 @@ var spriteCatalog = {
28482
28652
  "y": 601
28483
28653
  },
28484
28654
  "predictleads": {
28485
- "x": 1751,
28655
+ "x": 1801,
28486
28656
  "y": 1301
28487
28657
  },
28488
28658
  "activecampaign": {
@@ -28594,7 +28764,7 @@ var spriteCatalog = {
28594
28764
  "y": 1
28595
28765
  },
28596
28766
  "screendesk": {
28597
- "x": 1801,
28767
+ "x": 1901,
28598
28768
  "y": 1451
28599
28769
  },
28600
28770
  "amplitude": {
@@ -28622,7 +28792,7 @@ var spriteCatalog = {
28622
28792
  "y": 51
28623
28793
  },
28624
28794
  "voicemaker": {
28625
- "x": 1551,
28795
+ "x": 1651,
28626
28796
  "y": 1801
28627
28797
  },
28628
28798
  "aircall": {
@@ -28802,7 +28972,7 @@ var spriteCatalog = {
28802
28972
  "y": 151
28803
28973
  },
28804
28974
  "retable": {
28805
- "x": 1551,
28975
+ "x": 1601,
28806
28976
  "y": 1401
28807
28977
  },
28808
28978
  "baremetrics": {
@@ -28858,23 +29028,23 @@ var spriteCatalog = {
28858
29028
  "y": 151
28859
29029
  },
28860
29030
  "salesloft": {
28861
- "x": 1051,
29031
+ "x": 1101,
28862
29032
  "y": 1451
28863
29033
  },
28864
29034
  "saucelabs": {
28865
- "x": 1301,
29035
+ "x": 1351,
28866
29036
  "y": 1451
28867
29037
  },
28868
29038
  "salesmate": {
28869
- "x": 1101,
29039
+ "x": 1151,
28870
29040
  "y": 1451
28871
29041
  },
28872
29042
  "sellerspace": {
28873
- "x": 201,
29043
+ "x": 301,
28874
29044
  "y": 1501
28875
29045
  },
28876
29046
  "sellersprite": {
28877
- "x": 251,
29047
+ "x": 351,
28878
29048
  "y": 1501
28879
29049
  },
28880
29050
  "fastmoss_mcp": {
@@ -28882,19 +29052,19 @@ var spriteCatalog = {
28882
29052
  "y": 551
28883
29053
  },
28884
29054
  "xydc_mcp": {
28885
- "x": 1151,
29055
+ "x": 1251,
28886
29056
  "y": 1901
28887
29057
  },
28888
29058
  "sellersprite_mcp": {
28889
- "x": 301,
29059
+ "x": 401,
28890
29060
  "y": 1501
28891
29061
  },
28892
29062
  "slickdeals": {
28893
- "x": 1201,
29063
+ "x": 1301,
28894
29064
  "y": 1551
28895
29065
  },
28896
29066
  "sif": {
28897
- "x": 251,
29067
+ "x": 351,
28898
29068
  "y": 1551
28899
29069
  },
28900
29070
  "ixspy": {
@@ -28902,27 +29072,27 @@ var spriteCatalog = {
28902
29072
  "y": 851
28903
29073
  },
28904
29074
  "sorftime": {
28905
- "x": 101,
29075
+ "x": 201,
28906
29076
  "y": 1601
28907
29077
  },
28908
29078
  "sorftime_mcp": {
28909
- "x": 151,
29079
+ "x": 251,
28910
29080
  "y": 1601
28911
29081
  },
28912
29082
  "sage_hr": {
28913
- "x": 901,
29083
+ "x": 951,
28914
29084
  "y": 1451
28915
29085
  },
28916
29086
  "sage_sales_management": {
28917
- "x": 951,
29087
+ "x": 1001,
28918
29088
  "y": 1451
28919
29089
  },
28920
29090
  "safetyculture": {
28921
- "x": 851,
29091
+ "x": 901,
28922
29092
  "y": 1451
28923
29093
  },
28924
29094
  "saas_custom_domains": {
28925
- "x": 801,
29095
+ "x": 851,
28926
29096
  "y": 1451
28927
29097
  },
28928
29098
  "better_stack": {
@@ -28994,11 +29164,11 @@ var spriteCatalog = {
28994
29164
  "y": 501
28995
29165
  },
28996
29166
  "thehive": {
28997
- "x": 401,
29167
+ "x": 501,
28998
29168
  "y": 1701
28999
29169
  },
29000
29170
  "thehive5": {
29001
- "x": 451,
29171
+ "x": 551,
29002
29172
  "y": 1701
29003
29173
  },
29004
29174
  "eraser": {
@@ -29090,7 +29260,7 @@ var spriteCatalog = {
29090
29260
  "y": 201
29091
29261
  },
29092
29262
  "partner_stack_partner": {
29093
- "x": 301,
29263
+ "x": 351,
29094
29264
  "y": 1251
29095
29265
  },
29096
29266
  "breeze": {
@@ -29154,7 +29324,7 @@ var spriteCatalog = {
29154
29324
  "y": 801
29155
29325
  },
29156
29326
  "pdf_co": {
29157
- "x": 851,
29327
+ "x": 901,
29158
29328
  "y": 1251
29159
29329
  },
29160
29330
  "api_bible": {
@@ -29262,11 +29432,11 @@ var spriteCatalog = {
29262
29432
  "y": 901
29263
29433
  },
29264
29434
  "waitwhile": {
29265
- "x": 1901,
29435
+ "x": 2001,
29266
29436
  "y": 1801
29267
29437
  },
29268
29438
  "workpath": {
29269
- "x": 451,
29439
+ "x": 551,
29270
29440
  "y": 1901
29271
29441
  },
29272
29442
  "apiverve": {
@@ -29282,7 +29452,7 @@ var spriteCatalog = {
29282
29452
  "y": 201
29283
29453
  },
29284
29454
  "projectmanager": {
29285
- "x": 351,
29455
+ "x": 401,
29286
29456
  "y": 1351
29287
29457
  },
29288
29458
  "hub_planner": {
@@ -29346,11 +29516,11 @@ var spriteCatalog = {
29346
29516
  "y": 201
29347
29517
  },
29348
29518
  "shipday": {
29349
- "x": 1551,
29519
+ "x": 1651,
29350
29520
  "y": 1501
29351
29521
  },
29352
29522
  "ship_bob": {
29353
- "x": 1451,
29523
+ "x": 1551,
29354
29524
  "y": 1501
29355
29525
  },
29356
29526
  "easypost": {
@@ -29358,23 +29528,23 @@ var spriteCatalog = {
29358
29528
  "y": 501
29359
29529
  },
29360
29530
  "ship_station": {
29361
- "x": 1501,
29531
+ "x": 1601,
29362
29532
  "y": 1501
29363
29533
  },
29364
29534
  "smartsheet": {
29365
- "x": 1501,
29535
+ "x": 1601,
29366
29536
  "y": 1551
29367
29537
  },
29368
29538
  "smartrecruiters": {
29369
- "x": 1451,
29539
+ "x": 1551,
29370
29540
  "y": 1551
29371
29541
  },
29372
29542
  "smartlead_ai": {
29373
- "x": 1401,
29543
+ "x": 1501,
29374
29544
  "y": 1551
29375
29545
  },
29376
29546
  "shipengine": {
29377
- "x": 1601,
29547
+ "x": 1701,
29378
29548
  "y": 1501
29379
29549
  },
29380
29550
  "onfleet": {
@@ -29382,35 +29552,35 @@ var spriteCatalog = {
29382
29552
  "y": 1151
29383
29553
  },
29384
29554
  "shotstack": {
29385
- "x": 201,
29555
+ "x": 301,
29386
29556
  "y": 1551
29387
29557
  },
29388
29558
  "skyvern": {
29389
- "x": 1001,
29559
+ "x": 1101,
29390
29560
  "y": 1551
29391
29561
  },
29392
29562
  "shopify": {
29393
- "x": 1801,
29563
+ "x": 1901,
29394
29564
  "y": 1501
29395
29565
  },
29396
29566
  "shopee": {
29397
- "x": 1751,
29567
+ "x": 1851,
29398
29568
  "y": 1501
29399
29569
  },
29400
29570
  "shopify_admin": {
29401
- "x": 1851,
29571
+ "x": 1951,
29402
29572
  "y": 1501
29403
29573
  },
29404
29574
  "shopify_partner": {
29405
- "x": 1901,
29575
+ "x": 2001,
29406
29576
  "y": 1501
29407
29577
  },
29408
29578
  "shopify_storefront": {
29409
- "x": 1951,
29410
- "y": 1501
29579
+ "x": 1,
29580
+ "y": 1551
29411
29581
  },
29412
29582
  "shippo": {
29413
- "x": 1651,
29583
+ "x": 1751,
29414
29584
  "y": 1501
29415
29585
  },
29416
29586
  "builtwith": {
@@ -29422,7 +29592,7 @@ var spriteCatalog = {
29422
29592
  "y": 201
29423
29593
  },
29424
29594
  "ozon": {
29425
- "x": 1651,
29595
+ "x": 1701,
29426
29596
  "y": 1201
29427
29597
  },
29428
29598
  "benzinga": {
@@ -29478,7 +29648,7 @@ var spriteCatalog = {
29478
29648
  "y": 1051
29479
29649
  },
29480
29650
  "wbiztool": {
29481
- "x": 401,
29651
+ "x": 501,
29482
29652
  "y": 1851
29483
29653
  },
29484
29654
  "calendarific": {
@@ -29494,7 +29664,7 @@ var spriteCatalog = {
29494
29664
  "y": 551
29495
29665
  },
29496
29666
  "zyhub": {
29497
- "x": 701,
29667
+ "x": 801,
29498
29668
  "y": 1951
29499
29669
  },
29500
29670
  "benchmarkone": {
@@ -29550,7 +29720,7 @@ var spriteCatalog = {
29550
29720
  "y": 351
29551
29721
  },
29552
29722
  "surveymethods": {
29553
- "x": 401,
29723
+ "x": 501,
29554
29724
  "y": 1651
29555
29725
  },
29556
29726
  "countly": {
@@ -29578,8 +29748,8 @@ var spriteCatalog = {
29578
29748
  "y": 351
29579
29749
  },
29580
29750
  "waiverfile": {
29581
- "x": 1951,
29582
- "y": 1801
29751
+ "x": 1,
29752
+ "y": 1851
29583
29753
  },
29584
29754
  "northbeam": {
29585
29755
  "x": 551,
@@ -29614,7 +29784,7 @@ var spriteCatalog = {
29614
29784
  "y": 451
29615
29785
  },
29616
29786
  "paradym": {
29617
- "x": 1,
29787
+ "x": 51,
29618
29788
  "y": 1251
29619
29789
  },
29620
29790
  "carbone": {
@@ -29638,11 +29808,11 @@ var spriteCatalog = {
29638
29808
  "y": 1201
29639
29809
  },
29640
29810
  "orcid": {
29641
- "x": 1051,
29811
+ "x": 1101,
29642
29812
  "y": 1201
29643
29813
  },
29644
29814
  "orimon": {
29645
- "x": 1151,
29815
+ "x": 1201,
29646
29816
  "y": 1201
29647
29817
  },
29648
29818
  "mendeley": {
@@ -29674,11 +29844,11 @@ var spriteCatalog = {
29674
29844
  "y": 551
29675
29845
  },
29676
29846
  "pubmed": {
29677
- "x": 651,
29847
+ "x": 701,
29678
29848
  "y": 1351
29679
29849
  },
29680
29850
  "pulsetic": {
29681
- "x": 701,
29851
+ "x": 751,
29682
29852
  "y": 1351
29683
29853
  },
29684
29854
  "lacuna": {
@@ -29718,11 +29888,11 @@ var spriteCatalog = {
29718
29888
  "y": 1101
29719
29889
  },
29720
29890
  "product_fruits": {
29721
- "x": 101,
29891
+ "x": 151,
29722
29892
  "y": 1351
29723
29893
  },
29724
29894
  "oracle_cloud": {
29725
- "x": 951,
29895
+ "x": 1001,
29726
29896
  "y": 1201
29727
29897
  },
29728
29898
  "ongage": {
@@ -29738,7 +29908,7 @@ var spriteCatalog = {
29738
29908
  "y": 1151
29739
29909
  },
29740
29910
  "wordpress": {
29741
- "x": 151,
29911
+ "x": 251,
29742
29912
  "y": 1901
29743
29913
  },
29744
29914
  "onlyoffice_docspace": {
@@ -29746,7 +29916,7 @@ var spriteCatalog = {
29746
29916
  "y": 1201
29747
29917
  },
29748
29918
  "ordinal": {
29749
- "x": 1101,
29919
+ "x": 1151,
29750
29920
  "y": 1201
29751
29921
  },
29752
29922
  "onesignal_rest_api": {
@@ -29822,7 +29992,7 @@ var spriteCatalog = {
29822
29992
  "y": 251
29823
29993
  },
29824
29994
  "sslmate_cert_spotter_api": {
29825
- "x": 601,
29995
+ "x": 701,
29826
29996
  "y": 1601
29827
29997
  },
29828
29998
  "issue_badge": {
@@ -29950,7 +30120,7 @@ var spriteCatalog = {
29950
30120
  "y": 301
29951
30121
  },
29952
30122
  "serwersms_pl": {
29953
- "x": 1201,
30123
+ "x": 1301,
29954
30124
  "y": 1501
29955
30125
  },
29956
30126
  "clicksend": {
@@ -30070,11 +30240,11 @@ var spriteCatalog = {
30070
30240
  "y": 351
30071
30241
  },
30072
30242
  "personal_ai": {
30073
- "x": 1451,
30243
+ "x": 1501,
30074
30244
  "y": 1251
30075
30245
  },
30076
30246
  "plane": {
30077
- "x": 501,
30247
+ "x": 551,
30078
30248
  "y": 1301
30079
30249
  },
30080
30250
  "coinranking": {
@@ -30126,7 +30296,7 @@ var spriteCatalog = {
30126
30296
  "y": 351
30127
30297
  },
30128
30298
  "peopledatalabs": {
30129
- "x": 1151,
30299
+ "x": 1201,
30130
30300
  "y": 1251
30131
30301
  },
30132
30302
  "contentful": {
@@ -30938,7 +31108,7 @@ var spriteCatalog = {
30938
31108
  "y": 601
30939
31109
  },
30940
31110
  "square": {
30941
- "x": 551,
31111
+ "x": 651,
30942
31112
  "y": 1601
30943
31113
  },
30944
31114
  "moonclerk": {
@@ -30970,7 +31140,7 @@ var spriteCatalog = {
30970
31140
  "y": 801
30971
31141
  },
30972
31142
  "pi_hole": {
30973
- "x": 1701,
31143
+ "x": 1751,
30974
31144
  "y": 1251
30975
31145
  },
30976
31146
  "firecrawl": {
@@ -31034,7 +31204,7 @@ var spriteCatalog = {
31034
31204
  "y": 651
31035
31205
  },
31036
31206
  "positionstack": {
31037
- "x": 1251,
31207
+ "x": 1301,
31038
31208
  "y": 1301
31039
31209
  },
31040
31210
  "geoapify": {
@@ -31182,7 +31352,7 @@ var spriteCatalog = {
31182
31352
  "y": 651
31183
31353
  },
31184
31354
  "wandb": {
31185
- "x": 151,
31355
+ "x": 251,
31186
31356
  "y": 1851
31187
31357
  },
31188
31358
  "gitee": {
@@ -31282,7 +31452,7 @@ var spriteCatalog = {
31282
31452
  "y": 701
31283
31453
  },
31284
31454
  "youtube": {
31285
- "x": 1501,
31455
+ "x": 1601,
31286
31456
  "y": 1901
31287
31457
  },
31288
31458
  "groqcloud": {
@@ -31294,31 +31464,31 @@ var spriteCatalog = {
31294
31464
  "y": 701
31295
31465
  },
31296
31466
  "x_ai": {
31297
- "x": 901,
31467
+ "x": 1001,
31298
31468
  "y": 1901
31299
31469
  },
31300
31470
  "xata": {
31301
- "x": 951,
31471
+ "x": 1051,
31302
31472
  "y": 1901
31303
31473
  },
31304
31474
  "quickbooks": {
31305
- "x": 1601,
31475
+ "x": 1651,
31306
31476
  "y": 1351
31307
31477
  },
31308
31478
  "xero": {
31309
- "x": 1001,
31479
+ "x": 1101,
31310
31480
  "y": 1901
31311
31481
  },
31312
31482
  "xingpan": {
31313
- "x": 1101,
31483
+ "x": 1201,
31314
31484
  "y": 1901
31315
31485
  },
31316
31486
  "xiaohongshu_store": {
31317
- "x": 1051,
31487
+ "x": 1151,
31318
31488
  "y": 1901
31319
31489
  },
31320
31490
  "oura": {
31321
- "x": 1401,
31491
+ "x": 1451,
31322
31492
  "y": 1201
31323
31493
  },
31324
31494
  "hackerrank_work": {
@@ -31510,7 +31680,7 @@ var spriteCatalog = {
31510
31680
  "y": 801
31511
31681
  },
31512
31682
  "tomba": {
31513
- "x": 1901,
31683
+ "x": 2001,
31514
31684
  "y": 1701
31515
31685
  },
31516
31686
  "hubspot": {
@@ -31646,7 +31816,7 @@ var spriteCatalog = {
31646
31816
  "y": 851
31647
31817
  },
31648
31818
  "typesafe_ai": {
31649
- "x": 1401,
31819
+ "x": 1501,
31650
31820
  "y": 1751
31651
31821
  },
31652
31822
  "jira": {
@@ -31674,7 +31844,7 @@ var spriteCatalog = {
31674
31844
  "y": 851
31675
31845
  },
31676
31846
  "zipcodebase": {
31677
- "x": 401,
31847
+ "x": 501,
31678
31848
  "y": 1951
31679
31849
  },
31680
31850
  "ipqualityscore": {
@@ -31842,7 +32012,7 @@ var spriteCatalog = {
31842
32012
  "y": 851
31843
32013
  },
31844
32014
  "sf_express": {
31845
- "x": 1301,
32015
+ "x": 1401,
31846
32016
  "y": 1501
31847
32017
  },
31848
32018
  "kit": {
@@ -32190,7 +32360,7 @@ var spriteCatalog = {
32190
32360
  "y": 1001
32191
32361
  },
32192
32362
  "polygon_io": {
32193
- "x": 1151,
32363
+ "x": 1201,
32194
32364
  "y": 1301
32195
32365
  },
32196
32366
  "mediastack": {
@@ -32382,7 +32552,7 @@ var spriteCatalog = {
32382
32552
  "y": 1051
32383
32553
  },
32384
32554
  "supermemory": {
32385
- "x": 151,
32555
+ "x": 251,
32386
32556
  "y": 1651
32387
32557
  },
32388
32558
  "memberstack": {
@@ -32582,11 +32752,11 @@ var spriteCatalog = {
32582
32752
  "y": 1151
32583
32753
  },
32584
32754
  "signwell": {
32585
- "x": 451,
32755
+ "x": 551,
32586
32756
  "y": 1551
32587
32757
  },
32588
32758
  "signaturely": {
32589
- "x": 351,
32759
+ "x": 451,
32590
32760
  "y": 1551
32591
32761
  },
32592
32762
  "opencage": {
@@ -32618,7 +32788,7 @@ var spriteCatalog = {
32618
32788
  "y": 1201
32619
32789
  },
32620
32790
  "orcarouter": {
32621
- "x": 1001,
32791
+ "x": 1051,
32622
32792
  "y": 1201
32623
32793
  },
32624
32794
  "openstatus": {
@@ -32626,7 +32796,7 @@ var spriteCatalog = {
32626
32796
  "y": 1201
32627
32797
  },
32628
32798
  "ossinsight": {
32629
- "x": 1251,
32799
+ "x": 1301,
32630
32800
  "y": 1201
32631
32801
  },
32632
32802
  "openweather_api": {
@@ -32634,643 +32804,643 @@ var spriteCatalog = {
32634
32804
  "y": 1201
32635
32805
  },
32636
32806
  "ortto": {
32637
- "x": 1201,
32807
+ "x": 1251,
32638
32808
  "y": 1201
32639
32809
  },
32640
32810
  "outline": {
32641
- "x": 1451,
32811
+ "x": 1501,
32642
32812
  "y": 1201
32643
32813
  },
32644
32814
  "otter_ai": {
32645
- "x": 1351,
32815
+ "x": 1401,
32646
32816
  "y": 1201
32647
32817
  },
32648
32818
  "outlook": {
32649
- "x": 1501,
32819
+ "x": 1551,
32650
32820
  "y": 1201
32651
32821
  },
32652
32822
  "outlook_calendar": {
32653
- "x": 1551,
32823
+ "x": 1601,
32654
32824
  "y": 1201
32655
32825
  },
32656
32826
  "owl_protocol": {
32657
- "x": 1601,
32827
+ "x": 1651,
32658
32828
  "y": 1201
32659
32829
  },
32660
32830
  "pandadoc": {
32661
- "x": 1801,
32831
+ "x": 1851,
32662
32832
  "y": 1201
32663
32833
  },
32664
32834
  "panjiva": {
32665
- "x": 1851,
32835
+ "x": 1901,
32666
32836
  "y": 1201
32667
32837
  },
32668
32838
  "paddle": {
32669
- "x": 1701,
32839
+ "x": 1751,
32670
32840
  "y": 1201
32671
32841
  },
32672
32842
  "patsnap_mcp": {
32673
- "x": 501,
32843
+ "x": 551,
32674
32844
  "y": 1251
32675
32845
  },
32676
32846
  "pagerduty": {
32677
- "x": 1751,
32847
+ "x": 1801,
32678
32848
  "y": 1201
32679
32849
  },
32680
32850
  "paypal": {
32681
- "x": 651,
32851
+ "x": 701,
32682
32852
  "y": 1251
32683
32853
  },
32684
32854
  "passcreator": {
32685
- "x": 401,
32855
+ "x": 451,
32686
32856
  "y": 1251
32687
32857
  },
32688
32858
  "passslot": {
32689
- "x": 451,
32859
+ "x": 501,
32690
32860
  "y": 1251
32691
32861
  },
32692
32862
  "peec": {
32693
- "x": 1051,
32863
+ "x": 1101,
32694
32864
  "y": 1251
32695
32865
  },
32696
32866
  "pendo": {
32697
- "x": 1101,
32867
+ "x": 1151,
32698
32868
  "y": 1251
32699
32869
  },
32700
32870
  "perdoo": {
32701
- "x": 1201,
32871
+ "x": 1251,
32702
32872
  "y": 1251
32703
32873
  },
32704
32874
  "perigon": {
32705
- "x": 1251,
32875
+ "x": 1301,
32706
32876
  "y": 1251
32707
32877
  },
32708
32878
  "permit_io": {
32709
- "x": 1301,
32879
+ "x": 1351,
32710
32880
  "y": 1251
32711
32881
  },
32712
32882
  "ringover": {
32713
- "x": 2001,
32714
- "y": 1401
32883
+ "x": 1,
32884
+ "y": 1451
32715
32885
  },
32716
32886
  "ringba": {
32717
- "x": 1901,
32887
+ "x": 1951,
32718
32888
  "y": 1401
32719
32889
  },
32720
32890
  "rippling": {
32721
- "x": 1,
32891
+ "x": 51,
32722
32892
  "y": 1451
32723
32893
  },
32724
32894
  "ritekit": {
32725
- "x": 51,
32895
+ "x": 101,
32726
32896
  "y": 1451
32727
32897
  },
32728
32898
  "opsgenie": {
32729
- "x": 851,
32899
+ "x": 901,
32730
32900
  "y": 1201
32731
32901
  },
32732
32902
  "parallel": {
32733
- "x": 51,
32903
+ "x": 101,
32734
32904
  "y": 1251
32735
32905
  },
32736
32906
  "parma": {
32737
- "x": 101,
32907
+ "x": 151,
32738
32908
  "y": 1251
32739
32909
  },
32740
32910
  "partnerstack": {
32741
- "x": 351,
32911
+ "x": 401,
32742
32912
  "y": 1251
32743
32913
  },
32744
32914
  "paymo": {
32745
- "x": 601,
32915
+ "x": 651,
32746
32916
  "y": 1251
32747
32917
  },
32748
32918
  "payrexx": {
32749
- "x": 701,
32919
+ "x": 751,
32750
32920
  "y": 1251
32751
32921
  },
32752
32922
  "razorpay": {
32753
- "x": 251,
32923
+ "x": 301,
32754
32924
  "y": 1401
32755
32925
  },
32756
32926
  "paystack": {
32757
- "x": 751,
32927
+ "x": 801,
32758
32928
  "y": 1251
32759
32929
  },
32760
32930
  "payhip": {
32761
- "x": 551,
32931
+ "x": 601,
32762
32932
  "y": 1251
32763
32933
  },
32764
32934
  "phantombuster": {
32765
- "x": 1551,
32935
+ "x": 1601,
32766
32936
  "y": 1251
32767
32937
  },
32768
32938
  "perplexity": {
32769
- "x": 1351,
32939
+ "x": 1401,
32770
32940
  "y": 1251
32771
32941
  },
32772
32942
  "persona": {
32773
- "x": 1401,
32943
+ "x": 1451,
32774
32944
  "y": 1251
32775
32945
  },
32776
32946
  "planetscale": {
32777
- "x": 551,
32947
+ "x": 601,
32778
32948
  "y": 1301
32779
32949
  },
32780
32950
  "predis_ai": {
32781
- "x": 1801,
32951
+ "x": 1851,
32782
32952
  "y": 1301
32783
32953
  },
32784
32954
  "pexels": {
32785
- "x": 1501,
32955
+ "x": 1551,
32786
32956
  "y": 1251
32787
32957
  },
32788
32958
  "phonely": {
32789
- "x": 1601,
32959
+ "x": 1651,
32790
32960
  "y": 1251
32791
32961
  },
32792
32962
  "photoroom": {
32793
- "x": 1651,
32963
+ "x": 1701,
32794
32964
  "y": 1251
32795
32965
  },
32796
32966
  "pinecone": {
32797
- "x": 1951,
32967
+ "x": 2001,
32798
32968
  "y": 1251
32799
32969
  },
32800
32970
  "pinboard": {
32801
- "x": 1901,
32971
+ "x": 1951,
32802
32972
  "y": 1251
32803
32973
  },
32804
32974
  "pinpoint": {
32805
- "x": 51,
32975
+ "x": 101,
32806
32976
  "y": 1301
32807
32977
  },
32808
32978
  "pixellab": {
32809
- "x": 251,
32979
+ "x": 301,
32810
32980
  "y": 1301
32811
32981
  },
32812
32982
  "qase": {
32813
- "x": 1051,
32983
+ "x": 1101,
32814
32984
  "y": 1351
32815
32985
  },
32816
32986
  "quant_data": {
32817
- "x": 1451,
32987
+ "x": 1501,
32818
32988
  "y": 1351
32819
32989
  },
32820
32990
  "quickchart": {
32821
- "x": 1651,
32991
+ "x": 1701,
32822
32992
  "y": 1351
32823
32993
  },
32824
32994
  "quickbase": {
32825
- "x": 1551,
32995
+ "x": 1601,
32826
32996
  "y": 1351
32827
32997
  },
32828
32998
  "quaderno": {
32829
- "x": 1401,
32999
+ "x": 1451,
32830
33000
  "y": 1351
32831
33001
  },
32832
33002
  "quintadb": {
32833
- "x": 1701,
33003
+ "x": 1751,
32834
33004
  "y": 1351
32835
33005
  },
32836
33006
  "quentn": {
32837
- "x": 1501,
33007
+ "x": 1551,
32838
33008
  "y": 1351
32839
33009
  },
32840
33010
  "quipteams": {
32841
- "x": 1751,
33011
+ "x": 1801,
32842
33012
  "y": 1351
32843
33013
  },
32844
33014
  "qlty": {
32845
- "x": 1301,
33015
+ "x": 1351,
32846
33016
  "y": 1351
32847
33017
  },
32848
33018
  "qq_mail": {
32849
- "x": 1351,
33019
+ "x": 1401,
32850
33020
  "y": 1351
32851
33021
  },
32852
33022
  "qdrant": {
32853
- "x": 1101,
33023
+ "x": 1151,
32854
33024
  "y": 1351
32855
33025
  },
32856
33026
  "qingflow": {
32857
- "x": 1251,
33027
+ "x": 1301,
32858
33028
  "y": 1351
32859
33029
  },
32860
33030
  "quriiri": {
32861
- "x": 1851,
33031
+ "x": 1901,
32862
33032
  "y": 1351
32863
33033
  },
32864
33034
  "signalbase": {
32865
- "x": 301,
33035
+ "x": 401,
32866
33036
  "y": 1551
32867
33037
  },
32868
33038
  "pingbell": {
32869
- "x": 2001,
32870
- "y": 1251
33039
+ "x": 1,
33040
+ "y": 1301
32871
33041
  },
32872
33042
  "pingdom": {
32873
- "x": 1,
33043
+ "x": 51,
32874
33044
  "y": 1301
32875
33045
  },
32876
33046
  "planhat": {
32877
- "x": 601,
33047
+ "x": 651,
32878
33048
  "y": 1301
32879
33049
  },
32880
33050
  "pipedrive": {
32881
- "x": 151,
33051
+ "x": 201,
32882
33052
  "y": 1301
32883
33053
  },
32884
33054
  "pipedream": {
32885
- "x": 101,
33055
+ "x": 151,
32886
33056
  "y": 1301
32887
33057
  },
32888
33058
  "pkulaw": {
32889
- "x": 301,
33059
+ "x": 351,
32890
33060
  "y": 1301
32891
33061
  },
32892
33062
  "pivotal_tracker": {
32893
- "x": 201,
33063
+ "x": 251,
32894
33064
  "y": 1301
32895
33065
  },
32896
33066
  "plasmic": {
32897
- "x": 701,
33067
+ "x": 751,
32898
33068
  "y": 1301
32899
33069
  },
32900
33070
  "plisio": {
32901
- "x": 851,
33071
+ "x": 901,
32902
33072
  "y": 1301
32903
33073
  },
32904
33074
  "plunk": {
32905
- "x": 901,
33075
+ "x": 951,
32906
33076
  "y": 1301
32907
33077
  },
32908
33078
  "placekey": {
32909
- "x": 351,
33079
+ "x": 401,
32910
33080
  "y": 1301
32911
33081
  },
32912
33082
  "polar": {
32913
- "x": 1101,
33083
+ "x": 1151,
32914
33084
  "y": 1301
32915
33085
  },
32916
33086
  "pilvio": {
32917
- "x": 1801,
33087
+ "x": 1851,
32918
33088
  "y": 1251
32919
33089
  },
32920
33090
  "plain": {
32921
- "x": 451,
33091
+ "x": 501,
32922
33092
  "y": 1301
32923
33093
  },
32924
33094
  "pylon": {
32925
- "x": 1001,
33095
+ "x": 1051,
32926
33096
  "y": 1351
32927
33097
  },
32928
33098
  "platerecognizer": {
32929
- "x": 751,
33099
+ "x": 801,
32930
33100
  "y": 1301
32931
33101
  },
32932
33102
  "plausible_analytics": {
32933
- "x": 801,
33103
+ "x": 851,
32934
33104
  "y": 1301
32935
33105
  },
32936
33106
  "umami": {
32937
- "x": 1501,
33107
+ "x": 1601,
32938
33108
  "y": 1751
32939
33109
  },
32940
33110
  "pdf_api_io": {
32941
- "x": 801,
33111
+ "x": 851,
32942
33112
  "y": 1251
32943
33113
  },
32944
33114
  "pdfmonkey": {
32945
- "x": 1001,
33115
+ "x": 1051,
32946
33116
  "y": 1251
32947
33117
  },
32948
33118
  "placid": {
32949
- "x": 401,
33119
+ "x": 451,
32950
33120
  "y": 1301
32951
33121
  },
32952
33122
  "parsehub": {
32953
- "x": 151,
33123
+ "x": 201,
32954
33124
  "y": 1251
32955
33125
  },
32956
33126
  "parseur": {
32957
- "x": 251,
33127
+ "x": 301,
32958
33128
  "y": 1251
32959
33129
  },
32960
33130
  "parsera": {
32961
- "x": 201,
33131
+ "x": 251,
32962
33132
  "y": 1251
32963
33133
  },
32964
33134
  "paperform": {
32965
- "x": 1901,
33135
+ "x": 1951,
32966
33136
  "y": 1201
32967
33137
  },
32968
33138
  "papertrail": {
32969
- "x": 2001,
32970
- "y": 1201
33139
+ "x": 1,
33140
+ "y": 1251
32971
33141
  },
32972
33142
  "paperless_ngx": {
32973
- "x": 1951,
33143
+ "x": 2001,
32974
33144
  "y": 1201
32975
33145
  },
32976
33146
  "profileapi": {
32977
- "x": 301,
33147
+ "x": 351,
32978
33148
  "y": 1351
32979
33149
  },
32980
33150
  "poper": {
32981
- "x": 1201,
33151
+ "x": 1251,
32982
33152
  "y": 1301
32983
33153
  },
32984
33154
  "pdfless": {
32985
- "x": 951,
33155
+ "x": 1001,
32986
33156
  "y": 1251
32987
33157
  },
32988
33158
  "proxiedmail": {
32989
- "x": 551,
33159
+ "x": 601,
32990
33160
  "y": 1351
32991
33161
  },
32992
33162
  "process_street": {
32993
- "x": 1,
33163
+ "x": 51,
32994
33164
  "y": 1351
32995
33165
  },
32996
33166
  "processplan": {
32997
- "x": 51,
33167
+ "x": 101,
32998
33168
  "y": 1351
32999
33169
  },
33000
33170
  "precoro": {
33001
- "x": 1701,
33171
+ "x": 1751,
33002
33172
  "y": 1301
33003
33173
  },
33004
33174
  "productboard": {
33005
- "x": 151,
33175
+ "x": 201,
33006
33176
  "y": 1351
33007
33177
  },
33008
33178
  "productlane": {
33009
- "x": 251,
33179
+ "x": 301,
33010
33180
  "y": 1351
33011
33181
  },
33012
33182
  "productive": {
33013
- "x": 201,
33183
+ "x": 251,
33014
33184
  "y": 1351
33015
33185
  },
33016
33186
  "proworkflow": {
33017
- "x": 501,
33187
+ "x": 551,
33018
33188
  "y": 1351
33019
33189
  },
33020
33190
  "podscribe": {
33021
- "x": 1001,
33191
+ "x": 1051,
33022
33192
  "y": 1301
33023
33193
  },
33024
33194
  "pod_ai": {
33025
- "x": 951,
33195
+ "x": 1001,
33026
33196
  "y": 1301
33027
33197
  },
33028
33198
  "replicate": {
33029
- "x": 1351,
33199
+ "x": 1401,
33030
33200
  "y": 1401
33031
33201
  },
33032
33202
  "reddit": {
33033
- "x": 801,
33203
+ "x": 851,
33034
33204
  "y": 1401
33035
33205
  },
33036
33206
  "reply_io": {
33037
- "x": 1401,
33207
+ "x": 1451,
33038
33208
  "y": 1401
33039
33209
  },
33040
33210
  "respond_io": {
33041
- "x": 1501,
33211
+ "x": 1551,
33042
33212
  "y": 1401
33043
33213
  },
33044
33214
  "repairshopr": {
33045
- "x": 1301,
33215
+ "x": 1351,
33046
33216
  "y": 1401
33047
33217
  },
33048
33218
  "postman": {
33049
- "x": 1551,
33219
+ "x": 1601,
33050
33220
  "y": 1301
33051
33221
  },
33052
33222
  "promptlayer": {
33053
- "x": 401,
33223
+ "x": 451,
33054
33224
  "y": 1351
33055
33225
  },
33056
33226
  "posthog": {
33057
- "x": 1451,
33227
+ "x": 1501,
33058
33228
  "y": 1301
33059
33229
  },
33060
33230
  "postiz": {
33061
- "x": 1501,
33231
+ "x": 1551,
33062
33232
  "y": 1301
33063
33233
  },
33064
33234
  "prospeo": {
33065
- "x": 451,
33235
+ "x": 501,
33066
33236
  "y": 1351
33067
33237
  },
33068
33238
  "postmark": {
33069
- "x": 1601,
33239
+ "x": 1651,
33070
33240
  "y": 1301
33071
33241
  },
33072
33242
  "postalytics": {
33073
- "x": 1301,
33243
+ "x": 1351,
33074
33244
  "y": 1301
33075
33245
  },
33076
33246
  "pinata": {
33077
- "x": 1851,
33247
+ "x": 1901,
33078
33248
  "y": 1251
33079
33249
  },
33080
33250
  "postgrid": {
33081
- "x": 1351,
33251
+ "x": 1401,
33082
33252
  "y": 1301
33083
33253
  },
33084
33254
  "postgrid_verify": {
33085
- "x": 1401,
33255
+ "x": 1451,
33086
33256
  "y": 1301
33087
33257
  },
33088
33258
  "printavo": {
33089
- "x": 1951,
33259
+ "x": 2001,
33090
33260
  "y": 1301
33091
33261
  },
33092
33262
  "printify": {
33093
- "x": 2001,
33094
- "y": 1301
33263
+ "x": 1,
33264
+ "y": 1351
33095
33265
  },
33096
33266
  "quo": {
33097
- "x": 1801,
33267
+ "x": 1851,
33098
33268
  "y": 1351
33099
33269
  },
33100
33270
  "prerender": {
33101
- "x": 1851,
33271
+ "x": 1901,
33102
33272
  "y": 1301
33103
33273
  },
33104
33274
  "pretix": {
33105
- "x": 1901,
33275
+ "x": 1951,
33106
33276
  "y": 1301
33107
33277
  },
33108
33278
  "prtg_classic": {
33109
- "x": 601,
33279
+ "x": 651,
33110
33280
  "y": 1351
33111
33281
  },
33112
33282
  "pushbullet": {
33113
- "x": 801,
33283
+ "x": 851,
33114
33284
  "y": 1351
33115
33285
  },
33116
33286
  "pushsafer": {
33117
- "x": 951,
33287
+ "x": 1001,
33118
33288
  "y": 1351
33119
33289
  },
33120
33290
  "pushinator": {
33121
- "x": 851,
33291
+ "x": 901,
33122
33292
  "y": 1351
33123
33293
  },
33124
33294
  "push_by_techulus": {
33125
- "x": 751,
33295
+ "x": 801,
33126
33296
  "y": 1351
33127
33297
  },
33128
33298
  "pushover": {
33129
- "x": 901,
33299
+ "x": 951,
33130
33300
  "y": 1351
33131
33301
  },
33132
33302
  "qianfan": {
33133
- "x": 1151,
33303
+ "x": 1201,
33134
33304
  "y": 1351
33135
33305
  },
33136
33306
  "qichacha": {
33137
- "x": 1201,
33307
+ "x": 1251,
33138
33308
  "y": 1351
33139
33309
  },
33140
33310
  "radar": {
33141
- "x": 1951,
33311
+ "x": 2001,
33142
33312
  "y": 1351
33143
33313
  },
33144
33314
  "ragie": {
33145
- "x": 2001,
33146
- "y": 1351
33315
+ "x": 1,
33316
+ "y": 1401
33147
33317
  },
33148
33318
  "raisely": {
33149
- "x": 101,
33319
+ "x": 151,
33150
33320
  "y": 1401
33151
33321
  },
33152
33322
  "reducto": {
33153
- "x": 901,
33323
+ "x": 951,
33154
33324
  "y": 1401
33155
33325
  },
33156
33326
  "recruitee": {
33157
- "x": 651,
33327
+ "x": 701,
33158
33328
  "y": 1401
33159
33329
  },
33160
33330
  "revenuecat": {
33161
- "x": 1701,
33331
+ "x": 1751,
33162
33332
  "y": 1401
33163
33333
  },
33164
33334
  "recruitcrm": {
33165
- "x": 601,
33335
+ "x": 651,
33166
33336
  "y": 1401
33167
33337
  },
33168
33338
  "recruiterflow": {
33169
- "x": 701,
33339
+ "x": 751,
33170
33340
  "y": 1401
33171
33341
  },
33172
33342
  "recharge": {
33173
- "x": 551,
33343
+ "x": 601,
33174
33344
  "y": 1401
33175
33345
  },
33176
33346
  "recurly": {
33177
- "x": 751,
33347
+ "x": 801,
33178
33348
  "y": 1401
33179
33349
  },
33180
33350
  "redfox": {
33181
- "x": 851,
33351
+ "x": 901,
33182
33352
  "y": 1401
33183
33353
  },
33184
33354
  "rawg": {
33185
- "x": 151,
33355
+ "x": 201,
33186
33356
  "y": 1401
33187
33357
  },
33188
33358
  "railway": {
33189
- "x": 1,
33359
+ "x": 51,
33190
33360
  "y": 1401
33191
33361
  },
33192
33362
  "readme": {
33193
- "x": 301,
33363
+ "x": 351,
33194
33364
  "y": 1401
33195
33365
  },
33196
33366
  "realphonevalidation": {
33197
- "x": 401,
33367
+ "x": 451,
33198
33368
  "y": 1401
33199
33369
  },
33200
33370
  "recallai": {
33201
- "x": 501,
33371
+ "x": 551,
33202
33372
  "y": 1401
33203
33373
  },
33204
33374
  "retently": {
33205
- "x": 1651,
33375
+ "x": 1701,
33206
33376
  "y": 1401
33207
33377
  },
33208
33378
  "reversecontact": {
33209
- "x": 1751,
33379
+ "x": 1801,
33210
33380
  "y": 1401
33211
33381
  },
33212
33382
  "retell_ai": {
33213
- "x": 1601,
33383
+ "x": 1651,
33214
33384
  "y": 1401
33215
33385
  },
33216
33386
  "rentman": {
33217
- "x": 1251,
33387
+ "x": 1301,
33218
33388
  "y": 1401
33219
33389
  },
33220
33390
  "roboflow": {
33221
- "x": 251,
33391
+ "x": 301,
33222
33392
  "y": 1451
33223
33393
  },
33224
33394
  "rocket_chat": {
33225
- "x": 301,
33395
+ "x": 351,
33226
33396
  "y": 1451
33227
33397
  },
33228
33398
  "rocketlane": {
33229
- "x": 401,
33399
+ "x": 451,
33230
33400
  "y": 1451
33231
33401
  },
33232
33402
  "rocket_reach": {
33233
- "x": 351,
33403
+ "x": 401,
33234
33404
  "y": 1451
33235
33405
  },
33236
33406
  "roam": {
33237
- "x": 151,
33407
+ "x": 201,
33238
33408
  "y": 1451
33239
33409
  },
33240
33410
  "roam_scim": {
33241
- "x": 201,
33411
+ "x": 251,
33242
33412
  "y": 1451
33243
33413
  },
33244
33414
  "rosette_text_analytics": {
33245
- "x": 551,
33415
+ "x": 601,
33246
33416
  "y": 1451
33247
33417
  },
33248
33418
  "rootly": {
33249
- "x": 501,
33419
+ "x": 551,
33250
33420
  "y": 1451
33251
33421
  },
33252
33422
  "runscope": {
33253
- "x": 751,
33423
+ "x": 801,
33254
33424
  "y": 1451
33255
33425
  },
33256
33426
  "riveter": {
33257
- "x": 101,
33427
+ "x": 151,
33258
33428
  "y": 1451
33259
33429
  },
33260
33430
  "render": {
33261
- "x": 1151,
33431
+ "x": 1201,
33262
33432
  "y": 1401
33263
33433
  },
33264
33434
  "renderform": {
33265
- "x": 1201,
33435
+ "x": 1251,
33266
33436
  "y": 1401
33267
33437
  },
33268
33438
  "rollbar": {
33269
- "x": 451,
33439
+ "x": 501,
33270
33440
  "y": 1451
33271
33441
  },
33272
33442
  "raygun": {
33273
- "x": 201,
33443
+ "x": 251,
33274
33444
  "y": 1401
33275
33445
  },
33276
33446
  "cubox": {
@@ -33278,91 +33448,91 @@ var spriteCatalog = {
33278
33448
  "y": 401
33279
33449
  },
33280
33450
  "runpod": {
33281
- "x": 701,
33451
+ "x": 751,
33282
33452
  "y": 1451
33283
33453
  },
33284
33454
  "remove_bg": {
33285
- "x": 1101,
33455
+ "x": 1151,
33286
33456
  "y": 1401
33287
33457
  },
33288
33458
  "rebrandly": {
33289
- "x": 451,
33459
+ "x": 501,
33290
33460
  "y": 1401
33291
33461
  },
33292
33462
  "refiner": {
33293
- "x": 1051,
33463
+ "x": 1101,
33294
33464
  "y": 1401
33295
33465
  },
33296
33466
  "referralrock": {
33297
- "x": 1001,
33467
+ "x": 1051,
33298
33468
  "y": 1401
33299
33469
  },
33300
33470
  "readwise": {
33301
- "x": 351,
33471
+ "x": 401,
33302
33472
  "y": 1401
33303
33473
  },
33304
33474
  "raindrop": {
33305
- "x": 51,
33475
+ "x": 101,
33306
33476
  "y": 1401
33307
33477
  },
33308
33478
  "resend": {
33309
- "x": 1451,
33479
+ "x": 1501,
33310
33480
  "y": 1401
33311
33481
  },
33312
33482
  "satismeter": {
33313
- "x": 1251,
33483
+ "x": 1301,
33314
33484
  "y": 1451
33315
33485
  },
33316
33486
  "sanity": {
33317
- "x": 1201,
33487
+ "x": 1251,
33318
33488
  "y": 1451
33319
33489
  },
33320
33490
  "scrape_creators": {
33321
- "x": 1401,
33491
+ "x": 1501,
33322
33492
  "y": 1451
33323
33493
  },
33324
33494
  "scrape_do": {
33325
- "x": 1451,
33495
+ "x": 1551,
33326
33496
  "y": 1451
33327
33497
  },
33328
33498
  "scrape_graph_ai": {
33329
- "x": 1501,
33499
+ "x": 1601,
33330
33500
  "y": 1451
33331
33501
  },
33332
33502
  "spider": {
33333
- "x": 351,
33503
+ "x": 451,
33334
33504
  "y": 1601
33335
33505
  },
33336
33506
  "scraperapi": {
33337
- "x": 1551,
33507
+ "x": 1651,
33338
33508
  "y": 1451
33339
33509
  },
33340
33510
  "scrapingant": {
33341
- "x": 1651,
33511
+ "x": 1751,
33342
33512
  "y": 1451
33343
33513
  },
33344
33514
  "scrapingbee": {
33345
- "x": 1701,
33515
+ "x": 1801,
33346
33516
  "y": 1451
33347
33517
  },
33348
33518
  "scrapingdog": {
33349
- "x": 1751,
33519
+ "x": 1851,
33350
33520
  "y": 1451
33351
33521
  },
33352
33522
  "scrapfly": {
33353
- "x": 1601,
33523
+ "x": 1701,
33354
33524
  "y": 1451
33355
33525
  },
33356
33526
  "zenscrape": {
33357
- "x": 1951,
33358
- "y": 1901
33527
+ "x": 1,
33528
+ "y": 1951
33359
33529
  },
33360
33530
  "search_api": {
33361
- "x": 2001,
33362
- "y": 1451
33531
+ "x": 51,
33532
+ "y": 1501
33363
33533
  },
33364
33534
  "seatable": {
33365
- "x": 1,
33535
+ "x": 101,
33366
33536
  "y": 1501
33367
33537
  },
33368
33538
  "embase": {
@@ -33370,127 +33540,127 @@ var spriteCatalog = {
33370
33540
  "y": 501
33371
33541
  },
33372
33542
  "scopus": {
33373
- "x": 1351,
33543
+ "x": 1451,
33374
33544
  "y": 1451
33375
33545
  },
33376
33546
  "the_colony": {
33377
- "x": 151,
33547
+ "x": 251,
33378
33548
  "y": 1701
33379
33549
  },
33380
33550
  "the_official_board": {
33381
- "x": 301,
33551
+ "x": 401,
33382
33552
  "y": 1701
33383
33553
  },
33384
33554
  "semantic_scholar": {
33385
- "x": 351,
33555
+ "x": 451,
33386
33556
  "y": 1501
33387
33557
  },
33388
33558
  "serveravatar": {
33389
- "x": 1151,
33559
+ "x": 1251,
33390
33560
  "y": 1501
33391
33561
  },
33392
33562
  "semrush": {
33393
- "x": 401,
33563
+ "x": 501,
33394
33564
  "y": 1501
33395
33565
  },
33396
33566
  "spyfu": {
33397
- "x": 501,
33567
+ "x": 601,
33398
33568
  "y": 1601
33399
33569
  },
33400
33570
  "serpdog": {
33401
- "x": 1001,
33571
+ "x": 1101,
33402
33572
  "y": 1501
33403
33573
  },
33404
33574
  "serply": {
33405
- "x": 1101,
33575
+ "x": 1201,
33406
33576
  "y": 1501
33407
33577
  },
33408
33578
  "securitytrails": {
33409
- "x": 51,
33579
+ "x": 151,
33410
33580
  "y": 1501
33411
33581
  },
33412
33582
  "sheetdb": {
33413
- "x": 1351,
33583
+ "x": 1451,
33414
33584
  "y": 1501
33415
33585
  },
33416
33586
  "shodan": {
33417
- "x": 1701,
33587
+ "x": 1801,
33418
33588
  "y": 1501
33419
33589
  },
33420
33590
  "shortpixel": {
33421
- "x": 151,
33591
+ "x": 251,
33422
33592
  "y": 1551
33423
33593
  },
33424
33594
  "signpath": {
33425
- "x": 401,
33595
+ "x": 501,
33426
33596
  "y": 1551
33427
33597
  },
33428
33598
  "sendbird": {
33429
- "x": 451,
33599
+ "x": 551,
33430
33600
  "y": 1501
33431
33601
  },
33432
33602
  "segment": {
33433
- "x": 151,
33603
+ "x": 251,
33434
33604
  "y": 1501
33435
33605
  },
33436
33606
  "sendfox": {
33437
- "x": 551,
33607
+ "x": 651,
33438
33608
  "y": 1501
33439
33609
  },
33440
33610
  "sendmator": {
33441
- "x": 701,
33611
+ "x": 801,
33442
33612
  "y": 1501
33443
33613
  },
33444
33614
  "sendgrid": {
33445
- "x": 601,
33615
+ "x": 701,
33446
33616
  "y": 1501
33447
33617
  },
33448
33618
  "sendlane": {
33449
- "x": 651,
33619
+ "x": 751,
33450
33620
  "y": 1501
33451
33621
  },
33452
33622
  "sender": {
33453
- "x": 501,
33623
+ "x": 601,
33454
33624
  "y": 1501
33455
33625
  },
33456
33626
  "sendspark": {
33457
- "x": 751,
33627
+ "x": 851,
33458
33628
  "y": 1501
33459
33629
  },
33460
33630
  "sevdesk": {
33461
- "x": 1251,
33631
+ "x": 1351,
33462
33632
  "y": 1501
33463
33633
  },
33464
33634
  "sensibo": {
33465
- "x": 801,
33635
+ "x": 901,
33466
33636
  "y": 1501
33467
33637
  },
33468
33638
  "seqera": {
33469
- "x": 901,
33639
+ "x": 1001,
33470
33640
  "y": 1501
33471
33641
  },
33472
33642
  "serpapi": {
33473
- "x": 951,
33643
+ "x": 1051,
33474
33644
  "y": 1501
33475
33645
  },
33476
33646
  "serphouse": {
33477
- "x": 1051,
33647
+ "x": 1151,
33478
33648
  "y": 1501
33479
33649
  },
33480
33650
  "sitespeakai": {
33481
- "x": 851,
33651
+ "x": 951,
33482
33652
  "y": 1551
33483
33653
  },
33484
33654
  "speak_ai": {
33485
- "x": 201,
33655
+ "x": 301,
33486
33656
  "y": 1601
33487
33657
  },
33488
33658
  "softr": {
33489
- "x": 1951,
33490
- "y": 1551
33659
+ "x": 1,
33660
+ "y": 1601
33491
33661
  },
33492
33662
  "planly": {
33493
- "x": 651,
33663
+ "x": 701,
33494
33664
  "y": 1301
33495
33665
  },
33496
33666
  "easy_peasy_ai": {
@@ -33498,343 +33668,343 @@ var spriteCatalog = {
33498
33668
  "y": 501
33499
33669
  },
33500
33670
  "screenshot_fyi": {
33501
- "x": 1851,
33671
+ "x": 1951,
33502
33672
  "y": 1451
33503
33673
  },
33504
33674
  "roxyapi": {
33505
- "x": 651,
33675
+ "x": 701,
33506
33676
  "y": 1451
33507
33677
  },
33508
33678
  "riddle_quiz_maker": {
33509
- "x": 1851,
33679
+ "x": 1901,
33510
33680
  "y": 1401
33511
33681
  },
33512
33682
  "screenshotbase": {
33513
- "x": 1901,
33683
+ "x": 2001,
33514
33684
  "y": 1451
33515
33685
  },
33516
33686
  "smartsuite": {
33517
- "x": 1551,
33687
+ "x": 1651,
33518
33688
  "y": 1551
33519
33689
  },
33520
33690
  "sportsdata": {
33521
- "x": 451,
33691
+ "x": 551,
33522
33692
  "y": 1601
33523
33693
  },
33524
33694
  "ringg_ai": {
33525
- "x": 1951,
33695
+ "x": 2001,
33526
33696
  "y": 1401
33527
33697
  },
33528
33698
  "rewiser": {
33529
- "x": 1801,
33699
+ "x": 1851,
33530
33700
  "y": 1401
33531
33701
  },
33532
33702
  "referralhero": {
33533
- "x": 951,
33703
+ "x": 1001,
33534
33704
  "y": 1401
33535
33705
  },
33536
33706
  "workiz": {
33537
- "x": 351,
33707
+ "x": 451,
33538
33708
  "y": 1901
33539
33709
  },
33540
33710
  "salesflare": {
33541
- "x": 1001,
33711
+ "x": 1051,
33542
33712
  "y": 1451
33543
33713
  },
33544
33714
  "samcart": {
33545
- "x": 1151,
33715
+ "x": 1201,
33546
33716
  "y": 1451
33547
33717
  },
33548
33718
  "sherpa": {
33549
- "x": 1401,
33719
+ "x": 1501,
33550
33720
  "y": 1501
33551
33721
  },
33552
33722
  "screenshotone": {
33553
- "x": 1951,
33554
- "y": 1451
33723
+ "x": 1,
33724
+ "y": 1501
33555
33725
  },
33556
33726
  "sentry": {
33557
- "x": 851,
33727
+ "x": 951,
33558
33728
  "y": 1501
33559
33729
  },
33560
33730
  "supportbee": {
33561
- "x": 251,
33731
+ "x": 351,
33562
33732
  "y": 1651
33563
33733
  },
33564
33734
  "similarweb_digitalrank_api": {
33565
- "x": 501,
33735
+ "x": 601,
33566
33736
  "y": 1551
33567
33737
  },
33568
33738
  "simla": {
33569
- "x": 551,
33739
+ "x": 651,
33570
33740
  "y": 1551
33571
33741
  },
33572
33742
  "simplybook_me": {
33573
- "x": 801,
33743
+ "x": 901,
33574
33744
  "y": 1551
33575
33745
  },
33576
33746
  "short_io": {
33577
- "x": 2001,
33578
- "y": 1501
33747
+ "x": 51,
33748
+ "y": 1551
33579
33749
  },
33580
33750
  "shorten_rest": {
33581
- "x": 101,
33751
+ "x": 201,
33582
33752
  "y": 1551
33583
33753
  },
33584
33754
  "shortcut": {
33585
- "x": 51,
33755
+ "x": 151,
33586
33756
  "y": 1551
33587
33757
  },
33588
33758
  "short_menu": {
33589
- "x": 1,
33759
+ "x": 101,
33590
33760
  "y": 1551
33591
33761
  },
33592
33762
  "simple_analytics": {
33593
- "x": 601,
33763
+ "x": 701,
33594
33764
  "y": 1551
33595
33765
  },
33596
33766
  "simplelocalize": {
33597
- "x": 651,
33767
+ "x": 751,
33598
33768
  "y": 1551
33599
33769
  },
33600
33770
  "simplesat": {
33601
- "x": 701,
33771
+ "x": 801,
33602
33772
  "y": 1551
33603
33773
  },
33604
33774
  "slack": {
33605
- "x": 1101,
33775
+ "x": 1201,
33606
33776
  "y": 1551
33607
33777
  },
33608
33778
  "slackbot": {
33609
- "x": 1151,
33779
+ "x": 1251,
33610
33780
  "y": 1551
33611
33781
  },
33612
33782
  "slab": {
33613
- "x": 1051,
33783
+ "x": 1151,
33614
33784
  "y": 1551
33615
33785
  },
33616
33786
  "slicktext": {
33617
- "x": 1251,
33787
+ "x": 1351,
33618
33788
  "y": 1551
33619
33789
  },
33620
33790
  "sling": {
33621
- "x": 1301,
33791
+ "x": 1401,
33622
33792
  "y": 1551
33623
33793
  },
33624
33794
  "splunk_http_event_collector": {
33625
- "x": 401,
33795
+ "x": 501,
33626
33796
  "y": 1601
33627
33797
  },
33628
33798
  "snipe_it": {
33629
- "x": 1801,
33799
+ "x": 1901,
33630
33800
  "y": 1551
33631
33801
  },
33632
33802
  "snipcart": {
33633
- "x": 1751,
33803
+ "x": 1851,
33634
33804
  "y": 1551
33635
33805
  },
33636
33806
  "snyk": {
33637
- "x": 1851,
33807
+ "x": 1951,
33638
33808
  "y": 1551
33639
33809
  },
33640
33810
  "slite": {
33641
- "x": 1351,
33811
+ "x": 1451,
33642
33812
  "y": 1551
33643
33813
  },
33644
33814
  "picky_assist": {
33645
- "x": 1751,
33815
+ "x": 1801,
33646
33816
  "y": 1251
33647
33817
  },
33648
33818
  "sms_alert": {
33649
- "x": 1601,
33819
+ "x": 1701,
33650
33820
  "y": 1551
33651
33821
  },
33652
33822
  "smtp2go": {
33653
- "x": 1651,
33823
+ "x": 1751,
33654
33824
  "y": 1551
33655
33825
  },
33656
33826
  "smugmug": {
33657
- "x": 1701,
33827
+ "x": 1801,
33658
33828
  "y": 1551
33659
33829
  },
33660
33830
  "solcast": {
33661
- "x": 1,
33831
+ "x": 101,
33662
33832
  "y": 1601
33663
33833
  },
33664
33834
  "sonarcloud": {
33665
- "x": 51,
33835
+ "x": 151,
33666
33836
  "y": 1601
33667
33837
  },
33668
33838
  "social_fetch": {
33669
- "x": 1901,
33839
+ "x": 2001,
33670
33840
  "y": 1551
33671
33841
  },
33672
33842
  "stannp": {
33673
- "x": 801,
33843
+ "x": 901,
33674
33844
  "y": 1601
33675
33845
  },
33676
33846
  "stealthgpt": {
33677
- "x": 1251,
33847
+ "x": 1351,
33678
33848
  "y": 1601
33679
33849
  },
33680
33850
  "speechmatics": {
33681
- "x": 251,
33851
+ "x": 351,
33682
33852
  "y": 1601
33683
33853
  },
33684
33854
  "statista": {
33685
- "x": 951,
33855
+ "x": 1051,
33686
33856
  "y": 1601
33687
33857
  },
33688
33858
  "statamic": {
33689
- "x": 901,
33859
+ "x": 1001,
33690
33860
  "y": 1601
33691
33861
  },
33692
33862
  "statsig": {
33693
- "x": 1001,
33863
+ "x": 1101,
33694
33864
  "y": 1601
33695
33865
  },
33696
33866
  "statuscake": {
33697
- "x": 1051,
33867
+ "x": 1151,
33698
33868
  "y": 1601
33699
33869
  },
33700
33870
  "statuspage": {
33701
- "x": 1101,
33871
+ "x": 1201,
33702
33872
  "y": 1601
33703
33873
  },
33704
33874
  "statuspal": {
33705
- "x": 1151,
33875
+ "x": 1251,
33706
33876
  "y": 1601
33707
33877
  },
33708
33878
  "stay_ai": {
33709
- "x": 1201,
33879
+ "x": 1301,
33710
33880
  "y": 1601
33711
33881
  },
33712
33882
  "store_leads": {
33713
- "x": 1301,
33883
+ "x": 1401,
33714
33884
  "y": 1601
33715
33885
  },
33716
33886
  "storecensus": {
33717
- "x": 1351,
33887
+ "x": 1451,
33718
33888
  "y": 1601
33719
33889
  },
33720
33890
  "stormboard": {
33721
- "x": 1401,
33891
+ "x": 1501,
33722
33892
  "y": 1601
33723
33893
  },
33724
33894
  "storyblok": {
33725
- "x": 1501,
33895
+ "x": 1601,
33726
33896
  "y": 1601
33727
33897
  },
33728
33898
  "stripe": {
33729
- "x": 1751,
33899
+ "x": 1851,
33730
33900
  "y": 1601
33731
33901
  },
33732
33902
  "streak": {
33733
- "x": 1601,
33903
+ "x": 1701,
33734
33904
  "y": 1601
33735
33905
  },
33736
33906
  "stabilityai": {
33737
- "x": 651,
33907
+ "x": 751,
33738
33908
  "y": 1601
33739
33909
  },
33740
33910
  "subvisory": {
33741
- "x": 1801,
33911
+ "x": 1901,
33742
33912
  "y": 1601
33743
33913
  },
33744
33914
  "supervisely": {
33745
- "x": 201,
33915
+ "x": 301,
33746
33916
  "y": 1651
33747
33917
  },
33748
33918
  "starton": {
33749
- "x": 851,
33919
+ "x": 951,
33750
33920
  "y": 1601
33751
33921
  },
33752
33922
  "stormglass_io": {
33753
- "x": 1451,
33923
+ "x": 1551,
33754
33924
  "y": 1601
33755
33925
  },
33756
33926
  "stream_estate": {
33757
- "x": 1651,
33927
+ "x": 1751,
33758
33928
  "y": 1601
33759
33929
  },
33760
33930
  "streamtime": {
33761
- "x": 1701,
33931
+ "x": 1801,
33762
33932
  "y": 1601
33763
33933
  },
33764
33934
  "sunoapi": {
33765
- "x": 1901,
33935
+ "x": 2001,
33766
33936
  "y": 1601
33767
33937
  },
33768
33938
  "strava": {
33769
- "x": 1551,
33939
+ "x": 1651,
33770
33940
  "y": 1601
33771
33941
  },
33772
33942
  "supabase": {
33773
- "x": 2001,
33774
- "y": 1601
33943
+ "x": 51,
33944
+ "y": 1651
33775
33945
  },
33776
33946
  "surecontact": {
33777
- "x": 301,
33947
+ "x": 401,
33778
33948
  "y": 1651
33779
33949
  },
33780
33950
  "supadata": {
33781
- "x": 1,
33951
+ "x": 101,
33782
33952
  "y": 1651
33783
33953
  },
33784
33954
  "sumup": {
33785
- "x": 1851,
33955
+ "x": 1951,
33786
33956
  "y": 1601
33787
33957
  },
33788
33958
  "superchat": {
33789
- "x": 101,
33959
+ "x": 201,
33790
33960
  "y": 1651
33791
33961
  },
33792
33962
  "super_saas": {
33793
- "x": 51,
33963
+ "x": 151,
33794
33964
  "y": 1651
33795
33965
  },
33796
33966
  "sunsama_mcp": {
33797
- "x": 1951,
33798
- "y": 1601
33967
+ "x": 1,
33968
+ "y": 1651
33799
33969
  },
33800
33970
  "skio": {
33801
- "x": 901,
33971
+ "x": 1001,
33802
33972
  "y": 1551
33803
33973
  },
33804
33974
  "skyfire": {
33805
- "x": 951,
33975
+ "x": 1051,
33806
33976
  "y": 1551
33807
33977
  },
33808
33978
  "stack_ai": {
33809
- "x": 701,
33979
+ "x": 801,
33810
33980
  "y": 1601
33811
33981
  },
33812
33982
  "stack_overflow_for_teams": {
33813
- "x": 751,
33983
+ "x": 851,
33814
33984
  "y": 1601
33815
33985
  },
33816
33986
  "svix": {
33817
- "x": 451,
33987
+ "x": 551,
33818
33988
  "y": 1651
33819
33989
  },
33820
33990
  "systeme_io": {
33821
- "x": 551,
33991
+ "x": 651,
33822
33992
  "y": 1651
33823
33993
  },
33824
33994
  "swaggerhub": {
33825
- "x": 501,
33995
+ "x": 601,
33826
33996
  "y": 1651
33827
33997
  },
33828
33998
  "taggun": {
33829
- "x": 651,
33999
+ "x": 751,
33830
34000
  "y": 1651
33831
34001
  },
33832
34002
  "tabapi": {
33833
- "x": 601,
34003
+ "x": 701,
33834
34004
  "y": 1651
33835
34005
  },
33836
34006
  "talenox": {
33837
- "x": 801,
34007
+ "x": 901,
33838
34008
  "y": 1651
33839
34009
  },
33840
34010
  "commonninja": {
@@ -33842,15 +34012,15 @@ var spriteCatalog = {
33842
34012
  "y": 351
33843
34013
  },
33844
34014
  "simpletexting": {
33845
- "x": 751,
34015
+ "x": 851,
33846
34016
  "y": 1551
33847
34017
  },
33848
34018
  "pointagram": {
33849
- "x": 1051,
34019
+ "x": 1101,
33850
34020
  "y": 1301
33851
34021
  },
33852
34022
  "validemail": {
33853
- "x": 451,
34023
+ "x": 551,
33854
34024
  "y": 1801
33855
34025
  },
33856
34026
  "kenjo": {
@@ -33858,539 +34028,539 @@ var spriteCatalog = {
33858
34028
  "y": 901
33859
34029
  },
33860
34030
  "talenthr": {
33861
- "x": 851,
34031
+ "x": 951,
33862
34032
  "y": 1651
33863
34033
  },
33864
34034
  "talentlms": {
33865
- "x": 901,
34035
+ "x": 1001,
33866
34036
  "y": 1651
33867
34037
  },
33868
34038
  "tailscale": {
33869
- "x": 751,
34039
+ "x": 851,
33870
34040
  "y": 1651
33871
34041
  },
33872
34042
  "teamtailor": {
33873
- "x": 1351,
34043
+ "x": 1451,
33874
34044
  "y": 1651
33875
34045
  },
33876
34046
  "teable": {
33877
- "x": 1251,
34047
+ "x": 1351,
33878
34048
  "y": 1651
33879
34049
  },
33880
34050
  "telnyx": {
33881
- "x": 1501,
34051
+ "x": 1601,
33882
34052
  "y": 1651
33883
34053
  },
33884
34054
  "taxjar": {
33885
- "x": 1201,
34055
+ "x": 1301,
33886
34056
  "y": 1651
33887
34057
  },
33888
34058
  "tally": {
33889
- "x": 951,
34059
+ "x": 1051,
33890
34060
  "y": 1651
33891
34061
  },
33892
34062
  "tapfiliate": {
33893
- "x": 1051,
34063
+ "x": 1151,
33894
34064
  "y": 1651
33895
34065
  },
33896
34066
  "tanium": {
33897
- "x": 1001,
34067
+ "x": 1101,
33898
34068
  "y": 1651
33899
34069
  },
33900
34070
  "taiga": {
33901
- "x": 701,
34071
+ "x": 801,
33902
34072
  "y": 1651
33903
34073
  },
33904
34074
  "teamcamp": {
33905
- "x": 1301,
34075
+ "x": 1401,
33906
34076
  "y": 1651
33907
34077
  },
33908
34078
  "teamup": {
33909
- "x": 1401,
34079
+ "x": 1501,
33910
34080
  "y": 1651
33911
34081
  },
33912
34082
  "tave": {
33913
- "x": 1101,
34083
+ "x": 1201,
33914
34084
  "y": 1651
33915
34085
  },
33916
34086
  "tavily": {
33917
- "x": 1151,
34087
+ "x": 1251,
33918
34088
  "y": 1651
33919
34089
  },
33920
34090
  "tianyancha": {
33921
- "x": 651,
34091
+ "x": 751,
33922
34092
  "y": 1701
33923
34093
  },
33924
34094
  "tongdaxin": {
33925
- "x": 2001,
33926
- "y": 1701
34095
+ "x": 51,
34096
+ "y": 1751
33927
34097
  },
33928
34098
  "terraform": {
33929
- "x": 1901,
34099
+ "x": 2001,
33930
34100
  "y": 1651
33931
34101
  },
33932
34102
  "torii": {
33933
- "x": 1,
34103
+ "x": 101,
33934
34104
  "y": 1751
33935
34105
  },
33936
34106
  "torii_image_translator": {
33937
- "x": 51,
34107
+ "x": 151,
33938
34108
  "y": 1751
33939
34109
  },
33940
34110
  "the_swarm": {
33941
- "x": 351,
34111
+ "x": 451,
33942
34112
  "y": 1701
33943
34113
  },
33944
34114
  "valyu": {
33945
- "x": 501,
34115
+ "x": 601,
33946
34116
  "y": 1801
33947
34117
  },
33948
34118
  "vbout": {
33949
- "x": 651,
34119
+ "x": 751,
33950
34120
  "y": 1801
33951
34121
  },
33952
34122
  "vitally": {
33953
- "x": 1451,
34123
+ "x": 1551,
33954
34124
  "y": 1801
33955
34125
  },
33956
34126
  "templated": {
33957
- "x": 1601,
34127
+ "x": 1701,
33958
34128
  "y": 1651
33959
34129
  },
33960
34130
  "templatefox": {
33961
- "x": 1701,
34131
+ "x": 1801,
33962
34132
  "y": 1651
33963
34133
  },
33964
34134
  "tikhub": {
33965
- "x": 1001,
34135
+ "x": 1101,
33966
34136
  "y": 1701
33967
34137
  },
33968
34138
  "tianapi": {
33969
- "x": 601,
34139
+ "x": 701,
33970
34140
  "y": 1701
33971
34141
  },
33972
34142
  "tiktok_business": {
33973
- "x": 1051,
34143
+ "x": 1151,
33974
34144
  "y": 1701
33975
34145
  },
33976
34146
  "tiktok_business_mcp": {
33977
- "x": 1101,
34147
+ "x": 1201,
33978
34148
  "y": 1701
33979
34149
  },
33980
34150
  "timem_space": {
33981
- "x": 1351,
34151
+ "x": 1451,
33982
34152
  "y": 1701
33983
34153
  },
33984
34154
  "timelinesai": {
33985
- "x": 1251,
34155
+ "x": 1351,
33986
34156
  "y": 1701
33987
34157
  },
33988
34158
  "tidb": {
33989
- "x": 951,
34159
+ "x": 1051,
33990
34160
  "y": 1701
33991
34161
  },
33992
34162
  "teltel": {
33993
- "x": 1551,
34163
+ "x": 1651,
33994
34164
  "y": 1651
33995
34165
  },
33996
34166
  "timelink": {
33997
- "x": 1301,
34167
+ "x": 1401,
33998
34168
  "y": 1701
33999
34169
  },
34000
34170
  "timecamp": {
34001
- "x": 1201,
34171
+ "x": 1301,
34002
34172
  "y": 1701
34003
34173
  },
34004
34174
  "timebuzzer": {
34005
- "x": 1151,
34175
+ "x": 1251,
34006
34176
  "y": 1701
34007
34177
  },
34008
34178
  "tldv": {
34009
- "x": 1601,
34179
+ "x": 1701,
34010
34180
  "y": 1701
34011
34181
  },
34012
34182
  "tencent_docs": {
34013
- "x": 1751,
34183
+ "x": 1851,
34014
34184
  "y": 1651
34015
34185
  },
34016
34186
  "tencent_maps": {
34017
- "x": 1801,
34187
+ "x": 1901,
34018
34188
  "y": 1651
34019
34189
  },
34020
34190
  "terminus_app": {
34021
- "x": 1851,
34191
+ "x": 1951,
34022
34192
  "y": 1651
34023
34193
  },
34024
34194
  "templatedocs": {
34025
- "x": 1651,
34195
+ "x": 1751,
34026
34196
  "y": 1651
34027
34197
  },
34028
34198
  "pdf_vector": {
34029
- "x": 901,
34199
+ "x": 951,
34030
34200
  "y": 1251
34031
34201
  },
34032
34202
  "tinypng": {
34033
- "x": 1451,
34203
+ "x": 1551,
34034
34204
  "y": 1701
34035
34205
  },
34036
34206
  "tinybird": {
34037
- "x": 1401,
34207
+ "x": 1501,
34038
34208
  "y": 1701
34039
34209
  },
34040
34210
  "telegram": {
34041
- "x": 1451,
34211
+ "x": 1551,
34042
34212
  "y": 1651
34043
34213
  },
34044
34214
  "ticketmaster": {
34045
- "x": 851,
34215
+ "x": 951,
34046
34216
  "y": 1701
34047
34217
  },
34048
34218
  "ticket_tailor": {
34049
- "x": 801,
34219
+ "x": 901,
34050
34220
  "y": 1701
34051
34221
  },
34052
34222
  "ticket_source": {
34053
- "x": 751,
34223
+ "x": 851,
34054
34224
  "y": 1701
34055
34225
  },
34056
34226
  "tick": {
34057
- "x": 701,
34227
+ "x": 801,
34058
34228
  "y": 1701
34059
34229
  },
34060
34230
  "ticktick": {
34061
- "x": 901,
34231
+ "x": 1001,
34062
34232
  "y": 1701
34063
34233
  },
34064
34234
  "textrazor": {
34065
- "x": 51,
34235
+ "x": 151,
34066
34236
  "y": 1701
34067
34237
  },
34068
34238
  "textcortex": {
34069
- "x": 1951,
34070
- "y": 1651
34239
+ "x": 1,
34240
+ "y": 1701
34071
34241
  },
34072
34242
  "textit": {
34073
- "x": 2001,
34074
- "y": 1651
34243
+ "x": 51,
34244
+ "y": 1701
34075
34245
  },
34076
34246
  "textmagic": {
34077
- "x": 1,
34247
+ "x": 101,
34078
34248
  "y": 1701
34079
34249
  },
34080
34250
  "wp_maps": {
34081
- "x": 601,
34251
+ "x": 701,
34082
34252
  "y": 1901
34083
34253
  },
34084
34254
  "you": {
34085
- "x": 1451,
34255
+ "x": 1551,
34086
34256
  "y": 1901
34087
34257
  },
34088
34258
  "y_gy": {
34089
- "x": 1201,
34259
+ "x": 1301,
34090
34260
  "y": 1901
34091
34261
  },
34092
34262
  "yoplanning": {
34093
- "x": 1401,
34263
+ "x": 1501,
34094
34264
  "y": 1901
34095
34265
  },
34096
34266
  "yuandian": {
34097
- "x": 1601,
34267
+ "x": 1701,
34098
34268
  "y": 1901
34099
34269
  },
34100
34270
  "yuanfenju": {
34101
- "x": 1651,
34271
+ "x": 1751,
34102
34272
  "y": 1901
34103
34273
  },
34104
34274
  "zhihu": {
34105
- "x": 251,
34275
+ "x": 351,
34106
34276
  "y": 1951
34107
34277
  },
34108
34278
  "ynab": {
34109
- "x": 1351,
34279
+ "x": 1451,
34110
34280
  "y": 1901
34111
34281
  },
34112
34282
  "tisane": {
34113
- "x": 1551,
34283
+ "x": 1651,
34114
34284
  "y": 1701
34115
34285
  },
34116
34286
  "tinyurl": {
34117
- "x": 1501,
34287
+ "x": 1601,
34118
34288
  "y": 1701
34119
34289
  },
34120
34290
  "todoist": {
34121
- "x": 1701,
34291
+ "x": 1801,
34122
34292
  "y": 1701
34123
34293
  },
34124
34294
  "tmdb": {
34125
- "x": 1651,
34295
+ "x": 1751,
34126
34296
  "y": 1701
34127
34297
  },
34128
34298
  "toggl": {
34129
- "x": 1801,
34299
+ "x": 1901,
34130
34300
  "y": 1701
34131
34301
  },
34132
34302
  "tomtom": {
34133
- "x": 1951,
34134
- "y": 1701
34303
+ "x": 1,
34304
+ "y": 1751
34135
34305
  },
34136
34306
  "trello": {
34137
- "x": 251,
34307
+ "x": 351,
34138
34308
  "y": 1751
34139
34309
  },
34140
34310
  "trendshift": {
34141
- "x": 351,
34311
+ "x": 451,
34142
34312
  "y": 1751
34143
34313
  },
34144
34314
  "trilium": {
34145
- "x": 551,
34315
+ "x": 651,
34146
34316
  "y": 1751
34147
34317
  },
34148
34318
  "trent": {
34149
- "x": 401,
34319
+ "x": 501,
34150
34320
  "y": 1751
34151
34321
  },
34152
34322
  "tremendous": {
34153
- "x": 301,
34323
+ "x": 401,
34154
34324
  "y": 1751
34155
34325
  },
34156
34326
  "trawlingweb": {
34157
- "x": 201,
34327
+ "x": 301,
34158
34328
  "y": 1751
34159
34329
  },
34160
34330
  "twelve_data": {
34161
- "x": 951,
34331
+ "x": 1051,
34162
34332
  "y": 1751
34163
34333
  },
34164
34334
  "turbot_pipes": {
34165
- "x": 751,
34335
+ "x": 851,
34166
34336
  "y": 1751
34167
34337
  },
34168
34338
  "tushare": {
34169
- "x": 851,
34339
+ "x": 951,
34170
34340
  "y": 1751
34171
34341
  },
34172
34342
  "tuskr": {
34173
- "x": 901,
34343
+ "x": 1001,
34174
34344
  "y": 1751
34175
34345
  },
34176
34346
  "together_ai": {
34177
- "x": 1751,
34347
+ "x": 1851,
34178
34348
  "y": 1701
34179
34349
  },
34180
34350
  "token_metrics": {
34181
- "x": 1851,
34351
+ "x": 1951,
34182
34352
  "y": 1701
34183
34353
  },
34184
34354
  "totp": {
34185
- "x": 101,
34355
+ "x": 201,
34186
34356
  "y": 1751
34187
34357
  },
34188
34358
  "theirstack": {
34189
- "x": 501,
34359
+ "x": 601,
34190
34360
  "y": 1701
34191
34361
  },
34192
34362
  "the_odds_api": {
34193
- "x": 251,
34363
+ "x": 351,
34194
34364
  "y": 1701
34195
34365
  },
34196
34366
  "the_cat_api": {
34197
- "x": 101,
34367
+ "x": 201,
34198
34368
  "y": 1701
34199
34369
  },
34200
34370
  "the_dog_api": {
34201
- "x": 201,
34371
+ "x": 301,
34202
34372
  "y": 1701
34203
34373
  },
34204
34374
  "tripadvisor": {
34205
- "x": 601,
34375
+ "x": 701,
34206
34376
  "y": 1751
34207
34377
  },
34208
34378
  "triple_whale": {
34209
- "x": 651,
34379
+ "x": 751,
34210
34380
  "y": 1751
34211
34381
  },
34212
34382
  "tpscheck": {
34213
- "x": 151,
34383
+ "x": 251,
34214
34384
  "y": 1751
34215
34385
  },
34216
34386
  "twochat": {
34217
- "x": 1201,
34387
+ "x": 1301,
34218
34388
  "y": 1751
34219
34389
  },
34220
34390
  "unifapi": {
34221
- "x": 1551,
34391
+ "x": 1651,
34222
34392
  "y": 1751
34223
34393
  },
34224
34394
  "unione": {
34225
- "x": 1601,
34395
+ "x": 1701,
34226
34396
  "y": 1751
34227
34397
  },
34228
34398
  "unipile": {
34229
- "x": 1651,
34399
+ "x": 1751,
34230
34400
  "y": 1751
34231
34401
  },
34232
34402
  "unpaywall": {
34233
- "x": 1801,
34403
+ "x": 1901,
34234
34404
  "y": 1751
34235
34405
  },
34236
34406
  "unthread": {
34237
- "x": 1901,
34407
+ "x": 2001,
34238
34408
  "y": 1751
34239
34409
  },
34240
34410
  "practitest": {
34241
- "x": 1651,
34411
+ "x": 1701,
34242
34412
  "y": 1301
34243
34413
  },
34244
34414
  "u301": {
34245
- "x": 1451,
34415
+ "x": 1551,
34246
34416
  "y": 1751
34247
34417
  },
34248
34418
  "updown_io": {
34249
- "x": 1951,
34250
- "y": 1751
34419
+ "x": 1,
34420
+ "y": 1801
34251
34421
  },
34252
34422
  "upstash_redis": {
34253
- "x": 51,
34423
+ "x": 151,
34254
34424
  "y": 1801
34255
34425
  },
34256
34426
  "uploadcare": {
34257
- "x": 2001,
34258
- "y": 1751
34427
+ "x": 51,
34428
+ "y": 1801
34259
34429
  },
34260
34430
  "upsales": {
34261
- "x": 1,
34431
+ "x": 101,
34262
34432
  "y": 1801
34263
34433
  },
34264
34434
  "uptimerobot": {
34265
- "x": 101,
34435
+ "x": 201,
34266
34436
  "y": 1801
34267
34437
  },
34268
34438
  "vapi": {
34269
- "x": 551,
34439
+ "x": 651,
34270
34440
  "y": 1801
34271
34441
  },
34272
34442
  "vonage": {
34273
- "x": 1601,
34443
+ "x": 1701,
34274
34444
  "y": 1801
34275
34445
  },
34276
34446
  "vida": {
34277
- "x": 1151,
34447
+ "x": 1251,
34278
34448
  "y": 1801
34279
34449
  },
34280
34450
  "vtex": {
34281
- "x": 1651,
34451
+ "x": 1751,
34282
34452
  "y": 1801
34283
34453
  },
34284
34454
  "vultr": {
34285
- "x": 1701,
34455
+ "x": 1801,
34286
34456
  "y": 1801
34287
34457
  },
34288
34458
  "venafitlsprotectcloud": {
34289
- "x": 801,
34459
+ "x": 901,
34290
34460
  "y": 1801
34291
34461
  },
34292
34462
  "venafitlsprotectdatacenter": {
34293
- "x": 851,
34463
+ "x": 951,
34294
34464
  "y": 1801
34295
34465
  },
34296
34466
  "vectera": {
34297
- "x": 701,
34467
+ "x": 801,
34298
34468
  "y": 1801
34299
34469
  },
34300
34470
  "vectorshift": {
34301
- "x": 751,
34471
+ "x": 851,
34302
34472
  "y": 1801
34303
34473
  },
34304
34474
  "twilio": {
34305
- "x": 1051,
34475
+ "x": 1151,
34306
34476
  "y": 1751
34307
34477
  },
34308
34478
  "twenty_crm": {
34309
- "x": 1001,
34479
+ "x": 1101,
34310
34480
  "y": 1751
34311
34481
  },
34312
34482
  "truvera": {
34313
- "x": 701,
34483
+ "x": 801,
34314
34484
  "y": 1751
34315
34485
  },
34316
34486
  "twitter": {
34317
- "x": 1101,
34487
+ "x": 1201,
34318
34488
  "y": 1751
34319
34489
  },
34320
34490
  "twitterapi_io": {
34321
- "x": 1151,
34491
+ "x": 1251,
34322
34492
  "y": 1751
34323
34493
  },
34324
34494
  "uniswap_api": {
34325
- "x": 1751,
34495
+ "x": 1851,
34326
34496
  "y": 1751
34327
34497
  },
34328
34498
  "typebot": {
34329
- "x": 1251,
34499
+ "x": 1351,
34330
34500
  "y": 1751
34331
34501
  },
34332
34502
  "typeform": {
34333
- "x": 1301,
34503
+ "x": 1401,
34334
34504
  "y": 1751
34335
34505
  },
34336
34506
  "survey_monkey": {
34337
- "x": 351,
34507
+ "x": 451,
34338
34508
  "y": 1651
34339
34509
  },
34340
34510
  "typefully": {
34341
- "x": 1351,
34511
+ "x": 1451,
34342
34512
  "y": 1751
34343
34513
  },
34344
34514
  "trigger_dev": {
34345
- "x": 451,
34515
+ "x": 551,
34346
34516
  "y": 1751
34347
34517
  },
34348
34518
  "triggercmd": {
34349
- "x": 501,
34519
+ "x": 601,
34350
34520
  "y": 1751
34351
34521
  },
34352
34522
  "turso": {
34353
- "x": 801,
34523
+ "x": 901,
34354
34524
  "y": 1751
34355
34525
  },
34356
34526
  "unsplash": {
34357
- "x": 1851,
34527
+ "x": 1951,
34358
34528
  "y": 1751
34359
34529
  },
34360
34530
  "uspto": {
34361
- "x": 301,
34531
+ "x": 401,
34362
34532
  "y": 1801
34363
34533
  },
34364
34534
  "urlscan": {
34365
- "x": 151,
34535
+ "x": 251,
34366
34536
  "y": 1801
34367
34537
  },
34368
34538
  "userflow": {
34369
- "x": 201,
34539
+ "x": 301,
34370
34540
  "y": 1801
34371
34541
  },
34372
34542
  "userlist": {
34373
- "x": 251,
34543
+ "x": 351,
34374
34544
  "y": 1801
34375
34545
  },
34376
34546
  "v2ex": {
34377
- "x": 401,
34547
+ "x": 501,
34378
34548
  "y": 1801
34379
34549
  },
34380
34550
  "viggle": {
34381
- "x": 1201,
34551
+ "x": 1301,
34382
34552
  "y": 1801
34383
34553
  },
34384
34554
  "vimeo": {
34385
- "x": 1251,
34555
+ "x": 1351,
34386
34556
  "y": 1801
34387
34557
  },
34388
34558
  "vercel": {
34389
- "x": 901,
34559
+ "x": 1001,
34390
34560
  "y": 1801
34391
34561
  },
34392
34562
  "veremark": {
34393
- "x": 951,
34563
+ "x": 1051,
34394
34564
  "y": 1801
34395
34565
  },
34396
34566
  "mumble": {
@@ -34398,31 +34568,31 @@ var spriteCatalog = {
34398
34568
  "y": 1101
34399
34569
  },
34400
34570
  "veriphone": {
34401
- "x": 1051,
34571
+ "x": 1151,
34402
34572
  "y": 1801
34403
34573
  },
34404
34574
  "vincario": {
34405
- "x": 1301,
34575
+ "x": 1401,
34406
34576
  "y": 1801
34407
34577
  },
34408
34578
  "verifiedemail": {
34409
- "x": 1001,
34579
+ "x": 1101,
34410
34580
  "y": 1801
34411
34581
  },
34412
34582
  "vatlayer": {
34413
- "x": 601,
34583
+ "x": 701,
34414
34584
  "y": 1801
34415
34585
  },
34416
34586
  "vestaboard": {
34417
- "x": 1101,
34587
+ "x": 1201,
34418
34588
  "y": 1801
34419
34589
  },
34420
34590
  "v0": {
34421
- "x": 351,
34591
+ "x": 451,
34422
34592
  "y": 1801
34423
34593
  },
34424
34594
  "virustotal": {
34425
- "x": 1401,
34595
+ "x": 1501,
34426
34596
  "y": 1801
34427
34597
  },
34428
34598
  "kling": {
@@ -34430,7 +34600,7 @@ var spriteCatalog = {
34430
34600
  "y": 901
34431
34601
  },
34432
34602
  "seedance": {
34433
- "x": 101,
34603
+ "x": 201,
34434
34604
  "y": 1501
34435
34605
  },
34436
34606
  "doubao_seedream": {
@@ -34442,83 +34612,83 @@ var spriteCatalog = {
34442
34612
  "y": 451
34443
34613
  },
34444
34614
  "wanx": {
34445
- "x": 251,
34615
+ "x": 351,
34446
34616
  "y": 1851
34447
34617
  },
34448
34618
  "qwen": {
34449
- "x": 1901,
34619
+ "x": 1951,
34450
34620
  "y": 1351
34451
34621
  },
34452
34622
  "voiceflow": {
34453
- "x": 1501,
34623
+ "x": 1601,
34454
34624
  "y": 1801
34455
34625
  },
34456
34626
  "waboxapp": {
34457
- "x": 1751,
34627
+ "x": 1851,
34458
34628
  "y": 1801
34459
34629
  },
34460
34630
  "wachete": {
34461
- "x": 1801,
34631
+ "x": 1901,
34462
34632
  "y": 1801
34463
34633
  },
34464
34634
  "wufoo": {
34465
- "x": 851,
34635
+ "x": 951,
34466
34636
  "y": 1901
34467
34637
  },
34468
34638
  "waffo": {
34469
- "x": 1851,
34639
+ "x": 1951,
34470
34640
  "y": 1801
34471
34641
  },
34472
34642
  "walmart_marketplace": {
34473
- "x": 101,
34643
+ "x": 201,
34474
34644
  "y": 1851
34475
34645
  },
34476
34646
  "waiverforever": {
34477
- "x": 2001,
34478
- "y": 1801
34647
+ "x": 51,
34648
+ "y": 1851
34479
34649
  },
34480
34650
  "wakatime": {
34481
- "x": 1,
34651
+ "x": 101,
34482
34652
  "y": 1851
34483
34653
  },
34484
34654
  "wangdian": {
34485
- "x": 201,
34655
+ "x": 301,
34486
34656
  "y": 1851
34487
34657
  },
34488
34658
  "waterfall": {
34489
- "x": 351,
34659
+ "x": 451,
34490
34660
  "y": 1851
34491
34661
  },
34492
34662
  "wappalyzer": {
34493
- "x": 301,
34663
+ "x": 401,
34494
34664
  "y": 1851
34495
34665
  },
34496
34666
  "walletap": {
34497
- "x": 51,
34667
+ "x": 151,
34498
34668
  "y": 1851
34499
34669
  },
34500
34670
  "webinarjam": {
34501
- "x": 801,
34671
+ "x": 901,
34502
34672
  "y": 1851
34503
34673
  },
34504
34674
  "web_of_science": {
34505
- "x": 601,
34675
+ "x": 701,
34506
34676
  "y": 1851
34507
34677
  },
34508
34678
  "web_of_science_expanded": {
34509
- "x": 651,
34679
+ "x": 751,
34510
34680
  "y": 1851
34511
34681
  },
34512
34682
  "wejam_ai": {
34513
- "x": 1301,
34683
+ "x": 1401,
34514
34684
  "y": 1851
34515
34685
  },
34516
34686
  "weatherapi": {
34517
- "x": 451,
34687
+ "x": 551,
34518
34688
  "y": 1851
34519
34689
  },
34520
34690
  "weatherbit": {
34521
- "x": 501,
34691
+ "x": 601,
34522
34692
  "y": 1851
34523
34693
  },
34524
34694
  "iqair_airvisual": {
@@ -34526,47 +34696,47 @@ var spriteCatalog = {
34526
34696
  "y": 851
34527
34697
  },
34528
34698
  "wttr_in": {
34529
- "x": 801,
34699
+ "x": 901,
34530
34700
  "y": 1901
34531
34701
  },
34532
34702
  "weaviate": {
34533
- "x": 551,
34703
+ "x": 651,
34534
34704
  "y": 1851
34535
34705
  },
34536
34706
  "webvizio": {
34537
- "x": 1001,
34707
+ "x": 1101,
34538
34708
  "y": 1851
34539
34709
  },
34540
34710
  "webshare": {
34541
- "x": 951,
34711
+ "x": 1051,
34542
34712
  "y": 1851
34543
34713
  },
34544
34714
  "webscraping_ai": {
34545
- "x": 901,
34715
+ "x": 1001,
34546
34716
  "y": 1851
34547
34717
  },
34548
34718
  "webflow": {
34549
- "x": 751,
34719
+ "x": 851,
34550
34720
  "y": 1851
34551
34721
  },
34552
34722
  "woodpecker_co": {
34553
- "x": 51,
34723
+ "x": 151,
34554
34724
  "y": 1901
34555
34725
  },
34556
34726
  "webscraper_io": {
34557
- "x": 851,
34727
+ "x": 951,
34558
34728
  "y": 1851
34559
34729
  },
34560
34730
  "what3words": {
34561
- "x": 1351,
34731
+ "x": 1451,
34562
34732
  "y": 1851
34563
34733
  },
34564
34734
  "woocommerce": {
34565
- "x": 1,
34735
+ "x": 101,
34566
34736
  "y": 1901
34567
34737
  },
34568
34738
  "woot": {
34569
- "x": 101,
34739
+ "x": 201,
34570
34740
  "y": 1901
34571
34741
  },
34572
34742
  "baizhi_mcp": {
@@ -34582,7 +34752,7 @@ var spriteCatalog = {
34582
34752
  "y": 601
34583
34753
  },
34584
34754
  "zerotier": {
34585
- "x": 201,
34755
+ "x": 301,
34586
34756
  "y": 1951
34587
34757
  },
34588
34758
  "linear_mcp": {
@@ -34598,131 +34768,131 @@ var spriteCatalog = {
34598
34768
  "y": 1101
34599
34769
  },
34600
34770
  "wisburg": {
34601
- "x": 1801,
34771
+ "x": 1901,
34602
34772
  "y": 1851
34603
34773
  },
34604
34774
  "wise": {
34605
- "x": 1851,
34775
+ "x": 1951,
34606
34776
  "y": 1851
34607
34777
  },
34608
34778
  "wrike": {
34609
- "x": 701,
34779
+ "x": 801,
34610
34780
  "y": 1901
34611
34781
  },
34612
34782
  "workiom": {
34613
- "x": 301,
34783
+ "x": 401,
34614
34784
  "y": 1901
34615
34785
  },
34616
34786
  "worksnaps": {
34617
- "x": 501,
34787
+ "x": 601,
34618
34788
  "y": 1901
34619
34789
  },
34620
34790
  "workable": {
34621
- "x": 201,
34791
+ "x": 301,
34622
34792
  "y": 1901
34623
34793
  },
34624
34794
  "workast": {
34625
- "x": 251,
34795
+ "x": 351,
34626
34796
  "y": 1901
34627
34797
  },
34628
34798
  "workos": {
34629
- "x": 401,
34799
+ "x": 501,
34630
34800
  "y": 1901
34631
34801
  },
34632
34802
  "wecom_bot": {
34633
- "x": 1051,
34803
+ "x": 1151,
34634
34804
  "y": 1851
34635
34805
  },
34636
34806
  "weixin_bot": {
34637
- "x": 1151,
34807
+ "x": 1251,
34638
34808
  "y": 1851
34639
34809
  },
34640
34810
  "weixin_official_account": {
34641
- "x": 1201,
34811
+ "x": 1301,
34642
34812
  "y": 1851
34643
34813
  },
34644
34814
  "weixin_store": {
34645
- "x": 1251,
34815
+ "x": 1351,
34646
34816
  "y": 1851
34647
34817
  },
34648
34818
  "wecom_mcp": {
34649
- "x": 1101,
34819
+ "x": 1201,
34650
34820
  "y": 1851
34651
34821
  },
34652
34822
  "whatsapp": {
34653
- "x": 1451,
34823
+ "x": 1551,
34654
34824
  "y": 1851
34655
34825
  },
34656
34826
  "whatsable": {
34657
- "x": 1401,
34827
+ "x": 1501,
34658
34828
  "y": 1851
34659
34829
  },
34660
34830
  "whop": {
34661
- "x": 1601,
34831
+ "x": 1701,
34662
34832
  "y": 1851
34663
34833
  },
34664
34834
  "who_gho": {
34665
- "x": 1501,
34835
+ "x": 1601,
34666
34836
  "y": 1851
34667
34837
  },
34668
34838
  "whoisfreaks": {
34669
- "x": 1551,
34839
+ "x": 1651,
34670
34840
  "y": 1851
34671
34841
  },
34672
34842
  "wolfram_alpha_api": {
34673
- "x": 2001,
34674
- "y": 1851
34843
+ "x": 51,
34844
+ "y": 1901
34675
34845
  },
34676
34846
  "world_news_api": {
34677
- "x": 551,
34847
+ "x": 651,
34678
34848
  "y": 1901
34679
34849
  },
34680
34850
  "writer": {
34681
- "x": 751,
34851
+ "x": 851,
34682
34852
  "y": 1901
34683
34853
  },
34684
34854
  "winston_ai": {
34685
- "x": 1701,
34855
+ "x": 1801,
34686
34856
  "y": 1851
34687
34857
  },
34688
34858
  "wire2air": {
34689
- "x": 1751,
34859
+ "x": 1851,
34690
34860
  "y": 1851
34691
34861
  },
34692
34862
  "optimoroute": {
34693
- "x": 901,
34863
+ "x": 951,
34694
34864
  "y": 1201
34695
34865
  },
34696
34866
  "route4me": {
34697
- "x": 601,
34867
+ "x": 651,
34698
34868
  "y": 1451
34699
34869
  },
34700
34870
  "wiza": {
34701
- "x": 1951,
34702
- "y": 1851
34871
+ "x": 1,
34872
+ "y": 1901
34703
34873
  },
34704
34874
  "wit_ai": {
34705
- "x": 1901,
34875
+ "x": 2001,
34706
34876
  "y": 1851
34707
34877
  },
34708
34878
  "zep": {
34709
- "x": 51,
34879
+ "x": 151,
34710
34880
  "y": 1951
34711
34881
  },
34712
34882
  "z_api": {
34713
- "x": 1701,
34883
+ "x": 1801,
34714
34884
  "y": 1901
34715
34885
  },
34716
34886
  "zerobounce": {
34717
- "x": 151,
34887
+ "x": 251,
34718
34888
  "y": 1951
34719
34889
  },
34720
34890
  "yelp": {
34721
- "x": 1251,
34891
+ "x": 1351,
34722
34892
  "y": 1901
34723
34893
  },
34724
34894
  "wind": {
34725
- "x": 1651,
34895
+ "x": 1751,
34726
34896
  "y": 1851
34727
34897
  },
34728
34898
  "investoday_mcp": {
@@ -34730,71 +34900,71 @@ var spriteCatalog = {
34730
34900
  "y": 801
34731
34901
  },
34732
34902
  "yingmi_mcp": {
34733
- "x": 1301,
34903
+ "x": 1401,
34734
34904
  "y": 1901
34735
34905
  },
34736
34906
  "wps_mcp": {
34737
- "x": 651,
34907
+ "x": 751,
34738
34908
  "y": 1901
34739
34909
  },
34740
34910
  "youzan": {
34741
- "x": 1551,
34911
+ "x": 1651,
34742
34912
  "y": 1901
34743
34913
  },
34744
34914
  "zendesk": {
34745
- "x": 1801,
34915
+ "x": 1901,
34746
34916
  "y": 1901
34747
34917
  },
34748
34918
  "zenkit": {
34749
- "x": 1851,
34919
+ "x": 1951,
34750
34920
  "y": 1901
34751
34921
  },
34752
34922
  "zammad": {
34753
- "x": 1751,
34923
+ "x": 1851,
34754
34924
  "y": 1901
34755
34925
  },
34756
34926
  "zenventory": {
34757
- "x": 1,
34927
+ "x": 101,
34758
34928
  "y": 1951
34759
34929
  },
34760
34930
  "zenrows": {
34761
- "x": 1901,
34931
+ "x": 2001,
34762
34932
  "y": 1901
34763
34933
  },
34764
34934
  "zenserp": {
34765
- "x": 2001,
34766
- "y": 1901
34935
+ "x": 51,
34936
+ "y": 1951
34767
34937
  },
34768
34938
  "zeplin": {
34769
- "x": 101,
34939
+ "x": 201,
34770
34940
  "y": 1951
34771
34941
  },
34772
34942
  "zigpoll": {
34773
- "x": 301,
34943
+ "x": 401,
34774
34944
  "y": 1951
34775
34945
  },
34776
34946
  "zip_archive_api": {
34777
- "x": 351,
34947
+ "x": 451,
34778
34948
  "y": 1951
34779
34949
  },
34780
34950
  "zlibrary": {
34781
- "x": 501,
34951
+ "x": 601,
34782
34952
  "y": 1951
34783
34953
  },
34784
34954
  "zylvie": {
34785
- "x": 751,
34955
+ "x": 851,
34786
34956
  "y": 1951
34787
34957
  },
34788
34958
  "zyte_api": {
34789
- "x": 801,
34959
+ "x": 901,
34790
34960
  "y": 1951
34791
34961
  },
34792
34962
  "zorus": {
34793
- "x": 601,
34963
+ "x": 701,
34794
34964
  "y": 1951
34795
34965
  },
34796
34966
  "zixflow": {
34797
- "x": 451,
34967
+ "x": 551,
34798
34968
  "y": 1951
34799
34969
  },
34800
34970
  "evervault": {
@@ -34806,19 +34976,19 @@ var spriteCatalog = {
34806
34976
  "y": 551
34807
34977
  },
34808
34978
  "zoom": {
34809
- "x": 551,
34979
+ "x": 651,
34810
34980
  "y": 1951
34811
34981
  },
34812
34982
  "webex": {
34813
- "x": 701,
34983
+ "x": 801,
34814
34984
  "y": 1851
34815
34985
  },
34816
34986
  "zotero": {
34817
- "x": 651,
34987
+ "x": 751,
34818
34988
  "y": 1951
34819
34989
  },
34820
34990
  "speedtest_tracker": {
34821
- "x": 301,
34991
+ "x": 401,
34822
34992
  "y": 1601
34823
34993
  },
34824
34994
  "bloomerang": {
@@ -34867,6 +35037,7 @@ var _virtual_oomol_provider_icons_default = {
34867
35037
  "active_trail": "https://static.oomol.com/logo/third-party/active_trail.svg",
34868
35038
  "addressfinder": "https://static.oomol.com/logo/third-party/addressfinder.svg",
34869
35039
  "adyen": "https://static.oomol.com/logo/third-party/adyen.svg",
35040
+ "clay": "https://static.oomol.com/logo/third-party/clay.png",
34870
35041
  "adyntel": "https://static.oomol.com/logo/third-party/adyntel.png",
34871
35042
  "adobe_commerce": "https://static.oomol.com/logo/third-party/adobe_commerce.svg",
34872
35043
  "aftership": "https://static.oomol.com/logo/third-party/aftership.svg",