@silkweave/auth 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +16 -17
- package/.turbo/turbo-check.log +12 -13
- package/.turbo/turbo-prepack.log +7 -7
- package/build/index.mjs +2 -2
- package/build/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/validate.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[34mℹ[39m
|
|
7
|
-
[34mℹ[39m
|
|
8
|
-
[34mℹ[39m
|
|
9
|
-
[34mℹ[39m
|
|
10
|
-
[34mℹ[39m
|
|
11
|
-
[34mℹ[39m
|
|
12
|
-
[34mℹ[39m [2mbuild/[
|
|
13
|
-
[34mℹ[39m [2mbuild/[22mindex.
|
|
14
|
-
[34mℹ[39m [2mbuild/[
|
|
15
|
-
[34mℹ[39m
|
|
16
|
-
[
|
|
17
|
-
[32m✔[39m Build complete in [32m613ms[39m
|
|
1
|
+
|
|
2
|
+
> @silkweave/auth@1.6.0 build /Users/atomic/projects/ai/silkweave/packages/auth
|
|
3
|
+
> tsdown
|
|
4
|
+
|
|
5
|
+
[34mℹ[39m [34mtsdown v0.21.8[39m powered by [38;2;255;126;23mrolldown v1.0.0-rc.15[39m
|
|
6
|
+
[34mℹ[39m config file: [4m/Users/atomic/projects/ai/silkweave/packages/auth/tsdown.config.ts[24m
|
|
7
|
+
[34mℹ[39m entry: [34m./src/index.ts[39m
|
|
8
|
+
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
9
|
+
[34mℹ[39m Build start
|
|
10
|
+
[34mℹ[39m Cleaning 4 files
|
|
11
|
+
[34mℹ[39m [2mbuild/[22m[1mindex.mjs[22m [2m24.50 kB[22m [2m│ gzip: 5.84 kB[22m
|
|
12
|
+
[34mℹ[39m [2mbuild/[22mindex.mjs.map [2m46.63 kB[22m [2m│ gzip: 11.32 kB[22m
|
|
13
|
+
[34mℹ[39m [2mbuild/[22mindex.d.mts.map [2m 3.35 kB[22m [2m│ gzip: 0.96 kB[22m
|
|
14
|
+
[34mℹ[39m [2mbuild/[22m[32m[1mindex.d.mts[22m[39m [2m 6.26 kB[22m [2m│ gzip: 1.51 kB[22m
|
|
15
|
+
[34mℹ[39m 4 files, total: 80.74 kB
|
|
16
|
+
[32m✔[39m Build complete in [32m664ms[39m
|
package/.turbo/turbo-check.log
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
>
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
|
|
2
|
+
> @silkweave/auth@1.6.0 check /Users/atomic/projects/ai/silkweave/packages/auth
|
|
3
|
+
> pnpm lint && pnpm typecheck
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
> @silkweave/auth@1.6.0 lint /Users/atomic/projects/ai/silkweave/packages/auth
|
|
7
|
+
> eslint
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
> @silkweave/auth@1.6.0 typecheck /Users/atomic/projects/ai/silkweave/packages/auth
|
|
11
|
+
> tsc --noEmit
|
|
12
|
+
|
package/.turbo/turbo-prepack.log
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @silkweave/auth@1.
|
|
3
|
+
> @silkweave/auth@1.6.0 prepack /Users/atomic/projects/ai/silkweave/packages/auth
|
|
4
4
|
> pnpm clean && pnpm build
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
> @silkweave/auth@1.
|
|
7
|
+
> @silkweave/auth@1.6.0 clean /Users/atomic/projects/ai/silkweave/packages/auth
|
|
8
8
|
> rimraf build
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
> @silkweave/auth@1.
|
|
11
|
+
> @silkweave/auth@1.6.0 build /Users/atomic/projects/ai/silkweave/packages/auth
|
|
12
12
|
> tsdown
|
|
13
13
|
|
|
14
14
|
[34mℹ[39m [34mtsdown v0.21.8[39m powered by [38;2;255;126;23mrolldown v1.0.0-rc.15[39m
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
[34mℹ[39m entry: [34m./src/index.ts[39m
|
|
17
17
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
18
18
|
[34mℹ[39m Build start
|
|
19
|
-
[34mℹ[39m [2mbuild/[22m[1mindex.mjs[22m [2m24.
|
|
20
|
-
[34mℹ[39m [2mbuild/[22mindex.mjs.map [2m46.
|
|
19
|
+
[34mℹ[39m [2mbuild/[22m[1mindex.mjs[22m [2m24.50 kB[22m [2m│ gzip: 5.84 kB[22m
|
|
20
|
+
[34mℹ[39m [2mbuild/[22mindex.mjs.map [2m46.63 kB[22m [2m│ gzip: 11.32 kB[22m
|
|
21
21
|
[34mℹ[39m [2mbuild/[22mindex.d.mts.map [2m 3.35 kB[22m [2m│ gzip: 0.96 kB[22m
|
|
22
22
|
[34mℹ[39m [2mbuild/[22m[32m[1mindex.d.mts[22m[39m [2m 6.26 kB[22m [2m│ gzip: 1.51 kB[22m
|
|
23
|
-
[34mℹ[39m 4 files, total: 80.
|
|
24
|
-
[32m✔[39m Build complete in [
|
|
23
|
+
[34mℹ[39m 4 files, total: 80.74 kB
|
|
24
|
+
[32m✔[39m Build complete in [32m554ms[39m
|
package/build/index.mjs
CHANGED
|
@@ -666,8 +666,8 @@ async function validateToken(authorizationHeader, config, context) {
|
|
|
666
666
|
let authInfo;
|
|
667
667
|
try {
|
|
668
668
|
authInfo = await config.verifyToken(token, context);
|
|
669
|
-
} catch (
|
|
670
|
-
return buildErrorResult(invalidToken(), resourceMetadataUrl);
|
|
669
|
+
} catch (error) {
|
|
670
|
+
return buildErrorResult(invalidToken(error instanceof Error ? error.message : "Invalid token"), resourceMetadataUrl);
|
|
671
671
|
}
|
|
672
672
|
if (!authInfo) return buildErrorResult(invalidToken(), resourceMetadataUrl);
|
|
673
673
|
if (authInfo.expiresAt && authInfo.expiresAt < Date.now() / 1e3) return buildErrorResult(invalidToken("Token has expired"), resourceMetadataUrl);
|
package/build/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["withTtl"],"sources":["../src/errors.ts","../src/extract.ts","../src/metadata.ts","../src/store/memory-store.ts","../src/provider/uri.ts","../src/provider/proxy.ts","../src/provider/google.ts","../src/store/json-store.ts","../src/store/redis-store.ts","../src/validate.ts"],"sourcesContent":["export class AuthError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly statusCode = 401\n ) {\n super(message)\n this.name = 'AuthError'\n }\n}\n\nexport function invalidToken(message = 'Invalid token') {\n return new AuthError(message, 'invalid_token', 401)\n}\n\nexport function insufficientScope(message = 'Insufficient scope') {\n return new AuthError(message, 'insufficient_scope', 403)\n}\n","export function extractBearerToken(header: string | null | undefined): string | null {\n if (!header) { return null }\n const match = /^Bearer\\s+(.+)$/i.exec(header)\n return match?.[1] ?? null\n}\n\nexport function buildWWWAuthenticate(\n error?: string,\n description?: string,\n resourceMetadataUrl?: string\n): string {\n const parts: string[] = []\n if (error) {\n parts.push(`error=\"${error}\"`)\n }\n if (description) {\n parts.push(`error_description=\"${description}\"`)\n }\n if (resourceMetadataUrl) {\n parts.push(`resource_metadata=\"${resourceMetadataUrl}\"`)\n }\n return parts.length > 0 ? `Bearer ${parts.join(', ')}` : 'Bearer'\n}\n","export interface ProtectedResourceMetadata {\n resource: string\n authorization_servers: string[]\n scopes_supported?: string[]\n bearer_methods_supported?: string[]\n}\n\nexport function generateProtectedResourceMetadata(\n resourceUrl: string,\n authorizationServers: string[]\n): ProtectedResourceMetadata {\n return {\n resource: resourceUrl,\n authorization_servers: authorizationServers,\n bearer_methods_supported: ['header']\n }\n}\n","import { AuthCodeData, ClientRegistration, OAuthStore, PendingAuthData, RefreshTokenData } from '../provider/store.js'\n\nfunction withTtl<T extends { expiresAt: number }>(map: Map<string, T>, key: string): T | undefined {\n const item = map.get(key)\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n map.delete(key)\n return undefined\n }\n return item\n}\n\nexport function createMemoryStore(): OAuthStore {\n const authCodes = new Map<string, AuthCodeData>()\n const pendingAuths = new Map<string, PendingAuthData>()\n const pkceVerifiers = new Map<string, { verifier: string; expiresAt: number }>()\n const clients = new Map<string, ClientRegistration>()\n const refreshTokens = new Map<string, RefreshTokenData>()\n\n return {\n async saveAuthCode(code, data) { authCodes.set(code, data) },\n async getAuthCode(code) { return withTtl(authCodes, code) },\n async deleteAuthCode(code) { authCodes.delete(code) },\n\n async savePendingAuth(state, data) { pendingAuths.set(state, data) },\n async getPendingAuth(state) { return withTtl(pendingAuths, state) },\n async deletePendingAuth(state) { pendingAuths.delete(state) },\n\n async savePkceVerifier(state, verifier) {\n pkceVerifiers.set(state, { verifier, expiresAt: Date.now() / 1000 + 600 })\n },\n async getPkceVerifier(state) {\n const item = pkceVerifiers.get(state)\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n pkceVerifiers.delete(state)\n return undefined\n }\n return item.verifier\n },\n async deletePkceVerifier(state) { pkceVerifiers.delete(state) },\n\n async saveClient(clientId, data) { clients.set(clientId, data) },\n async getClient(clientId) { return clients.get(clientId) },\n\n async saveRefreshToken(token, data) { refreshTokens.set(token, data) },\n async getRefreshToken(token) { return withTtl(refreshTokens, token) },\n async deleteRefreshToken(token) { refreshTokens.delete(token) }\n }\n}\n","export function matchRedirectUri(uri: string, patterns: string[]): boolean {\n return patterns.some((pattern) => {\n const regex = patternToRegex(pattern)\n return regex.test(uri)\n })\n}\n\nfunction patternToRegex(pattern: string): RegExp {\n const escaped = pattern\n .replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n return new RegExp(`^${escaped}$`)\n}\n","import { randomBytes, randomUUID } from 'crypto'\nimport { SignJWT, jwtVerify } from 'jose'\nimport { createMemoryStore } from '../store/memory-store.js'\nimport { OAuthStore } from './store.js'\nimport { AuthInfo, OAuthProvider, OAuthResponse } from './types.js'\nimport { matchRedirectUri } from './uri.js'\n\nexport interface OAuthProxyConfig {\n authorizeUrl: string\n tokenUrl: string\n userinfoUrl?: string\n clientId: string\n clientSecret: string\n resourceUrl: string\n redirectUris: string[]\n requiredScopes?: string[]\n callbackPath?: string\n signingKey?: string\n tokenTtl?: number\n store?: OAuthStore\n}\n\nconst CORS_HEADERS: Record<string, string> = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',\n 'Access-Control-Allow-Headers': '*'\n}\n\nfunction generateCode(): string {\n return randomBytes(32).toString('base64url')\n}\n\nasync function generatePkce(): Promise<{ verifier: string; challenge: string }> {\n const verifier = randomBytes(32).toString('base64url')\n const hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(verifier))\n const challenge = Buffer.from(hash).toString('base64url')\n return { verifier, challenge }\n}\n\nasync function verifyPkce(verifier: string, challenge: string): Promise<boolean> {\n const hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(verifier))\n const computed = Buffer.from(hash).toString('base64url')\n return computed === challenge\n}\n\nfunction jsonResponse(status: number, body: Record<string, unknown>, headers: Record<string, string> = {}): OAuthResponse {\n return {\n status,\n headers: { 'Content-Type': 'application/json', ...CORS_HEADERS, ...headers },\n body\n }\n}\n\nfunction redirectResponse(url: string): OAuthResponse {\n return {\n status: 302,\n headers: { Location: url, ...CORS_HEADERS },\n body: undefined\n }\n}\n\nfunction errorResponse(status: number, error: string, description: string): OAuthResponse {\n return jsonResponse(status, { error, error_description: description })\n}\n\nasync function signAccessToken(\n key: Uint8Array,\n opts: { scopes: string[]; email?: string; sub?: string; clientId: string; issuer: string; ttl: number }\n): Promise<string> {\n const now = Math.floor(Date.now() / 1000)\n return new SignJWT({ scope: opts.scopes.join(' '), email: opts.email })\n .setProtectedHeader({ alg: 'HS256' })\n .setSubject(opts.sub ?? opts.email ?? opts.clientId)\n .setIssuer(opts.issuer)\n .setAudience(opts.issuer)\n .setIssuedAt(now)\n .setExpirationTime(now + opts.ttl)\n .sign(key)\n}\n\nasync function handleRegister(\n req: { body?: Record<string, string> },\n store: OAuthStore,\n allowedRedirectUris: string[]\n): Promise<OAuthResponse> {\n const body = req.body\n if (!body) { return errorResponse(400, 'invalid_request', 'Missing request body') }\n\n const redirectUris = body.redirect_uris\n if (!redirectUris) { return errorResponse(400, 'invalid_request', 'redirect_uris is required') }\n\n let uris: string[]\n try {\n uris = typeof redirectUris === 'string' ? JSON.parse(redirectUris) : redirectUris\n } catch {\n uris = [redirectUris]\n }\n\n if (!Array.isArray(uris) || uris.length === 0) {\n return errorResponse(400, 'invalid_request', 'redirect_uris must be a non-empty array')\n }\n\n for (const uri of uris) {\n if (!matchRedirectUri(uri, allowedRedirectUris)) {\n return errorResponse(400, 'invalid_redirect_uri', `Redirect URI not allowed: ${uri}`)\n }\n }\n\n const clientId = randomUUID()\n const clientSecret = randomBytes(32).toString('base64url')\n const registration = {\n clientId,\n clientSecret,\n redirectUris: uris,\n clientName: body.client_name,\n createdAt: Date.now() / 1000\n }\n\n await store.saveClient(clientId, registration)\n\n return jsonResponse(201, {\n client_id: clientId,\n client_secret: clientSecret,\n redirect_uris: uris,\n client_name: body.client_name,\n token_endpoint_auth_method: 'none'\n })\n}\n\nasync function resolveClient(\n clientId: string,\n store: OAuthStore,\n allowedRedirectUris: string[]\n): Promise<{ clientId: string; clientSecret: string; redirectUris: string[]; clientName?: string; createdAt: number } | OAuthResponse> {\n const existing = await store.getClient(clientId)\n if (existing) { return existing }\n\n if (!clientId.startsWith('https://')) {\n return errorResponse(400, 'invalid_client', 'Unknown client_id')\n }\n\n try {\n const metaRes = await fetch(clientId)\n if (!metaRes.ok) {\n return errorResponse(400, 'invalid_client', 'Failed to fetch client metadata document')\n }\n const meta = await metaRes.json() as Record<string, unknown>\n const metaRedirectUris = meta.redirect_uris as string[] | undefined\n if (!Array.isArray(metaRedirectUris) || metaRedirectUris.length === 0) {\n return errorResponse(400, 'invalid_client', 'Client metadata must include redirect_uris')\n }\n for (const uri of metaRedirectUris) {\n if (!matchRedirectUri(uri, allowedRedirectUris)) {\n return errorResponse(400, 'invalid_redirect_uri', `Redirect URI not allowed: ${uri}`)\n }\n }\n const client = {\n clientId,\n clientSecret: '',\n redirectUris: metaRedirectUris,\n clientName: meta.client_name as string | undefined,\n createdAt: Date.now() / 1000\n }\n await store.saveClient(clientId, client)\n return client\n } catch {\n return errorResponse(400, 'invalid_client', 'Failed to fetch client metadata document')\n }\n}\n\nasync function exchangeUpstreamCode(\n code: string,\n config: OAuthProxyConfig,\n callbackPath: string,\n pkceVerifier: string\n): Promise<{ accessToken: string; idToken?: string } | OAuthResponse> {\n const tokenBody = new URLSearchParams({\n grant_type: 'authorization_code',\n code,\n redirect_uri: `${config.resourceUrl}${callbackPath}`,\n client_id: config.clientId,\n client_secret: config.clientSecret,\n code_verifier: pkceVerifier\n })\n\n const tokenResponse = await fetch(config.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: tokenBody.toString()\n })\n\n if (!tokenResponse.ok) {\n const errorBody = await tokenResponse.text()\n console.error('Upstream token exchange failed:', errorBody)\n return errorResponse(502, 'upstream_error', 'Failed to exchange code with upstream provider')\n }\n\n const tokens = await tokenResponse.json() as Record<string, unknown>\n return {\n accessToken: tokens.access_token as string,\n idToken: tokens.id_token as string | undefined\n }\n}\n\nasync function fetchUserinfo(\n userinfoUrl: string | undefined,\n accessToken: string\n): Promise<{ email?: string; sub?: string }> {\n if (!userinfoUrl || !accessToken) { return {} }\n try {\n const res = await fetch(userinfoUrl, {\n headers: { Authorization: `Bearer ${accessToken}` }\n })\n if (res.ok) {\n const userinfo = await res.json() as Record<string, unknown>\n return { email: userinfo.email as string | undefined, sub: userinfo.sub as string | undefined }\n }\n } catch {\n // Userinfo fetch is best-effort\n }\n return {}\n}\n\nasync function handleRefreshToken(\n body: Record<string, string>,\n store: OAuthStore,\n getSigningKey: () => Promise<Uint8Array>,\n config: { resourceUrl: string; tokenTtl: number }\n): Promise<OAuthResponse> {\n const refreshToken = body.refresh_token\n if (!refreshToken) {\n return errorResponse(400, 'invalid_request', 'Missing refresh_token')\n }\n\n const tokenData = await store.getRefreshToken(refreshToken)\n if (!tokenData) {\n return errorResponse(400, 'invalid_grant', 'Invalid or expired refresh token')\n }\n\n const key = await getSigningKey()\n const accessToken = await signAccessToken(key, {\n scopes: tokenData.scopes,\n email: tokenData.email,\n sub: tokenData.sub,\n clientId: tokenData.clientId,\n issuer: config.resourceUrl,\n ttl: config.tokenTtl\n })\n\n return jsonResponse(200, {\n access_token: accessToken,\n token_type: 'Bearer',\n expires_in: config.tokenTtl,\n scope: tokenData.scopes.join(' '),\n refresh_token: refreshToken\n })\n}\n\nasync function handleAuthorizationCode(\n body: Record<string, string>,\n store: OAuthStore,\n getSigningKey: () => Promise<Uint8Array>,\n config: { resourceUrl: string; tokenTtl: number }\n): Promise<OAuthResponse> {\n const code = body.code\n const redirectUri = body.redirect_uri\n const clientId = body.client_id\n const codeVerifier = body.code_verifier\n\n if (!code || !codeVerifier || !clientId) {\n return errorResponse(400, 'invalid_request', 'Missing required parameters')\n }\n\n const authCode = await store.getAuthCode(code)\n if (!authCode) { return errorResponse(400, 'invalid_grant', 'Invalid or expired authorization code') }\n\n await store.deleteAuthCode(code)\n\n if (authCode.clientId !== clientId) {\n return errorResponse(400, 'invalid_grant', 'client_id mismatch')\n }\n if (redirectUri && authCode.redirectUri !== redirectUri) {\n return errorResponse(400, 'invalid_grant', 'redirect_uri mismatch')\n }\n\n const pkceValid = await verifyPkce(codeVerifier, authCode.codeChallenge)\n if (!pkceValid) {\n return errorResponse(400, 'invalid_grant', 'PKCE verification failed')\n }\n\n const key = await getSigningKey()\n const accessToken = await signAccessToken(key, {\n scopes: authCode.scopes,\n email: authCode.email,\n sub: authCode.sub,\n clientId: authCode.clientId,\n issuer: config.resourceUrl,\n ttl: config.tokenTtl\n })\n\n const refreshToken = randomBytes(32).toString('base64url')\n await store.saveRefreshToken(refreshToken, {\n clientId: authCode.clientId,\n scopes: authCode.scopes,\n email: authCode.email,\n sub: authCode.sub,\n expiresAt: Math.floor(Date.now() / 1000) + 30 * 24 * 3600\n })\n\n return jsonResponse(200, {\n access_token: accessToken,\n token_type: 'Bearer',\n expires_in: config.tokenTtl,\n scope: authCode.scopes.join(' '),\n refresh_token: refreshToken\n })\n}\n\nexport function createOAuthProxy(config: OAuthProxyConfig): OAuthProvider {\n const store = config.store ?? createMemoryStore()\n const callbackPath = config.callbackPath ?? '/auth/callback'\n const tokenTtl = config.tokenTtl ?? 3600\n const scopes = config.requiredScopes ?? []\n\n let signingKey: Uint8Array | null = null\n\n async function getSigningKey(): Promise<Uint8Array> {\n if (signingKey) { return signingKey }\n if (config.signingKey) {\n signingKey = new TextEncoder().encode(config.signingKey)\n } else {\n signingKey = randomBytes(32)\n }\n return signingKey\n }\n\n return {\n metadata(): OAuthResponse {\n return jsonResponse(200, {\n issuer: config.resourceUrl,\n authorization_endpoint: `${config.resourceUrl}/authorize`,\n token_endpoint: `${config.resourceUrl}/token`,\n registration_endpoint: `${config.resourceUrl}/register`,\n response_types_supported: ['code'],\n grant_types_supported: ['authorization_code', 'refresh_token'],\n code_challenge_methods_supported: ['S256'],\n token_endpoint_auth_methods_supported: ['none', 'client_secret_post'],\n scopes_supported: scopes\n }, { 'Cache-Control': 'max-age=3600' })\n },\n\n register(req) {\n return handleRegister(req, store, config.redirectUris)\n },\n\n async authorize(req): Promise<OAuthResponse> {\n const params = req.url.searchParams\n const responseType = params.get('response_type')\n const clientId = params.get('client_id')\n const redirectUri = params.get('redirect_uri')\n const scope = params.get('scope') ?? ''\n const clientState = params.get('state') ?? ''\n const codeChallenge = params.get('code_challenge')\n const codeChallengeMethod = params.get('code_challenge_method')\n const resource = params.get('resource')\n\n if (responseType !== 'code') {\n return errorResponse(400, 'unsupported_response_type', 'Only response_type=code is supported')\n }\n if (!clientId) { return errorResponse(400, 'invalid_request', 'client_id is required') }\n if (!redirectUri) { return errorResponse(400, 'invalid_request', 'redirect_uri is required') }\n if (!codeChallenge || codeChallengeMethod !== 'S256') {\n return errorResponse(400, 'invalid_request', 'PKCE with S256 is required')\n }\n\n const result = await resolveClient(clientId, store, config.redirectUris)\n if ('status' in result) { return result }\n const client = result\n\n if (!client.redirectUris.includes(redirectUri)) {\n return errorResponse(400, 'invalid_redirect_uri', 'redirect_uri does not match registered URIs')\n }\n\n const proxyState = randomUUID()\n const pkce = await generatePkce()\n\n await store.savePendingAuth(proxyState, {\n clientId,\n redirectUri,\n codeChallenge,\n codeChallengeMethod,\n scope,\n clientState,\n resource: resource ?? undefined,\n expiresAt: Date.now() / 1000 + 600\n })\n\n await store.savePkceVerifier(proxyState, pkce.verifier)\n\n const upstreamScopes = scopes.length > 0 ? scopes.join(' ') : scope\n const upstreamUrl = new URL(config.authorizeUrl)\n upstreamUrl.searchParams.set('response_type', 'code')\n upstreamUrl.searchParams.set('client_id', config.clientId)\n upstreamUrl.searchParams.set('redirect_uri', `${config.resourceUrl}${callbackPath}`)\n upstreamUrl.searchParams.set('scope', upstreamScopes)\n upstreamUrl.searchParams.set('state', proxyState)\n upstreamUrl.searchParams.set('code_challenge', pkce.challenge)\n upstreamUrl.searchParams.set('code_challenge_method', 'S256')\n if (params.has('access_type')) {\n upstreamUrl.searchParams.set('access_type', params.get('access_type')!)\n }\n\n return redirectResponse(upstreamUrl.toString())\n },\n\n async callback(req): Promise<OAuthResponse> {\n const params = req.url.searchParams\n const upstreamCode = params.get('code')\n const proxyState = params.get('state')\n const upstreamError = params.get('error')\n\n if (upstreamError) {\n return errorResponse(400, 'upstream_error', params.get('error_description') ?? upstreamError)\n }\n if (!upstreamCode || !proxyState) {\n return errorResponse(400, 'invalid_request', 'Missing code or state')\n }\n\n const pending = await store.getPendingAuth(proxyState)\n if (!pending) { return errorResponse(400, 'invalid_request', 'Unknown or expired state') }\n\n const pkceVerifier = await store.getPkceVerifier(proxyState)\n if (!pkceVerifier) { return errorResponse(400, 'invalid_request', 'Missing PKCE verifier') }\n\n await store.deletePendingAuth(proxyState)\n await store.deletePkceVerifier(proxyState)\n\n const upstream = await exchangeUpstreamCode(upstreamCode, config, callbackPath, pkceVerifier)\n if ('status' in upstream) { return upstream }\n\n const userinfo = await fetchUserinfo(config.userinfoUrl, upstream.accessToken)\n\n const mcpCode = generateCode()\n await store.saveAuthCode(mcpCode, {\n clientId: pending.clientId,\n redirectUri: pending.redirectUri,\n codeChallenge: pending.codeChallenge,\n codeChallengeMethod: pending.codeChallengeMethod,\n scopes: pending.scope.split(' ').filter(Boolean),\n upstreamAccessToken: upstream.accessToken,\n upstreamIdToken: upstream.idToken,\n email: userinfo.email,\n sub: userinfo.sub,\n expiresAt: Date.now() / 1000 + 600\n })\n\n const clientRedirect = new URL(pending.redirectUri)\n clientRedirect.searchParams.set('code', mcpCode)\n if (pending.clientState) {\n clientRedirect.searchParams.set('state', pending.clientState)\n }\n\n return redirectResponse(clientRedirect.toString())\n },\n\n async token(req): Promise<OAuthResponse> {\n const body = req.body\n if (!body) { return errorResponse(400, 'invalid_request', 'Missing request body') }\n\n const tokenConfig = { resourceUrl: config.resourceUrl, tokenTtl }\n\n if (body.grant_type === 'refresh_token') {\n return handleRefreshToken(body, store, getSigningKey, tokenConfig)\n }\n if (body.grant_type !== 'authorization_code') {\n return errorResponse(400, 'unsupported_grant_type', 'Supported grant types: authorization_code, refresh_token')\n }\n return handleAuthorizationCode(body, store, getSigningKey, tokenConfig)\n },\n\n async verifyToken(token): Promise<AuthInfo | undefined> {\n try {\n const key = await getSigningKey()\n const { payload } = await jwtVerify(token, key, {\n issuer: config.resourceUrl,\n audience: config.resourceUrl\n })\n return {\n token,\n clientId: payload.sub ?? undefined,\n scopes: typeof payload.scope === 'string' ? payload.scope.split(' ').filter(Boolean) : [],\n expiresAt: payload.exp,\n email: payload.email as string | undefined\n }\n } catch {\n return undefined\n }\n }\n }\n}\n","import { AuthConfig } from '../types.js'\nimport { createOAuthProxy } from './proxy.js'\nimport { OAuthStore } from './store.js'\n\nexport interface GoogleOAuthOptions {\n clientId: string\n clientSecret: string\n resourceUrl: string\n redirectUris: string[]\n requiredScopes?: string[]\n callbackPath?: string\n signingKey?: string\n tokenTtl?: number\n store?: OAuthStore\n}\n\nexport function google(options: GoogleOAuthOptions): AuthConfig {\n const provider = createOAuthProxy({\n authorizeUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n userinfoUrl: 'https://openidconnect.googleapis.com/v1/userinfo',\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n resourceUrl: options.resourceUrl,\n redirectUris: options.redirectUris,\n requiredScopes: options.requiredScopes ?? ['openid', 'email'],\n callbackPath: options.callbackPath,\n signingKey: options.signingKey,\n tokenTtl: options.tokenTtl,\n store: options.store\n })\n\n return {\n verifyToken: (token) => provider.verifyToken(token),\n required: true,\n resourceUrl: options.resourceUrl,\n authorizationServers: [options.resourceUrl],\n provider,\n callbackPath: options.callbackPath ?? '/auth/callback'\n }\n}\n","import { existsSync, readFileSync, writeFileSync } from 'fs'\nimport { AuthCodeData, ClientRegistration, OAuthStore, PendingAuthData, RefreshTokenData } from '../provider/store.js'\n\nfunction withTtl<T extends { expiresAt: number }>(obj: Record<string, T>, key: string): T | undefined {\n const item = obj[key]\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n delete obj[key]\n return undefined\n }\n return item\n}\n\ninterface JsonStore {\n authCodes: Record<string, AuthCodeData>\n pendingAuths: Record<string, PendingAuthData>\n pkceVerifiers: Record<string, { verifier: string; expiresAt: number }>\n clients: Record<string, ClientRegistration>\n refreshTokens: Record<string, RefreshTokenData>\n}\n\nfunction writeJsonStore(path: string, store: JsonStore) {\n writeFileSync(path, JSON.stringify(store, null, 2), 'utf-8')\n}\n\nfunction readJsonStore(path: string): JsonStore {\n if (!existsSync(path)) {\n return {\n authCodes: {},\n pendingAuths: {},\n pkceVerifiers: {},\n clients: {},\n refreshTokens: {}\n }\n }\n const data = JSON.parse(readFileSync(path, 'utf-8'))\n if (!data.refreshTokens) { data.refreshTokens = {} }\n return data\n}\n\nexport function createJsonStore(path: string): OAuthStore {\n const store: JsonStore = readJsonStore(path)\n\n return {\n async saveAuthCode(code, data) {\n store.authCodes[code] = data\n writeJsonStore(path, store)\n },\n async getAuthCode(code) { return withTtl(store.authCodes, code) },\n async deleteAuthCode(code) {\n delete store.authCodes[code]\n writeJsonStore(path, store)\n },\n async savePendingAuth(state, data) {\n store.pendingAuths[state] = data\n writeJsonStore(path, store)\n },\n async getPendingAuth(state) { return withTtl(store.pendingAuths, state) },\n async deletePendingAuth(state) {\n delete store.pendingAuths[state]\n writeJsonStore(path, store)\n },\n async savePkceVerifier(state, verifier) {\n store.pkceVerifiers[state] = { verifier, expiresAt: Date.now() / 1000 + 600 }\n writeJsonStore(path, store)\n },\n async getPkceVerifier(state) {\n const item = store.pkceVerifiers[state]\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n delete store.pkceVerifiers[state]\n writeJsonStore(path, store)\n return undefined\n }\n return item.verifier\n },\n async deletePkceVerifier(state) {\n delete store.pkceVerifiers[state]\n writeJsonStore(path, store)\n },\n async saveClient(clientId, data) {\n store.clients[clientId] = data\n writeJsonStore(path, store)\n },\n async getClient(clientId) { return store.clients[clientId] },\n\n async saveRefreshToken(token, data) {\n store.refreshTokens[token] = data\n writeJsonStore(path, store)\n },\n async getRefreshToken(token) { return withTtl(store.refreshTokens, token) },\n async deleteRefreshToken(token) {\n delete store.refreshTokens[token]\n writeJsonStore(path, store)\n }\n }\n}\n","import type { OAuthStore } from '../provider/store.js'\n\nexport interface RedisClient {\n get(key: string): Promise<unknown>\n set(key: string, value: string, options?: { ex?: number }): Promise<unknown>\n del(key: string): Promise<unknown>\n}\n\nexport interface RedisStoreOptions {\n client: RedisClient\n prefix?: string\n}\n\nexport function createRedisStore(options: RedisStoreOptions): OAuthStore {\n const { client, prefix = 'silkweave:oauth:' } = options\n\n function key(namespace: string, id: string) {\n return `${prefix}${namespace}:${id}`\n }\n\n function ttlFromExpiry(expiresAt: number): number | undefined {\n const seconds = Math.floor(expiresAt - Date.now() / 1000)\n return seconds > 0 ? seconds : undefined\n }\n\n async function save<T>(namespace: string, id: string, data: T, expiresAt?: number) {\n const opts: { ex?: number } = {}\n const ttl = expiresAt != null ? ttlFromExpiry(expiresAt) : undefined\n if (ttl != null) { opts.ex = ttl }\n await client.set(key(namespace, id), JSON.stringify(data), opts)\n }\n\n async function load<T>(namespace: string, id: string): Promise<T | undefined> {\n const raw = await client.get(key(namespace, id))\n if (raw == null) { return undefined }\n return (typeof raw === 'string' ? JSON.parse(raw) : raw) as T\n }\n\n async function remove(namespace: string, id: string) {\n await client.del(key(namespace, id))\n }\n\n return {\n async saveAuthCode(code, data) { await save('auth-code', code, data, data.expiresAt) },\n async getAuthCode(code) { return load('auth-code', code) },\n async deleteAuthCode(code) { await remove('auth-code', code) },\n\n async savePendingAuth(state, data) { await save('pending-auth', state, data, data.expiresAt) },\n async getPendingAuth(state) { return load('pending-auth', state) },\n async deletePendingAuth(state) { await remove('pending-auth', state) },\n\n async savePkceVerifier(state, verifier) {\n const expiresAt = Date.now() / 1000 + 600\n await save('pkce-verifier', state, { verifier, expiresAt }, expiresAt)\n },\n async getPkceVerifier(state) {\n const item = await load<{ verifier: string; expiresAt: number }>('pkce-verifier', state)\n return item?.verifier\n },\n async deletePkceVerifier(state) { await remove('pkce-verifier', state) },\n\n async saveClient(clientId, data) { await save('client', clientId, data) },\n async getClient(clientId) { return load('client', clientId) },\n\n async saveRefreshToken(token, data) { await save('refresh-token', token, data, data.expiresAt) },\n async getRefreshToken(token) { return load('refresh-token', token) },\n async deleteRefreshToken(token) { await remove('refresh-token', token) }\n }\n}\n","import { SilkweaveContext } from '@silkweave/core'\nimport { AuthError, insufficientScope, invalidToken } from './errors.js'\nimport { buildWWWAuthenticate, extractBearerToken } from './extract.js'\nimport { AuthConfig, AuthInfo } from './types.js'\n\nexport interface ValidateResult {\n auth?: AuthInfo\n error?: {\n statusCode: number\n headers: Record<string, string>\n body: { error: string; error_description: string }\n }\n}\n\nexport async function validateToken(\n authorizationHeader: string | null | undefined,\n config: AuthConfig,\n context: SilkweaveContext\n): Promise<ValidateResult> {\n const required = config.required ?? true\n const resourceMetadataUrl = config.resourceUrl\n ? `${config.resourceUrl}/.well-known/oauth-protected-resource`\n : undefined\n\n const token = extractBearerToken(authorizationHeader)\n\n if (!token) {\n if (!required) { return {} }\n return buildChallengeResult(resourceMetadataUrl)\n }\n\n let authInfo: AuthInfo | undefined\n try {\n authInfo = await config.verifyToken(token, context)\n } catch (_e) {\n const err = invalidToken()\n return buildErrorResult(err, resourceMetadataUrl)\n }\n\n if (!authInfo) {\n const err = invalidToken()\n return buildErrorResult(err, resourceMetadataUrl)\n }\n\n if (authInfo.expiresAt && authInfo.expiresAt < Date.now() / 1000) {\n const err = invalidToken('Token has expired')\n return buildErrorResult(err, resourceMetadataUrl)\n }\n\n if (config.requiredScopes?.length) {\n const scopes = authInfo.scopes ?? []\n const hasAll = config.requiredScopes.every((s) => scopes.includes(s))\n if (!hasAll) {\n const err = insufficientScope()\n return buildErrorResult(err, resourceMetadataUrl)\n }\n }\n\n return { auth: authInfo }\n}\n\nfunction buildChallengeResult(resourceMetadataUrl?: string): ValidateResult {\n return {\n error: {\n statusCode: 401,\n headers: {\n 'WWW-Authenticate': buildWWWAuthenticate(undefined, undefined, resourceMetadataUrl),\n 'Content-Type': 'application/json'\n },\n body: { error: 'missing_token', error_description: 'No authorization provided' }\n }\n }\n}\n\nfunction buildErrorResult(\n err: AuthError,\n resourceMetadataUrl?: string\n): ValidateResult {\n return {\n error: {\n statusCode: err.statusCode,\n headers: {\n 'WWW-Authenticate': buildWWWAuthenticate(err.code, err.message, resourceMetadataUrl),\n 'Content-Type': 'application/json'\n },\n body: { error: err.code, error_description: err.message }\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["withTtl"],"sources":["../src/errors.ts","../src/extract.ts","../src/metadata.ts","../src/store/memory-store.ts","../src/provider/uri.ts","../src/provider/proxy.ts","../src/provider/google.ts","../src/store/json-store.ts","../src/store/redis-store.ts","../src/validate.ts"],"sourcesContent":["export class AuthError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly statusCode = 401\n ) {\n super(message)\n this.name = 'AuthError'\n }\n}\n\nexport function invalidToken(message = 'Invalid token') {\n return new AuthError(message, 'invalid_token', 401)\n}\n\nexport function insufficientScope(message = 'Insufficient scope') {\n return new AuthError(message, 'insufficient_scope', 403)\n}\n","export function extractBearerToken(header: string | null | undefined): string | null {\n if (!header) { return null }\n const match = /^Bearer\\s+(.+)$/i.exec(header)\n return match?.[1] ?? null\n}\n\nexport function buildWWWAuthenticate(\n error?: string,\n description?: string,\n resourceMetadataUrl?: string\n): string {\n const parts: string[] = []\n if (error) {\n parts.push(`error=\"${error}\"`)\n }\n if (description) {\n parts.push(`error_description=\"${description}\"`)\n }\n if (resourceMetadataUrl) {\n parts.push(`resource_metadata=\"${resourceMetadataUrl}\"`)\n }\n return parts.length > 0 ? `Bearer ${parts.join(', ')}` : 'Bearer'\n}\n","export interface ProtectedResourceMetadata {\n resource: string\n authorization_servers: string[]\n scopes_supported?: string[]\n bearer_methods_supported?: string[]\n}\n\nexport function generateProtectedResourceMetadata(\n resourceUrl: string,\n authorizationServers: string[]\n): ProtectedResourceMetadata {\n return {\n resource: resourceUrl,\n authorization_servers: authorizationServers,\n bearer_methods_supported: ['header']\n }\n}\n","import { AuthCodeData, ClientRegistration, OAuthStore, PendingAuthData, RefreshTokenData } from '../provider/store.js'\n\nfunction withTtl<T extends { expiresAt: number }>(map: Map<string, T>, key: string): T | undefined {\n const item = map.get(key)\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n map.delete(key)\n return undefined\n }\n return item\n}\n\nexport function createMemoryStore(): OAuthStore {\n const authCodes = new Map<string, AuthCodeData>()\n const pendingAuths = new Map<string, PendingAuthData>()\n const pkceVerifiers = new Map<string, { verifier: string; expiresAt: number }>()\n const clients = new Map<string, ClientRegistration>()\n const refreshTokens = new Map<string, RefreshTokenData>()\n\n return {\n async saveAuthCode(code, data) { authCodes.set(code, data) },\n async getAuthCode(code) { return withTtl(authCodes, code) },\n async deleteAuthCode(code) { authCodes.delete(code) },\n\n async savePendingAuth(state, data) { pendingAuths.set(state, data) },\n async getPendingAuth(state) { return withTtl(pendingAuths, state) },\n async deletePendingAuth(state) { pendingAuths.delete(state) },\n\n async savePkceVerifier(state, verifier) {\n pkceVerifiers.set(state, { verifier, expiresAt: Date.now() / 1000 + 600 })\n },\n async getPkceVerifier(state) {\n const item = pkceVerifiers.get(state)\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n pkceVerifiers.delete(state)\n return undefined\n }\n return item.verifier\n },\n async deletePkceVerifier(state) { pkceVerifiers.delete(state) },\n\n async saveClient(clientId, data) { clients.set(clientId, data) },\n async getClient(clientId) { return clients.get(clientId) },\n\n async saveRefreshToken(token, data) { refreshTokens.set(token, data) },\n async getRefreshToken(token) { return withTtl(refreshTokens, token) },\n async deleteRefreshToken(token) { refreshTokens.delete(token) }\n }\n}\n","export function matchRedirectUri(uri: string, patterns: string[]): boolean {\n return patterns.some((pattern) => {\n const regex = patternToRegex(pattern)\n return regex.test(uri)\n })\n}\n\nfunction patternToRegex(pattern: string): RegExp {\n const escaped = pattern\n .replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n return new RegExp(`^${escaped}$`)\n}\n","import { randomBytes, randomUUID } from 'crypto'\nimport { SignJWT, jwtVerify } from 'jose'\nimport { createMemoryStore } from '../store/memory-store.js'\nimport { OAuthStore } from './store.js'\nimport { AuthInfo, OAuthProvider, OAuthResponse } from './types.js'\nimport { matchRedirectUri } from './uri.js'\n\nexport interface OAuthProxyConfig {\n authorizeUrl: string\n tokenUrl: string\n userinfoUrl?: string\n clientId: string\n clientSecret: string\n resourceUrl: string\n redirectUris: string[]\n requiredScopes?: string[]\n callbackPath?: string\n signingKey?: string\n tokenTtl?: number\n store?: OAuthStore\n}\n\nconst CORS_HEADERS: Record<string, string> = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',\n 'Access-Control-Allow-Headers': '*'\n}\n\nfunction generateCode(): string {\n return randomBytes(32).toString('base64url')\n}\n\nasync function generatePkce(): Promise<{ verifier: string; challenge: string }> {\n const verifier = randomBytes(32).toString('base64url')\n const hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(verifier))\n const challenge = Buffer.from(hash).toString('base64url')\n return { verifier, challenge }\n}\n\nasync function verifyPkce(verifier: string, challenge: string): Promise<boolean> {\n const hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(verifier))\n const computed = Buffer.from(hash).toString('base64url')\n return computed === challenge\n}\n\nfunction jsonResponse(status: number, body: Record<string, unknown>, headers: Record<string, string> = {}): OAuthResponse {\n return {\n status,\n headers: { 'Content-Type': 'application/json', ...CORS_HEADERS, ...headers },\n body\n }\n}\n\nfunction redirectResponse(url: string): OAuthResponse {\n return {\n status: 302,\n headers: { Location: url, ...CORS_HEADERS },\n body: undefined\n }\n}\n\nfunction errorResponse(status: number, error: string, description: string): OAuthResponse {\n return jsonResponse(status, { error, error_description: description })\n}\n\nasync function signAccessToken(\n key: Uint8Array,\n opts: { scopes: string[]; email?: string; sub?: string; clientId: string; issuer: string; ttl: number }\n): Promise<string> {\n const now = Math.floor(Date.now() / 1000)\n return new SignJWT({ scope: opts.scopes.join(' '), email: opts.email })\n .setProtectedHeader({ alg: 'HS256' })\n .setSubject(opts.sub ?? opts.email ?? opts.clientId)\n .setIssuer(opts.issuer)\n .setAudience(opts.issuer)\n .setIssuedAt(now)\n .setExpirationTime(now + opts.ttl)\n .sign(key)\n}\n\nasync function handleRegister(\n req: { body?: Record<string, string> },\n store: OAuthStore,\n allowedRedirectUris: string[]\n): Promise<OAuthResponse> {\n const body = req.body\n if (!body) { return errorResponse(400, 'invalid_request', 'Missing request body') }\n\n const redirectUris = body.redirect_uris\n if (!redirectUris) { return errorResponse(400, 'invalid_request', 'redirect_uris is required') }\n\n let uris: string[]\n try {\n uris = typeof redirectUris === 'string' ? JSON.parse(redirectUris) : redirectUris\n } catch {\n uris = [redirectUris]\n }\n\n if (!Array.isArray(uris) || uris.length === 0) {\n return errorResponse(400, 'invalid_request', 'redirect_uris must be a non-empty array')\n }\n\n for (const uri of uris) {\n if (!matchRedirectUri(uri, allowedRedirectUris)) {\n return errorResponse(400, 'invalid_redirect_uri', `Redirect URI not allowed: ${uri}`)\n }\n }\n\n const clientId = randomUUID()\n const clientSecret = randomBytes(32).toString('base64url')\n const registration = {\n clientId,\n clientSecret,\n redirectUris: uris,\n clientName: body.client_name,\n createdAt: Date.now() / 1000\n }\n\n await store.saveClient(clientId, registration)\n\n return jsonResponse(201, {\n client_id: clientId,\n client_secret: clientSecret,\n redirect_uris: uris,\n client_name: body.client_name,\n token_endpoint_auth_method: 'none'\n })\n}\n\nasync function resolveClient(\n clientId: string,\n store: OAuthStore,\n allowedRedirectUris: string[]\n): Promise<{ clientId: string; clientSecret: string; redirectUris: string[]; clientName?: string; createdAt: number } | OAuthResponse> {\n const existing = await store.getClient(clientId)\n if (existing) { return existing }\n\n if (!clientId.startsWith('https://')) {\n return errorResponse(400, 'invalid_client', 'Unknown client_id')\n }\n\n try {\n const metaRes = await fetch(clientId)\n if (!metaRes.ok) {\n return errorResponse(400, 'invalid_client', 'Failed to fetch client metadata document')\n }\n const meta = await metaRes.json() as Record<string, unknown>\n const metaRedirectUris = meta.redirect_uris as string[] | undefined\n if (!Array.isArray(metaRedirectUris) || metaRedirectUris.length === 0) {\n return errorResponse(400, 'invalid_client', 'Client metadata must include redirect_uris')\n }\n for (const uri of metaRedirectUris) {\n if (!matchRedirectUri(uri, allowedRedirectUris)) {\n return errorResponse(400, 'invalid_redirect_uri', `Redirect URI not allowed: ${uri}`)\n }\n }\n const client = {\n clientId,\n clientSecret: '',\n redirectUris: metaRedirectUris,\n clientName: meta.client_name as string | undefined,\n createdAt: Date.now() / 1000\n }\n await store.saveClient(clientId, client)\n return client\n } catch {\n return errorResponse(400, 'invalid_client', 'Failed to fetch client metadata document')\n }\n}\n\nasync function exchangeUpstreamCode(\n code: string,\n config: OAuthProxyConfig,\n callbackPath: string,\n pkceVerifier: string\n): Promise<{ accessToken: string; idToken?: string } | OAuthResponse> {\n const tokenBody = new URLSearchParams({\n grant_type: 'authorization_code',\n code,\n redirect_uri: `${config.resourceUrl}${callbackPath}`,\n client_id: config.clientId,\n client_secret: config.clientSecret,\n code_verifier: pkceVerifier\n })\n\n const tokenResponse = await fetch(config.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: tokenBody.toString()\n })\n\n if (!tokenResponse.ok) {\n const errorBody = await tokenResponse.text()\n console.error('Upstream token exchange failed:', errorBody)\n return errorResponse(502, 'upstream_error', 'Failed to exchange code with upstream provider')\n }\n\n const tokens = await tokenResponse.json() as Record<string, unknown>\n return {\n accessToken: tokens.access_token as string,\n idToken: tokens.id_token as string | undefined\n }\n}\n\nasync function fetchUserinfo(\n userinfoUrl: string | undefined,\n accessToken: string\n): Promise<{ email?: string; sub?: string }> {\n if (!userinfoUrl || !accessToken) { return {} }\n try {\n const res = await fetch(userinfoUrl, {\n headers: { Authorization: `Bearer ${accessToken}` }\n })\n if (res.ok) {\n const userinfo = await res.json() as Record<string, unknown>\n return { email: userinfo.email as string | undefined, sub: userinfo.sub as string | undefined }\n }\n } catch {\n // Userinfo fetch is best-effort\n }\n return {}\n}\n\nasync function handleRefreshToken(\n body: Record<string, string>,\n store: OAuthStore,\n getSigningKey: () => Promise<Uint8Array>,\n config: { resourceUrl: string; tokenTtl: number }\n): Promise<OAuthResponse> {\n const refreshToken = body.refresh_token\n if (!refreshToken) {\n return errorResponse(400, 'invalid_request', 'Missing refresh_token')\n }\n\n const tokenData = await store.getRefreshToken(refreshToken)\n if (!tokenData) {\n return errorResponse(400, 'invalid_grant', 'Invalid or expired refresh token')\n }\n\n const key = await getSigningKey()\n const accessToken = await signAccessToken(key, {\n scopes: tokenData.scopes,\n email: tokenData.email,\n sub: tokenData.sub,\n clientId: tokenData.clientId,\n issuer: config.resourceUrl,\n ttl: config.tokenTtl\n })\n\n return jsonResponse(200, {\n access_token: accessToken,\n token_type: 'Bearer',\n expires_in: config.tokenTtl,\n scope: tokenData.scopes.join(' '),\n refresh_token: refreshToken\n })\n}\n\nasync function handleAuthorizationCode(\n body: Record<string, string>,\n store: OAuthStore,\n getSigningKey: () => Promise<Uint8Array>,\n config: { resourceUrl: string; tokenTtl: number }\n): Promise<OAuthResponse> {\n const code = body.code\n const redirectUri = body.redirect_uri\n const clientId = body.client_id\n const codeVerifier = body.code_verifier\n\n if (!code || !codeVerifier || !clientId) {\n return errorResponse(400, 'invalid_request', 'Missing required parameters')\n }\n\n const authCode = await store.getAuthCode(code)\n if (!authCode) { return errorResponse(400, 'invalid_grant', 'Invalid or expired authorization code') }\n\n await store.deleteAuthCode(code)\n\n if (authCode.clientId !== clientId) {\n return errorResponse(400, 'invalid_grant', 'client_id mismatch')\n }\n if (redirectUri && authCode.redirectUri !== redirectUri) {\n return errorResponse(400, 'invalid_grant', 'redirect_uri mismatch')\n }\n\n const pkceValid = await verifyPkce(codeVerifier, authCode.codeChallenge)\n if (!pkceValid) {\n return errorResponse(400, 'invalid_grant', 'PKCE verification failed')\n }\n\n const key = await getSigningKey()\n const accessToken = await signAccessToken(key, {\n scopes: authCode.scopes,\n email: authCode.email,\n sub: authCode.sub,\n clientId: authCode.clientId,\n issuer: config.resourceUrl,\n ttl: config.tokenTtl\n })\n\n const refreshToken = randomBytes(32).toString('base64url')\n await store.saveRefreshToken(refreshToken, {\n clientId: authCode.clientId,\n scopes: authCode.scopes,\n email: authCode.email,\n sub: authCode.sub,\n expiresAt: Math.floor(Date.now() / 1000) + 30 * 24 * 3600\n })\n\n return jsonResponse(200, {\n access_token: accessToken,\n token_type: 'Bearer',\n expires_in: config.tokenTtl,\n scope: authCode.scopes.join(' '),\n refresh_token: refreshToken\n })\n}\n\nexport function createOAuthProxy(config: OAuthProxyConfig): OAuthProvider {\n const store = config.store ?? createMemoryStore()\n const callbackPath = config.callbackPath ?? '/auth/callback'\n const tokenTtl = config.tokenTtl ?? 3600\n const scopes = config.requiredScopes ?? []\n\n let signingKey: Uint8Array | null = null\n\n async function getSigningKey(): Promise<Uint8Array> {\n if (signingKey) { return signingKey }\n if (config.signingKey) {\n signingKey = new TextEncoder().encode(config.signingKey)\n } else {\n signingKey = randomBytes(32)\n }\n return signingKey\n }\n\n return {\n metadata(): OAuthResponse {\n return jsonResponse(200, {\n issuer: config.resourceUrl,\n authorization_endpoint: `${config.resourceUrl}/authorize`,\n token_endpoint: `${config.resourceUrl}/token`,\n registration_endpoint: `${config.resourceUrl}/register`,\n response_types_supported: ['code'],\n grant_types_supported: ['authorization_code', 'refresh_token'],\n code_challenge_methods_supported: ['S256'],\n token_endpoint_auth_methods_supported: ['none', 'client_secret_post'],\n scopes_supported: scopes\n }, { 'Cache-Control': 'max-age=3600' })\n },\n\n register(req) {\n return handleRegister(req, store, config.redirectUris)\n },\n\n async authorize(req): Promise<OAuthResponse> {\n const params = req.url.searchParams\n const responseType = params.get('response_type')\n const clientId = params.get('client_id')\n const redirectUri = params.get('redirect_uri')\n const scope = params.get('scope') ?? ''\n const clientState = params.get('state') ?? ''\n const codeChallenge = params.get('code_challenge')\n const codeChallengeMethod = params.get('code_challenge_method')\n const resource = params.get('resource')\n\n if (responseType !== 'code') {\n return errorResponse(400, 'unsupported_response_type', 'Only response_type=code is supported')\n }\n if (!clientId) { return errorResponse(400, 'invalid_request', 'client_id is required') }\n if (!redirectUri) { return errorResponse(400, 'invalid_request', 'redirect_uri is required') }\n if (!codeChallenge || codeChallengeMethod !== 'S256') {\n return errorResponse(400, 'invalid_request', 'PKCE with S256 is required')\n }\n\n const result = await resolveClient(clientId, store, config.redirectUris)\n if ('status' in result) { return result }\n const client = result\n\n if (!client.redirectUris.includes(redirectUri)) {\n return errorResponse(400, 'invalid_redirect_uri', 'redirect_uri does not match registered URIs')\n }\n\n const proxyState = randomUUID()\n const pkce = await generatePkce()\n\n await store.savePendingAuth(proxyState, {\n clientId,\n redirectUri,\n codeChallenge,\n codeChallengeMethod,\n scope,\n clientState,\n resource: resource ?? undefined,\n expiresAt: Date.now() / 1000 + 600\n })\n\n await store.savePkceVerifier(proxyState, pkce.verifier)\n\n const upstreamScopes = scopes.length > 0 ? scopes.join(' ') : scope\n const upstreamUrl = new URL(config.authorizeUrl)\n upstreamUrl.searchParams.set('response_type', 'code')\n upstreamUrl.searchParams.set('client_id', config.clientId)\n upstreamUrl.searchParams.set('redirect_uri', `${config.resourceUrl}${callbackPath}`)\n upstreamUrl.searchParams.set('scope', upstreamScopes)\n upstreamUrl.searchParams.set('state', proxyState)\n upstreamUrl.searchParams.set('code_challenge', pkce.challenge)\n upstreamUrl.searchParams.set('code_challenge_method', 'S256')\n if (params.has('access_type')) {\n upstreamUrl.searchParams.set('access_type', params.get('access_type')!)\n }\n\n return redirectResponse(upstreamUrl.toString())\n },\n\n async callback(req): Promise<OAuthResponse> {\n const params = req.url.searchParams\n const upstreamCode = params.get('code')\n const proxyState = params.get('state')\n const upstreamError = params.get('error')\n\n if (upstreamError) {\n return errorResponse(400, 'upstream_error', params.get('error_description') ?? upstreamError)\n }\n if (!upstreamCode || !proxyState) {\n return errorResponse(400, 'invalid_request', 'Missing code or state')\n }\n\n const pending = await store.getPendingAuth(proxyState)\n if (!pending) { return errorResponse(400, 'invalid_request', 'Unknown or expired state') }\n\n const pkceVerifier = await store.getPkceVerifier(proxyState)\n if (!pkceVerifier) { return errorResponse(400, 'invalid_request', 'Missing PKCE verifier') }\n\n await store.deletePendingAuth(proxyState)\n await store.deletePkceVerifier(proxyState)\n\n const upstream = await exchangeUpstreamCode(upstreamCode, config, callbackPath, pkceVerifier)\n if ('status' in upstream) { return upstream }\n\n const userinfo = await fetchUserinfo(config.userinfoUrl, upstream.accessToken)\n\n const mcpCode = generateCode()\n await store.saveAuthCode(mcpCode, {\n clientId: pending.clientId,\n redirectUri: pending.redirectUri,\n codeChallenge: pending.codeChallenge,\n codeChallengeMethod: pending.codeChallengeMethod,\n scopes: pending.scope.split(' ').filter(Boolean),\n upstreamAccessToken: upstream.accessToken,\n upstreamIdToken: upstream.idToken,\n email: userinfo.email,\n sub: userinfo.sub,\n expiresAt: Date.now() / 1000 + 600\n })\n\n const clientRedirect = new URL(pending.redirectUri)\n clientRedirect.searchParams.set('code', mcpCode)\n if (pending.clientState) {\n clientRedirect.searchParams.set('state', pending.clientState)\n }\n\n return redirectResponse(clientRedirect.toString())\n },\n\n async token(req): Promise<OAuthResponse> {\n const body = req.body\n if (!body) { return errorResponse(400, 'invalid_request', 'Missing request body') }\n\n const tokenConfig = { resourceUrl: config.resourceUrl, tokenTtl }\n\n if (body.grant_type === 'refresh_token') {\n return handleRefreshToken(body, store, getSigningKey, tokenConfig)\n }\n if (body.grant_type !== 'authorization_code') {\n return errorResponse(400, 'unsupported_grant_type', 'Supported grant types: authorization_code, refresh_token')\n }\n return handleAuthorizationCode(body, store, getSigningKey, tokenConfig)\n },\n\n async verifyToken(token): Promise<AuthInfo | undefined> {\n try {\n const key = await getSigningKey()\n const { payload } = await jwtVerify(token, key, {\n issuer: config.resourceUrl,\n audience: config.resourceUrl\n })\n return {\n token,\n clientId: payload.sub ?? undefined,\n scopes: typeof payload.scope === 'string' ? payload.scope.split(' ').filter(Boolean) : [],\n expiresAt: payload.exp,\n email: payload.email as string | undefined\n }\n } catch {\n return undefined\n }\n }\n }\n}\n","import { AuthConfig } from '../types.js'\nimport { createOAuthProxy } from './proxy.js'\nimport { OAuthStore } from './store.js'\n\nexport interface GoogleOAuthOptions {\n clientId: string\n clientSecret: string\n resourceUrl: string\n redirectUris: string[]\n requiredScopes?: string[]\n callbackPath?: string\n signingKey?: string\n tokenTtl?: number\n store?: OAuthStore\n}\n\nexport function google(options: GoogleOAuthOptions): AuthConfig {\n const provider = createOAuthProxy({\n authorizeUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n userinfoUrl: 'https://openidconnect.googleapis.com/v1/userinfo',\n clientId: options.clientId,\n clientSecret: options.clientSecret,\n resourceUrl: options.resourceUrl,\n redirectUris: options.redirectUris,\n requiredScopes: options.requiredScopes ?? ['openid', 'email'],\n callbackPath: options.callbackPath,\n signingKey: options.signingKey,\n tokenTtl: options.tokenTtl,\n store: options.store\n })\n\n return {\n verifyToken: (token) => provider.verifyToken(token),\n required: true,\n resourceUrl: options.resourceUrl,\n authorizationServers: [options.resourceUrl],\n provider,\n callbackPath: options.callbackPath ?? '/auth/callback'\n }\n}\n","import { existsSync, readFileSync, writeFileSync } from 'fs'\nimport { AuthCodeData, ClientRegistration, OAuthStore, PendingAuthData, RefreshTokenData } from '../provider/store.js'\n\nfunction withTtl<T extends { expiresAt: number }>(obj: Record<string, T>, key: string): T | undefined {\n const item = obj[key]\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n delete obj[key]\n return undefined\n }\n return item\n}\n\ninterface JsonStore {\n authCodes: Record<string, AuthCodeData>\n pendingAuths: Record<string, PendingAuthData>\n pkceVerifiers: Record<string, { verifier: string; expiresAt: number }>\n clients: Record<string, ClientRegistration>\n refreshTokens: Record<string, RefreshTokenData>\n}\n\nfunction writeJsonStore(path: string, store: JsonStore) {\n writeFileSync(path, JSON.stringify(store, null, 2), 'utf-8')\n}\n\nfunction readJsonStore(path: string): JsonStore {\n if (!existsSync(path)) {\n return {\n authCodes: {},\n pendingAuths: {},\n pkceVerifiers: {},\n clients: {},\n refreshTokens: {}\n }\n }\n const data = JSON.parse(readFileSync(path, 'utf-8'))\n if (!data.refreshTokens) { data.refreshTokens = {} }\n return data\n}\n\nexport function createJsonStore(path: string): OAuthStore {\n const store: JsonStore = readJsonStore(path)\n\n return {\n async saveAuthCode(code, data) {\n store.authCodes[code] = data\n writeJsonStore(path, store)\n },\n async getAuthCode(code) { return withTtl(store.authCodes, code) },\n async deleteAuthCode(code) {\n delete store.authCodes[code]\n writeJsonStore(path, store)\n },\n async savePendingAuth(state, data) {\n store.pendingAuths[state] = data\n writeJsonStore(path, store)\n },\n async getPendingAuth(state) { return withTtl(store.pendingAuths, state) },\n async deletePendingAuth(state) {\n delete store.pendingAuths[state]\n writeJsonStore(path, store)\n },\n async savePkceVerifier(state, verifier) {\n store.pkceVerifiers[state] = { verifier, expiresAt: Date.now() / 1000 + 600 }\n writeJsonStore(path, store)\n },\n async getPkceVerifier(state) {\n const item = store.pkceVerifiers[state]\n if (!item) { return undefined }\n if (item.expiresAt < Date.now() / 1000) {\n delete store.pkceVerifiers[state]\n writeJsonStore(path, store)\n return undefined\n }\n return item.verifier\n },\n async deletePkceVerifier(state) {\n delete store.pkceVerifiers[state]\n writeJsonStore(path, store)\n },\n async saveClient(clientId, data) {\n store.clients[clientId] = data\n writeJsonStore(path, store)\n },\n async getClient(clientId) { return store.clients[clientId] },\n\n async saveRefreshToken(token, data) {\n store.refreshTokens[token] = data\n writeJsonStore(path, store)\n },\n async getRefreshToken(token) { return withTtl(store.refreshTokens, token) },\n async deleteRefreshToken(token) {\n delete store.refreshTokens[token]\n writeJsonStore(path, store)\n }\n }\n}\n","import type { OAuthStore } from '../provider/store.js'\n\nexport interface RedisClient {\n get(key: string): Promise<unknown>\n set(key: string, value: string, options?: { ex?: number }): Promise<unknown>\n del(key: string): Promise<unknown>\n}\n\nexport interface RedisStoreOptions {\n client: RedisClient\n prefix?: string\n}\n\nexport function createRedisStore(options: RedisStoreOptions): OAuthStore {\n const { client, prefix = 'silkweave:oauth:' } = options\n\n function key(namespace: string, id: string) {\n return `${prefix}${namespace}:${id}`\n }\n\n function ttlFromExpiry(expiresAt: number): number | undefined {\n const seconds = Math.floor(expiresAt - Date.now() / 1000)\n return seconds > 0 ? seconds : undefined\n }\n\n async function save<T>(namespace: string, id: string, data: T, expiresAt?: number) {\n const opts: { ex?: number } = {}\n const ttl = expiresAt != null ? ttlFromExpiry(expiresAt) : undefined\n if (ttl != null) { opts.ex = ttl }\n await client.set(key(namespace, id), JSON.stringify(data), opts)\n }\n\n async function load<T>(namespace: string, id: string): Promise<T | undefined> {\n const raw = await client.get(key(namespace, id))\n if (raw == null) { return undefined }\n return (typeof raw === 'string' ? JSON.parse(raw) : raw) as T\n }\n\n async function remove(namespace: string, id: string) {\n await client.del(key(namespace, id))\n }\n\n return {\n async saveAuthCode(code, data) { await save('auth-code', code, data, data.expiresAt) },\n async getAuthCode(code) { return load('auth-code', code) },\n async deleteAuthCode(code) { await remove('auth-code', code) },\n\n async savePendingAuth(state, data) { await save('pending-auth', state, data, data.expiresAt) },\n async getPendingAuth(state) { return load('pending-auth', state) },\n async deletePendingAuth(state) { await remove('pending-auth', state) },\n\n async savePkceVerifier(state, verifier) {\n const expiresAt = Date.now() / 1000 + 600\n await save('pkce-verifier', state, { verifier, expiresAt }, expiresAt)\n },\n async getPkceVerifier(state) {\n const item = await load<{ verifier: string; expiresAt: number }>('pkce-verifier', state)\n return item?.verifier\n },\n async deletePkceVerifier(state) { await remove('pkce-verifier', state) },\n\n async saveClient(clientId, data) { await save('client', clientId, data) },\n async getClient(clientId) { return load('client', clientId) },\n\n async saveRefreshToken(token, data) { await save('refresh-token', token, data, data.expiresAt) },\n async getRefreshToken(token) { return load('refresh-token', token) },\n async deleteRefreshToken(token) { await remove('refresh-token', token) }\n }\n}\n","import { SilkweaveContext } from '@silkweave/core'\nimport { AuthError, insufficientScope, invalidToken } from './errors.js'\nimport { buildWWWAuthenticate, extractBearerToken } from './extract.js'\nimport { AuthConfig, AuthInfo } from './types.js'\n\nexport interface ValidateResult {\n auth?: AuthInfo\n error?: {\n statusCode: number\n headers: Record<string, string>\n body: { error: string; error_description: string }\n }\n}\n\nexport async function validateToken(\n authorizationHeader: string | null | undefined,\n config: AuthConfig,\n context: SilkweaveContext\n): Promise<ValidateResult> {\n const required = config.required ?? true\n const resourceMetadataUrl = config.resourceUrl\n ? `${config.resourceUrl}/.well-known/oauth-protected-resource`\n : undefined\n\n const token = extractBearerToken(authorizationHeader)\n\n if (!token) {\n if (!required) { return {} }\n return buildChallengeResult(resourceMetadataUrl)\n }\n\n let authInfo: AuthInfo | undefined\n try {\n authInfo = await config.verifyToken(token, context)\n } catch (error) {\n const err = invalidToken(error instanceof Error ? error.message : 'Invalid token')\n return buildErrorResult(err, resourceMetadataUrl)\n }\n\n if (!authInfo) {\n const err = invalidToken()\n return buildErrorResult(err, resourceMetadataUrl)\n }\n\n if (authInfo.expiresAt && authInfo.expiresAt < Date.now() / 1000) {\n const err = invalidToken('Token has expired')\n return buildErrorResult(err, resourceMetadataUrl)\n }\n\n if (config.requiredScopes?.length) {\n const scopes = authInfo.scopes ?? []\n const hasAll = config.requiredScopes.every((s) => scopes.includes(s))\n if (!hasAll) {\n const err = insufficientScope()\n return buildErrorResult(err, resourceMetadataUrl)\n }\n }\n\n return { auth: authInfo }\n}\n\nfunction buildChallengeResult(resourceMetadataUrl?: string): ValidateResult {\n return {\n error: {\n statusCode: 401,\n headers: {\n 'WWW-Authenticate': buildWWWAuthenticate(undefined, undefined, resourceMetadataUrl),\n 'Content-Type': 'application/json'\n },\n body: { error: 'missing_token', error_description: 'No authorization provided' }\n }\n }\n}\n\nfunction buildErrorResult(\n err: AuthError,\n resourceMetadataUrl?: string\n): ValidateResult {\n return {\n error: {\n statusCode: err.statusCode,\n headers: {\n 'WWW-Authenticate': buildWWWAuthenticate(err.code, err.message, resourceMetadataUrl),\n 'Content-Type': 'application/json'\n },\n body: { error: err.code, error_description: err.message }\n }\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silkweave/auth",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Silkweave Auth - Bearer token and OAuth 2.1 support for MCP servers",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"main": "build/index.mjs",
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"jose": "^6.0.0",
|
|
14
|
-
"@silkweave/core": "1.
|
|
14
|
+
"@silkweave/core": "1.7.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@eslint/js": "^10.0.1",
|
package/src/validate.ts
CHANGED
|
@@ -32,8 +32,8 @@ export async function validateToken(
|
|
|
32
32
|
let authInfo: AuthInfo | undefined
|
|
33
33
|
try {
|
|
34
34
|
authInfo = await config.verifyToken(token, context)
|
|
35
|
-
} catch (
|
|
36
|
-
const err = invalidToken()
|
|
35
|
+
} catch (error) {
|
|
36
|
+
const err = invalidToken(error instanceof Error ? error.message : 'Invalid token')
|
|
37
37
|
return buildErrorResult(err, resourceMetadataUrl)
|
|
38
38
|
}
|
|
39
39
|
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/errors.ts","./src/extract.ts","./src/metadata.ts","../../node_modules/zod/v4/core/json-schema.d.cts","../../node_modules/zod/v4/core/standard-schema.d.cts","../../node_modules/zod/v4/core/registries.d.cts","../../node_modules/zod/v4/core/to-json-schema.d.cts","../../node_modules/zod/v4/core/util.d.cts","../../node_modules/zod/v4/core/versions.d.cts","../../node_modules/zod/v4/core/schemas.d.cts","../../node_modules/zod/v4/core/checks.d.cts","../../node_modules/zod/v4/core/errors.d.cts","../../node_modules/zod/v4/core/core.d.cts","../../node_modules/zod/v4/core/parse.d.cts","../../node_modules/zod/v4/core/regexes.d.cts","../../node_modules/zod/v4/locales/ar.d.cts","../../node_modules/zod/v4/locales/az.d.cts","../../node_modules/zod/v4/locales/be.d.cts","../../node_modules/zod/v4/locales/bg.d.cts","../../node_modules/zod/v4/locales/ca.d.cts","../../node_modules/zod/v4/locales/cs.d.cts","../../node_modules/zod/v4/locales/da.d.cts","../../node_modules/zod/v4/locales/de.d.cts","../../node_modules/zod/v4/locales/en.d.cts","../../node_modules/zod/v4/locales/eo.d.cts","../../node_modules/zod/v4/locales/es.d.cts","../../node_modules/zod/v4/locales/fa.d.cts","../../node_modules/zod/v4/locales/fi.d.cts","../../node_modules/zod/v4/locales/fr.d.cts","../../node_modules/zod/v4/locales/fr-ca.d.cts","../../node_modules/zod/v4/locales/he.d.cts","../../node_modules/zod/v4/locales/hu.d.cts","../../node_modules/zod/v4/locales/hy.d.cts","../../node_modules/zod/v4/locales/id.d.cts","../../node_modules/zod/v4/locales/is.d.cts","../../node_modules/zod/v4/locales/it.d.cts","../../node_modules/zod/v4/locales/ja.d.cts","../../node_modules/zod/v4/locales/ka.d.cts","../../node_modules/zod/v4/locales/kh.d.cts","../../node_modules/zod/v4/locales/km.d.cts","../../node_modules/zod/v4/locales/ko.d.cts","../../node_modules/zod/v4/locales/lt.d.cts","../../node_modules/zod/v4/locales/mk.d.cts","../../node_modules/zod/v4/locales/ms.d.cts","../../node_modules/zod/v4/locales/nl.d.cts","../../node_modules/zod/v4/locales/no.d.cts","../../node_modules/zod/v4/locales/ota.d.cts","../../node_modules/zod/v4/locales/ps.d.cts","../../node_modules/zod/v4/locales/pl.d.cts","../../node_modules/zod/v4/locales/pt.d.cts","../../node_modules/zod/v4/locales/ru.d.cts","../../node_modules/zod/v4/locales/sl.d.cts","../../node_modules/zod/v4/locales/sv.d.cts","../../node_modules/zod/v4/locales/ta.d.cts","../../node_modules/zod/v4/locales/th.d.cts","../../node_modules/zod/v4/locales/tr.d.cts","../../node_modules/zod/v4/locales/ua.d.cts","../../node_modules/zod/v4/locales/uk.d.cts","../../node_modules/zod/v4/locales/ur.d.cts","../../node_modules/zod/v4/locales/uz.d.cts","../../node_modules/zod/v4/locales/vi.d.cts","../../node_modules/zod/v4/locales/zh-cn.d.cts","../../node_modules/zod/v4/locales/zh-tw.d.cts","../../node_modules/zod/v4/locales/yo.d.cts","../../node_modules/zod/v4/locales/index.d.cts","../../node_modules/zod/v4/core/doc.d.cts","../../node_modules/zod/v4/core/api.d.cts","../../node_modules/zod/v4/core/json-schema-processors.d.cts","../../node_modules/zod/v4/core/json-schema-generator.d.cts","../../node_modules/zod/v4/core/index.d.cts","../../node_modules/zod/v4/classic/errors.d.cts","../../node_modules/zod/v4/classic/parse.d.cts","../../node_modules/zod/v4/classic/schemas.d.cts","../../node_modules/zod/v4/classic/checks.d.cts","../../node_modules/zod/v4/classic/compat.d.cts","../../node_modules/zod/v4/classic/from-json-schema.d.cts","../../node_modules/zod/v4/classic/iso.d.cts","../../node_modules/zod/v4/classic/coerce.d.cts","../../node_modules/zod/v4/classic/external.d.cts","../../node_modules/zod/v4/classic/index.d.cts","../../node_modules/zod/v4/index.d.cts","../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../node_modules/zod/index.d.cts","../core/src/util/context.ts","../core/src/util/action.ts","../core/src/util/adapter.ts","../core/src/lib/silkweave.ts","../core/src/util/error.ts","../core/src/util/zod.ts","../core/src/index.ts","./src/provider/types.ts","./src/types.ts","../../node_modules/jose/dist/types/types.d.ts","../../node_modules/jose/dist/types/jwe/compact/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/general/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/general/encrypt.d.ts","../../node_modules/jose/dist/types/jws/compact/verify.d.ts","../../node_modules/jose/dist/types/jws/flattened/verify.d.ts","../../node_modules/jose/dist/types/jws/general/verify.d.ts","../../node_modules/jose/dist/types/jwt/verify.d.ts","../../node_modules/jose/dist/types/jwt/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/compact/encrypt.d.ts","../../node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts","../../node_modules/jose/dist/types/jws/compact/sign.d.ts","../../node_modules/jose/dist/types/jws/flattened/sign.d.ts","../../node_modules/jose/dist/types/jws/general/sign.d.ts","../../node_modules/jose/dist/types/jwt/sign.d.ts","../../node_modules/jose/dist/types/jwt/encrypt.d.ts","../../node_modules/jose/dist/types/jwk/thumbprint.d.ts","../../node_modules/jose/dist/types/jwk/embedded.d.ts","../../node_modules/jose/dist/types/jwks/local.d.ts","../../node_modules/jose/dist/types/jwks/remote.d.ts","../../node_modules/jose/dist/types/jwt/unsecured.d.ts","../../node_modules/jose/dist/types/key/export.d.ts","../../node_modules/jose/dist/types/key/import.d.ts","../../node_modules/jose/dist/types/util/decode_protected_header.d.ts","../../node_modules/jose/dist/types/util/decode_jwt.d.ts","../../node_modules/jose/dist/types/util/errors.d.ts","../../node_modules/jose/dist/types/key/generate_key_pair.d.ts","../../node_modules/jose/dist/types/key/generate_secret.d.ts","../../node_modules/jose/dist/types/util/base64url.d.ts","../../node_modules/jose/dist/types/index.d.ts","./src/provider/store.ts","./src/store/memory-store.ts","./src/provider/uri.ts","./src/provider/proxy.ts","./src/provider/google.ts","./src/provider/index.ts","./src/store/json-store.ts","./src/store/redis-store.ts","./src/validate.ts","./src/index.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","../../node_modules/@types/connect/index.d.ts","../../node_modules/@types/body-parser/index.d.ts","../../node_modules/@types/cors/index.d.ts","../../node_modules/@types/ms/index.d.ts","../../node_modules/@types/debug/index.d.ts","../../node_modules/@types/esrecurse/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/send/index.d.ts","../../node_modules/@types/qs/index.d.ts","../../node_modules/@types/range-parser/index.d.ts","../../node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/http-errors/index.d.ts","../../node_modules/@types/serve-static/index.d.ts","../../node_modules/@types/express/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/hast/index.d.ts","../../node_modules/@types/jsesc/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/mdast/index.d.ts","../../node_modules/@types/nlcst/index.d.ts","../../node_modules/@types/sax/index.d.ts"],"fileIdsList":[[197,245,262,263],[138,139,197,245,262,263],[197,245,259,262,263,295,296],[197,245,259,262,263,295],[197,245,262,263,299],[197,245,256,259,262,263,295,303,304,305],[197,245,262,263,297,306,308],[197,245,262,263,310],[197,245,262,263,277,295],[197,245,257,262,263,277,295],[197,245,259,262,263,295,307],[151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,197,245,262,263],[151,197,245,262,263],[136,197,245,262,263],[127,197,245,262,263],[127,130,197,245,262,263],[122,125,127,128,129,130,131,132,133,134,135,197,245,262,263],[61,63,130,197,245,262,263],[127,128,197,245,262,263],[62,127,129,197,245,262,263],[63,65,67,68,69,70,197,245,262,263],[65,67,69,70,197,245,262,263],[65,67,69,197,245,262,263],[62,65,67,68,70,197,245,262,263],[61,63,64,65,66,67,68,69,70,71,72,122,123,124,125,126,197,245,262,263],[61,63,64,67,197,245,262,263],[63,64,67,197,245,262,263],[67,70,197,245,262,263],[61,62,64,65,66,68,69,70,197,245,262,263],[61,62,63,67,127,197,245,262,263],[67,68,69,70,197,245,262,263],[137,197,245,262,263],[69,197,245,262,263],[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,197,245,262,263],[197,242,243,245,262,263],[197,244,245,262,263],[245,262,263],[197,245,250,262,263,280],[197,245,246,251,256,262,263,265,277,288],[197,245,246,247,256,262,263,265],[192,193,194,197,245,262,263],[197,245,248,262,263,289],[197,245,249,250,257,262,263,266],[197,245,250,262,263,277,285],[197,245,251,253,256,262,263,265],[197,244,245,252,262,263],[197,245,253,254,262,263],[197,245,255,256,262,263],[197,244,245,256,262,263],[197,245,256,257,258,262,263,277,288],[197,245,256,257,258,262,263,272,277,280],[197,238,245,253,256,259,262,263,265,277,288],[197,245,256,257,259,260,262,263,265,277,285,288],[197,245,259,261,262,263,277,285,288],[195,196,197,198,199,200,201,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294],[197,245,256,262,263],[197,245,262,263,264,288],[197,245,253,256,262,263,265,277],[197,245,262,263,266],[197,245,262,263,267],[197,244,245,262,263,268],[197,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294],[197,245,262,263,270],[197,245,262,263,271],[197,245,256,262,263,272,273],[197,245,262,263,272,274,289,291],[197,245,257,262,263],[197,245,256,262,263,277,278,280],[197,245,262,263,279,280],[197,245,262,263,277,278],[197,245,262,263,280],[197,245,262,263,281],[197,242,245,262,263,277,282,288],[197,245,256,262,263,283,284],[197,245,262,263,283,284],[197,245,250,262,263,265,277,285],[197,245,262,263,286],[197,245,262,263,265,287],[197,245,259,262,263,271,288],[197,245,250,262,263,289],[197,245,262,263,277,290],[197,245,262,263,264,291],[197,245,262,263,292],[197,238,245,262,263],[197,238,245,256,258,262,263,268,277,280,288,290,291,293],[197,245,262,263,277,294],[197,210,214,245,262,263,288],[197,210,245,262,263,277,288],[197,205,245,262,263],[197,207,210,245,262,263,285,288],[197,245,262,263,265,285],[197,245,262,263,295],[197,205,245,262,263,295],[197,207,210,245,262,263,265,288],[197,202,203,206,209,245,256,262,263,277,288],[197,210,217,245,262,263],[197,202,208,245,262,263],[197,210,231,232,245,262,263],[197,206,210,245,262,263,280,288,295],[197,231,245,262,263,295],[197,204,205,245,262,263,295],[197,210,245,262,263],[197,204,205,206,207,208,209,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,232,233,234,235,236,237,245,262,263],[197,210,225,245,262,263],[197,210,217,218,245,262,263],[197,208,210,218,219,245,262,263],[197,209,245,262,263],[197,202,205,210,245,262,263],[197,210,214,218,219,245,262,263],[197,214,245,262,263],[197,208,210,213,245,262,263,288],[197,202,207,210,217,245,262,263],[197,245,262,263,277],[197,205,210,231,245,262,263,293,295],[58,59,60,150,183,187,188,189,190,197,245,262,263],[150,182,185,197,245,262,263],[149,182,184,185,186,197,245,262,263],[149,181,182,183,184,197,245,250,262,263],[182,197,245,257,262,263],[182,197,245,262,263],[148,149,197,245,262,263],[58,59,148,150,197,245,262,263],[142,143,144,145,146,147,197,245,262,263],[142,143,144,197,245,262,263],[140,141,142,197,245,262,263],[142,143,197,245,262,263],[141,197,245,262,263]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"c79401e6320526ce7dd110e3dec298fcadd4f8e59a50175ecefdef5dd09ec6d9","impliedFormat":99},{"version":"5c1ee7f3d848d89a7a030250ce2c3bc1b92b346670138f8f558f21fd53941e91","impliedFormat":99},{"version":"80fafcb17daaa68c81a776593c31035dbc3ee64be173e4b0785d2cb9f07414ca","impliedFormat":99},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","impliedFormat":99},{"version":"b1067ccb56b38af060dc3299ea7c4c6362cad4f07d0d454325a74808204fc801","impliedFormat":99},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},{"version":"75366be9054e676c1d876a41e54bde647297f9a1b343c7abb10c036525c19cbf","impliedFormat":99},{"version":"0b132b2cd849f40e06269cc64203adc5560a154306ab0a872ff65f6a49205580","impliedFormat":99},{"version":"b1aca439d6f4bbd2da6f50a0ce887ac4dc3212233228bacb188361549b566e87","impliedFormat":99},{"version":"a01dbafafdc668530873d05616ec4ca42e9f67f4b43899252915c9a895f33406","impliedFormat":99},{"version":"7e44c7a7420c341dd6e730cc3e65806c4f8a7f536c7c8af15add148ce10deaac","impliedFormat":99},{"version":"42dc6c4fa2fb7bc430a9204a7be43a02f74413857924c0bcfd8a4c2a9c7a0d27","impliedFormat":99},{"version":"2b72599bb497e60aaa4cdd14053d2e0f1aea6a7ba6a49648aaffc24151e67172","impliedFormat":99},{"version":"53b1ad5e8d4a6e1b337689aae52aa88e882e920e636701fbded16b36e7011453","impliedFormat":99},{"version":"fafaa3bfa28076c7adc83a9f9cde16232da47620de4ceb0a7317a400b4770f88","impliedFormat":99},{"version":"ef52b983c108a10854a26ee467a86c9b5f87024563d48defe3b0e8f4a1af4a51","impliedFormat":99},{"version":"a380cd0a371b5b344c2f679a932593f02445571f9de0014bdf013dddf2a77376","impliedFormat":99},{"version":"dbbcd13911daafc1554acc17dad18ab92f91b5b8f084c6c4370cb8c60520c3b6","impliedFormat":99},{"version":"9c06dd902f40b340b062fff14d3ef579b67c65007fbaba56497422a21e2e5911","impliedFormat":99},{"version":"b026daf5c00c8f2abdb49008322a7d51fbadcd7b200a99ee7a4452dbd40f0420","impliedFormat":99},{"version":"e130a73d7e1e34953b1964c17c218fd14fccd1df6f15f111352b0d53291311bb","impliedFormat":99},{"version":"4ddecad872558e2b3df434ef0b01114d245e7a18a86afa6e7b5c68e75f9b8f76","impliedFormat":99},{"version":"924e513606180beab310a21ece1fe85dc3f1cc159bd894861b01bbe46764d7ca","impliedFormat":99},{"version":"270ceb915b1304c042b6799de28ff212cfa4baf06900d3a8bc4b79f62f00c8a7","impliedFormat":99},{"version":"1b3174ea6e3b4ae157c88eb28bf8e6d67f044edc9c552daf5488628fd8e5be97","impliedFormat":99},{"version":"6564db88fa4cf3bae5c8e0de01c701c6228eaeef1118b4ad6a49a8aaf8556350","impliedFormat":99},{"version":"9c5a4a21ed5686b2ea080557488b966c3aeea641ef1aa8975a10e5fc59dd569f","impliedFormat":99},{"version":"5585ed538922e2e58655218652dcb262f08afa902f26f490cdec4967887ac31a","impliedFormat":99},{"version":"b46de7238d9d2243b27a21797e4772ba91465caae9c31f21dc43748dc9de9cd0","impliedFormat":99},{"version":"625fdbce788630c62f793cb6c80e0072ce0b8bf1d4d0a9922430671164371e0b","impliedFormat":99},{"version":"b6790300d245377671c085e76e9ef359b3cbba6821b913d6ce6b2739d00b9fb1","impliedFormat":99},{"version":"c92c9dc7415bf7969931ac5339f21c65687909b32d05ac89789b411372e52991","impliedFormat":99},{"version":"a36c717362d06d76e7332d9c1d2744c2c5e4b4a5da6218ef7b4a299a62d23a6d","impliedFormat":99},{"version":"a61f8455fd21cec75a8288cd761f5bcc72441848841eb64aa09569e9d8929ff0","impliedFormat":99},{"version":"b135437aa8444e851e10cb514b4a73141813e0adcfcc06d702df6aa0fd922587","impliedFormat":99},{"version":"cc82fa360f22d73b4cc7f446d08ad52b11f5aba66aa04b1ed8feb11a509e8aff","impliedFormat":99},{"version":"466e7296272b827c55b53a7858502de733733558966e2e3a7cc78274e930210a","impliedFormat":99},{"version":"364a5c527037fdd7d494ab0a97f510d3ceda30b8a4bc598b490c135f959ff3c6","impliedFormat":99},{"version":"f198de1cd91b94acc7f4d72cbccc11abadb1570bedc4ede174810e1f6985e06e","impliedFormat":99},{"version":"83d2dab980f2d1a2fe333f0001de8f42c831a438159d47b77c686ae405891b7f","impliedFormat":99},{"version":"ca369bcbdafc423d1a9dccd69de98044534900ff8236d2dd970b52438afb5355","impliedFormat":99},{"version":"5b90280e84e8eba347caaefc18210de3ce6ac176f5e82705a28e7f497dcc8689","impliedFormat":99},{"version":"34e2f00467aa6f46c1d7955f8d57bffb48ccc6ad2bbc847d0b1ccef1d55a9c3c","impliedFormat":99},{"version":"f09dfae4ff5f84c1341d74208e9b442659c32d039e9d27c09f79a203755e953d","impliedFormat":99},{"version":"e7878d8cd1fd0d0f1c55dcd8f5539f4c22e44993852f588dd194bd666b230727","impliedFormat":99},{"version":"0d22b18cb407b03331edf3413b93e568da71130c906fd69911090df2abf55414","impliedFormat":99},{"version":"a0eb14b4325af3088bd319abe2878328c5c99b54f853ec60ae278b46d38f6ea9","impliedFormat":99},{"version":"645bc70ed141fca71a5851e597c0dd59585e86a1af886733fcabb8f57f17304a","impliedFormat":99},{"version":"38ee95e38802b20473db438de5cfb3933db374abe7736169909f449a8dd9039e","impliedFormat":99},{"version":"0ae60dd4a90e2d4e93526aa76c1958b0d129ed16bbdd9b96fb60fc4c7704d8d7","impliedFormat":99},{"version":"1ceed094cb4d453e04dbff91c66282f74b0af1ee28c44b84a1686941bb2409d3","impliedFormat":99},{"version":"5e884eded8387cf5d68e74e9554c050514bc0475d6e84e8346604e6e01bdcfa6","impliedFormat":99},{"version":"77f86177ee086818fe8170010d05207cd862b4bce57f76243730bdaf6e07c76a","impliedFormat":99},{"version":"f8b23df7313c11a192192f68c1f0b9b25a7027ee7cb73b291f88f8ae857df3ae","impliedFormat":99},{"version":"2ce849c0890543b565818460eaae8d56b5fd1362935c13a1f40b06cf98dea016","impliedFormat":99},{"version":"973bfacc27f889e671e55ec42e424a18af808b58ba4bed64ac7c57c067832ba2","impliedFormat":99},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"25be1eb939c9c63242c7a45446edb20c40541da967f43f1aa6a00ed53c0552db","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"89e326922cadcc2331d7e851011cf9f0456a681aaf3c95b48b81f8d80e8cdfba","impliedFormat":1},{"version":"d5799bcf7fe4e6de3063abf4e321c14b051706f03cf5716d8a19f22fe1f69519","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"84a805c22a49922085dc337ca71ac0b85aad6d4dba6b01cee5bd5776ff54df39","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"20e87d239740059866b5245e6ef6ae92e2d63cd0b63d39af3464b9e260dddce1","impliedFormat":1},{"version":"c73834a2aee5e08dea83bd8d347f131bc52f9ec5b06959165c55ef7a544cae82","impliedFormat":1}],"root":[[58,60],149,150,[182,191]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./build","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[139,1],[140,2],[297,3],[296,4],[298,4],[300,5],[301,1],[302,1],[306,6],[309,7],[311,8],[307,1],[312,1],[313,1],[314,8],[299,1],[315,8],[304,1],[305,1],[316,9],[303,10],[308,11],[310,1],[181,12],[152,13],[161,13],[153,13],[162,13],[154,13],[155,13],[169,13],[168,13],[170,13],[171,13],[163,13],[156,13],[164,13],[157,13],[165,13],[158,13],[160,13],[167,13],[166,13],[172,13],[159,13],[173,13],[178,13],[179,13],[174,13],[151,1],[180,1],[176,13],[175,13],[177,13],[56,1],[57,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[20,1],[21,1],[4,1],[22,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[8,1],[49,1],[46,1],[47,1],[48,1],[50,1],[9,1],[51,1],[52,1],[53,1],[55,1],[54,1],[1,1],[141,14],[131,15],[135,16],[132,16],[128,15],[136,17],[133,18],[137,14],[134,16],[129,19],[130,20],[124,21],[68,22],[70,23],[123,1],[69,24],[127,25],[126,26],[125,27],[61,1],[71,22],[72,1],[63,28],[67,29],[62,1],[64,30],[65,31],[66,1],[138,32],[73,33],[74,33],[75,33],[76,33],[77,33],[78,33],[79,33],[80,33],[81,33],[82,33],[83,33],[84,33],[85,33],[87,33],[86,33],[88,33],[89,33],[90,33],[91,33],[122,34],[92,33],[93,33],[94,33],[95,33],[96,33],[97,33],[98,33],[99,33],[100,33],[101,33],[102,33],[103,33],[104,33],[106,33],[105,33],[107,33],[108,33],[109,33],[110,33],[111,33],[112,33],[113,33],[114,33],[115,33],[116,33],[117,33],[118,33],[121,33],[119,33],[120,33],[242,35],[243,35],[244,36],[197,37],[245,38],[246,39],[247,40],[192,1],[195,41],[193,1],[194,1],[248,42],[249,43],[250,44],[251,45],[252,46],[253,47],[254,47],[255,48],[256,49],[257,50],[258,51],[198,1],[196,1],[259,52],[260,53],[261,54],[295,55],[262,56],[263,1],[264,57],[265,58],[266,59],[267,60],[268,61],[269,62],[270,63],[271,64],[272,65],[273,65],[274,66],[275,1],[276,67],[277,68],[279,69],[278,70],[280,71],[281,72],[282,73],[283,74],[284,75],[285,76],[286,77],[287,78],[288,79],[289,80],[290,81],[291,82],[292,83],[199,1],[200,1],[201,1],[239,84],[240,1],[241,1],[293,85],[294,86],[217,87],[227,88],[216,87],[237,89],[208,90],[207,91],[236,92],[230,93],[235,94],[210,95],[224,96],[209,97],[233,98],[205,99],[204,92],[234,100],[206,101],[211,102],[212,1],[215,102],[202,1],[238,103],[228,104],[219,105],[220,106],[222,107],[218,108],[221,109],[231,92],[213,110],[214,111],[223,112],[203,113],[226,104],[225,102],[229,1],[232,114],[58,1],[59,1],[191,115],[60,1],[186,116],[187,117],[185,118],[182,1],[149,1],[184,1],[188,119],[183,120],[189,120],[150,121],[190,122],[148,123],[145,124],[143,125],[144,126],[142,1],[146,1],[147,127]],"affectedFilesPendingEmit":[[58,51],[59,51],[191,51],[60,51],[186,51],[187,51],[185,51],[182,51],[149,51],[184,51],[188,51],[183,51],[189,51],[150,51],[190,51]],"emitSignatures":[58,59,60,149,150,182,183,184,185,186,187,188,189,190,191],"version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/errors.ts","./src/extract.ts","./src/metadata.ts","../../node_modules/zod/v4/core/json-schema.d.cts","../../node_modules/zod/v4/core/standard-schema.d.cts","../../node_modules/zod/v4/core/registries.d.cts","../../node_modules/zod/v4/core/to-json-schema.d.cts","../../node_modules/zod/v4/core/util.d.cts","../../node_modules/zod/v4/core/versions.d.cts","../../node_modules/zod/v4/core/schemas.d.cts","../../node_modules/zod/v4/core/checks.d.cts","../../node_modules/zod/v4/core/errors.d.cts","../../node_modules/zod/v4/core/core.d.cts","../../node_modules/zod/v4/core/parse.d.cts","../../node_modules/zod/v4/core/regexes.d.cts","../../node_modules/zod/v4/locales/ar.d.cts","../../node_modules/zod/v4/locales/az.d.cts","../../node_modules/zod/v4/locales/be.d.cts","../../node_modules/zod/v4/locales/bg.d.cts","../../node_modules/zod/v4/locales/ca.d.cts","../../node_modules/zod/v4/locales/cs.d.cts","../../node_modules/zod/v4/locales/da.d.cts","../../node_modules/zod/v4/locales/de.d.cts","../../node_modules/zod/v4/locales/en.d.cts","../../node_modules/zod/v4/locales/eo.d.cts","../../node_modules/zod/v4/locales/es.d.cts","../../node_modules/zod/v4/locales/fa.d.cts","../../node_modules/zod/v4/locales/fi.d.cts","../../node_modules/zod/v4/locales/fr.d.cts","../../node_modules/zod/v4/locales/fr-ca.d.cts","../../node_modules/zod/v4/locales/he.d.cts","../../node_modules/zod/v4/locales/hu.d.cts","../../node_modules/zod/v4/locales/hy.d.cts","../../node_modules/zod/v4/locales/id.d.cts","../../node_modules/zod/v4/locales/is.d.cts","../../node_modules/zod/v4/locales/it.d.cts","../../node_modules/zod/v4/locales/ja.d.cts","../../node_modules/zod/v4/locales/ka.d.cts","../../node_modules/zod/v4/locales/kh.d.cts","../../node_modules/zod/v4/locales/km.d.cts","../../node_modules/zod/v4/locales/ko.d.cts","../../node_modules/zod/v4/locales/lt.d.cts","../../node_modules/zod/v4/locales/mk.d.cts","../../node_modules/zod/v4/locales/ms.d.cts","../../node_modules/zod/v4/locales/nl.d.cts","../../node_modules/zod/v4/locales/no.d.cts","../../node_modules/zod/v4/locales/ota.d.cts","../../node_modules/zod/v4/locales/ps.d.cts","../../node_modules/zod/v4/locales/pl.d.cts","../../node_modules/zod/v4/locales/pt.d.cts","../../node_modules/zod/v4/locales/ru.d.cts","../../node_modules/zod/v4/locales/sl.d.cts","../../node_modules/zod/v4/locales/sv.d.cts","../../node_modules/zod/v4/locales/ta.d.cts","../../node_modules/zod/v4/locales/th.d.cts","../../node_modules/zod/v4/locales/tr.d.cts","../../node_modules/zod/v4/locales/ua.d.cts","../../node_modules/zod/v4/locales/uk.d.cts","../../node_modules/zod/v4/locales/ur.d.cts","../../node_modules/zod/v4/locales/uz.d.cts","../../node_modules/zod/v4/locales/vi.d.cts","../../node_modules/zod/v4/locales/zh-cn.d.cts","../../node_modules/zod/v4/locales/zh-tw.d.cts","../../node_modules/zod/v4/locales/yo.d.cts","../../node_modules/zod/v4/locales/index.d.cts","../../node_modules/zod/v4/core/doc.d.cts","../../node_modules/zod/v4/core/api.d.cts","../../node_modules/zod/v4/core/json-schema-processors.d.cts","../../node_modules/zod/v4/core/json-schema-generator.d.cts","../../node_modules/zod/v4/core/index.d.cts","../../node_modules/zod/v4/classic/errors.d.cts","../../node_modules/zod/v4/classic/parse.d.cts","../../node_modules/zod/v4/classic/schemas.d.cts","../../node_modules/zod/v4/classic/checks.d.cts","../../node_modules/zod/v4/classic/compat.d.cts","../../node_modules/zod/v4/classic/from-json-schema.d.cts","../../node_modules/zod/v4/classic/iso.d.cts","../../node_modules/zod/v4/classic/coerce.d.cts","../../node_modules/zod/v4/classic/external.d.cts","../../node_modules/zod/v4/classic/index.d.cts","../../node_modules/zod/v4/index.d.cts","../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../node_modules/zod/index.d.cts","../core/src/util/context.ts","../core/src/util/action.ts","../core/src/util/adapter.ts","../core/src/lib/silkweave.ts","../core/src/util/error.ts","../core/src/util/zod.ts","../core/src/index.ts","./src/provider/types.ts","./src/types.ts","../../node_modules/jose/dist/types/types.d.ts","../../node_modules/jose/dist/types/jwe/compact/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/general/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/general/encrypt.d.ts","../../node_modules/jose/dist/types/jws/compact/verify.d.ts","../../node_modules/jose/dist/types/jws/flattened/verify.d.ts","../../node_modules/jose/dist/types/jws/general/verify.d.ts","../../node_modules/jose/dist/types/jwt/verify.d.ts","../../node_modules/jose/dist/types/jwt/decrypt.d.ts","../../node_modules/jose/dist/types/jwe/compact/encrypt.d.ts","../../node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts","../../node_modules/jose/dist/types/jws/compact/sign.d.ts","../../node_modules/jose/dist/types/jws/flattened/sign.d.ts","../../node_modules/jose/dist/types/jws/general/sign.d.ts","../../node_modules/jose/dist/types/jwt/sign.d.ts","../../node_modules/jose/dist/types/jwt/encrypt.d.ts","../../node_modules/jose/dist/types/jwk/thumbprint.d.ts","../../node_modules/jose/dist/types/jwk/embedded.d.ts","../../node_modules/jose/dist/types/jwks/local.d.ts","../../node_modules/jose/dist/types/jwks/remote.d.ts","../../node_modules/jose/dist/types/jwt/unsecured.d.ts","../../node_modules/jose/dist/types/key/export.d.ts","../../node_modules/jose/dist/types/key/import.d.ts","../../node_modules/jose/dist/types/util/decode_protected_header.d.ts","../../node_modules/jose/dist/types/util/decode_jwt.d.ts","../../node_modules/jose/dist/types/util/errors.d.ts","../../node_modules/jose/dist/types/key/generate_key_pair.d.ts","../../node_modules/jose/dist/types/key/generate_secret.d.ts","../../node_modules/jose/dist/types/util/base64url.d.ts","../../node_modules/jose/dist/types/index.d.ts","./src/provider/store.ts","./src/store/memory-store.ts","./src/provider/uri.ts","./src/provider/proxy.ts","./src/provider/google.ts","./src/provider/index.ts","./src/store/json-store.ts","./src/store/redis-store.ts","./src/validate.ts","./src/index.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/@types/node/web-globals/storage.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","../../node_modules/@types/connect/index.d.ts","../../node_modules/@types/body-parser/index.d.ts","../../node_modules/@types/cors/index.d.ts","../../node_modules/@types/ms/index.d.ts","../../node_modules/@types/debug/index.d.ts","../../node_modules/@types/esrecurse/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/send/index.d.ts","../../node_modules/@types/qs/index.d.ts","../../node_modules/@types/range-parser/index.d.ts","../../node_modules/@types/express-serve-static-core/index.d.ts","../../node_modules/@types/http-errors/index.d.ts","../../node_modules/@types/serve-static/index.d.ts","../../node_modules/@types/express/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/hast/index.d.ts","../../node_modules/@types/jsesc/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/mdast/index.d.ts","../../node_modules/@types/nlcst/index.d.ts","../../node_modules/@types/sax/index.d.ts"],"fileIdsList":[[197,245,262,263],[138,139,197,245,262,263],[197,245,259,262,263,295,296],[197,245,259,262,263,295],[197,245,262,263,299],[197,245,256,259,262,263,295,303,304,305],[197,245,262,263,297,306,308],[197,245,262,263,310],[197,245,262,263,277,295],[197,245,257,262,263,277,295],[197,245,259,262,263,295,307],[151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,197,245,262,263],[151,197,245,262,263],[136,197,245,262,263],[127,197,245,262,263],[127,130,197,245,262,263],[122,125,127,128,129,130,131,132,133,134,135,197,245,262,263],[61,63,130,197,245,262,263],[127,128,197,245,262,263],[62,127,129,197,245,262,263],[63,65,67,68,69,70,197,245,262,263],[65,67,69,70,197,245,262,263],[65,67,69,197,245,262,263],[62,65,67,68,70,197,245,262,263],[61,63,64,65,66,67,68,69,70,71,72,122,123,124,125,126,197,245,262,263],[61,63,64,67,197,245,262,263],[63,64,67,197,245,262,263],[67,70,197,245,262,263],[61,62,64,65,66,68,69,70,197,245,262,263],[61,62,63,67,127,197,245,262,263],[67,68,69,70,197,245,262,263],[137,197,245,262,263],[69,197,245,262,263],[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,197,245,262,263],[197,242,243,245,262,263],[197,244,245,262,263],[245,262,263],[197,245,250,262,263,280],[197,245,246,251,256,262,263,265,277,288],[197,245,246,247,256,262,263,265],[192,193,194,197,245,262,263],[197,245,248,262,263,289],[197,245,249,250,257,262,263,266],[197,245,250,262,263,277,285],[197,245,251,253,256,262,263,265],[197,244,245,252,262,263],[197,245,253,254,262,263],[197,245,255,256,262,263],[197,244,245,256,262,263],[197,245,256,257,258,262,263,277,288],[197,245,256,257,258,262,263,272,277,280],[197,238,245,253,256,259,262,263,265,277,288],[197,245,256,257,259,260,262,263,265,277,285,288],[197,245,259,261,262,263,277,285,288],[195,196,197,198,199,200,201,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294],[197,245,256,262,263],[197,245,262,263,264,288],[197,245,253,256,262,263,265,277],[197,245,262,263,266],[197,245,262,263,267],[197,244,245,262,263,268],[197,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294],[197,245,262,263,270],[197,245,262,263,271],[197,245,256,262,263,272,273],[197,245,262,263,272,274,289,291],[197,245,257,262,263],[197,245,256,262,263,277,278,280],[197,245,262,263,279,280],[197,245,262,263,277,278],[197,245,262,263,280],[197,245,262,263,281],[197,242,245,262,263,277,282,288],[197,245,256,262,263,283,284],[197,245,262,263,283,284],[197,245,250,262,263,265,277,285],[197,245,262,263,286],[197,245,262,263,265,287],[197,245,259,262,263,271,288],[197,245,250,262,263,289],[197,245,262,263,277,290],[197,245,262,263,264,291],[197,245,262,263,292],[197,238,245,262,263],[197,238,245,256,258,262,263,268,277,280,288,290,291,293],[197,245,262,263,277,294],[197,210,214,245,262,263,288],[197,210,245,262,263,277,288],[197,205,245,262,263],[197,207,210,245,262,263,285,288],[197,245,262,263,265,285],[197,245,262,263,295],[197,205,245,262,263,295],[197,207,210,245,262,263,265,288],[197,202,203,206,209,245,256,262,263,277,288],[197,210,217,245,262,263],[197,202,208,245,262,263],[197,210,231,232,245,262,263],[197,206,210,245,262,263,280,288,295],[197,231,245,262,263,295],[197,204,205,245,262,263,295],[197,210,245,262,263],[197,204,205,206,207,208,209,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,232,233,234,235,236,237,245,262,263],[197,210,225,245,262,263],[197,210,217,218,245,262,263],[197,208,210,218,219,245,262,263],[197,209,245,262,263],[197,202,205,210,245,262,263],[197,210,214,218,219,245,262,263],[197,214,245,262,263],[197,208,210,213,245,262,263,288],[197,202,207,210,217,245,262,263],[197,245,262,263,277],[197,205,210,231,245,262,263,293,295],[58,59,60,150,183,187,188,189,190,197,245,262,263],[150,182,185,197,245,262,263],[149,182,184,185,186,197,245,262,263],[149,181,182,183,184,197,245,250,262,263],[182,197,245,257,262,263],[182,197,245,262,263],[148,149,197,245,262,263],[58,59,148,150,197,245,262,263],[142,143,144,145,146,147,197,245,262,263],[142,143,144,197,245,262,263],[140,141,142,197,245,262,263],[142,143,197,245,262,263],[141,197,245,262,263]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"c79401e6320526ce7dd110e3dec298fcadd4f8e59a50175ecefdef5dd09ec6d9","impliedFormat":99},{"version":"5c1ee7f3d848d89a7a030250ce2c3bc1b92b346670138f8f558f21fd53941e91","impliedFormat":99},{"version":"80fafcb17daaa68c81a776593c31035dbc3ee64be173e4b0785d2cb9f07414ca","impliedFormat":99},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","impliedFormat":99},{"version":"b1067ccb56b38af060dc3299ea7c4c6362cad4f07d0d454325a74808204fc801","impliedFormat":99},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},{"version":"75366be9054e676c1d876a41e54bde647297f9a1b343c7abb10c036525c19cbf","impliedFormat":99},{"version":"cd44eee2788f39e7196423f655171f001dafa5cef84374bc29a1145c7b582329","impliedFormat":99},{"version":"b1aca439d6f4bbd2da6f50a0ce887ac4dc3212233228bacb188361549b566e87","impliedFormat":99},{"version":"a9e37fab16bc8743f2a93f9417c7fe31919994e3a490ba3648ddd94328293618","impliedFormat":99},{"version":"7e44c7a7420c341dd6e730cc3e65806c4f8a7f536c7c8af15add148ce10deaac","impliedFormat":99},{"version":"42dc6c4fa2fb7bc430a9204a7be43a02f74413857924c0bcfd8a4c2a9c7a0d27","impliedFormat":99},{"version":"2b72599bb497e60aaa4cdd14053d2e0f1aea6a7ba6a49648aaffc24151e67172","impliedFormat":99},{"version":"53b1ad5e8d4a6e1b337689aae52aa88e882e920e636701fbded16b36e7011453","impliedFormat":99},{"version":"fafaa3bfa28076c7adc83a9f9cde16232da47620de4ceb0a7317a400b4770f88","impliedFormat":99},{"version":"ef52b983c108a10854a26ee467a86c9b5f87024563d48defe3b0e8f4a1af4a51","impliedFormat":99},{"version":"a380cd0a371b5b344c2f679a932593f02445571f9de0014bdf013dddf2a77376","impliedFormat":99},{"version":"dbbcd13911daafc1554acc17dad18ab92f91b5b8f084c6c4370cb8c60520c3b6","impliedFormat":99},{"version":"9c06dd902f40b340b062fff14d3ef579b67c65007fbaba56497422a21e2e5911","impliedFormat":99},{"version":"b026daf5c00c8f2abdb49008322a7d51fbadcd7b200a99ee7a4452dbd40f0420","impliedFormat":99},{"version":"e130a73d7e1e34953b1964c17c218fd14fccd1df6f15f111352b0d53291311bb","impliedFormat":99},{"version":"4ddecad872558e2b3df434ef0b01114d245e7a18a86afa6e7b5c68e75f9b8f76","impliedFormat":99},{"version":"924e513606180beab310a21ece1fe85dc3f1cc159bd894861b01bbe46764d7ca","impliedFormat":99},{"version":"270ceb915b1304c042b6799de28ff212cfa4baf06900d3a8bc4b79f62f00c8a7","impliedFormat":99},{"version":"1b3174ea6e3b4ae157c88eb28bf8e6d67f044edc9c552daf5488628fd8e5be97","impliedFormat":99},{"version":"6564db88fa4cf3bae5c8e0de01c701c6228eaeef1118b4ad6a49a8aaf8556350","impliedFormat":99},{"version":"9c5a4a21ed5686b2ea080557488b966c3aeea641ef1aa8975a10e5fc59dd569f","impliedFormat":99},{"version":"5585ed538922e2e58655218652dcb262f08afa902f26f490cdec4967887ac31a","impliedFormat":99},{"version":"b46de7238d9d2243b27a21797e4772ba91465caae9c31f21dc43748dc9de9cd0","impliedFormat":99},{"version":"625fdbce788630c62f793cb6c80e0072ce0b8bf1d4d0a9922430671164371e0b","impliedFormat":99},{"version":"b6790300d245377671c085e76e9ef359b3cbba6821b913d6ce6b2739d00b9fb1","impliedFormat":99},{"version":"c92c9dc7415bf7969931ac5339f21c65687909b32d05ac89789b411372e52991","impliedFormat":99},{"version":"a36c717362d06d76e7332d9c1d2744c2c5e4b4a5da6218ef7b4a299a62d23a6d","impliedFormat":99},{"version":"a61f8455fd21cec75a8288cd761f5bcc72441848841eb64aa09569e9d8929ff0","impliedFormat":99},{"version":"b135437aa8444e851e10cb514b4a73141813e0adcfcc06d702df6aa0fd922587","impliedFormat":99},{"version":"cc82fa360f22d73b4cc7f446d08ad52b11f5aba66aa04b1ed8feb11a509e8aff","impliedFormat":99},{"version":"466e7296272b827c55b53a7858502de733733558966e2e3a7cc78274e930210a","impliedFormat":99},{"version":"364a5c527037fdd7d494ab0a97f510d3ceda30b8a4bc598b490c135f959ff3c6","impliedFormat":99},{"version":"f198de1cd91b94acc7f4d72cbccc11abadb1570bedc4ede174810e1f6985e06e","impliedFormat":99},{"version":"83d2dab980f2d1a2fe333f0001de8f42c831a438159d47b77c686ae405891b7f","impliedFormat":99},{"version":"ca369bcbdafc423d1a9dccd69de98044534900ff8236d2dd970b52438afb5355","impliedFormat":99},{"version":"5b90280e84e8eba347caaefc18210de3ce6ac176f5e82705a28e7f497dcc8689","impliedFormat":99},{"version":"34e2f00467aa6f46c1d7955f8d57bffb48ccc6ad2bbc847d0b1ccef1d55a9c3c","impliedFormat":99},{"version":"f09dfae4ff5f84c1341d74208e9b442659c32d039e9d27c09f79a203755e953d","impliedFormat":99},{"version":"e7878d8cd1fd0d0f1c55dcd8f5539f4c22e44993852f588dd194bd666b230727","impliedFormat":99},{"version":"0d22b18cb407b03331edf3413b93e568da71130c906fd69911090df2abf55414","impliedFormat":99},{"version":"a0eb14b4325af3088bd319abe2878328c5c99b54f853ec60ae278b46d38f6ea9","impliedFormat":99},{"version":"645bc70ed141fca71a5851e597c0dd59585e86a1af886733fcabb8f57f17304a","impliedFormat":99},{"version":"38ee95e38802b20473db438de5cfb3933db374abe7736169909f449a8dd9039e","impliedFormat":99},{"version":"0ae60dd4a90e2d4e93526aa76c1958b0d129ed16bbdd9b96fb60fc4c7704d8d7","impliedFormat":99},{"version":"1ceed094cb4d453e04dbff91c66282f74b0af1ee28c44b84a1686941bb2409d3","impliedFormat":99},{"version":"5e884eded8387cf5d68e74e9554c050514bc0475d6e84e8346604e6e01bdcfa6","impliedFormat":99},{"version":"77f86177ee086818fe8170010d05207cd862b4bce57f76243730bdaf6e07c76a","impliedFormat":99},{"version":"f8b23df7313c11a192192f68c1f0b9b25a7027ee7cb73b291f88f8ae857df3ae","impliedFormat":99},{"version":"9cf3dffa071b0da28dedbec4406803b8829a066c1bd2688cc027f60becac7c77","signature":"0cd928267ffd76588ec6ccc0854990ad9c0409728cb0f023043147146217c05f","impliedFormat":99},{"version":"973bfacc27f889e671e55ec42e424a18af808b58ba4bed64ac7c57c067832ba2","impliedFormat":99},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"25be1eb939c9c63242c7a45446edb20c40541da967f43f1aa6a00ed53c0552db","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"89e326922cadcc2331d7e851011cf9f0456a681aaf3c95b48b81f8d80e8cdfba","impliedFormat":1},{"version":"d5799bcf7fe4e6de3063abf4e321c14b051706f03cf5716d8a19f22fe1f69519","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"84a805c22a49922085dc337ca71ac0b85aad6d4dba6b01cee5bd5776ff54df39","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"20e87d239740059866b5245e6ef6ae92e2d63cd0b63d39af3464b9e260dddce1","impliedFormat":1},{"version":"c73834a2aee5e08dea83bd8d347f131bc52f9ec5b06959165c55ef7a544cae82","impliedFormat":1}],"root":[[58,60],149,150,[182,191]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./build","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[139,1],[140,2],[297,3],[296,4],[298,4],[300,5],[301,1],[302,1],[306,6],[309,7],[311,8],[307,1],[312,1],[313,1],[314,8],[299,1],[315,8],[304,1],[305,1],[316,9],[303,10],[308,11],[310,1],[181,12],[152,13],[161,13],[153,13],[162,13],[154,13],[155,13],[169,13],[168,13],[170,13],[171,13],[163,13],[156,13],[164,13],[157,13],[165,13],[158,13],[160,13],[167,13],[166,13],[172,13],[159,13],[173,13],[178,13],[179,13],[174,13],[151,1],[180,1],[176,13],[175,13],[177,13],[56,1],[57,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[20,1],[21,1],[4,1],[22,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[8,1],[49,1],[46,1],[47,1],[48,1],[50,1],[9,1],[51,1],[52,1],[53,1],[55,1],[54,1],[1,1],[141,14],[131,15],[135,16],[132,16],[128,15],[136,17],[133,18],[137,14],[134,16],[129,19],[130,20],[124,21],[68,22],[70,23],[123,1],[69,24],[127,25],[126,26],[125,27],[61,1],[71,22],[72,1],[63,28],[67,29],[62,1],[64,30],[65,31],[66,1],[138,32],[73,33],[74,33],[75,33],[76,33],[77,33],[78,33],[79,33],[80,33],[81,33],[82,33],[83,33],[84,33],[85,33],[87,33],[86,33],[88,33],[89,33],[90,33],[91,33],[122,34],[92,33],[93,33],[94,33],[95,33],[96,33],[97,33],[98,33],[99,33],[100,33],[101,33],[102,33],[103,33],[104,33],[106,33],[105,33],[107,33],[108,33],[109,33],[110,33],[111,33],[112,33],[113,33],[114,33],[115,33],[116,33],[117,33],[118,33],[121,33],[119,33],[120,33],[242,35],[243,35],[244,36],[197,37],[245,38],[246,39],[247,40],[192,1],[195,41],[193,1],[194,1],[248,42],[249,43],[250,44],[251,45],[252,46],[253,47],[254,47],[255,48],[256,49],[257,50],[258,51],[198,1],[196,1],[259,52],[260,53],[261,54],[295,55],[262,56],[263,1],[264,57],[265,58],[266,59],[267,60],[268,61],[269,62],[270,63],[271,64],[272,65],[273,65],[274,66],[275,1],[276,67],[277,68],[279,69],[278,70],[280,71],[281,72],[282,73],[283,74],[284,75],[285,76],[286,77],[287,78],[288,79],[289,80],[290,81],[291,82],[292,83],[199,1],[200,1],[201,1],[239,84],[240,1],[241,1],[293,85],[294,86],[217,87],[227,88],[216,87],[237,89],[208,90],[207,91],[236,92],[230,93],[235,94],[210,95],[224,96],[209,97],[233,98],[205,99],[204,92],[234,100],[206,101],[211,102],[212,1],[215,102],[202,1],[238,103],[228,104],[219,105],[220,106],[222,107],[218,108],[221,109],[231,92],[213,110],[214,111],[223,112],[203,113],[226,104],[225,102],[229,1],[232,114],[58,1],[59,1],[191,115],[60,1],[186,116],[187,117],[185,118],[182,1],[149,1],[184,1],[188,119],[183,120],[189,120],[150,121],[190,122],[148,123],[145,124],[143,125],[144,126],[142,1],[146,1],[147,127]],"affectedFilesPendingEmit":[[58,51],[59,51],[191,51],[60,51],[186,51],[187,51],[185,51],[182,51],[149,51],[184,51],[188,51],[183,51],[189,51],[150,51],[190,51]],"emitSignatures":[58,59,60,149,150,182,183,184,185,186,187,188,189,190,191],"version":"5.9.3"}
|