@solvapay/server 1.0.8-preview.8 → 1.0.8-preview.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/edge.d.ts +24 -1
- package/dist/edge.js +72 -0
- package/dist/index.cjs +12 -307
- package/dist/index.d.cts +3 -35
- package/dist/index.d.ts +3 -35
- package/dist/index.js +12 -303
- package/package.json +7 -7
- package/dist/chunk-R5U7XKVJ.js +0 -16
- package/dist/dist-EPVKJAIP.js +0 -94
- package/dist/dist-JBJ4HMP7.js +0 -94
- package/dist/esm-5GYCIXIY.js +0 -3475
- package/dist/esm-UW7WCMEK.js +0 -3475
- package/dist/src/adapters/base.d.ts +0 -57
- package/dist/src/adapters/base.d.ts.map +0 -1
- package/dist/src/adapters/base.js +0 -73
- package/dist/src/adapters/base.js.map +0 -1
- package/dist/src/adapters/http.d.ts +0 -25
- package/dist/src/adapters/http.d.ts.map +0 -1
- package/dist/src/adapters/http.js +0 -99
- package/dist/src/adapters/http.js.map +0 -1
- package/dist/src/adapters/index.d.ts +0 -11
- package/dist/src/adapters/index.d.ts.map +0 -1
- package/dist/src/adapters/index.js +0 -10
- package/dist/src/adapters/index.js.map +0 -1
- package/dist/src/adapters/mcp.d.ts +0 -24
- package/dist/src/adapters/mcp.d.ts.map +0 -1
- package/dist/src/adapters/mcp.js +0 -75
- package/dist/src/adapters/mcp.js.map +0 -1
- package/dist/src/adapters/next.d.ts +0 -24
- package/dist/src/adapters/next.d.ts.map +0 -1
- package/dist/src/adapters/next.js +0 -109
- package/dist/src/adapters/next.js.map +0 -1
- package/dist/src/client.d.ts +0 -58
- package/dist/src/client.d.ts.map +0 -1
- package/dist/src/client.js +0 -495
- package/dist/src/client.js.map +0 -1
- package/dist/src/edge.d.ts +0 -22
- package/dist/src/edge.d.ts.map +0 -1
- package/dist/src/edge.js +0 -91
- package/dist/src/edge.js.map +0 -1
- package/dist/src/factory.d.ts +0 -605
- package/dist/src/factory.d.ts.map +0 -1
- package/dist/src/factory.js +0 -215
- package/dist/src/factory.js.map +0 -1
- package/dist/src/helpers/auth.d.ts +0 -47
- package/dist/src/helpers/auth.d.ts.map +0 -1
- package/dist/src/helpers/auth.js +0 -73
- package/dist/src/helpers/auth.js.map +0 -1
- package/dist/src/helpers/checkout.d.ts +0 -45
- package/dist/src/helpers/checkout.d.ts.map +0 -1
- package/dist/src/helpers/checkout.js +0 -89
- package/dist/src/helpers/checkout.js.map +0 -1
- package/dist/src/helpers/customer.d.ts +0 -51
- package/dist/src/helpers/customer.d.ts.map +0 -1
- package/dist/src/helpers/customer.js +0 -77
- package/dist/src/helpers/customer.js.map +0 -1
- package/dist/src/helpers/error.d.ts +0 -15
- package/dist/src/helpers/error.d.ts.map +0 -1
- package/dist/src/helpers/error.js +0 -35
- package/dist/src/helpers/error.js.map +0 -1
- package/dist/src/helpers/index.d.ts +0 -17
- package/dist/src/helpers/index.d.ts.map +0 -1
- package/dist/src/helpers/index.js +0 -23
- package/dist/src/helpers/index.js.map +0 -1
- package/dist/src/helpers/payment.d.ts +0 -107
- package/dist/src/helpers/payment.d.ts.map +0 -1
- package/dist/src/helpers/payment.js +0 -150
- package/dist/src/helpers/payment.js.map +0 -1
- package/dist/src/helpers/plans.d.ts +0 -19
- package/dist/src/helpers/plans.d.ts.map +0 -1
- package/dist/src/helpers/plans.js +0 -53
- package/dist/src/helpers/plans.js.map +0 -1
- package/dist/src/helpers/renewal.d.ts +0 -23
- package/dist/src/helpers/renewal.d.ts.map +0 -1
- package/dist/src/helpers/renewal.js +0 -90
- package/dist/src/helpers/renewal.js.map +0 -1
- package/dist/src/helpers/subscription.d.ts +0 -23
- package/dist/src/helpers/subscription.d.ts.map +0 -1
- package/dist/src/helpers/subscription.js +0 -101
- package/dist/src/helpers/subscription.js.map +0 -1
- package/dist/src/helpers/types.d.ts +0 -22
- package/dist/src/helpers/types.d.ts.map +0 -1
- package/dist/src/helpers/types.js +0 -7
- package/dist/src/helpers/types.js.map +0 -1
- package/dist/src/index.d.ts +0 -73
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -106
- package/dist/src/index.js.map +0 -1
- package/dist/src/mcp/auth-bridge.d.ts +0 -9
- package/dist/src/mcp/auth-bridge.d.ts.map +0 -1
- package/dist/src/mcp/auth-bridge.js +0 -46
- package/dist/src/mcp/auth-bridge.js.map +0 -1
- package/dist/src/mcp/oauth-bridge.d.ts +0 -48
- package/dist/src/mcp/oauth-bridge.d.ts.map +0 -1
- package/dist/src/mcp/oauth-bridge.js +0 -110
- package/dist/src/mcp/oauth-bridge.js.map +0 -1
- package/dist/src/mcp-auth.d.ts +0 -17
- package/dist/src/mcp-auth.d.ts.map +0 -1
- package/dist/src/mcp-auth.js +0 -57
- package/dist/src/mcp-auth.js.map +0 -1
- package/dist/src/paywall.d.ts +0 -119
- package/dist/src/paywall.d.ts.map +0 -1
- package/dist/src/paywall.js +0 -700
- package/dist/src/paywall.js.map +0 -1
- package/dist/src/register-virtual-tools-mcp.d.ts +0 -23
- package/dist/src/register-virtual-tools-mcp.d.ts.map +0 -1
- package/dist/src/register-virtual-tools-mcp.js +0 -86
- package/dist/src/register-virtual-tools-mcp.js.map +0 -1
- package/dist/src/types/client.d.ts +0 -216
- package/dist/src/types/client.d.ts.map +0 -1
- package/dist/src/types/client.js +0 -7
- package/dist/src/types/client.js.map +0 -1
- package/dist/src/types/generated.d.ts +0 -2834
- package/dist/src/types/generated.d.ts.map +0 -1
- package/dist/src/types/generated.js +0 -6
- package/dist/src/types/generated.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -13
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -8
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/options.d.ts +0 -126
- package/dist/src/types/options.d.ts.map +0 -1
- package/dist/src/types/options.js +0 -8
- package/dist/src/types/options.js.map +0 -1
- package/dist/src/types/paywall.d.ts +0 -64
- package/dist/src/types/paywall.d.ts.map +0 -1
- package/dist/src/types/paywall.js +0 -7
- package/dist/src/types/paywall.js.map +0 -1
- package/dist/src/types/webhook.d.ts +0 -50
- package/dist/src/types/webhook.d.ts.map +0 -1
- package/dist/src/types/webhook.js +0 -2
- package/dist/src/types/webhook.js.map +0 -1
- package/dist/src/utils.d.ts +0 -110
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -217
- package/dist/src/utils.js.map +0 -1
- package/dist/src/virtual-tools.d.ts +0 -44
- package/dist/src/virtual-tools.d.ts.map +0 -1
- package/dist/src/virtual-tools.js +0 -140
- package/dist/src/virtual-tools.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/src/mcp-auth.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP OAuth helper utilities.
|
|
3
|
-
*
|
|
4
|
-
* These helpers are intentionally lightweight and do not verify JWT signatures.
|
|
5
|
-
* Use them after token validation (for example via /v1/customer/auth/userinfo).
|
|
6
|
-
*/
|
|
7
|
-
export class McpBearerAuthError extends Error {
|
|
8
|
-
constructor(message) {
|
|
9
|
-
super(message);
|
|
10
|
-
this.name = 'McpBearerAuthError';
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
function base64UrlDecode(input) {
|
|
14
|
-
const normalized = input.replace(/-/g, '+').replace(/_/g, '/');
|
|
15
|
-
const padded = normalized.padEnd(normalized.length + ((4 - (normalized.length % 4)) % 4), '=');
|
|
16
|
-
return Buffer.from(padded, 'base64').toString('utf8');
|
|
17
|
-
}
|
|
18
|
-
export function extractBearerToken(authorization) {
|
|
19
|
-
if (!authorization)
|
|
20
|
-
return null;
|
|
21
|
-
if (!authorization.startsWith('Bearer '))
|
|
22
|
-
return null;
|
|
23
|
-
return authorization.slice(7).trim() || null;
|
|
24
|
-
}
|
|
25
|
-
export function decodeJwtPayload(token) {
|
|
26
|
-
const parts = token.split('.');
|
|
27
|
-
if (parts.length < 2) {
|
|
28
|
-
throw new McpBearerAuthError('Invalid JWT format');
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
const payloadText = base64UrlDecode(parts[1]);
|
|
32
|
-
const payload = JSON.parse(payloadText);
|
|
33
|
-
return payload;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
throw new McpBearerAuthError('Invalid JWT payload');
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export function getCustomerRefFromJwtPayload(payload, options = {}) {
|
|
40
|
-
const claimPriority = options.claimPriority || ['customerRef', 'customer_ref', 'sub'];
|
|
41
|
-
for (const claim of claimPriority) {
|
|
42
|
-
const value = payload[claim];
|
|
43
|
-
if (typeof value === 'string' && value.trim()) {
|
|
44
|
-
return value.trim();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
throw new McpBearerAuthError(`No customer reference claim found (checked: ${claimPriority.join(', ')})`);
|
|
48
|
-
}
|
|
49
|
-
export function getCustomerRefFromBearerAuthHeader(authorization, options = {}) {
|
|
50
|
-
const token = extractBearerToken(authorization);
|
|
51
|
-
if (!token) {
|
|
52
|
-
throw new McpBearerAuthError('Missing bearer token');
|
|
53
|
-
}
|
|
54
|
-
const payload = decodeJwtPayload(token);
|
|
55
|
-
return getCustomerRefFromJwtPayload(payload, options);
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=mcp-auth.js.map
|
package/dist/src/mcp-auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-auth.js","sourceRoot":"","sources":["../../src/mcp-auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAMD,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC9F,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,aAA6B;IAC9D,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IACrD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAA4B,CAAA;QAClE,OAAO,OAAO,CAAA;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAgC,EAChC,UAAuC,EAAE;IAEzC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;IAErF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,kBAAkB,CAC1B,+CAA+C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,aAA6B,EAC7B,UAAuC,EAAE;IAEzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAA;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;IACtD,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACvC,OAAO,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC"}
|
package/dist/src/paywall.d.ts
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SolvaPay SDK - Universal Paywall Protection
|
|
3
|
-
*
|
|
4
|
-
* One API that works everywhere:
|
|
5
|
-
* - HTTP frameworks (Fastify, Express)
|
|
6
|
-
* - MCP servers
|
|
7
|
-
* - Class-based and functional programming
|
|
8
|
-
*/
|
|
9
|
-
import type { PaywallArgs, PaywallMetadata, PaywallStructuredContent, PaywallToolResult, SolvaPayClient } from './types';
|
|
10
|
-
export type { PaywallArgs, PaywallMetadata, PaywallStructuredContent, PaywallToolResult, SolvaPayClient, };
|
|
11
|
-
/**
|
|
12
|
-
* Error thrown when a paywall is triggered (purchase required or usage limit exceeded).
|
|
13
|
-
*
|
|
14
|
-
* This error is automatically thrown by the paywall protection system when:
|
|
15
|
-
* - Customer doesn't have required purchase
|
|
16
|
-
* - Customer has exceeded usage limits
|
|
17
|
-
* - Customer needs to upgrade their plan
|
|
18
|
-
*
|
|
19
|
-
* The error includes structured content with checkout URLs and metadata for
|
|
20
|
-
* building custom paywall UIs.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* import { PaywallError } from '@solvapay/server';
|
|
25
|
-
*
|
|
26
|
-
* try {
|
|
27
|
-
* const result = await payable.http(createTask)(req, res);
|
|
28
|
-
* return result;
|
|
29
|
-
* } catch (error) {
|
|
30
|
-
* if (error instanceof PaywallError) {
|
|
31
|
-
* // Custom paywall handling
|
|
32
|
-
* return res.status(402).json({
|
|
33
|
-
* error: error.message,
|
|
34
|
-
* checkoutUrl: error.structuredContent.checkoutUrl,
|
|
35
|
-
* // Additional metadata available in error.structuredContent
|
|
36
|
-
* });
|
|
37
|
-
* }
|
|
38
|
-
* throw error;
|
|
39
|
-
* }
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* @see {@link PaywallStructuredContent} for the structured content format
|
|
43
|
-
* @since 1.0.0
|
|
44
|
-
*/
|
|
45
|
-
export declare class PaywallError extends Error {
|
|
46
|
-
structuredContent: PaywallStructuredContent;
|
|
47
|
-
/**
|
|
48
|
-
* Creates a new PaywallError instance.
|
|
49
|
-
*
|
|
50
|
-
* @param message - Error message
|
|
51
|
-
* @param structuredContent - Structured content with checkout URLs and metadata
|
|
52
|
-
*/
|
|
53
|
-
constructor(message: string, structuredContent: PaywallStructuredContent);
|
|
54
|
-
}
|
|
55
|
-
/** JSON body shape for HTTP adapters and MCP text content (stable fields for clients). */
|
|
56
|
-
export declare function paywallErrorToClientPayload(error: PaywallError): Record<string, unknown>;
|
|
57
|
-
/**
|
|
58
|
-
* Universal SolvaPay Protection - One API for everything
|
|
59
|
-
*/
|
|
60
|
-
export declare class SolvaPayPaywall {
|
|
61
|
-
private apiClient;
|
|
62
|
-
private customerCreationAttempts;
|
|
63
|
-
private customerRefMapping;
|
|
64
|
-
private debug;
|
|
65
|
-
private limitsCache;
|
|
66
|
-
private limitsCacheTTL;
|
|
67
|
-
constructor(apiClient: SolvaPayClient, options?: {
|
|
68
|
-
debug?: boolean;
|
|
69
|
-
limitsCacheTTL?: number;
|
|
70
|
-
});
|
|
71
|
-
private log;
|
|
72
|
-
private resolveProduct;
|
|
73
|
-
private generateRequestId;
|
|
74
|
-
/**
|
|
75
|
-
* Core protection method - works for both MCP and HTTP
|
|
76
|
-
*/
|
|
77
|
-
protect<TArgs extends PaywallArgs, TResult = any>(handler: (args: TArgs) => Promise<TResult>, metadata?: PaywallMetadata, getCustomerRef?: (args: TArgs) => string): Promise<(args: TArgs) => Promise<TResult>>;
|
|
78
|
-
/**
|
|
79
|
-
* Ensures a customer exists in the backend, creating them if necessary.
|
|
80
|
-
* This is a public helper for testing, pre-creating customers, and internal use.
|
|
81
|
-
* Only attempts creation once per customer (idempotent).
|
|
82
|
-
* Returns the backend customer reference to use in API calls.
|
|
83
|
-
*
|
|
84
|
-
* @param customerRef - The customer reference used as a cache key (e.g., Supabase user ID)
|
|
85
|
-
* @param externalRef - Optional external reference for backend lookup (e.g., Supabase user ID)
|
|
86
|
-
* If provided, will lookup existing customer by externalRef before creating new one.
|
|
87
|
-
* The externalRef is stored on the SolvaPay backend for customer lookup.
|
|
88
|
-
* @param options - Optional customer details (email, name) for customer creation
|
|
89
|
-
*/
|
|
90
|
-
ensureCustomer(customerRef: string, externalRef?: string, options?: {
|
|
91
|
-
email?: string;
|
|
92
|
-
name?: string;
|
|
93
|
-
}): Promise<string>;
|
|
94
|
-
trackUsage(customerRef: string, _productRef: string, _planRef: string, action: string, outcome: 'success' | 'paywall' | 'fail', requestId: string, actionDuration: number): Promise<void>;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Universal SolvaPay factory - One API for MCP and HTTP
|
|
98
|
-
*/
|
|
99
|
-
export declare function createPaywall(config: {
|
|
100
|
-
apiClient: SolvaPayClient;
|
|
101
|
-
}): {
|
|
102
|
-
protect: <TArgs extends PaywallArgs, TResult = any>(metadata?: PaywallMetadata) => (handler: (args: TArgs) => Promise<TResult>) => Promise<(args: TArgs) => Promise<TResult>>;
|
|
103
|
-
Paywall: (metadata?: PaywallMetadata) => (target: Record<string, unknown>, propertyKey: string, descriptor?: PropertyDescriptor) => Record<string, unknown> | PropertyDescriptor;
|
|
104
|
-
createHttpHandler: (methodOrMetadata: ((...args: unknown[]) => unknown) | PaywallMetadata, handlerOrOptions?: ((args: PaywallArgs) => Promise<unknown>) | {
|
|
105
|
-
extractArgs?: (req: any) => Record<string, unknown>;
|
|
106
|
-
transformResponse?: (result: unknown, reply: any) => unknown;
|
|
107
|
-
getCustomerRef?: (req: any) => string;
|
|
108
|
-
}) => (req: any, reply: any) => Promise<unknown>;
|
|
109
|
-
createMCPHandler: (methodOrMetadata: ((...args: unknown[]) => unknown) | PaywallMetadata, handler?: (args: PaywallArgs) => Promise<unknown>) => Promise<(args: PaywallArgs) => Promise<unknown>>;
|
|
110
|
-
createNextHandler: (metadata: PaywallMetadata, handler: (args: PaywallArgs) => Promise<unknown>, options?: {
|
|
111
|
-
extractArgs?: (request: Request, context?: any) => Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
112
|
-
getCustomerRef?: (request: Request) => Promise<string> | string;
|
|
113
|
-
transformResponse?: (result: unknown) => unknown;
|
|
114
|
-
}) => (request: Request, context?: any) => Promise<Response>;
|
|
115
|
-
ensureCustomer: (customerRef: string) => Promise<string>;
|
|
116
|
-
paywall: SolvaPayPaywall;
|
|
117
|
-
};
|
|
118
|
-
export declare function ensureCustomerRef(customerRef: string): string;
|
|
119
|
-
//# sourceMappingURL=paywall.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paywall.d.ts","sourceRoot":"","sources":["../../src/paywall.ts"],"names":[],"mappings":"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"}
|